@things-factory/worksheet-base 5.0.13 → 6.0.0-alpha.1
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/sellercraft-controller.js +225 -191
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
- package/dist-server/controllers/inbound/unloading-returning-worksheet-controller.js +2 -2
- package/dist-server/controllers/inbound/unloading-returning-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js +28 -17
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +1 -1
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js +17 -3
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +221 -144
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/returning-worksheet-controller.js +16 -0
- package/dist-server/controllers/outbound/returning-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js +8 -8
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/render-elccl-grn.js +21 -16
- package/dist-server/controllers/render-elccl-grn.js.map +1 -1
- package/dist-server/controllers/render-fm-grn.js +43 -26
- package/dist-server/controllers/render-fm-grn.js.map +1 -1
- package/dist-server/controllers/render-grn.js +42 -28
- package/dist-server/controllers/render-grn.js.map +1 -1
- package/dist-server/controllers/render-invoices.js +4 -5
- package/dist-server/controllers/render-invoices.js.map +1 -1
- package/dist-server/controllers/render-job-sheet.js +19 -19
- package/dist-server/controllers/render-job-sheet.js.map +1 -1
- package/dist-server/controllers/render-kimeda-grn.js +38 -23
- package/dist-server/controllers/render-kimeda-grn.js.map +1 -1
- package/dist-server/controllers/render-manifest.js +8 -9
- package/dist-server/controllers/render-manifest.js.map +1 -1
- package/dist-server/controllers/render-manual-do.js +15 -15
- package/dist-server/controllers/render-manual-do.js.map +1 -1
- package/dist-server/controllers/render-orientage-do.js +74 -28
- package/dist-server/controllers/render-orientage-do.js.map +1 -1
- package/dist-server/controllers/render-orientage-grn.js +25 -15
- package/dist-server/controllers/render-orientage-grn.js.map +1 -1
- package/dist-server/controllers/render-po.js +28 -19
- package/dist-server/controllers/render-po.js.map +1 -1
- package/dist-server/controllers/render-ro-do.js +139 -105
- package/dist-server/controllers/render-ro-do.js.map +1 -1
- package/dist-server/controllers/render-seebuu-grn.js +29 -19
- package/dist-server/controllers/render-seebuu-grn.js.map +1 -1
- package/dist-server/controllers/vas/vas-worksheet-controller.js +5 -5
- package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +75 -25
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js +2 -1
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -1
- package/dist-server/entities/worksheet-detail.js +14 -12
- package/dist-server/entities/worksheet-detail.js.map +1 -1
- package/dist-server/entities/worksheet-movement.js +1 -2
- package/dist-server/entities/worksheet-movement.js.map +1 -1
- package/dist-server/entities/worksheet.js +13 -13
- package/dist-server/entities/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/pallet/pallet-outbound.js +1 -1
- package/dist-server/graphql/resolvers/pallet/pallet-outbound.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +6 -6
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/check-inventory-release.js +6 -5
- package/dist-server/graphql/resolvers/worksheet/check-inventory-release.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/check-stock-take-current-location.js +8 -8
- package/dist-server/graphql/resolvers/worksheet/check-stock-take-current-location.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +82 -80
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/create-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cross-dock-picking.js +5 -4
- package/dist-server/graphql/resolvers/worksheet/cross-dock-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +5 -5
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js +5 -4
- package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/delete-worksheet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/delete-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/delivery-order-by-worksheet.js +83 -52
- package/dist-server/graphql/resolvers/worksheet/delivery-order-by-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/fetch-delivery-order-ro.js +169 -0
- package/dist-server/graphql/resolvers/worksheet/fetch-delivery-order-ro.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js +67 -0
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js +1 -34
- package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-worksheet-no.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.js +70 -0
- package/dist-server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js +34 -3
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-return-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-putaway-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js +14 -10
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/having-vas.js +7 -7
- package/dist-server/graphql/resolvers/worksheet/having-vas.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/index.js +5 -3
- package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/activate-cycle-count.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/add-extra-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/check-missing-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/complete-inspection.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/inspecting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/relocate-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/undo-inspection.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +18 -9
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loaded-inventories.js +6 -5
- package/dist-server/graphql/resolvers/worksheet/loaded-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/activate-loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +14 -14
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/undo-loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +11 -10
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js +5 -4
- package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +3 -4
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +16 -11
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +96 -22
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js +5 -5
- package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js +93 -81
- package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js +0 -19
- package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js +11 -5
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +10 -4
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +34 -38
- 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 +46 -35
- package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.js +7 -2
- package/dist-server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js +33 -16
- package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js +5 -8
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +6 -5
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js +10 -8
- package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/activate-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +4 -3
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/undo-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/activate-putaway-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/putaway-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/undo-putaway-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-returning-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/putaway-returning-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/putaway-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js +16 -11
- package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js +139 -149
- package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/relocate-pallet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/relocate-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/return-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/return-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/returning/activate-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/returning/complete-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/returning/returning.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/activate-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/complete-worksheet-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/transfer.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.js +8 -7
- package/dist-server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js +9 -8
- package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/activate-unloading.js +4 -2
- package/dist-server/graphql/resolvers/worksheet/unloading/activate-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-product-scan-unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading-partially.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js +6 -2
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/scan-product-unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/activate-unloading-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-return-partially.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js +7 -3
- package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/unloading-return-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js +5 -5
- package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/update-worksheet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/update-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/activate-vas.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/assign-vas-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/complete-vas.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/execute-vas.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/undo-vas-inventory.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/undo-vas.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-candidates.js +13 -12
- package/dist-server/graphql/resolvers/worksheet/vas-candidates.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-inventories.js +7 -6
- package/dist-server/graphql/resolvers/worksheet/vas-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +36 -18
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.js +10 -3
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.js +3 -2
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.js +11 -3
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js +3 -2
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.js +7 -7
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-worksheet.js +11 -10
- package/dist-server/graphql/resolvers/worksheet/vas-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet-by-order-no.js +7 -4
- package/dist-server/graphql/resolvers/worksheet/worksheet-by-order-no.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet-with-pagination.js +5 -5
- package/dist-server/graphql/resolvers/worksheet/worksheet-with-pagination.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +72 -42
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheets.js +42 -17
- package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/check-progressing-pallet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet-detail/check-progressing-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/create-worksheet-detail.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/create-worksheet-detail.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +13 -10
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js +7 -5
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-carton-id.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js +3 -3
- package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +5 -2
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/index.js +2 -1
- package/dist-server/graphql/resolvers/worksheet-detail/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js +81 -0
- package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet-detail/update-worksheet-detail.js +2 -2
- package/dist-server/graphql/resolvers/worksheet-detail/update-worksheet-detail.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-detail.js +2 -2
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-detail.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details.js +2 -2
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/delete-worksheet-movement.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/update-worksheet-movement.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/update-worksheet-movement.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movement.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movement.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movements.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movements.js.map +1 -1
- package/dist-server/graphql/types/worksheet/batch-pick-worksheet-info.js +12 -0
- package/dist-server/graphql/types/worksheet/batch-pick-worksheet-info.js.map +1 -0
- package/dist-server/graphql/types/worksheet/delivery-order-info.js +3 -0
- package/dist-server/graphql/types/worksheet/delivery-order-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/delivery-order-ro.js +18 -0
- package/dist-server/graphql/types/worksheet/delivery-order-ro.js.map +1 -0
- package/dist-server/graphql/types/worksheet/index.js +26 -15
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js +11 -0
- package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js.map +1 -0
- package/dist-server/graphql/types/worksheet/sellercraft-document.js +11 -0
- package/dist-server/graphql/types/worksheet/sellercraft-document.js.map +1 -0
- package/dist-server/graphql/types/worksheet-detail/index.js +10 -0
- package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +1 -0
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/utils/inventory-util.js +26 -20
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/dist-server/utils/worksheet-util.js +8 -6
- package/dist-server/utils/worksheet-util.js.map +1 -1
- package/package.json +17 -17
- package/server/controllers/ecommerce/sellercraft-controller.ts +282 -223
- package/server/controllers/inbound/unloading-returning-worksheet-controller.ts +9 -17
- package/server/controllers/inbound/unloading-worksheet-controller.ts +55 -66
- package/server/controllers/inspect/cycle-count-worksheet-controller.ts +1 -1
- package/server/controllers/outbound/packing-worksheet-controller.ts +25 -4
- package/server/controllers/outbound/picking-worksheet-controller.ts +292 -172
- package/server/controllers/outbound/returning-worksheet-controller.ts +23 -0
- package/server/controllers/outbound/sorting-worksheet-controller.ts +20 -20
- package/server/controllers/render-elccl-grn.ts +16 -11
- package/server/controllers/render-fm-grn.ts +32 -14
- package/server/controllers/render-grn.ts +31 -16
- package/server/controllers/render-invoices.ts +3 -3
- package/server/controllers/render-job-sheet.ts +13 -11
- package/server/controllers/render-kimeda-grn.ts +28 -13
- package/server/controllers/render-manifest.ts +25 -24
- package/server/controllers/render-manual-do.ts +9 -10
- package/server/controllers/render-orientage-do.ts +79 -30
- package/server/controllers/render-orientage-grn.ts +30 -20
- package/server/controllers/render-po.ts +31 -20
- package/server/controllers/render-ro-do.ts +151 -124
- package/server/controllers/render-seebuu-grn.ts +21 -11
- package/server/controllers/vas/vas-worksheet-controller.ts +19 -20
- package/server/controllers/worksheet-controller.ts +97 -27
- package/server/entities/warehouse-bizplace-onhand-inventory.ts +2 -1
- package/server/entities/worksheet-detail.ts +9 -0
- package/server/graphql/resolvers/pallet/pallet-outbound.ts +5 -8
- package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +8 -6
- package/server/graphql/resolvers/worksheet/cancel-draft-release-order.ts +4 -11
- package/server/graphql/resolvers/worksheet/check-inventory-release.ts +8 -7
- package/server/graphql/resolvers/worksheet/check-stock-take-current-location.ts +10 -8
- package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +112 -138
- package/server/graphql/resolvers/worksheet/create-worksheet.ts +6 -8
- package/server/graphql/resolvers/worksheet/cross-dock-picking.ts +8 -7
- package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +7 -7
- package/server/graphql/resolvers/worksheet/cycle-count-worksheet.ts +6 -6
- package/server/graphql/resolvers/worksheet/delete-worksheet.ts +5 -3
- package/server/graphql/resolvers/worksheet/delivery-order-by-worksheet.ts +87 -53
- package/server/graphql/resolvers/worksheet/fetch-delivery-order-ro.ts +190 -0
- package/server/graphql/resolvers/worksheet/fetch-sellercraft-document.ts +69 -0
- package/server/graphql/resolvers/worksheet/find-release-orders-by-task-no.ts +5 -45
- package/server/graphql/resolvers/worksheet/find-release-orders-by-worksheet-no.ts +5 -5
- package/server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.ts +80 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts +45 -5
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.ts +11 -10
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts +1 -1
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +7 -14
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-return-worksheet.ts +10 -4
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-worksheet.ts +10 -4
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-putaway-worksheet.ts +5 -3
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +25 -29
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.ts +6 -4
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.ts +6 -4
- package/server/graphql/resolvers/worksheet/having-vas.ts +10 -8
- package/server/graphql/resolvers/worksheet/index.ts +7 -3
- package/server/graphql/resolvers/worksheet/inspecting/activate-cycle-count.ts +5 -3
- package/server/graphql/resolvers/worksheet/inspecting/add-extra-pallet.ts +4 -2
- package/server/graphql/resolvers/worksheet/inspecting/check-missing-pallet.ts +5 -3
- package/server/graphql/resolvers/worksheet/inspecting/complete-inspection.ts +5 -3
- package/server/graphql/resolvers/worksheet/inspecting/inspecting.ts +9 -3
- package/server/graphql/resolvers/worksheet/inspecting/relocate-pallet.ts +16 -4
- package/server/graphql/resolvers/worksheet/inspecting/undo-inspection.ts +5 -3
- package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +34 -17
- package/server/graphql/resolvers/worksheet/loaded-inventories.ts +7 -6
- package/server/graphql/resolvers/worksheet/loading/activate-loading.ts +5 -3
- package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +16 -16
- package/server/graphql/resolvers/worksheet/loading/loading.ts +5 -3
- package/server/graphql/resolvers/worksheet/loading/undo-loading.ts +5 -3
- package/server/graphql/resolvers/worksheet/loading-worksheet.ts +11 -11
- package/server/graphql/resolvers/worksheet/not-tally-target-inventories.ts +6 -6
- package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +14 -13
- package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +4 -4
- package/server/graphql/resolvers/worksheet/packing/packing.ts +3 -3
- package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +21 -17
- package/server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.ts +2 -2
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +102 -24
- package/server/graphql/resolvers/worksheet/palletizing-pallets.ts +10 -8
- package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +107 -97
- package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +3 -30
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +3 -3
- package/server/graphql/resolvers/worksheet/picking/assign-picking-inventories.ts +23 -4
- package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +25 -17
- package/server/graphql/resolvers/worksheet/picking/batch-picking.ts +4 -2
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +15 -6
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +37 -42
- package/server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts +52 -42
- package/server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.ts +15 -6
- package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +49 -35
- package/server/graphql/resolvers/worksheet/picking/picking.ts +4 -2
- package/server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.ts +11 -6
- package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +10 -35
- package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +2 -2
- package/server/graphql/resolvers/worksheet/picking/undo-picking-assignment.ts +9 -3
- package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +2 -2
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +11 -11
- package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +13 -13
- package/server/graphql/resolvers/worksheet/putaway/activate-putaway.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +6 -5
- package/server/graphql/resolvers/worksheet/putaway/putaway.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway/undo-putaway.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway-return/activate-putaway-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.ts +13 -6
- package/server/graphql/resolvers/worksheet/putaway-return/putaway-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway-return/undo-putaway-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway-returning-worksheet.ts +4 -6
- package/server/graphql/resolvers/worksheet/putaway-worksheet.ts +4 -6
- package/server/graphql/resolvers/worksheet/recommend-putway-location.ts +20 -19
- package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +154 -220
- package/server/graphql/resolvers/worksheet/relocate-pallet.ts +6 -4
- package/server/graphql/resolvers/worksheet/replace-picking-pallets.ts +3 -7
- package/server/graphql/resolvers/worksheet/return-worksheet.ts +4 -6
- package/server/graphql/resolvers/worksheet/returning/activate-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/returning/complete-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/returning/returning.ts +5 -3
- package/server/graphql/resolvers/worksheet/sorting/activate-sorting.ts +5 -3
- package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +7 -5
- package/server/graphql/resolvers/worksheet/sorting/complete-worksheet-sorting.ts +5 -3
- package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +9 -3
- package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +9 -3
- package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +5 -5
- package/server/graphql/resolvers/worksheet/transfer.ts +10 -12
- package/server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.ts +13 -7
- package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +9 -9
- package/server/graphql/resolvers/worksheet/unloading/activate-unloading.ts +9 -5
- package/server/graphql/resolvers/worksheet/unloading/complete-product-scan-unload.ts +5 -3
- package/server/graphql/resolvers/worksheet/unloading/complete-unloading-partially.ts +5 -3
- package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +8 -4
- package/server/graphql/resolvers/worksheet/unloading/scan-product-unload.ts +5 -3
- package/server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.ts +2 -2
- package/server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.ts +2 -2
- package/server/graphql/resolvers/worksheet/unloading/undo-unloading.ts +2 -2
- package/server/graphql/resolvers/worksheet/unloading/unload.ts +7 -7
- package/server/graphql/resolvers/worksheet/unloading-return/activate-unloading-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-return-partially.ts +5 -3
- package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.ts +9 -5
- package/server/graphql/resolvers/worksheet/unloading-return-worksheet.ts +4 -6
- package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +5 -7
- package/server/graphql/resolvers/worksheet/update-worksheet.ts +5 -5
- package/server/graphql/resolvers/worksheet/vas/activate-vas.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas/assign-vas-inventories.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas/complete-vas.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas/execute-vas.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas/undo-vas-inventory.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas/undo-vas.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas-candidates.ts +20 -17
- package/server/graphql/resolvers/worksheet/vas-inventories.ts +9 -7
- package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +36 -18
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.ts +12 -5
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.ts +6 -3
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.ts +14 -6
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.ts +5 -7
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts +3 -2
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts +8 -5
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts +6 -16
- package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.ts +5 -2
- package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.ts +10 -8
- package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.ts +3 -5
- package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.ts +6 -6
- package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.ts +10 -13
- package/server/graphql/resolvers/worksheet/vas-worksheet.ts +13 -11
- package/server/graphql/resolvers/worksheet/worksheet-by-order-no.ts +13 -8
- package/server/graphql/resolvers/worksheet/worksheet-with-pagination.ts +7 -5
- package/server/graphql/resolvers/worksheet/worksheet.ts +86 -32
- package/server/graphql/resolvers/worksheet/worksheets.ts +60 -19
- package/server/graphql/resolvers/worksheet-detail/check-progressing-pallet.ts +7 -8
- package/server/graphql/resolvers/worksheet-detail/create-worksheet-detail.ts +4 -6
- package/server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.ts +5 -6
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +13 -19
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +19 -27
- package/server/graphql/resolvers/worksheet-detail/generate-carton-id.ts +2 -4
- package/server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts +6 -6
- package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +7 -4
- package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +3 -3
- package/server/graphql/resolvers/worksheet-detail/index.ts +3 -1
- package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +164 -0
- package/server/graphql/resolvers/worksheet-detail/update-worksheet-detail.ts +8 -7
- package/server/graphql/resolvers/worksheet-detail/worksheet-detail.ts +6 -7
- package/server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.ts +5 -5
- package/server/graphql/resolvers/worksheet-detail/worksheet-details.ts +6 -7
- package/server/graphql/resolvers/worksheet-movement/create-worksheet-movement.ts +4 -3
- package/server/graphql/resolvers/worksheet-movement/delete-worksheet-movement.ts +3 -2
- package/server/graphql/resolvers/worksheet-movement/update-worksheet-movement.ts +2 -4
- package/server/graphql/resolvers/worksheet-movement/worksheet-movement.ts +3 -6
- package/server/graphql/resolvers/worksheet-movement/worksheet-movements.ts +4 -4
- package/server/graphql/types/worksheet/batch-pick-worksheet-info.ts +9 -0
- package/server/graphql/types/worksheet/delivery-order-info.ts +3 -0
- package/server/graphql/types/worksheet/delivery-order-ro.ts +15 -0
- package/server/graphql/types/worksheet/index.ts +49 -38
- package/server/graphql/types/worksheet/multiple-release-good-worksheet.ts +8 -0
- package/server/graphql/types/worksheet/sellercraft-document.ts +8 -0
- package/server/graphql/types/worksheet-detail/index.ts +10 -0
- package/server/graphql/types/worksheet-detail/inventory-detail.ts +1 -0
- package/server/utils/inventory-util.ts +20 -14
- package/server/utils/worksheet-util.ts +10 -6
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js +0 -25
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js.map +0 -1
- package/dist-server/graphql/types/worksheet/airwaybill.js +0 -11
- package/dist-server/graphql/types/worksheet/airwaybill.js.map +0 -1
- package/server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.ts +0 -30
- package/server/graphql/types/worksheet/airwaybill.ts +0 -7
|
@@ -18,7 +18,7 @@ const interfaces_1 = require("./interfaces");
|
|
|
18
18
|
*/
|
|
19
19
|
async function getWorksheetDetailByName(trxMgr, domain, name) {
|
|
20
20
|
const worksheetDetail = await trxMgr.getRepository(entities_1.WorksheetDetail).findOne({
|
|
21
|
-
where: { domain, name },
|
|
21
|
+
where: { domain: { id: domain.id }, name },
|
|
22
22
|
relations: [
|
|
23
23
|
'bizplace',
|
|
24
24
|
'targetVas',
|
|
@@ -54,7 +54,7 @@ exports.getWorksheetDetailByName = getWorksheetDetailByName;
|
|
|
54
54
|
async function updateRelatedOrderVas(trxMgr, domain, bizplace, wsd, targetVas, operationGuide, user) {
|
|
55
55
|
const worksheet = wsd.worksheet;
|
|
56
56
|
const relatedWSDs = await trxMgr.getRepository(entities_1.WorksheetDetail).find({
|
|
57
|
-
where: { domain, bizplace, worksheet },
|
|
57
|
+
where: { domain: { id: domain.id }, bizplace: { id: bizplace.id }, worksheet: { id: worksheet.id } },
|
|
58
58
|
relations: ['targetVas', 'targetVas.vas']
|
|
59
59
|
});
|
|
60
60
|
const relatedOVs = relatedWSDs
|
|
@@ -116,7 +116,13 @@ async function getRemainInventoryAmount(trxMgr, refOrder, domain, bizplace, orig
|
|
|
116
116
|
if (refOrder instanceof sales_base_1.ReleaseGood) {
|
|
117
117
|
// Find loading order inventory to figure out uomValue
|
|
118
118
|
const orderInv = await trxMgr.getRepository(sales_base_1.OrderInventory).findOne({
|
|
119
|
-
where: {
|
|
119
|
+
where: {
|
|
120
|
+
domain: { id: domain.id },
|
|
121
|
+
bizplace,
|
|
122
|
+
inventory: originInv,
|
|
123
|
+
releaseGood: refOrder,
|
|
124
|
+
type: sales_base_1.ORDER_TYPES.RELEASE_OF_GOODS
|
|
125
|
+
}
|
|
120
126
|
});
|
|
121
127
|
remainQty = orderInv.releaseQty - reducedQty;
|
|
122
128
|
remainUomValue = orderInv.releaseUomValue - reducedUomValue;
|
|
@@ -185,7 +191,13 @@ async function temporaryGetRemainInventoryAmount(trxMgr, refOrder, domain, bizpl
|
|
|
185
191
|
if (refOrder instanceof sales_base_1.ReleaseGood) {
|
|
186
192
|
// Find loading order inventory to figure out uomValue
|
|
187
193
|
const orderInv = await trxMgr.getRepository(sales_base_1.OrderInventory).findOne({
|
|
188
|
-
where: {
|
|
194
|
+
where: {
|
|
195
|
+
domain: { id: domain.id },
|
|
196
|
+
bizplace,
|
|
197
|
+
inventory: originInv,
|
|
198
|
+
releaseGood: refOrder,
|
|
199
|
+
type: sales_base_1.ORDER_TYPES.RELEASE_OF_GOODS
|
|
200
|
+
}
|
|
189
201
|
});
|
|
190
202
|
remainUomValue = orderInv.releaseUomValue - reducedUomValue;
|
|
191
203
|
remainUnitQty = orderInv.releaseQty * packingSize - reducedUnitQty;
|
|
@@ -203,7 +215,12 @@ async function updateOriginInventories(trxMgr, domain, bizplace, user, refOrder,
|
|
|
203
215
|
const inventories = [];
|
|
204
216
|
for (let inv of repackedFroms) {
|
|
205
217
|
let foundInventory = await trxMgr.getRepository(warehouse_base_1.Inventory).findOne({
|
|
206
|
-
where: {
|
|
218
|
+
where: {
|
|
219
|
+
domain: { id: domain.id },
|
|
220
|
+
bizplace,
|
|
221
|
+
palletId: inv.fromPalletId,
|
|
222
|
+
status: (0, typeorm_1.Not)((0, typeorm_1.Equal)(warehouse_base_1.INVENTORY_STATUS.TERMINATED))
|
|
223
|
+
}
|
|
207
224
|
});
|
|
208
225
|
if (foundInventory) {
|
|
209
226
|
let repackedPkgQty = 0;
|
|
@@ -232,7 +249,7 @@ exports.updateOriginInventories = updateOriginInventories;
|
|
|
232
249
|
//// @farishelmi What is the difference between upsertInventory vs temporaryUpsertInventory? If it is repeated function, kindly remove one of them.
|
|
233
250
|
async function temporaryUpsertInventory(trxMgr, domain, bizplace, user, originInv, refOrder, palletId, locationName, packingType, addedQty, addedUomValue, transactionType, stdAmount, packingUnit) {
|
|
234
251
|
const location = await trxMgr.getRepository(warehouse_base_1.Location).findOne({
|
|
235
|
-
where: { domain, name: locationName },
|
|
252
|
+
where: { domain: { id: domain.id }, name: locationName },
|
|
236
253
|
relations: ['warehouse']
|
|
237
254
|
});
|
|
238
255
|
if (!location)
|
|
@@ -241,7 +258,7 @@ async function temporaryUpsertInventory(trxMgr, domain, bizplace, user, originIn
|
|
|
241
258
|
const zone = location.zone;
|
|
242
259
|
let inv = await trxMgr.getRepository(warehouse_base_1.Inventory).findOne({
|
|
243
260
|
where: {
|
|
244
|
-
domain,
|
|
261
|
+
domain: { id: domain.id },
|
|
245
262
|
bizplace,
|
|
246
263
|
palletId,
|
|
247
264
|
batchId: originInv.batchId,
|
|
@@ -265,7 +282,7 @@ async function temporaryUpsertInventory(trxMgr, domain, bizplace, user, originIn
|
|
|
265
282
|
inv = await trxMgr.getRepository(warehouse_base_1.Inventory).save(inv);
|
|
266
283
|
// Check whether the pallet is resuable or not
|
|
267
284
|
const pallet = await trxMgr.getRepository(warehouse_base_1.Pallet).findOne({
|
|
268
|
-
where: { domain, name: palletId, inventory: (0, typeorm_1.IsNull)() }
|
|
285
|
+
where: { domain: { id: domain.id }, name: palletId, inventory: (0, typeorm_1.IsNull)() }
|
|
269
286
|
});
|
|
270
287
|
// If it's exists => it's reusable pallet and need to update it's inventory field
|
|
271
288
|
if (pallet) {
|
|
@@ -294,7 +311,7 @@ exports.temporaryUpsertInventory = temporaryUpsertInventory;
|
|
|
294
311
|
async function temporaryDeductProductAmount(trxMgr, domain, bizplace, user, refOrder, originInv, reducedQty, reducedUomValue, transactionType, originalQty, originalUomValue, currentUnitQty, currentUomValue) {
|
|
295
312
|
if (refOrder instanceof sales_base_1.ReleaseGood) {
|
|
296
313
|
const loadingWS = await trxMgr.getRepository(entities_1.Worksheet).findOne({
|
|
297
|
-
where: { domain, bizplace, releaseGood: refOrder, type: constants_1.WORKSHEET_TYPE.LOADING },
|
|
314
|
+
where: { domain: { id: domain.id }, bizplace, releaseGood: refOrder, type: constants_1.WORKSHEET_TYPE.LOADING },
|
|
298
315
|
relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']
|
|
299
316
|
});
|
|
300
317
|
if (!loadingWS)
|
|
@@ -383,7 +400,7 @@ async function assignInventory(trxMgr, domain, bizplace, user, wsd, refOrder, ta
|
|
|
383
400
|
// Case 1. When the VAS Order comes with Arrival Notice
|
|
384
401
|
inventory = await trxMgr.getRepository(warehouse_base_1.Inventory).findOne({
|
|
385
402
|
where: {
|
|
386
|
-
domain,
|
|
403
|
+
domain: { id: domain.id },
|
|
387
404
|
bizplace,
|
|
388
405
|
palletId,
|
|
389
406
|
status: (0, typeorm_1.In)([warehouse_base_1.INVENTORY_STATUS.UNLOADED, warehouse_base_1.INVENTORY_STATUS.PUTTING_AWAY]),
|
|
@@ -404,7 +421,7 @@ async function assignInventory(trxMgr, domain, bizplace, user, wsd, refOrder, ta
|
|
|
404
421
|
// In this case, every available inventories are picked by picking worksheet.
|
|
405
422
|
// So target inventories should be found by relation with order inventory which has PICKED status
|
|
406
423
|
let pickedOrdInv = await trxMgr.getRepository(sales_base_1.OrderInventory).find({
|
|
407
|
-
where: { domain, bizplace, releaseGood: refOrder, status: sales_base_1.ORDER_INVENTORY_STATUS.PICKED },
|
|
424
|
+
where: { domain: { id: domain.id }, bizplace, releaseGood: refOrder, status: sales_base_1.ORDER_INVENTORY_STATUS.PICKED },
|
|
408
425
|
relations: ['inventory']
|
|
409
426
|
});
|
|
410
427
|
pickedOrdInv = pickedOrdInv.find((oi) => oi.inventory.palletId === palletId);
|
|
@@ -441,7 +458,8 @@ async function dismissInventory(trxMgr, wsd, targetVas, palletChanges, palletId)
|
|
|
441
458
|
// If there's no more item assigned with current from pallet id
|
|
442
459
|
if (!palletChanges.find((rf) => rf.fromPalletId === palletId)) {
|
|
443
460
|
targetVas.inventory = null;
|
|
444
|
-
const worksheet = await trxMgr.getRepository(entities_1.Worksheet).findOne(
|
|
461
|
+
const worksheet = await trxMgr.getRepository(entities_1.Worksheet).findOne({
|
|
462
|
+
where: { id: wsd.worksheet.id },
|
|
445
463
|
relations: [
|
|
446
464
|
'worksheetDetails',
|
|
447
465
|
'worksheetDetails.targetVas',
|
|
@@ -493,7 +511,7 @@ async function addNewVasTask(targetVas, currentOrderQty, currentOrderUomValue, d
|
|
|
493
511
|
exports.addNewVasTask = addNewVasTask;
|
|
494
512
|
async function upsertInventory(trxMgr, domain, bizplace, user, originInv, refOrder, palletId, locationName, packingType, addedQty, addedUomValue, transactionType, stdAmount, packingUnit) {
|
|
495
513
|
const location = await trxMgr.getRepository(warehouse_base_1.Location).findOne({
|
|
496
|
-
where: { domain, name: locationName },
|
|
514
|
+
where: { domain: { id: domain.id }, name: locationName },
|
|
497
515
|
relations: ['warehouse']
|
|
498
516
|
});
|
|
499
517
|
if (!location)
|
|
@@ -502,7 +520,7 @@ async function upsertInventory(trxMgr, domain, bizplace, user, originInv, refOrd
|
|
|
502
520
|
const zone = location.zone;
|
|
503
521
|
let inv = await trxMgr.getRepository(warehouse_base_1.Inventory).findOne({
|
|
504
522
|
where: {
|
|
505
|
-
domain,
|
|
523
|
+
domain: { id: domain.id },
|
|
506
524
|
bizplace,
|
|
507
525
|
palletId,
|
|
508
526
|
batchId: originInv.batchId,
|
|
@@ -527,7 +545,7 @@ async function upsertInventory(trxMgr, domain, bizplace, user, originInv, refOrd
|
|
|
527
545
|
inv = await trxMgr.getRepository(warehouse_base_1.Inventory).save(inv);
|
|
528
546
|
// Check whether the pallet is resuable or not
|
|
529
547
|
const pallet = await trxMgr.getRepository(warehouse_base_1.Pallet).findOne({
|
|
530
|
-
where: { domain, name: palletId, inventory: (0, typeorm_1.IsNull)() }
|
|
548
|
+
where: { domain: { id: domain.id }, name: palletId, inventory: (0, typeorm_1.IsNull)() }
|
|
531
549
|
});
|
|
532
550
|
// If it's exists => it's reusable pallet and need to update it's inventory field
|
|
533
551
|
if (pallet) {
|
|
@@ -555,7 +573,7 @@ exports.upsertInventory = upsertInventory;
|
|
|
555
573
|
async function deductProductAmount(trxMgr, domain, bizplace, user, refOrder, originInv, reducedQty, reducedUomValue, transactionType, originalQty, originalUomValue, currentUnitQty, currentUomValue) {
|
|
556
574
|
if (refOrder instanceof sales_base_1.ReleaseGood) {
|
|
557
575
|
const loadingWS = await trxMgr.getRepository(entities_1.Worksheet).findOne({
|
|
558
|
-
where: { domain, bizplace, releaseGood: refOrder, type: constants_1.WORKSHEET_TYPE.LOADING },
|
|
576
|
+
where: { domain: { id: domain.id }, bizplace, releaseGood: refOrder, type: constants_1.WORKSHEET_TYPE.LOADING },
|
|
559
577
|
relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']
|
|
560
578
|
});
|
|
561
579
|
if (!loadingWS)
|
|
@@ -633,7 +651,7 @@ async function deductProductAmount(trxMgr, domain, bizplace, user, refOrder, ori
|
|
|
633
651
|
exports.deductProductAmount = deductProductAmount;
|
|
634
652
|
async function createPutawayWorksheet(trxMgr, domain, bizplace, user, refOrder, originInv, changedInv) {
|
|
635
653
|
const putawayWS = await trxMgr.getRepository(entities_1.Worksheet).findOne({
|
|
636
|
-
where: { domain, bizplace, arrivalNotice: refOrder, type: constants_1.WORKSHEET_TYPE.PUTAWAY },
|
|
654
|
+
where: { domain: { id: domain.id }, bizplace, arrivalNotice: refOrder, type: constants_1.WORKSHEET_TYPE.PUTAWAY },
|
|
637
655
|
relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']
|
|
638
656
|
});
|
|
639
657
|
if (!putawayWS) {
|
|
@@ -669,7 +687,7 @@ async function createLoadingWorksheet(trxMgr, domain, bizplace, user, refOrder,
|
|
|
669
687
|
const changedQty = changedInv.qty;
|
|
670
688
|
const changedUomValue = changedInv.uomValue;
|
|
671
689
|
const loadingWS = await trxMgr.getRepository(entities_1.Worksheet).findOne({
|
|
672
|
-
where: { domain, bizplace, releaseGood: refOrder, type: constants_1.WORKSHEET_TYPE.LOADING },
|
|
690
|
+
where: { domain: { id: domain.id }, bizplace, releaseGood: refOrder, type: constants_1.WORKSHEET_TYPE.LOADING },
|
|
673
691
|
relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']
|
|
674
692
|
});
|
|
675
693
|
if (!loadingWS) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-utils.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, Equal, In, IsNull, Not } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n ArrivalNotice,\n ORDER_INVENTORY_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderNoGenerator,\n OrderVas,\n ReleaseGood\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport {\n Inventory,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE,\n InventoryNoGenerator,\n Location,\n Pallet,\n Warehouse\n} from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../../entities'\nimport { generateInventoryHistory, WorksheetNoGenerator } from '../../../../utils'\nimport {\n OperationGuideInterface,\n PackingUnits,\n PalletChangesInterface,\n RefOrderType,\n TemporaryPalletChangesInterface\n} from './interfaces'\n\n/**\n * @description Find worksheet detail by name\n * this function will include every relations with worksheet detail for processing VAS\n *\n * @param {EntityManager} trxMgr\n * @param {Domain} domain\n * @param {String} name\n */\nexport async function getWorksheetDetailByName(\n trxMgr: EntityManager,\n domain: Domain,\n name: string\n): Promise<WorksheetDetail> {\n const worksheetDetail: WorksheetDetail = await trxMgr.getRepository(WorksheetDetail).findOne({\n where: { domain, name },\n relations: [\n 'bizplace',\n 'targetVas',\n 'targetVas.inventory',\n 'targetVas.inventory.product',\n 'targetVas.vas',\n 'targetVas.arrivalNotice',\n 'targetVas.releaseGood',\n 'targetVas.shippingOrder',\n 'targetVas.vasOrder',\n 'targetVas.targetProduct',\n 'worksheet'\n ]\n })\n if (!worksheetDetail) throw new Error(`Couldn't find target worksheet detail`)\n if (!worksheetDetail.targetVas)\n throw new Error(`Couldn't find any related target vas, using current worksheet detail`)\n return worksheetDetail\n}\n\n/**\n * @description Update every related order vas to share same operationGuide data\n *\n * @param {EntityManager} trxMgr\n * @param {Domain} domain\n * @param {Bizplace} bizplace\n * @param {WorksheetDetail} wsd\n * @param {OrderVas} targetVas\n * @param {OperationGuideInterface<T>} operationGuide\n * @param {User} user\n */\nexport async function updateRelatedOrderVas<T>(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n wsd: WorksheetDetail,\n targetVas: OrderVas,\n operationGuide: OperationGuideInterface<T>,\n user: User\n): Promise<OrderVas> {\n const worksheet: Worksheet = wsd.worksheet\n const relatedWSDs: WorksheetDetail[] = await trxMgr.getRepository(WorksheetDetail).find({\n where: { domain, bizplace, worksheet },\n relations: ['targetVas', 'targetVas.vas']\n })\n\n const relatedOVs: OrderVas[] = relatedWSDs\n .map((wsd: WorksheetDetail) => wsd.targetVas)\n .filter((ov: OrderVas) => ov.set === targetVas.set && ov.vas.id === targetVas.vas.id)\n .map((ov: OrderVas) => {\n return {\n ...ov,\n operationGuide: JSON.stringify(operationGuide),\n updater: user\n }\n })\n\n await trxMgr.getRepository(OrderVas).save(relatedOVs)\n}\n\n/**\n * @description Return current amount of pallet\n * @param {PalletChangesInterface[]} palletChanges\n * @param {String} palletId\n */\nexport function getCurrentAmount(\n palletChanges: PalletChangesInterface[],\n palletId: string\n): { qty: number; uomValue: number } {\n return palletChanges\n .filter((pc: PalletChangesInterface) => pc.toPalletId === palletId)\n .reduce(\n (currentAmount: { qty: number; uomValue: number }, pc: PalletChangesInterface) => {\n return {\n qty: currentAmount.qty + pc.reducedQty,\n uomValue: currentAmount.uomValue + pc.reducedUomValue\n }\n },\n { qty: 0, uomValue: 0 }\n )\n}\n\n/**\n * @description Return reduced amount of pallet\n * @param {PalletChangesInterface[]} palletChanges\n * @param {String} palletId\n */\nexport function getReducedAmount(\n palletChanges: PalletChangesInterface[],\n palletId: string\n): { reducedQty: number; reducedUomValue: number } {\n return palletChanges\n .filter((pc: PalletChangesInterface) => pc.fromPalletId === palletId)\n .reduce(\n (reducedAmount: { reducedQty: number; reducedUomValue: number }, pc: PalletChangesInterface) => {\n return {\n reducedQty: reducedAmount.reducedQty + pc.reducedQty || 0,\n reducedUomValue: reducedAmount.reducedUomValue + pc.reducedUomValue || 0\n }\n },\n { reducedQty: 0, reducedUomValue: 0 }\n )\n}\n\n/**\n * @description Get remain qty of inventory or order inventory (For release good case)\n *\n * @param {EntityManager} trxMgr\n * @param {ArrivalNotice | ReleaseGood | VasOrder} refOrder\n * @param {Domain} domain\n * @param {Bizplace} bizplace\n * @param {Inventory} originInv\n * @param {RepackedInvInfo[]} repackedInvs\n * @param {String} palletId\n */\nexport async function getRemainInventoryAmount(\n trxMgr: EntityManager,\n refOrder: RefOrderType,\n domain: Domain,\n bizplace: Bizplace,\n originInv: Inventory,\n palletChanges: PalletChangesInterface[],\n palletId: string\n): Promise<{ remainQty: number; remainUomValue: number }> {\n let remainQty: number = 0\n let remainUomValue: number = 0\n const { reducedQty, reducedUomValue } = getReducedAmount(palletChanges, palletId)\n if (refOrder instanceof ReleaseGood) {\n // Find loading order inventory to figure out uomValue\n const orderInv: OrderInventory = await trxMgr.getRepository(OrderInventory).findOne({\n where: { domain, bizplace, inventory: originInv, releaseGood: refOrder, type: ORDER_TYPES.RELEASE_OF_GOODS }\n })\n\n remainQty = orderInv.releaseQty - reducedQty\n remainUomValue = orderInv.releaseUomValue - reducedUomValue\n } else {\n remainQty = originInv.qty - reducedQty\n remainUomValue = originInv.uomValue - reducedUomValue\n }\n\n if (remainQty <= 0 || remainUomValue <= 0) throw new Error(`There's no more remaining product on the pallet`)\n return { remainQty, remainUomValue }\n}\n\n/** REMARK\n * @farishelmi created temporary function @temporaryGetReducedAmount and\n * @temporaryGetRemainInventoryAmount specifically for @Repackaging\n * - because in repackaging we need to calculate based on unit qty of a product\n * - eg: Carton of 12 Cokes repack into Boxes of 6 Cokes\n * - this function should be merged with its origin once the logic in other vas is updated\n * */\n\nexport function temporaryGetCurrentAmount(\n palletChanges: TemporaryPalletChangesInterface[],\n palletId: string,\n packingUnit: string,\n stdAmount: number\n): { qty: number; uomValue: number } {\n return palletChanges\n .filter((pc: TemporaryPalletChangesInterface) => pc.toPalletId === palletId)\n .reduce(\n (currentAmount: { qty: number; uomValue: number }, pc: TemporaryPalletChangesInterface) => {\n if (packingUnit == PackingUnits.QTY) {\n return {\n qty: currentAmount.qty + pc.reducedUnitQty / stdAmount,\n uomValue: currentAmount.uomValue + pc.reducedUomValue\n }\n } else if (packingUnit == PackingUnits.UOM) {\n return {\n qty: currentAmount.qty + pc.reducedQty,\n uomValue: currentAmount.uomValue + pc.reducedUomValue\n }\n } else {\n return { qty: 0, uomValue: 0 }\n }\n },\n { qty: 0, uomValue: 0 }\n )\n}\n\n/**\n * @description need to consider unit amount because we have packingSize for each packingType\n * @param palletChanges\n * @param palletId\n * @returns reducedUomValue: used for packingUnit == UOM\n * @returns reducedUnitQty: used for packingUnit == QTY\n */\nexport function temporaryGetReducedAmount(\n palletChanges: TemporaryPalletChangesInterface[],\n palletId: string\n): { reducedUomValue: number; reducedUnitQty: number } {\n return palletChanges\n .filter((pc: TemporaryPalletChangesInterface) => pc.fromPalletId === palletId)\n .reduce(\n (\n reducedAmount: {\n reducedUomValue: number\n reducedUnitQty: number\n },\n pc: TemporaryPalletChangesInterface\n ) => {\n return {\n reducedUomValue: reducedAmount.reducedUomValue + pc.reducedUomValue || 0,\n reducedUnitQty: reducedAmount.reducedUnitQty + pc.reducedUnitQty || 0\n }\n },\n { reducedUomValue: 0, reducedUnitQty: 0 }\n )\n}\n\nexport async function temporaryGetRemainInventoryAmount(\n trxMgr: EntityManager,\n refOrder: RefOrderType,\n domain: Domain,\n bizplace: Bizplace,\n originInv: Inventory,\n palletChanges: TemporaryPalletChangesInterface[],\n palletId: string\n): Promise<{ remainUomValue: number; remainUnitQty: number }> {\n let remainUomValue: number = 0\n let remainUnitQty: number = 0\n\n const packingSize: number = originInv.packingSize\n const { reducedUomValue, reducedUnitQty } = temporaryGetReducedAmount(palletChanges, palletId)\n if (refOrder instanceof ReleaseGood) {\n // Find loading order inventory to figure out uomValue\n const orderInv: OrderInventory = await trxMgr.getRepository(OrderInventory).findOne({\n where: { domain, bizplace, inventory: originInv, releaseGood: refOrder, type: ORDER_TYPES.RELEASE_OF_GOODS }\n })\n\n remainUomValue = orderInv.releaseUomValue - reducedUomValue\n remainUnitQty = orderInv.releaseQty * packingSize - reducedUnitQty\n } else {\n remainUomValue = originInv.uomValue - reducedUomValue\n remainUnitQty = originInv.qty * packingSize - reducedUnitQty\n }\n\n if (remainUomValue <= 0 || remainUnitQty <= 0) throw new Error(`There's no more remaining product on the pallet`)\n return { remainUomValue, remainUnitQty }\n}\n\nexport async function updateOriginInventories(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n refOrder: RefOrderType,\n repackedFroms: Partial<TemporaryPalletChangesInterface[]>,\n packingUnit: string,\n transactionType: string\n): Promise<Inventory[]> {\n const inventories: Inventory[] = []\n\n for (let inv of repackedFroms) {\n let foundInventory: Inventory = await trxMgr.getRepository(Inventory).findOne({\n where: { domain, bizplace, palletId: inv.fromPalletId, status: Not(Equal(INVENTORY_STATUS.TERMINATED)) }\n })\n\n if (foundInventory) {\n let repackedPkgQty: number = 0\n let repackedPkgUomValue: number = 0\n\n switch (packingUnit) {\n case PackingUnits.QTY:\n repackedPkgQty = inv.reducedUnitQty / inv.packingSize\n repackedPkgUomValue = inv.reducedUomValue // it should be called reducedUomValue instead. sbb dh kira smua dgn packingsize\n break\n\n case PackingUnits.UOM:\n // repackedPkgQty = inv.reducedQty / inv.packingSize\n // repackedPkgUomValue = rf.reducedUomValue\n break\n }\n\n foundInventory = await trxMgr.getRepository(Inventory).save({\n ...foundInventory,\n qty: repackedPkgQty,\n uomValue: repackedPkgUomValue,\n creator: user,\n updater: user\n })\n\n await generateInventoryHistory(\n foundInventory,\n refOrder,\n transactionType,\n repackedPkgQty,\n repackedPkgUomValue,\n user,\n trxMgr\n )\n\n inventories.push(foundInventory)\n } else {\n throw new Error(`${inv.fromPalletId} is not exist in inventory. Hence, qty cannot be updated.`)\n }\n }\n\n return inventories\n}\n\n//// @farishelmi What is the difference between upsertInventory vs temporaryUpsertInventory? If it is repeated function, kindly remove one of them.\nexport async function temporaryUpsertInventory(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n originInv: Inventory,\n refOrder: RefOrderType,\n palletId: string,\n locationName: string,\n packingType: string,\n addedQty: number,\n addedUomValue: number,\n transactionType: string,\n stdAmount?: number,\n packingUnit?: string\n): Promise<Inventory> {\n const location: Location = await trxMgr.getRepository(Location).findOne({\n where: { domain, name: locationName },\n relations: ['warehouse']\n })\n if (!location) throw new Error(`Location is not found by (${locationName})`)\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n\n let inv: Inventory = await trxMgr.getRepository(Inventory).findOne({\n where: {\n domain,\n bizplace,\n palletId,\n batchId: originInv.batchId,\n product: originInv.product,\n packingType,\n packingSize: stdAmount,\n refOrderId: originInv.refOrderId,\n status: Not(Equal(INVENTORY_STATUS.TERMINATED))\n },\n relations: ['product', 'refInventory']\n })\n\n // Create new inventory\n if (!inv) {\n let newInventory: Inventory = new Inventory()\n\n inv = {\n ...newInventory,\n domain,\n bizplace,\n palletId,\n name: InventoryNoGenerator.inventoryName(),\n packingType,\n qty: addedQty,\n weight: 0,\n uomValue: addedUomValue,\n lockedQty: 0,\n lockedUomValue: 0,\n packingSize: packingUnit == PackingUnits.QTY ? stdAmount : 1,\n warehouse,\n location,\n zone,\n creator: user,\n updater: user\n }\n\n // Save changed inventory\n inv = await trxMgr.getRepository(Inventory).save(inv)\n\n // Check whether the pallet is resuable or not\n const pallet: Pallet = await trxMgr.getRepository(Pallet).findOne({\n where: { domain, name: palletId, inventory: IsNull() }\n })\n // If it's exists => it's reusable pallet and need to update it's inventory field\n if (pallet) {\n pallet.inventory = inv\n pallet.updater = user\n await trxMgr.getRepository(Pallet).save(pallet)\n }\n } else {\n // Update inventory\n inv.qty += addedQty\n inv.uomValue += addedUomValue\n inv.warehouse = warehouse\n inv.location = location\n inv.zone = location.zone\n inv.updater = user\n\n // Save changed inventory\n inv = await trxMgr.getRepository(Inventory).save(inv)\n }\n\n // Create inventory history\n await generateInventoryHistory(inv, refOrder, transactionType, addedQty, addedUomValue, user, trxMgr)\n\n return inv\n}\n\n//// @farishelmi What is the difference between deductProductAmount vs temporaryDeductProductAmount? If it is repeated function, kindly remove one of them.\nexport async function temporaryDeductProductAmount(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n refOrder: RefOrderType,\n originInv: Inventory,\n reducedQty: number,\n reducedUomValue: number,\n transactionType: string,\n originalQty?: number,\n originalUomValue?: number,\n currentUnitQty?: number,\n currentUomValue?: number\n) {\n if (refOrder instanceof ReleaseGood) {\n const loadingWS: Worksheet = await trxMgr.getRepository(Worksheet).findOne({\n where: { domain, bizplace, releaseGood: refOrder, type: WORKSHEET_TYPE.LOADING },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n\n if (!loadingWS)\n throw new Error(\n `Picking process is not finished yet. Please complete picking first before complete Repalletizing`\n )\n\n let orderInv: OrderInventory = loadingWS.worksheetDetails\n .map((wsd: WorksheetDetail) => wsd.targetInventory)\n .find((oi: OrderInventory) => oi.inventory.id === originInv.id)\n if (!orderInv) {\n throw new Error(`Failed to find order inventory (Pallet ID: ${originInv.palletId})`)\n }\n\n orderInv.releaseQty -= reducedQty\n orderInv.releaseUomValue -= reducedUomValue\n orderInv.updater = user\n\n await trxMgr.getRepository(OrderInventory).save(orderInv)\n } else {\n // currentUnitQty > 0 only belongs to PackingUnits.QTY\n if (currentUnitQty > 0) {\n const unitUomValue: number = originInv.uomValue / originInv.qty\n\n reducedQty = Math.floor((originalQty * originInv.packingSize - currentUnitQty) / originInv.packingSize)\n reducedUomValue = unitUomValue * reducedQty\n\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= originalQty\n originInv.lockedUomValue -= originalUomValue\n originInv.updater = user\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n\n // minus 1 because remain unit qty only exist if the unitQty < 1\n if (originInv.qty - 1 == 0) {\n originInv.status = INVENTORY_STATUS.TERMINATED\n originInv.qty = 0\n originInv.uomValue = 0\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -1, -unitUomValue, user, trxMgr)\n\n const newQty: number = currentUnitQty\n const newUomValue: number = (unitUomValue / originInv.packingSize) * newQty\n\n originInv.qty = newQty\n originInv.uomValue = newUomValue\n originInv.packingSize = 1\n originInv.status = INVENTORY_STATUS.STORED\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, newQty, newUomValue, user, trxMgr)\n }\n\n // currentUnitUomValue > 0 only belongs to PackingUnits.QTY\n } else if (currentUomValue > 0) {\n reducedUomValue = Math.round((originalUomValue - currentUomValue + Number.EPSILON) * 100) / 100\n\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= originalQty\n originInv.lockedUomValue -= originalUomValue\n originInv.updater = user\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n } else {\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= originalQty\n originInv.lockedUomValue -= originalUomValue\n originInv.updater = user\n originInv.status = originInv.qty > 0 ? INVENTORY_STATUS.STORED : INVENTORY_STATUS.TERMINATED\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n\n if (originInv.qty <= 0 || originInv.uomValue <= 0) {\n originInv.status = INVENTORY_STATUS.TERMINATED\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, INVENTORY_TRANSACTION_TYPE.TERMINATED, 0, 0, user, trxMgr)\n }\n }\n }\n\n return originInv\n}\n\n/**\n * @description Assign inventory to targetVas\n * When Vas order comes together with Arrival Notice or Release Good\n * The vas worksheet is activated automatically by to complete unloading/picking worksheet.\n * As a result user can't activate it manually, which means no assignment for every specific vas tasks.\n * For this case inventory should be assigned while processing the VAS Order.\n */\nexport async function assignInventory(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n wsd: WorksheetDetail,\n refOrder: ArrivalNotice | ReleaseGood,\n targetVas: OrderVas,\n palletId: string\n): Promise<OrderVas> {\n let inventory: Inventory\n\n if (refOrder instanceof ArrivalNotice) {\n // Case 1. When the VAS Order comes with Arrival Notice\n inventory = await trxMgr.getRepository(Inventory).findOne({\n where: {\n domain,\n bizplace,\n palletId,\n status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.PUTTING_AWAY]),\n refOrderId: refOrder.id\n }\n })\n if (!inventory) throw new Error(`Counldn't find unloaded inventory by pallet ID: (${palletId})`)\n\n // Check current inventory has enough qty of product to complete this target vas.\n if (targetVas.qty > inventory.qty) {\n // If it doesn't have enough, Need to create new worksheet detail and target vas without inventory assignment\n // So the user can proceed it with another inventory\n targetVas = await addNewVasTask(targetVas, inventory.qty, inventory.uomValue, domain, bizplace, user, trxMgr, wsd)\n }\n } else if (refOrder instanceof ReleaseGood) {\n // Case 2. When the VAS Order comes with Release Good\n // In this case, every available inventories are picked by picking worksheet.\n // So target inventories should be found by relation with order inventory which has PICKED status\n let pickedOrdInv: OrderInventory = await trxMgr.getRepository(OrderInventory).find({\n where: { domain, bizplace, releaseGood: refOrder, status: ORDER_INVENTORY_STATUS.PICKED },\n relations: ['inventory']\n })\n pickedOrdInv = pickedOrdInv.find((oi: OrderInventory) => oi.inventory.palletId === palletId)\n inventory = pickedOrdInv?.inventory\n if (!inventory) throw new Error(`Couldn't find picked inventory by pallet ID: ${palletId}`)\n\n // Check current target inventory (picked inventory) has enough qty of product to complete this target vas.\n // And available qty of products also restriced by picking. (Because customer requests do some vas for Release Order)\n if (targetVas.qty > pickedOrdInv.releaseQty) {\n // If it doesn't have enough, Need to create new worksheet detail and target vas without inventory assignment\n // So the user can proceed it with another inventory\n targetVas = await addNewVasTask(\n targetVas,\n pickedOrdInv.releaseQty,\n pickedOrdInv.releaseUomValue,\n domain,\n bizplace,\n user,\n trxMgr,\n wsd\n )\n }\n } else {\n throw new Error(`Reference Order (${refOrder.name}) is not expected.`)\n }\n\n targetVas.inventory = inventory\n targetVas.updater = user\n return await trxMgr.getRepository(OrderVas).save(targetVas)\n}\n\n/**\n * Dismiss assigne inventory when user click undo to remove\n * proceed pallet for relabel, repack, repack\n *\n * @param {EntityManager} trxMgr\n * @param {WorksheetDetail} wsd\n * @param {OrderVas} targetVas\n * @param {PalletChangesInterface[]} palletChanges\n * @param {String} palletId\n */\nexport async function dismissInventory(\n trxMgr: EntityManager,\n wsd: WorksheetDetail,\n targetVas: OrderVas,\n palletChanges: PalletChangesInterface[],\n palletId: string\n) {\n // If there's no more item assigned with current from pallet id\n if (!palletChanges.find((rf: PalletChangesInterface) => rf.fromPalletId === palletId)) {\n targetVas.inventory = null\n const worksheet: Worksheet = await trxMgr.getRepository(Worksheet).findOne(wsd.worksheet.id, {\n relations: [\n 'worksheetDetails',\n 'worksheetDetails.targetVas',\n 'worksheetDetails.targetVas.vas',\n 'worksheetDetails.targetVas.inventory'\n ]\n })\n\n const nonFinishedWSD: WorksheetDetail = worksheet.worksheetDetails.find(\n (otherWSD: WorksheetDetail) =>\n otherWSD.id !== wsd.id &&\n otherWSD.targetVas.set === wsd.targetVas.set &&\n otherWSD.targetVas.vas.id === wsd.targetVas.vas.id &&\n otherWSD.status !== WORKSHEET_STATUS.DONE\n )\n\n if (nonFinishedWSD) {\n // If there non finished same VAS, delete undo target record (worksheet detail & order vas)\n // Add qty and uomValue for non finished vas task\n await trxMgr.getRepository(WorksheetDetail).delete(wsd.id)\n await trxMgr.getRepository(OrderVas).delete(targetVas.id)\n\n nonFinishedWSD.targetVas.qty += targetVas.qty\n nonFinishedWSD.targetVas.uomValue += targetVas.uomValue\n await trxMgr.getRepository(OrderVas).save(nonFinishedWSD.targetVas)\n } else {\n // If there no non finished same VAS, dismiss inventory for the record\n targetVas.inventory = null\n await trxMgr.getRepository(OrderVas).save(wsd.targetVas)\n }\n }\n}\n\n/**\n * @description Create nw VAS Worksheet Detail & Order Vas\n * Without inventory assignment\n */\nexport async function addNewVasTask(\n targetVas: OrderVas,\n currentOrderQty: number,\n currentOrderUomValue: number,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n trxMgr: EntityManager,\n wsd: WorksheetDetail\n): Promise<OrderVas> {\n // Create new order vas & worksheet detail\n const copiedTargetVas: OrderVas = Object.assign({}, targetVas)\n delete copiedTargetVas.id\n\n let newTargetVas: OrderVas = {\n ...copiedTargetVas,\n domain,\n bizplace,\n name: OrderNoGenerator.orderVas(),\n qty: targetVas.qty - currentOrderQty,\n uomValue: targetVas.uomValue - currentOrderUomValue,\n creator: user,\n updater: user\n }\n newTargetVas = await trxMgr.getRepository(OrderVas).save(newTargetVas)\n\n const copiedWSD: WorksheetDetail = Object.assign({}, wsd)\n delete copiedWSD.id\n\n const newWSD: WorksheetDetail = {\n ...copiedWSD,\n domain,\n bizplace,\n name: WorksheetNoGenerator.vasDetail(),\n seq: wsd.seq++,\n targetVas: newTargetVas,\n creator: user,\n updater: user\n }\n await trxMgr.getRepository(WorksheetDetail).save(newWSD)\n\n targetVas.qty = currentOrderQty\n targetVas.uomValue = currentOrderUomValue\n return targetVas\n}\n\nexport async function upsertInventory(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n originInv: Inventory,\n refOrder: RefOrderType,\n palletId: string,\n locationName: string,\n packingType: string,\n addedQty: number,\n addedUomValue: number,\n transactionType: string,\n stdAmount?: number,\n packingUnit?: string\n): Promise<Inventory> {\n const location: Location = await trxMgr.getRepository(Location).findOne({\n where: { domain, name: locationName },\n relations: ['warehouse']\n })\n if (!location) throw new Error(`Location is not found by (${locationName})`)\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n\n let inv: Inventory = await trxMgr.getRepository(Inventory).findOne({\n where: {\n domain,\n bizplace,\n palletId,\n batchId: originInv.batchId,\n product: originInv.product,\n packingType,\n packingSize: stdAmount,\n refOrderId: originInv.refOrderId,\n status: Not(Equal(INVENTORY_STATUS.TERMINATED))\n },\n relations: ['product', 'refInventory']\n })\n\n // Create new inventory\n if (!inv) {\n const copiedInv: Inventory = Object.assign({}, originInv)\n delete copiedInv.id\n\n inv = {\n ...copiedInv,\n domain,\n bizplace,\n palletId,\n name: InventoryNoGenerator.inventoryName(),\n packingType,\n qty: addedQty,\n weight: 0,\n uomValue: addedUomValue,\n lockedQty: 0,\n lockedUomValue: 0,\n packingSize: packingUnit == PackingUnits.QTY ? stdAmount : 1,\n warehouse,\n location,\n zone,\n creator: user,\n updater: user\n }\n\n // Save changed inventory\n inv = await trxMgr.getRepository(Inventory).save(inv)\n\n // Check whether the pallet is resuable or not\n const pallet: Pallet = await trxMgr.getRepository(Pallet).findOne({\n where: { domain, name: palletId, inventory: IsNull() }\n })\n // If it's exists => it's reusable pallet and need to update it's inventory field\n if (pallet) {\n pallet.inventory = inv\n pallet.updater = user\n await trxMgr.getRepository(Pallet).save(pallet)\n }\n } else {\n // Update inventory\n inv.qty += addedQty\n inv.uomValue += addedUomValue\n inv.warehouse = warehouse\n inv.location = location\n inv.zone = location.zone\n inv.updater = user\n\n // Save changed inventory\n inv = await trxMgr.getRepository(Inventory).save(inv)\n }\n\n // Create inventory history\n await generateInventoryHistory(inv, refOrder, transactionType, addedQty, addedUomValue, user, trxMgr)\n\n return inv\n}\n\nexport async function deductProductAmount(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n refOrder: RefOrderType,\n originInv: Inventory,\n reducedQty: number,\n reducedUomValue: number,\n transactionType: string,\n originalQty?: number,\n originalUomValue?: number,\n currentUnitQty?: number,\n currentUomValue?: number\n) {\n if (refOrder instanceof ReleaseGood) {\n const loadingWS: Worksheet = await trxMgr.getRepository(Worksheet).findOne({\n where: { domain, bizplace, releaseGood: refOrder, type: WORKSHEET_TYPE.LOADING },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n\n if (!loadingWS)\n throw new Error(\n `Picking process is not finished yet. Please complete picking first before complete Repalletizing`\n )\n\n const orderInv: OrderInventory = loadingWS.worksheetDetails\n .map((wsd: WorksheetDetail) => wsd.targetInventory)\n .find((oi: OrderInventory) => oi.inventory.id === originInv.id)\n if (!orderInv) {\n throw new Error(`Failed to find order inventory (Pallet ID: ${originInv.palletId})`)\n }\n\n orderInv.releaseQty -= reducedQty\n orderInv.releaseUomValue -= reducedUomValue\n orderInv.updater = user\n\n await trxMgr.getRepository(OrderInventory).save(orderInv)\n } else {\n // currentUnitQty > 0 only belongs to PackingUnits.QTY\n if (currentUnitQty > 0) {\n const unitUomValue: number = originInv.uomValue / originInv.qty\n\n reducedQty = Math.floor((originalQty * originInv.packingSize - currentUnitQty) / originInv.packingSize)\n reducedUomValue = unitUomValue * reducedQty\n\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= reducedQty\n originInv.lockedUomValue -= reducedUomValue\n originInv.updater = user\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n\n // minus 1 because remain unit qty only exist if the unitQty < 1\n if (originInv.qty - 1 == 0) {\n originInv.status = INVENTORY_STATUS.TERMINATED\n originInv.qty = 0\n originInv.uomValue = 0\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -1, -unitUomValue, user, trxMgr)\n\n const newQty: number = currentUnitQty\n const newUomValue: number = (unitUomValue / originInv.packingSize) * newQty\n\n originInv.qty = newQty\n originInv.uomValue = newUomValue\n originInv.packingSize = 1\n originInv.status = INVENTORY_STATUS.STORED\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, newQty, newUomValue, user, trxMgr)\n }\n\n // currentUnitUomValue > 0 only belongs to PackingUnits.UOM\n } else if (currentUomValue > 0) {\n reducedUomValue = Math.round((originalUomValue - currentUomValue + Number.EPSILON) * 100) / 100\n\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= reducedQty\n originInv.lockedUomValue -= reducedUomValue\n originInv.updater = user\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n } else {\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= reducedQty\n originInv.lockedUomValue -= reducedUomValue\n originInv.updater = user\n originInv.status = originInv.qty > 0 ? INVENTORY_STATUS.STORED : INVENTORY_STATUS.TERMINATED\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n\n if (originInv.qty <= 0 || originInv.uomValue <= 0) {\n originInv.status = INVENTORY_STATUS.TERMINATED\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, INVENTORY_TRANSACTION_TYPE.TERMINATED, 0, 0, user, trxMgr)\n }\n }\n }\n\n return originInv\n}\n\nexport async function createPutawayWorksheet(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n refOrder: ArrivalNotice,\n originInv: Inventory,\n changedInv: Inventory\n): Promise<void> {\n const putawayWS: Worksheet = await trxMgr.getRepository(Worksheet).findOne({\n where: { domain, bizplace, arrivalNotice: refOrder, type: WORKSHEET_TYPE.PUTAWAY },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n\n if (!putawayWS) {\n throw new Error(\n `Unloading process is not finished yet. Please complete unloading first before complete Repalletizing`\n )\n }\n const putawayWSDs: WorksheetDetail[] = putawayWS.worksheetDetails\n\n const originalWSD: WorksheetDetail = putawayWSDs.find(\n (wsd: WorksheetDetail) => wsd.targetInventory.inventory.id === originInv.id\n )\n const originOrdInv: OrderInventory = originalWSD.targetInventory\n const sameTargetWSD: WorksheetDetail = putawayWSDs.find(\n (wsd: WorksheetDetail) => wsd.targetInventory.inventory.id === changedInv.id\n )\n\n if (!sameTargetWSD) {\n // Create new order inventory\n const copiedOrdInv: OrderInventory = Object.assign({}, originOrdInv)\n delete copiedOrdInv.id\n\n let newOrdInv: OrderInventory = {\n ...copiedOrdInv,\n domain,\n bizplace,\n name: OrderNoGenerator.orderInventory(),\n type: ORDER_TYPES.ARRIVAL_NOTICE,\n arrivalNotice: refOrder,\n inventory: changedInv,\n creator: user,\n updater: user\n }\n newOrdInv = await trxMgr.getRepository(OrderInventory).save(newOrdInv)\n\n const copiedWSD: WorksheetDetail = Object.assign({}, originalWSD)\n delete copiedWSD.id\n\n let newWSD: WorksheetDetail = {\n ...copiedWSD,\n domain,\n bizplace,\n worksheet: putawayWS,\n name: WorksheetNoGenerator.putawayDetail(),\n targetInventory: newOrdInv,\n type: WORKSHEET_TYPE.PUTAWAY,\n creator: user,\n updater: user\n }\n newWSD = await trxMgr.getRepository(WorksheetDetail).save(newWSD)\n }\n\n // Update origin order inventory\n if (originInv.status === INVENTORY_STATUS.TERMINATED) {\n await trxMgr.getRepository(WorksheetDetail).delete(originalWSD.id)\n\n originOrdInv.status = ORDER_INVENTORY_STATUS.DONE\n originOrdInv.updater = user\n await trxMgr.getRepository(OrderInventory).save(originOrdInv)\n }\n}\n\nexport async function createLoadingWorksheet(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n refOrder: ReleaseGood,\n originInv: OrderInventory,\n changedInv: Inventory\n): Promise<void> {\n const changedQty: number = changedInv.qty\n const changedUomValue: number = changedInv.uomValue\n const loadingWS: Worksheet = await trxMgr.getRepository(Worksheet).findOne({\n where: { domain, bizplace, releaseGood: refOrder, type: WORKSHEET_TYPE.LOADING },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n\n if (!loadingWS) {\n throw new Error(`Picking process is not finished yet. Please complete picking first before complete Repalletizing`)\n }\n\n const loadingWSDs: WorksheetDetail[] = loadingWS.worksheetDetails\n\n const originalWSD: WorksheetDetail = loadingWSDs.find(\n (wsd: WorksheetDetail) => wsd.targetInventory.inventory.id === originInv.id\n )\n const originOrdInv: OrderInventory = originalWSD.targetInventory\n const sameTargetWSD: WorksheetDetail = loadingWSDs.find((wsd: WorksheetDetail) => {\n const targetOI: OrderInventory = wsd.targetInventory\n const targetInv: Inventory = targetOI.inventory\n const targetUnitUomValue: number = targetOI.releaseUomValue / targetOI.releaseQty\n const changeUnitUomValue: number = changedUomValue / changedQty\n\n if (\n targetInv.palletId === changedInv.palletId &&\n targetInv.batchId === changedInv.batchId &&\n targetInv.packingType === changedInv.packingType &&\n targetUnitUomValue === changeUnitUomValue\n ) {\n return wsd\n }\n })\n\n if (!sameTargetWSD) {\n // Create new order inventory\n const copiedOrderInv: OrderInventory = Object.assign({}, originOrdInv)\n delete copiedOrderInv.id\n\n let newOrdInv: OrderInventory = await trxMgr.getRepository(OrderInventory).save({\n ...copiedOrderInv,\n domain,\n bizplace,\n releaseQty: changedQty,\n releaseUomValue: changedUomValue,\n name: OrderNoGenerator.orderInventory(),\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n releaseGood: refOrder,\n inventory: changedInv,\n creator: user,\n updater: user\n })\n newOrdInv = await trxMgr.getRepository(OrderInventory).save(newOrdInv)\n\n const copiedWSD: WorksheetDetail = Object.assign({}, originalWSD)\n delete copiedWSD.id\n\n let newWSD: WorksheetDetail = {\n ...copiedWSD,\n domain,\n bizplace,\n worksheet: loadingWS,\n name: WorksheetNoGenerator.loadingDetail(),\n targetInventory: newOrdInv,\n type: WORKSHEET_TYPE.LOADING,\n creator: user,\n updater: user\n }\n await trxMgr.getRepository(WorksheetDetail).save(newWSD)\n } else {\n let sameTargetInv: OrderInventory = sameTargetWSD.targetInventory\n sameTargetInv.releaseQty += changedQty\n sameTargetInv.releaseUomValue += changedUomValue\n sameTargetInv.updater = user\n await trxMgr.getRepository(OrderInventory).save(sameTargetInv)\n }\n\n // Update inventory to PICKED inventory\n changedInv = await trxMgr.getRepository(Inventory).save({\n ...changedInv,\n qty: changedInv.qty - changedQty,\n uomValue: changedInv.uomValue - changedUomValue,\n updater: user\n })\n\n // Generate PICKING inventory history\n await generateInventoryHistory(\n changedInv,\n refOrder,\n INVENTORY_TRANSACTION_TYPE.PICKING,\n -changedQty,\n -changedUomValue,\n user,\n trxMgr\n )\n\n // Generate TERMINATED inventory history\n await generateInventoryHistory(changedInv, refOrder, INVENTORY_TRANSACTION_TYPE.TERMINATED, 0, 0, user, trxMgr)\n\n // Delete worksheet detail & order inventory\n // If order inventory doesn't have release qty any more\n if (originOrdInv.releaseQty <= 0) {\n await trxMgr.getRepository(WorksheetDetail).delete(originalWSD.id)\n originInv.status = ORDER_INVENTORY_STATUS.DONE\n originInv.updater = user\n await trxMgr.getRepository(OrderInventory).save(originInv)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"common-utils.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, Equal, In, IsNull, Not } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n ArrivalNotice,\n ORDER_INVENTORY_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderNoGenerator,\n OrderVas,\n ReleaseGood\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport {\n Inventory,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE,\n InventoryNoGenerator,\n Location,\n Pallet,\n Warehouse\n} from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../../entities'\nimport { generateInventoryHistory, WorksheetNoGenerator } from '../../../../utils'\nimport {\n OperationGuideInterface,\n PackingUnits,\n PalletChangesInterface,\n RefOrderType,\n TemporaryPalletChangesInterface\n} from './interfaces'\n\n/**\n * @description Find worksheet detail by name\n * this function will include every relations with worksheet detail for processing VAS\n *\n * @param {EntityManager} trxMgr\n * @param {Domain} domain\n * @param {String} name\n */\nexport async function getWorksheetDetailByName(\n trxMgr: EntityManager,\n domain: Domain,\n name: string\n): Promise<WorksheetDetail> {\n const worksheetDetail: WorksheetDetail = await trxMgr.getRepository(WorksheetDetail).findOne({\n where: { domain: { id: domain.id }, name },\n relations: [\n 'bizplace',\n 'targetVas',\n 'targetVas.inventory',\n 'targetVas.inventory.product',\n 'targetVas.vas',\n 'targetVas.arrivalNotice',\n 'targetVas.releaseGood',\n 'targetVas.shippingOrder',\n 'targetVas.vasOrder',\n 'targetVas.targetProduct',\n 'worksheet'\n ]\n })\n if (!worksheetDetail) throw new Error(`Couldn't find target worksheet detail`)\n if (!worksheetDetail.targetVas)\n throw new Error(`Couldn't find any related target vas, using current worksheet detail`)\n return worksheetDetail\n}\n\n/**\n * @description Update every related order vas to share same operationGuide data\n *\n * @param {EntityManager} trxMgr\n * @param {Domain} domain\n * @param {Bizplace} bizplace\n * @param {WorksheetDetail} wsd\n * @param {OrderVas} targetVas\n * @param {OperationGuideInterface<T>} operationGuide\n * @param {User} user\n */\nexport async function updateRelatedOrderVas<T>(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n wsd: WorksheetDetail,\n targetVas: OrderVas,\n operationGuide: OperationGuideInterface<T>,\n user: User\n): Promise<OrderVas> {\n const worksheet: Worksheet = wsd.worksheet\n const relatedWSDs: WorksheetDetail[] = await trxMgr.getRepository(WorksheetDetail).find({\n where: { domain: { id: domain.id }, bizplace: { id: bizplace.id }, worksheet: { id: worksheet.id } },\n relations: ['targetVas', 'targetVas.vas']\n })\n\n const relatedOVs: OrderVas[] = relatedWSDs\n .map((wsd: WorksheetDetail) => wsd.targetVas)\n .filter((ov: OrderVas) => ov.set === targetVas.set && ov.vas.id === targetVas.vas.id)\n .map((ov: OrderVas) => {\n return {\n ...ov,\n operationGuide: JSON.stringify(operationGuide),\n updater: user\n }\n })\n\n await trxMgr.getRepository(OrderVas).save(relatedOVs)\n}\n\n/**\n * @description Return current amount of pallet\n * @param {PalletChangesInterface[]} palletChanges\n * @param {String} palletId\n */\nexport function getCurrentAmount(\n palletChanges: PalletChangesInterface[],\n palletId: string\n): { qty: number; uomValue: number } {\n return palletChanges\n .filter((pc: PalletChangesInterface) => pc.toPalletId === palletId)\n .reduce(\n (currentAmount: { qty: number; uomValue: number }, pc: PalletChangesInterface) => {\n return {\n qty: currentAmount.qty + pc.reducedQty,\n uomValue: currentAmount.uomValue + pc.reducedUomValue\n }\n },\n { qty: 0, uomValue: 0 }\n )\n}\n\n/**\n * @description Return reduced amount of pallet\n * @param {PalletChangesInterface[]} palletChanges\n * @param {String} palletId\n */\nexport function getReducedAmount(\n palletChanges: PalletChangesInterface[],\n palletId: string\n): { reducedQty: number; reducedUomValue: number } {\n return palletChanges\n .filter((pc: PalletChangesInterface) => pc.fromPalletId === palletId)\n .reduce(\n (reducedAmount: { reducedQty: number; reducedUomValue: number }, pc: PalletChangesInterface) => {\n return {\n reducedQty: reducedAmount.reducedQty + pc.reducedQty || 0,\n reducedUomValue: reducedAmount.reducedUomValue + pc.reducedUomValue || 0\n }\n },\n { reducedQty: 0, reducedUomValue: 0 }\n )\n}\n\n/**\n * @description Get remain qty of inventory or order inventory (For release good case)\n *\n * @param {EntityManager} trxMgr\n * @param {ArrivalNotice | ReleaseGood | VasOrder} refOrder\n * @param {Domain} domain\n * @param {Bizplace} bizplace\n * @param {Inventory} originInv\n * @param {RepackedInvInfo[]} repackedInvs\n * @param {String} palletId\n */\nexport async function getRemainInventoryAmount(\n trxMgr: EntityManager,\n refOrder: RefOrderType,\n domain: Domain,\n bizplace: Bizplace,\n originInv: Inventory,\n palletChanges: PalletChangesInterface[],\n palletId: string\n): Promise<{ remainQty: number; remainUomValue: number }> {\n let remainQty: number = 0\n let remainUomValue: number = 0\n const { reducedQty, reducedUomValue } = getReducedAmount(palletChanges, palletId)\n if (refOrder instanceof ReleaseGood) {\n // Find loading order inventory to figure out uomValue\n const orderInv: OrderInventory = await trxMgr.getRepository(OrderInventory).findOne({\n where: {\n domain: { id: domain.id },\n bizplace,\n inventory: originInv,\n releaseGood: refOrder,\n type: ORDER_TYPES.RELEASE_OF_GOODS\n }\n })\n\n remainQty = orderInv.releaseQty - reducedQty\n remainUomValue = orderInv.releaseUomValue - reducedUomValue\n } else {\n remainQty = originInv.qty - reducedQty\n remainUomValue = originInv.uomValue - reducedUomValue\n }\n\n if (remainQty <= 0 || remainUomValue <= 0) throw new Error(`There's no more remaining product on the pallet`)\n return { remainQty, remainUomValue }\n}\n\n/** REMARK\n * @farishelmi created temporary function @temporaryGetReducedAmount and\n * @temporaryGetRemainInventoryAmount specifically for @Repackaging\n * - because in repackaging we need to calculate based on unit qty of a product\n * - eg: Carton of 12 Cokes repack into Boxes of 6 Cokes\n * - this function should be merged with its origin once the logic in other vas is updated\n * */\n\nexport function temporaryGetCurrentAmount(\n palletChanges: TemporaryPalletChangesInterface[],\n palletId: string,\n packingUnit: string,\n stdAmount: number\n): { qty: number; uomValue: number } {\n return palletChanges\n .filter((pc: TemporaryPalletChangesInterface) => pc.toPalletId === palletId)\n .reduce(\n (currentAmount: { qty: number; uomValue: number }, pc: TemporaryPalletChangesInterface) => {\n if (packingUnit == PackingUnits.QTY) {\n return {\n qty: currentAmount.qty + pc.reducedUnitQty / stdAmount,\n uomValue: currentAmount.uomValue + pc.reducedUomValue\n }\n } else if (packingUnit == PackingUnits.UOM) {\n return {\n qty: currentAmount.qty + pc.reducedQty,\n uomValue: currentAmount.uomValue + pc.reducedUomValue\n }\n } else {\n return { qty: 0, uomValue: 0 }\n }\n },\n { qty: 0, uomValue: 0 }\n )\n}\n\n/**\n * @description need to consider unit amount because we have packingSize for each packingType\n * @param palletChanges\n * @param palletId\n * @returns reducedUomValue: used for packingUnit == UOM\n * @returns reducedUnitQty: used for packingUnit == QTY\n */\nexport function temporaryGetReducedAmount(\n palletChanges: TemporaryPalletChangesInterface[],\n palletId: string\n): { reducedUomValue: number; reducedUnitQty: number } {\n return palletChanges\n .filter((pc: TemporaryPalletChangesInterface) => pc.fromPalletId === palletId)\n .reduce(\n (\n reducedAmount: {\n reducedUomValue: number\n reducedUnitQty: number\n },\n pc: TemporaryPalletChangesInterface\n ) => {\n return {\n reducedUomValue: reducedAmount.reducedUomValue + pc.reducedUomValue || 0,\n reducedUnitQty: reducedAmount.reducedUnitQty + pc.reducedUnitQty || 0\n }\n },\n { reducedUomValue: 0, reducedUnitQty: 0 }\n )\n}\n\nexport async function temporaryGetRemainInventoryAmount(\n trxMgr: EntityManager,\n refOrder: RefOrderType,\n domain: Domain,\n bizplace: Bizplace,\n originInv: Inventory,\n palletChanges: TemporaryPalletChangesInterface[],\n palletId: string\n): Promise<{ remainUomValue: number; remainUnitQty: number }> {\n let remainUomValue: number = 0\n let remainUnitQty: number = 0\n\n const packingSize: number = originInv.packingSize\n const { reducedUomValue, reducedUnitQty } = temporaryGetReducedAmount(palletChanges, palletId)\n if (refOrder instanceof ReleaseGood) {\n // Find loading order inventory to figure out uomValue\n const orderInv: OrderInventory = await trxMgr.getRepository(OrderInventory).findOne({\n where: {\n domain: { id: domain.id },\n bizplace,\n inventory: originInv,\n releaseGood: refOrder,\n type: ORDER_TYPES.RELEASE_OF_GOODS\n }\n })\n\n remainUomValue = orderInv.releaseUomValue - reducedUomValue\n remainUnitQty = orderInv.releaseQty * packingSize - reducedUnitQty\n } else {\n remainUomValue = originInv.uomValue - reducedUomValue\n remainUnitQty = originInv.qty * packingSize - reducedUnitQty\n }\n\n if (remainUomValue <= 0 || remainUnitQty <= 0) throw new Error(`There's no more remaining product on the pallet`)\n return { remainUomValue, remainUnitQty }\n}\n\nexport async function updateOriginInventories(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n refOrder: RefOrderType,\n repackedFroms: Partial<TemporaryPalletChangesInterface[]>,\n packingUnit: string,\n transactionType: string\n): Promise<Inventory[]> {\n const inventories: Inventory[] = []\n\n for (let inv of repackedFroms) {\n let foundInventory: Inventory = await trxMgr.getRepository(Inventory).findOne({\n where: {\n domain: { id: domain.id },\n bizplace,\n palletId: inv.fromPalletId,\n status: Not(Equal(INVENTORY_STATUS.TERMINATED))\n }\n })\n\n if (foundInventory) {\n let repackedPkgQty: number = 0\n let repackedPkgUomValue: number = 0\n\n switch (packingUnit) {\n case PackingUnits.QTY:\n repackedPkgQty = inv.reducedUnitQty / inv.packingSize\n repackedPkgUomValue = inv.reducedUomValue // it should be called reducedUomValue instead. sbb dh kira smua dgn packingsize\n break\n\n case PackingUnits.UOM:\n // repackedPkgQty = inv.reducedQty / inv.packingSize\n // repackedPkgUomValue = rf.reducedUomValue\n break\n }\n\n foundInventory = await trxMgr.getRepository(Inventory).save({\n ...foundInventory,\n qty: repackedPkgQty,\n uomValue: repackedPkgUomValue,\n creator: user,\n updater: user\n })\n\n await generateInventoryHistory(\n foundInventory,\n refOrder,\n transactionType,\n repackedPkgQty,\n repackedPkgUomValue,\n user,\n trxMgr\n )\n\n inventories.push(foundInventory)\n } else {\n throw new Error(`${inv.fromPalletId} is not exist in inventory. Hence, qty cannot be updated.`)\n }\n }\n\n return inventories\n}\n\n//// @farishelmi What is the difference between upsertInventory vs temporaryUpsertInventory? If it is repeated function, kindly remove one of them.\nexport async function temporaryUpsertInventory(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n originInv: Inventory,\n refOrder: RefOrderType,\n palletId: string,\n locationName: string,\n packingType: string,\n addedQty: number,\n addedUomValue: number,\n transactionType: string,\n stdAmount?: number,\n packingUnit?: string\n): Promise<Inventory> {\n const location: Location = await trxMgr.getRepository(Location).findOne({\n where: { domain: { id: domain.id }, name: locationName },\n relations: ['warehouse']\n })\n if (!location) throw new Error(`Location is not found by (${locationName})`)\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n\n let inv: Inventory = await trxMgr.getRepository(Inventory).findOne({\n where: {\n domain: { id: domain.id },\n bizplace,\n palletId,\n batchId: originInv.batchId,\n product: originInv.product,\n packingType,\n packingSize: stdAmount,\n refOrderId: originInv.refOrderId,\n status: Not(Equal(INVENTORY_STATUS.TERMINATED))\n },\n relations: ['product', 'refInventory']\n })\n\n // Create new inventory\n if (!inv) {\n let newInventory: Inventory = new Inventory()\n\n inv = {\n ...newInventory,\n domain,\n bizplace,\n palletId,\n name: InventoryNoGenerator.inventoryName(),\n packingType,\n qty: addedQty,\n weight: 0,\n uomValue: addedUomValue,\n lockedQty: 0,\n lockedUomValue: 0,\n packingSize: packingUnit == PackingUnits.QTY ? stdAmount : 1,\n warehouse,\n location,\n zone,\n creator: user,\n updater: user\n }\n\n // Save changed inventory\n inv = await trxMgr.getRepository(Inventory).save(inv)\n\n // Check whether the pallet is resuable or not\n const pallet: Pallet = await trxMgr.getRepository(Pallet).findOne({\n where: { domain: { id: domain.id }, name: palletId, inventory: IsNull() }\n })\n // If it's exists => it's reusable pallet and need to update it's inventory field\n if (pallet) {\n pallet.inventory = inv\n pallet.updater = user\n await trxMgr.getRepository(Pallet).save(pallet)\n }\n } else {\n // Update inventory\n inv.qty += addedQty\n inv.uomValue += addedUomValue\n inv.warehouse = warehouse\n inv.location = location\n inv.zone = location.zone\n inv.updater = user\n\n // Save changed inventory\n inv = await trxMgr.getRepository(Inventory).save(inv)\n }\n\n // Create inventory history\n await generateInventoryHistory(inv, refOrder, transactionType, addedQty, addedUomValue, user, trxMgr)\n\n return inv\n}\n\n//// @farishelmi What is the difference between deductProductAmount vs temporaryDeductProductAmount? If it is repeated function, kindly remove one of them.\nexport async function temporaryDeductProductAmount(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n refOrder: RefOrderType,\n originInv: Inventory,\n reducedQty: number,\n reducedUomValue: number,\n transactionType: string,\n originalQty?: number,\n originalUomValue?: number,\n currentUnitQty?: number,\n currentUomValue?: number\n) {\n if (refOrder instanceof ReleaseGood) {\n const loadingWS: Worksheet = await trxMgr.getRepository(Worksheet).findOne({\n where: { domain: { id: domain.id }, bizplace, releaseGood: refOrder, type: WORKSHEET_TYPE.LOADING },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n\n if (!loadingWS)\n throw new Error(\n `Picking process is not finished yet. Please complete picking first before complete Repalletizing`\n )\n\n let orderInv: OrderInventory = loadingWS.worksheetDetails\n .map((wsd: WorksheetDetail) => wsd.targetInventory)\n .find((oi: OrderInventory) => oi.inventory.id === originInv.id)\n if (!orderInv) {\n throw new Error(`Failed to find order inventory (Pallet ID: ${originInv.palletId})`)\n }\n\n orderInv.releaseQty -= reducedQty\n orderInv.releaseUomValue -= reducedUomValue\n orderInv.updater = user\n\n await trxMgr.getRepository(OrderInventory).save(orderInv)\n } else {\n // currentUnitQty > 0 only belongs to PackingUnits.QTY\n if (currentUnitQty > 0) {\n const unitUomValue: number = originInv.uomValue / originInv.qty\n\n reducedQty = Math.floor((originalQty * originInv.packingSize - currentUnitQty) / originInv.packingSize)\n reducedUomValue = unitUomValue * reducedQty\n\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= originalQty\n originInv.lockedUomValue -= originalUomValue\n originInv.updater = user\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n\n // minus 1 because remain unit qty only exist if the unitQty < 1\n if (originInv.qty - 1 == 0) {\n originInv.status = INVENTORY_STATUS.TERMINATED\n originInv.qty = 0\n originInv.uomValue = 0\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -1, -unitUomValue, user, trxMgr)\n\n const newQty: number = currentUnitQty\n const newUomValue: number = (unitUomValue / originInv.packingSize) * newQty\n\n originInv.qty = newQty\n originInv.uomValue = newUomValue\n originInv.packingSize = 1\n originInv.status = INVENTORY_STATUS.STORED\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, newQty, newUomValue, user, trxMgr)\n }\n\n // currentUnitUomValue > 0 only belongs to PackingUnits.QTY\n } else if (currentUomValue > 0) {\n reducedUomValue = Math.round((originalUomValue - currentUomValue + Number.EPSILON) * 100) / 100\n\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= originalQty\n originInv.lockedUomValue -= originalUomValue\n originInv.updater = user\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n } else {\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= originalQty\n originInv.lockedUomValue -= originalUomValue\n originInv.updater = user\n originInv.status = originInv.qty > 0 ? INVENTORY_STATUS.STORED : INVENTORY_STATUS.TERMINATED\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n\n if (originInv.qty <= 0 || originInv.uomValue <= 0) {\n originInv.status = INVENTORY_STATUS.TERMINATED\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, INVENTORY_TRANSACTION_TYPE.TERMINATED, 0, 0, user, trxMgr)\n }\n }\n }\n\n return originInv\n}\n\n/**\n * @description Assign inventory to targetVas\n * When Vas order comes together with Arrival Notice or Release Good\n * The vas worksheet is activated automatically by to complete unloading/picking worksheet.\n * As a result user can't activate it manually, which means no assignment for every specific vas tasks.\n * For this case inventory should be assigned while processing the VAS Order.\n */\nexport async function assignInventory(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n wsd: WorksheetDetail,\n refOrder: ArrivalNotice | ReleaseGood,\n targetVas: OrderVas,\n palletId: string\n): Promise<OrderVas> {\n let inventory: Inventory\n\n if (refOrder instanceof ArrivalNotice) {\n // Case 1. When the VAS Order comes with Arrival Notice\n inventory = await trxMgr.getRepository(Inventory).findOne({\n where: {\n domain: { id: domain.id },\n bizplace,\n palletId,\n status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.PUTTING_AWAY]),\n refOrderId: refOrder.id\n }\n })\n if (!inventory) throw new Error(`Counldn't find unloaded inventory by pallet ID: (${palletId})`)\n\n // Check current inventory has enough qty of product to complete this target vas.\n if (targetVas.qty > inventory.qty) {\n // If it doesn't have enough, Need to create new worksheet detail and target vas without inventory assignment\n // So the user can proceed it with another inventory\n targetVas = await addNewVasTask(targetVas, inventory.qty, inventory.uomValue, domain, bizplace, user, trxMgr, wsd)\n }\n } else if (refOrder instanceof ReleaseGood) {\n // Case 2. When the VAS Order comes with Release Good\n // In this case, every available inventories are picked by picking worksheet.\n // So target inventories should be found by relation with order inventory which has PICKED status\n let pickedOrdInv: OrderInventory = await trxMgr.getRepository(OrderInventory).find({\n where: { domain: { id: domain.id }, bizplace, releaseGood: refOrder, status: ORDER_INVENTORY_STATUS.PICKED },\n relations: ['inventory']\n })\n pickedOrdInv = pickedOrdInv.find((oi: OrderInventory) => oi.inventory.palletId === palletId)\n inventory = pickedOrdInv?.inventory\n if (!inventory) throw new Error(`Couldn't find picked inventory by pallet ID: ${palletId}`)\n\n // Check current target inventory (picked inventory) has enough qty of product to complete this target vas.\n // And available qty of products also restriced by picking. (Because customer requests do some vas for Release Order)\n if (targetVas.qty > pickedOrdInv.releaseQty) {\n // If it doesn't have enough, Need to create new worksheet detail and target vas without inventory assignment\n // So the user can proceed it with another inventory\n targetVas = await addNewVasTask(\n targetVas,\n pickedOrdInv.releaseQty,\n pickedOrdInv.releaseUomValue,\n domain,\n bizplace,\n user,\n trxMgr,\n wsd\n )\n }\n } else {\n throw new Error(`Reference Order (${refOrder.name}) is not expected.`)\n }\n\n targetVas.inventory = inventory\n targetVas.updater = user\n return await trxMgr.getRepository(OrderVas).save(targetVas)\n}\n\n/**\n * Dismiss assigne inventory when user click undo to remove\n * proceed pallet for relabel, repack, repack\n *\n * @param {EntityManager} trxMgr\n * @param {WorksheetDetail} wsd\n * @param {OrderVas} targetVas\n * @param {PalletChangesInterface[]} palletChanges\n * @param {String} palletId\n */\nexport async function dismissInventory(\n trxMgr: EntityManager,\n wsd: WorksheetDetail,\n targetVas: OrderVas,\n palletChanges: PalletChangesInterface[],\n palletId: string\n) {\n // If there's no more item assigned with current from pallet id\n if (!palletChanges.find((rf: PalletChangesInterface) => rf.fromPalletId === palletId)) {\n targetVas.inventory = null\n const worksheet: Worksheet = await trxMgr.getRepository(Worksheet).findOne({\n where: { id: wsd.worksheet.id },\n relations: [\n 'worksheetDetails',\n 'worksheetDetails.targetVas',\n 'worksheetDetails.targetVas.vas',\n 'worksheetDetails.targetVas.inventory'\n ]\n })\n\n const nonFinishedWSD: WorksheetDetail = worksheet.worksheetDetails.find(\n (otherWSD: WorksheetDetail) =>\n otherWSD.id !== wsd.id &&\n otherWSD.targetVas.set === wsd.targetVas.set &&\n otherWSD.targetVas.vas.id === wsd.targetVas.vas.id &&\n otherWSD.status !== WORKSHEET_STATUS.DONE\n )\n\n if (nonFinishedWSD) {\n // If there non finished same VAS, delete undo target record (worksheet detail & order vas)\n // Add qty and uomValue for non finished vas task\n await trxMgr.getRepository(WorksheetDetail).delete(wsd.id)\n await trxMgr.getRepository(OrderVas).delete(targetVas.id)\n\n nonFinishedWSD.targetVas.qty += targetVas.qty\n nonFinishedWSD.targetVas.uomValue += targetVas.uomValue\n await trxMgr.getRepository(OrderVas).save(nonFinishedWSD.targetVas)\n } else {\n // If there no non finished same VAS, dismiss inventory for the record\n targetVas.inventory = null\n await trxMgr.getRepository(OrderVas).save(wsd.targetVas)\n }\n }\n}\n\n/**\n * @description Create nw VAS Worksheet Detail & Order Vas\n * Without inventory assignment\n */\nexport async function addNewVasTask(\n targetVas: OrderVas,\n currentOrderQty: number,\n currentOrderUomValue: number,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n trxMgr: EntityManager,\n wsd: WorksheetDetail\n): Promise<OrderVas> {\n // Create new order vas & worksheet detail\n const copiedTargetVas: OrderVas = Object.assign({}, targetVas)\n delete copiedTargetVas.id\n\n let newTargetVas: OrderVas = {\n ...copiedTargetVas,\n domain,\n bizplace,\n name: OrderNoGenerator.orderVas(),\n qty: targetVas.qty - currentOrderQty,\n uomValue: targetVas.uomValue - currentOrderUomValue,\n creator: user,\n updater: user\n }\n newTargetVas = await trxMgr.getRepository(OrderVas).save(newTargetVas)\n\n const copiedWSD: WorksheetDetail = Object.assign({}, wsd)\n delete copiedWSD.id\n\n const newWSD: WorksheetDetail = {\n ...copiedWSD,\n domain,\n bizplace,\n name: WorksheetNoGenerator.vasDetail(),\n seq: wsd.seq++,\n targetVas: newTargetVas,\n creator: user,\n updater: user\n }\n await trxMgr.getRepository(WorksheetDetail).save(newWSD)\n\n targetVas.qty = currentOrderQty\n targetVas.uomValue = currentOrderUomValue\n return targetVas\n}\n\nexport async function upsertInventory(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n originInv: Inventory,\n refOrder: RefOrderType,\n palletId: string,\n locationName: string,\n packingType: string,\n addedQty: number,\n addedUomValue: number,\n transactionType: string,\n stdAmount?: number,\n packingUnit?: string\n): Promise<Inventory> {\n const location: Location = await trxMgr.getRepository(Location).findOne({\n where: { domain: { id: domain.id }, name: locationName },\n relations: ['warehouse']\n })\n if (!location) throw new Error(`Location is not found by (${locationName})`)\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n\n let inv: Inventory = await trxMgr.getRepository(Inventory).findOne({\n where: {\n domain: { id: domain.id },\n bizplace,\n palletId,\n batchId: originInv.batchId,\n product: originInv.product,\n packingType,\n packingSize: stdAmount,\n refOrderId: originInv.refOrderId,\n status: Not(Equal(INVENTORY_STATUS.TERMINATED))\n },\n relations: ['product', 'refInventory']\n })\n\n // Create new inventory\n if (!inv) {\n const copiedInv: Inventory = Object.assign({}, originInv)\n delete copiedInv.id\n\n inv = {\n ...copiedInv,\n domain,\n bizplace,\n palletId,\n name: InventoryNoGenerator.inventoryName(),\n packingType,\n qty: addedQty,\n weight: 0,\n uomValue: addedUomValue,\n lockedQty: 0,\n lockedUomValue: 0,\n packingSize: packingUnit == PackingUnits.QTY ? stdAmount : 1,\n warehouse,\n location,\n zone,\n creator: user,\n updater: user\n }\n\n // Save changed inventory\n inv = await trxMgr.getRepository(Inventory).save(inv)\n\n // Check whether the pallet is resuable or not\n const pallet: Pallet = await trxMgr.getRepository(Pallet).findOne({\n where: { domain: { id: domain.id }, name: palletId, inventory: IsNull() }\n })\n // If it's exists => it's reusable pallet and need to update it's inventory field\n if (pallet) {\n pallet.inventory = inv\n pallet.updater = user\n await trxMgr.getRepository(Pallet).save(pallet)\n }\n } else {\n // Update inventory\n inv.qty += addedQty\n inv.uomValue += addedUomValue\n inv.warehouse = warehouse\n inv.location = location\n inv.zone = location.zone\n inv.updater = user\n\n // Save changed inventory\n inv = await trxMgr.getRepository(Inventory).save(inv)\n }\n\n // Create inventory history\n await generateInventoryHistory(inv, refOrder, transactionType, addedQty, addedUomValue, user, trxMgr)\n\n return inv\n}\n\nexport async function deductProductAmount(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n refOrder: RefOrderType,\n originInv: Inventory,\n reducedQty: number,\n reducedUomValue: number,\n transactionType: string,\n originalQty?: number,\n originalUomValue?: number,\n currentUnitQty?: number,\n currentUomValue?: number\n) {\n if (refOrder instanceof ReleaseGood) {\n const loadingWS: Worksheet = await trxMgr.getRepository(Worksheet).findOne({\n where: { domain: { id: domain.id }, bizplace, releaseGood: refOrder, type: WORKSHEET_TYPE.LOADING },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n\n if (!loadingWS)\n throw new Error(\n `Picking process is not finished yet. Please complete picking first before complete Repalletizing`\n )\n\n const orderInv: OrderInventory = loadingWS.worksheetDetails\n .map((wsd: WorksheetDetail) => wsd.targetInventory)\n .find((oi: OrderInventory) => oi.inventory.id === originInv.id)\n if (!orderInv) {\n throw new Error(`Failed to find order inventory (Pallet ID: ${originInv.palletId})`)\n }\n\n orderInv.releaseQty -= reducedQty\n orderInv.releaseUomValue -= reducedUomValue\n orderInv.updater = user\n\n await trxMgr.getRepository(OrderInventory).save(orderInv)\n } else {\n // currentUnitQty > 0 only belongs to PackingUnits.QTY\n if (currentUnitQty > 0) {\n const unitUomValue: number = originInv.uomValue / originInv.qty\n\n reducedQty = Math.floor((originalQty * originInv.packingSize - currentUnitQty) / originInv.packingSize)\n reducedUomValue = unitUomValue * reducedQty\n\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= reducedQty\n originInv.lockedUomValue -= reducedUomValue\n originInv.updater = user\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n\n // minus 1 because remain unit qty only exist if the unitQty < 1\n if (originInv.qty - 1 == 0) {\n originInv.status = INVENTORY_STATUS.TERMINATED\n originInv.qty = 0\n originInv.uomValue = 0\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -1, -unitUomValue, user, trxMgr)\n\n const newQty: number = currentUnitQty\n const newUomValue: number = (unitUomValue / originInv.packingSize) * newQty\n\n originInv.qty = newQty\n originInv.uomValue = newUomValue\n originInv.packingSize = 1\n originInv.status = INVENTORY_STATUS.STORED\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, newQty, newUomValue, user, trxMgr)\n }\n\n // currentUnitUomValue > 0 only belongs to PackingUnits.UOM\n } else if (currentUomValue > 0) {\n reducedUomValue = Math.round((originalUomValue - currentUomValue + Number.EPSILON) * 100) / 100\n\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= reducedQty\n originInv.lockedUomValue -= reducedUomValue\n originInv.updater = user\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n } else {\n originInv.qty -= reducedQty\n originInv.uomValue -= reducedUomValue\n originInv.lockedQty -= reducedQty\n originInv.lockedUomValue -= reducedUomValue\n originInv.updater = user\n originInv.status = originInv.qty > 0 ? INVENTORY_STATUS.STORED : INVENTORY_STATUS.TERMINATED\n\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, transactionType, -reducedQty, -reducedUomValue, user, trxMgr)\n\n if (originInv.qty <= 0 || originInv.uomValue <= 0) {\n originInv.status = INVENTORY_STATUS.TERMINATED\n originInv = await trxMgr.getRepository(Inventory).save(originInv)\n await generateInventoryHistory(originInv, refOrder, INVENTORY_TRANSACTION_TYPE.TERMINATED, 0, 0, user, trxMgr)\n }\n }\n }\n\n return originInv\n}\n\nexport async function createPutawayWorksheet(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n refOrder: ArrivalNotice,\n originInv: Inventory,\n changedInv: Inventory\n): Promise<void> {\n const putawayWS: Worksheet = await trxMgr.getRepository(Worksheet).findOne({\n where: { domain: { id: domain.id }, bizplace, arrivalNotice: refOrder, type: WORKSHEET_TYPE.PUTAWAY },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n\n if (!putawayWS) {\n throw new Error(\n `Unloading process is not finished yet. Please complete unloading first before complete Repalletizing`\n )\n }\n const putawayWSDs: WorksheetDetail[] = putawayWS.worksheetDetails\n\n const originalWSD: WorksheetDetail = putawayWSDs.find(\n (wsd: WorksheetDetail) => wsd.targetInventory.inventory.id === originInv.id\n )\n const originOrdInv: OrderInventory = originalWSD.targetInventory\n const sameTargetWSD: WorksheetDetail = putawayWSDs.find(\n (wsd: WorksheetDetail) => wsd.targetInventory.inventory.id === changedInv.id\n )\n\n if (!sameTargetWSD) {\n // Create new order inventory\n const copiedOrdInv: OrderInventory = Object.assign({}, originOrdInv)\n delete copiedOrdInv.id\n\n let newOrdInv: OrderInventory = {\n ...copiedOrdInv,\n domain,\n bizplace,\n name: OrderNoGenerator.orderInventory(),\n type: ORDER_TYPES.ARRIVAL_NOTICE,\n arrivalNotice: refOrder,\n inventory: changedInv,\n creator: user,\n updater: user\n }\n newOrdInv = await trxMgr.getRepository(OrderInventory).save(newOrdInv)\n\n const copiedWSD: WorksheetDetail = Object.assign({}, originalWSD)\n delete copiedWSD.id\n\n let newWSD: WorksheetDetail = {\n ...copiedWSD,\n domain,\n bizplace,\n worksheet: putawayWS,\n name: WorksheetNoGenerator.putawayDetail(),\n targetInventory: newOrdInv,\n type: WORKSHEET_TYPE.PUTAWAY,\n creator: user,\n updater: user\n }\n newWSD = await trxMgr.getRepository(WorksheetDetail).save(newWSD)\n }\n\n // Update origin order inventory\n if (originInv.status === INVENTORY_STATUS.TERMINATED) {\n await trxMgr.getRepository(WorksheetDetail).delete(originalWSD.id)\n\n originOrdInv.status = ORDER_INVENTORY_STATUS.DONE\n originOrdInv.updater = user\n await trxMgr.getRepository(OrderInventory).save(originOrdInv)\n }\n}\n\nexport async function createLoadingWorksheet(\n trxMgr: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n user: User,\n refOrder: ReleaseGood,\n originInv: OrderInventory,\n changedInv: Inventory\n): Promise<void> {\n const changedQty: number = changedInv.qty\n const changedUomValue: number = changedInv.uomValue\n const loadingWS: Worksheet = await trxMgr.getRepository(Worksheet).findOne({\n where: { domain: { id: domain.id }, bizplace, releaseGood: refOrder, type: WORKSHEET_TYPE.LOADING },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n\n if (!loadingWS) {\n throw new Error(`Picking process is not finished yet. Please complete picking first before complete Repalletizing`)\n }\n\n const loadingWSDs: WorksheetDetail[] = loadingWS.worksheetDetails\n\n const originalWSD: WorksheetDetail = loadingWSDs.find(\n (wsd: WorksheetDetail) => wsd.targetInventory.inventory.id === originInv.id\n )\n const originOrdInv: OrderInventory = originalWSD.targetInventory\n const sameTargetWSD: WorksheetDetail = loadingWSDs.find((wsd: WorksheetDetail) => {\n const targetOI: OrderInventory = wsd.targetInventory\n const targetInv: Inventory = targetOI.inventory\n const targetUnitUomValue: number = targetOI.releaseUomValue / targetOI.releaseQty\n const changeUnitUomValue: number = changedUomValue / changedQty\n\n if (\n targetInv.palletId === changedInv.palletId &&\n targetInv.batchId === changedInv.batchId &&\n targetInv.packingType === changedInv.packingType &&\n targetUnitUomValue === changeUnitUomValue\n ) {\n return wsd\n }\n })\n\n if (!sameTargetWSD) {\n // Create new order inventory\n const copiedOrderInv: OrderInventory = Object.assign({}, originOrdInv)\n delete copiedOrderInv.id\n\n let newOrdInv: OrderInventory = await trxMgr.getRepository(OrderInventory).save({\n ...copiedOrderInv,\n domain,\n bizplace,\n releaseQty: changedQty,\n releaseUomValue: changedUomValue,\n name: OrderNoGenerator.orderInventory(),\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n releaseGood: refOrder,\n inventory: changedInv,\n creator: user,\n updater: user\n })\n newOrdInv = await trxMgr.getRepository(OrderInventory).save(newOrdInv)\n\n const copiedWSD: WorksheetDetail = Object.assign({}, originalWSD)\n delete copiedWSD.id\n\n let newWSD: WorksheetDetail = {\n ...copiedWSD,\n domain,\n bizplace,\n worksheet: loadingWS,\n name: WorksheetNoGenerator.loadingDetail(),\n targetInventory: newOrdInv,\n type: WORKSHEET_TYPE.LOADING,\n creator: user,\n updater: user\n }\n await trxMgr.getRepository(WorksheetDetail).save(newWSD)\n } else {\n let sameTargetInv: OrderInventory = sameTargetWSD.targetInventory\n sameTargetInv.releaseQty += changedQty\n sameTargetInv.releaseUomValue += changedUomValue\n sameTargetInv.updater = user\n await trxMgr.getRepository(OrderInventory).save(sameTargetInv)\n }\n\n // Update inventory to PICKED inventory\n changedInv = await trxMgr.getRepository(Inventory).save({\n ...changedInv,\n qty: changedInv.qty - changedQty,\n uomValue: changedInv.uomValue - changedUomValue,\n updater: user\n })\n\n // Generate PICKING inventory history\n await generateInventoryHistory(\n changedInv,\n refOrder,\n INVENTORY_TRANSACTION_TYPE.PICKING,\n -changedQty,\n -changedUomValue,\n user,\n trxMgr\n )\n\n // Generate TERMINATED inventory history\n await generateInventoryHistory(changedInv, refOrder, INVENTORY_TRANSACTION_TYPE.TERMINATED, 0, 0, user, trxMgr)\n\n // Delete worksheet detail & order inventory\n // If order inventory doesn't have release qty any more\n if (originOrdInv.releaseQty <= 0) {\n await trxMgr.getRepository(WorksheetDetail).delete(originalWSD.id)\n originInv.status = ORDER_INVENTORY_STATUS.DONE\n originInv.updater = user\n await trxMgr.getRepository(OrderInventory).save(originInv)\n }\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.checkRelabelable = exports.checkRelabelableResolver = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
4
5
|
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
6
|
const product_base_1 = require("@things-factory/product-base");
|
|
6
7
|
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
7
|
-
const typeorm_1 = require("typeorm");
|
|
8
8
|
exports.checkRelabelableResolver = {
|
|
9
9
|
async checkRelabelable(_, { batchId, productId, packingType, unitUomValue }, context) {
|
|
10
10
|
const { tx, domain, user } = context.state;
|
|
11
11
|
const bizplace = await (0, biz_base_1.getMyBizplace)(user);
|
|
12
12
|
const product = await tx.getRepository(product_base_1.Product).findOne({
|
|
13
|
-
where: { domain, bizplace, id: productId }
|
|
13
|
+
where: { domain: { id: domain.id }, bizplace, id: productId }
|
|
14
14
|
});
|
|
15
15
|
if (!product)
|
|
16
16
|
throw new Error(`Couldn't find product by ID (${productId})`);
|
|
@@ -61,7 +61,14 @@ async function checkRelabelable(tx, domain, bizplace, batchId, product, packingT
|
|
|
61
61
|
// The condition is same batch id same product same packing type
|
|
62
62
|
// If there's *NO* duplicated inventory the target inventory for this vas can be executed
|
|
63
63
|
const duplicatedInvCnt = await tx.getRepository(warehouse_base_1.Inventory).count({
|
|
64
|
-
where: {
|
|
64
|
+
where: {
|
|
65
|
+
domain: { id: domain.id },
|
|
66
|
+
bizplace,
|
|
67
|
+
batchId,
|
|
68
|
+
product,
|
|
69
|
+
packingType,
|
|
70
|
+
status: (0, typeorm_1.Not)((0, typeorm_1.Equal)(warehouse_base_1.INVENTORY_STATUS.TERMINATED))
|
|
71
|
+
}
|
|
65
72
|
});
|
|
66
73
|
if (!duplicatedInvCnt)
|
|
67
74
|
return true;
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-relabelable.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"check-relabelable.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.ts"],"names":[],"mappings":";;;AAAA,qCAAmD;AAEnD,uDAAkE;AAClE,+DAAsD;AAEtD,mEAA4E;AAE/D,QAAA,wBAAwB,GAAG;IACtC,KAAK,CAAC,gBAAgB,CACpB,CAAO,EACP,EACE,OAAO,EACP,SAAS,EACT,WAAW,EACX,YAAY,EACsE,EACpF,OAAY;QAEZ,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,QAAQ,GAAa,MAAM,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAA;QACpD,MAAM,OAAO,GAAY,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAO,CAAC,CAAC,OAAO,CAAC;YAC/D,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE;SAC9D,CAAC,CAAA;QACF,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,GAAG,CAAC,CAAA;QAE3E,OAAO,MAAM,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAClG,CAAC;CACF,CAAA;AAED;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,gBAAgB,CACpC,EAAiB,EACjB,MAAc,EACd,QAAkB,EAClB,OAAe,EACf,OAAgB,EAChB,WAAmB,EACnB,YAAoB;IAEpB,sCAAsC;IACtC,8EAA8E;IAC9E,sFAAsF;IACtF,MAAM,eAAe,GAAW,MAAM,EAAE;SACrC,aAAa,CAAC,0BAAS,CAAC;SACxB,kBAAkB,CAAC,KAAK,CAAC;SACzB,KAAK,CAAC,2BAA2B,CAAC;SAClC,QAAQ,CAAC,+BAA+B,CAAC;SACzC,QAAQ,CAAC,yBAAyB,CAAC;SACnC,QAAQ,CAAC,6BAA6B,CAAC;SACvC,QAAQ,CAAC,iCAAiC,CAAC;SAC3C,QAAQ,CAAC,uBAAuB,CAAC;SACjC,QAAQ,CAAC,2CAA2C,CAAC;SACrD,aAAa,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC,EAAE;QACnB,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,WAAW;QACX,MAAM,EAAE,iCAAgB,CAAC,UAAU;QACnC,YAAY;KACb,CAAC;SACD,QAAQ,EAAE,CAAA;IAEb,IAAI,eAAe;QAAE,OAAO,IAAI,CAAA;IAEhC,wCAAwC;IACxC,gEAAgE;IAChE,yFAAyF;IACzF,MAAM,gBAAgB,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,KAAK,CAAC;QACvE,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACzB,QAAQ;YACR,OAAO;YACP,OAAO;YACP,WAAW;YACX,MAAM,EAAE,IAAA,aAAG,EAAC,IAAA,eAAK,EAAC,iCAAgB,CAAC,UAAU,CAAC,CAAC;SAChD;KACF,CAAC,CAAA;IACF,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAA;IAElC,OAAO,KAAK,CAAA;AACd,CAAC;AAnDD,4CAmDC","sourcesContent":["import { EntityManager, Equal, Not } from 'typeorm'\n\nimport { Bizplace, getMyBizplace } from '@things-factory/biz-base'\nimport { Product } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, INVENTORY_STATUS } from '@things-factory/warehouse-base'\n\nexport const checkRelabelableResolver = {\n async checkRelabelable(\n _: void,\n {\n batchId,\n productId,\n packingType,\n unitUomValue\n }: { batchId: string; productId: string; packingType: string; unitUomValue: number },\n context: any\n ): Promise<boolean> {\n const { tx, domain, user } = context.state\n const bizplace: Bizplace = await getMyBizplace(user)\n const product: Product = await tx.getRepository(Product).findOne({\n where: { domain: { id: domain.id }, bizplace, id: productId }\n })\n if (!product) throw new Error(`Couldn't find product by ID (${productId})`)\n\n return await checkRelabelable(tx, domain, bizplace, batchId, product, packingType, unitUomValue)\n }\n}\n\n/**\n * @description Try to find whether current inventory information can be accepted for relabeling.\n * The inventory should be exactly same with one of stored inventory\n * or\n * The inventory should be totally different with every single inventories stored.\n *\n * @param {EntityManager} tx\n * @param {Domain} domain\n * @param {Bizplace} bizplace\n * @param {String} batchId\n * @param {Product} product\n * @param {String} packingType\n * @param {Number} unitUomValue\n */\nexport async function checkRelabelable(\n tx: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n batchId: string,\n product: Product,\n packingType: string,\n unitUomValue: number\n): Promise<boolean> {\n // Try to find out identical inventory\n // The condition is same batch id same product same packing type same uomValue\n // If there *IS* identical inventory the target inventory for this vas can be executed\n const identicalInvCnt: number = await tx\n .getRepository(Inventory)\n .createQueryBuilder('inv')\n .where('inv.domain_id = :domainId')\n .andWhere('inv.bizplace_id = :bizplaceId')\n .andWhere('inv.batch_id = :batchId')\n .andWhere('inv.product_id = :productId')\n .andWhere('inv.packing_type = :packingType')\n .andWhere('inv.status != :status')\n .andWhere('(inv.uom_value / inv.qty) = :unitUomValue')\n .setParameters({\n domainId: domain.id,\n bizplaceId: bizplace.id,\n batchId,\n productId: product.id,\n packingType,\n status: INVENTORY_STATUS.TERMINATED,\n unitUomValue\n })\n .getCount()\n\n if (identicalInvCnt) return true\n\n // Try to find out duplicated invenetory\n // The condition is same batch id same product same packing type\n // If there's *NO* duplicated inventory the target inventory for this vas can be executed\n const duplicatedInvCnt: number = await tx.getRepository(Inventory).count({\n where: {\n domain: { id: domain.id },\n bizplace,\n batchId,\n product,\n packingType,\n status: Not(Equal(INVENTORY_STATUS.TERMINATED))\n }\n })\n if (!duplicatedInvCnt) return true\n\n return false\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.js
CHANGED
|
@@ -6,7 +6,8 @@ const sales_base_1 = require("@things-factory/sales-base");
|
|
|
6
6
|
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
7
7
|
const common_utils_1 = require("../common-utils");
|
|
8
8
|
async function completeRelabeling(trxMgr, orderVas, user) {
|
|
9
|
-
orderVas = await trxMgr.getRepository(sales_base_1.OrderVas).findOne(
|
|
9
|
+
orderVas = await trxMgr.getRepository(sales_base_1.OrderVas).findOne({
|
|
10
|
+
where: { id: orderVas.id },
|
|
10
11
|
relations: ['domain', 'bizplace', 'inventory', 'inventory.product', 'arrivalNotice', 'releaseGood', 'vasOrder']
|
|
11
12
|
});
|
|
12
13
|
const domain = orderVas.domain;
|
|
@@ -22,7 +23,7 @@ async function completeRelabeling(trxMgr, orderVas, user) {
|
|
|
22
23
|
if (toBatchId)
|
|
23
24
|
copiedInv.batchId = toBatchId;
|
|
24
25
|
if (toProduct)
|
|
25
|
-
copiedInv.product = await trxMgr.getRepository(product_base_1.Product).
|
|
26
|
+
copiedInv.product = await trxMgr.getRepository(product_base_1.Product).findOneBy({ id: toProduct.id });
|
|
26
27
|
copiedInv.refInventory = originInv;
|
|
27
28
|
for (const palletChange of palletChanges) {
|
|
28
29
|
const newInventory = await (0, common_utils_1.upsertInventory)(trxMgr, domain, bizplace, user, copiedInv, refOrder, palletChange.toPalletId, palletChange.locationName, copiedInv.packingType, palletChange.reducedQty, palletChange.reducedUomValue, warehouse_base_1.INVENTORY_TRANSACTION_TYPE.RELABELING);
|