@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete-relabeling.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"complete-relabeling.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Product } from '@things-factory/product-base'\nimport { ArrivalNotice, OrderVas, ReleaseGood } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'\n\nimport {\n createLoadingWorksheet,\n createPutawayWorksheet,\n deductProductAmount,\n getReducedAmount,\n upsertInventory\n} from '../common-utils'\nimport {\n OperationGuideInterface,\n PalletChangesInterface,\n RefOrderType,\n RelabelingGuide,\n RelabelingToProduct\n} from '../interfaces'\n\nexport async function completeRelabeling(trxMgr: EntityManager, orderVas: OrderVas, user: User): Promise<void> {\n orderVas = await trxMgr.getRepository(OrderVas).findOne({\n where: { id: orderVas.id },\n relations: ['domain', 'bizplace', 'inventory', 'inventory.product', 'arrivalNotice', 'releaseGood', 'vasOrder']\n })\n\n const domain: Domain = orderVas.domain\n const bizplace: Bizplace = orderVas.bizplace\n let originInv: Inventory = orderVas.inventory\n const operationGuide: OperationGuideInterface<RelabelingGuide> = JSON.parse(orderVas.operationGuide)\n const operationGuideData: RelabelingGuide = operationGuide.data\n const { toBatchId, toProduct }: { toBatchId?: string; toProduct?: RelabelingToProduct } = operationGuideData\n const { arrivalNotice, releaseGood, vasOrder } = orderVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder\n const palletChanges: PalletChangesInterface[] = extractRelabeledPallets(\n operationGuideData.relabeledFrom,\n orderVas.inventory.palletId\n )\n\n let copiedInv: Inventory = Object.assign({}, originInv)\n if (toBatchId) copiedInv.batchId = toBatchId\n if (toProduct) copiedInv.product = await trxMgr.getRepository(Product).findOneBy({ id: toProduct.id })\n\n copiedInv.refInventory = originInv\n\n for (const palletChange of palletChanges) {\n const newInventory: Inventory = await upsertInventory(\n trxMgr,\n domain,\n bizplace,\n user,\n copiedInv,\n refOrder,\n palletChange.toPalletId,\n palletChange.locationName,\n copiedInv.packingType,\n palletChange.reducedQty,\n palletChange.reducedUomValue,\n INVENTORY_TRANSACTION_TYPE.RELABELING\n )\n\n const { reducedQty, reducedUomValue } = getReducedAmount(palletChanges, orderVas.inventory.palletId)\n // Deduct amount of product on original pallet or order inventory (Case for release order)\n // originInv = await deductProductAmount(trxMgr, domain, bizplace, user, refOrder, originInv, qty, uomValue)\n originInv = await deductProductAmount(\n trxMgr,\n domain,\n bizplace,\n user,\n refOrder,\n originInv,\n reducedQty,\n reducedUomValue,\n INVENTORY_TRANSACTION_TYPE.RELABELING\n )\n\n // Create worksheet if it's related with Arrival Notice or Release Order\n if (refOrder instanceof ArrivalNotice) {\n await createPutawayWorksheet(trxMgr, domain, bizplace, user, refOrder, originInv, newInventory)\n } else if (refOrder instanceof ReleaseGood) {\n await createLoadingWorksheet(trxMgr, domain, bizplace, user, refOrder, originInv, newInventory)\n }\n }\n}\n\nfunction extractRelabeledPallets(palletChanges: PalletChangesInterface[], palletId: string): PalletChangesInterface[] {\n return palletChanges.filter((pc: PalletChangesInterface) => pc.fromPalletId === palletId)\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.relabelingResolver = void 0;
|
|
4
|
-
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
5
4
|
const typeorm_1 = require("typeorm");
|
|
5
|
+
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
6
6
|
const execute_vas_1 = require("../../vas/execute-vas");
|
|
7
7
|
const common_utils_1 = require("../common-utils");
|
|
8
8
|
exports.relabelingResolver = {
|
|
@@ -13,7 +13,12 @@ exports.relabelingResolver = {
|
|
|
13
13
|
let { bizplace, targetVas } = wsd;
|
|
14
14
|
// Check whether to pallet id is duplicated or not.
|
|
15
15
|
if (await tx.getRepository(warehouse_base_1.Inventory).count({
|
|
16
|
-
where: {
|
|
16
|
+
where: {
|
|
17
|
+
domain: { id: domain.id },
|
|
18
|
+
bizplace,
|
|
19
|
+
palletId: toPalletId,
|
|
20
|
+
status: (0, typeorm_1.Not)((0, typeorm_1.Equal)(warehouse_base_1.INVENTORY_STATUS.TERMINATED))
|
|
21
|
+
}
|
|
17
22
|
})) {
|
|
18
23
|
throw new Error(`Pallet (${toPalletId}) is already exists`);
|
|
19
24
|
}
|
|
@@ -45,7 +50,10 @@ exports.relabelingResolver = {
|
|
|
45
50
|
newPalletChange.locationName = locationName;
|
|
46
51
|
}
|
|
47
52
|
else {
|
|
48
|
-
originInv = await tx.getRepository(warehouse_base_1.Inventory).findOne(
|
|
53
|
+
originInv = await tx.getRepository(warehouse_base_1.Inventory).findOne({
|
|
54
|
+
where: { id: originInv.id },
|
|
55
|
+
relations: ['location']
|
|
56
|
+
});
|
|
49
57
|
newPalletChange.locationName = originInv.location.name;
|
|
50
58
|
}
|
|
51
59
|
if (remainQty < targetVas.qty) {
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relabeling.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"relabeling.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.ts"],"names":[],"mappings":"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","sourcesContent":["import { Equal, Not } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { OrderVas } from '@things-factory/sales-base'\nimport { Inventory, INVENTORY_STATUS } from '@things-factory/warehouse-base'\n\nimport { WorksheetDetail } from '../../../../../entities'\nimport { executeVas } from '../../vas/execute-vas'\nimport {\n assignInventory,\n getRemainInventoryAmount,\n getWorksheetDetailByName,\n updateRelatedOrderVas\n} from '../common-utils'\nimport { OperationGuideInterface, PalletChangesInterface, RefOrderType, RelabelingGuide } from '../interfaces'\n\nexport const relabelingResolver = {\n async relabeling(\n _: any,\n { worksheetDetailName, fromPalletId, toPalletId, locationName },\n context: any\n ): Promise<void> {\n const { tx, domain, user } = context.state\n\n // Find target worksheet detail & target order vas & bizplace\n const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)\n let { bizplace, targetVas }: { bizplace: Bizplace; targetVas: OrderVas } = wsd\n\n // Check whether to pallet id is duplicated or not.\n if (\n await tx.getRepository(Inventory).count({\n where: {\n domain: { id: domain.id },\n bizplace,\n palletId: toPalletId,\n status: Not(Equal(INVENTORY_STATUS.TERMINATED))\n }\n })\n ) {\n throw new Error(`Pallet (${toPalletId}) is already exists`)\n }\n\n // Init refOrder\n const { arrivalNotice, releaseGood, vasOrder }: { [key: string]: RefOrderType } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder || null\n if (!refOrder) throw new Error(`Couldn't find reference order with current order vas`)\n\n // Assign inventory if specific inventory isn't assigned yet.\n // This case is occured when the VAS order comes with Arrival Notice or Release Good\n if (!targetVas.inventory) {\n targetVas = await assignInventory(tx, domain, bizplace, user, wsd, refOrder, targetVas, fromPalletId)\n }\n\n let originInv: Inventory = targetVas.inventory\n let operationGuide: OperationGuideInterface<RelabelingGuide> = JSON.parse(targetVas.operationGuide)\n let operationGuideData: RelabelingGuide = operationGuide.data\n if (!operationGuideData.relabeledFrom) operationGuideData.relabeledFrom = []\n const palletChanges: PalletChangesInterface[] = operationGuideData.relabeledFrom\n const { remainQty, remainUomValue } = await getRemainInventoryAmount(\n tx,\n refOrder,\n domain,\n bizplace,\n originInv,\n palletChanges,\n fromPalletId\n )\n\n const unitUomValue: number = remainUomValue / remainQty\n let newPalletChange: PalletChangesInterface = {\n fromPalletId,\n toPalletId,\n reducedQty: 0,\n reducedUomValue: 0\n }\n if (locationName) {\n newPalletChange.locationName = locationName\n } else {\n originInv = await tx.getRepository(Inventory).findOne({\n where: { id: originInv.id },\n relations: ['location']\n })\n newPalletChange.locationName = originInv.location.name\n }\n\n if (remainQty < targetVas.qty) {\n // 남은 수량으로 전체 작업을 처리할 수 없는 경우\n newPalletChange.reducedQty = remainQty\n newPalletChange.reducedUomValue = remainQty * unitUomValue\n } else {\n // 남은 수량으로 전체 작업을 처리할 수 있는 경우\n newPalletChange.reducedQty = targetVas.qty\n newPalletChange.reducedUomValue = targetVas.uomValue\n }\n\n palletChanges.push(newPalletChange)\n operationGuide.data.relabeledFrom = palletChanges\n\n // Update every order vas to share same operation guide\n await updateRelatedOrderVas<RelabelingGuide>(tx, domain, bizplace, wsd, targetVas, operationGuide, user)\n await executeVas(tx, domain, user, wsd)\n }\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo-relabeling.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"undo-relabeling.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.ts"],"names":[],"mappings":";;;AACA,2DAA+D;AAG/D,kDAAmG;AAGtF,QAAA,sBAAsB,GAAG;IACpC,KAAK,CAAC,cAAc,CAClB,CAAM,EACN,EAAE,mBAAmB,EAAE,UAAU,EAA6E,EAC9G,OAAY;QAEZ,oCAAoC;QACpC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,GAAG,GAAoB,MAAM,IAAA,uCAAwB,EAAC,EAAE,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAA;QAC5F,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAgD,GAAG,CAAA;QAEhF,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;QACvG,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAA;QAC1D,MAAM,QAAQ,GAAiB,aAAa,IAAI,WAAW,IAAI,QAAQ,CAAA;QAEvE,IAAI,cAAc,GAA6C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QACnG,IAAI,kBAAkB,GAAoB,cAAc,CAAC,IAAI,CAAA;QAE7D,MAAM,YAAY,GAAW,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAA;QACzD,yDAAyD;QACzD,cAAc,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,aAAa,CAAC,MAAM,CACzE,CAAC,EAA0B,EAAE,EAAE,CAC7B,EAAE,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC,YAAY,KAAK,YAAY,IAAI,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC,CACzG,CAAA;QAED,IAAI,CAAC,CAAC,QAAQ,YAAY,qBAAQ,CAAC,EAAE;YACnC,MAAM,IAAA,+BAAgB,EAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;SAC5F;QAED,0DAA0D;QAC1D,MAAM,IAAA,oCAAqB,EAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC;CACF,CAAA","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { OrderVas, VasOrder } from '@things-factory/sales-base'\n\nimport { WorksheetDetail } from '../../../../../entities'\nimport { dismissInventory, getWorksheetDetailByName, updateRelatedOrderVas } from '../common-utils'\nimport { OperationGuideInterface, PalletChangesInterface, RefOrderType, RelabelingGuide } from '../interfaces'\n\nexport const undoRelabelingResolver = {\n async undoRelabeling(\n _: any,\n { worksheetDetailName, toPalletId }: { worksheetDetailName: string; fromPalletId: string; toPalletId: string },\n context: any\n ): Promise<void> {\n /** Initialize required variables */\n const { tx, domain, user } = context.state\n const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)\n const { bizplace, targetVas }: { bizplace: Bizplace; targetVas: OrderVas } = wsd\n\n if (!targetVas) throw new Error(`Couldn't find any related target vas, using current worksheet detail`)\n const { arrivalNotice, releaseGood, vasOrder } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder\n\n let operationGuide: OperationGuideInterface<RelabelingGuide> = JSON.parse(targetVas.operationGuide)\n let operationGuideData: RelabelingGuide = operationGuide.data\n\n const fromPalletId: string = targetVas.inventory.palletId\n // Filter out pallets which has same id with undoPalletId\n operationGuide.data.relabeledFrom = operationGuideData.relabeledFrom.filter(\n (pc: PalletChangesInterface) =>\n pc.fromPalletId !== fromPalletId || (pc.fromPalletId === fromPalletId && pc.toPalletId !== toPalletId)\n )\n\n if (!(refOrder instanceof VasOrder)) {\n await dismissInventory(tx, wsd, targetVas, operationGuide.data.relabeledFrom, fromPalletId)\n }\n\n // Update every related operation guide to share same data\n await updateRelatedOrderVas(tx, domain, bizplace, wsd, targetVas, operationGuide, user)\n }\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js
CHANGED
|
@@ -7,7 +7,8 @@ const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
|
7
7
|
const common_utils_1 = require("../common-utils");
|
|
8
8
|
const interfaces_1 = require("../interfaces");
|
|
9
9
|
async function completeRepackaging(trxMgr, orderVas, user) {
|
|
10
|
-
orderVas = await trxMgr.getRepository(sales_base_1.OrderVas).findOne(
|
|
10
|
+
orderVas = await trxMgr.getRepository(sales_base_1.OrderVas).findOne({
|
|
11
|
+
where: { id: orderVas.id },
|
|
11
12
|
relations: [
|
|
12
13
|
'domain',
|
|
13
14
|
'bizplace',
|
|
@@ -60,7 +61,7 @@ async function completeRepackaging(trxMgr, orderVas, user) {
|
|
|
60
61
|
for (const rf of repackedFroms) {
|
|
61
62
|
let foundInventory = await trxMgr.getRepository(warehouse_base_1.Inventory).findOne({
|
|
62
63
|
where: {
|
|
63
|
-
domain,
|
|
64
|
+
domain: { id: domain.id },
|
|
64
65
|
bizplace,
|
|
65
66
|
palletId: rf.fromPalletId
|
|
66
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete-repackaging.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Product } from '@things-factory/product-base'\nimport { OrderVas } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'\n\nimport { deductProductAmount, temporaryGetCurrentAmount, upsertInventory } from '../common-utils'\nimport {\n FeaturedInventoryInterface,\n OperationGuideInterface,\n PackingUnits,\n RefOrderType,\n RepackagingGuide,\n RepackedInvInfo,\n TemporaryPalletChangesInterface\n} from '../interfaces'\n\nexport async function completeRepackaging(trxMgr: EntityManager, orderVas: OrderVas, user: User): Promise<void> {\n orderVas = await trxMgr.getRepository(OrderVas).findOne(orderVas.id, {\n relations: [\n 'domain',\n 'bizplace',\n 'inventory',\n 'inventory.product',\n 'inventory.productDetail',\n 'arrivalNotice',\n 'releaseGood',\n 'vasOrder',\n 'vas'\n ]\n })\n const domain: Domain = orderVas.domain\n const bizplace: Bizplace = orderVas.bizplace\n let originInv: Inventory = orderVas.inventory\n let transactionType: string = INVENTORY_TRANSACTION_TYPE.REPACKAGING\n const operationGuide: OperationGuideInterface<RepackagingGuide> = JSON.parse(orderVas.operationGuide)\n const operationGuideData: RepackagingGuide = operationGuide.data\n const packingUnit: string = operationGuideData.packingUnit\n const stdAmount: number = operationGuideData.stdAmount\n const toPackingType: string = operationGuideData.toPackingType\n const { arrivalNotice, releaseGood, vasOrder } = orderVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder\n const repackedInvs: RepackedInvInfo[] = operationGuideData.repackedInvs\n const repackedFroms: TemporaryPalletChangesInterface[] = extractRepackedFroms(\n operationGuideData,\n orderVas,\n packingUnit\n )\n\n if (orderVas.vas && orderVas.vas.operationGuide === 'vas-repack-relabel') {\n transactionType = INVENTORY_TRANSACTION_TYPE.REPACKAGING_RELABELING\n const toProduct: any = operationGuideData.toProduct\n\n // please add domain filter as well\n const foundProduct: Product = await trxMgr.getRepository(Product).findOne({\n where: {\n id: toProduct.product.id,\n sku: toProduct.product.sku,\n name: toProduct.product.name\n }\n })\n\n if (!foundProduct) {\n throw new Error(`Cannot find product with SKU ${toProduct.product.sku}`)\n }\n\n originInv.product = foundProduct\n originInv.batchId = operationGuideData.toBatchId\n originInv.productDetail = toProduct.productDetailId\n }\n\n // create repacked inventories based on repackedInvs\n for (const ri of repackedInvs) {\n const repackedFromList: TemporaryPalletChangesInterface[] = ri.repackedFrom.filter(\n (rf: TemporaryPalletChangesInterface) => rf.toPalletId === ri.palletId\n )\n\n const { qty, uomValue } = temporaryGetCurrentAmount(repackedFromList, ri.palletId, packingUnit, stdAmount)\n /* const changedInv: Inventory = */ await upsertInventory(\n trxMgr,\n domain,\n bizplace,\n user,\n originInv,\n refOrder,\n ri.palletId,\n ri.locationName,\n toPackingType,\n packingUnit == PackingUnits.QTY ? qty : ri.repackedPkgQty,\n uomValue,\n transactionType,\n stdAmount,\n packingUnit\n )\n }\n\n for (const rf of repackedFroms) {\n let foundInventory: Inventory = await trxMgr.getRepository(Inventory).findOne({\n where: {\n domain,\n bizplace,\n palletId: rf.fromPalletId\n }\n })\n\n if (foundInventory) {\n let reducedQty: number\n let reducedUomValue: number\n\n if (packingUnit == PackingUnits.QTY) {\n reducedQty = rf.reducedUnitQty / rf.packingSize\n reducedUomValue = rf.reducedUomValue\n } else if (packingUnit == PackingUnits.UOM) {\n // reducedQty will remain 0 if there is remaining uomValue\n reducedQty = foundInventory.uomValue - rf.reducedUomValue == 0 ? 1 : 0\n reducedUomValue = rf.reducedUomValue\n }\n\n foundInventory = await deductProductAmount(\n trxMgr,\n domain,\n bizplace,\n user,\n refOrder,\n foundInventory,\n reducedQty,\n getRoundedAmount(reducedUomValue, 1000),\n transactionType,\n rf.originalQty,\n getRoundedAmount(rf.originalUomValue, 1000),\n rf.currentUnitQty,\n rf.currentUomValue\n )\n }\n }\n}\n\nfunction extractRepackedFroms(\n operationGuideData: RepackagingGuide,\n orderVas: OrderVas,\n packingUnit: string\n): Partial<TemporaryPalletChangesInterface[]> {\n return (\n operationGuideData.repackedInvs\n .reduce((acc, ri: RepackedInvInfo) => {\n acc = [...acc, ...ri.repackedFrom]\n return acc\n }, [])\n // .flat()\n .reduce((acc, inv) => {\n let foundInv = acc.find(a => a.fromPalletId == inv.fromPalletId)\n if (foundInv) {\n if (packingUnit == PackingUnits.QTY) {\n foundInv.reducedUnitQty += inv.reducedUnitQty\n foundInv.reducedUomValue += inv.reducedUomValue\n } else if (packingUnit == PackingUnits.UOM) {\n foundInv.reducedQty += inv.reducedQty\n foundInv.reducedUomValue += inv.reducedUomValue\n }\n } else {\n if (packingUnit == PackingUnits.QTY) {\n acc.push({\n fromPalletId: inv.fromPalletId,\n reducedUnitQty: inv.reducedUnitQty,\n reducedUomValue: inv.reducedUomValue,\n packingSize: inv.packingSize\n })\n } else if (packingUnit == PackingUnits.UOM) {\n acc.push({\n fromPalletId: inv.fromPalletId,\n reducedQty: inv.reducedQty,\n reducedUomValue: inv.reducedUomValue,\n packingSize: inv.packingSize\n })\n }\n }\n\n return acc\n }, [])\n .map((pc: TemporaryPalletChangesInterface) => {\n const featuredInvs: FeaturedInventoryInterface[] = operationGuideData.featuredInvs || []\n const foundFeaturedInv = featuredInvs.find(\n (inv: FeaturedInventoryInterface) => inv.palletId === pc.fromPalletId\n )\n\n let originalQty: number\n let originalUomValue: number\n\n if (foundFeaturedInv) {\n originalQty = foundFeaturedInv.originalQty\n originalUomValue = foundFeaturedInv.originalUomValue\n\n if (packingUnit == PackingUnits.QTY) {\n pc.currentUnitQty = foundFeaturedInv.currentUnitQty\n } else if (packingUnit == PackingUnits.UOM) {\n pc.currentUomValue = foundFeaturedInv.currentUomValue\n }\n } else {\n originalQty =\n packingUnit == PackingUnits.UOM\n ? orderVas.qty\n : orderVas.qty -\n featuredInvs.reduce((qty: number, inv: FeaturedInventoryInterface) => {\n return qty + inv.originalQty\n }, 0)\n\n originalUomValue =\n orderVas.uomValue -\n featuredInvs.reduce((uomValue: number, inv: FeaturedInventoryInterface) => {\n return uomValue + inv.originalUomValue\n }, 0)\n\n if (packingUnit == PackingUnits.QTY) {\n pc.currentUnitQty = originalQty - pc.reducedUnitQty / pc.packingSize\n } else if (packingUnit == PackingUnits.UOM) {\n pc.currentUomValue = getRoundedAmount(originalUomValue - pc.reducedUomValue)\n }\n }\n\n return {\n ...pc,\n originalQty,\n originalUomValue\n }\n })\n )\n}\n\nfunction getRoundedAmount(value: number, decimalPlace: number = 100): number {\n return Math.round((value + Number.EPSILON) * decimalPlace) / decimalPlace\n}\n"]}
|
|
1
|
+
{"version":3,"file":"complete-repackaging.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Product } from '@things-factory/product-base'\nimport { OrderVas } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'\n\nimport { deductProductAmount, temporaryGetCurrentAmount, upsertInventory } from '../common-utils'\nimport {\n FeaturedInventoryInterface,\n OperationGuideInterface,\n PackingUnits,\n RefOrderType,\n RepackagingGuide,\n RepackedInvInfo,\n TemporaryPalletChangesInterface\n} from '../interfaces'\n\nexport async function completeRepackaging(trxMgr: EntityManager, orderVas: OrderVas, user: User): Promise<void> {\n orderVas = await trxMgr.getRepository(OrderVas).findOne({\n where: { id: orderVas.id },\n relations: [\n 'domain',\n 'bizplace',\n 'inventory',\n 'inventory.product',\n 'inventory.productDetail',\n 'arrivalNotice',\n 'releaseGood',\n 'vasOrder',\n 'vas'\n ]\n })\n const domain: Domain = orderVas.domain\n const bizplace: Bizplace = orderVas.bizplace\n let originInv: Inventory = orderVas.inventory\n let transactionType: string = INVENTORY_TRANSACTION_TYPE.REPACKAGING\n const operationGuide: OperationGuideInterface<RepackagingGuide> = JSON.parse(orderVas.operationGuide)\n const operationGuideData: RepackagingGuide = operationGuide.data\n const packingUnit: string = operationGuideData.packingUnit\n const stdAmount: number = operationGuideData.stdAmount\n const toPackingType: string = operationGuideData.toPackingType\n const { arrivalNotice, releaseGood, vasOrder } = orderVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder\n const repackedInvs: RepackedInvInfo[] = operationGuideData.repackedInvs\n const repackedFroms: TemporaryPalletChangesInterface[] = extractRepackedFroms(\n operationGuideData,\n orderVas,\n packingUnit\n )\n\n if (orderVas.vas && orderVas.vas.operationGuide === 'vas-repack-relabel') {\n transactionType = INVENTORY_TRANSACTION_TYPE.REPACKAGING_RELABELING\n const toProduct: any = operationGuideData.toProduct\n\n // please add domain filter as well\n const foundProduct: Product = await trxMgr.getRepository(Product).findOne({\n where: {\n id: toProduct.product.id,\n sku: toProduct.product.sku,\n name: toProduct.product.name\n }\n })\n\n if (!foundProduct) {\n throw new Error(`Cannot find product with SKU ${toProduct.product.sku}`)\n }\n\n originInv.product = foundProduct\n originInv.batchId = operationGuideData.toBatchId\n originInv.productDetail = toProduct.productDetailId\n }\n\n // create repacked inventories based on repackedInvs\n for (const ri of repackedInvs) {\n const repackedFromList: TemporaryPalletChangesInterface[] = ri.repackedFrom.filter(\n (rf: TemporaryPalletChangesInterface) => rf.toPalletId === ri.palletId\n )\n\n const { qty, uomValue } = temporaryGetCurrentAmount(repackedFromList, ri.palletId, packingUnit, stdAmount)\n /* const changedInv: Inventory = */ await upsertInventory(\n trxMgr,\n domain,\n bizplace,\n user,\n originInv,\n refOrder,\n ri.palletId,\n ri.locationName,\n toPackingType,\n packingUnit == PackingUnits.QTY ? qty : ri.repackedPkgQty,\n uomValue,\n transactionType,\n stdAmount,\n packingUnit\n )\n }\n\n for (const rf of repackedFroms) {\n let foundInventory: Inventory = await trxMgr.getRepository(Inventory).findOne({\n where: {\n domain: { id: domain.id },\n bizplace,\n palletId: rf.fromPalletId\n }\n })\n\n if (foundInventory) {\n let reducedQty: number\n let reducedUomValue: number\n\n if (packingUnit == PackingUnits.QTY) {\n reducedQty = rf.reducedUnitQty / rf.packingSize\n reducedUomValue = rf.reducedUomValue\n } else if (packingUnit == PackingUnits.UOM) {\n // reducedQty will remain 0 if there is remaining uomValue\n reducedQty = foundInventory.uomValue - rf.reducedUomValue == 0 ? 1 : 0\n reducedUomValue = rf.reducedUomValue\n }\n\n foundInventory = await deductProductAmount(\n trxMgr,\n domain,\n bizplace,\n user,\n refOrder,\n foundInventory,\n reducedQty,\n getRoundedAmount(reducedUomValue, 1000),\n transactionType,\n rf.originalQty,\n getRoundedAmount(rf.originalUomValue, 1000),\n rf.currentUnitQty,\n rf.currentUomValue\n )\n }\n }\n}\n\nfunction extractRepackedFroms(\n operationGuideData: RepackagingGuide,\n orderVas: OrderVas,\n packingUnit: string\n): Partial<TemporaryPalletChangesInterface[]> {\n return (\n operationGuideData.repackedInvs\n .reduce((acc, ri: RepackedInvInfo) => {\n acc = [...acc, ...ri.repackedFrom]\n return acc\n }, [])\n // .flat()\n .reduce((acc, inv) => {\n let foundInv = acc.find(a => a.fromPalletId == inv.fromPalletId)\n if (foundInv) {\n if (packingUnit == PackingUnits.QTY) {\n foundInv.reducedUnitQty += inv.reducedUnitQty\n foundInv.reducedUomValue += inv.reducedUomValue\n } else if (packingUnit == PackingUnits.UOM) {\n foundInv.reducedQty += inv.reducedQty\n foundInv.reducedUomValue += inv.reducedUomValue\n }\n } else {\n if (packingUnit == PackingUnits.QTY) {\n acc.push({\n fromPalletId: inv.fromPalletId,\n reducedUnitQty: inv.reducedUnitQty,\n reducedUomValue: inv.reducedUomValue,\n packingSize: inv.packingSize\n })\n } else if (packingUnit == PackingUnits.UOM) {\n acc.push({\n fromPalletId: inv.fromPalletId,\n reducedQty: inv.reducedQty,\n reducedUomValue: inv.reducedUomValue,\n packingSize: inv.packingSize\n })\n }\n }\n\n return acc\n }, [])\n .map((pc: TemporaryPalletChangesInterface) => {\n const featuredInvs: FeaturedInventoryInterface[] = operationGuideData.featuredInvs || []\n const foundFeaturedInv = featuredInvs.find(\n (inv: FeaturedInventoryInterface) => inv.palletId === pc.fromPalletId\n )\n\n let originalQty: number\n let originalUomValue: number\n\n if (foundFeaturedInv) {\n originalQty = foundFeaturedInv.originalQty\n originalUomValue = foundFeaturedInv.originalUomValue\n\n if (packingUnit == PackingUnits.QTY) {\n pc.currentUnitQty = foundFeaturedInv.currentUnitQty\n } else if (packingUnit == PackingUnits.UOM) {\n pc.currentUomValue = foundFeaturedInv.currentUomValue\n }\n } else {\n originalQty =\n packingUnit == PackingUnits.UOM\n ? orderVas.qty\n : orderVas.qty -\n featuredInvs.reduce((qty: number, inv: FeaturedInventoryInterface) => {\n return qty + inv.originalQty\n }, 0)\n\n originalUomValue =\n orderVas.uomValue -\n featuredInvs.reduce((uomValue: number, inv: FeaturedInventoryInterface) => {\n return uomValue + inv.originalUomValue\n }, 0)\n\n if (packingUnit == PackingUnits.QTY) {\n pc.currentUnitQty = originalQty - pc.reducedUnitQty / pc.packingSize\n } else if (packingUnit == PackingUnits.UOM) {\n pc.currentUomValue = getRoundedAmount(originalUomValue - pc.reducedUomValue)\n }\n }\n\n return {\n ...pc,\n originalQty,\n originalUomValue\n }\n })\n )\n}\n\nfunction getRoundedAmount(value: number, decimalPlace: number = 100): number {\n return Math.round((value + Number.EPSILON) * decimalPlace) / decimalPlace\n}\n"]}
|
|
@@ -11,7 +11,7 @@ exports.repackagingResolver = {
|
|
|
11
11
|
async repackaging(_, { worksheetDetailName, fromPalletId, toPalletId, locationName, packageQty }, context) {
|
|
12
12
|
const { tx, domain, user } = context.state;
|
|
13
13
|
const location = await tx.getRepository(warehouse_base_1.Location).findOne({
|
|
14
|
-
where: { domain, name: locationName },
|
|
14
|
+
where: { domain: { id: domain.id }, name: locationName },
|
|
15
15
|
relations: ['warehouse']
|
|
16
16
|
});
|
|
17
17
|
if (!location)
|
|
@@ -178,7 +178,7 @@ function getRepackedPackageQty(repackedInvs) {
|
|
|
178
178
|
*/
|
|
179
179
|
async function getRequiredPackageQty(tx, domain, bizplace, worksheet, currentOV, packingUnit, stdAmount, remainder) {
|
|
180
180
|
const relatedWSDs = await tx.getRepository(entities_1.WorksheetDetail).find({
|
|
181
|
-
where: { domain, bizplace, worksheet },
|
|
181
|
+
where: { domain: { id: domain.id }, bizplace: { id: bizplace.id }, worksheet: { id: worksheet.id } },
|
|
182
182
|
relations: ['targetVas', 'targetVas.vas', 'targetVas.inventory']
|
|
183
183
|
});
|
|
184
184
|
const orderVASs = relatedWSDs.map((wsd) => wsd.targetVas);
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repackaging.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { OrderVas } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, Location, Warehouse } from '@things-factory/warehouse-base'\n\nimport { Worksheet, WorksheetDetail } from '../../../../../entities'\nimport { checkPalletDuplication, checkPalletIdenticallity } from '../../../../../utils'\nimport { executeVas } from '../../vas/execute-vas'\nimport {\n assignInventory,\n getWorksheetDetailByName,\n temporaryGetRemainInventoryAmount,\n updateRelatedOrderVas\n} from '../common-utils'\nimport {\n FeaturedInventoryInterface,\n OperationGuideInterface,\n PackingUnits,\n RefOrderType,\n RepackagingGuide,\n RepackedInvInfo,\n TemporaryPalletChangesInterface\n} from '../interfaces'\n\nexport const repackagingResolver = {\n async repackaging(_: any, { worksheetDetailName, fromPalletId, toPalletId, locationName, packageQty }, context: any) {\n const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state\n const location: Location = await tx.getRepository(Location).findOne({\n where: { domain, name: locationName },\n relations: ['warehouse']\n })\n if (!location) throw new Error(`Couldn't find location by its name (${locationName})`)\n const warehouse: Warehouse = location.warehouse\n if (!warehouse) throw new Error(`Location (name: ${locationName}) doesn't have any relation with warehouse`)\n\n // Find target worksheet detail & target order vas & bizplace\n const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)\n let { bizplace, targetVas }: { bizplace: Bizplace; targetVas: OrderVas } = wsd\n\n // Check whether from pallet has valid condition compared with customer's request\n // Batch ID, product and packing type\n const { identicallity, errorMessage } = await checkPalletIdenticallity(\n domain,\n bizplace,\n fromPalletId,\n targetVas.targetBatchId,\n targetVas.targetProduct,\n targetVas.packingType,\n tx\n )\n if (!identicallity) throw new Error(errorMessage)\n\n // Check whether there's duplicated inventory in warehouse.\n if (await checkPalletDuplication(domain, bizplace, toPalletId, tx))\n throw new Error(`The lot ID (${toPalletId}) is duplicated.`)\n\n // Init refOrder\n const { arrivalNotice, releaseGood, vasOrder }: { [key: string]: RefOrderType } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder || null\n if (!refOrder) throw new Error(`Couldn't find reference order with current order vas`)\n\n // Assign inventory if specific inventory isn't assigned yet.\n // This case is occured when the VAS order comes with Arrival Notice or Release Good\n if (!targetVas.inventory) {\n targetVas = await assignInventory(tx, domain, bizplace, user, wsd, refOrder, targetVas, fromPalletId)\n }\n\n let originInv: Inventory = targetVas.inventory\n\n let operationGuide: OperationGuideInterface<RepackagingGuide> = JSON.parse(targetVas.operationGuide)\n let operationGuideData: RepackagingGuide = operationGuide.data\n let featuredInvs: FeaturedInventoryInterface[] = operationGuideData.featuredInvs\n const packingUnit: string = operationGuideData.packingUnit\n const stdAmount: number = operationGuideData.stdAmount\n\n let repackedInvs: RepackedInvInfo[] = operationGuideData.repackedInvs\n\n if (repackedInvs?.length && repackedInvs.some((inv: RepackedInvInfo) => inv.palletId == toPalletId))\n throw new Error(`Unable to repack into the same lot ID ${toPalletId}`)\n\n let palletChanges: TemporaryPalletChangesInterface[] = []\n\n if (repackedInvs && repackedInvs.length) {\n palletChanges = repackedInvs.reduce((acc, ri: RepackedInvInfo) => {\n acc = [...acc, ...ri.repackedFrom]\n return acc\n }, [])\n // .map((ri: RepackedInvInfo) => ri.repackedFrom).flat()\n } else if (!repackedInvs) {\n operationGuideData.repackedInvs = []\n }\n\n // get remainUnitQty of originInv (from previous repackaging actions)\n let remainOriginInv: { remainUomValue: number; remainUnitQty: number } = {\n remainUomValue: 0,\n remainUnitQty: 0\n }\n let remainUomValue: number = 0\n let remainUnitQty: number = 0\n\n try {\n remainOriginInv = await temporaryGetRemainInventoryAmount(\n tx,\n refOrder,\n domain,\n bizplace,\n originInv,\n palletChanges,\n fromPalletId\n )\n\n remainUomValue = remainOriginInv.remainUomValue\n remainUnitQty = remainOriginInv.remainUnitQty\n } catch (err) {}\n\n let repackedFroms: TemporaryPalletChangesInterface[] = []\n let repackedInv: RepackedInvInfo = getRepackedInv(operationGuideData, toPalletId, locationName)\n let isCompleted: boolean = false\n const repackagingAmount: number = stdAmount * packageQty\n\n if (packingUnit === PackingUnits.QTY) {\n const singleUnitUomValue: number = originInv.uomValue / (originInv.qty * originInv.packingSize)\n // const singleUnitUomValue: number = getRoundedAmount(\n // originInv.uomValue / (originInv.qty * originInv.packingSize),\n // 10000\n // )\n\n if (featuredInvs?.length && repackagingAmount > remainUnitQty) {\n const inventoriesChanges = deductedFeaturedInventories(\n featuredInvs,\n repackagingAmount,\n remainUnitQty,\n toPalletId,\n 'currentUnitQty'\n )\n\n operationGuideData.featuredInvs = inventoriesChanges.featuredInvs\n repackedFroms = [...repackedFroms, ...inventoriesChanges.repackedFroms]\n\n if (remainUnitQty > 0) {\n repackedFroms.push({\n fromPalletId,\n toPalletId,\n reducedUnitQty: remainUnitQty,\n reducedUomValue: remainUnitQty * singleUnitUomValue,\n packingSize: originInv.packingSize\n })\n }\n } else if (remainUnitQty >= repackagingAmount) {\n repackedFroms.push({\n fromPalletId,\n toPalletId,\n reducedUnitQty: repackagingAmount,\n reducedUomValue: repackagingAmount * singleUnitUomValue,\n packingSize: originInv.packingSize\n })\n }\n\n repackedInv.repackedFrom = repackedFroms\n const totalPackedQty: number = repackedInv.repackedFrom.reduce(\n (qty: number, rf: TemporaryPalletChangesInterface) => (qty += rf.reducedUnitQty),\n 0\n )\n repackedInv.repackedPkgQty = totalPackedQty / stdAmount\n isCompleted = operationGuideData.requiredPackageQty == 0\n } else if (packingUnit === PackingUnits.UOM) {\n if (featuredInvs?.length && repackagingAmount > remainUomValue) {\n const inventoriesChanges = deductedFeaturedInventories(\n featuredInvs,\n repackagingAmount,\n remainUomValue,\n toPalletId,\n 'currentUomValue'\n )\n\n operationGuideData.featuredInvs = inventoriesChanges.featuredInvs\n repackedFroms = [...repackedFroms, ...inventoriesChanges.repackedFroms]\n\n if (remainUomValue > 0) {\n repackedFroms.push({\n fromPalletId,\n toPalletId,\n reducedQty: 0,\n reducedUomValue: remainUomValue,\n // reducedUomValue: getRoundedAmount(remainUomValue),\n packingSize: originInv.packingSize\n })\n }\n } else if (remainUomValue >= repackagingAmount) {\n repackedFroms.push({\n fromPalletId,\n toPalletId,\n reducedQty: 0,\n reducedUomValue: repackagingAmount,\n // reducedUomValue: getRoundedAmount(repackagingAmount),\n packingSize: originInv.packingSize\n })\n }\n\n repackedInv.repackedFrom = repackedFroms\n const totalPackedUomValue: number = repackedInv.repackedFrom.reduce(\n (qty: number, rf: TemporaryPalletChangesInterface) => (qty += rf.reducedUomValue),\n 0\n )\n repackedInv.repackedPkgQty = totalPackedUomValue / stdAmount\n // repackedInv.repackedPkgQty = getRoundedAmount(totalPackedUomValue / stdAmount)\n isCompleted = operationGuideData.requiredPackageQty == 0\n }\n\n // Get total required package qty to complete this VAS Task\n const requiredPackageQty: number = await getRequiredPackageQty(\n tx,\n domain,\n bizplace,\n wsd.worksheet,\n targetVas,\n packingUnit,\n stdAmount,\n operationGuideData?.remainder || 0\n )\n // Get total repacked package qty until this transaction\n const repackedPackageQty: number = getRepackedPackageQty(operationGuideData.repackedInvs)\n const remainRequiredPackageQty: number = getRoundedAmount(requiredPackageQty - repackedPackageQty)\n\n // const requiredPackageQty: number = operationGuideData.requiredPackageQty - repackedPackageQty\n\n operationGuide.data = {\n ...operationGuideData,\n requiredPackageQty: remainRequiredPackageQty\n }\n\n // Update every order vas to share same operation guide\n await updateRelatedOrderVas<RepackagingGuide>(tx, domain, bizplace, wsd, targetVas, operationGuide, user)\n\n // ######################### KIV DULU YANG NI #########################\n if (isCompleted || remainRequiredPackageQty === 0) {\n await executeVas(tx, domain, user, wsd)\n }\n }\n}\n\n/**\n * @description Get total qty of repacked.\n *\n * @param {RepackedInvInfo[]} repackedInvs\n */\nfunction getRepackedPackageQty(repackedInvs: RepackedInvInfo[]): number {\n return repackedInvs.reduce((repackedPkgQty: number, ri: RepackedInvInfo) => (repackedPkgQty += ri.repackedPkgQty), 0)\n}\n\n/**\n * @description Get total required package qty to complete this Repackagine VAS Task.\n *\n * @param {EntityManager} tx\n * @param {Domain} domain\n * @param {Bizplace} bizplace\n * @param {Worksheet} worksheet\n * @param {String} packingUnit\n * @param {Number} stdAmount\n */\nasync function getRequiredPackageQty(\n tx: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n worksheet: Worksheet,\n currentOV: OrderVas,\n packingUnit: string,\n stdAmount: number,\n remainder: number\n): Promise<number> {\n const relatedWSDs: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({\n where: { domain, bizplace, worksheet },\n relations: ['targetVas', 'targetVas.vas', 'targetVas.inventory']\n })\n\n const orderVASs: OrderVas[] = relatedWSDs.map((wsd: WorksheetDetail) => wsd.targetVas)\n const { qty, uomValue } = orderVASs\n .filter((ov: OrderVas) => ov.set === currentOV.set && ov.vas.id === currentOV.vas.id)\n .reduce(\n (total: { qty: number; uomValue: number }, ov: OrderVas) => {\n const inventory: Inventory = ov.inventory\n const packingSize: number = inventory.packingSize\n\n total.qty += ov.qty * packingSize\n total.uomValue += ov.uomValue\n\n return total\n },\n { qty: 0, uomValue: 0 }\n )\n\n if (packingUnit === PackingUnits.QTY) {\n return (qty - remainder) / stdAmount\n } else if (packingUnit === PackingUnits.UOM) {\n return Math.floor(uomValue / stdAmount)\n }\n}\n\n/**\n * @description Find repacked pallet which has same pallet id with passed pallet id as param\n * If there's no repacked pallet init new RepackedInvInfo object and return it\n *\n * @param {RepackagingGuide} operationGuideData\n * @param {String} palletId\n * @param {String} locationName\n */\nfunction getRepackedInv(operationGuideData: RepackagingGuide, palletId: string, locationName: string): RepackedInvInfo {\n let repackedInv: RepackedInvInfo = operationGuideData.repackedInvs.find(\n (ri: RepackedInvInfo) => ri.palletId === palletId\n )\n if (!repackedInv) {\n repackedInv = {\n palletId,\n locationName,\n repackedPkgQty: 0,\n repackedFrom: []\n }\n operationGuideData.repackedInvs.push(repackedInv)\n }\n\n return repackedInv\n}\n\n/**\n * @description To transfer qty or uom value from featured inventories into origin inventory\n * If and only if the origin inventory has insufficient amount\n *\n * @param {FeaturedInventoryInterface} featuredInvs\n * @param {Number} repackagingAmount\n * @param {Number} remainingAmount\n * @param {String} packingUnit -- value is strictly for qty / uomValue\n */\nfunction deductedFeaturedInventories(\n featuredInvs: FeaturedInventoryInterface[],\n repackagingAmount: number,\n remainingAmount: number,\n toPalletId: string,\n packingUnit: string\n): { featuredInvs: FeaturedInventoryInterface[]; repackedFroms: TemporaryPalletChangesInterface[] } {\n let requiredAmount: number = getRoundedAmount(repackagingAmount - remainingAmount)\n const repackedFroms: TemporaryPalletChangesInterface[] = []\n\n featuredInvs = featuredInvs.map(inv => {\n if (requiredAmount > 0 && inv[packingUnit] > 0) {\n let reducedAmount: number = requiredAmount\n\n if (inv[packingUnit] >= requiredAmount) {\n inv[packingUnit] = inv[packingUnit] - requiredAmount\n // inv[packingUnit] = getRoundedAmount(inv[packingUnit] - requiredAmount)\n requiredAmount = 0\n } else {\n requiredAmount = requiredAmount - inv[packingUnit]\n // requiredAmount = getRoundedAmount(requiredAmount - inv[packingUnit])\n reducedAmount = inv[packingUnit]\n inv[packingUnit] = 0\n }\n\n switch (packingUnit) {\n case 'currentUnitQty':\n repackedFroms.push({\n fromPalletId: inv.palletId,\n toPalletId,\n reducedUnitQty: reducedAmount,\n reducedUomValue: reducedAmount * inv.uomValuePerQty,\n // reducedUomValue: getRoundedAmount(reducedAmount * inv.uomValuePerQty),\n packingSize: featuredInvs.find(inv => inv.palletId == inv.palletId).packingSize\n })\n break\n\n case 'currentUomValue':\n repackedFroms.push({\n fromPalletId: inv.palletId,\n toPalletId,\n reducedQty: 0,\n reducedUomValue: reducedAmount,\n // reducedUomValue: getRoundedAmount(reducedAmount),\n packingSize: featuredInvs.find(inv => inv.palletId == inv.palletId).packingSize\n })\n break\n }\n }\n\n return inv\n })\n\n return { featuredInvs, repackedFroms }\n}\n\nfunction getRoundedAmount(value, decimalPlace = 100) {\n return Math.round((value + Number.EPSILON) * decimalPlace) / decimalPlace\n}\n"]}
|
|
1
|
+
{"version":3,"file":"repackaging.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { OrderVas } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, Location, Warehouse } from '@things-factory/warehouse-base'\n\nimport { Worksheet, WorksheetDetail } from '../../../../../entities'\nimport { checkPalletDuplication, checkPalletIdenticallity } from '../../../../../utils'\nimport { executeVas } from '../../vas/execute-vas'\nimport {\n assignInventory,\n getWorksheetDetailByName,\n temporaryGetRemainInventoryAmount,\n updateRelatedOrderVas\n} from '../common-utils'\nimport {\n FeaturedInventoryInterface,\n OperationGuideInterface,\n PackingUnits,\n RefOrderType,\n RepackagingGuide,\n RepackedInvInfo,\n TemporaryPalletChangesInterface\n} from '../interfaces'\n\nexport const repackagingResolver = {\n async repackaging(\n _: any,\n { worksheetDetailName, fromPalletId, toPalletId, locationName, packageQty },\n context: ResolverContext\n ) {\n const { tx, domain, user } = context.state\n const location: Location = await tx.getRepository(Location).findOne({\n where: { domain: { id: domain.id }, name: locationName },\n relations: ['warehouse']\n })\n if (!location) throw new Error(`Couldn't find location by its name (${locationName})`)\n const warehouse: Warehouse = location.warehouse\n if (!warehouse) throw new Error(`Location (name: ${locationName}) doesn't have any relation with warehouse`)\n\n // Find target worksheet detail & target order vas & bizplace\n const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)\n let { bizplace, targetVas }: { bizplace: Bizplace; targetVas: OrderVas } = wsd\n\n // Check whether from pallet has valid condition compared with customer's request\n // Batch ID, product and packing type\n const { identicallity, errorMessage } = await checkPalletIdenticallity(\n domain,\n bizplace,\n fromPalletId,\n targetVas.targetBatchId,\n targetVas.targetProduct,\n targetVas.packingType,\n tx\n )\n if (!identicallity) throw new Error(errorMessage)\n\n // Check whether there's duplicated inventory in warehouse.\n if (await checkPalletDuplication(domain, bizplace, toPalletId, tx))\n throw new Error(`The lot ID (${toPalletId}) is duplicated.`)\n\n // Init refOrder\n const { arrivalNotice, releaseGood, vasOrder }: { [key: string]: RefOrderType } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder || null\n if (!refOrder) throw new Error(`Couldn't find reference order with current order vas`)\n\n // Assign inventory if specific inventory isn't assigned yet.\n // This case is occured when the VAS order comes with Arrival Notice or Release Good\n if (!targetVas.inventory) {\n targetVas = await assignInventory(tx, domain, bizplace, user, wsd, refOrder, targetVas, fromPalletId)\n }\n\n let originInv: Inventory = targetVas.inventory\n\n let operationGuide: OperationGuideInterface<RepackagingGuide> = JSON.parse(targetVas.operationGuide)\n let operationGuideData: RepackagingGuide = operationGuide.data\n let featuredInvs: FeaturedInventoryInterface[] = operationGuideData.featuredInvs\n const packingUnit: string = operationGuideData.packingUnit\n const stdAmount: number = operationGuideData.stdAmount\n\n let repackedInvs: RepackedInvInfo[] = operationGuideData.repackedInvs\n\n if (repackedInvs?.length && repackedInvs.some((inv: RepackedInvInfo) => inv.palletId == toPalletId))\n throw new Error(`Unable to repack into the same lot ID ${toPalletId}`)\n\n let palletChanges: TemporaryPalletChangesInterface[] = []\n\n if (repackedInvs && repackedInvs.length) {\n palletChanges = repackedInvs.reduce((acc, ri: RepackedInvInfo) => {\n acc = [...acc, ...ri.repackedFrom]\n return acc\n }, [])\n // .map((ri: RepackedInvInfo) => ri.repackedFrom).flat()\n } else if (!repackedInvs) {\n operationGuideData.repackedInvs = []\n }\n\n // get remainUnitQty of originInv (from previous repackaging actions)\n let remainOriginInv: { remainUomValue: number; remainUnitQty: number } = {\n remainUomValue: 0,\n remainUnitQty: 0\n }\n let remainUomValue: number = 0\n let remainUnitQty: number = 0\n\n try {\n remainOriginInv = await temporaryGetRemainInventoryAmount(\n tx,\n refOrder,\n domain,\n bizplace,\n originInv,\n palletChanges,\n fromPalletId\n )\n\n remainUomValue = remainOriginInv.remainUomValue\n remainUnitQty = remainOriginInv.remainUnitQty\n } catch (err) {}\n\n let repackedFroms: TemporaryPalletChangesInterface[] = []\n let repackedInv: RepackedInvInfo = getRepackedInv(operationGuideData, toPalletId, locationName)\n let isCompleted: boolean = false\n const repackagingAmount: number = stdAmount * packageQty\n\n if (packingUnit === PackingUnits.QTY) {\n const singleUnitUomValue: number = originInv.uomValue / (originInv.qty * originInv.packingSize)\n // const singleUnitUomValue: number = getRoundedAmount(\n // originInv.uomValue / (originInv.qty * originInv.packingSize),\n // 10000\n // )\n\n if (featuredInvs?.length && repackagingAmount > remainUnitQty) {\n const inventoriesChanges = deductedFeaturedInventories(\n featuredInvs,\n repackagingAmount,\n remainUnitQty,\n toPalletId,\n 'currentUnitQty'\n )\n\n operationGuideData.featuredInvs = inventoriesChanges.featuredInvs\n repackedFroms = [...repackedFroms, ...inventoriesChanges.repackedFroms]\n\n if (remainUnitQty > 0) {\n repackedFroms.push({\n fromPalletId,\n toPalletId,\n reducedUnitQty: remainUnitQty,\n reducedUomValue: remainUnitQty * singleUnitUomValue,\n packingSize: originInv.packingSize\n })\n }\n } else if (remainUnitQty >= repackagingAmount) {\n repackedFroms.push({\n fromPalletId,\n toPalletId,\n reducedUnitQty: repackagingAmount,\n reducedUomValue: repackagingAmount * singleUnitUomValue,\n packingSize: originInv.packingSize\n })\n }\n\n repackedInv.repackedFrom = repackedFroms\n const totalPackedQty: number = repackedInv.repackedFrom.reduce(\n (qty: number, rf: TemporaryPalletChangesInterface) => (qty += rf.reducedUnitQty),\n 0\n )\n repackedInv.repackedPkgQty = totalPackedQty / stdAmount\n isCompleted = operationGuideData.requiredPackageQty == 0\n } else if (packingUnit === PackingUnits.UOM) {\n if (featuredInvs?.length && repackagingAmount > remainUomValue) {\n const inventoriesChanges = deductedFeaturedInventories(\n featuredInvs,\n repackagingAmount,\n remainUomValue,\n toPalletId,\n 'currentUomValue'\n )\n\n operationGuideData.featuredInvs = inventoriesChanges.featuredInvs\n repackedFroms = [...repackedFroms, ...inventoriesChanges.repackedFroms]\n\n if (remainUomValue > 0) {\n repackedFroms.push({\n fromPalletId,\n toPalletId,\n reducedQty: 0,\n reducedUomValue: remainUomValue,\n // reducedUomValue: getRoundedAmount(remainUomValue),\n packingSize: originInv.packingSize\n })\n }\n } else if (remainUomValue >= repackagingAmount) {\n repackedFroms.push({\n fromPalletId,\n toPalletId,\n reducedQty: 0,\n reducedUomValue: repackagingAmount,\n // reducedUomValue: getRoundedAmount(repackagingAmount),\n packingSize: originInv.packingSize\n })\n }\n\n repackedInv.repackedFrom = repackedFroms\n const totalPackedUomValue: number = repackedInv.repackedFrom.reduce(\n (qty: number, rf: TemporaryPalletChangesInterface) => (qty += rf.reducedUomValue),\n 0\n )\n repackedInv.repackedPkgQty = totalPackedUomValue / stdAmount\n // repackedInv.repackedPkgQty = getRoundedAmount(totalPackedUomValue / stdAmount)\n isCompleted = operationGuideData.requiredPackageQty == 0\n }\n\n // Get total required package qty to complete this VAS Task\n const requiredPackageQty: number = await getRequiredPackageQty(\n tx,\n domain,\n bizplace,\n wsd.worksheet,\n targetVas,\n packingUnit,\n stdAmount,\n operationGuideData?.remainder || 0\n )\n // Get total repacked package qty until this transaction\n const repackedPackageQty: number = getRepackedPackageQty(operationGuideData.repackedInvs)\n const remainRequiredPackageQty: number = getRoundedAmount(requiredPackageQty - repackedPackageQty)\n\n // const requiredPackageQty: number = operationGuideData.requiredPackageQty - repackedPackageQty\n\n operationGuide.data = {\n ...operationGuideData,\n requiredPackageQty: remainRequiredPackageQty\n }\n\n // Update every order vas to share same operation guide\n await updateRelatedOrderVas<RepackagingGuide>(tx, domain, bizplace, wsd, targetVas, operationGuide, user)\n\n // ######################### KIV DULU YANG NI #########################\n if (isCompleted || remainRequiredPackageQty === 0) {\n await executeVas(tx, domain, user, wsd)\n }\n }\n}\n\n/**\n * @description Get total qty of repacked.\n *\n * @param {RepackedInvInfo[]} repackedInvs\n */\nfunction getRepackedPackageQty(repackedInvs: RepackedInvInfo[]): number {\n return repackedInvs.reduce((repackedPkgQty: number, ri: RepackedInvInfo) => (repackedPkgQty += ri.repackedPkgQty), 0)\n}\n\n/**\n * @description Get total required package qty to complete this Repackagine VAS Task.\n *\n * @param {EntityManager} tx\n * @param {Domain} domain\n * @param {Bizplace} bizplace\n * @param {Worksheet} worksheet\n * @param {String} packingUnit\n * @param {Number} stdAmount\n */\nasync function getRequiredPackageQty(\n tx: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n worksheet: Worksheet,\n currentOV: OrderVas,\n packingUnit: string,\n stdAmount: number,\n remainder: number\n): Promise<number> {\n const relatedWSDs: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({\n where: { domain: { id: domain.id }, bizplace: { id: bizplace.id }, worksheet: { id: worksheet.id } },\n relations: ['targetVas', 'targetVas.vas', 'targetVas.inventory']\n })\n\n const orderVASs: OrderVas[] = relatedWSDs.map((wsd: WorksheetDetail) => wsd.targetVas)\n const { qty, uomValue } = orderVASs\n .filter((ov: OrderVas) => ov.set === currentOV.set && ov.vas.id === currentOV.vas.id)\n .reduce(\n (total: { qty: number; uomValue: number }, ov: OrderVas) => {\n const inventory: Inventory = ov.inventory\n const packingSize: number = inventory.packingSize\n\n total.qty += ov.qty * packingSize\n total.uomValue += ov.uomValue\n\n return total\n },\n { qty: 0, uomValue: 0 }\n )\n\n if (packingUnit === PackingUnits.QTY) {\n return (qty - remainder) / stdAmount\n } else if (packingUnit === PackingUnits.UOM) {\n return Math.floor(uomValue / stdAmount)\n }\n}\n\n/**\n * @description Find repacked pallet which has same pallet id with passed pallet id as param\n * If there's no repacked pallet init new RepackedInvInfo object and return it\n *\n * @param {RepackagingGuide} operationGuideData\n * @param {String} palletId\n * @param {String} locationName\n */\nfunction getRepackedInv(operationGuideData: RepackagingGuide, palletId: string, locationName: string): RepackedInvInfo {\n let repackedInv: RepackedInvInfo = operationGuideData.repackedInvs.find(\n (ri: RepackedInvInfo) => ri.palletId === palletId\n )\n if (!repackedInv) {\n repackedInv = {\n palletId,\n locationName,\n repackedPkgQty: 0,\n repackedFrom: []\n }\n operationGuideData.repackedInvs.push(repackedInv)\n }\n\n return repackedInv\n}\n\n/**\n * @description To transfer qty or uom value from featured inventories into origin inventory\n * If and only if the origin inventory has insufficient amount\n *\n * @param {FeaturedInventoryInterface} featuredInvs\n * @param {Number} repackagingAmount\n * @param {Number} remainingAmount\n * @param {String} packingUnit -- value is strictly for qty / uomValue\n */\nfunction deductedFeaturedInventories(\n featuredInvs: FeaturedInventoryInterface[],\n repackagingAmount: number,\n remainingAmount: number,\n toPalletId: string,\n packingUnit: string\n): { featuredInvs: FeaturedInventoryInterface[]; repackedFroms: TemporaryPalletChangesInterface[] } {\n let requiredAmount: number = getRoundedAmount(repackagingAmount - remainingAmount)\n const repackedFroms: TemporaryPalletChangesInterface[] = []\n\n featuredInvs = featuredInvs.map(inv => {\n if (requiredAmount > 0 && inv[packingUnit] > 0) {\n let reducedAmount: number = requiredAmount\n\n if (inv[packingUnit] >= requiredAmount) {\n inv[packingUnit] = inv[packingUnit] - requiredAmount\n // inv[packingUnit] = getRoundedAmount(inv[packingUnit] - requiredAmount)\n requiredAmount = 0\n } else {\n requiredAmount = requiredAmount - inv[packingUnit]\n // requiredAmount = getRoundedAmount(requiredAmount - inv[packingUnit])\n reducedAmount = inv[packingUnit]\n inv[packingUnit] = 0\n }\n\n switch (packingUnit) {\n case 'currentUnitQty':\n repackedFroms.push({\n fromPalletId: inv.palletId,\n toPalletId,\n reducedUnitQty: reducedAmount,\n reducedUomValue: reducedAmount * inv.uomValuePerQty,\n // reducedUomValue: getRoundedAmount(reducedAmount * inv.uomValuePerQty),\n packingSize: featuredInvs.find(inv => inv.palletId == inv.palletId).packingSize\n })\n break\n\n case 'currentUomValue':\n repackedFroms.push({\n fromPalletId: inv.palletId,\n toPalletId,\n reducedQty: 0,\n reducedUomValue: reducedAmount,\n // reducedUomValue: getRoundedAmount(reducedAmount),\n packingSize: featuredInvs.find(inv => inv.palletId == inv.palletId).packingSize\n })\n break\n }\n }\n\n return inv\n })\n\n return { featuredInvs, repackedFroms }\n}\n\nfunction getRoundedAmount(value, decimalPlace = 100) {\n return Math.round((value + Number.EPSILON) * decimalPlace) / decimalPlace\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js
CHANGED
|
@@ -90,7 +90,7 @@ function getRepackedPackageQty(repackedInvs) {
|
|
|
90
90
|
*/
|
|
91
91
|
async function getRequiredPackageQty(tx, domain, bizplace, worksheet, currentOV, packingUnit, stdAmount) {
|
|
92
92
|
const relatedWSDs = await tx.getRepository(entities_1.WorksheetDetail).find({
|
|
93
|
-
where: { domain, bizplace, worksheet },
|
|
93
|
+
where: { domain: { id: domain.id }, bizplace: { id: bizplace.id }, worksheet: { id: worksheet.id } },
|
|
94
94
|
relations: ['targetVas', 'targetVas.vas', 'targetVas.inventory']
|
|
95
95
|
});
|
|
96
96
|
const orderVASs = relatedWSDs.map((wsd) => wsd.targetVas);
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo-repackaging.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts"],"names":[],"mappings":";;;AAIA,2DAGmC;AAInC,sDAGgC;AAChC,kDAGwB;AACxB,8CAQsB;AAEtB;;;;;;GAMG;AAEU,QAAA,uBAAuB,GAAG;IACrC,KAAK,CAAC,eAAe,CAAC,CAAM,EAAE,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,OAAY;QAC3F;;WAEG;QACH,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,MAAM,GAAG,GAAoB,MAAM,IAAA,uCAAwB,EAAC,EAAE,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAA;QAC5F,MAAM,QAAQ,GAAa,GAAG,CAAC,QAAQ,CAAA;QACvC,MAAM,SAAS,GAAa,GAAG,CAAC,SAAS,CAAA;QACzC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAA;QAC1D,MAAM,QAAQ,GAAiB,aAAa,IAAI,WAAW,IAAI,QAAQ,CAAA;QAEvE,IAAI,cAAc,GAA8C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QACpG,IAAI,kBAAkB,GAAqB,cAAc,CAAC,IAAI,CAAA;QAC9D,IAAI,YAAY,GAAsB,kBAAkB,CAAC,YAAY,CAAA;QACrE,IAAI,YAAY,GAAiC,kBAAkB,CAAC,YAAY,CAAA;QAChF,IAAI,aAAa,GAAoB,YAAY,CAAC,IAAI,CAAC,CAAC,EAAmB,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAA;QAC3G,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,UAAU,GAAG,CAAC,CAAA;QAE5F,MAAM,WAAW,GAAW,kBAAkB,CAAC,WAAW,CAAA;QAC1D,MAAM,SAAS,GAAW,kBAAkB,CAAC,SAAS,CAAA;QAEtD,kEAAkE;QAClE,8EAA8E;QAC9E,IAAI;QAEJ,gCAAgC;QAChC,iCAAiC;QACjC,sGAAsG;QACtG,uGAAuG;QACvG,4BAA4B;QAC5B,yBAAyB;QACzB,sBAAsB;QAEtB,sBAAsB;QACtB,gDAAgD;QAEhD,MAAM,mBAAmB,GAAsB,YAAY,CAAC,MAAM,CAChE,CAAC,EAAmB,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,UAAU,CACpD,CAAA;QAED,MAAM,mBAAmB,GAAiC,YAAY,CAAC,MAAM,CAC3E,CAAC,WAAyC,EAAE,OAAmC,EAAE,EAAE;YACjF,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3C,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;oBAC5C,IAAI,WAAW,IAAI,yBAAY,CAAC,GAAG,EAAE;wBACnC,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAA;qBACjD;yBAAM,IAAI,WAAW,IAAI,yBAAY,CAAC,GAAG,EAAE;wBAC1C,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAA;qBACnD;iBACF;YACH,CAAC,CAAC,CAAA;YAEF,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACzB,OAAO,WAAW,CAAA;QACpB,CAAC,EACD,EAAE,CACH,CAAA;QAED,MAAM,kBAAkB,GAAW,MAAM,qBAAqB,CAC5D,EAAE,EACF,MAAM,EACN,QAAQ,EACR,GAAG,CAAC,SAAS,EACb,SAAS,EACT,WAAW,EACX,SAAS,CACV,CAAA;QACD,MAAM,kBAAkB,GAAW,qBAAqB,CAAC,mBAAmB,CAAC,CAAA;QAE7E,cAAc,CAAC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,CAAA;QAChF,cAAc,CAAC,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAA;QACtD,cAAc,CAAC,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAA;QAEtD,IAAI,CAAC,CAAC,QAAQ,YAAY,qBAAQ,CAAC,EAAE;YACnC,4FAA4F;YAC5F,mDAAmD;YACnD,YAAY;YAEZ,MAAM,aAAa,GAAsC,EAAE,CAAA;YAC3D,0EAA0E;SAC3E;QACD,uDAAuD;QACvD,MAAM,IAAA,oCAAqB,EAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC;CACF,CAAA;AAED,SAAS,qBAAqB,CAAC,YAA+B;IAC5D,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,cAAsB,EAAE,EAAmB,EAAE,EAAE,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAA;AACvH,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,qBAAqB,CAClC,EAAiB,EACjB,MAAc,EACd,QAAkB,EAClB,SAAoB,EACpB,SAAmB,EACnB,WAAmB,EACnB,SAAiB;IAEjB,MAAM,WAAW,GAAsB,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC;QAClF,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE;QACtC,SAAS,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,qBAAqB,CAAC;KACjE,CAAC,CAAA;IAEF,MAAM,SAAS,GAAe,WAAW,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACtF,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,SAAS;SAChC,MAAM,CAAC,CAAC,EAAY,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;SACpF,MAAM,CACL,CAAC,KAAwC,EAAE,EAAY,EAAE,EAAE;QACzD,MAAM,SAAS,GAAc,EAAE,CAAC,SAAS,CAAA;QACzC,MAAM,WAAW,GAAW,SAAS,CAAC,WAAW,CAAA;QAEjD,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,WAAW,CAAA;QACjC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAA;QAE7B,OAAO,KAAK,CAAA;IACd,CAAC,EACD,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CACxB,CAAA;IAEH,IAAI,WAAW,KAAK,yBAAY,CAAC,GAAG,EAAE;QACpC,OAAO,GAAG,GAAG,SAAS,CAAA;KACvB;SAAM,IAAI,WAAW,KAAK,yBAAY,CAAC,GAAG,EAAE;QAC3C,OAAO,QAAQ,GAAG,SAAS,CAAA;KAC5B;AACH,CAAC","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n OrderVas,\n VasOrder\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport {\n Worksheet,\n WorksheetDetail\n} from '../../../../../entities'\nimport {\n getWorksheetDetailByName,\n updateRelatedOrderVas\n} from '../common-utils'\nimport {\n FeaturedInventoryInterface,\n OperationGuideInterface,\n PackingUnits,\n RefOrderType,\n RepackagingGuide,\n RepackedInvInfo,\n TemporaryPalletChangesInterface\n} from '../interfaces'\n\n/** STEPS TO UNDO REPACKAGING\n * 1. get the pallet id to undo (pallet id must be the LV one and not the parent)\n * 2. revert the qty of repackedFrom into the original inventory and featuredInv (if applicable)\n * 3. remove the repackedInv for undo item\n * 4. update the requiredPkgQty\n *\n */\n\nexport const undoRepackagingResolver = {\n async undoRepackaging(_: any, { worksheetDetailName, fromPalletId, toPalletId }, context: any) {\n /**\n * Initialize required variables\n */\n const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state\n const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)\n const bizplace: Bizplace = wsd.bizplace\n const targetVas: OrderVas = wsd.targetVas\n const { arrivalNotice, releaseGood, vasOrder } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder\n\n let operationGuide: OperationGuideInterface<RepackagingGuide> = JSON.parse(targetVas.operationGuide)\n let operationGuideData: RepackagingGuide = operationGuide.data\n let repackedInvs: RepackedInvInfo[] = operationGuideData.repackedInvs\n let featuredInvs: FeaturedInventoryInterface[] = operationGuideData.featuredInvs\n let undoInventory: RepackedInvInfo = repackedInvs.find((ri: RepackedInvInfo) => ri.palletId === toPalletId)\n if (!undoInventory) throw new Error(`Couldn't find pallet, using pallet id (${toPalletId})`)\n\n const packingUnit: string = operationGuideData.packingUnit\n const stdAmount: number = operationGuideData.stdAmount\n\n // undoInventory.repackedFrom = undoInventory.repackedFrom.filter(\n // (rf: TemporaryPalletChangesInterface) => rf.fromPalletId !== fromPalletId\n // )\n\n // 완전히 Repacked 상태인 pallet count\n // const repackedPkgQty: number =\n // undoInventory.repackedFrom.reduce((totalAmount: number, rf: TemporaryPalletChangesInterface) => {\n // const amount: number = packingUnit === PackingUnits.QTY ? rf.reducedUnitQty : rf.reducedUomValue\n // totalAmount += amount\n // return totalAmount\n // }, 0) / stdAmount\n\n // Undo를 발생한 수량 차이를 계산\n // undoInventory.repackedPkgQty = repackedPkgQty\n\n const updatedRepackedInvs: RepackedInvInfo[] = repackedInvs.filter(\n (ri: RepackedInvInfo) => ri.palletId !== toPalletId\n )\n\n const updatedFeaturedInvs: FeaturedInventoryInterface[] = featuredInvs.reduce(\n (inventories: FeaturedInventoryInterface[], currInv: FeaturedInventoryInterface) => {\n undoInventory.repackedFrom.forEach(undoInv => {\n if (undoInv.fromPalletId == currInv.palletId) {\n if (packingUnit == PackingUnits.QTY) {\n currInv.currentUnitQty += undoInv.reducedUnitQty\n } else if (packingUnit == PackingUnits.UOM) {\n currInv.currentUomValue += undoInv.reducedUomValue\n }\n }\n })\n\n inventories.push(currInv)\n return inventories\n },\n []\n )\n\n const requiredPackageQty: number = await getRequiredPackageQty(\n tx,\n domain,\n bizplace,\n wsd.worksheet,\n targetVas,\n packingUnit,\n stdAmount\n )\n const repackedPackageQty: number = getRepackedPackageQty(updatedRepackedInvs)\n\n operationGuide.data.requiredPackageQty = requiredPackageQty - repackedPackageQty\n operationGuide.data.featuredInvs = updatedFeaturedInvs\n operationGuide.data.repackedInvs = updatedRepackedInvs\n\n if (!(refOrder instanceof VasOrder)) {\n // const palletChanges: TemporaryPalletChangesInterface[] = operationGuide.data.repackedInvs\n // .map((ri: RepackedInvInfo) => ri.repackedFrom)\n // .flat()\n\n const palletChanges: TemporaryPalletChangesInterface[] = []\n // await dismissInventory(tx, wsd, targetVas, palletChanges, fromPalletId)\n }\n // Update every order vas to share same operation guide\n await updateRelatedOrderVas(tx, domain, bizplace, wsd, targetVas, operationGuide, user)\n }\n}\n\nfunction getRepackedPackageQty(repackedInvs: RepackedInvInfo[]): number {\n return repackedInvs.reduce((repackedPkgQty: number, ri: RepackedInvInfo) => (repackedPkgQty += ri.repackedPkgQty), 0)\n}\n\n/**\n * @description Get total required package qty to complete this Repackagine VAS Task.\n *\n * @param {EntityManager} tx\n * @param {Domain} domain\n * @param {Bizplace} bizplace\n * @param {Worksheet} worksheet\n * @param {String} packingUnit\n * @param {Number} stdAmount\n */\nasync function getRequiredPackageQty(\n tx: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n worksheet: Worksheet,\n currentOV: OrderVas,\n packingUnit: string,\n stdAmount: number\n): Promise<number> {\n const relatedWSDs: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({\n where: { domain, bizplace, worksheet },\n relations: ['targetVas', 'targetVas.vas', 'targetVas.inventory']\n })\n\n const orderVASs: OrderVas[] = relatedWSDs.map((wsd: WorksheetDetail) => wsd.targetVas)\n const { qty, uomValue } = orderVASs\n .filter((ov: OrderVas) => ov.set === currentOV.set && ov.vas.id === currentOV.vas.id)\n .reduce(\n (total: { qty: number; uomValue: number }, ov: OrderVas) => {\n const inventory: Inventory = ov.inventory\n const packingSize: number = inventory.packingSize\n\n total.qty += ov.qty * packingSize\n total.uomValue += ov.uomValue\n\n return total\n },\n { qty: 0, uomValue: 0 }\n )\n\n if (packingUnit === PackingUnits.QTY) {\n return qty / stdAmount\n } else if (packingUnit === PackingUnits.UOM) {\n return uomValue / stdAmount\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"undo-repackaging.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { OrderVas, VasOrder } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { Worksheet, WorksheetDetail } from '../../../../../entities'\nimport { getWorksheetDetailByName, updateRelatedOrderVas } from '../common-utils'\nimport {\n FeaturedInventoryInterface,\n OperationGuideInterface,\n PackingUnits,\n RefOrderType,\n RepackagingGuide,\n RepackedInvInfo,\n TemporaryPalletChangesInterface\n} from '../interfaces'\n\n/** STEPS TO UNDO REPACKAGING\n * 1. get the pallet id to undo (pallet id must be the LV one and not the parent)\n * 2. revert the qty of repackedFrom into the original inventory and featuredInv (if applicable)\n * 3. remove the repackedInv for undo item\n * 4. update the requiredPkgQty\n *\n */\n\nexport const undoRepackagingResolver = {\n async undoRepackaging(_: any, { worksheetDetailName, fromPalletId, toPalletId }, context: ResolverContext) {\n /**\n * Initialize required variables\n */\n const { tx, domain, user } = context.state\n const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)\n const bizplace: Bizplace = wsd.bizplace\n const targetVas: OrderVas = wsd.targetVas\n const { arrivalNotice, releaseGood, vasOrder } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder\n\n let operationGuide: OperationGuideInterface<RepackagingGuide> = JSON.parse(targetVas.operationGuide)\n let operationGuideData: RepackagingGuide = operationGuide.data\n let repackedInvs: RepackedInvInfo[] = operationGuideData.repackedInvs\n let featuredInvs: FeaturedInventoryInterface[] = operationGuideData.featuredInvs\n let undoInventory: RepackedInvInfo = repackedInvs.find((ri: RepackedInvInfo) => ri.palletId === toPalletId)\n if (!undoInventory) throw new Error(`Couldn't find pallet, using pallet id (${toPalletId})`)\n\n const packingUnit: string = operationGuideData.packingUnit\n const stdAmount: number = operationGuideData.stdAmount\n\n // undoInventory.repackedFrom = undoInventory.repackedFrom.filter(\n // (rf: TemporaryPalletChangesInterface) => rf.fromPalletId !== fromPalletId\n // )\n\n // 완전히 Repacked 상태인 pallet count\n // const repackedPkgQty: number =\n // undoInventory.repackedFrom.reduce((totalAmount: number, rf: TemporaryPalletChangesInterface) => {\n // const amount: number = packingUnit === PackingUnits.QTY ? rf.reducedUnitQty : rf.reducedUomValue\n // totalAmount += amount\n // return totalAmount\n // }, 0) / stdAmount\n\n // Undo를 발생한 수량 차이를 계산\n // undoInventory.repackedPkgQty = repackedPkgQty\n\n const updatedRepackedInvs: RepackedInvInfo[] = repackedInvs.filter(\n (ri: RepackedInvInfo) => ri.palletId !== toPalletId\n )\n\n const updatedFeaturedInvs: FeaturedInventoryInterface[] = featuredInvs.reduce(\n (inventories: FeaturedInventoryInterface[], currInv: FeaturedInventoryInterface) => {\n undoInventory.repackedFrom.forEach(undoInv => {\n if (undoInv.fromPalletId == currInv.palletId) {\n if (packingUnit == PackingUnits.QTY) {\n currInv.currentUnitQty += undoInv.reducedUnitQty\n } else if (packingUnit == PackingUnits.UOM) {\n currInv.currentUomValue += undoInv.reducedUomValue\n }\n }\n })\n\n inventories.push(currInv)\n return inventories\n },\n []\n )\n\n const requiredPackageQty: number = await getRequiredPackageQty(\n tx,\n domain,\n bizplace,\n wsd.worksheet,\n targetVas,\n packingUnit,\n stdAmount\n )\n const repackedPackageQty: number = getRepackedPackageQty(updatedRepackedInvs)\n\n operationGuide.data.requiredPackageQty = requiredPackageQty - repackedPackageQty\n operationGuide.data.featuredInvs = updatedFeaturedInvs\n operationGuide.data.repackedInvs = updatedRepackedInvs\n\n if (!(refOrder instanceof VasOrder)) {\n // const palletChanges: TemporaryPalletChangesInterface[] = operationGuide.data.repackedInvs\n // .map((ri: RepackedInvInfo) => ri.repackedFrom)\n // .flat()\n\n const palletChanges: TemporaryPalletChangesInterface[] = []\n // await dismissInventory(tx, wsd, targetVas, palletChanges, fromPalletId)\n }\n // Update every order vas to share same operation guide\n await updateRelatedOrderVas(tx, domain, bizplace, wsd, targetVas, operationGuide, user)\n }\n}\n\nfunction getRepackedPackageQty(repackedInvs: RepackedInvInfo[]): number {\n return repackedInvs.reduce((repackedPkgQty: number, ri: RepackedInvInfo) => (repackedPkgQty += ri.repackedPkgQty), 0)\n}\n\n/**\n * @description Get total required package qty to complete this Repackagine VAS Task.\n *\n * @param {EntityManager} tx\n * @param {Domain} domain\n * @param {Bizplace} bizplace\n * @param {Worksheet} worksheet\n * @param {String} packingUnit\n * @param {Number} stdAmount\n */\nasync function getRequiredPackageQty(\n tx: EntityManager,\n domain: Domain,\n bizplace: Bizplace,\n worksheet: Worksheet,\n currentOV: OrderVas,\n packingUnit: string,\n stdAmount: number\n): Promise<number> {\n const relatedWSDs: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({\n where: { domain: { id: domain.id }, bizplace: { id: bizplace.id }, worksheet: { id: worksheet.id } },\n relations: ['targetVas', 'targetVas.vas', 'targetVas.inventory']\n })\n\n const orderVASs: OrderVas[] = relatedWSDs.map((wsd: WorksheetDetail) => wsd.targetVas)\n const { qty, uomValue } = orderVASs\n .filter((ov: OrderVas) => ov.set === currentOV.set && ov.vas.id === currentOV.vas.id)\n .reduce(\n (total: { qty: number; uomValue: number }, ov: OrderVas) => {\n const inventory: Inventory = ov.inventory\n const packingSize: number = inventory.packingSize\n\n total.qty += ov.qty * packingSize\n total.uomValue += ov.uomValue\n\n return total\n },\n { qty: 0, uomValue: 0 }\n )\n\n if (packingUnit === PackingUnits.QTY) {\n return qty / stdAmount\n } else if (packingUnit === PackingUnits.UOM) {\n return uomValue / stdAmount\n }\n}\n"]}
|
|
@@ -5,7 +5,8 @@ const sales_base_1 = require("@things-factory/sales-base");
|
|
|
5
5
|
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
6
6
|
const common_utils_1 = require("../common-utils");
|
|
7
7
|
async function completeRepalletizing(trxMgr, orderVas, user) {
|
|
8
|
-
orderVas = await trxMgr.getRepository(sales_base_1.OrderVas).findOne(
|
|
8
|
+
orderVas = await trxMgr.getRepository(sales_base_1.OrderVas).findOne({
|
|
9
|
+
where: { id: orderVas.id },
|
|
9
10
|
relations: ['domain', 'bizplace', 'inventory', 'inventory.product', 'arrivalNotice', 'releaseGood', 'vasOrder']
|
|
10
11
|
});
|
|
11
12
|
const domain = orderVas.domain;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete-repalletizing.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"complete-repalletizing.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { ArrivalNotice, OrderVas, ReleaseGood } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'\n\nimport {\n createLoadingWorksheet,\n createPutawayWorksheet,\n deductProductAmount,\n getCurrentAmount,\n upsertInventory\n} from '../common-utils'\nimport {\n OperationGuideInterface,\n PalletChangesInterface,\n RefOrderType,\n RepalletizedInvInfo,\n RepalletizingGuide\n} from '../interfaces'\n\nexport async function completeRepalletizing(trxMgr: EntityManager, orderVas: OrderVas, user: User): Promise<void> {\n orderVas = await trxMgr.getRepository(OrderVas).findOne({\n where: { id: orderVas.id },\n relations: ['domain', 'bizplace', 'inventory', 'inventory.product', 'arrivalNotice', 'releaseGood', 'vasOrder']\n })\n const domain: Domain = orderVas.domain\n const bizplace: Bizplace = orderVas.bizplace\n let originInv: Inventory = orderVas.inventory\n const operationGuide: OperationGuideInterface<RepalletizingGuide> = JSON.parse(orderVas.operationGuide)\n const operationGuideData: RepalletizingGuide = operationGuide.data\n const { arrivalNotice, releaseGood, vasOrder } = orderVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder\n\n // Check completion of new pallets\n if (!checkCompletion(operationGuideData)) {\n throw new Error(`There's repalletized pallet which doesn't have as many as standard qty`)\n }\n\n // create repalletized inventories based on repalletizedInvs\n const repalletizedInvs: RepalletizedInvInfo[] = extractRepackedInvs(operationGuideData, originInv)\n for (const ri of repalletizedInvs) {\n const repalletizedFromList: PalletChangesInterface[] = ri.repalletizedFrom.filter(\n (rf: PalletChangesInterface) => rf.toPalletId === ri.palletId\n )\n const { qty, uomValue } = getCurrentAmount(repalletizedFromList, ri.palletId)\n const changedInv: Inventory = await upsertInventory(\n trxMgr,\n domain,\n bizplace,\n user,\n originInv,\n refOrder,\n ri.palletId,\n ri.locationName,\n originInv.packingType,\n qty,\n uomValue,\n INVENTORY_TRANSACTION_TYPE.REPALLETIZING\n )\n\n // Deduct amount of product on original pallet or order inventory (Case for release order)\n originInv = await deductProductAmount(\n trxMgr,\n domain,\n bizplace,\n user,\n refOrder,\n originInv,\n qty,\n uomValue,\n INVENTORY_TRANSACTION_TYPE.REPALLETIZING\n )\n\n // Create worksheet if it's related with Arrival Notice or Release Order\n if (refOrder instanceof ArrivalNotice) {\n await createPutawayWorksheet(trxMgr, domain, bizplace, user, refOrder, originInv, changedInv)\n } else if (refOrder instanceof ReleaseGood) {\n await createLoadingWorksheet(trxMgr, domain, bizplace, user, refOrder, originInv, changedInv)\n }\n }\n}\n\n/**\n * @description Check whether every repalletized pallet has products as many as standard qty.\n * @param operationGuideData\n */\nfunction checkCompletion(operationGuideData: RepalletizingGuide): boolean {\n const stdQty: number = operationGuideData.stdQty\n return operationGuideData.repalletizedInvs.every((ri: RepalletizedInvInfo) => {\n const totalQty: number = ri.repalletizedFrom.reduce(\n (totalQty: number, rf: PalletChangesInterface) => (totalQty += rf.reducedQty),\n 0\n )\n return totalQty === stdQty\n })\n}\n\nfunction extractRepackedInvs(operationGuideData: RepalletizingGuide, originInv: Inventory): RepalletizedInvInfo[] {\n return operationGuideData.repalletizedInvs\n .filter((ri: RepalletizedInvInfo) => {\n const isPalletIncluded: boolean = Boolean(\n ri.repalletizedFrom.find((rf: PalletChangesInterface) => rf.fromPalletId === originInv.palletId)\n )\n if (isPalletIncluded) return ri\n })\n .map((ri: RepalletizedInvInfo) => {\n ri.repalletizedFrom = ri.repalletizedFrom.filter(\n (rf: PalletChangesInterface) => rf.fromPalletId === originInv.palletId\n )\n return ri\n })\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.js
CHANGED
|
@@ -9,7 +9,7 @@ exports.repalletizingResolver = {
|
|
|
9
9
|
async repalletizing(_, { worksheetDetailName, fromPalletId, toPalletId, locationName }, context) {
|
|
10
10
|
const { tx, domain, user } = context.state;
|
|
11
11
|
const location = await tx.getRepository(warehouse_base_1.Location).findOne({
|
|
12
|
-
where: { domain, name: locationName },
|
|
12
|
+
where: { domain: { id: domain.id }, name: locationName },
|
|
13
13
|
relations: ['warehouse']
|
|
14
14
|
});
|
|
15
15
|
if (!location)
|
|
@@ -44,8 +44,8 @@ exports.repalletizingResolver = {
|
|
|
44
44
|
if (palletType === warehouse_base_1.PALLET_TYPES.REUSABLE_PALLET) {
|
|
45
45
|
// Check whether the pallet is available
|
|
46
46
|
const pallet = await tx.getRepository(warehouse_base_1.Pallet).findOne({
|
|
47
|
-
where: { domain, name: toPalletId },
|
|
48
|
-
|
|
47
|
+
where: { domain: { id: domain.id }, name: toPalletId },
|
|
48
|
+
relations: ['inventory']
|
|
49
49
|
});
|
|
50
50
|
if (!pallet)
|
|
51
51
|
throw new Error(`Couldn't find reusable pallet by its ID (${toPalletId})`);
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repalletizing.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { OrderVas } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, Location, Pallet, PALLET_TYPES, Warehouse } from '@things-factory/warehouse-base'\nimport { EntityManager } from 'typeorm'\nimport { WorksheetDetail } from '../../../../../entities'\nimport { checkPalletDuplication, checkPalletIdenticallity } from '../../../../../utils'\nimport { executeVas } from '../../vas/execute-vas'\nimport {\n assignInventory,\n getCurrentAmount,\n getRemainInventoryAmount,\n getWorksheetDetailByName,\n updateRelatedOrderVas\n} from '../common-utils'\nimport {\n OperationGuideInterface,\n PalletChangesInterface,\n RefOrderType,\n RepalletizedInvInfo,\n RepalletizingGuide\n} from '../interfaces'\n\nexport const repalletizingResolver = {\n async repalletizing(_: any, { worksheetDetailName, fromPalletId, toPalletId, locationName }, context: any) {\n const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state\n const location: Location = await tx.getRepository(Location).findOne({\n where: { domain, name: locationName },\n relations: ['warehouse']\n })\n if (!location) throw new Error(`Couldn't find location by its name (${locationName})`)\n const warehouse: Warehouse = location.warehouse\n if (!warehouse) throw new Error(`Location (name: ${locationName}) doesn't have any relation with warehouse`)\n\n const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)\n let { bizplace, targetVas }: { bizplace: Bizplace; targetVas: OrderVas } = wsd\n\n // Check whether from pallet has valid condition compared with customer's request\n // Batch ID, product and packing type\n const { identicallity, errorMessage } = await checkPalletIdenticallity(\n domain,\n bizplace,\n fromPalletId,\n targetVas.targetBatchId,\n targetVas.targetProduct,\n targetVas.packingType,\n tx\n )\n if (!identicallity) throw new Error(errorMessage)\n\n // Check whether there's duplicated inventory in warehouse.\n if (await checkPalletDuplication(domain, bizplace, toPalletId, tx))\n throw new Error(`The Pallet ID (${toPalletId}) is duplicated.`)\n\n // Init refOrder\n const { arrivalNotice, releaseGood, vasOrder }: { [key: string]: RefOrderType } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder || null\n if (!refOrder) throw new Error(`Couldn't find reference order with current order vas`)\n\n // Assign inventory if specific inventory isn't assigned yet.\n // This case is occured when the VAS order comes with Arrival Notice or Release Good\n if (!targetVas.inventory) {\n targetVas = await assignInventory(tx, domain, bizplace, user, wsd, refOrder, targetVas, fromPalletId)\n }\n\n let originInv: Inventory = targetVas.inventory\n let operationGuide: OperationGuideInterface<RepalletizingGuide> = JSON.parse(targetVas.operationGuide)\n let operationGuideData: RepalletizingGuide = operationGuide.data\n\n const palletType: string = operationGuideData.palletType\n if (palletType === PALLET_TYPES.REUSABLE_PALLET) {\n // Check whether the pallet is available\n const pallet: Pallet = await tx.getRepository(Pallet).findOne({\n where: { domain, name: toPalletId },\n relatoins: ['inventory']\n })\n if (!pallet) throw new Error(`Couldn't find reusable pallet by its ID (${toPalletId})`)\n if (pallet.inventory) throw new Error(`The pallet (${toPalletId}) is located already.`)\n }\n\n if (!operationGuideData.repalletizedInvs) operationGuideData.repalletizedInvs = []\n const repalletizedInvs: RepalletizedInvInfo[] = operationGuideData.repalletizedInvs\n // const palletChanges: PalletChangesInterface[] = repalletizedInvs\n // .map((ri: RepalletizedInvInfo) => ri.repalletizedFrom)\n // .flat()\n\n const palletChanges: PalletChangesInterface[] = []\n const { remainQty, remainUomValue } = await getRemainInventoryAmount(\n tx,\n refOrder,\n domain,\n bizplace,\n originInv,\n palletChanges,\n fromPalletId\n )\n const unitUomValue: number = remainUomValue / remainQty\n const stdQty: number = operationGuideData.stdQty\n const { qty } = getCurrentAmount(palletChanges, toPalletId)\n const requiredQty: number = stdQty - qty\n if (requiredQty === 0) throw new Error(`The pallet (${toPalletId}) is repalletized already.`)\n const reducedQty: number = remainQty >= requiredQty ? requiredQty : remainQty\n\n const repalletizedInv: RepalletizedInvInfo = getRepalletizedInv(operationGuideData, toPalletId, locationName)\n const repalletizedFrom: PalletChangesInterface = {\n fromPalletId,\n toPalletId,\n reducedQty,\n reducedUomValue: reducedQty * unitUomValue\n }\n repalletizedInv.repalletizedFrom.push(repalletizedFrom)\n\n const isCompleted: boolean = qty + reducedQty === stdQty\n let requiredPalletQty: number = isCompleted\n ? operationGuideData.requiredPalletQty - 1\n : operationGuideData.requiredPalletQty\n\n operationGuide.data = {\n palletType: operationGuideData.palletType,\n stdQty: operationGuideData.stdQty,\n requiredPalletQty,\n repalletizedInvs\n }\n\n // Update every order vas to share same operation guide\n await updateRelatedOrderVas<RepalletizingGuide>(tx, domain, bizplace, wsd, targetVas, operationGuide, user)\n\n // If pallet is created completely\n // If there's no more products on from pallet\n if (remainQty - reducedQty === 0 || requiredPalletQty === 0) {\n await executeVas(tx, domain, user, wsd)\n }\n }\n}\n\n/**\n * @description Find repalletized pallet which has same pallet id with passed pallet id as param\n * If there's no repalletized pallet init new RepalletizedInvInfo object and return it\n *\n * @param {RepalletizedInvInfo} operationGuideData\n * @param {String} palletId\n * @param {String} locationName\n */\nfunction getRepalletizedInv(\n operationGuideData: RepalletizingGuide,\n palletId: string,\n locationName: string\n): RepalletizedInvInfo {\n let repalletizedInv: RepalletizedInvInfo = operationGuideData.repalletizedInvs.find(\n (ri: RepalletizedInvInfo) => ri.palletId === palletId\n )\n\n if (!repalletizedInv) {\n repalletizedInv = {\n palletId,\n locationName,\n repalletizedFrom: []\n }\n operationGuideData.repalletizedInvs.push(repalletizedInv)\n }\n return repalletizedInv\n}\n"]}
|
|
1
|
+
{"version":3,"file":"repalletizing.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.ts"],"names":[],"mappings":"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","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { OrderVas } from '@things-factory/sales-base'\nimport { Inventory, Location, Pallet, PALLET_TYPES, Warehouse } from '@things-factory/warehouse-base'\n\nimport { WorksheetDetail } from '../../../../../entities'\nimport { checkPalletDuplication, checkPalletIdenticallity } from '../../../../../utils'\nimport { executeVas } from '../../vas/execute-vas'\nimport {\n assignInventory,\n getCurrentAmount,\n getRemainInventoryAmount,\n getWorksheetDetailByName,\n updateRelatedOrderVas\n} from '../common-utils'\nimport {\n OperationGuideInterface,\n PalletChangesInterface,\n RefOrderType,\n RepalletizedInvInfo,\n RepalletizingGuide\n} from '../interfaces'\n\nexport const repalletizingResolver = {\n async repalletizing(\n _: any,\n { worksheetDetailName, fromPalletId, toPalletId, locationName },\n context: ResolverContext\n ) {\n const { tx, domain, user } = context.state\n const location: Location = await tx.getRepository(Location).findOne({\n where: { domain: { id: domain.id }, name: locationName },\n relations: ['warehouse']\n })\n if (!location) throw new Error(`Couldn't find location by its name (${locationName})`)\n const warehouse: Warehouse = location.warehouse\n if (!warehouse) throw new Error(`Location (name: ${locationName}) doesn't have any relation with warehouse`)\n\n const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)\n let { bizplace, targetVas }: { bizplace: Bizplace; targetVas: OrderVas } = wsd\n\n // Check whether from pallet has valid condition compared with customer's request\n // Batch ID, product and packing type\n const { identicallity, errorMessage } = await checkPalletIdenticallity(\n domain,\n bizplace,\n fromPalletId,\n targetVas.targetBatchId,\n targetVas.targetProduct,\n targetVas.packingType,\n tx\n )\n if (!identicallity) throw new Error(errorMessage)\n\n // Check whether there's duplicated inventory in warehouse.\n if (await checkPalletDuplication(domain, bizplace, toPalletId, tx))\n throw new Error(`The Pallet ID (${toPalletId}) is duplicated.`)\n\n // Init refOrder\n const { arrivalNotice, releaseGood, vasOrder }: { [key: string]: RefOrderType } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder || null\n if (!refOrder) throw new Error(`Couldn't find reference order with current order vas`)\n\n // Assign inventory if specific inventory isn't assigned yet.\n // This case is occured when the VAS order comes with Arrival Notice or Release Good\n if (!targetVas.inventory) {\n targetVas = await assignInventory(tx, domain, bizplace, user, wsd, refOrder, targetVas, fromPalletId)\n }\n\n let originInv: Inventory = targetVas.inventory\n let operationGuide: OperationGuideInterface<RepalletizingGuide> = JSON.parse(targetVas.operationGuide)\n let operationGuideData: RepalletizingGuide = operationGuide.data\n\n const palletType: string = operationGuideData.palletType\n if (palletType === PALLET_TYPES.REUSABLE_PALLET) {\n // Check whether the pallet is available\n const pallet: Pallet = await tx.getRepository(Pallet).findOne({\n where: { domain: { id: domain.id }, name: toPalletId },\n relations: ['inventory']\n })\n if (!pallet) throw new Error(`Couldn't find reusable pallet by its ID (${toPalletId})`)\n if (pallet.inventory) throw new Error(`The pallet (${toPalletId}) is located already.`)\n }\n\n if (!operationGuideData.repalletizedInvs) operationGuideData.repalletizedInvs = []\n const repalletizedInvs: RepalletizedInvInfo[] = operationGuideData.repalletizedInvs\n // const palletChanges: PalletChangesInterface[] = repalletizedInvs\n // .map((ri: RepalletizedInvInfo) => ri.repalletizedFrom)\n // .flat()\n\n const palletChanges: PalletChangesInterface[] = []\n const { remainQty, remainUomValue } = await getRemainInventoryAmount(\n tx,\n refOrder,\n domain,\n bizplace,\n originInv,\n palletChanges,\n fromPalletId\n )\n const unitUomValue: number = remainUomValue / remainQty\n const stdQty: number = operationGuideData.stdQty\n const { qty } = getCurrentAmount(palletChanges, toPalletId)\n const requiredQty: number = stdQty - qty\n if (requiredQty === 0) throw new Error(`The pallet (${toPalletId}) is repalletized already.`)\n const reducedQty: number = remainQty >= requiredQty ? requiredQty : remainQty\n\n const repalletizedInv: RepalletizedInvInfo = getRepalletizedInv(operationGuideData, toPalletId, locationName)\n const repalletizedFrom: PalletChangesInterface = {\n fromPalletId,\n toPalletId,\n reducedQty,\n reducedUomValue: reducedQty * unitUomValue\n }\n repalletizedInv.repalletizedFrom.push(repalletizedFrom)\n\n const isCompleted: boolean = qty + reducedQty === stdQty\n let requiredPalletQty: number = isCompleted\n ? operationGuideData.requiredPalletQty - 1\n : operationGuideData.requiredPalletQty\n\n operationGuide.data = {\n palletType: operationGuideData.palletType,\n stdQty: operationGuideData.stdQty,\n requiredPalletQty,\n repalletizedInvs\n }\n\n // Update every order vas to share same operation guide\n await updateRelatedOrderVas<RepalletizingGuide>(tx, domain, bizplace, wsd, targetVas, operationGuide, user)\n\n // If pallet is created completely\n // If there's no more products on from pallet\n if (remainQty - reducedQty === 0 || requiredPalletQty === 0) {\n await executeVas(tx, domain, user, wsd)\n }\n }\n}\n\n/**\n * @description Find repalletized pallet which has same pallet id with passed pallet id as param\n * If there's no repalletized pallet init new RepalletizedInvInfo object and return it\n *\n * @param {RepalletizedInvInfo} operationGuideData\n * @param {String} palletId\n * @param {String} locationName\n */\nfunction getRepalletizedInv(\n operationGuideData: RepalletizingGuide,\n palletId: string,\n locationName: string\n): RepalletizedInvInfo {\n let repalletizedInv: RepalletizedInvInfo = operationGuideData.repalletizedInvs.find(\n (ri: RepalletizedInvInfo) => ri.palletId === palletId\n )\n\n if (!repalletizedInv) {\n repalletizedInv = {\n palletId,\n locationName,\n repalletizedFrom: []\n }\n operationGuideData.repalletizedInvs.push(repalletizedInv)\n }\n return repalletizedInv\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo-repalletizing.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"undo-repalletizing.js","sourceRoot":"","sources":["../../../../../../server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.ts"],"names":[],"mappings":";;;AACA,2DAA+D;AAG/D,kDAAmG;AAStF,QAAA,yBAAyB,GAAG;IACvC,KAAK,CAAC,iBAAiB,CAAC,CAAM,EAAE,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,OAAwB;;QACzG;;WAEG;QACH,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,GAAG,GAAoB,MAAM,IAAA,uCAAwB,EAAC,EAAE,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAA;QAC5F,MAAM,QAAQ,GAAa,GAAG,CAAC,QAAQ,CAAA;QACvC,MAAM,SAAS,GAAa,GAAG,CAAC,SAAS,CAAA;QACzC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAA;QAC1D,MAAM,QAAQ,GAAiB,aAAa,IAAI,WAAW,IAAI,QAAQ,CAAA;QAEvE,IAAI,cAAc,GAAgD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QACtG,IAAI,kBAAkB,GAAuB,cAAc,CAAC,IAAI,CAAA;QAChE,IAAI,gBAAgB,GAA0B,kBAAkB,CAAC,gBAAgB,CAAA;QACjF,IAAI,aAAa,GAAwB,gBAAgB,CAAC,IAAI,CAC5D,CAAC,EAAuB,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,UAAU,CACxD,CAAA;QACD,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,UAAU,GAAG,CAAC,CAAA;QAE5F,MAAM,MAAM,GAAW,kBAAkB,CAAC,MAAM,CAAA;QAEhD,yEAAyE;QACzE,MAAM,QAAQ,GAAW,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAC5D,CAAC,QAAgB,EAAE,EAA0B,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,EAC7E,CAAC,CACF,CAAA;QAED,IAAI,QAAQ,KAAK,MAAM,EAAE;YACvB,kBAAkB,CAAC,iBAAiB,EAAE,CAAA;SACvC;QAED,aAAa,CAAC,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC,MAAM,CACpE,CAAC,EAA0B,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,KAAK,YAAY,CACjE,CAAA;QAED,IAAI,uBAA8C,CAAA;QAClD,IAAI,CAAC,CAAA,MAAA,aAAa,CAAC,gBAAgB,0CAAE,MAAM,CAAA,EAAE;YAC3C,uBAAuB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAuB,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAA;SAC3G;aAAM;YACL,uBAAuB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAuB,EAAE,EAAE;gBACzE,IAAI,EAAE,CAAC,QAAQ,KAAK,UAAU,EAAE;oBAC9B,EAAE,GAAG,aAAa,CAAA;iBACnB;gBACD,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;SACH;QACD,cAAc,CAAC,IAAI,CAAC,gBAAgB,GAAG,uBAAuB,CAAA;QAE9D,IAAI,CAAC,CAAC,QAAQ,YAAY,qBAAQ,CAAC,EAAE;YACnC,uFAAuF;YACvF,2DAA2D;YAC3D,YAAY;YACZ,MAAM,aAAa,GAA6B,EAAE,CAAA;YAClD,MAAM,IAAA,+BAAgB,EAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;SACtE;QAED,uDAAuD;QACvD,MAAM,IAAA,oCAAqB,EAAqB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;IAC7G,CAAC;CACF,CAAA","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { OrderVas, VasOrder } from '@things-factory/sales-base'\n\nimport { WorksheetDetail } from '../../../../../entities'\nimport { dismissInventory, getWorksheetDetailByName, updateRelatedOrderVas } from '../common-utils'\nimport {\n OperationGuideInterface,\n PalletChangesInterface,\n RefOrderType,\n RepalletizedInvInfo,\n RepalletizingGuide\n} from '../interfaces'\n\nexport const undoRepalletizingResolver = {\n async undoRepalletizing(_: any, { worksheetDetailName, fromPalletId, toPalletId }, context: ResolverContext) {\n /**\n * Initialize required variables\n */\n const { tx, domain, user } = context.state\n const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)\n const bizplace: Bizplace = wsd.bizplace\n const targetVas: OrderVas = wsd.targetVas\n const { arrivalNotice, releaseGood, vasOrder } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder\n\n let operationGuide: OperationGuideInterface<RepalletizingGuide> = JSON.parse(targetVas.operationGuide)\n let operationGuideData: RepalletizingGuide = operationGuide.data\n let repalletizedInvs: RepalletizedInvInfo[] = operationGuideData.repalletizedInvs\n let undoInventory: RepalletizedInvInfo = repalletizedInvs.find(\n (ri: RepalletizedInvInfo) => ri.palletId === toPalletId\n )\n if (!undoInventory) throw new Error(`Couldn't find pallet, using pallet id (${toPalletId})`)\n\n const stdQty: number = operationGuideData.stdQty\n\n // If current undo pallet is completed pallet, plus 1 required pallet qty\n const totalQty: number = undoInventory.repalletizedFrom.reduce(\n (totalQty: number, rf: PalletChangesInterface) => (totalQty += rf.reducedQty),\n 0\n )\n\n if (totalQty === stdQty) {\n operationGuideData.requiredPalletQty++\n }\n\n undoInventory.repalletizedFrom = undoInventory.repalletizedFrom.filter(\n (rf: PalletChangesInterface) => rf.fromPalletId !== fromPalletId\n )\n\n let updatedRepalletizedInvs: RepalletizedInvInfo[]\n if (!undoInventory.repalletizedFrom?.length) {\n updatedRepalletizedInvs = repalletizedInvs.filter((ri: RepalletizedInvInfo) => ri.palletId !== toPalletId)\n } else {\n updatedRepalletizedInvs = repalletizedInvs.map((ri: RepalletizedInvInfo) => {\n if (ri.palletId === toPalletId) {\n ri = undoInventory\n }\n return ri\n })\n }\n operationGuide.data.repalletizedInvs = updatedRepalletizedInvs\n\n if (!(refOrder instanceof VasOrder)) {\n // const palletChanges: PalletChangesInterface[] = operationGuide.data.repalletizedInvs\n // .map((ri: RepalletizedInvInfo) => ri.repalletizedFrom)\n // .flat()\n const palletChanges: PalletChangesInterface[] = []\n await dismissInventory(tx, wsd, targetVas, palletChanges, toPalletId)\n }\n\n // Update every order vas to share same operation guide\n await updateRelatedOrderVas<RepalletizingGuide>(tx, domain, bizplace, wsd, targetVas, operationGuide, user)\n }\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.js
CHANGED
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.completeUnpacking = void 0;
|
|
4
4
|
const sales_base_1 = require("@things-factory/sales-base");
|
|
5
5
|
async function completeUnpacking(trxMgr, orderVas, user) {
|
|
6
|
-
orderVas = await trxMgr.getRepository(sales_base_1.OrderVas).findOne(
|
|
6
|
+
orderVas = await trxMgr.getRepository(sales_base_1.OrderVas).findOne({
|
|
7
|
+
where: { id: orderVas.id },
|
|
7
8
|
relations: ['domain', 'bizplace', 'inventory', 'inventory.product', 'arrivalNotice', 'releaseGood', 'vasOrder']
|
|
8
9
|
});
|
|
9
10
|
const domain = orderVas.domain;
|