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[] workProduct WorkProduct[]
quotationProductServiceList QuotationProductServiceList[] quotationProductServiceList QuotationProductServiceList[]
taskProduct TaskProduct[]
createdAt DateTime @default(now()) createdAt DateTime @default(now())
createdBy User? @relation(name: "ProductCreatedByUser", fields: [createdByUserId], references: [id], onDelete: SetNull) createdBy User? @relation(name: "ProductCreatedByUser", fields: [createdByUserId], references: [id], onDelete: SetNull)
@ -1519,6 +1520,16 @@ model Task {
taskOrderId String 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 { model TaskOrder {
id String @id @default(cuid()) id String @id @default(cuid())
@ -1542,6 +1553,7 @@ model TaskOrder {
createdByUserId String createdByUserId String
userTask UserTask[] userTask UserTask[]
taskProduct TaskProduct[]
} }
enum UserTaskStatus { enum UserTaskStatus {

View file

@ -144,6 +144,7 @@ export class TaskController extends Controller {
where: { id: taskOrderId }, where: { id: taskOrderId },
include: { include: {
userTask: true, userTask: true,
taskProduct: true,
taskList: { taskList: {
where: { where: {
requestWorkStep: { responsibleUserId: taskAssignedUserId }, requestWorkStep: { responsibleUserId: taskAssignedUserId },
@ -215,6 +216,7 @@ export class TaskController extends Controller {
registeredBranchId?: string; registeredBranchId?: string;
taskList: { requestWorkId: string; step: number }[]; taskList: { requestWorkId: string; step: number }[];
taskProduct: { productId: string; discount?: number }[];
}, },
) { ) {
return await prisma.$transaction(async (tx) => { 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 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({ const userAffiliatedBranch = await tx.branch.findFirst({
include: branchRelationPermInclude(req.user), include: branchRelationPermInclude(req.user),
@ -323,6 +325,7 @@ export class TaskController extends Controller {
registeredBranchId: userAffiliatedBranch.id, registeredBranchId: userAffiliatedBranch.id,
createdByUserId: req.user.sub, createdByUserId: req.user.sub,
taskList: { create: taskList }, taskList: { create: taskList },
taskProduct: { create: taskProduct },
}, },
}); });
}); });
@ -344,6 +347,7 @@ export class TaskController extends Controller {
institutionId: string; institutionId: string;
taskList: { requestWorkId: string; step: number }[]; taskList: { requestWorkId: string; step: number }[];
taskProduct: { productId: string; discount?: number }[];
}, },
) { ) {
const record = await prisma.taskOrder.findFirst({ const record = await prisma.taskOrder.findFirst({
@ -401,6 +405,7 @@ export class TaskController extends Controller {
skipDuplicates: true, skipDuplicates: true,
}, },
}, },
taskProduct: { deleteMany: {}, create: body.taskProduct },
}, },
}); });
} }