@things-factory/worksheet-base 4.0.22 → 4.0.26
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/ecommerce-controller.js +10 -3
- package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
- package/dist-server/controllers/ecommerce/sellercraft-controller.js +5 -3
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
- package/dist-server/controllers/inbound/putaway-returning-worksheet-controller.js +24 -4
- package/dist-server/controllers/inbound/putaway-returning-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js +98 -140
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js +2 -6
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +4 -4
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/render-orientage-do.js +3 -3
- package/dist-server/controllers/render-orientage-do.js.map +1 -1
- package/dist-server/controllers/render-orientage-grn.js +4 -4
- package/dist-server/controllers/render-orientage-grn.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +5 -5
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js +14 -0
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/index.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +8 -4
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +6 -4
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +4 -7
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js +64 -54
- package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +1 -0
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-returning-worksheet.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-returning-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-worksheet.js +6 -2
- package/dist-server/graphql/resolvers/worksheet/putaway-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/return-worksheet.js +3 -1
- package/dist-server/graphql/resolvers/worksheet/return-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/index.js +4 -5
- package/dist-server/graphql/resolvers/worksheet/unloading/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-unloading.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js +4 -2
- package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +28 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +7 -8
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-info.js +1 -0
- package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
- package/package.json +16 -16
- package/server/controllers/ecommerce/ecommerce-controller.ts +18 -4
- package/server/controllers/ecommerce/sellercraft-controller.ts +11 -5
- package/server/controllers/inbound/putaway-returning-worksheet-controller.ts +28 -6
- package/server/controllers/inbound/unloading-worksheet-controller.ts +130 -152
- package/server/controllers/outbound/packing-worksheet-controller.ts +2 -7
- package/server/controllers/outbound/picking-worksheet-controller.ts +4 -4
- package/server/controllers/render-orientage-do.ts +7 -5
- package/server/controllers/render-orientage-grn.ts +9 -7
- package/server/controllers/worksheet-controller.ts +5 -5
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +22 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +3 -1
- package/server/graphql/resolvers/worksheet/generate-worksheet/index.ts +2 -0
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +9 -5
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +7 -4
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +4 -8
- package/server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts +67 -56
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +1 -0
- package/server/graphql/resolvers/worksheet/putaway-returning-worksheet.ts +9 -3
- package/server/graphql/resolvers/worksheet/putaway-worksheet.ts +9 -3
- package/server/graphql/resolvers/worksheet/return-worksheet.ts +7 -3
- package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +5 -2
- package/server/graphql/resolvers/worksheet/unloading/index.ts +3 -5
- package/server/graphql/resolvers/worksheet/unloading/undo-unloading.ts +9 -6
- package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +7 -3
- package/server/graphql/resolvers/worksheet/worksheet.ts +29 -1
- package/server/graphql/types/worksheet/index.ts +8 -9
- package/server/graphql/types/worksheet/worksheet-info.ts +1 -0
- package/dist-server/graphql/resolvers/worksheet/edit-batch-no.js +0 -79
- package/dist-server/graphql/resolvers/worksheet/edit-batch-no.js.map +0 -1
- package/dist-server/graphql/resolvers/worksheet/preunload-worksheet.js +0 -68
- package/dist-server/graphql/resolvers/worksheet/preunload-worksheet.js.map +0 -1
- package/dist-server/graphql/resolvers/worksheet/proceed-edited-batch.js +0 -113
- package/dist-server/graphql/resolvers/worksheet/proceed-edited-batch.js.map +0 -1
- package/dist-server/graphql/resolvers/worksheet/submit-adjustment-for-approval.js +0 -58
- package/dist-server/graphql/resolvers/worksheet/submit-adjustment-for-approval.js.map +0 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-preunload.js +0 -23
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-preunload.js.map +0 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/preunload.js +0 -16
- package/dist-server/graphql/resolvers/worksheet/unloading/preunload.js.map +0 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-preunload.js +0 -16
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-preunload.js.map +0 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-product-scan-unload.js +0 -15
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-product-scan-unload.js.map +0 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/undo-unload-returning.js +0 -15
- package/dist-server/graphql/resolvers/worksheet/unloading-return/undo-unload-returning.js.map +0 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/unload-return.js +0 -15
- package/dist-server/graphql/resolvers/worksheet/unloading-return/unload-return.js.map +0 -1
- package/dist-server/migrations/1605856745211-SeedPrivilege.js +0 -56
- package/dist-server/migrations/1605856745211-SeedPrivilege.js.map +0 -1
- package/server/graphql/resolvers/worksheet/unloading/undo-product-scan-unload.ts +0 -23
|
@@ -508,170 +508,148 @@ export class UnloadingWorksheetController extends VasWorksheetController {
|
|
|
508
508
|
)
|
|
509
509
|
}
|
|
510
510
|
|
|
511
|
-
async undoUnload(
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
])
|
|
519
|
-
this.checkRecordValidity(worksheetDetail, {
|
|
520
|
-
status: (status: string) => {
|
|
521
|
-
const availableStatus: string[] = [WORKSHEET_STATUS.EXECUTING, WORKSHEET_STATUS.PARTIALLY_UNLOADED]
|
|
522
|
-
if (availableStatus.indexOf(status) < 0) {
|
|
523
|
-
throw new Error(
|
|
524
|
-
this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('status', 'Executing or Partially Unloaded', status)
|
|
525
|
-
)
|
|
526
|
-
}
|
|
527
|
-
return true
|
|
528
|
-
}
|
|
529
|
-
})
|
|
530
|
-
|
|
531
|
-
const worksheet: Worksheet = worksheetDetail.worksheet
|
|
532
|
-
|
|
533
|
-
let arrivalNotice: ArrivalNotice
|
|
534
|
-
let returnOrder: ReturnOrder
|
|
535
|
-
if (worksheet?.arrivalNotice) arrivalNotice = worksheet.arrivalNotice
|
|
536
|
-
else if (worksheet?.returnOrder) returnOrder = worksheet.returnOrder
|
|
537
|
-
|
|
538
|
-
let inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({
|
|
539
|
-
where: { domain: this.domain, status: INVENTORY_STATUS.UNLOADED, palletId },
|
|
540
|
-
relations: ['location']
|
|
541
|
-
})
|
|
542
|
-
|
|
543
|
-
const qty: number = inventory.qty
|
|
544
|
-
|
|
545
|
-
if (arrivalNotice) {
|
|
546
|
-
let targetProduct: OrderProduct = worksheetDetail.targetProduct
|
|
547
|
-
targetProduct.actualPackQty -= qty
|
|
548
|
-
targetProduct.actualPalletQty--
|
|
549
|
-
targetProduct.remark = null
|
|
550
|
-
targetProduct.issue = null
|
|
551
|
-
targetProduct.status = ORDER_PRODUCT_STATUS.UNLOADING
|
|
552
|
-
targetProduct.updater = this.user
|
|
553
|
-
await this.updateOrderTargets([targetProduct])
|
|
554
|
-
} else if (returnOrder) {
|
|
555
|
-
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
556
|
-
targetInventory.actualPackQty -= qty
|
|
557
|
-
targetInventory.actualPalletQty--
|
|
558
|
-
targetInventory.status = ORDER_PRODUCT_STATUS.UNLOADING
|
|
559
|
-
targetInventory.updater = this.user
|
|
560
|
-
await this.updateOrderTargets([targetInventory])
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
worksheetDetail.issue = null
|
|
564
|
-
worksheetDetail.status = WORKSHEET_STATUS.EXECUTING
|
|
565
|
-
worksheetDetail.updater = this.user
|
|
566
|
-
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
567
|
-
|
|
568
|
-
inventory.lastSeq++
|
|
569
|
-
inventory.status = INVENTORY_STATUS.DELETED
|
|
570
|
-
inventory = await this.transactionInventory(
|
|
571
|
-
inventory,
|
|
572
|
-
Boolean(arrivalNotice) ? arrivalNotice : returnOrder,
|
|
573
|
-
-inventory.qty,
|
|
574
|
-
-inventory.uomValue,
|
|
575
|
-
INVENTORY_TRANSACTION_TYPE.UNDO_UNLOADING
|
|
576
|
-
)
|
|
577
|
-
inventory.qty = 0
|
|
578
|
-
inventory.uomValue = 0
|
|
579
|
-
inventory.updater = this.user
|
|
580
|
-
|
|
581
|
-
await this.trxMgr.getRepository(InventoryHistory).update({ inventory }, { inventory: null })
|
|
582
|
-
|
|
583
|
-
await this.trxMgr.getRepository(Inventory).delete({ id: inventory.id })
|
|
584
|
-
}
|
|
511
|
+
async undoUnload(orderType: string, orderNo: string, inventoryIds: [string]): Promise<void> {
|
|
512
|
+
for (var i = 0; i < inventoryIds.length; i++) {
|
|
513
|
+
const inventoryId: string = inventoryIds[i]
|
|
514
|
+
let inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({
|
|
515
|
+
where: { domain: this.domain, id: inventoryId },
|
|
516
|
+
relations: ['location', 'product']
|
|
517
|
+
})
|
|
585
518
|
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
const availableStatus: string[] = [WORKSHEET_STATUS.EXECUTING, WORKSHEET_STATUS.PARTIALLY_UNLOADED]
|
|
600
|
-
if (availableStatus.indexOf(status) < 0) {
|
|
601
|
-
throw new Error(
|
|
602
|
-
this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('status', 'Executing or Partially Unloaded', status)
|
|
603
|
-
)
|
|
519
|
+
this.checkRecordValidity(inventory, {
|
|
520
|
+
status: (status: string) => {
|
|
521
|
+
const availableStatus: string[] = [INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED]
|
|
522
|
+
if (availableStatus.indexOf(status) < 0) {
|
|
523
|
+
throw new Error(
|
|
524
|
+
this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE(
|
|
525
|
+
'status',
|
|
526
|
+
'Inventory current status unable to undo',
|
|
527
|
+
status
|
|
528
|
+
)
|
|
529
|
+
)
|
|
530
|
+
}
|
|
531
|
+
return true
|
|
604
532
|
}
|
|
605
|
-
|
|
606
|
-
}
|
|
607
|
-
})
|
|
533
|
+
})
|
|
608
534
|
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
535
|
+
const qty: number = inventory.qty
|
|
536
|
+
|
|
537
|
+
let targetProduct: OrderProduct
|
|
538
|
+
let targetInventory: OrderInventory
|
|
539
|
+
let arrivalNotice: ArrivalNotice
|
|
540
|
+
let returnOrder: ReturnOrder
|
|
541
|
+
let worksheetDetail: WorksheetDetail
|
|
542
|
+
|
|
543
|
+
if (orderType === ORDER_TYPES.ARRIVAL_NOTICE) {
|
|
544
|
+
arrivalNotice = await this.trxMgr.getRepository(ArrivalNotice).findOne({
|
|
545
|
+
where: { domain: this.domain, name: orderNo },
|
|
546
|
+
relations: ['orderProducts', 'orderProducts.product']
|
|
547
|
+
})
|
|
548
|
+
|
|
549
|
+
targetProduct = arrivalNotice.orderProducts.find(
|
|
550
|
+
op =>
|
|
551
|
+
op.batchId == inventory.batchId &&
|
|
552
|
+
op.packingType == inventory.packingType &&
|
|
553
|
+
op.product.id === inventory.product.id
|
|
554
|
+
)
|
|
618
555
|
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
556
|
+
if (inventory.status == INVENTORY_STATUS.UNLOADED) {
|
|
557
|
+
targetProduct.actualPackQty -= qty
|
|
558
|
+
targetProduct.actualPalletQty--
|
|
559
|
+
targetProduct.remark = null
|
|
560
|
+
targetProduct.issue = null
|
|
561
|
+
targetProduct.status = ORDER_PRODUCT_STATUS.UNLOADING
|
|
562
|
+
} else {
|
|
563
|
+
targetProduct.actualPackQty--
|
|
564
|
+
}
|
|
565
|
+
targetProduct.updater = this.user
|
|
566
|
+
await this.updateOrderTargets([targetProduct])
|
|
628
567
|
|
|
629
|
-
|
|
630
|
-
|
|
568
|
+
worksheetDetail = await this.trxMgr
|
|
569
|
+
.getRepository(WorksheetDetail)
|
|
570
|
+
.findOne({ where: { domain: this.domain, targetProduct } })
|
|
571
|
+
} else {
|
|
572
|
+
returnOrder = await this.trxMgr.getRepository(ReturnOrder).findOne({
|
|
573
|
+
where: { domain: this.domain, name: orderNo },
|
|
574
|
+
relations: ['orderInventories', 'orderInventories.inventory', 'orderInventories.product']
|
|
575
|
+
})
|
|
576
|
+
|
|
577
|
+
targetInventory = returnOrder.orderInventories.find(
|
|
578
|
+
oi =>
|
|
579
|
+
oi.batchId == inventory.batchId &&
|
|
580
|
+
oi.packingType == inventory.packingType &&
|
|
581
|
+
oi.product.id == inventory.product.id &&
|
|
582
|
+
oi.inventory.id == inventory.id
|
|
583
|
+
)
|
|
584
|
+
if (inventory.status == INVENTORY_STATUS.UNLOADED) {
|
|
585
|
+
targetInventory.actualPackQty -= qty
|
|
586
|
+
targetInventory.actualPalletQty--
|
|
587
|
+
targetInventory.status = ORDER_PRODUCT_STATUS.UNLOADING
|
|
588
|
+
} else {
|
|
589
|
+
targetInventory.actualPackQty--
|
|
590
|
+
}
|
|
591
|
+
targetInventory.updater = this.user
|
|
592
|
+
await this.updateOrderTargets([targetInventory])
|
|
631
593
|
|
|
632
|
-
|
|
633
|
-
|
|
594
|
+
worksheetDetail = await this.trxMgr
|
|
595
|
+
.getRepository(WorksheetDetail)
|
|
596
|
+
.findOne({ where: { domain: this.domain, targetInventory } })
|
|
597
|
+
}
|
|
634
598
|
|
|
635
|
-
|
|
636
|
-
|
|
599
|
+
if (inventory.status == INVENTORY_STATUS.CHECKED) {
|
|
600
|
+
inventory.qty--
|
|
601
|
+
inventory.uomValue =
|
|
602
|
+
Math.round(
|
|
603
|
+
inventory.qty *
|
|
604
|
+
(Boolean(orderType === ORDER_TYPES.ARRIVAL_NOTICE)
|
|
605
|
+
? targetProduct.uomValue
|
|
606
|
+
: targetInventory.returnUomValue) *
|
|
607
|
+
100
|
|
608
|
+
) / 100
|
|
609
|
+
inventory.updater = this.user
|
|
610
|
+
await this.trxMgr.getRepository(Inventory).save(inventory)
|
|
611
|
+
|
|
612
|
+
if (inventory == 0) {
|
|
613
|
+
inventory.lastSeq++
|
|
614
|
+
inventory.status = INVENTORY_STATUS.DELETED
|
|
615
|
+
inventory = await this.transactionInventory(
|
|
616
|
+
inventory,
|
|
617
|
+
Boolean(orderType === ORDER_TYPES.ARRIVAL_NOTICE) ? arrivalNotice : returnOrder,
|
|
618
|
+
-inventory.qty,
|
|
619
|
+
-inventory.uomValue,
|
|
620
|
+
INVENTORY_TRANSACTION_TYPE.UNDO_UNLOADING
|
|
621
|
+
)
|
|
622
|
+
inventory.qty = 0
|
|
623
|
+
inventory.uomValue = 0
|
|
624
|
+
inventory.updater = this.user
|
|
637
625
|
|
|
638
|
-
|
|
639
|
-
targetProduct.actualPackQty--
|
|
640
|
-
targetProduct.status = ORDER_PRODUCT_STATUS.UNLOADING
|
|
641
|
-
targetProduct.updater = this.user
|
|
642
|
-
} else if (returnOrder) {
|
|
643
|
-
targetInventory.actualPackQty--
|
|
644
|
-
targetInventory.status = ORDER_PRODUCT_STATUS.UNLOADING
|
|
645
|
-
targetInventory.updater = this.user
|
|
646
|
-
}
|
|
626
|
+
await this.trxMgr.getRepository(InventoryHistory).update({ inventory }, { inventory: null })
|
|
647
627
|
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
628
|
+
await this.trxMgr.getRepository(Inventory).delete({ id: inventory.id })
|
|
629
|
+
}
|
|
630
|
+
} else {
|
|
631
|
+
inventory.lastSeq++
|
|
632
|
+
inventory.status = INVENTORY_STATUS.DELETED
|
|
633
|
+
inventory = await this.transactionInventory(
|
|
634
|
+
inventory,
|
|
635
|
+
Boolean(orderType === ORDER_TYPES.ARRIVAL_NOTICE) ? arrivalNotice : returnOrder,
|
|
636
|
+
-inventory.qty,
|
|
637
|
+
-inventory.uomValue,
|
|
638
|
+
INVENTORY_TRANSACTION_TYPE.UNDO_UNLOADING
|
|
639
|
+
)
|
|
640
|
+
inventory.qty = 0
|
|
641
|
+
inventory.uomValue = 0
|
|
642
|
+
inventory.updater = this.user
|
|
654
643
|
|
|
655
|
-
|
|
656
|
-
worksheetDetail.status = WORKSHEET_STATUS.EXECUTING
|
|
657
|
-
worksheetDetail.updater = this.user
|
|
658
|
-
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
644
|
+
await this.trxMgr.getRepository(InventoryHistory).update({ inventory }, { inventory: null })
|
|
659
645
|
|
|
660
|
-
|
|
661
|
-
if (arrivalNotice) {
|
|
662
|
-
targetProduct.actualPalletQty--
|
|
663
|
-
targetProduct.issue = null
|
|
664
|
-
targetProduct.remark = null
|
|
665
|
-
await this.updateOrderTargets([targetProduct])
|
|
666
|
-
} else if (returnOrder) {
|
|
667
|
-
targetInventory.actualPalletQty--
|
|
668
|
-
await this.updateOrderTargets([targetInventory])
|
|
646
|
+
await this.trxMgr.getRepository(Inventory).delete({ id: inventory.id })
|
|
669
647
|
}
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
await this.trxMgr.getRepository(
|
|
648
|
+
|
|
649
|
+
worksheetDetail.issue = inventory.qty == 0 && worksheetDetail?.issue ? null : worksheetDetail.issue
|
|
650
|
+
worksheetDetail.status = WORKSHEET_STATUS.EXECUTING
|
|
651
|
+
worksheetDetail.updater = this.user
|
|
652
|
+
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
675
653
|
}
|
|
676
654
|
}
|
|
677
655
|
|
|
@@ -12,12 +12,11 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
12
12
|
ReleaseGood,
|
|
13
13
|
{
|
|
14
14
|
domain: this.domain,
|
|
15
|
-
name: releaseGoodNo
|
|
16
|
-
status: ORDER_STATUS.READY_TO_PACK
|
|
15
|
+
name: releaseGoodNo
|
|
17
16
|
},
|
|
18
17
|
['orderInventories', 'orderInventories.inventory']
|
|
19
18
|
)
|
|
20
|
-
|
|
19
|
+
let orderInventories: OrderInventory[] = releaseGood.orderInventories
|
|
21
20
|
|
|
22
21
|
const existingPackingWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({
|
|
23
22
|
where: { domain: this.domain, releaseGood, type: WORKSHEET_TYPE.PACKING, status: WORKSHEET_STATUS.DEACTIVATED }
|
|
@@ -40,10 +39,6 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
40
39
|
})
|
|
41
40
|
await this.updateOrderTargets(orderInventories)
|
|
42
41
|
|
|
43
|
-
releaseGood.status = ORDER_STATUS.READY_TO_PACK
|
|
44
|
-
releaseGood.updater = this.user
|
|
45
|
-
await this.updateRefOrder(releaseGood)
|
|
46
|
-
|
|
47
42
|
return worksheet
|
|
48
43
|
}
|
|
49
44
|
|
|
@@ -823,16 +823,16 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
823
823
|
status: ORDER_STATUS.PICKING
|
|
824
824
|
})
|
|
825
825
|
|
|
826
|
-
|
|
826
|
+
let worksheet: Worksheet = await this.findWorksheetByRefOrder(releaseGood, WORKSHEET_TYPE.PICKING, [
|
|
827
827
|
'worksheetDetails',
|
|
828
828
|
'worksheetDetails.targetInventory'
|
|
829
829
|
])
|
|
830
|
-
this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })
|
|
830
|
+
await this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })
|
|
831
831
|
|
|
832
832
|
let orderStatus: string
|
|
833
833
|
if (releaseGood?.packingOption) {
|
|
834
834
|
orderStatus = ORDER_STATUS.READY_TO_PACK
|
|
835
|
-
} else
|
|
835
|
+
} else {
|
|
836
836
|
orderStatus = ORDER_STATUS.LOADING
|
|
837
837
|
}
|
|
838
838
|
|
|
@@ -933,7 +933,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
933
933
|
name: 'enable-bin-picking'
|
|
934
934
|
}
|
|
935
935
|
})
|
|
936
|
-
if (binPickingSetting
|
|
936
|
+
if (binPickingSetting != undefined && binPickingSetting.value.toLowerCase() == 'true') {
|
|
937
937
|
if (binLocation) {
|
|
938
938
|
const foundBinLocation: Location = await this.trxMgr.getRepository(Location).findOne({
|
|
939
939
|
where: { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN }
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
import FormData from 'form-data'
|
|
2
|
+
import fetch from 'node-fetch'
|
|
3
|
+
import { Equal, getRepository, In } from 'typeorm'
|
|
4
|
+
|
|
1
5
|
import { Attachment, STORAGE } from '@things-factory/attachment-base'
|
|
2
6
|
import { Partner } from '@things-factory/auth-base'
|
|
3
7
|
import { Bizplace, ContactPoint } from '@things-factory/biz-base'
|
|
4
8
|
import { config } from '@things-factory/env'
|
|
5
|
-
import {
|
|
9
|
+
import { ProductDetail } from '@things-factory/product-base'
|
|
10
|
+
import { DeliveryOrder, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
6
11
|
import { Domain } from '@things-factory/shell'
|
|
7
|
-
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
8
12
|
import { Inventory, Pallet } from '@things-factory/warehouse-base'
|
|
9
|
-
|
|
10
|
-
import fetch from 'node-fetch'
|
|
11
|
-
import { Equal, getRepository, In } from 'typeorm'
|
|
13
|
+
|
|
12
14
|
import { TEMPLATE_TYPE, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../constants'
|
|
13
15
|
import { Worksheet, WorksheetDetail } from '../entities'
|
|
14
16
|
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
+
import FormData from 'form-data'
|
|
2
|
+
import fetch from 'node-fetch'
|
|
3
|
+
import { getRepository, IsNull, Not } from 'typeorm'
|
|
4
|
+
|
|
1
5
|
import { Attachment, STORAGE } from '@things-factory/attachment-base'
|
|
2
6
|
import { Partner } from '@things-factory/auth-base'
|
|
3
7
|
import { Bizplace, ContactPoint } from '@things-factory/biz-base'
|
|
4
8
|
import { config } from '@things-factory/env'
|
|
9
|
+
import { ProductDetail } from '@things-factory/product-base'
|
|
5
10
|
import {
|
|
6
11
|
ArrivalNotice,
|
|
7
12
|
GoodsReceivalNote,
|
|
8
|
-
OrderProduct,
|
|
9
13
|
ORDER_PRODUCT_STATUS,
|
|
10
|
-
ORDER_STATUS
|
|
14
|
+
ORDER_STATUS,
|
|
15
|
+
OrderProduct
|
|
11
16
|
} from '@things-factory/sales-base'
|
|
12
|
-
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
13
17
|
import { Domain } from '@things-factory/shell'
|
|
14
|
-
|
|
15
|
-
import fetch from 'node-fetch'
|
|
16
|
-
import { getRepository, IsNull, Not } from 'typeorm'
|
|
18
|
+
|
|
17
19
|
import { TEMPLATE_TYPE } from '../constants'
|
|
18
20
|
import { Worksheet } from '../entities'
|
|
19
21
|
import { DateTimeConverter } from '../utils/datetime-util'
|
|
@@ -134,7 +136,7 @@ export async function renderOrientageGRN({ grnNo }, context: any) {
|
|
|
134
136
|
pack_qty: item.packQty ? item.packQty : 0,
|
|
135
137
|
actual_pack_qty: item.actualPackQty ? item.actualPackQty : 0,
|
|
136
138
|
container_no: foundGAN.containerNo ? foundGAN.containerNo : '',
|
|
137
|
-
aux_value_3:
|
|
139
|
+
aux_value_3: matchedProductDetail?.auxValue3 ? matchedProductDetail.auxValue3 : '',
|
|
138
140
|
product_volume: matchedProductDetail
|
|
139
141
|
? matchedProductDetail?.volume
|
|
140
142
|
? matchedProductDetail.volume
|
|
@@ -387,7 +387,7 @@ export class WorksheetController {
|
|
|
387
387
|
type: string,
|
|
388
388
|
additionalProps: Partial<Worksheet> = {}
|
|
389
389
|
): Promise<Worksheet> {
|
|
390
|
-
let refOrderType: string = this.getRefOrderField(refOrder)
|
|
390
|
+
let refOrderType: string = await this.getRefOrderField(refOrder)
|
|
391
391
|
const bizplace: Bizplace = await this.extractBizplaceFromRefOrder(refOrder)
|
|
392
392
|
|
|
393
393
|
const worksheet: Partial<Worksheet> = {
|
|
@@ -676,7 +676,7 @@ export class WorksheetController {
|
|
|
676
676
|
'worksheetDetails.targetVas'
|
|
677
677
|
])
|
|
678
678
|
|
|
679
|
-
|
|
679
|
+
let worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
|
|
680
680
|
|
|
681
681
|
worksheetDetails
|
|
682
682
|
.filter((wsd: WorksheetDetail) => wsd.status !== ORDER_INVENTORY_STATUS.REPLACED)
|
|
@@ -687,7 +687,7 @@ export class WorksheetController {
|
|
|
687
687
|
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)
|
|
688
688
|
|
|
689
689
|
if (worksheetType === WORKSHEET_TYPE.UNLOADING) {
|
|
690
|
-
|
|
690
|
+
let targetProducts: OrderProduct[] = worksheet.worksheetDetails.map((wsd: WorksheetDetail) => {
|
|
691
691
|
let targetProduct: OrderProduct = wsd.targetProduct
|
|
692
692
|
targetProduct.status = ORDER_PRODUCT_STATUS.TERMINATED
|
|
693
693
|
targetProduct.updater = this.user
|
|
@@ -696,7 +696,7 @@ export class WorksheetController {
|
|
|
696
696
|
|
|
697
697
|
await this.updateOrderTargets(targetProducts)
|
|
698
698
|
} else if (worksheetType === WORKSHEET_TYPE.VAS) {
|
|
699
|
-
|
|
699
|
+
let targetVASs: OrderVas[] = worksheet.worksheetDetails.map((wsd: WorksheetDetail) => {
|
|
700
700
|
let targetVAS: OrderVas = wsd.targetVas
|
|
701
701
|
targetVAS.status = ORDER_VAS_STATUS.TERMINATED
|
|
702
702
|
targetVAS.updater = this.user
|
|
@@ -712,7 +712,7 @@ export class WorksheetController {
|
|
|
712
712
|
worksheetType === WORKSHEET_TYPE.WAREHOUSE_RETURN ||
|
|
713
713
|
worksheetType === WORKSHEET_TYPE.UNLOADING_RETURN
|
|
714
714
|
) {
|
|
715
|
-
|
|
715
|
+
let targetInventories: OrderInventory[] = worksheet.worksheetDetails
|
|
716
716
|
.filter((wsd: WorksheetDetail) => wsd.status !== ORDER_INVENTORY_STATUS.REPLACED)
|
|
717
717
|
.map((wsd: WorksheetDetail) => {
|
|
718
718
|
let targetInventory: OrderInventory = wsd.targetInventory
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { OrderInventory } from '@things-factory/sales-base'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
|
|
7
|
+
import { PickingWorksheetController } from '../../../../controllers/'
|
|
8
|
+
import { Worksheet, WorksheetDetail } from '../../../../entities'
|
|
9
|
+
|
|
10
|
+
import { generatePickingWorksheet } from './generate-release-good-worksheet'
|
|
11
|
+
|
|
12
|
+
export const generateMultipleReleaseGoodWorksheetResolver = {
|
|
13
|
+
async generateMultipleReleaseGoodWorksheet(_: any, { releaseGoodNos }, context: any) {
|
|
14
|
+
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
15
|
+
|
|
16
|
+
for (let idx = 0; idx < releaseGoodNos.length; idx++) {
|
|
17
|
+
await generatePickingWorksheet(tx, domain, user, releaseGoodNos[idx])
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return true
|
|
21
|
+
}
|
|
22
|
+
}
|
package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
2
4
|
import { OrderInventory } from '@things-factory/sales-base'
|
|
3
5
|
import { Domain } from '@things-factory/shell'
|
|
4
|
-
|
|
6
|
+
|
|
5
7
|
import { PickingWorksheetController } from '../../../../controllers/'
|
|
6
8
|
import { Worksheet, WorksheetDetail } from '../../../../entities'
|
|
7
9
|
|
|
@@ -4,6 +4,7 @@ import { generateCycleCountWorksheetResolver } from './generate-cycle-count-work
|
|
|
4
4
|
import { generatePartialPutawayWorksheetResolver } from './generate-partial-putaway-worksheet'
|
|
5
5
|
import { generatePutawayWorksheetResolver } from './generate-putaway-worksheet'
|
|
6
6
|
import { generateReleaseGoodWorksheetResolver } from './generate-release-good-worksheet'
|
|
7
|
+
import { generateMultipleReleaseGoodWorksheetResolver } from './generate-multiple-release-good-worksheet'
|
|
7
8
|
import { generateVasOrderWorksheetResolver } from './generate-vas-order-worksheet'
|
|
8
9
|
import { generateReturnOrderWorksheetResolver } from './generate-return-order-worksheet'
|
|
9
10
|
import { generatePartialPutawayReturnWorksheetResolver } from './generate-partial-putaway-return-worksheet'
|
|
@@ -15,6 +16,7 @@ export const Mutations = {
|
|
|
15
16
|
...generatePartialPutawayWorksheetResolver,
|
|
16
17
|
...generatePutawayWorksheetResolver,
|
|
17
18
|
...generateReleaseGoodWorksheetResolver,
|
|
19
|
+
...generateMultipleReleaseGoodWorksheetResolver,
|
|
18
20
|
...generateVasOrderWorksheetResolver,
|
|
19
21
|
...generateReturnOrderWorksheetResolver,
|
|
20
22
|
...generatePartialPutawayReturnWorksheetResolver
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { EntityManager,
|
|
1
|
+
import { EntityManager, SelectQueryBuilder } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { User } from '@things-factory/auth-base'
|
|
4
4
|
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
5
5
|
import { MarketplaceOrder, MarketplaceOrderItem, MarketplaceOrderShipping } from '@things-factory/marketplace-base'
|
|
6
|
-
import { ORDER_INVENTORY_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
6
|
+
import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
7
7
|
import { Domain } from '@things-factory/shell'
|
|
8
8
|
import { Inventory, Location } from '@things-factory/warehouse-base'
|
|
9
9
|
|
|
@@ -11,7 +11,6 @@ import { WORKSHEET_TYPE } from '../../../constants'
|
|
|
11
11
|
import { SellercraftController } from '../../../controllers'
|
|
12
12
|
import { Worksheet, WorksheetDetail } from '../../../entities'
|
|
13
13
|
import { fetchExecutingWorksheet } from '../../../utils'
|
|
14
|
-
import { ORDER_STATUS } from '@things-factory/sales-base'
|
|
15
14
|
|
|
16
15
|
export const packingWorksheetResolver = {
|
|
17
16
|
async packingWorksheet(_: any, { releaseGoodNo }, context: any) {
|
|
@@ -30,12 +29,16 @@ export const packingWorksheetResolver = {
|
|
|
30
29
|
where: { domain, name: releaseGoodNo }
|
|
31
30
|
})
|
|
32
31
|
|
|
33
|
-
const qb: SelectQueryBuilder<OrderInventory> = tx
|
|
32
|
+
const qb: SelectQueryBuilder<OrderInventory> = tx
|
|
33
|
+
.getRepository(OrderInventory)
|
|
34
|
+
.createQueryBuilder('orderInventory')
|
|
34
35
|
qb.innerJoinAndSelect('orderInventory.releaseGood', 'releaseGood')
|
|
35
36
|
.innerJoinAndSelect('releaseGood.bizplace', 'bizplace')
|
|
36
37
|
.innerJoinAndSelect('bizplace.domain', 'domain')
|
|
37
38
|
.where('orderInventory.domain_id = :domainId', { domainId: domain.id })
|
|
38
|
-
.andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
|
|
39
|
+
.andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
|
|
40
|
+
orderInventoryStatus: [ORDER_INVENTORY_STATUS.PACKING, ORDER_INVENTORY_STATUS.PACKED]
|
|
41
|
+
})
|
|
39
42
|
.andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })
|
|
40
43
|
.andWhere('releaseGood.status = :status', { status: ORDER_STATUS.PACKING })
|
|
41
44
|
|
|
@@ -138,6 +141,7 @@ export const packingWorksheetResolver = {
|
|
|
138
141
|
bizplaceName: releaseGood.bizplace.name,
|
|
139
142
|
refNo: releaseGood.refNo,
|
|
140
143
|
refNo2: releaseGood.refNo2,
|
|
144
|
+
refNo3: releaseGood.refNo3,
|
|
141
145
|
partnerDomainId: releaseGood.bizplace?.domain.id,
|
|
142
146
|
startedAt: worksheet.startedAt,
|
|
143
147
|
shippingProvider: shippingProvider ? shippingProvider : '',
|
|
@@ -52,11 +52,14 @@ export async function activatePicking(
|
|
|
52
52
|
where: { orderNo: releaseGood.refNo, domain: companyDomain },
|
|
53
53
|
relations: ['marketplaceStore']
|
|
54
54
|
})
|
|
55
|
-
const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
|
|
56
55
|
|
|
57
|
-
if (
|
|
58
|
-
const
|
|
59
|
-
|
|
56
|
+
if (marketplaceOrder) {
|
|
57
|
+
const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
|
|
58
|
+
|
|
59
|
+
if (marketplaceStore.isAutoUpdateShipment) {
|
|
60
|
+
const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
61
|
+
await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
|
|
62
|
+
}
|
|
60
63
|
}
|
|
61
64
|
}
|
|
62
65
|
}
|
|
@@ -45,7 +45,7 @@ export async function completePicking(
|
|
|
45
45
|
releaseGoodNo: string
|
|
46
46
|
): Promise<void> {
|
|
47
47
|
const pickingWSCtrl: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
48
|
-
|
|
48
|
+
let releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
|
|
49
49
|
where: { domain, name: releaseGoodNo },
|
|
50
50
|
relations: [
|
|
51
51
|
'bizplace',
|
|
@@ -53,6 +53,7 @@ export async function completePicking(
|
|
|
53
53
|
'bizplace.company',
|
|
54
54
|
'bizplace.company.domain',
|
|
55
55
|
'orderInventories',
|
|
56
|
+
'orderInventories.inventory',
|
|
56
57
|
'orderInventories.product'
|
|
57
58
|
]
|
|
58
59
|
})
|
|
@@ -84,13 +85,13 @@ export async function completePicking(
|
|
|
84
85
|
|
|
85
86
|
if (sellercraft) {
|
|
86
87
|
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
87
|
-
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
|
|
88
|
+
releaseGood = await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
|
|
88
89
|
await sellercraftCtrl.initiateOrderDocument(sellercraft, releaseGood)
|
|
89
90
|
} else {
|
|
90
91
|
const companyDomain: Domain = releaseGood.bizplace.company.domain
|
|
91
92
|
let marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
92
93
|
where: { orderNo: releaseGood.refNo, domain: companyDomain },
|
|
93
|
-
relations: ['marketplaceStore']
|
|
94
|
+
relations: ['marketplaceStore', 'marketplaceOrderItems', 'marketplaceOrderItems.marketplaceOrderShipping']
|
|
94
95
|
})
|
|
95
96
|
const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
|
|
96
97
|
let eTraxOption: boolean
|
|
@@ -100,11 +101,6 @@ export async function completePicking(
|
|
|
100
101
|
await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PACKING)
|
|
101
102
|
}
|
|
102
103
|
|
|
103
|
-
marketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
104
|
-
where: { orderNo: releaseGood.refNo },
|
|
105
|
-
relations: ['marketplaceStore', 'marketplaceOrderItems', 'marketplaceOrderItems.marketplaceOrderShipping']
|
|
106
|
-
})
|
|
107
|
-
|
|
108
104
|
if (!marketplaceOrder)
|
|
109
105
|
throw new Error('Failed to find ecommerce order, kindly contact our support team regarding this issue')
|
|
110
106
|
eTraxOption = marketplaceOrder?.marketplaceStore.eTrax
|