@things-factory/worksheet-base 5.0.14 → 6.0.0-alpha.3
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 +9 -9
- package/dist-server/graphql/resolvers/worksheet/fetch-delivery-order-ro.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js +17 -7
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js.map +1 -1
- 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 +1 -1
- package/dist-server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.js.map +1 -1
- 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 +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -1
- 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/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/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-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":"cycle-count-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/inspect/cycle-count-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Brackets, Equal, In, Not, SelectQueryBuilder } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n generateCycleCount,\n InventoryCheck,\n ORDER_INVENTORY_STATUS,\n ORDER_STATUS,\n OrderInventory,\n OrderNoGenerator\n} from '@things-factory/sales-base'\nimport { Inventory, INVENTORY_STATUS, Location } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { WorksheetNoGenerator } from '../../utils'\nimport { WorksheetController } from '../worksheet-controller'\n\nexport class CycleCountWorksheetController extends WorksheetController {\n async generateCycleCountWorksheet(\n executionDate: string,\n customerId: string,\n orderInventoryIds: string[] = [],\n orderInventory: OrderInventory[],\n limit: number\n ): Promise<Worksheet> {\n // Find out warehouse and customer bizplace\n const customerBizplace: Bizplace = await this.trxMgr.getRepository(Bizplace).findOne(customerId)\n let foundCycleCountWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: this.domain,\n bizplace: customerBizplace,\n type: In([WORKSHEET_TYPE.CYCLE_COUNT, WORKSHEET_TYPE.CYCLE_COUNT_RECHECK]),\n status: Not(WORKSHEET_STATUS.DONE)\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'inventoryCheck']\n })\n\n // Create second round of cycle count with specified order inventories\n if (orderInventoryIds.length) {\n // Update status of target inventories (NOT_TALLY => INSPECTING)\n let targetInventories: OrderInventory[] = await this.trxMgr\n .getRepository(OrderInventory)\n .findByIds(orderInventoryIds)\n targetInventories.forEach((targetInventory: OrderInventory) => {\n targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n })\n await this.trxMgr.getRepository(OrderInventory).save(targetInventories)\n\n // Update status of worksheet (NOT_TALLY => EXECUTING)\n foundCycleCountWorksheet.type = WORKSHEET_TYPE.CYCLE_COUNT_RECHECK\n foundCycleCountWorksheet.status = WORKSHEET_STATUS.EXECUTING\n foundCycleCountWorksheet.endedAt = null\n foundCycleCountWorksheet.updater = this.user\n await this.trxMgr.getRepository(Worksheet).save(foundCycleCountWorksheet)\n\n // Update status of worksheet details (NOT_TALLY => EXECUTING)\n let worksheetDetails = foundCycleCountWorksheet.worksheetDetails.filter(\n (wsd: WorksheetDetail) => orderInventoryIds.indexOf(wsd.targetInventory.id) >= 0\n )\n worksheetDetails.forEach((wsd: WorksheetDetail) => {\n wsd.status = WORKSHEET_STATUS.EXECUTING\n wsd.updater = this.user\n })\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)\n\n // Update status of cycle count\n const cycleCount: InventoryCheck = foundCycleCountWorksheet.inventoryCheck\n cycleCount.status = ORDER_STATUS.INSPECTING\n cycleCount.updater = this.user\n await this.trxMgr.getRepository(InventoryCheck).save(cycleCount)\n\n return foundCycleCountWorksheet\n } else {\n // Create first round of cycle count with whole pallets\n if (foundCycleCountWorksheet) {\n throw new Error(`Unfinished cycle count worksheet exists.`)\n }\n\n const cycleCount: InventoryCheck = await generateCycleCount(\n this.trxMgr,\n this.domain,\n this.user,\n executionDate,\n customerId\n )\n\n // Find out inventories which is target for cycle counting\n const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')\n qb.leftJoinAndSelect('INV.location', 'LOC')\n .where('INV.domain_id = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: customerBizplace.id })\n .andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })\n .andWhere(\n new Brackets(qb => {\n qb.where('\"INV\".\"locked_qty\" ISNULL')\n qb.orWhere('\"INV\".\"locked_qty\" = 0')\n })\n )\n\n if (orderInventory && orderInventory.length > 0) {\n let keyval = {\n batchId: 'batch_id',\n batchIdRef: 'batch_id_ref',\n packingType: 'packing_type',\n packingSize: 'packing_size',\n productId: 'product_id'\n }\n\n qb.andWhere(\n new Brackets(qb => {\n orderInventory.forEach((itm, idx) => {\n // sample itm value\n // batchId: 'WO00019730', batchIdRef: null, packingType: 'CARBOY', packingSize: 1, productId: '1d679587-c713-42d6-bd0a-74e587e39cc7'\n qb.orWhere(\n new Brackets(qb2 => {\n let first = true\n for (var prop in itm) {\n if (first) {\n first = false\n qb2.where(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : \" = '\" + itm[prop] + \"'\"}`)\n } else {\n qb2.andWhere(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : \" = '\" + itm[prop] + \"'\"}`)\n }\n }\n })\n )\n })\n })\n )\n } else {\n if (limit > 0) {\n qb.orderBy('RANDOM()').limit(limit)\n }\n }\n\n let inventories: Inventory[] = await qb.getMany()\n\n if (!inventories.length) {\n throw new Error(`Failed to find inventories`)\n }\n\n let cycleCountWorksheet: Worksheet = new Worksheet()\n cycleCountWorksheet.domain = this.domain\n cycleCountWorksheet.bizplace = customerBizplace\n cycleCountWorksheet.name = WorksheetNoGenerator.cycleCount()\n cycleCountWorksheet.inventoryCheck = cycleCount\n cycleCountWorksheet.type = WORKSHEET_TYPE.CYCLE_COUNT\n cycleCountWorksheet.status = WORKSHEET_STATUS.DEACTIVATED\n cycleCountWorksheet.creator = this.user\n cycleCountWorksheet.updater = this.user\n cycleCountWorksheet = await this.trxMgr.getRepository(Worksheet).save(cycleCountWorksheet)\n\n // generate order inventory mapping with inventory ID\n let targetInventories: OrderInventory[] = []\n for (let i: number = 0; i < inventories.length; i++) {\n const inventory: Inventory = inventories[i]\n\n let targetInventory: OrderInventory = new OrderInventory()\n targetInventory.domain = this.domain\n targetInventory.bizplace = customerBizplace\n targetInventory.status = ORDER_INVENTORY_STATUS.PENDING\n targetInventory.name = OrderNoGenerator.orderInventory()\n targetInventory.inventoryCheck = cycleCount\n targetInventory.originQty = inventory.qty\n targetInventory.originWeight = 0\n targetInventory.originUomValue = inventory.uomValue\n targetInventory.originBatchNo = inventory.batchId\n targetInventory.originLocation = inventory.location\n targetInventory.releaseQty = 0\n targetInventory.releaseWeight = 0\n targetInventory.releaseUomValue = 0\n targetInventory.inventory = inventory\n targetInventory.creator = this.user\n targetInventory.updater = this.user\n targetInventories.push(targetInventory)\n\n inventory.lockedQty = inventory.qty\n inventory.lockedWeight = 0\n inventory.lockedUomValue = inventory.uomValue\n inventory.updater = this.user\n }\n\n targetInventories = await this.trxMgr.getRepository(OrderInventory).save(targetInventories, { chunk: 500 })\n\n inventories = await this.trxMgr.getRepository(Inventory).save(inventories, { chunk: 500 })\n\n let cycleCountWorksheetDetails: WorksheetDetail[] = []\n for (let i: number = 0; i < targetInventories.length; i++) {\n let targetInventory: OrderInventory = targetInventories[i]\n\n let cycleCountWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n cycleCountWorksheetDetail.domain = this.domain\n cycleCountWorksheetDetail.bizplace = customerBizplace\n cycleCountWorksheetDetail.worksheet = cycleCountWorksheet\n cycleCountWorksheetDetail.name = WorksheetNoGenerator.cycleCountDetail()\n cycleCountWorksheetDetail.targetInventory = targetInventory\n cycleCountWorksheetDetail.type = WORKSHEET_TYPE.CYCLE_COUNT\n cycleCountWorksheetDetail.status = WORKSHEET_STATUS.DEACTIVATED\n cycleCountWorksheetDetail.creator = this.user\n cycleCountWorksheetDetail.updater = this.user\n\n cycleCountWorksheetDetails.push(cycleCountWorksheetDetail)\n }\n\n await this.trxMgr.getRepository(WorksheetDetail).save(cycleCountWorksheetDetails, { chunk: 500 })\n\n return cycleCountWorksheet\n }\n }\n\n async activateCycleCount(worksheetNo: string): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.CYCLE_COUNT, [\n 'inventoryCheck',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n\n let worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n let targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n for (let i: number = 0; i < targetInventories.length; i++) {\n let targetInventory: OrderInventory = targetInventories[i]\n targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n }\n await this.trxMgr.getRepository(OrderInventory).save(targetInventories, { chunk: 500 })\n\n for (let i: number = 0; i < worksheetDetails.length; i++) {\n let foundWSD: WorksheetDetail = worksheetDetails[i]\n foundWSD.status = WORKSHEET_STATUS.EXECUTING\n foundWSD.updater = this.user\n }\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails, { chunk: 500 })\n\n worksheet.status = WORKSHEET_STATUS.EXECUTING\n worksheet.startedAt = new Date()\n worksheet.updater = this.user\n worksheet = await this.trxMgr.getRepository(Worksheet).save(worksheet)\n\n let cycleCount: InventoryCheck = worksheet.inventoryCheck\n cycleCount.status = ORDER_STATUS.INSPECTING\n cycleCount.updater = this.user\n await this.updateRefOrder(cycleCount)\n return worksheet\n }\n\n async inspecting(\n worksheetDetailName: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number\n ): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.CYCLE_COUNT,\n ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n const inventory: Inventory = targetInventory.inventory\n const { batchId, qty, uomValue }: { batchId: string; qty: number; uomValue: number } = inventory\n\n const isChanged: boolean = batchId !== inspectedBatchNo || qty !== inspectedQty || uomValue !== inspectedUomValue\n const worksheetDetailStatus: string = isChanged ? WORKSHEET_STATUS.NOT_TALLY : WORKSHEET_STATUS.DONE\n const targetInventoryStatus: string = isChanged\n ? ORDER_INVENTORY_STATUS.NOT_TALLY\n : ORDER_INVENTORY_STATUS.INSPECTED\n\n worksheetDetail.status = worksheetDetailStatus\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.inspectedLocation = targetInventory.inventory.location\n targetInventory.status = targetInventoryStatus\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n //If all tally, remove lockedQty, lockedWeight, lockedUomValue\n if (!isChanged) {\n inventory.lockedQty = 0\n inventory.lockedWeight = 0\n inventory.lockedUomValue = 0\n inventory.updater = this.user\n await this.trxMgr.getRepository(Inventory).save(inventory, { chunk: 500 })\n }\n }\n\n async undoInspection(worksheetDetailName: string): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findWorksheetDetail(\n { domain: this.domain, name: worksheetDetailName, status: Not(Equal(WORKSHEET_STATUS.EXECUTING)) },\n ['targetInventory', 'targetInventory.inventory']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n targetInventory.inspectedBatchNo = null\n targetInventory.inspectedQty = null\n targetInventory.inspectedWeight = null\n targetInventory.inspectedUomValue = null\n targetInventory.inspectedLocation = null\n targetInventory.status =\n targetInventory.status === ORDER_INVENTORY_STATUS.RELOCATED\n ? ORDER_INVENTORY_STATUS.MISSING\n : ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n const inventory: Inventory = targetInventory.inventory\n inventory.lockedQty = inventory.qty\n inventory.lockedWeight = inventory.weight\n inventory.lockedUomValue = inventory.uomValue\n inventory.updater = this.user\n await this.trxMgr.getRepository(Inventory).save(inventory, { chunk: 500 })\n }\n\n async checkMissingPallet(worksheetDetailName: string): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.CYCLE_COUNT,\n ['targetInventory']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.status = ORDER_INVENTORY_STATUS.MISSING\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n }\n\n async addExtraPallet(\n cycleCountNo: string,\n palletId: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number,\n locationName: string\n ): Promise<void> {\n const inventoryCheck: InventoryCheck = await this.findRefOrder(\n InventoryCheck,\n {\n name: cycleCountNo,\n status: ORDER_STATUS.INSPECTING\n },\n ['bizplace']\n )\n\n const bizplace: Bizplace = inventoryCheck.bizplace\n const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')\n let inventory: Inventory = await qb\n .where('INV.domain = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace = :bizplaceId', { bizplaceId: bizplace.id })\n .andWhere('INV.palletId = :palletId', { palletId })\n .andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })\n .andWhere(\n new Brackets(qb => {\n qb.where('INV.lockedQty ISNULL')\n qb.orWhere('INV.lockedQty = 0')\n })\n )\n .getOne()\n if (!inventory) throw new Error('Failed to find inventory')\n\n const worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: this.domain,\n type: WORKSHEET_TYPE.CYCLE_COUNT,\n status: WORKSHEET_STATUS.EXECUTING,\n inventoryCheck\n }\n })\n const location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { domain: this.domain, name: locationName }\n })\n\n let targetInventory: OrderInventory = new OrderInventory()\n targetInventory.domain = this.domain\n targetInventory.bizplace = bizplace\n targetInventory.status = ORDER_INVENTORY_STATUS.ADDED\n targetInventory.name = OrderNoGenerator.orderInventory()\n targetInventory.inventoryCheck = inventoryCheck\n targetInventory.inventory = inventory\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedWeight = 0\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.inspectedLocation = location\n targetInventory.creator = this.user\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n let worksheetDetail: WorksheetDetail = new WorksheetDetail()\n worksheetDetail.domain = this.domain\n worksheetDetail.bizplace = bizplace\n worksheetDetail.worksheet = worksheet\n worksheetDetail.name = WorksheetNoGenerator.cycleCountDetail()\n worksheetDetail.targetInventory = targetInventory\n worksheetDetail.type = WORKSHEET_TYPE.CYCLE_COUNT\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.creator = this.user\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n\n async relocatePallet(\n worksheetDetailName: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number,\n inspectedLocationName: string\n ): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: { domain: this.domain, name: worksheetDetailName, type: WORKSHEET_TYPE.CYCLE_COUNT },\n relations: ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']\n })\n\n if (!worksheetDetail) throw new Error('Failed to find worksheet detail')\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n const location: Location = targetInventory?.inventory?.location\n if (location.name === inspectedLocationName) throw new Error(`You can't relocate at same location`)\n\n const inspectedLocation: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { name: inspectedLocationName, domain: this.domain }\n })\n\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.inspectedLocation = inspectedLocation\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedWeight = 0\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.status = ORDER_INVENTORY_STATUS.RELOCATED\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n }\n\n async completeCycleCount(inventoryCheckNo: string): Promise<Worksheet> {\n const inventoryCheck: InventoryCheck = await this.findRefOrder(InventoryCheck, {\n name: inventoryCheckNo,\n status: ORDER_STATUS.INSPECTING\n })\n\n let worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: this.domain,\n status: WORKSHEET_STATUS.EXECUTING,\n type: In([WORKSHEET_TYPE.CYCLE_COUNT, WORKSHEET_TYPE.CYCLE_COUNT_RECHECK]),\n inventoryCheck\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n const {\n tallyTargetInventories,\n notTallyTargetInventories\n }: {\n tallyTargetInventories: OrderInventory[]\n notTallyTargetInventories: OrderInventory[]\n } = targetInventories.reduce(\n (result, targetInventory: OrderInventory) => {\n if (targetInventory.status !== ORDER_INVENTORY_STATUS.INSPECTED) {\n result.notTallyTargetInventories.push(targetInventory)\n } else {\n result.tallyTargetInventories.push(targetInventory)\n }\n\n return result\n },\n {\n tallyTargetInventories: [],\n notTallyTargetInventories: []\n }\n )\n\n const tallyInventories: Inventory[] = tallyTargetInventories.map(targetInventory => targetInventory.inventory)\n tallyTargetInventories.forEach((targetInventory: OrderInventory) => {\n targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED\n targetInventory.updater = this.user\n })\n await this.trxMgr.getRepository(OrderInventory).save(tallyTargetInventories, { chunk: 500 })\n\n tallyInventories.forEach((inventory: Inventory) => {\n inventory.lockedQty = 0\n inventory.lockedWeight = 0\n inventory.lockedUomValue = 0\n inventory.updater = this.user\n })\n await this.trxMgr.getRepository(Inventory).save(tallyInventories, { chunk: 500 })\n\n if (notTallyTargetInventories.length) {\n worksheet.status = WORKSHEET_STATUS.NOT_TALLY\n inventoryCheck.status = ORDER_STATUS.PENDING_REVIEW\n } else {\n worksheet.status = WORKSHEET_STATUS.DONE\n inventoryCheck.status = ORDER_STATUS.DONE\n }\n\n worksheet.endedAt = new Date()\n worksheet.updater = this.user\n await this.trxMgr.getRepository(Worksheet).save(worksheet)\n\n inventoryCheck.updater = this.user\n await this.trxMgr.getRepository(InventoryCheck).save(inventoryCheck)\n\n return worksheet\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cycle-count-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/inspect/cycle-count-worksheet-controller.ts"],"names":[],"mappings":";;;AAAA,qCAAsE;AAEtE,uDAAmD;AACnD,2DAOmC;AACnC,mEAAsF;AAEtF,+CAAkE;AAClE,6CAA2D;AAC3D,uCAAkD;AAClD,kEAA6D;AAE7D,MAAa,6BAA8B,SAAQ,0CAAmB;IACpE,KAAK,CAAC,2BAA2B,CAC/B,aAAqB,EACrB,UAAkB,EAClB,oBAA8B,EAAE,EAChC,cAAgC,EAChC,KAAa;QAEb,2CAA2C;QAC3C,MAAM,gBAAgB,GAAa,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;QAC1G,IAAI,wBAAwB,GAAc,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAS,CAAC,CAAC,OAAO,CAAC;YAC3F,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,gBAAgB;gBAC1B,IAAI,EAAE,IAAA,YAAE,EAAC,CAAC,0BAAc,CAAC,WAAW,EAAE,0BAAc,CAAC,mBAAmB,CAAC,CAAC;gBAC1E,MAAM,EAAE,IAAA,aAAG,EAAC,4BAAgB,CAAC,IAAI,CAAC;aACnC;YACD,SAAS,EAAE,CAAC,kBAAkB,EAAE,kCAAkC,EAAE,gBAAgB,CAAC;SACtF,CAAC,CAAA;QAEF,sEAAsE;QACtE,IAAI,iBAAiB,CAAC,MAAM,EAAE;YAC5B,gEAAgE;YAChE,IAAI,iBAAiB,GAAqB,MAAM,IAAI,CAAC,MAAM;iBACxD,aAAa,CAAC,2BAAc,CAAC;iBAC7B,SAAS,CAAC,iBAAiB,CAAC,CAAA;YAC/B,iBAAiB,CAAC,OAAO,CAAC,CAAC,eAA+B,EAAE,EAAE;gBAC5D,eAAe,CAAC,MAAM,GAAG,mCAAsB,CAAC,UAAU,CAAA;gBAC1D,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;YACrC,CAAC,CAAC,CAAA;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YAEvE,sDAAsD;YACtD,wBAAwB,CAAC,IAAI,GAAG,0BAAc,CAAC,mBAAmB,CAAA;YAClE,wBAAwB,CAAC,MAAM,GAAG,4BAAgB,CAAC,SAAS,CAAA;YAC5D,wBAAwB,CAAC,OAAO,GAAG,IAAI,CAAA;YACvC,wBAAwB,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;YAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAS,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;YAEzE,8DAA8D;YAC9D,IAAI,gBAAgB,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CACrE,CAAC,GAAoB,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,CACjF,CAAA;YACD,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAoB,EAAE,EAAE;gBAChD,GAAG,CAAC,MAAM,GAAG,4BAAgB,CAAC,SAAS,CAAA;gBACvC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;YACzB,CAAC,CAAC,CAAA;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAEvE,+BAA+B;YAC/B,MAAM,UAAU,GAAmB,wBAAwB,CAAC,cAAc,CAAA;YAC1E,UAAU,CAAC,MAAM,GAAG,yBAAY,CAAC,UAAU,CAAA;YAC3C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;YAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAEhE,OAAO,wBAAwB,CAAA;SAChC;aAAM;YACL,uDAAuD;YACvD,IAAI,wBAAwB,EAAE;gBAC5B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;aAC5D;YAED,MAAM,UAAU,GAAmB,MAAM,IAAA,+BAAkB,EACzD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,EACT,aAAa,EACb,UAAU,CACX,CAAA;YAED,0DAA0D;YAC1D,MAAM,EAAE,GAAkC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACxG,EAAE,CAAC,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC;iBACxC,KAAK,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;iBAChE,QAAQ,CAAC,+BAA+B,EAAE,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC;iBAC9E,QAAQ,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,iCAAgB,CAAC,MAAM,EAAE,CAAC;iBACrE,QAAQ,CACP,IAAI,kBAAQ,CAAC,EAAE,CAAC,EAAE;gBAChB,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;gBACrC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAA;YACtC,CAAC,CAAC,CACH,CAAA;YAEH,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,IAAI,MAAM,GAAG;oBACX,OAAO,EAAE,UAAU;oBACnB,UAAU,EAAE,cAAc;oBAC1B,WAAW,EAAE,cAAc;oBAC3B,WAAW,EAAE,cAAc;oBAC3B,SAAS,EAAE,YAAY;iBACxB,CAAA;gBAED,EAAE,CAAC,QAAQ,CACT,IAAI,kBAAQ,CAAC,EAAE,CAAC,EAAE;oBAChB,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;wBAClC,mBAAmB;wBACnB,oIAAoI;wBACpI,EAAE,CAAC,OAAO,CACR,IAAI,kBAAQ,CAAC,GAAG,CAAC,EAAE;4BACjB,IAAI,KAAK,GAAG,IAAI,CAAA;4BAChB,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE;gCACpB,IAAI,KAAK,EAAE;oCACT,KAAK,GAAG,KAAK,CAAA;oCACb,GAAG,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;iCAC7F;qCAAM;oCACL,GAAG,CAAC,QAAQ,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;iCAChG;6BACF;wBACH,CAAC,CAAC,CACH,CAAA;oBACH,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CACH,CAAA;aACF;iBAAM;gBACL,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;iBACpC;aACF;YAED,IAAI,WAAW,GAAgB,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;YAEjD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;aAC9C;YAED,IAAI,mBAAmB,GAAc,IAAI,oBAAS,EAAE,CAAA;YACpD,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YACxC,mBAAmB,CAAC,QAAQ,GAAG,gBAAgB,CAAA;YAC/C,mBAAmB,CAAC,IAAI,GAAG,4BAAoB,CAAC,UAAU,EAAE,CAAA;YAC5D,mBAAmB,CAAC,cAAc,GAAG,UAAU,CAAA;YAC/C,mBAAmB,CAAC,IAAI,GAAG,0BAAc,CAAC,WAAW,CAAA;YACrD,mBAAmB,CAAC,MAAM,GAAG,4BAAgB,CAAC,WAAW,CAAA;YACzD,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;YACvC,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;YACvC,mBAAmB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAS,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YAE1F,qDAAqD;YACrD,IAAI,iBAAiB,GAAqB,EAAE,CAAA;YAC5C,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnD,MAAM,SAAS,GAAc,WAAW,CAAC,CAAC,CAAC,CAAA;gBAE3C,IAAI,eAAe,GAAmB,IAAI,2BAAc,EAAE,CAAA;gBAC1D,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;gBACpC,eAAe,CAAC,QAAQ,GAAG,gBAAgB,CAAA;gBAC3C,eAAe,CAAC,MAAM,GAAG,mCAAsB,CAAC,OAAO,CAAA;gBACvD,eAAe,CAAC,IAAI,GAAG,6BAAgB,CAAC,cAAc,EAAE,CAAA;gBACxD,eAAe,CAAC,cAAc,GAAG,UAAU,CAAA;gBAC3C,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAA;gBACzC,eAAe,CAAC,YAAY,GAAG,CAAC,CAAA;gBAChC,eAAe,CAAC,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAA;gBACnD,eAAe,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAA;gBACjD,eAAe,CAAC,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAA;gBACnD,eAAe,CAAC,UAAU,GAAG,CAAC,CAAA;gBAC9B,eAAe,CAAC,aAAa,GAAG,CAAC,CAAA;gBACjC,eAAe,CAAC,eAAe,GAAG,CAAC,CAAA;gBACnC,eAAe,CAAC,SAAS,GAAG,SAAS,CAAA;gBACrC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBACnC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBACnC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gBAEvC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAA;gBACnC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAA;gBAC1B,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAA;gBAC7C,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;aAC9B;YAED,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YAE3G,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YAE1F,IAAI,0BAA0B,GAAsB,EAAE,CAAA;YACtD,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzD,IAAI,eAAe,GAAmB,iBAAiB,CAAC,CAAC,CAAC,CAAA;gBAE1D,IAAI,yBAAyB,GAAoB,IAAI,0BAAe,EAAE,CAAA;gBACtE,yBAAyB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;gBAC9C,yBAAyB,CAAC,QAAQ,GAAG,gBAAgB,CAAA;gBACrD,yBAAyB,CAAC,SAAS,GAAG,mBAAmB,CAAA;gBACzD,yBAAyB,CAAC,IAAI,GAAG,4BAAoB,CAAC,gBAAgB,EAAE,CAAA;gBACxE,yBAAyB,CAAC,eAAe,GAAG,eAAe,CAAA;gBAC3D,yBAAyB,CAAC,IAAI,GAAG,0BAAc,CAAC,WAAW,CAAA;gBAC3D,yBAAyB,CAAC,MAAM,GAAG,4BAAgB,CAAC,WAAW,CAAA;gBAC/D,yBAAyB,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBAC7C,yBAAyB,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBAE7C,0BAA0B,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;aAC3D;YAED,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YAEjG,OAAO,mBAAmB,CAAA;SAC3B;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,WAAmB;QAC1C,IAAI,SAAS,GAAc,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,0BAAc,CAAC,WAAW,EAAE;YACtG,gBAAgB;YAChB,kBAAkB;YAClB,kCAAkC;SACnC,CAAC,CAAA;QAEF,IAAI,gBAAgB,GAAsB,SAAS,CAAC,gBAAgB,CAAA;QACpE,IAAI,iBAAiB,GAAqB,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAE7G,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzD,IAAI,eAAe,GAAmB,iBAAiB,CAAC,CAAC,CAAC,CAAA;YAC1D,eAAe,CAAC,MAAM,GAAG,mCAAsB,CAAC,UAAU,CAAA;YAC1D,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;SACpC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAEvF,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxD,IAAI,QAAQ,GAAoB,gBAAgB,CAAC,CAAC,CAAC,CAAA;YACnD,QAAQ,CAAC,MAAM,GAAG,4BAAgB,CAAC,SAAS,CAAA;YAC5C,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;SAC7B;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAEvF,SAAS,CAAC,MAAM,GAAG,4BAAgB,CAAC,SAAS,CAAA;QAC7C,SAAS,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;QAChC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QAC7B,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAEtE,IAAI,UAAU,GAAmB,SAAS,CAAC,cAAc,CAAA;QACzD,UAAU,CAAC,MAAM,GAAG,yBAAY,CAAC,UAAU,CAAA;QAC3C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QAC9B,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QACrC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CACd,mBAA2B,EAC3B,gBAAwB,EACxB,YAAoB,EACpB,iBAAyB;QAEzB,IAAI,eAAe,GAAoB,MAAM,IAAI,CAAC,mCAAmC,CACnF,mBAAmB,EACnB,0BAAc,CAAC,WAAW,EAC1B,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,oCAAoC,CAAC,CACvF,CAAA;QAED,IAAI,eAAe,GAAmB,eAAe,CAAC,eAAe,CAAA;QACrE,MAAM,SAAS,GAAc,eAAe,CAAC,SAAS,CAAA;QACtD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAuD,SAAS,CAAA;QAEhG,MAAM,SAAS,GAAY,OAAO,KAAK,gBAAgB,IAAI,GAAG,KAAK,YAAY,IAAI,QAAQ,KAAK,iBAAiB,CAAA;QACjH,MAAM,qBAAqB,GAAW,SAAS,CAAC,CAAC,CAAC,4BAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,4BAAgB,CAAC,IAAI,CAAA;QACpG,MAAM,qBAAqB,GAAW,SAAS;YAC7C,CAAC,CAAC,mCAAsB,CAAC,SAAS;YAClC,CAAC,CAAC,mCAAsB,CAAC,SAAS,CAAA;QAEpC,eAAe,CAAC,MAAM,GAAG,qBAAqB,CAAA;QAC9C,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEtE,eAAe,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACnD,eAAe,CAAC,YAAY,GAAG,YAAY,CAAA;QAC3C,eAAe,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QACrD,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAA;QACtE,eAAe,CAAC,MAAM,GAAG,qBAAqB,CAAA;QAC9C,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;QAEhD,8DAA8D;QAC9D,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,CAAC,SAAS,GAAG,CAAC,CAAA;YACvB,SAAS,CAAC,YAAY,GAAG,CAAC,CAAA;YAC1B,SAAS,CAAC,cAAc,GAAG,CAAC,CAAA;YAC5B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;SAC3E;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,mBAA2B;QAC9C,IAAI,eAAe,GAAoB,MAAM,IAAI,CAAC,mBAAmB,CACnE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAA,aAAG,EAAC,IAAA,eAAK,EAAC,4BAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,EAClG,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CACjD,CAAA;QAED,IAAI,eAAe,GAAmB,eAAe,CAAC,eAAe,CAAA;QACrE,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAA;QACvC,eAAe,CAAC,YAAY,GAAG,IAAI,CAAA;QACnC,eAAe,CAAC,eAAe,GAAG,IAAI,CAAA;QACtC,eAAe,CAAC,iBAAiB,GAAG,IAAI,CAAA;QACxC,eAAe,CAAC,iBAAiB,GAAG,IAAI,CAAA;QACxC,eAAe,CAAC,MAAM;YACpB,eAAe,CAAC,MAAM,KAAK,mCAAsB,CAAC,SAAS;gBACzD,CAAC,CAAC,mCAAsB,CAAC,OAAO;gBAChC,CAAC,CAAC,mCAAsB,CAAC,UAAU,CAAA;QACvC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;QAEhD,eAAe,CAAC,MAAM,GAAG,4BAAgB,CAAC,SAAS,CAAA;QACnD,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEtE,MAAM,SAAS,GAAc,eAAe,CAAC,SAAS,CAAA;QACtD,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAA;QACnC,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAA;QACzC,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAA;QAC7C,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,mBAA2B;QAClD,IAAI,eAAe,GAAoB,MAAM,IAAI,CAAC,mCAAmC,CACnF,mBAAmB,EACnB,0BAAc,CAAC,WAAW,EAC1B,CAAC,iBAAiB,CAAC,CACpB,CAAA;QAED,IAAI,eAAe,GAAmB,eAAe,CAAC,eAAe,CAAA;QACrE,eAAe,CAAC,MAAM,GAAG,4BAAgB,CAAC,SAAS,CAAA;QACnD,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEtE,eAAe,CAAC,MAAM,GAAG,mCAAsB,CAAC,OAAO,CAAA;QACvD,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,YAAoB,EACpB,QAAgB,EAChB,gBAAwB,EACxB,YAAoB,EACpB,iBAAyB,EACzB,YAAoB;QAEpB,MAAM,cAAc,GAAmB,MAAM,IAAI,CAAC,YAAY,CAC5D,2BAAc,EACd;YACE,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,yBAAY,CAAC,UAAU;SAChC,EACD,CAAC,UAAU,CAAC,CACb,CAAA;QAED,MAAM,QAAQ,GAAa,cAAc,CAAC,QAAQ,CAAA;QAClD,MAAM,EAAE,GAAkC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACxG,IAAI,SAAS,GAAc,MAAM,EAAE;aAChC,KAAK,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;aAC7D,QAAQ,CAAC,4BAA4B,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;aACnE,QAAQ,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,CAAC;aAClD,QAAQ,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,iCAAgB,CAAC,MAAM,EAAE,CAAC;aACrE,QAAQ,CACP,IAAI,kBAAQ,CAAC,EAAE,CAAC,EAAE;YAChB,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;YAChC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QACjC,CAAC,CAAC,CACH;aACA,MAAM,EAAE,CAAA;QACX,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAE3D,MAAM,SAAS,GAAc,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAS,CAAC,CAAC,OAAO,CAAC;YAC9E,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,0BAAc,CAAC,WAAW;gBAChC,MAAM,EAAE,4BAAgB,CAAC,SAAS;gBAClC,cAAc;aACf;SACF,CAAC,CAAA;QACF,MAAM,QAAQ,GAAa,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,yBAAQ,CAAC,CAAC,OAAO,CAAC;YAC3E,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;SACnD,CAAC,CAAA;QAEF,IAAI,eAAe,GAAmB,IAAI,2BAAc,EAAE,CAAA;QAC1D,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACpC,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACnC,eAAe,CAAC,MAAM,GAAG,mCAAsB,CAAC,KAAK,CAAA;QACrD,eAAe,CAAC,IAAI,GAAG,6BAAgB,CAAC,cAAc,EAAE,CAAA;QACxD,eAAe,CAAC,cAAc,GAAG,cAAc,CAAA;QAC/C,eAAe,CAAC,SAAS,GAAG,SAAS,CAAA;QACrC,eAAe,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACnD,eAAe,CAAC,YAAY,GAAG,YAAY,CAAA;QAC3C,eAAe,CAAC,eAAe,GAAG,CAAC,CAAA;QACnC,eAAe,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QACrD,eAAe,CAAC,iBAAiB,GAAG,QAAQ,CAAA;QAC5C,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;QAEhD,IAAI,eAAe,GAAoB,IAAI,0BAAe,EAAE,CAAA;QAC5D,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACpC,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACnC,eAAe,CAAC,SAAS,GAAG,SAAS,CAAA;QACrC,eAAe,CAAC,IAAI,GAAG,4BAAoB,CAAC,gBAAgB,EAAE,CAAA;QAC9D,eAAe,CAAC,eAAe,GAAG,eAAe,CAAA;QACjD,eAAe,CAAC,IAAI,GAAG,0BAAc,CAAC,WAAW,CAAA;QACjD,eAAe,CAAC,MAAM,GAAG,4BAAgB,CAAC,SAAS,CAAA;QACnD,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,mBAA2B,EAC3B,gBAAwB,EACxB,YAAoB,EACpB,iBAAyB,EACzB,qBAA6B;;QAE7B,IAAI,eAAe,GAAoB,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,OAAO,CAAC;YAC9F,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,0BAAc,CAAC,WAAW,EAAE;YAC3F,SAAS,EAAE,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,oCAAoC,CAAC;SAClG,CAAC,CAAA;QAEF,IAAI,CAAC,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QAExE,IAAI,eAAe,GAAmB,eAAe,CAAC,eAAe,CAAA;QACrE,MAAM,QAAQ,GAAa,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,SAAS,0CAAE,QAAQ,CAAA;QAC/D,IAAI,QAAQ,CAAC,IAAI,KAAK,qBAAqB;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAEnG,MAAM,iBAAiB,GAAa,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,yBAAQ,CAAC,CAAC,OAAO,CAAC;YACpF,KAAK,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;SAC5D,CAAC,CAAA;QAEF,eAAe,CAAC,MAAM,GAAG,4BAAgB,CAAC,SAAS,CAAA;QACnD,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEtE,eAAe,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QACrD,eAAe,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACnD,eAAe,CAAC,YAAY,GAAG,YAAY,CAAA;QAC3C,eAAe,CAAC,eAAe,GAAG,CAAC,CAAA;QACnC,eAAe,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QACrD,eAAe,CAAC,MAAM,GAAG,mCAAsB,CAAC,SAAS,CAAA;QACzD,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,gBAAwB;QAC/C,MAAM,cAAc,GAAmB,MAAM,IAAI,CAAC,YAAY,CAAC,2BAAc,EAAE;YAC7E,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,yBAAY,CAAC,UAAU;SAChC,CAAC,CAAA;QAEF,IAAI,SAAS,GAAc,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAS,CAAC,CAAC,OAAO,CAAC;YAC5E,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,4BAAgB,CAAC,SAAS;gBAClC,IAAI,EAAE,IAAA,YAAE,EAAC,CAAC,0BAAc,CAAC,WAAW,EAAE,0BAAc,CAAC,mBAAmB,CAAC,CAAC;gBAC1E,cAAc;aACf;YACD,SAAS,EAAE,CAAC,kBAAkB,EAAE,kCAAkC,EAAE,4CAA4C,CAAC;SAClH,CAAC,CAAA;QACF,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,4BAAgB,CAAC,SAAS,EAAE,CAAC,CAAA;QAE3E,MAAM,gBAAgB,GAAsB,SAAS,CAAC,gBAAgB,CAAA;QACtE,MAAM,iBAAiB,GAAqB,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAE/G,MAAM,EACJ,sBAAsB,EACtB,yBAAyB,EAC1B,GAGG,iBAAiB,CAAC,MAAM,CAC1B,CAAC,MAAM,EAAE,eAA+B,EAAE,EAAE;YAC1C,IAAI,eAAe,CAAC,MAAM,KAAK,mCAAsB,CAAC,SAAS,EAAE;gBAC/D,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;aACvD;iBAAM;gBACL,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;aACpD;YAED,OAAO,MAAM,CAAA;QACf,CAAC,EACD;YACE,sBAAsB,EAAE,EAAE;YAC1B,yBAAyB,EAAE,EAAE;SAC9B,CACF,CAAA;QAED,MAAM,gBAAgB,GAAgB,sBAAsB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;QAC9G,sBAAsB,CAAC,OAAO,CAAC,CAAC,eAA+B,EAAE,EAAE;YACjE,eAAe,CAAC,MAAM,GAAG,mCAAsB,CAAC,UAAU,CAAA;YAC1D,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACrC,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAE5F,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAoB,EAAE,EAAE;YAChD,SAAS,CAAC,SAAS,GAAG,CAAC,CAAA;YACvB,SAAS,CAAC,YAAY,GAAG,CAAC,CAAA;YAC1B,SAAS,CAAC,cAAc,GAAG,CAAC,CAAA;YAC5B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QAC/B,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAEjF,IAAI,yBAAyB,CAAC,MAAM,EAAE;YACpC,SAAS,CAAC,MAAM,GAAG,4BAAgB,CAAC,SAAS,CAAA;YAC7C,cAAc,CAAC,MAAM,GAAG,yBAAY,CAAC,cAAc,CAAA;SACpD;aAAM;YACL,SAAS,CAAC,MAAM,GAAG,4BAAgB,CAAC,IAAI,CAAA;YACxC,cAAc,CAAC,MAAM,GAAG,yBAAY,CAAC,IAAI,CAAA;SAC1C;QAED,SAAS,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAA;QAC9B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE1D,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QAClC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAEpE,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AA1fD,sEA0fC","sourcesContent":["import { Brackets, Equal, In, Not, SelectQueryBuilder } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n generateCycleCount,\n InventoryCheck,\n ORDER_INVENTORY_STATUS,\n ORDER_STATUS,\n OrderInventory,\n OrderNoGenerator\n} from '@things-factory/sales-base'\nimport { Inventory, INVENTORY_STATUS, Location } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { WorksheetNoGenerator } from '../../utils'\nimport { WorksheetController } from '../worksheet-controller'\n\nexport class CycleCountWorksheetController extends WorksheetController {\n async generateCycleCountWorksheet(\n executionDate: string,\n customerId: string,\n orderInventoryIds: string[] = [],\n orderInventory: OrderInventory[],\n limit: number\n ): Promise<Worksheet> {\n // Find out warehouse and customer bizplace\n const customerBizplace: Bizplace = await this.trxMgr.getRepository(Bizplace).findOneBy({ id: customerId })\n let foundCycleCountWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: this.domain,\n bizplace: customerBizplace,\n type: In([WORKSHEET_TYPE.CYCLE_COUNT, WORKSHEET_TYPE.CYCLE_COUNT_RECHECK]),\n status: Not(WORKSHEET_STATUS.DONE)\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'inventoryCheck']\n })\n\n // Create second round of cycle count with specified order inventories\n if (orderInventoryIds.length) {\n // Update status of target inventories (NOT_TALLY => INSPECTING)\n let targetInventories: OrderInventory[] = await this.trxMgr\n .getRepository(OrderInventory)\n .findByIds(orderInventoryIds)\n targetInventories.forEach((targetInventory: OrderInventory) => {\n targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n })\n await this.trxMgr.getRepository(OrderInventory).save(targetInventories)\n\n // Update status of worksheet (NOT_TALLY => EXECUTING)\n foundCycleCountWorksheet.type = WORKSHEET_TYPE.CYCLE_COUNT_RECHECK\n foundCycleCountWorksheet.status = WORKSHEET_STATUS.EXECUTING\n foundCycleCountWorksheet.endedAt = null\n foundCycleCountWorksheet.updater = this.user\n await this.trxMgr.getRepository(Worksheet).save(foundCycleCountWorksheet)\n\n // Update status of worksheet details (NOT_TALLY => EXECUTING)\n let worksheetDetails = foundCycleCountWorksheet.worksheetDetails.filter(\n (wsd: WorksheetDetail) => orderInventoryIds.indexOf(wsd.targetInventory.id) >= 0\n )\n worksheetDetails.forEach((wsd: WorksheetDetail) => {\n wsd.status = WORKSHEET_STATUS.EXECUTING\n wsd.updater = this.user\n })\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)\n\n // Update status of cycle count\n const cycleCount: InventoryCheck = foundCycleCountWorksheet.inventoryCheck\n cycleCount.status = ORDER_STATUS.INSPECTING\n cycleCount.updater = this.user\n await this.trxMgr.getRepository(InventoryCheck).save(cycleCount)\n\n return foundCycleCountWorksheet\n } else {\n // Create first round of cycle count with whole pallets\n if (foundCycleCountWorksheet) {\n throw new Error(`Unfinished cycle count worksheet exists.`)\n }\n\n const cycleCount: InventoryCheck = await generateCycleCount(\n this.trxMgr,\n this.domain,\n this.user,\n executionDate,\n customerId\n )\n\n // Find out inventories which is target for cycle counting\n const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')\n qb.leftJoinAndSelect('INV.location', 'LOC')\n .where('INV.domain_id = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: customerBizplace.id })\n .andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })\n .andWhere(\n new Brackets(qb => {\n qb.where('\"INV\".\"locked_qty\" ISNULL')\n qb.orWhere('\"INV\".\"locked_qty\" = 0')\n })\n )\n\n if (orderInventory && orderInventory.length > 0) {\n let keyval = {\n batchId: 'batch_id',\n batchIdRef: 'batch_id_ref',\n packingType: 'packing_type',\n packingSize: 'packing_size',\n productId: 'product_id'\n }\n\n qb.andWhere(\n new Brackets(qb => {\n orderInventory.forEach((itm, idx) => {\n // sample itm value\n // batchId: 'WO00019730', batchIdRef: null, packingType: 'CARBOY', packingSize: 1, productId: '1d679587-c713-42d6-bd0a-74e587e39cc7'\n qb.orWhere(\n new Brackets(qb2 => {\n let first = true\n for (var prop in itm) {\n if (first) {\n first = false\n qb2.where(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : \" = '\" + itm[prop] + \"'\"}`)\n } else {\n qb2.andWhere(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : \" = '\" + itm[prop] + \"'\"}`)\n }\n }\n })\n )\n })\n })\n )\n } else {\n if (limit > 0) {\n qb.orderBy('RANDOM()').limit(limit)\n }\n }\n\n let inventories: Inventory[] = await qb.getMany()\n\n if (!inventories.length) {\n throw new Error(`Failed to find inventories`)\n }\n\n let cycleCountWorksheet: Worksheet = new Worksheet()\n cycleCountWorksheet.domain = this.domain\n cycleCountWorksheet.bizplace = customerBizplace\n cycleCountWorksheet.name = WorksheetNoGenerator.cycleCount()\n cycleCountWorksheet.inventoryCheck = cycleCount\n cycleCountWorksheet.type = WORKSHEET_TYPE.CYCLE_COUNT\n cycleCountWorksheet.status = WORKSHEET_STATUS.DEACTIVATED\n cycleCountWorksheet.creator = this.user\n cycleCountWorksheet.updater = this.user\n cycleCountWorksheet = await this.trxMgr.getRepository(Worksheet).save(cycleCountWorksheet)\n\n // generate order inventory mapping with inventory ID\n let targetInventories: OrderInventory[] = []\n for (let i: number = 0; i < inventories.length; i++) {\n const inventory: Inventory = inventories[i]\n\n let targetInventory: OrderInventory = new OrderInventory()\n targetInventory.domain = this.domain\n targetInventory.bizplace = customerBizplace\n targetInventory.status = ORDER_INVENTORY_STATUS.PENDING\n targetInventory.name = OrderNoGenerator.orderInventory()\n targetInventory.inventoryCheck = cycleCount\n targetInventory.originQty = inventory.qty\n targetInventory.originWeight = 0\n targetInventory.originUomValue = inventory.uomValue\n targetInventory.originBatchNo = inventory.batchId\n targetInventory.originLocation = inventory.location\n targetInventory.releaseQty = 0\n targetInventory.releaseWeight = 0\n targetInventory.releaseUomValue = 0\n targetInventory.inventory = inventory\n targetInventory.creator = this.user\n targetInventory.updater = this.user\n targetInventories.push(targetInventory)\n\n inventory.lockedQty = inventory.qty\n inventory.lockedWeight = 0\n inventory.lockedUomValue = inventory.uomValue\n inventory.updater = this.user\n }\n\n targetInventories = await this.trxMgr.getRepository(OrderInventory).save(targetInventories, { chunk: 500 })\n\n inventories = await this.trxMgr.getRepository(Inventory).save(inventories, { chunk: 500 })\n\n let cycleCountWorksheetDetails: WorksheetDetail[] = []\n for (let i: number = 0; i < targetInventories.length; i++) {\n let targetInventory: OrderInventory = targetInventories[i]\n\n let cycleCountWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n cycleCountWorksheetDetail.domain = this.domain\n cycleCountWorksheetDetail.bizplace = customerBizplace\n cycleCountWorksheetDetail.worksheet = cycleCountWorksheet\n cycleCountWorksheetDetail.name = WorksheetNoGenerator.cycleCountDetail()\n cycleCountWorksheetDetail.targetInventory = targetInventory\n cycleCountWorksheetDetail.type = WORKSHEET_TYPE.CYCLE_COUNT\n cycleCountWorksheetDetail.status = WORKSHEET_STATUS.DEACTIVATED\n cycleCountWorksheetDetail.creator = this.user\n cycleCountWorksheetDetail.updater = this.user\n\n cycleCountWorksheetDetails.push(cycleCountWorksheetDetail)\n }\n\n await this.trxMgr.getRepository(WorksheetDetail).save(cycleCountWorksheetDetails, { chunk: 500 })\n\n return cycleCountWorksheet\n }\n }\n\n async activateCycleCount(worksheetNo: string): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.CYCLE_COUNT, [\n 'inventoryCheck',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n\n let worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n let targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n for (let i: number = 0; i < targetInventories.length; i++) {\n let targetInventory: OrderInventory = targetInventories[i]\n targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n }\n await this.trxMgr.getRepository(OrderInventory).save(targetInventories, { chunk: 500 })\n\n for (let i: number = 0; i < worksheetDetails.length; i++) {\n let foundWSD: WorksheetDetail = worksheetDetails[i]\n foundWSD.status = WORKSHEET_STATUS.EXECUTING\n foundWSD.updater = this.user\n }\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails, { chunk: 500 })\n\n worksheet.status = WORKSHEET_STATUS.EXECUTING\n worksheet.startedAt = new Date()\n worksheet.updater = this.user\n worksheet = await this.trxMgr.getRepository(Worksheet).save(worksheet)\n\n let cycleCount: InventoryCheck = worksheet.inventoryCheck\n cycleCount.status = ORDER_STATUS.INSPECTING\n cycleCount.updater = this.user\n await this.updateRefOrder(cycleCount)\n return worksheet\n }\n\n async inspecting(\n worksheetDetailName: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number\n ): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.CYCLE_COUNT,\n ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n const inventory: Inventory = targetInventory.inventory\n const { batchId, qty, uomValue }: { batchId: string; qty: number; uomValue: number } = inventory\n\n const isChanged: boolean = batchId !== inspectedBatchNo || qty !== inspectedQty || uomValue !== inspectedUomValue\n const worksheetDetailStatus: string = isChanged ? WORKSHEET_STATUS.NOT_TALLY : WORKSHEET_STATUS.DONE\n const targetInventoryStatus: string = isChanged\n ? ORDER_INVENTORY_STATUS.NOT_TALLY\n : ORDER_INVENTORY_STATUS.INSPECTED\n\n worksheetDetail.status = worksheetDetailStatus\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.inspectedLocation = targetInventory.inventory.location\n targetInventory.status = targetInventoryStatus\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n //If all tally, remove lockedQty, lockedWeight, lockedUomValue\n if (!isChanged) {\n inventory.lockedQty = 0\n inventory.lockedWeight = 0\n inventory.lockedUomValue = 0\n inventory.updater = this.user\n await this.trxMgr.getRepository(Inventory).save(inventory, { chunk: 500 })\n }\n }\n\n async undoInspection(worksheetDetailName: string): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findWorksheetDetail(\n { domain: this.domain, name: worksheetDetailName, status: Not(Equal(WORKSHEET_STATUS.EXECUTING)) },\n ['targetInventory', 'targetInventory.inventory']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n targetInventory.inspectedBatchNo = null\n targetInventory.inspectedQty = null\n targetInventory.inspectedWeight = null\n targetInventory.inspectedUomValue = null\n targetInventory.inspectedLocation = null\n targetInventory.status =\n targetInventory.status === ORDER_INVENTORY_STATUS.RELOCATED\n ? ORDER_INVENTORY_STATUS.MISSING\n : ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n const inventory: Inventory = targetInventory.inventory\n inventory.lockedQty = inventory.qty\n inventory.lockedWeight = inventory.weight\n inventory.lockedUomValue = inventory.uomValue\n inventory.updater = this.user\n await this.trxMgr.getRepository(Inventory).save(inventory, { chunk: 500 })\n }\n\n async checkMissingPallet(worksheetDetailName: string): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.CYCLE_COUNT,\n ['targetInventory']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.status = ORDER_INVENTORY_STATUS.MISSING\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n }\n\n async addExtraPallet(\n cycleCountNo: string,\n palletId: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number,\n locationName: string\n ): Promise<void> {\n const inventoryCheck: InventoryCheck = await this.findRefOrder(\n InventoryCheck,\n {\n name: cycleCountNo,\n status: ORDER_STATUS.INSPECTING\n },\n ['bizplace']\n )\n\n const bizplace: Bizplace = inventoryCheck.bizplace\n const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')\n let inventory: Inventory = await qb\n .where('INV.domain = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace = :bizplaceId', { bizplaceId: bizplace.id })\n .andWhere('INV.palletId = :palletId', { palletId })\n .andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })\n .andWhere(\n new Brackets(qb => {\n qb.where('INV.lockedQty ISNULL')\n qb.orWhere('INV.lockedQty = 0')\n })\n )\n .getOne()\n if (!inventory) throw new Error('Failed to find inventory')\n\n const worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: this.domain,\n type: WORKSHEET_TYPE.CYCLE_COUNT,\n status: WORKSHEET_STATUS.EXECUTING,\n inventoryCheck\n }\n })\n const location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { domain: this.domain, name: locationName }\n })\n\n let targetInventory: OrderInventory = new OrderInventory()\n targetInventory.domain = this.domain\n targetInventory.bizplace = bizplace\n targetInventory.status = ORDER_INVENTORY_STATUS.ADDED\n targetInventory.name = OrderNoGenerator.orderInventory()\n targetInventory.inventoryCheck = inventoryCheck\n targetInventory.inventory = inventory\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedWeight = 0\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.inspectedLocation = location\n targetInventory.creator = this.user\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n let worksheetDetail: WorksheetDetail = new WorksheetDetail()\n worksheetDetail.domain = this.domain\n worksheetDetail.bizplace = bizplace\n worksheetDetail.worksheet = worksheet\n worksheetDetail.name = WorksheetNoGenerator.cycleCountDetail()\n worksheetDetail.targetInventory = targetInventory\n worksheetDetail.type = WORKSHEET_TYPE.CYCLE_COUNT\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.creator = this.user\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n\n async relocatePallet(\n worksheetDetailName: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number,\n inspectedLocationName: string\n ): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: { domain: this.domain, name: worksheetDetailName, type: WORKSHEET_TYPE.CYCLE_COUNT },\n relations: ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']\n })\n\n if (!worksheetDetail) throw new Error('Failed to find worksheet detail')\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n const location: Location = targetInventory?.inventory?.location\n if (location.name === inspectedLocationName) throw new Error(`You can't relocate at same location`)\n\n const inspectedLocation: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { name: inspectedLocationName, domain: this.domain }\n })\n\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.inspectedLocation = inspectedLocation\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedWeight = 0\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.status = ORDER_INVENTORY_STATUS.RELOCATED\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n }\n\n async completeCycleCount(inventoryCheckNo: string): Promise<Worksheet> {\n const inventoryCheck: InventoryCheck = await this.findRefOrder(InventoryCheck, {\n name: inventoryCheckNo,\n status: ORDER_STATUS.INSPECTING\n })\n\n let worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: this.domain,\n status: WORKSHEET_STATUS.EXECUTING,\n type: In([WORKSHEET_TYPE.CYCLE_COUNT, WORKSHEET_TYPE.CYCLE_COUNT_RECHECK]),\n inventoryCheck\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n const {\n tallyTargetInventories,\n notTallyTargetInventories\n }: {\n tallyTargetInventories: OrderInventory[]\n notTallyTargetInventories: OrderInventory[]\n } = targetInventories.reduce(\n (result, targetInventory: OrderInventory) => {\n if (targetInventory.status !== ORDER_INVENTORY_STATUS.INSPECTED) {\n result.notTallyTargetInventories.push(targetInventory)\n } else {\n result.tallyTargetInventories.push(targetInventory)\n }\n\n return result\n },\n {\n tallyTargetInventories: [],\n notTallyTargetInventories: []\n }\n )\n\n const tallyInventories: Inventory[] = tallyTargetInventories.map(targetInventory => targetInventory.inventory)\n tallyTargetInventories.forEach((targetInventory: OrderInventory) => {\n targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED\n targetInventory.updater = this.user\n })\n await this.trxMgr.getRepository(OrderInventory).save(tallyTargetInventories, { chunk: 500 })\n\n tallyInventories.forEach((inventory: Inventory) => {\n inventory.lockedQty = 0\n inventory.lockedWeight = 0\n inventory.lockedUomValue = 0\n inventory.updater = this.user\n })\n await this.trxMgr.getRepository(Inventory).save(tallyInventories, { chunk: 500 })\n\n if (notTallyTargetInventories.length) {\n worksheet.status = WORKSHEET_STATUS.NOT_TALLY\n inventoryCheck.status = ORDER_STATUS.PENDING_REVIEW\n } else {\n worksheet.status = WORKSHEET_STATUS.DONE\n inventoryCheck.status = ORDER_STATUS.DONE\n }\n\n worksheet.endedAt = new Date()\n worksheet.updater = this.user\n await this.trxMgr.getRepository(Worksheet).save(worksheet)\n\n inventoryCheck.updater = this.user\n await this.trxMgr.getRepository(InventoryCheck).save(inventoryCheck)\n\n return worksheet\n }\n}\n"]}
|
|
@@ -13,7 +13,9 @@ class PackingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
|
|
|
13
13
|
domain: this.domain,
|
|
14
14
|
name: releaseGoodNo
|
|
15
15
|
}, ['orderInventories', 'orderInventories.inventory']);
|
|
16
|
-
let orderInventories = releaseGood.orderInventories
|
|
16
|
+
let orderInventories = releaseGood.orderInventories.filter(oi => {
|
|
17
|
+
return oi.inventory.status !== 'MISSING';
|
|
18
|
+
});
|
|
17
19
|
const existingPackingWorksheet = await this.trxMgr.getRepository(entities_1.Worksheet).findOne({
|
|
18
20
|
where: { domain: this.domain, releaseGood, type: constants_1.WORKSHEET_TYPE.PACKING, status: constants_1.WORKSHEET_STATUS.DEACTIVATED }
|
|
19
21
|
});
|
|
@@ -139,20 +141,32 @@ class PackingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
|
|
|
139
141
|
'targetInventory.inventory',
|
|
140
142
|
'targetInventory.inventory.product',
|
|
141
143
|
'targetInventory.inventory.product.productDetails',
|
|
144
|
+
'targetInventory.inventory.product.productDetails.childProductDetail',
|
|
142
145
|
'targetInventory.inventory.location'
|
|
143
146
|
]);
|
|
144
147
|
const releaseGood = worksheetDetail.targetInventory.releaseGood;
|
|
145
148
|
const product = worksheetDetail.targetInventory.inventory.product;
|
|
149
|
+
const filterProductDetails = product === null || product === void 0 ? void 0 : product.productDetails.filter(detail => !detail.deletedAt);
|
|
146
150
|
let targetInventory = worksheetDetail.targetInventory;
|
|
147
151
|
let inventory = targetInventory.inventory;
|
|
148
152
|
let packedQty = 1;
|
|
149
|
-
|
|
153
|
+
let pickedQty = targetInventory.releaseQty;
|
|
150
154
|
// search for matching product barcode
|
|
151
155
|
const productDetail = product === null || product === void 0 ? void 0 : product.productDetails.filter(detail => !detail.deletedAt).find(detail => detail.gtin === productBarcode &&
|
|
152
156
|
detail.packingType === inventory.packingType &&
|
|
153
157
|
detail.packingSize === inventory.packingSize);
|
|
154
|
-
if (!productDetail)
|
|
158
|
+
if (!productDetail && !(product === null || product === void 0 ? void 0 : product.isRequireSerialNumberScanningOutbound)) {
|
|
159
|
+
let roProductDetail = product === null || product === void 0 ? void 0 : product.productDetails.find((parentDetail) => parentDetail.packingType === inventory.packingType && parentDetail.packingSize == inventory.packingSize);
|
|
160
|
+
roProductDetail.product = product;
|
|
161
|
+
let childQty = await this.getChildQty(filterProductDetails, productBarcode, roProductDetail);
|
|
162
|
+
packedQty *= childQty;
|
|
163
|
+
}
|
|
164
|
+
else if (!productDetail) {
|
|
155
165
|
throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode));
|
|
166
|
+
}
|
|
167
|
+
if (packedQty + targetInventory.packedQty > pickedQty) {
|
|
168
|
+
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`));
|
|
169
|
+
}
|
|
156
170
|
// Serial Number scanning for batch picking
|
|
157
171
|
if (targetInventory === null || targetInventory === void 0 ? void 0 : targetInventory.refWorksheetId) {
|
|
158
172
|
if (product === null || product === void 0 ? void 0 : product.isRequireSerialNumberScanningOutbound) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packing-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/outbound/packing-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Equal, Not } from 'typeorm'\n\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'\nimport {\n Inventory,\n INVENTORY_ITEM_SOURCE,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE,\n InventoryItem,\n InventoryNoGenerator\n} from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { VasWorksheetController } from '../vas/vas-worksheet-controller'\n\nexport class PackingWorksheetController extends VasWorksheetController {\n async generatePackingWorksheet(releaseGoodNo: string): Promise<Worksheet> {\n let releaseGood: ReleaseGood = await this.findRefOrder(\n ReleaseGood,\n {\n domain: this.domain,\n name: releaseGoodNo\n },\n ['orderInventories', 'orderInventories.inventory']\n )\n let orderInventories: OrderInventory[] = releaseGood.orderInventories\n\n const existingPackingWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: { domain: this.domain, releaseGood, type: WORKSHEET_TYPE.PACKING, status: WORKSHEET_STATUS.DEACTIVATED }\n })\n\n if (existingPackingWorksheet) throw new Error('There is existing packing worksheet that has been generated')\n let worksheet: Worksheet = await this.createWorksheet(releaseGood, WORKSHEET_TYPE.PACKING)\n\n if (orderInventories.every((oi: OrderInventory) => oi.inventory?.id) || releaseGood.crossDocking) {\n worksheet.worksheetDetails = await this.createWorksheetDetails(\n worksheet,\n WORKSHEET_TYPE.PACKING,\n orderInventories\n )\n }\n\n orderInventories.forEach((oi: OrderInventory) => {\n oi.status = ORDER_INVENTORY_STATUS.READY_TO_PACK\n oi.updater = this.user\n })\n await this.updateOrderTargets(orderInventories)\n\n return worksheet\n }\n\n async activatePacking(worksheetNo: string): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.PACKING, [\n 'releaseGood',\n 'releaseGood.bizplace',\n 'releaseGood.bizplace.domain',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails.filter(x => x.status == 'DEACTIVATED')\n const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => {\n let targetInventory: OrderInventory = wsd.targetInventory\n targetInventory.status = ORDER_INVENTORY_STATUS.PACKING\n targetInventory.updater = this.user\n return targetInventory\n })\n this.updateOrderTargets(targetInventories)\n\n let releaseGood: ReleaseGood = worksheet.releaseGood\n releaseGood.status = ORDER_STATUS.PACKING\n releaseGood.updater = this.user\n this.updateRefOrder(releaseGood)\n\n worksheet = await this.activateWorksheet(worksheet, worksheetDetails, [])\n\n return worksheet\n }\n\n async packing(worksheetDetailName: string, packedQty: number, serialNumber?: string): Promise<WorksheetDetail> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.PACKING,\n [\n 'worksheet',\n 'worksheet.bizplace',\n 'worksheet.bizplace.domain',\n 'targetInventory',\n 'targetInventory.releaseGood',\n 'targetInventory.inventory',\n 'targetInventory.inventory.location',\n 'targetInventory.product'\n ]\n )\n const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n const product: Product = targetInventory.product\n let inventory: Inventory = targetInventory.inventory\n const pickedQty: number = targetInventory.releaseQty\n\n if (packedQty > pickedQty) {\n throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('pack', `packed quantity can't exceed release qty`))\n }\n\n // Serial Number scanning for batch picking\n if (targetInventory?.refWorksheetId) {\n if (product?.isRequireSerialNumberScanningOutbound) {\n if (!serialNumber || serialNumber == '') {\n throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('packing', `require serial number`))\n }\n\n let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({\n where: { domain: this.domain, serialNumber: serialNumber, product },\n relations: ['product', 'inventory']\n })\n\n if (foundSerialNumber) {\n if (foundSerialNumber.outboundOrderId) {\n let releaseGood: ReleaseGood = await this.trxMgr\n .getRepository(ReleaseGood)\n .findOne({ where: { id: foundSerialNumber.outboundOrderId } })\n throw new Error(`Inventory Item is already picked/packed in ${releaseGood.name}`)\n }\n\n foundSerialNumber.status = INVENTORY_STATUS.PACKING\n foundSerialNumber.updater = this.user\n foundSerialNumber.outboundOrderId = releaseGood.id\n\n await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)\n } else {\n let inventoryItem: InventoryItem = new InventoryItem()\n inventoryItem.name = InventoryNoGenerator.inventoryItemName()\n inventoryItem.serialNumber = serialNumber\n inventoryItem.status = INVENTORY_STATUS.PACKING\n inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND\n inventoryItem.outboundOrderId = releaseGood.id\n inventoryItem.product = product\n inventoryItem.inventory = inventory\n inventoryItem.domain = this.domain\n\n foundSerialNumber = await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)\n }\n }\n }\n\n targetInventory.packedQty = Boolean(targetInventory.packedQty) ? targetInventory.packedQty + packedQty : packedQty\n if (targetInventory.packedQty == targetInventory.releaseQty) {\n targetInventory.status = ORDER_INVENTORY_STATUS.PACKED\n\n let inventoryItems: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .find({ where: { outboundOrderId: releaseGood.id } })\n\n if (inventoryItems.length > 0) {\n inventoryItems.forEach((itm: InventoryItem) => {\n itm.status = INVENTORY_STATUS.PACKED\n itm.updater = this.user\n })\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)\n }\n\n await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.PACKING)\n\n worksheetDetail.status = WORKSHEET_STATUS.DONE\n }\n\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.updater = this.user\n worksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n return worksheetDetail\n }\n\n async scanProductPacking(\n worksheetDetailName: string,\n productBarcode: string,\n serialNumber?: string\n ): Promise<WorksheetDetail> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.PACKING,\n [\n 'worksheet',\n 'worksheet.bizplace',\n 'worksheet.bizplace.domain',\n 'targetInventory',\n 'targetInventory.releaseGood',\n 'targetInventory.inventory',\n 'targetInventory.inventory.product',\n 'targetInventory.inventory.product.productDetails',\n 'targetInventory.inventory.location'\n ]\n )\n const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood\n const product: Product = worksheetDetail.targetInventory.inventory.product\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n let inventory: Inventory = targetInventory.inventory\n let packedQty: number = 1\n const pickedQty: number = targetInventory.releaseQty\n\n // search for matching product barcode\n const productDetail: ProductDetail = product?.productDetails\n .filter(detail => !detail.deletedAt)\n .find(\n detail =>\n detail.gtin === productBarcode &&\n detail.packingType === inventory.packingType &&\n detail.packingSize === inventory.packingSize\n )\n if (!productDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))\n\n // Serial Number scanning for batch picking\n if (targetInventory?.refWorksheetId) {\n if (product?.isRequireSerialNumberScanningOutbound) {\n if (!serialNumber || serialNumber == '') {\n throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('packing', `require serial number`))\n }\n\n let foundSerialNumber: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .findOne({ where: { domain: this.domain, serialNumber: serialNumber, product } })\n\n if (foundSerialNumber) {\n if (foundSerialNumber.inventoryId !== inventory.id) {\n throw new Error('Serial Number scanned is in another inventory')\n }\n\n if (foundSerialNumber.outboundOrderId) {\n let releaseGood: ReleaseGood = await this.trxMgr\n .getRepository(ReleaseGood)\n .findOne({ where: { id: foundSerialNumber.outboundOrderId } })\n throw new Error(`Inventory Item is already picked/packed in ${releaseGood.name}`)\n }\n\n foundSerialNumber.status = INVENTORY_STATUS.PACKING\n foundSerialNumber.updater = this.user\n foundSerialNumber.outboundOrderId = releaseGood.id\n\n await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)\n } else {\n let inventoryItem: InventoryItem = new InventoryItem()\n inventoryItem.name = InventoryNoGenerator.inventoryItemName()\n inventoryItem.serialNumber = serialNumber\n inventoryItem.status = INVENTORY_STATUS.PACKING\n inventoryItem.outboundOrderId = releaseGood.id\n inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND\n inventoryItem.product = product\n inventoryItem.inventory = inventory\n inventoryItem.domain = this.domain\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)\n }\n }\n }\n\n targetInventory.packedQty = Boolean(targetInventory?.packedQty) ? targetInventory.packedQty + packedQty : packedQty\n if (targetInventory.packedQty > pickedQty) {\n throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('pack', `packed quantity can't exceed release qty`))\n }\n\n targetInventory.packedAt = new Date()\n targetInventory.packedByUser = this.user\n\n let packedBy: string[] = targetInventory.packedBy ? targetInventory.packedBy.split(',') : []\n if (!packedBy.find(x => x == this.user.name)) {\n packedBy.push(this.user.name)\n targetInventory.packedBy = packedBy.join(',')\n }\n\n if (targetInventory.packedQty == pickedQty) {\n targetInventory.status = ORDER_INVENTORY_STATUS.PACKED\n await this.updateOrderTargets([targetInventory])\n await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.PACKING)\n\n worksheetDetail.status = WORKSHEET_STATUS.DONE\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n let inventoryItems: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .find({ where: { outboundOrderId: releaseGood.id } })\n\n if (inventoryItems.length > 0) {\n inventoryItems.forEach((itm: InventoryItem) => {\n itm.status = INVENTORY_STATUS.PACKED\n itm.updater = this.user\n })\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)\n }\n } else {\n await this.trxMgr.getRepository(OrderInventory).save(targetInventory)\n }\n\n return worksheetDetail\n }\n\n async completePacking(releaseGoodNo: string): Promise<Worksheet> {\n let releaseGood: ReleaseGood = await this.findRefOrder(ReleaseGood, {\n domain: this.domain,\n name: releaseGoodNo,\n status: ORDER_STATUS.PACKING\n })\n\n const worksheet: Worksheet = await this.findWorksheetByRefOrder(releaseGood, WORKSHEET_TYPE.PACKING, [\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n let inventoryItems: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .find({ where: { outboundOrderId: releaseGood.id } })\n\n if (inventoryItems.length > 0) {\n inventoryItems.forEach((itm: InventoryItem) => {\n itm.status = INVENTORY_STATUS.TERMINATED\n itm.updater = this.user\n })\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)\n }\n\n let orderStatus: string\n if (releaseGood?.courierOption) orderStatus = ORDER_STATUS.DONE\n else orderStatus = ORDER_STATUS.LOADING\n\n return await this.completeWorksheet(worksheet, orderStatus)\n }\n\n async undoSerialNumberPacking(worksheetDetailName: string, inventoryItemId: string): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: { name: worksheetDetailName, domain: this.domain, status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED)) },\n relations: [\n 'worksheet',\n 'worksheet.releaseGood',\n 'targetInventory',\n 'targetInventory.product',\n 'targetInventory.inventory'\n ]\n })\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n let releaseGood: ReleaseGood = worksheetDetail.worksheet.releaseGood\n\n if (\n targetInventory.releaseQty == targetInventory.packedQty &&\n targetInventory.status == ORDER_INVENTORY_STATUS.PACKED\n ) {\n targetInventory.status = INVENTORY_STATUS.PACKING\n\n await this.trxMgr\n .getRepository(WorksheetDetail)\n .update({ id: worksheetDetail.id }, { status: WORKSHEET_STATUS.EXECUTING })\n }\n\n let inventoryItems: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .find({ where: { outboundOrderId: releaseGood.id } })\n\n let removeInventoryItem: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .findOne({ where: { id: inventoryItemId } })\n\n if (inventoryItems.length > 0) {\n inventoryItems.forEach((itm: InventoryItem) => {\n itm.status = INVENTORY_STATUS.PACKING\n itm.updater = this.user\n })\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)\n }\n\n if (removeInventoryItem.source == INVENTORY_ITEM_SOURCE.OUTBOUND) {\n await this.trxMgr.getRepository(InventoryItem).delete(removeInventoryItem.id)\n } else {\n await this.trxMgr.getRepository(InventoryItem).update(\n {\n id: inventoryItemId\n },\n {\n status: INVENTORY_STATUS.STORED,\n outboundOrderId: null,\n updater: this.user\n }\n )\n }\n\n targetInventory.packedQty--\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"packing-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/outbound/packing-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Equal, Not } from 'typeorm'\n\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'\nimport {\n Inventory,\n INVENTORY_ITEM_SOURCE,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE,\n InventoryItem,\n InventoryNoGenerator\n} from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { VasWorksheetController } from '../vas/vas-worksheet-controller'\n\nexport class PackingWorksheetController extends VasWorksheetController {\n async generatePackingWorksheet(releaseGoodNo: string): Promise<Worksheet> {\n let releaseGood: ReleaseGood = await this.findRefOrder(\n ReleaseGood,\n {\n domain: this.domain,\n name: releaseGoodNo\n },\n ['orderInventories', 'orderInventories.inventory']\n )\n let orderInventories: OrderInventory[] = releaseGood.orderInventories.filter(oi => {\n return oi.inventory.status !== 'MISSING'\n })\n\n const existingPackingWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: { domain: this.domain, releaseGood, type: WORKSHEET_TYPE.PACKING, status: WORKSHEET_STATUS.DEACTIVATED }\n })\n\n if (existingPackingWorksheet) throw new Error('There is existing packing worksheet that has been generated')\n let worksheet: Worksheet = await this.createWorksheet(releaseGood, WORKSHEET_TYPE.PACKING)\n\n if (orderInventories.every((oi: OrderInventory) => oi.inventory?.id) || releaseGood.crossDocking) {\n worksheet.worksheetDetails = await this.createWorksheetDetails(\n worksheet,\n WORKSHEET_TYPE.PACKING,\n orderInventories\n )\n }\n\n orderInventories.forEach((oi: OrderInventory) => {\n oi.status = ORDER_INVENTORY_STATUS.READY_TO_PACK\n oi.updater = this.user\n })\n await this.updateOrderTargets(orderInventories)\n\n return worksheet\n }\n\n async activatePacking(worksheetNo: string): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.PACKING, [\n 'releaseGood',\n 'releaseGood.bizplace',\n 'releaseGood.bizplace.domain',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails.filter(x => x.status == 'DEACTIVATED')\n const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => {\n let targetInventory: OrderInventory = wsd.targetInventory\n targetInventory.status = ORDER_INVENTORY_STATUS.PACKING\n targetInventory.updater = this.user\n return targetInventory\n })\n this.updateOrderTargets(targetInventories)\n\n let releaseGood: ReleaseGood = worksheet.releaseGood\n releaseGood.status = ORDER_STATUS.PACKING\n releaseGood.updater = this.user\n this.updateRefOrder(releaseGood)\n\n worksheet = await this.activateWorksheet(worksheet, worksheetDetails, [])\n\n return worksheet\n }\n\n async packing(worksheetDetailName: string, packedQty: number, serialNumber?: string): Promise<WorksheetDetail> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.PACKING,\n [\n 'worksheet',\n 'worksheet.bizplace',\n 'worksheet.bizplace.domain',\n 'targetInventory',\n 'targetInventory.releaseGood',\n 'targetInventory.inventory',\n 'targetInventory.inventory.location',\n 'targetInventory.product'\n ]\n )\n const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n const product: Product = targetInventory.product\n let inventory: Inventory = targetInventory.inventory\n const pickedQty: number = targetInventory.releaseQty\n\n if (packedQty > pickedQty) {\n throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('pack', `packed quantity can't exceed release qty`))\n }\n\n // Serial Number scanning for batch picking\n if (targetInventory?.refWorksheetId) {\n if (product?.isRequireSerialNumberScanningOutbound) {\n if (!serialNumber || serialNumber == '') {\n throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('packing', `require serial number`))\n }\n\n let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({\n where: { domain: this.domain, serialNumber: serialNumber, product },\n relations: ['product', 'inventory']\n })\n\n if (foundSerialNumber) {\n if (foundSerialNumber.outboundOrderId) {\n let releaseGood: ReleaseGood = await this.trxMgr\n .getRepository(ReleaseGood)\n .findOne({ where: { id: foundSerialNumber.outboundOrderId } })\n throw new Error(`Inventory Item is already picked/packed in ${releaseGood.name}`)\n }\n\n foundSerialNumber.status = INVENTORY_STATUS.PACKING\n foundSerialNumber.updater = this.user\n foundSerialNumber.outboundOrderId = releaseGood.id\n\n await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)\n } else {\n let inventoryItem: InventoryItem = new InventoryItem()\n inventoryItem.name = InventoryNoGenerator.inventoryItemName()\n inventoryItem.serialNumber = serialNumber\n inventoryItem.status = INVENTORY_STATUS.PACKING\n inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND\n inventoryItem.outboundOrderId = releaseGood.id\n inventoryItem.product = product\n inventoryItem.inventory = inventory\n inventoryItem.domain = this.domain\n\n foundSerialNumber = await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)\n }\n }\n }\n\n targetInventory.packedQty = Boolean(targetInventory.packedQty) ? targetInventory.packedQty + packedQty : packedQty\n if (targetInventory.packedQty == targetInventory.releaseQty) {\n targetInventory.status = ORDER_INVENTORY_STATUS.PACKED\n\n let inventoryItems: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .find({ where: { outboundOrderId: releaseGood.id } })\n\n if (inventoryItems.length > 0) {\n inventoryItems.forEach((itm: InventoryItem) => {\n itm.status = INVENTORY_STATUS.PACKED\n itm.updater = this.user\n })\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)\n }\n\n await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.PACKING)\n\n worksheetDetail.status = WORKSHEET_STATUS.DONE\n }\n\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.updater = this.user\n worksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n return worksheetDetail\n }\n\n async scanProductPacking(\n worksheetDetailName: string,\n productBarcode: string,\n serialNumber?: string\n ): Promise<WorksheetDetail> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.PACKING,\n [\n 'worksheet',\n 'worksheet.bizplace',\n 'worksheet.bizplace.domain',\n 'targetInventory',\n 'targetInventory.releaseGood',\n 'targetInventory.inventory',\n 'targetInventory.inventory.product',\n 'targetInventory.inventory.product.productDetails',\n 'targetInventory.inventory.product.productDetails.childProductDetail',\n 'targetInventory.inventory.location'\n ]\n )\n const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood\n const product: Product = worksheetDetail.targetInventory.inventory.product\n const filterProductDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n let inventory: Inventory = targetInventory.inventory\n let packedQty: number = 1\n let pickedQty: number = targetInventory.releaseQty\n\n // search for matching product barcode\n const productDetail: ProductDetail = product?.productDetails\n .filter(detail => !detail.deletedAt)\n .find(\n detail =>\n detail.gtin === productBarcode &&\n detail.packingType === inventory.packingType &&\n detail.packingSize === inventory.packingSize\n )\n\n if (!productDetail && !product?.isRequireSerialNumberScanningOutbound) {\n let roProductDetail: ProductDetail = product?.productDetails.find(\n (parentDetail: ProductDetail) =>\n parentDetail.packingType === inventory.packingType && parentDetail.packingSize == inventory.packingSize\n )\n\n roProductDetail.product = product\n\n let childQty = await this.getChildQty(filterProductDetails, productBarcode, roProductDetail)\n packedQty *= childQty\n } else if (!productDetail) {\n throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))\n }\n\n if (packedQty + targetInventory.packedQty > pickedQty) {\n throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))\n }\n\n // Serial Number scanning for batch picking\n if (targetInventory?.refWorksheetId) {\n if (product?.isRequireSerialNumberScanningOutbound) {\n if (!serialNumber || serialNumber == '') {\n throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('packing', `require serial number`))\n }\n\n let foundSerialNumber: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .findOne({ where: { domain: this.domain, serialNumber: serialNumber, product } })\n\n if (foundSerialNumber) {\n if (foundSerialNumber.inventoryId !== inventory.id) {\n throw new Error('Serial Number scanned is in another inventory')\n }\n\n if (foundSerialNumber.outboundOrderId) {\n let releaseGood: ReleaseGood = await this.trxMgr\n .getRepository(ReleaseGood)\n .findOne({ where: { id: foundSerialNumber.outboundOrderId } })\n throw new Error(`Inventory Item is already picked/packed in ${releaseGood.name}`)\n }\n\n foundSerialNumber.status = INVENTORY_STATUS.PACKING\n foundSerialNumber.updater = this.user\n foundSerialNumber.outboundOrderId = releaseGood.id\n\n await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)\n } else {\n let inventoryItem: InventoryItem = new InventoryItem()\n inventoryItem.name = InventoryNoGenerator.inventoryItemName()\n inventoryItem.serialNumber = serialNumber\n inventoryItem.status = INVENTORY_STATUS.PACKING\n inventoryItem.outboundOrderId = releaseGood.id\n inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND\n inventoryItem.product = product\n inventoryItem.inventory = inventory\n inventoryItem.domain = this.domain\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)\n }\n }\n }\n\n targetInventory.packedQty = Boolean(targetInventory?.packedQty) ? targetInventory.packedQty + packedQty : packedQty\n if (targetInventory.packedQty > pickedQty) {\n throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('pack', `packed quantity can't exceed release qty`))\n }\n\n targetInventory.packedAt = new Date()\n targetInventory.packedByUser = this.user\n\n let packedBy: string[] = targetInventory.packedBy ? targetInventory.packedBy.split(',') : []\n if (!packedBy.find(x => x == this.user.name)) {\n packedBy.push(this.user.name)\n targetInventory.packedBy = packedBy.join(',')\n }\n\n if (targetInventory.packedQty == pickedQty) {\n targetInventory.status = ORDER_INVENTORY_STATUS.PACKED\n await this.updateOrderTargets([targetInventory])\n await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.PACKING)\n\n worksheetDetail.status = WORKSHEET_STATUS.DONE\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n let inventoryItems: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .find({ where: { outboundOrderId: releaseGood.id } })\n\n if (inventoryItems.length > 0) {\n inventoryItems.forEach((itm: InventoryItem) => {\n itm.status = INVENTORY_STATUS.PACKED\n itm.updater = this.user\n })\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)\n }\n } else {\n await this.trxMgr.getRepository(OrderInventory).save(targetInventory)\n }\n\n return worksheetDetail\n }\n\n async completePacking(releaseGoodNo: string): Promise<Worksheet> {\n let releaseGood: ReleaseGood = await this.findRefOrder(ReleaseGood, {\n domain: this.domain,\n name: releaseGoodNo,\n status: ORDER_STATUS.PACKING\n })\n\n const worksheet: Worksheet = await this.findWorksheetByRefOrder(releaseGood, WORKSHEET_TYPE.PACKING, [\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n let inventoryItems: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .find({ where: { outboundOrderId: releaseGood.id } })\n\n if (inventoryItems.length > 0) {\n inventoryItems.forEach((itm: InventoryItem) => {\n itm.status = INVENTORY_STATUS.TERMINATED\n itm.updater = this.user\n })\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)\n }\n\n let orderStatus: string\n if (releaseGood?.courierOption) orderStatus = ORDER_STATUS.DONE\n else orderStatus = ORDER_STATUS.LOADING\n\n return await this.completeWorksheet(worksheet, orderStatus)\n }\n\n async undoSerialNumberPacking(worksheetDetailName: string, inventoryItemId: string): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: { name: worksheetDetailName, domain: this.domain, status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED)) },\n relations: [\n 'worksheet',\n 'worksheet.releaseGood',\n 'targetInventory',\n 'targetInventory.product',\n 'targetInventory.inventory'\n ]\n })\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n let releaseGood: ReleaseGood = worksheetDetail.worksheet.releaseGood\n\n if (\n targetInventory.releaseQty == targetInventory.packedQty &&\n targetInventory.status == ORDER_INVENTORY_STATUS.PACKED\n ) {\n targetInventory.status = INVENTORY_STATUS.PACKING\n\n await this.trxMgr\n .getRepository(WorksheetDetail)\n .update({ id: worksheetDetail.id }, { status: WORKSHEET_STATUS.EXECUTING })\n }\n\n let inventoryItems: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .find({ where: { outboundOrderId: releaseGood.id } })\n\n let removeInventoryItem: InventoryItem = await this.trxMgr\n .getRepository(InventoryItem)\n .findOne({ where: { id: inventoryItemId } })\n\n if (inventoryItems.length > 0) {\n inventoryItems.forEach((itm: InventoryItem) => {\n itm.status = INVENTORY_STATUS.PACKING\n itm.updater = this.user\n })\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)\n }\n\n if (removeInventoryItem.source == INVENTORY_ITEM_SOURCE.OUTBOUND) {\n await this.trxMgr.getRepository(InventoryItem).delete(removeInventoryItem.id)\n } else {\n await this.trxMgr.getRepository(InventoryItem).update(\n {\n id: inventoryItemId\n },\n {\n status: INVENTORY_STATUS.STORED,\n outboundOrderId: null,\n updater: this.user as any\n }\n )\n }\n\n targetInventory.packedQty--\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n }\n}\n"]}
|