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 {
Accepted
Invoice
PaymentPending
PaymentInProcess // For Installments / Split Payment
PaymentSuccess

View file

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