feat: add more quotation status

This commit is contained in:
Methapon Metanipat 2024-10-25 16:37:59 +07:00
parent f5df3332b5
commit 1e8453e99f
3 changed files with 32 additions and 11 deletions

View file

@ -0,0 +1,13 @@
-- AlterEnum
-- This migration adds more than one value to an enum.
-- With PostgreSQL versions 11 and earlier, this is not possible
-- in a single migration. This can be worked around by creating
-- multiple migrations, each migration adding only one value to
-- the enum.
ALTER TYPE "QuotationStatus" ADD VALUE 'Accepted';
ALTER TYPE "QuotationStatus" ADD VALUE 'Invoice';
-- AlterTable
ALTER TABLE "WorkProduct" ADD COLUMN "attributes" JSONB;

View file

@ -1083,6 +1083,8 @@ model WorkProduct {
} }
enum QuotationStatus { enum QuotationStatus {
Accepted
Invoice
PaymentPending PaymentPending
PaymentInProcess // For Installments / Split Payment PaymentInProcess // For Installments / Split Payment
PaymentSuccess PaymentSuccess

View file

@ -134,7 +134,12 @@ export class InvoiceController extends Controller {
if (!quotation) throw notFoundError("Quotation"); if (!quotation) throw notFoundError("Quotation");
await permissionCheck(req.user, quotation.registeredBranch); await permissionCheck(req.user, quotation.registeredBranch);
return await prisma.invoice.create({ return await prisma.$transaction(async (tx) => {
await tx.quotation.update({
where: { id: body.quotationId },
data: { quotationStatus: "PaymentInProcess" },
});
return await tx.invoice.create({
data: { data: {
productServiceList: { connect: productServiceList.map((v) => ({ id: v.id })) }, productServiceList: { connect: productServiceList.map((v) => ({ id: v.id })) },
quotationId: body.quotationId, quotationId: body.quotationId,
@ -148,6 +153,7 @@ export class InvoiceController extends Controller {
createdByUserId: req.user.sub, createdByUserId: req.user.sub,
}, },
}); });
});
} }
@Put("{invoiceId}") @Put("{invoiceId}")