@things-factory/sales-base 4.3.622 → 4.3.629
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-server/controllers/ecommerce/powrup-controller.js +216 -144
- package/dist-server/controllers/ecommerce/powrup-controller.js.map +1 -1
- package/dist-server/service/release-good/release-good.js +5 -3
- package/dist-server/service/release-good/release-good.js.map +1 -1
- package/dist-server/service/return-order/return-order-mutation.js +61 -57
- package/dist-server/service/return-order/return-order-mutation.js.map +1 -1
- package/package.json +4 -4
- package/server/controllers/ecommerce/powrup-controller.ts +315 -190
- package/server/service/release-good/release-good.ts +8 -17
- package/server/service/return-order/return-order-mutation.ts +90 -78
|
@@ -49,84 +49,7 @@ export class ReturnOrderMutation {
|
|
|
49
49
|
@Arg('returnOrder', type => NewReturnOrder, { nullable: true }) returnOrder: NewReturnOrder
|
|
50
50
|
): Promise<ReturnOrder> {
|
|
51
51
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
52
|
-
|
|
53
|
-
const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne(returnOrder.customerBizplaceId)
|
|
54
|
-
|
|
55
|
-
let orderInventories: NewOrderInventory[] = returnOrder.orderInventories
|
|
56
|
-
let foundInv = Inventory
|
|
57
|
-
|
|
58
|
-
const mergedOrderInventories = orderInventories.reduce((acc, curr) => {
|
|
59
|
-
let existingItem = acc.find(
|
|
60
|
-
itm =>
|
|
61
|
-
itm.product.id === curr.product.id &&
|
|
62
|
-
itm.packingType === curr.packingType &&
|
|
63
|
-
itm.productDetailId === curr.product.productDetailId &&
|
|
64
|
-
itm.batchId === curr.batchId &&
|
|
65
|
-
itm.packingSize === curr.packingSize
|
|
66
|
-
)
|
|
67
|
-
|
|
68
|
-
if (!existingItem) {
|
|
69
|
-
acc.push(curr)
|
|
70
|
-
} else {
|
|
71
|
-
existingItem.returnQty = existingItem.returnQty + curr.returnQty
|
|
72
|
-
existingItem.returnUomValue = existingItem.returnUomValue + curr.returnUomValue
|
|
73
|
-
existingItem.remark = `${existingItem.remark} | ${curr.remark}`
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return acc
|
|
77
|
-
}, [])
|
|
78
|
-
|
|
79
|
-
returnOrder.orderInventories = mergedOrderInventories
|
|
80
|
-
|
|
81
|
-
let newReturnOrder: NewReturnOrder = {
|
|
82
|
-
...returnOrder,
|
|
83
|
-
name: OrderNoGenerator.returnOrder(),
|
|
84
|
-
domain,
|
|
85
|
-
bizplace,
|
|
86
|
-
status: ORDER_STATUS.PENDING,
|
|
87
|
-
creator: user,
|
|
88
|
-
updater: user
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
if (newReturnOrder.orderInventories[0].returnQty < 0) {
|
|
92
|
-
throw new Error('invalid return quantity')
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
let createdReturnOrder: ReturnOrder = await tx.getRepository(ReturnOrder).save(newReturnOrder)
|
|
96
|
-
|
|
97
|
-
for (let moi of mergedOrderInventories) {
|
|
98
|
-
let newOrderInv: OrderInventory = Object.assign({}, moi) as any
|
|
99
|
-
newOrderInv.domain = domain
|
|
100
|
-
newOrderInv.bizplace = bizplace
|
|
101
|
-
newOrderInv.status = ORDER_INVENTORY_STATUS.PENDING
|
|
102
|
-
newOrderInv.name = OrderNoGenerator.orderInventory()
|
|
103
|
-
newOrderInv.returnOrder = createdReturnOrder
|
|
104
|
-
newOrderInv.product = await tx.getRepository(Product).findOne(moi.product.id)
|
|
105
|
-
newOrderInv.productDetail = await tx.getRepository(ProductDetail).findOne(moi.productDetail.id)
|
|
106
|
-
newOrderInv.creator = user
|
|
107
|
-
newOrderInv.updater = user
|
|
108
|
-
|
|
109
|
-
if (newOrderInv.inventory?.id) {
|
|
110
|
-
foundInv = await tx.getRepository(Inventory).findOne(newOrderInv.inventory.id)
|
|
111
|
-
newOrderInv.inventory = foundInv
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
await tx.getRepository(OrderInventory).save(newOrderInv)
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
if (file?.length > 0) {
|
|
118
|
-
const attachments: Attachment[] = file.map(attachment => {
|
|
119
|
-
return {
|
|
120
|
-
file: attachment,
|
|
121
|
-
refBy: createdReturnOrder.id,
|
|
122
|
-
category: ATTACHMENT_TYPE.RETURN_ORDER
|
|
123
|
-
}
|
|
124
|
-
})
|
|
125
|
-
await createAttachments(null, { attachments }, context)
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
webhookHandler(createdReturnOrder, { id: createdReturnOrder.bizplace }, WebhookEventsEnum.ReturnOrderCreated)
|
|
129
|
-
return createdReturnOrder
|
|
52
|
+
return await generateReturnOrder(tx, domain, user, returnOrder, file, context)
|
|
130
53
|
}
|
|
131
54
|
|
|
132
55
|
@Directive('@privilege(category: "order_customer", privilege: "mutation")')
|
|
@@ -507,3 +430,92 @@ export async function checkReturnOrder(tx: EntityManager, name: string, context:
|
|
|
507
430
|
|
|
508
431
|
return foundReturnOrder
|
|
509
432
|
}
|
|
433
|
+
|
|
434
|
+
export async function generateReturnOrder(
|
|
435
|
+
tx: EntityManager,
|
|
436
|
+
domain: Domain,
|
|
437
|
+
user: User,
|
|
438
|
+
returnOrder: NewReturnOrder,
|
|
439
|
+
file: FileUpload[],
|
|
440
|
+
context: any
|
|
441
|
+
): Promise<ReturnOrder> {
|
|
442
|
+
const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne(returnOrder.customerBizplaceId)
|
|
443
|
+
|
|
444
|
+
let orderInventories: NewOrderInventory[] = returnOrder.orderInventories
|
|
445
|
+
let foundInv = Inventory
|
|
446
|
+
|
|
447
|
+
const mergedOrderInventories = orderInventories.reduce((acc, curr) => {
|
|
448
|
+
let existingItem = acc.find(
|
|
449
|
+
itm =>
|
|
450
|
+
itm.product.id === curr.product.id &&
|
|
451
|
+
itm.packingType === curr.packingType &&
|
|
452
|
+
itm.productDetailId === curr.product.productDetailId &&
|
|
453
|
+
itm.batchId === curr.batchId &&
|
|
454
|
+
itm.packingSize === curr.packingSize
|
|
455
|
+
)
|
|
456
|
+
|
|
457
|
+
if (!existingItem) {
|
|
458
|
+
acc.push(curr)
|
|
459
|
+
} else {
|
|
460
|
+
existingItem.returnQty = existingItem.returnQty + curr.returnQty
|
|
461
|
+
existingItem.returnUomValue = existingItem.returnUomValue + curr.returnUomValue
|
|
462
|
+
existingItem.remark = `${existingItem.remark} | ${curr.remark}`
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
return acc
|
|
466
|
+
}, [])
|
|
467
|
+
|
|
468
|
+
returnOrder.orderInventories = mergedOrderInventories
|
|
469
|
+
|
|
470
|
+
let newReturnOrder: NewReturnOrder = {
|
|
471
|
+
...returnOrder,
|
|
472
|
+
name: OrderNoGenerator.returnOrder(),
|
|
473
|
+
domain,
|
|
474
|
+
bizplace,
|
|
475
|
+
status: ORDER_STATUS.PENDING,
|
|
476
|
+
creator: user,
|
|
477
|
+
updater: user
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
if (newReturnOrder.orderInventories[0].returnQty < 0) {
|
|
481
|
+
throw new Error('invalid return quantity')
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
let createdReturnOrder: ReturnOrder = await tx.getRepository(ReturnOrder).save(newReturnOrder)
|
|
485
|
+
|
|
486
|
+
for (let moi of mergedOrderInventories) {
|
|
487
|
+
let newOrderInv: OrderInventory = Object.assign({}, moi) as any
|
|
488
|
+
newOrderInv.domain = domain
|
|
489
|
+
newOrderInv.bizplace = bizplace
|
|
490
|
+
newOrderInv.status = ORDER_INVENTORY_STATUS.PENDING
|
|
491
|
+
newOrderInv.name = OrderNoGenerator.orderInventory()
|
|
492
|
+
newOrderInv.returnOrder = createdReturnOrder
|
|
493
|
+
newOrderInv.product = await tx.getRepository(Product).findOne(moi.product.id)
|
|
494
|
+
newOrderInv.productDetail = await tx.getRepository(ProductDetail).findOne(moi.productDetail.id)
|
|
495
|
+
newOrderInv.creator = user
|
|
496
|
+
newOrderInv.updater = user
|
|
497
|
+
|
|
498
|
+
if (newOrderInv.inventory?.id) {
|
|
499
|
+
foundInv = await tx.getRepository(Inventory).findOne(newOrderInv.inventory.id)
|
|
500
|
+
newOrderInv.inventory = foundInv
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
await tx.getRepository(OrderInventory).save(newOrderInv)
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
if (file?.length > 0) {
|
|
507
|
+
const attachments: Attachment[] = file.map(attachment => {
|
|
508
|
+
return {
|
|
509
|
+
file: attachment,
|
|
510
|
+
refBy: createdReturnOrder.id,
|
|
511
|
+
category: ATTACHMENT_TYPE.RETURN_ORDER
|
|
512
|
+
}
|
|
513
|
+
})
|
|
514
|
+
await createAttachments(null, { attachments }, context)
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
webhookHandler(createdReturnOrder, { id: createdReturnOrder.bizplace }, WebhookEventsEnum.ReturnOrderCreated)
|
|
518
|
+
return createdReturnOrder
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
|