/** توليد أرقام وصول الصرف والقبض (v8.1)
 *  صيغة وصل الصرف: SO-YYYY-#### (تسلسل شهري تلقائي ضمن المدرسة)
 *  يمكن للمستخدم تجاوز الرقم المولد بكتابة رقم الورقة الورقية مباشرة. */

import { db } from "@/lib/db";

/** التسلسل التالي لوصول صرف ضمن مدرسة وسنة — صيغة SO-YYYY-0001 */
export async function nextExpenseVoucherNumber(
  schoolId: string,
  date: Date = new Date()
): Promise<string> {
  const year = date.getFullYear();
  const prefix = `SO-${year}-`;
  const last = await db.expense.findFirst({
    where: { schoolId, voucherNumber: { startsWith: prefix } },
    orderBy: { voucherNumber: "desc" },
    select: { voucherNumber: true },
  });
  let seq = 0;
  if (last?.voucherNumber) {
    const parsed = parseInt(last.voucherNumber.slice(prefix.length), 10);
    if (Number.isFinite(parsed)) seq = parsed;
  }
  return `${prefix}${String(seq + 1).padStart(4, "0")}`;
}
