feat: add task product record

This commit is contained in:
Methapon2001 2024-12-24 18:11:40 +07:00
parent 33e77e33b5
commit 111adbb076
2 changed files with 19 additions and 2 deletions

View file

@ -1121,6 +1121,7 @@ model Product {
workProduct WorkProduct[]
quotationProductServiceList QuotationProductServiceList[]
taskProduct TaskProduct[]
createdAt DateTime @default(now())
createdBy User? @relation(name: "ProductCreatedByUser", fields: [createdByUserId], references: [id], onDelete: SetNull)
@ -1519,6 +1520,16 @@ model Task {
taskOrderId String
}
model TaskProduct {
taskOrderId String
taskOrder TaskOrder @relation(fields: [taskOrderId], references: [id])
productId String
product Product @relation(fields: [productId], references: [id])
discount Float?
@@id([taskOrderId, productId])
}
model TaskOrder {
id String @id @default(cuid())
@ -1541,7 +1552,8 @@ model TaskOrder {
createdBy User @relation(name: "TaskOrderCreatedByUser", fields: [createdByUserId], references: [id])
createdByUserId String
userTask UserTask[]
userTask UserTask[]
taskProduct TaskProduct[]
}
enum UserTaskStatus {

View file

@ -144,6 +144,7 @@ export class TaskController extends Controller {
where: { id: taskOrderId },
include: {
userTask: true,
taskProduct: true,
taskList: {
where: {
requestWorkStep: { responsibleUserId: taskAssignedUserId },
@ -215,6 +216,7 @@ export class TaskController extends Controller {
registeredBranchId?: string;
taskList: { requestWorkId: string; step: number }[];
taskProduct: { productId: string; discount?: number }[];
},
) {
return await prisma.$transaction(async (tx) => {
@ -236,7 +238,7 @@ export class TaskController extends Controller {
const code = `PO${year}${month}${last.value.toString().padStart(6, "0")}`;
const { taskList, ...rest } = body;
const { taskList, taskProduct, ...rest } = body;
const userAffiliatedBranch = await tx.branch.findFirst({
include: branchRelationPermInclude(req.user),
@ -323,6 +325,7 @@ export class TaskController extends Controller {
registeredBranchId: userAffiliatedBranch.id,
createdByUserId: req.user.sub,
taskList: { create: taskList },
taskProduct: { create: taskProduct },
},
});
});
@ -344,6 +347,7 @@ export class TaskController extends Controller {
institutionId: string;
taskList: { requestWorkId: string; step: number }[];
taskProduct: { productId: string; discount?: number }[];
},
) {
const record = await prisma.taskOrder.findFirst({
@ -401,6 +405,7 @@ export class TaskController extends Controller {
skipDuplicates: true,
},
},
taskProduct: { deleteMany: {}, create: body.taskProduct },
},
});
}