Split purchase submit from receipt finalization
This commit is contained in:
@ -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,
|
||||
|
||||
Reference in New Issue
Block a user