diff --git a/prisma/migrations/20250124023155_add_urgent_field/migration.sql b/prisma/migrations/20250124023155_add_urgent_field/migration.sql new file mode 100644 index 0000000..7e2a65b --- /dev/null +++ b/prisma/migrations/20250124023155_add_urgent_field/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "TaskOrder" ADD COLUMN "urgent" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index d90b7f9..2cc73fe 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1552,6 +1552,8 @@ model TaskOrder { contactName String contactTel String + urgent Boolean @default(false) + institution Institution @relation(fields: [institutionId], references: [id]) institutionId String diff --git a/src/controllers/05-quotation-controller.ts b/src/controllers/05-quotation-controller.ts index c621ac5..4224e45 100644 --- a/src/controllers/05-quotation-controller.ts +++ b/src/controllers/05-quotation-controller.ts @@ -512,9 +512,7 @@ export class QuotationController extends Controller { a.vat = precisionRound(a.vat + c.vat); a.vatExcluded = c.vat === 0 - ? precisionRound( - a.vatExcluded + (c.pricePerUnit * c.amount - (c.discount || 0)) * VAT_DEFAULT, - ) + ? precisionRound(a.vatExcluded + (c.pricePerUnit * c.amount - (c.discount || 0))) : a.vatExcluded; a.finalPrice = precisionRound( Math.max(a.totalPrice - a.totalDiscount + a.vat - (body.discount || 0), 0), diff --git a/src/controllers/06-request-list-controller.ts b/src/controllers/06-request-list-controller.ts index a3f5124..145f01c 100644 --- a/src/controllers/06-request-list-controller.ts +++ b/src/controllers/06-request-list-controller.ts @@ -189,7 +189,7 @@ export class RequestDataController extends Controller { }, take: pageSize, skip: (page - 1) * pageSize, - orderBy: { createdAt: "desc" }, + orderBy: [{ quotation: { urgent: "desc" } }, { createdAt: "desc" }], }), prisma.requestData.count({ where }), ]); @@ -200,7 +200,7 @@ export class RequestDataController extends Controller { @Get("{requestDataId}") @Security("keycloak") async getRequestData(@Path() requestDataId: string) { - return await prisma.requestData.findFirst({ + const record = await prisma.requestData.findFirst({ where: { id: requestDataId }, include: { quotation: { @@ -224,6 +224,10 @@ export class RequestDataController extends Controller { }, }, }); + + if (!record) throw notFoundError("Request Data"); + + return record; } } diff --git a/src/controllers/07-task-controller.ts b/src/controllers/07-task-controller.ts index bd9da4c..90a6991 100644 --- a/src/controllers/07-task-controller.ts +++ b/src/controllers/07-task-controller.ts @@ -152,6 +152,7 @@ export class TaskController extends Controller { ) { const record = await prisma.taskOrder.findFirst({ where: { id: taskOrderId }, + orderBy: [{ urgent: "desc" }, { createdAt: "desc" }], include: { userTask: true, taskProduct: true, @@ -295,6 +296,21 @@ export class TaskController extends Controller { ); } + const work = await tx.requestWorkStepStatus.findMany({ + include: { + requestWork: { + include: { + request: { + include: { + quotation: true, + }, + }, + }, + }, + }, + where: { OR: taskList }, + }); + return await tx.taskOrder.create({ include: { taskList: { @@ -352,6 +368,7 @@ export class TaskController extends Controller { data: { ...rest, code, + urgent: work.some((v) => v.requestWork.request.quotation.urgent), registeredBranchId: userAffiliatedBranch.id, createdByUserId: req.user.sub, taskList: { create: taskList }, @@ -437,6 +454,19 @@ export class TaskController extends Controller { data: { workStatus: RequestWorkStatus.InProgress }, }); + const work = await tx.requestWorkStepStatus.findMany({ + include: { + requestWork: { + include: { + request: { + include: { quotation: true }, + }, + }, + }, + }, + where: { OR: body.taskList }, + }); + return await tx.taskOrder.update({ where: { id: taskOrderId }, include: { @@ -455,6 +485,7 @@ export class TaskController extends Controller { }, data: { ...body, + urgent: work.some((v) => v.requestWork.request.quotation.urgent), taskList: { deleteMany: record?.taskList .filter( @@ -629,6 +660,7 @@ export class TaskActionController extends Controller { tx.taskOrder.update({ where: { id: taskOrderId }, data: { + urgent: false, taskOrderStatus: TaskOrderStatus.Complete, userTask: { updateMany: {