Split purchase submit from receipt finalization

This commit is contained in:
2026-05-26 12:39:20 +07:00
parent 76b37cd4c8
commit 44146a4a22
8 changed files with 301 additions and 336 deletions

View File

@ -55,11 +55,42 @@ export async function POST(request: Request) {
const systemUser = await ensureSystemUser();
const receiptDate = new Date(`${parsed.data.receipt_date}T00:00:00.000Z`);
const receiptNo = await generateReceiptNo(receiptDate);
const purchaseId = BigInt(parsed.data.purchase_id);
const purchase = await prisma.purchase.findUnique({
where: { id: purchaseId },
include: {
_count: {
select: {
receipts: true,
lots: true
}
}
}
});
if (!purchase) {
return NextResponse.json({ message: "Purchase not found" }, { status: 404 });
}
if (purchase.status !== "SUBMITTED") {
return NextResponse.json(
{ message: "Purchase harus diajukan sebelum dibuatkan receipt." },
{ status: 409 }
);
}
if (purchase._count.receipts > 0 || purchase._count.lots > 0) {
return NextResponse.json(
{ message: "Purchase sudah memiliki receipt/lot." },
{ status: 409 }
);
}
const receipt = await prisma.receipt.create({
data: {
receiptNo,
purchaseId: BigInt(parsed.data.purchase_id),
purchaseId,
receiptDate,
status: "DRAFT",
notes: parsed.data.notes || null,