@things-factory/worksheet-base 5.0.13 → 6.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-server/controllers/ecommerce/sellercraft-controller.js +225 -191
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
- package/dist-server/controllers/inbound/unloading-returning-worksheet-controller.js +2 -2
- package/dist-server/controllers/inbound/unloading-returning-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js +28 -17
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +1 -1
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js +17 -3
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +221 -144
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/returning-worksheet-controller.js +16 -0
- package/dist-server/controllers/outbound/returning-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js +8 -8
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/render-elccl-grn.js +21 -16
- package/dist-server/controllers/render-elccl-grn.js.map +1 -1
- package/dist-server/controllers/render-fm-grn.js +43 -26
- package/dist-server/controllers/render-fm-grn.js.map +1 -1
- package/dist-server/controllers/render-grn.js +42 -28
- package/dist-server/controllers/render-grn.js.map +1 -1
- package/dist-server/controllers/render-invoices.js +4 -5
- package/dist-server/controllers/render-invoices.js.map +1 -1
- package/dist-server/controllers/render-job-sheet.js +19 -19
- package/dist-server/controllers/render-job-sheet.js.map +1 -1
- package/dist-server/controllers/render-kimeda-grn.js +38 -23
- package/dist-server/controllers/render-kimeda-grn.js.map +1 -1
- package/dist-server/controllers/render-manifest.js +8 -9
- package/dist-server/controllers/render-manifest.js.map +1 -1
- package/dist-server/controllers/render-manual-do.js +15 -15
- package/dist-server/controllers/render-manual-do.js.map +1 -1
- package/dist-server/controllers/render-orientage-do.js +74 -28
- package/dist-server/controllers/render-orientage-do.js.map +1 -1
- package/dist-server/controllers/render-orientage-grn.js +25 -15
- package/dist-server/controllers/render-orientage-grn.js.map +1 -1
- package/dist-server/controllers/render-po.js +28 -19
- package/dist-server/controllers/render-po.js.map +1 -1
- package/dist-server/controllers/render-ro-do.js +139 -105
- package/dist-server/controllers/render-ro-do.js.map +1 -1
- package/dist-server/controllers/render-seebuu-grn.js +29 -19
- package/dist-server/controllers/render-seebuu-grn.js.map +1 -1
- package/dist-server/controllers/vas/vas-worksheet-controller.js +5 -5
- package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +75 -25
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js +2 -1
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -1
- package/dist-server/entities/worksheet-detail.js +14 -12
- package/dist-server/entities/worksheet-detail.js.map +1 -1
- package/dist-server/entities/worksheet-movement.js +1 -2
- package/dist-server/entities/worksheet-movement.js.map +1 -1
- package/dist-server/entities/worksheet.js +13 -13
- package/dist-server/entities/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/pallet/pallet-outbound.js +1 -1
- package/dist-server/graphql/resolvers/pallet/pallet-outbound.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +6 -6
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/check-inventory-release.js +6 -5
- package/dist-server/graphql/resolvers/worksheet/check-inventory-release.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/check-stock-take-current-location.js +8 -8
- package/dist-server/graphql/resolvers/worksheet/check-stock-take-current-location.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +82 -80
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/create-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cross-dock-picking.js +5 -4
- package/dist-server/graphql/resolvers/worksheet/cross-dock-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +5 -5
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js +5 -4
- package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/delete-worksheet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/delete-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/delivery-order-by-worksheet.js +83 -52
- package/dist-server/graphql/resolvers/worksheet/delivery-order-by-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/fetch-delivery-order-ro.js +169 -0
- package/dist-server/graphql/resolvers/worksheet/fetch-delivery-order-ro.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js +67 -0
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js +1 -34
- package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-worksheet-no.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.js +70 -0
- package/dist-server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js +34 -3
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-return-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-putaway-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js +14 -10
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/having-vas.js +7 -7
- package/dist-server/graphql/resolvers/worksheet/having-vas.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/index.js +5 -3
- package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/activate-cycle-count.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/add-extra-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/check-missing-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/complete-inspection.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/inspecting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/relocate-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inspecting/undo-inspection.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +18 -9
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loaded-inventories.js +6 -5
- package/dist-server/graphql/resolvers/worksheet/loaded-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/activate-loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +14 -14
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/undo-loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +11 -10
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js +5 -4
- package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +3 -4
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +16 -11
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +96 -22
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js +5 -5
- package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js +93 -81
- package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js +0 -19
- package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js +11 -5
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +10 -4
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +34 -38
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js +46 -35
- package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.js +7 -2
- package/dist-server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js +33 -16
- package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js +5 -8
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +6 -5
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js +10 -8
- package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/activate-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +4 -3
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/undo-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/activate-putaway-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/putaway-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-return/undo-putaway-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-returning-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/putaway-returning-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/putaway-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js +16 -11
- package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js +139 -149
- package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/relocate-pallet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/relocate-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/return-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/return-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/returning/activate-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/returning/complete-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/returning/returning.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/activate-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/complete-worksheet-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/transfer.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.js +8 -7
- package/dist-server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js +9 -8
- package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/activate-unloading.js +4 -2
- package/dist-server/graphql/resolvers/worksheet/unloading/activate-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-product-scan-unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading-partially.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js +6 -2
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/scan-product-unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/activate-unloading-return.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-return-partially.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js +7 -3
- package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/unloading-return-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js +5 -5
- package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/update-worksheet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/update-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/activate-vas.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/assign-vas-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/complete-vas.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/execute-vas.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/undo-vas-inventory.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas/undo-vas.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-candidates.js +13 -12
- package/dist-server/graphql/resolvers/worksheet/vas-candidates.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-inventories.js +7 -6
- package/dist-server/graphql/resolvers/worksheet/vas-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +36 -18
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.js +10 -3
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.js +3 -2
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.js +11 -3
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js +3 -2
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.js +7 -7
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-worksheet.js +11 -10
- package/dist-server/graphql/resolvers/worksheet/vas-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet-by-order-no.js +7 -4
- package/dist-server/graphql/resolvers/worksheet/worksheet-by-order-no.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet-with-pagination.js +5 -5
- package/dist-server/graphql/resolvers/worksheet/worksheet-with-pagination.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +72 -42
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheets.js +42 -17
- package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/check-progressing-pallet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet-detail/check-progressing-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/create-worksheet-detail.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/create-worksheet-detail.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +13 -10
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js +7 -5
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-carton-id.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js +3 -3
- package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +5 -2
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/index.js +2 -1
- package/dist-server/graphql/resolvers/worksheet-detail/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js +81 -0
- package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet-detail/update-worksheet-detail.js +2 -2
- package/dist-server/graphql/resolvers/worksheet-detail/update-worksheet-detail.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-detail.js +2 -2
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-detail.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details.js +2 -2
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/delete-worksheet-movement.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/update-worksheet-movement.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/update-worksheet-movement.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movement.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movement.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movements.js +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movements.js.map +1 -1
- package/dist-server/graphql/types/worksheet/batch-pick-worksheet-info.js +12 -0
- package/dist-server/graphql/types/worksheet/batch-pick-worksheet-info.js.map +1 -0
- package/dist-server/graphql/types/worksheet/delivery-order-info.js +3 -0
- package/dist-server/graphql/types/worksheet/delivery-order-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/delivery-order-ro.js +18 -0
- package/dist-server/graphql/types/worksheet/delivery-order-ro.js.map +1 -0
- package/dist-server/graphql/types/worksheet/index.js +26 -15
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js +11 -0
- package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js.map +1 -0
- package/dist-server/graphql/types/worksheet/sellercraft-document.js +11 -0
- package/dist-server/graphql/types/worksheet/sellercraft-document.js.map +1 -0
- package/dist-server/graphql/types/worksheet-detail/index.js +10 -0
- package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +1 -0
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/utils/inventory-util.js +26 -20
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/dist-server/utils/worksheet-util.js +8 -6
- package/dist-server/utils/worksheet-util.js.map +1 -1
- package/package.json +17 -17
- package/server/controllers/ecommerce/sellercraft-controller.ts +282 -223
- package/server/controllers/inbound/unloading-returning-worksheet-controller.ts +9 -17
- package/server/controllers/inbound/unloading-worksheet-controller.ts +55 -66
- package/server/controllers/inspect/cycle-count-worksheet-controller.ts +1 -1
- package/server/controllers/outbound/packing-worksheet-controller.ts +25 -4
- package/server/controllers/outbound/picking-worksheet-controller.ts +292 -172
- package/server/controllers/outbound/returning-worksheet-controller.ts +23 -0
- package/server/controllers/outbound/sorting-worksheet-controller.ts +20 -20
- package/server/controllers/render-elccl-grn.ts +16 -11
- package/server/controllers/render-fm-grn.ts +32 -14
- package/server/controllers/render-grn.ts +31 -16
- package/server/controllers/render-invoices.ts +3 -3
- package/server/controllers/render-job-sheet.ts +13 -11
- package/server/controllers/render-kimeda-grn.ts +28 -13
- package/server/controllers/render-manifest.ts +25 -24
- package/server/controllers/render-manual-do.ts +9 -10
- package/server/controllers/render-orientage-do.ts +79 -30
- package/server/controllers/render-orientage-grn.ts +30 -20
- package/server/controllers/render-po.ts +31 -20
- package/server/controllers/render-ro-do.ts +151 -124
- package/server/controllers/render-seebuu-grn.ts +21 -11
- package/server/controllers/vas/vas-worksheet-controller.ts +19 -20
- package/server/controllers/worksheet-controller.ts +97 -27
- package/server/entities/warehouse-bizplace-onhand-inventory.ts +2 -1
- package/server/entities/worksheet-detail.ts +9 -0
- package/server/graphql/resolvers/pallet/pallet-outbound.ts +5 -8
- package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +8 -6
- package/server/graphql/resolvers/worksheet/cancel-draft-release-order.ts +4 -11
- package/server/graphql/resolvers/worksheet/check-inventory-release.ts +8 -7
- package/server/graphql/resolvers/worksheet/check-stock-take-current-location.ts +10 -8
- package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +112 -138
- package/server/graphql/resolvers/worksheet/create-worksheet.ts +6 -8
- package/server/graphql/resolvers/worksheet/cross-dock-picking.ts +8 -7
- package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +7 -7
- package/server/graphql/resolvers/worksheet/cycle-count-worksheet.ts +6 -6
- package/server/graphql/resolvers/worksheet/delete-worksheet.ts +5 -3
- package/server/graphql/resolvers/worksheet/delivery-order-by-worksheet.ts +87 -53
- package/server/graphql/resolvers/worksheet/fetch-delivery-order-ro.ts +190 -0
- package/server/graphql/resolvers/worksheet/fetch-sellercraft-document.ts +69 -0
- package/server/graphql/resolvers/worksheet/find-release-orders-by-task-no.ts +5 -45
- package/server/graphql/resolvers/worksheet/find-release-orders-by-worksheet-no.ts +5 -5
- package/server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.ts +80 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts +45 -5
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.ts +11 -10
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts +1 -1
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +7 -14
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-return-worksheet.ts +10 -4
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-worksheet.ts +10 -4
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-putaway-worksheet.ts +5 -3
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +25 -29
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.ts +6 -4
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.ts +6 -4
- package/server/graphql/resolvers/worksheet/having-vas.ts +10 -8
- package/server/graphql/resolvers/worksheet/index.ts +7 -3
- package/server/graphql/resolvers/worksheet/inspecting/activate-cycle-count.ts +5 -3
- package/server/graphql/resolvers/worksheet/inspecting/add-extra-pallet.ts +4 -2
- package/server/graphql/resolvers/worksheet/inspecting/check-missing-pallet.ts +5 -3
- package/server/graphql/resolvers/worksheet/inspecting/complete-inspection.ts +5 -3
- package/server/graphql/resolvers/worksheet/inspecting/inspecting.ts +9 -3
- package/server/graphql/resolvers/worksheet/inspecting/relocate-pallet.ts +16 -4
- package/server/graphql/resolvers/worksheet/inspecting/undo-inspection.ts +5 -3
- package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +34 -17
- package/server/graphql/resolvers/worksheet/loaded-inventories.ts +7 -6
- package/server/graphql/resolvers/worksheet/loading/activate-loading.ts +5 -3
- package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +16 -16
- package/server/graphql/resolvers/worksheet/loading/loading.ts +5 -3
- package/server/graphql/resolvers/worksheet/loading/undo-loading.ts +5 -3
- package/server/graphql/resolvers/worksheet/loading-worksheet.ts +11 -11
- package/server/graphql/resolvers/worksheet/not-tally-target-inventories.ts +6 -6
- package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +14 -13
- package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +4 -4
- package/server/graphql/resolvers/worksheet/packing/packing.ts +3 -3
- package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +21 -17
- package/server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.ts +2 -2
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +102 -24
- package/server/graphql/resolvers/worksheet/palletizing-pallets.ts +10 -8
- package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +107 -97
- package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +3 -30
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +3 -3
- package/server/graphql/resolvers/worksheet/picking/assign-picking-inventories.ts +23 -4
- package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +25 -17
- package/server/graphql/resolvers/worksheet/picking/batch-picking.ts +4 -2
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +15 -6
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +37 -42
- package/server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts +52 -42
- package/server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.ts +15 -6
- package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +49 -35
- package/server/graphql/resolvers/worksheet/picking/picking.ts +4 -2
- package/server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.ts +11 -6
- package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +10 -35
- package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +2 -2
- package/server/graphql/resolvers/worksheet/picking/undo-picking-assignment.ts +9 -3
- package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +2 -2
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +11 -11
- package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +13 -13
- package/server/graphql/resolvers/worksheet/putaway/activate-putaway.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +6 -5
- package/server/graphql/resolvers/worksheet/putaway/putaway.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway/undo-putaway.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway-return/activate-putaway-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.ts +13 -6
- package/server/graphql/resolvers/worksheet/putaway-return/putaway-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway-return/undo-putaway-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/putaway-returning-worksheet.ts +4 -6
- package/server/graphql/resolvers/worksheet/putaway-worksheet.ts +4 -6
- package/server/graphql/resolvers/worksheet/recommend-putway-location.ts +20 -19
- package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +154 -220
- package/server/graphql/resolvers/worksheet/relocate-pallet.ts +6 -4
- package/server/graphql/resolvers/worksheet/replace-picking-pallets.ts +3 -7
- package/server/graphql/resolvers/worksheet/return-worksheet.ts +4 -6
- package/server/graphql/resolvers/worksheet/returning/activate-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/returning/complete-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/returning/returning.ts +5 -3
- package/server/graphql/resolvers/worksheet/sorting/activate-sorting.ts +5 -3
- package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +7 -5
- package/server/graphql/resolvers/worksheet/sorting/complete-worksheet-sorting.ts +5 -3
- package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +9 -3
- package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +9 -3
- package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +5 -5
- package/server/graphql/resolvers/worksheet/transfer.ts +10 -12
- package/server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.ts +13 -7
- package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +9 -9
- package/server/graphql/resolvers/worksheet/unloading/activate-unloading.ts +9 -5
- package/server/graphql/resolvers/worksheet/unloading/complete-product-scan-unload.ts +5 -3
- package/server/graphql/resolvers/worksheet/unloading/complete-unloading-partially.ts +5 -3
- package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +8 -4
- package/server/graphql/resolvers/worksheet/unloading/scan-product-unload.ts +5 -3
- package/server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.ts +2 -2
- package/server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.ts +2 -2
- package/server/graphql/resolvers/worksheet/unloading/undo-unloading.ts +2 -2
- package/server/graphql/resolvers/worksheet/unloading/unload.ts +7 -7
- package/server/graphql/resolvers/worksheet/unloading-return/activate-unloading-return.ts +5 -3
- package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-return-partially.ts +5 -3
- package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.ts +9 -5
- package/server/graphql/resolvers/worksheet/unloading-return-worksheet.ts +4 -6
- package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +5 -7
- package/server/graphql/resolvers/worksheet/update-worksheet.ts +5 -5
- package/server/graphql/resolvers/worksheet/vas/activate-vas.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas/assign-vas-inventories.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas/complete-vas.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas/execute-vas.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas/undo-vas-inventory.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas/undo-vas.ts +5 -3
- package/server/graphql/resolvers/worksheet/vas-candidates.ts +20 -17
- package/server/graphql/resolvers/worksheet/vas-inventories.ts +9 -7
- package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +36 -18
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.ts +12 -5
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.ts +6 -3
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.ts +14 -6
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.ts +5 -7
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts +3 -2
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts +8 -5
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts +6 -16
- package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.ts +5 -2
- package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.ts +10 -8
- package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.ts +3 -5
- package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.ts +6 -6
- package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.ts +10 -13
- package/server/graphql/resolvers/worksheet/vas-worksheet.ts +13 -11
- package/server/graphql/resolvers/worksheet/worksheet-by-order-no.ts +13 -8
- package/server/graphql/resolvers/worksheet/worksheet-with-pagination.ts +7 -5
- package/server/graphql/resolvers/worksheet/worksheet.ts +86 -32
- package/server/graphql/resolvers/worksheet/worksheets.ts +60 -19
- package/server/graphql/resolvers/worksheet-detail/check-progressing-pallet.ts +7 -8
- package/server/graphql/resolvers/worksheet-detail/create-worksheet-detail.ts +4 -6
- package/server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.ts +5 -6
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +13 -19
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +19 -27
- package/server/graphql/resolvers/worksheet-detail/generate-carton-id.ts +2 -4
- package/server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts +6 -6
- package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +7 -4
- package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +3 -3
- package/server/graphql/resolvers/worksheet-detail/index.ts +3 -1
- package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +164 -0
- package/server/graphql/resolvers/worksheet-detail/update-worksheet-detail.ts +8 -7
- package/server/graphql/resolvers/worksheet-detail/worksheet-detail.ts +6 -7
- package/server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.ts +5 -5
- package/server/graphql/resolvers/worksheet-detail/worksheet-details.ts +6 -7
- package/server/graphql/resolvers/worksheet-movement/create-worksheet-movement.ts +4 -3
- package/server/graphql/resolvers/worksheet-movement/delete-worksheet-movement.ts +3 -2
- package/server/graphql/resolvers/worksheet-movement/update-worksheet-movement.ts +2 -4
- package/server/graphql/resolvers/worksheet-movement/worksheet-movement.ts +3 -6
- package/server/graphql/resolvers/worksheet-movement/worksheet-movements.ts +4 -4
- package/server/graphql/types/worksheet/batch-pick-worksheet-info.ts +9 -0
- package/server/graphql/types/worksheet/delivery-order-info.ts +3 -0
- package/server/graphql/types/worksheet/delivery-order-ro.ts +15 -0
- package/server/graphql/types/worksheet/index.ts +49 -38
- package/server/graphql/types/worksheet/multiple-release-good-worksheet.ts +8 -0
- package/server/graphql/types/worksheet/sellercraft-document.ts +8 -0
- package/server/graphql/types/worksheet-detail/index.ts +10 -0
- package/server/graphql/types/worksheet-detail/inventory-detail.ts +1 -0
- package/server/utils/inventory-util.ts +20 -14
- package/server/utils/worksheet-util.ts +10 -6
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js +0 -25
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js.map +0 -1
- package/dist-server/graphql/types/worksheet/airwaybill.js +0 -11
- package/dist-server/graphql/types/worksheet/airwaybill.js.map +0 -1
- package/server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.ts +0 -30
- package/server/graphql/types/worksheet/airwaybill.ts +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-batch-picking-worksheet-details-by-bulk.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, getRepository } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { inventoriesByStrategy, WorksheetNoGenerator } from '../../../utils'\n\nexport const generateBatchPickingWorksheetDetailsByBulkResolver = {\n async generateBatchPickingWorksheetDetailsByBulk(\n _: any,\n { worksheetId, bizplaceId, selectedItems },\n context: any\n ): Promise<Boolean> {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n\n try {\n let worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { id: worksheetId },\n relations: [\n 'releaseGood',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n // Only proceed if worksheet status IS \"DEACTIVATED\"\n if (worksheet.status != WORKSHEET_STATUS.DEACTIVATED) {\n return true\n }\n\n await getRepository(Worksheet).update(\n { domain, id: worksheetId },\n {\n status: WORKSHEET_STATUS.PROCESSING,\n updater: user,\n updatedAt: new Date()\n }\n )\n\n const inventoryAssignmentSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain, name: 'rule-for-inventory-assignment' }\n })\n\n await Promise.all(\n selectedItems.map(async (oi: OrderInventory & { pickingStrategy: string }) => {\n try {\n let pOrderInventories = tx.getRepository(OrderInventory).find({\n where: {\n refWorksheetId: worksheet.id,\n product: { id: oi.productId },\n batchId: oi.batchId,\n packingType: oi.packingType,\n packingSize: oi.packingSize,\n status: ORDER_INVENTORY_STATUS.PENDING_SPLIT\n },\n relations: ['product', 'releaseGood', 'bizplace', 'orderProduct'],\n order: {\n releaseQty: 'DESC'\n }\n })\n\n let pInventoryList = inventoriesByStrategy(\n {\n ...oi,\n worksheetId: worksheet.id,\n bizplaceId,\n locationSortingRules: inventoryAssignmentSetting ? JSON.parse(inventoryAssignmentSetting.value) : false\n },\n domain,\n tx\n )\n\n let idx = 0\n let [orderInventories, inventoryList] = await Promise.all([pOrderInventories, pInventoryList])\n\n for (let oiIdx = 0; oiIdx < orderInventories.length; oiIdx++) {\n const orderInventory: OrderInventory = orderInventories[oiIdx]\n\n let { releaseQty, releaseUomValue } = orderInventory\n\n while (releaseQty > 0 && idx < inventoryList.items.length) {\n let targetInventory: Inventory = await tx\n .getRepository(Inventory)\n .findOne({ where: { id: inventoryList.items[idx].id } })\n\n let inventoryAvailableQty = targetInventory.qty - (targetInventory?.lockedQty || 0)\n let inventoryAvailableUomValue = targetInventory.uomValue - (targetInventory?.lockedUomValue || 0)\n\n if (inventoryAvailableQty > 0) {\n let allocatedQty = 0,\n allocatedUomValue = 0\n if (inventoryAvailableQty < releaseQty) {\n idx = idx + 1\n allocatedQty = inventoryAvailableQty\n allocatedUomValue = inventoryAvailableUomValue\n } else {\n allocatedQty = releaseQty\n allocatedUomValue = releaseUomValue\n }\n\n releaseQty = releaseQty - allocatedQty\n releaseUomValue = releaseUomValue - allocatedUomValue\n\n //// Update inventory locked quantity\n let qbInv = tx\n .getRepository(Inventory)\n .createQueryBuilder('inv')\n .update(Inventory)\n .set({\n lockedUomValue: () => `COALESCE(locked_uom_value,0) + ${allocatedUomValue}`,\n lockedQty: () => `COALESCE(locked_qty,0) + ${allocatedQty}`\n })\n .where('id = :id', { id: targetInventory.id })\n await qbInv.execute()\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update(\n { id: orderInventory.orderProduct.id },\n { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user }\n )\n\n // Create new order inventory with status -> READY_TO_PICK, type -> RELEASE_OF_GOODS\n let newTargetInventory: OrderInventory = new OrderInventory()\n newTargetInventory = {\n domain: domain,\n bizplace: orderInventory.bizplace,\n name: OrderNoGenerator.orderInventory(),\n releaseGood: orderInventory.releaseGood,\n batchId: orderInventory.batchId,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n refWorksheetId: orderInventory.refWorksheetId,\n product: orderInventory.product,\n packingType: orderInventory.packingType,\n packingSize: parseFloat(orderInventory.packingSize),\n creator: user,\n inventory: targetInventory,\n releaseQty: allocatedQty,\n releaseUomValue: allocatedUomValue,\n uom: orderInventory.uom,\n orderProduct: orderInventory.orderProduct\n }\n newTargetInventory = await tx.getRepository(OrderInventory).save(newTargetInventory)\n\n // Generate Worksheet Detail with status -> DEACTIVATED, type -> BATCH_PICKING\n let newWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n newWorksheetDetail = {\n ...newWorksheetDetail,\n domain: domain,\n worksheet: worksheet,\n bizplace: orderInventory.bizplace,\n name: WorksheetNoGenerator.batchPickingDetail(),\n targetInventory: newTargetInventory,\n targetProduct: newTargetInventory.orderProduct,\n type: WORKSHEET_TYPE.BATCH_PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user\n }\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)\n } else {\n idx = idx + 1\n }\n }\n\n //Update Current Order Inventory status -> COMPLETE_SPLIT\n await tx\n .getRepository(OrderInventory)\n .update(\n { id: orderInventory.id },\n { status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, updater: user, updatedAt: new Date() }\n )\n }\n return { orderInventory: oi, status: 'success', message: null }\n } catch (error) {\n return { orderInventory: oi, status: 'error', message: error }\n }\n })\n )\n\n return true\n } catch (error) {\n throw error\n } finally {\n await getRepository(Worksheet).update(\n { domain, id: worksheetId },\n {\n status: WORKSHEET_STATUS.DEACTIVATED,\n updater: user,\n updatedAt: new Date()\n }\n )\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"generate-batch-picking-worksheet-details-by-bulk.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { getRepository } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { inventoriesByStrategy, WorksheetNoGenerator } from '../../../utils'\n\nexport const generateBatchPickingWorksheetDetailsByBulkResolver = {\n async generateBatchPickingWorksheetDetailsByBulk(\n _: any,\n { worksheetId, bizplaceId, selectedItems },\n context: ResolverContext\n ): Promise<Boolean> {\n const { tx, user, domain } = context.state\n\n try {\n let worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { id: worksheetId },\n relations: [\n 'releaseGood',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n // Only proceed if worksheet status IS \"DEACTIVATED\"\n if (worksheet.status != WORKSHEET_STATUS.DEACTIVATED) {\n return true\n }\n\n await getRepository(Worksheet).update(\n { domain, id: worksheetId },\n {\n status: WORKSHEET_STATUS.PROCESSING,\n updater: user,\n updatedAt: new Date()\n }\n )\n\n const inventoryAssignmentSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, name: 'rule-for-inventory-assignment' }\n })\n\n await Promise.all(\n selectedItems.map(async (oi: OrderInventory & { pickingStrategy: string }) => {\n try {\n let pOrderInventories = tx.getRepository(OrderInventory).find({\n where: {\n refWorksheetId: worksheet.id,\n product: { id: oi.productId },\n batchId: oi.batchId,\n packingType: oi.packingType,\n packingSize: oi.packingSize,\n status: ORDER_INVENTORY_STATUS.PENDING_SPLIT\n },\n relations: ['product', 'releaseGood', 'bizplace', 'orderProduct'],\n order: {\n releaseQty: 'DESC'\n }\n })\n\n let pInventoryList = inventoriesByStrategy(\n {\n ...oi,\n worksheetId: worksheet.id,\n bizplaceId,\n locationSortingRules: inventoryAssignmentSetting ? JSON.parse(inventoryAssignmentSetting.value) : false\n },\n domain,\n tx\n )\n\n let idx = 0\n let [orderInventories, inventoryList] = await Promise.all([pOrderInventories, pInventoryList])\n\n for (let oiIdx = 0; oiIdx < orderInventories.length; oiIdx++) {\n const orderInventory: OrderInventory = orderInventories[oiIdx]\n\n let { releaseQty, releaseUomValue } = orderInventory\n\n while (releaseQty > 0 && idx < inventoryList.items.length) {\n let targetInventory: Inventory = await tx\n .getRepository(Inventory)\n .findOne({ where: { id: inventoryList.items[idx].id } })\n\n let inventoryAvailableQty = targetInventory.qty - (targetInventory?.lockedQty || 0)\n let inventoryAvailableUomValue = targetInventory.uomValue - (targetInventory?.lockedUomValue || 0)\n\n if (inventoryAvailableQty > 0) {\n let allocatedQty = 0,\n allocatedUomValue = 0\n if (inventoryAvailableQty < releaseQty) {\n idx = idx + 1\n allocatedQty = inventoryAvailableQty\n allocatedUomValue = inventoryAvailableUomValue\n } else {\n allocatedQty = releaseQty\n allocatedUomValue = releaseUomValue\n }\n\n releaseQty = releaseQty - allocatedQty\n releaseUomValue = releaseUomValue - allocatedUomValue\n\n //// Update inventory locked quantity\n let qbInv = tx\n .getRepository(Inventory)\n .createQueryBuilder('inv')\n .update(Inventory)\n .set({\n lockedUomValue: () => `COALESCE(locked_uom_value,0) + ${allocatedUomValue}`,\n lockedQty: () => `COALESCE(locked_qty,0) + ${allocatedQty}`\n })\n .where('id = :id', { id: targetInventory.id })\n await qbInv.execute()\n\n // update order product status to ASSIGNED\n await tx.getRepository(OrderProduct).update({ id: orderInventory.orderProduct.id }, {\n status: ORDER_PRODUCT_STATUS.ASSIGNED as string,\n updater: user\n } as any)\n\n // Create new order inventory with status -> READY_TO_PICK, type -> RELEASE_OF_GOODS\n let newTargetInventory: OrderInventory = new OrderInventory()\n newTargetInventory = {\n domain: domain,\n bizplace: orderInventory.bizplace,\n name: OrderNoGenerator.orderInventory(),\n releaseGood: orderInventory.releaseGood,\n batchId: orderInventory.batchId,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n refWorksheetId: orderInventory.refWorksheetId,\n product: orderInventory.product,\n packingType: orderInventory.packingType,\n packingSize: parseFloat(orderInventory.packingSize),\n creator: user,\n inventory: targetInventory,\n releaseQty: allocatedQty,\n releaseUomValue: allocatedUomValue,\n uom: orderInventory.uom,\n orderProduct: orderInventory.orderProduct\n }\n newTargetInventory = await tx.getRepository(OrderInventory).save(newTargetInventory)\n\n // Generate Worksheet Detail with status -> DEACTIVATED, type -> BATCH_PICKING\n let newWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n newWorksheetDetail = {\n ...newWorksheetDetail,\n domain: domain,\n worksheet: worksheet,\n bizplace: orderInventory.bizplace,\n name: WorksheetNoGenerator.batchPickingDetail(),\n targetInventory: newTargetInventory,\n targetProduct: newTargetInventory.orderProduct,\n type: WORKSHEET_TYPE.BATCH_PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user\n }\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)\n } else {\n idx = idx + 1\n }\n }\n\n //Update Current Order Inventory status -> COMPLETE_SPLIT\n await tx.getRepository(OrderInventory).update({ id: orderInventory.id }, {\n status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT,\n updater: user,\n updatedAt: new Date()\n } as any)\n }\n return { orderInventory: oi, status: 'success', message: null }\n } catch (error) {\n return { orderInventory: oi, status: 'error', message: error }\n }\n })\n )\n\n return true\n } catch (error) {\n throw error\n } finally {\n await getRepository(Worksheet).update(\n { domain, id: worksheetId },\n {\n status: WORKSHEET_STATUS.DEACTIVATED,\n updater: user,\n updatedAt: new Date()\n }\n )\n }\n }\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js
CHANGED
|
@@ -27,7 +27,7 @@ exports.generateBatchPickingWorksheetDetailsResolver = {
|
|
|
27
27
|
// 2. Find all existing order inventory that is related to the product
|
|
28
28
|
let prevOrdInvs = await tx.getRepository(sales_base_1.OrderInventory).find({
|
|
29
29
|
where: {
|
|
30
|
-
domain,
|
|
30
|
+
domain: { id: domain.id },
|
|
31
31
|
refWorksheetId: worksheet.id,
|
|
32
32
|
product: productId,
|
|
33
33
|
batchId,
|
|
@@ -101,7 +101,7 @@ exports.generateBatchPickingWorksheetDetailsResolver = {
|
|
|
101
101
|
// update order product status to ASSIGNED
|
|
102
102
|
await tx
|
|
103
103
|
.getRepository(sales_base_1.OrderProduct)
|
|
104
|
-
.update(
|
|
104
|
+
.update(prevOrdInv.orderProduct, { status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED, updater: user });
|
|
105
105
|
// Generate Worksheet Detail
|
|
106
106
|
let newWorksheetDetail = new entities_1.WorksheetDetail();
|
|
107
107
|
newWorksheetDetail = Object.assign(Object.assign({}, newWorksheetDetail), { domain: domain, worksheet: worksheet, bizplace: prevOrdInv.bizplace, name: utils_1.WorksheetNoGenerator.batchPickingDetail(), targetInventory: newTargetInventory, targetProduct: prevOrdInv.orderProduct, type: constants_1.WORKSHEET_TYPE.BATCH_PICKING, status: constants_1.WORKSHEET_STATUS.DEACTIVATED, creator: user });
|
|
@@ -113,9 +113,11 @@ exports.generateBatchPickingWorksheetDetailsResolver = {
|
|
|
113
113
|
j = j + 1;
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
await tx
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
await tx.getRepository(sales_base_1.OrderInventory).update({ id: prevOrdInvs[i].id }, {
|
|
117
|
+
status: sales_base_1.ORDER_INVENTORY_STATUS.COMPLETE_SPLIT,
|
|
118
|
+
updater: user,
|
|
119
|
+
updatedAt: new Date()
|
|
120
|
+
});
|
|
119
121
|
}
|
|
120
122
|
}
|
|
121
123
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-batch-picking-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generateBatchPickingWorksheetDetailsResolver = {\n async generateBatchPickingWorksheetDetails(\n _: any,\n { worksheetNo, batchId, productId, packingType, worksheetDetails },\n context: any\n ): Promise<void> {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n\n // 1. Find Related Worksheet\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, domain },\n relations: [\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n // Only proceed if worksheet status IS \"DEACTIVATED\"\n if (worksheet.status != WORKSHEET_STATUS.DEACTIVATED) {\n return\n }\n\n // 2. Find all existing order inventory that is related to the product\n let prevOrdInvs: OrderInventory[] = await tx.getRepository(OrderInventory).find({\n where: {\n domain,\n refWorksheetId: worksheet.id,\n product: productId,\n batchId,\n packingType,\n status: ORDER_INVENTORY_STATUS.PENDING_SPLIT\n },\n relations: ['releaseGood', 'bizplace', 'orderProduct']\n })\n\n // Sort all release qty from highest to lowest\n prevOrdInvs = prevOrdInvs.sort(function (a, b) {\n return b.releaseQty - a.releaseQty\n })\n\n const selectedOrdInvs: OrderInventory[] = worksheetDetails\n .map((wsd: any) => wsd.targetInventory)\n .sort(function (a, b) {\n return b.releaseQty - a.releaseQty\n })\n\n let j = 0\n\n for (var i: number = 0; i < prevOrdInvs.length; i++) {\n let prevOrdInv: OrderInventory = prevOrdInvs[i] //PENDING_SPLIT\n let requiredQty: number = prevOrdInv.releaseQty\n let requiredUomValue: number = prevOrdInv.releaseUomValue\n\n while (j < selectedOrdInvs.length && requiredQty > 0) {\n let selectedOrdInv: any = selectedOrdInvs[j]\n let remainingQty: number = selectedOrdInv.releaseQty\n let remainingUomValue: number = selectedOrdInv.releaseUomValue\n\n if (remainingQty == 0) {\n j = j + 1\n continue\n }\n\n // Create new order inventory with new status -> READY_TO_PICK\n let newTargetInventory: OrderInventory = new OrderInventory()\n newTargetInventory.domain = domain\n newTargetInventory.bizplace = prevOrdInv.bizplace\n newTargetInventory.name = OrderNoGenerator.orderInventory()\n newTargetInventory.releaseGood = prevOrdInv.releaseGood\n newTargetInventory.batchId = prevOrdInv.batchId\n newTargetInventory.status = ORDER_INVENTORY_STATUS.READY_TO_PICK\n newTargetInventory.type = selectedOrdInv.type\n newTargetInventory.refWorksheetId = prevOrdInv.refWorksheetId\n newTargetInventory.product = await tx.getRepository(Product).findOne(productId)\n newTargetInventory.packingType = prevOrdInv.packingType\n newTargetInventory.packingSize = parseFloat(prevOrdInv.packingSize)\n newTargetInventory.creator = user\n newTargetInventory.uom = selectedOrdInv.uom\n newTargetInventory.orderProduct = prevOrdInv.orderProduct\n\n let inventory: Inventory = await tx.getRepository(Inventory).findOne(selectedOrdInv.inventory.id)\n\n const currentLockedQty: number = inventory.lockedQty\n const currentLockedUomValue: number = inventory.lockedUomValue\n\n // Negative means fulfilled, positive mean current inventory is insufficient to fulfil all qty\n const fulfiledQty: number = requiredQty - remainingQty // 2 - 5 || 2 - 2 || 2 - 1\n const fulfiledUomValue: number = Math.round((requiredUomValue - remainingUomValue) * 100) / 100\n\n newTargetInventory.inventory = inventory\n newTargetInventory.releaseQty = fulfiledQty <= 0 ? requiredQty : remainingQty\n newTargetInventory.releaseUomValue = fulfiledUomValue <= 0 ? requiredUomValue : remainingUomValue\n newTargetInventory = await tx.getRepository(OrderInventory).save(newTargetInventory)\n\n remainingQty = remainingQty - requiredQty\n remainingUomValue = Math.round((remainingUomValue - requiredUomValue) * 100) / 100\n\n requiredQty = fulfiledQty <= 0 ? 0 : fulfiledQty\n requiredUomValue = fulfiledUomValue <= 0 ? 0 : fulfiledUomValue\n\n await tx.getRepository(Inventory).update(\n { domain, id: inventory.id },\n {\n lockedQty: Boolean(currentLockedQty)\n ? newTargetInventory.releaseQty + currentLockedQty\n : newTargetInventory.releaseQty,\n lockedUomValue: Boolean(currentLockedUomValue)\n ? Math.round((newTargetInventory.releaseUomValue + currentLockedUomValue) * 100) / 100\n : newTargetInventory.releaseUomValue,\n updater: user,\n updatedAt: new Date()\n }\n )\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: prevOrdInv.orderProduct.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user })\n\n // Generate Worksheet Detail\n let newWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n newWorksheetDetail = {\n ...newWorksheetDetail,\n domain: domain,\n worksheet: worksheet,\n bizplace: prevOrdInv.bizplace,\n name: WorksheetNoGenerator.batchPickingDetail(),\n targetInventory: newTargetInventory,\n targetProduct: prevOrdInv.orderProduct,\n type: WORKSHEET_TYPE.BATCH_PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user\n }\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)\n\n selectedOrdInv.releaseQty = remainingQty <= 0 ? 0 : remainingQty\n selectedOrdInv.releaseUomValue = remainingUomValue <= 0 ? 0 : remainingUomValue\n\n // insufficient qty for current order inventory, use the next inventory qty\n if (selectedOrdInv.releaseQty == 0) {\n j = j + 1\n }\n }\n await tx\n .getRepository(OrderInventory)\n .update(\n { id: prevOrdInvs[i].id },\n { status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, updater: user, updatedAt: new Date() }\n )\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"generate-batch-picking-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generateBatchPickingWorksheetDetailsResolver = {\n async generateBatchPickingWorksheetDetails(\n _: any,\n { worksheetNo, batchId, productId, packingType, worksheetDetails },\n context: ResolverContext\n ): Promise<void> {\n const { tx, user, domain } = context.state\n\n // 1. Find Related Worksheet\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, domain },\n relations: [\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n // Only proceed if worksheet status IS \"DEACTIVATED\"\n if (worksheet.status != WORKSHEET_STATUS.DEACTIVATED) {\n return\n }\n\n // 2. Find all existing order inventory that is related to the product\n let prevOrdInvs: OrderInventory[] = await tx.getRepository(OrderInventory).find({\n where: {\n domain: { id: domain.id },\n refWorksheetId: worksheet.id,\n product: productId,\n batchId,\n packingType,\n status: ORDER_INVENTORY_STATUS.PENDING_SPLIT\n },\n relations: ['releaseGood', 'bizplace', 'orderProduct']\n })\n\n // Sort all release qty from highest to lowest\n prevOrdInvs = prevOrdInvs.sort(function (a, b) {\n return b.releaseQty - a.releaseQty\n })\n\n const selectedOrdInvs: OrderInventory[] = worksheetDetails\n .map((wsd: any) => wsd.targetInventory)\n .sort(function (a, b) {\n return b.releaseQty - a.releaseQty\n })\n\n let j = 0\n\n for (var i: number = 0; i < prevOrdInvs.length; i++) {\n let prevOrdInv: OrderInventory = prevOrdInvs[i] //PENDING_SPLIT\n let requiredQty: number = prevOrdInv.releaseQty\n let requiredUomValue: number = prevOrdInv.releaseUomValue\n\n while (j < selectedOrdInvs.length && requiredQty > 0) {\n let selectedOrdInv: any = selectedOrdInvs[j]\n let remainingQty: number = selectedOrdInv.releaseQty\n let remainingUomValue: number = selectedOrdInv.releaseUomValue\n\n if (remainingQty == 0) {\n j = j + 1\n continue\n }\n\n // Create new order inventory with new status -> READY_TO_PICK\n let newTargetInventory: OrderInventory = new OrderInventory()\n newTargetInventory.domain = domain\n newTargetInventory.bizplace = prevOrdInv.bizplace\n newTargetInventory.name = OrderNoGenerator.orderInventory()\n newTargetInventory.releaseGood = prevOrdInv.releaseGood\n newTargetInventory.batchId = prevOrdInv.batchId\n newTargetInventory.status = ORDER_INVENTORY_STATUS.READY_TO_PICK\n newTargetInventory.type = selectedOrdInv.type\n newTargetInventory.refWorksheetId = prevOrdInv.refWorksheetId\n newTargetInventory.product = await tx.getRepository(Product).findOne(productId)\n newTargetInventory.packingType = prevOrdInv.packingType\n newTargetInventory.packingSize = parseFloat(prevOrdInv.packingSize)\n newTargetInventory.creator = user\n newTargetInventory.uom = selectedOrdInv.uom\n newTargetInventory.orderProduct = prevOrdInv.orderProduct\n\n let inventory: Inventory = await tx.getRepository(Inventory).findOne(selectedOrdInv.inventory.id)\n\n const currentLockedQty: number = inventory.lockedQty\n const currentLockedUomValue: number = inventory.lockedUomValue\n\n // Negative means fulfilled, positive mean current inventory is insufficient to fulfil all qty\n const fulfiledQty: number = requiredQty - remainingQty // 2 - 5 || 2 - 2 || 2 - 1\n const fulfiledUomValue: number = Math.round((requiredUomValue - remainingUomValue) * 100) / 100\n\n newTargetInventory.inventory = inventory\n newTargetInventory.releaseQty = fulfiledQty <= 0 ? requiredQty : remainingQty\n newTargetInventory.releaseUomValue = fulfiledUomValue <= 0 ? requiredUomValue : remainingUomValue\n newTargetInventory = await tx.getRepository(OrderInventory).save(newTargetInventory)\n\n remainingQty = remainingQty - requiredQty\n remainingUomValue = Math.round((remainingUomValue - requiredUomValue) * 100) / 100\n\n requiredQty = fulfiledQty <= 0 ? 0 : fulfiledQty\n requiredUomValue = fulfiledUomValue <= 0 ? 0 : fulfiledUomValue\n\n await tx.getRepository(Inventory).update({ domain, id: inventory.id }, {\n lockedQty: Boolean(currentLockedQty)\n ? newTargetInventory.releaseQty + currentLockedQty\n : newTargetInventory.releaseQty,\n lockedUomValue: Boolean(currentLockedUomValue)\n ? Math.round((newTargetInventory.releaseUomValue + currentLockedUomValue) * 100) / 100\n : newTargetInventory.releaseUomValue,\n updater: user,\n updatedAt: new Date()\n } as any)\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update(prevOrdInv.orderProduct, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user } as any)\n\n // Generate Worksheet Detail\n let newWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n newWorksheetDetail = {\n ...newWorksheetDetail,\n domain: domain,\n worksheet: worksheet,\n bizplace: prevOrdInv.bizplace,\n name: WorksheetNoGenerator.batchPickingDetail(),\n targetInventory: newTargetInventory,\n targetProduct: prevOrdInv.orderProduct,\n type: WORKSHEET_TYPE.BATCH_PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user\n }\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)\n\n selectedOrdInv.releaseQty = remainingQty <= 0 ? 0 : remainingQty\n selectedOrdInv.releaseUomValue = remainingUomValue <= 0 ? 0 : remainingUomValue\n\n // insufficient qty for current order inventory, use the next inventory qty\n if (selectedOrdInv.releaseQty == 0) {\n j = j + 1\n }\n }\n await tx.getRepository(OrderInventory).update({ id: prevOrdInvs[i].id }, {\n status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT,\n updater: user,\n updatedAt: new Date()\n } as any)\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-carton-id.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-carton-id.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;
|
|
1
|
+
{"version":3,"file":"generate-carton-id.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-carton-id.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AAE5C,QAAA,wBAAwB,GAAG;IACtC,KAAK,CAAC,gBAAgB,CAAC,CAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAwB;QACzE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QACpC,0BAA0B;QAC1B,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QAE3B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACvD,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAEvC,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;QACzB,IAAI,OAAO,GAAG,EAAE,CAAA;QAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,iBAAiB,GAAG,MAAM,IAAA,yBAAU,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;YAClF,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAA;SAC9C;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAA","sourcesContent":["import { generateId } from '@things-factory/id-rule-base'\n\nexport const generateCartonIdResolver = {\n async generateCartonId(_: any, { printQty, type }, context: ResolverContext) {\n const { tx, domain } = context.state\n // 1. get and set the date\n const today = new Date()\n const year = today.getFullYear()\n const month = today.getMonth()\n const day = today.getDate()\n\n const yy = String(year).substr(String(year).length - 2)\n const mm = String(month + 1).padStart(2, '0')\n const dd = String(day).padStart(2, '0')\n\n const date = yy + mm + dd\n let results = []\n\n for (let i = 0; i < printQty; i++) {\n const generatedPalletId = await generateId({ domain, type, seed: { date: date } })\n results.push({ cartonId: generatedPalletId })\n }\n\n return results\n }\n}\n"]}
|
|
@@ -6,7 +6,7 @@ const id_rule_base_1 = require("@things-factory/id-rule-base");
|
|
|
6
6
|
const entities_1 = require("../../../entities");
|
|
7
7
|
exports.generatePalletIdResolver = {
|
|
8
8
|
async generatePalletId(_, { targets, type }, context) {
|
|
9
|
-
var _a, _b, _c;
|
|
9
|
+
var _a, _b, _c, _d;
|
|
10
10
|
const { tx, domain } = context.state;
|
|
11
11
|
// 1. get date in yymmdd format
|
|
12
12
|
const date = new Date().toJSON().slice(0, 10).replace(/-/g, '').slice(2, 8);
|
|
@@ -14,7 +14,7 @@ exports.generatePalletIdResolver = {
|
|
|
14
14
|
// 2. get worksheet details
|
|
15
15
|
const foundWorksheetDetails = await tx.getRepository(entities_1.WorksheetDetail).find({
|
|
16
16
|
where: {
|
|
17
|
-
domain,
|
|
17
|
+
domain: { id: domain.id },
|
|
18
18
|
id: (0, typeorm_1.In)(targets.map(target => target.id))
|
|
19
19
|
},
|
|
20
20
|
relations: [
|
|
@@ -45,7 +45,7 @@ exports.generatePalletIdResolver = {
|
|
|
45
45
|
let result = {};
|
|
46
46
|
// 5. map all data to be returned
|
|
47
47
|
if (foundWSD.targetProduct) {
|
|
48
|
-
result = Object.assign(Object.assign({}, foundWSD.targetProduct), { bizplace: foundWSD.bizplace, orderProductRemark: foundWSD.targetProduct.remark, purchaseOrderNo: ((_b = (_a = foundWSD.targetProduct.arrivalNotice) === null || _a === void 0 ? void 0 : _a.purchaseOrder) === null || _b === void 0 ? void 0 : _b.name) || '', arrivalNoticeRefNo: ((_c = foundWSD.targetProduct.arrivalNotice) === null || _c === void 0 ? void 0 : _c.refNo) || '' });
|
|
48
|
+
result = Object.assign(Object.assign({}, foundWSD.targetProduct), { bizplace: foundWSD.bizplace, orderProductRemark: foundWSD.targetProduct.remark, purchaseOrderNo: ((_b = (_a = foundWSD.targetProduct.arrivalNotice) === null || _a === void 0 ? void 0 : _a.purchaseOrder) === null || _b === void 0 ? void 0 : _b.name) || '', arrivalNoticeRefNo: ((_c = foundWSD.targetProduct.arrivalNotice) === null || _c === void 0 ? void 0 : _c.refNo) || '', arrivalNoticeNo: ((_d = foundWSD.targetProduct.arrivalNotice) === null || _d === void 0 ? void 0 : _d.name) || '' });
|
|
49
49
|
}
|
|
50
50
|
else if (foundWSD.targetInventory) {
|
|
51
51
|
result = Object.assign(Object.assign({}, foundWSD.targetInventory), { bizplace: foundWSD.bizplace, orderProductRemark: '', purchaseOrderNo: '', arrivalNoticeRefNo: '' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-pallet-id.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"generate-pallet-id.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\n\nimport { generateId } from '@things-factory/id-rule-base'\n\nimport { WorksheetDetail } from '../../../entities'\n\nexport const generatePalletIdResolver = {\n async generatePalletId(_: any, { targets, type }, context: ResolverContext) {\n const { tx, domain } = context.state\n // 1. get date in yymmdd format\n const date = new Date().toJSON().slice(0, 10).replace(/-/g, '').slice(2, 8)\n let results = []\n\n // 2. get worksheet details\n const foundWorksheetDetails: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({\n where: {\n domain: { id: domain.id },\n id: In(targets.map(target => target.id))\n },\n relations: [\n 'domain',\n 'bizplace',\n 'worksheet',\n 'worker',\n 'targetProduct',\n 'targetProduct.arrivalNotice',\n 'targetProduct.arrivalNotice.purchaseOrder',\n 'targetProduct.product',\n 'targetInventory',\n 'targetInventory.product',\n 'targetVas',\n 'targetVas.targetProduct'\n ]\n })\n\n // 3. from worksheet detail get product name, product type, batchid, packing type, bizplace\n if (!foundWorksheetDetails?.length) throw new Error('Unable to find worksheet details')\n else {\n for (let i = 0; i < foundWorksheetDetails.length; i++) {\n let foundWSD = foundWorksheetDetails[i]\n for (let idx = 0; idx < targets.length; idx++) {\n if (foundWSD.id === targets[idx].id) {\n // 4. generate pallet id based on print qty > call generateId resolver\n for (let i = 0; i < targets[idx].printQty; i++) {\n let result: any = {}\n // 5. map all data to be returned\n if (foundWSD.targetProduct) {\n result = {\n ...foundWSD.targetProduct,\n bizplace: foundWSD.bizplace,\n orderProductRemark: foundWSD.targetProduct.remark,\n purchaseOrderNo: foundWSD.targetProduct.arrivalNotice?.purchaseOrder?.name || '',\n arrivalNoticeRefNo: foundWSD.targetProduct.arrivalNotice?.refNo || '',\n arrivalNoticeNo: foundWSD.targetProduct.arrivalNotice?.name || ''\n }\n } else if (foundWSD.targetInventory) {\n result = {\n ...foundWSD.targetInventory,\n bizplace: foundWSD.bizplace,\n orderProductRemark: '',\n purchaseOrderNo: '',\n arrivalNoticeRefNo: ''\n }\n } else if (foundWSD.targetVas) {\n result = {\n ...foundWSD.targetVas,\n bizplace: foundWSD.bizplace,\n batchId: foundWSD.targetVas.targetBatchId,\n orderProductRemark: '',\n purchaseOrderNo: '',\n arrivalNoticeRefNo: ''\n }\n }\n\n results.push({\n ...result,\n palletId: await generateId({\n domain,\n type,\n seed: {\n batchId: result.batchId || '',\n date\n }\n })\n })\n }\n }\n }\n }\n }\n\n return results\n }\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js
CHANGED
|
@@ -20,7 +20,7 @@ exports.generatePickingWorksheetDetailsResolver = {
|
|
|
20
20
|
const worksheetId = worksheet.id;
|
|
21
21
|
// 2. search for sorting rules
|
|
22
22
|
const inventoryAssignmentSetting = await tx.getRepository(setting_base_1.Setting).findOne({
|
|
23
|
-
where: { domain, name: 'rule-for-inventory-assignment' }
|
|
23
|
+
where: { domain: { id: domain.id }, name: 'rule-for-inventory-assignment' }
|
|
24
24
|
});
|
|
25
25
|
if (!locationSortingRules && inventoryAssignmentSetting) {
|
|
26
26
|
locationSortingRules = [];
|
|
@@ -68,7 +68,10 @@ exports.generatePickingWorksheetDetailsResolver = {
|
|
|
68
68
|
// update order product status to ASSIGNED
|
|
69
69
|
await tx
|
|
70
70
|
.getRepository(sales_base_1.OrderProduct)
|
|
71
|
-
.update({ id: targetInventory.orderProduct.id }, {
|
|
71
|
+
.update({ id: targetInventory.orderProduct.id }, {
|
|
72
|
+
status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED,
|
|
73
|
+
updater: user
|
|
74
|
+
});
|
|
72
75
|
// 7. collect new worksheet details records
|
|
73
76
|
const worksheetDetail = Object.assign(new entities_1.WorksheetDetail(), {
|
|
74
77
|
domain,
|
package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-picking-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderInventoryPatch,\n OrderNoGenerator,\n OrderProduct,\n ReleaseGood\n} from '@things-factory/sales-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\nimport { getInventoriesByStrategy, Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generatePickingWorksheetDetailsResolver = {\n async generatePickingWorksheetDetails(\n _: any,\n { bizplaceId, selectedItems, worksheetNo, locationSortingRules },\n context: any\n ): Promise<Boolean> {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n\n // 1. find related worksheet\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, status: WORKSHEET_STATUS.DEACTIVATED, domain },\n relations: ['releaseGood']\n })\n\n if (!worksheet) throw new Error('picking worksheet not found')\n const worksheetId = worksheet.id\n\n // 2. search for sorting rules\n const inventoryAssignmentSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain, name: 'rule-for-inventory-assignment' }\n })\n\n if (!locationSortingRules && inventoryAssignmentSetting) {\n locationSortingRules = []\n let locationSetting = JSON.parse(inventoryAssignmentSetting.value)\n for (const key in locationSetting) {\n locationSortingRules.push({ name: key, desc: locationSetting[key] == 'ASC' ? false : true })\n }\n }\n\n try {\n // 3. get all related inventories by strategy\n let inventories: any[] = await getInventoriesByStrategy(\n domain.id,\n bizplaceId,\n worksheetId,\n selectedItems,\n locationSortingRules,\n tx\n )\n\n // 4. get worksheet details\n let worksheetDetails: WorksheetDetail[] = selectedItems.reduce(\n (accWSD: WorksheetDetail[], oi: OrderInventoryPatch) => {\n const relatedInventories = inventories.filter(\n inv =>\n inv.productId == oi.productId &&\n inv.batchId == oi.batchId &&\n inv.packingType == oi.packingType &&\n inv.packingSize == oi.packingSize &&\n inv.uom == oi.uom &&\n inv.remainQty\n )\n\n if (\n relatedInventories.length &&\n oi.releaseQty <= inventories.reduce((totalQty: number, inv) => totalQty + inv.remainQty, 0)\n ) {\n let composedWSD: WorksheetDetail[] = _composeWorksheetDetails(\n domain,\n user,\n worksheet.releaseGood,\n bizplaceId,\n oi,\n relatedInventories\n )\n\n accWSD.push(...composedWSD)\n }\n\n return accWSD\n },\n []\n )\n\n let targetInventories: OrderInventory = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n // 5. remove existing worksheet details and its target inventory if there's any\n await _removeOldWorksheetDetails(targetInventories, worksheet.id, tx)\n\n targetInventories = await tx.getRepository(OrderInventory).save(targetInventories)\n\n let newWorksheetDetails: WorksheetDetail[] = []\n\n for (let i = 0, l = targetInventories.length; i < l; i++) {\n const targetInventory: OrderInventory = targetInventories[i]\n\n // 6. update inventory lockedQty and lockedUomValue\n await tx\n .createQueryBuilder()\n .update(Inventory)\n .set({\n lockedQty: () => `COALESCE(\"locked_qty\", 0) + ${targetInventory.releaseQty}`,\n lockedUomValue: () => `COALESCE(\"locked_uom_value\", 0) + ${targetInventory.releaseUomValue}`,\n updater: user\n })\n .where('id = :id', { id: targetInventory.inventory.id })\n .execute()\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: targetInventory.orderProduct.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user })\n\n // 7. collect new worksheet details records\n const worksheetDetail: WorksheetDetail = Object.assign(new WorksheetDetail(), {\n domain,\n bizplace: { id: bizplaceId },\n worksheet,\n name: WorksheetNoGenerator.pickingDetail(),\n seq: 0,\n targetInventory,\n targetProduct: targetInventory.orderProduct,\n type: WORKSHEET_TYPE.PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user,\n updater: user\n })\n\n newWorksheetDetails.push(worksheetDetail)\n }\n\n // 8. save worksheet details\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetails)\n\n return true\n } catch (error) {\n throw error\n }\n }\n}\n\nfunction _composeWorksheetDetails(\n domain: Domain,\n user: User,\n releaseGood: ReleaseGood,\n bizplaceId: string,\n record: OrderInventoryPatch,\n inventories: Inventory[]\n): WorksheetDetail[] {\n let leftReleaseQty: number = record.releaseQty\n let leftReleaseUomValue: number = record.releaseUomValue\n let compReleaseQty: number = 0\n let compReleaseUomValue: number = 0\n\n let worksheetDetails: Partial<WorksheetDetail[]> = []\n let idx = 0\n\n while (compReleaseQty < record.releaseQty) {\n const inv = inventories[idx]\n\n if (!inv) break\n\n let releaseQty: number = 0\n let releaseUomValue: number = 0\n\n if (inv.remainQty > leftReleaseQty) {\n compReleaseQty += leftReleaseQty\n compReleaseUomValue += leftReleaseUomValue\n releaseQty = leftReleaseQty\n releaseUomValue = leftReleaseUomValue\n } else {\n compReleaseQty += inv.remainQty\n compReleaseUomValue += inv.remainUomValue\n leftReleaseQty -= inv.remainQty\n leftReleaseUomValue -= inv.remainUomValue\n releaseQty = inv.remainQty\n releaseUomValue = inv.remainUomValue\n }\n\n let worksheetDetail: WorksheetDetail = Object.assign(new WorksheetDetail(), {\n targetInventory: {\n domain,\n bizplace: { id: bizplaceId },\n name: OrderNoGenerator.orderInventory(),\n releaseGood,\n inventory: { id: inv.id },\n product: { id: inv.productId },\n batchId: inv.batchId,\n batchIdRef: inv.batchIdRef,\n packingType: inv.packingType,\n packingSize: inv.packingSize,\n releaseQty,\n releaseUomValue,\n creator: user,\n updater: user,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n uom: record.uom,\n orderProduct: { id: inv.orderProductId }\n }\n })\n\n worksheetDetails.push(worksheetDetail)\n\n idx++\n }\n\n return worksheetDetails\n}\n\nasync function _removeOldWorksheetDetails(targetInventories: OrderInventory[], worksheetId: string, tx: EntityManager) {\n let orderProductJson = JSON.stringify(\n targetInventories.map((target: OrderInventory) => {\n return {\n product_id: target.product.id,\n batch_id: target.batchId,\n packing_type: target.packingType,\n packing_size: target.packingSize\n }\n })\n )\n\n // get worksheetDetail IDs and their targetInventory IDs\n let existingOIandWSD: WorksheetDetail[] = await tx.query(\n `\n SELECT wsd.id AS \"worksheetDetailId\", oi.id AS \"orderInventoryId\"\n FROM order_inventories oi \n INNER JOIN JSON_POPULATE_RECORDSET(NULL::order_products, $1) js ON oi.batch_id = js.batch_id \n AND oi.product_id = js.product_id \n AND oi.packing_type = js.packing_type\n AND oi.packing_size = js.packing_size\n LEFT JOIN worksheet_details wsd ON oi.id = wsd.target_inventory_id\n WHERE oi.release_good_id = $2\n `,\n [orderProductJson, worksheetId]\n )\n\n // if found the records then delete, so that we can create new records\n if (existingOIandWSD.length) {\n await tx.getRepository(WorksheetDetail).delete(existingOIandWSD.map((wsd: any) => wsd.worksheetDetailId))\n await tx.getRepository(OrderInventory).delete(existingOIandWSD.map((wsd: any) => wsd.orderInventoryId))\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"generate-picking-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderInventoryPatch,\n OrderNoGenerator,\n OrderProduct,\n ReleaseGood\n} from '@things-factory/sales-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\nimport { getInventoriesByStrategy, Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generatePickingWorksheetDetailsResolver = {\n async generatePickingWorksheetDetails(\n _: any,\n { bizplaceId, selectedItems, worksheetNo, locationSortingRules },\n context: any\n ): Promise<Boolean> {\n const { tx, user, domain } = context.state\n\n // 1. find related worksheet\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, status: WORKSHEET_STATUS.DEACTIVATED, domain },\n relations: ['releaseGood']\n })\n\n if (!worksheet) throw new Error('picking worksheet not found')\n const worksheetId = worksheet.id\n\n // 2. search for sorting rules\n const inventoryAssignmentSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, name: 'rule-for-inventory-assignment' }\n })\n\n if (!locationSortingRules && inventoryAssignmentSetting) {\n locationSortingRules = []\n let locationSetting = JSON.parse(inventoryAssignmentSetting.value)\n for (const key in locationSetting) {\n locationSortingRules.push({ name: key, desc: locationSetting[key] == 'ASC' ? false : true })\n }\n }\n\n try {\n // 3. get all related inventories by strategy\n let inventories: any[] = await getInventoriesByStrategy(\n domain.id,\n bizplaceId,\n worksheetId,\n selectedItems,\n locationSortingRules,\n tx\n )\n\n // 4. get worksheet details\n let worksheetDetails: WorksheetDetail[] = selectedItems.reduce(\n (accWSD: WorksheetDetail[], oi: OrderInventoryPatch) => {\n const relatedInventories = inventories.filter(\n inv =>\n inv.productId == oi.productId &&\n inv.batchId == oi.batchId &&\n inv.packingType == oi.packingType &&\n inv.packingSize == oi.packingSize &&\n inv.uom == oi.uom &&\n inv.remainQty\n )\n\n if (\n relatedInventories.length &&\n oi.releaseQty <= inventories.reduce((totalQty: number, inv) => totalQty + inv.remainQty, 0)\n ) {\n let composedWSD: WorksheetDetail[] = _composeWorksheetDetails(\n domain,\n user,\n worksheet.releaseGood,\n bizplaceId,\n oi,\n relatedInventories\n )\n\n accWSD.push(...composedWSD)\n }\n\n return accWSD\n },\n []\n )\n\n let targetInventories: OrderInventory = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n // 5. remove existing worksheet details and its target inventory if there's any\n await _removeOldWorksheetDetails(targetInventories, worksheet.id, tx)\n\n targetInventories = await tx.getRepository(OrderInventory).save(targetInventories)\n\n let newWorksheetDetails: WorksheetDetail[] = []\n\n for (let i = 0, l = targetInventories.length; i < l; i++) {\n const targetInventory: OrderInventory = targetInventories[i]\n\n // 6. update inventory lockedQty and lockedUomValue\n await tx\n .createQueryBuilder()\n .update(Inventory)\n .set({\n lockedQty: () => `COALESCE(\"locked_qty\", 0) + ${targetInventory.releaseQty}`,\n lockedUomValue: () => `COALESCE(\"locked_uom_value\", 0) + ${targetInventory.releaseUomValue}`,\n updater: user\n } as any)\n .where('id = :id', { id: targetInventory.inventory.id })\n .execute()\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: targetInventory.orderProduct.id }, {\n status: ORDER_PRODUCT_STATUS.ASSIGNED,\n updater: user\n } as any)\n\n // 7. collect new worksheet details records\n const worksheetDetail: WorksheetDetail = Object.assign(new WorksheetDetail(), {\n domain,\n bizplace: { id: bizplaceId },\n worksheet,\n name: WorksheetNoGenerator.pickingDetail(),\n seq: 0,\n targetInventory,\n targetProduct: targetInventory.orderProduct,\n type: WORKSHEET_TYPE.PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user,\n updater: user\n })\n\n newWorksheetDetails.push(worksheetDetail)\n }\n\n // 8. save worksheet details\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetails)\n\n return true\n } catch (error) {\n throw error\n }\n }\n}\n\nfunction _composeWorksheetDetails(\n domain: Domain,\n user: User,\n releaseGood: ReleaseGood,\n bizplaceId: string,\n record: OrderInventoryPatch,\n inventories: Inventory[]\n): WorksheetDetail[] {\n let leftReleaseQty: number = record.releaseQty\n let leftReleaseUomValue: number = record.releaseUomValue\n let compReleaseQty: number = 0\n let compReleaseUomValue: number = 0\n\n let worksheetDetails: Partial<WorksheetDetail[]> = []\n let idx = 0\n\n while (compReleaseQty < record.releaseQty) {\n const inv = inventories[idx]\n\n if (!inv) break\n\n let releaseQty: number = 0\n let releaseUomValue: number = 0\n\n if (inv.remainQty > leftReleaseQty) {\n compReleaseQty += leftReleaseQty\n compReleaseUomValue += leftReleaseUomValue\n releaseQty = leftReleaseQty\n releaseUomValue = leftReleaseUomValue\n } else {\n compReleaseQty += inv.remainQty\n compReleaseUomValue += inv.remainUomValue\n leftReleaseQty -= inv.remainQty\n leftReleaseUomValue -= inv.remainUomValue\n releaseQty = inv.remainQty\n releaseUomValue = inv.remainUomValue\n }\n\n let worksheetDetail: WorksheetDetail = Object.assign(new WorksheetDetail(), {\n targetInventory: {\n domain,\n bizplace: { id: bizplaceId },\n name: OrderNoGenerator.orderInventory(),\n releaseGood,\n inventory: { id: inv.id },\n product: { id: inv.productId },\n batchId: inv.batchId,\n batchIdRef: inv.batchIdRef,\n packingType: inv.packingType,\n packingSize: inv.packingSize,\n releaseQty,\n releaseUomValue,\n creator: user,\n updater: user,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n uom: record.uom,\n orderProduct: { id: inv.orderProductId }\n }\n })\n\n worksheetDetails.push(worksheetDetail)\n\n idx++\n }\n\n return worksheetDetails\n}\n\nasync function _removeOldWorksheetDetails(targetInventories: OrderInventory[], worksheetId: string, tx: EntityManager) {\n let orderProductJson = JSON.stringify(\n targetInventories.map((target: OrderInventory) => {\n return {\n product_id: target.product.id,\n batch_id: target.batchId,\n packing_type: target.packingType,\n packing_size: target.packingSize\n }\n })\n )\n\n // get worksheetDetail IDs and their targetInventory IDs\n let existingOIandWSD: WorksheetDetail[] = await tx.query(\n `\n SELECT wsd.id AS \"worksheetDetailId\", oi.id AS \"orderInventoryId\"\n FROM order_inventories oi \n INNER JOIN JSON_POPULATE_RECORDSET(NULL::order_products, $1) js ON oi.batch_id = js.batch_id \n AND oi.product_id = js.product_id \n AND oi.packing_type = js.packing_type\n AND oi.packing_size = js.packing_size\n LEFT JOIN worksheet_details wsd ON oi.id = wsd.target_inventory_id\n WHERE oi.release_good_id = $2\n `,\n [orderProductJson, worksheetId]\n )\n\n // if found the records then delete, so that we can create new records\n if (existingOIandWSD.length) {\n await tx.getRepository(WorksheetDetail).delete(existingOIandWSD.map((wsd: any) => wsd.worksheetDetailId))\n await tx.getRepository(OrderInventory).delete(existingOIandWSD.map((wsd: any) => wsd.orderInventoryId))\n }\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js
CHANGED
|
@@ -46,7 +46,7 @@ async function generateReleaseGoodWorksheetDetails(tx, domain, user, worksheetNo
|
|
|
46
46
|
.getRepository(sales_base_1.OrderProduct)
|
|
47
47
|
.findOne({ where: { id: (_a = wsd.targetProduct) === null || _a === void 0 ? void 0 : _a.id } });
|
|
48
48
|
targetInventory = await tx.getRepository(sales_base_1.OrderInventory).save(Object.assign(Object.assign({}, targetInventory), { domain, bizplace: worksheet.bizplace, name: sales_base_1.OrderNoGenerator.orderInventory(), releaseGood: worksheet.releaseGood, inventory,
|
|
49
|
-
batchId, batchIdRef: inventory.batchIdRef, status: sales_base_1.ORDER_INVENTORY_STATUS.READY_TO_PICK, product: await tx.getRepository(product_base_1.Product).
|
|
49
|
+
batchId, batchIdRef: inventory.batchIdRef, status: sales_base_1.ORDER_INVENTORY_STATUS.READY_TO_PICK, product: await tx.getRepository(product_base_1.Product).findOneBy({ id: productId }), packingType,
|
|
50
50
|
packingSize, orderProduct: targetProduct, creator: user, updater: user }));
|
|
51
51
|
const currentLockedQty = inventory.lockedQty;
|
|
52
52
|
const currentLockedUomValue = inventory.lockedUomValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-release-good-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts"],"names":[],"mappings":";;;AAGA,+DAAsD;AACtD,2DAMmC;AAEnC,mEAA0D;AAE1D,kDAAqE;AACrE,gDAA8D;AAC9D,0CAAqD;AAExC,QAAA,2CAA2C,GAAG;IACzD,KAAK,CAAC,mCAAmC,CACvC,CAAM,EACN,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAC/E,OAAY;QAEZ,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"generate-release-good-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generateReleaseGoodWorksheetDetailsResolver = {\n async generateReleaseGoodWorksheetDetails(\n _: any,\n { worksheetNo, batchId, productId, packingType, packingSize, worksheetDetails },\n context: any\n ): Promise<void> {\n const { tx, domain, user } = context.state\n return await generateReleaseGoodWorksheetDetails(\n tx,\n domain,\n user,\n worksheetNo,\n batchId,\n productId,\n packingType,\n packingSize,\n worksheetDetails\n )\n }\n}\n\nexport async function generateReleaseGoodWorksheetDetails(\n tx: EntityManager,\n domain: Domain,\n user: User,\n worksheetNo: string,\n batchId: string,\n productId: string,\n packingType: string,\n packingSize: number,\n worksheetDetails: Partial<WorksheetDetail>[]\n): Promise<void> {\n // 1. Remove prev worksheet details if it's exists\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, domain },\n relations: [\n 'bizplace',\n 'releaseGood',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n const prevWSDs: WorksheetDetail[] = worksheet.worksheetDetails.filter((wsd: WorksheetDetail) => {\n const targetInv: OrderInventory = wsd.targetInventory\n if (targetInv.batchId === batchId && targetInv.product.id === productId && targetInv.packingType === packingType)\n return wsd.id\n })\n\n // TODO: Delete order inventories\n if (prevWSDs?.length) {\n const wsdIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.id)\n const prevOrderInvIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.targetInventory.id)\n await tx.getRepository(WorksheetDetail).delete(wsdIds)\n await tx.getRepository(OrderInventory).delete(prevOrderInvIds)\n }\n\n await Promise.all(\n worksheetDetails.map(async (wsd: WorksheetDetail) => {\n // 2. Create order inventory\n let targetInventory: OrderInventory = wsd.targetInventory\n const inventory: Inventory = await tx.getRepository(Inventory).findOne(targetInventory.inventory.id)\n\n let targetProduct: OrderProduct = await tx\n .getRepository(OrderProduct)\n .findOne({ where: { id: wsd.targetProduct?.id } })\n\n targetInventory = await tx.getRepository(OrderInventory).save({\n ...targetInventory,\n domain,\n bizplace: worksheet.bizplace,\n name: OrderNoGenerator.orderInventory(),\n releaseGood: worksheet.releaseGood,\n inventory,\n batchId,\n batchIdRef: inventory.batchIdRef,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n product: await tx.getRepository(Product).findOneBy({ id: productId }),\n packingType,\n packingSize,\n orderProduct: targetProduct,\n creator: user,\n updater: user\n })\n\n const currentLockedQty: any = inventory.lockedQty\n const currentLockedUomValue: any = inventory.lockedUomValue\n\n await tx.getRepository(Inventory).save({\n ...targetInventory.inventory,\n lockedQty: Boolean(currentLockedQty)\n ? targetInventory.releaseQty + currentLockedQty\n : targetInventory.releaseQty,\n lockedUomValue: Boolean(currentLockedUomValue)\n ? targetInventory.releaseUomValue + currentLockedUomValue\n : targetInventory.releaseUomValue,\n updater: user\n })\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: targetProduct?.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user } as any)\n\n // 3. Create worksheet details\n await tx.getRepository(WorksheetDetail).save({\n ...wsd,\n domain,\n bizplace: worksheet.bizplace,\n worksheet,\n name: WorksheetNoGenerator.pickingDetail(),\n targetProduct,\n targetInventory,\n type: WORKSHEET_TYPE.PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user,\n updater: user\n })\n })\n )\n}\n"]}
|
|
@@ -10,10 +10,11 @@ const generate_carton_id_1 = require("./generate-carton-id");
|
|
|
10
10
|
const generate_pallet_id_1 = require("./generate-pallet-id");
|
|
11
11
|
const generate_picking_worksheet_details_1 = require("./generate-picking-worksheet-details");
|
|
12
12
|
const generate_release_good_worksheet_details_1 = require("./generate-release-good-worksheet-details");
|
|
13
|
+
const regenerate_release_good_worksheet_details_1 = require("./regenerate-release-good-worksheet-details");
|
|
13
14
|
const update_worksheet_detail_1 = require("./update-worksheet-detail");
|
|
14
15
|
const worksheet_detail_1 = require("./worksheet-detail");
|
|
15
16
|
const worksheet_details_1 = require("./worksheet-details");
|
|
16
17
|
const worksheet_details_by_product_group_1 = require("./worksheet-details-by-product-group");
|
|
17
18
|
exports.Query = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, worksheet_details_1.worksheetDetailsResolver), worksheet_detail_1.worksheetDetailResolver), worksheet_details_by_product_group_1.worksheetDetailsByProductGroupResolver), check_progressing_pallet_1.checkProgressingPalletResolver), generate_pallet_id_1.generatePalletIdResolver), generate_carton_id_1.generateCartonIdResolver);
|
|
18
|
-
exports.Mutation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, update_worksheet_detail_1.updateWorksheetDetail), create_worksheet_detail_1.createWorksheetDetail), delete_worksheet_detail_1.deleteWorksheetDetail), generate_batch_picking_worksheet_details_1.generateBatchPickingWorksheetDetailsResolver), generate_batch_picking_worksheet_details_by_bulk_1.generateBatchPickingWorksheetDetailsByBulkResolver), generate_picking_worksheet_details_1.generatePickingWorksheetDetailsResolver), generate_release_good_worksheet_details_1.generateReleaseGoodWorksheetDetailsResolver);
|
|
19
|
+
exports.Mutation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, update_worksheet_detail_1.updateWorksheetDetail), create_worksheet_detail_1.createWorksheetDetail), delete_worksheet_detail_1.deleteWorksheetDetail), generate_batch_picking_worksheet_details_1.generateBatchPickingWorksheetDetailsResolver), generate_batch_picking_worksheet_details_by_bulk_1.generateBatchPickingWorksheetDetailsByBulkResolver), generate_picking_worksheet_details_1.generatePickingWorksheetDetailsResolver), generate_release_good_worksheet_details_1.generateReleaseGoodWorksheetDetailsResolver), regenerate_release_good_worksheet_details_1.regenerateReleaseGoodWorksheetDetailsResolver);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/index.ts"],"names":[],"mappings":";;;AAAA,yEAA2E;AAC3E,uEAAiE;AACjE,uEAAiE;AACjE,yGAAyG;AACzG,yHAAuH;AACvH,6DAA+D;AAC/D,6DAA+D;AAC/D,6FAA8F;AAC9F,uGAAuG;AACvG,uEAAiE;AACjE,yDAA4D;AAC5D,2DAA8D;AAC9D,6FAA6F;AAEhF,QAAA,KAAK,2FACb,4CAAwB,GACxB,0CAAuB,GACvB,2EAAsC,GACtC,yDAA8B,GAC9B,6CAAwB,GACxB,6CAAwB,EAC5B;AAEY,QAAA,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/index.ts"],"names":[],"mappings":";;;AAAA,yEAA2E;AAC3E,uEAAiE;AACjE,uEAAiE;AACjE,yGAAyG;AACzG,yHAAuH;AACvH,6DAA+D;AAC/D,6DAA+D;AAC/D,6FAA8F;AAC9F,uGAAuG;AACvG,2GAA2G;AAC3G,uEAAiE;AACjE,yDAA4D;AAC5D,2DAA8D;AAC9D,6FAA6F;AAEhF,QAAA,KAAK,2FACb,4CAAwB,GACxB,0CAAuB,GACvB,2EAAsC,GACtC,yDAA8B,GAC9B,6CAAwB,GACxB,6CAAwB,EAC5B;AAEY,QAAA,QAAQ,uHAChB,+CAAqB,GACrB,+CAAqB,GACrB,+CAAqB,GACrB,uFAA4C,GAC5C,qGAAkD,GAClD,4EAAuC,GACvC,qFAA2C,GAC3C,yFAA6C,EACjD","sourcesContent":["import { checkProgressingPalletResolver } from './check-progressing-pallet'\nimport { createWorksheetDetail } from './create-worksheet-detail'\nimport { deleteWorksheetDetail } from './delete-worksheet-detail'\nimport { generateBatchPickingWorksheetDetailsResolver } from './generate-batch-picking-worksheet-details'\nimport { generateBatchPickingWorksheetDetailsByBulkResolver } from './generate-batch-picking-worksheet-details-by-bulk'\nimport { generateCartonIdResolver } from './generate-carton-id'\nimport { generatePalletIdResolver } from './generate-pallet-id'\nimport { generatePickingWorksheetDetailsResolver } from './generate-picking-worksheet-details'\nimport { generateReleaseGoodWorksheetDetailsResolver } from './generate-release-good-worksheet-details'\nimport { regenerateReleaseGoodWorksheetDetailsResolver } from './regenerate-release-good-worksheet-details'\nimport { updateWorksheetDetail } from './update-worksheet-detail'\nimport { worksheetDetailResolver } from './worksheet-detail'\nimport { worksheetDetailsResolver } from './worksheet-details'\nimport { worksheetDetailsByProductGroupResolver } from './worksheet-details-by-product-group'\n\nexport const Query = {\n ...worksheetDetailsResolver,\n ...worksheetDetailResolver,\n ...worksheetDetailsByProductGroupResolver,\n ...checkProgressingPalletResolver,\n ...generatePalletIdResolver,\n ...generateCartonIdResolver\n}\n\nexport const Mutation = {\n ...updateWorksheetDetail,\n ...createWorksheetDetail,\n ...deleteWorksheetDetail,\n ...generateBatchPickingWorksheetDetailsResolver,\n ...generateBatchPickingWorksheetDetailsByBulkResolver,\n ...generatePickingWorksheetDetailsResolver,\n ...generateReleaseGoodWorksheetDetailsResolver,\n ...regenerateReleaseGoodWorksheetDetailsResolver\n}\n"]}
|
package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.regenerateReleaseGoodWorksheetDetails = exports.regenerateReleaseGoodWorksheetDetailsResolver = void 0;
|
|
4
|
+
const product_base_1 = require("@things-factory/product-base");
|
|
5
|
+
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
|
+
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
7
|
+
const constants_1 = require("../../../constants");
|
|
8
|
+
const entities_1 = require("../../../entities");
|
|
9
|
+
const utils_1 = require("../../../utils");
|
|
10
|
+
exports.regenerateReleaseGoodWorksheetDetailsResolver = {
|
|
11
|
+
async regenerateReleaseGoodWorksheetDetails(_, { worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails }, context) {
|
|
12
|
+
const { tx, domain, user } = context.state;
|
|
13
|
+
return await regenerateReleaseGoodWorksheetDetails(tx, domain, user, worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
async function regenerateReleaseGoodWorksheetDetails(tx, domain, user, worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails) {
|
|
17
|
+
// 1. Remove prev worksheet details if it's exists
|
|
18
|
+
const worksheet = await tx.getRepository(entities_1.Worksheet).findOne({
|
|
19
|
+
where: { name: worksheetNo, domain },
|
|
20
|
+
relations: [
|
|
21
|
+
'bizplace',
|
|
22
|
+
'releaseGood',
|
|
23
|
+
'worksheetDetails',
|
|
24
|
+
'worksheetDetails.targetInventory',
|
|
25
|
+
'worksheetDetails.targetInventory.inventory',
|
|
26
|
+
'worksheetDetails.targetInventory.product',
|
|
27
|
+
'worksheetDetails.targetInventory.releaseGood',
|
|
28
|
+
'worksheetDetails.targetInventory.orderProduct',
|
|
29
|
+
'worksheetDetails.targetInventory.bizplace'
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
const prevWSDs = worksheet.worksheetDetails.filter((wsd) => {
|
|
33
|
+
const targetInv = wsd.targetInventory;
|
|
34
|
+
if (targetInv.orderProductId === orderProductId)
|
|
35
|
+
return wsd.id;
|
|
36
|
+
});
|
|
37
|
+
// TODO: Update prev inventory locked qty and delete order inventories
|
|
38
|
+
if (prevWSDs === null || prevWSDs === void 0 ? void 0 : prevWSDs.length) {
|
|
39
|
+
const wsdIds = prevWSDs.map((wsd) => wsd.id);
|
|
40
|
+
const prevOrderInvIds = prevWSDs.map((wsd) => wsd.targetInventory.id);
|
|
41
|
+
const prevOrderInventories = prevWSDs.map((wsd) => wsd.targetInventory);
|
|
42
|
+
await Promise.all(prevOrderInventories.map(async (prevOI) => {
|
|
43
|
+
if (prevOI === null || prevOI === void 0 ? void 0 : prevOI.inventory) {
|
|
44
|
+
await tx.getRepository(warehouse_base_1.Inventory).update({ id: prevOI.inventory.id }, {
|
|
45
|
+
lockedQty: prevOI.inventory.lockedQty - prevOI.releaseQty,
|
|
46
|
+
lockedUomValue: prevOI.inventory.lockedUomValue - prevOI.releaseUomValue
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}));
|
|
50
|
+
await tx.getRepository(entities_1.WorksheetDetail).delete(wsdIds);
|
|
51
|
+
await tx.getRepository(sales_base_1.OrderInventory).delete(prevOrderInvIds);
|
|
52
|
+
}
|
|
53
|
+
await Promise.all(worksheetDetails.map(async (wsd) => {
|
|
54
|
+
// 2. Create order inventory
|
|
55
|
+
let targetInventory = wsd.targetInventory;
|
|
56
|
+
const inventory = await tx.getRepository(warehouse_base_1.Inventory).findOne(targetInventory.inventory.id);
|
|
57
|
+
let targetProduct = await tx
|
|
58
|
+
.getRepository(sales_base_1.OrderProduct)
|
|
59
|
+
.findOne({ where: { id: wsd.targetProduct.id }, relations: ['releaseGood'] });
|
|
60
|
+
targetInventory = await tx.getRepository(sales_base_1.OrderInventory).save(Object.assign(Object.assign({}, targetInventory), { domain, bizplace: worksheet.bizplace, name: sales_base_1.OrderNoGenerator.orderInventory(), releaseGood: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING ? targetProduct.releaseGood : worksheet.releaseGood, inventory, batchId: inventory.batchId, batchIdRef: inventory.batchIdRef, status: sales_base_1.ORDER_INVENTORY_STATUS.READY_TO_PICK, product: await tx.getRepository(product_base_1.Product).findOneBy({ id: productId }), packingType,
|
|
61
|
+
packingSize, orderProduct: targetProduct, refWorksheetId: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING ? worksheet.id : null, creator: user, updater: user }));
|
|
62
|
+
const currentLockedQty = inventory.lockedQty;
|
|
63
|
+
const currentLockedUomValue = inventory.lockedUomValue;
|
|
64
|
+
await tx.getRepository(warehouse_base_1.Inventory).save(Object.assign(Object.assign({}, targetInventory.inventory), { lockedQty: Boolean(currentLockedQty)
|
|
65
|
+
? targetInventory.releaseQty + currentLockedQty
|
|
66
|
+
: targetInventory.releaseQty, lockedUomValue: Boolean(currentLockedUomValue)
|
|
67
|
+
? targetInventory.releaseUomValue + currentLockedUomValue
|
|
68
|
+
: targetInventory.releaseUomValue, updater: user }));
|
|
69
|
+
// update order product status to ASSIGNED
|
|
70
|
+
await tx
|
|
71
|
+
.getRepository(sales_base_1.OrderProduct)
|
|
72
|
+
.update({ id: targetProduct.id }, { status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED, updater: user });
|
|
73
|
+
// 3. Create worksheet details
|
|
74
|
+
await tx.getRepository(entities_1.WorksheetDetail).save(Object.assign(Object.assign({}, wsd), { domain, bizplace: worksheet.bizplace, worksheet, name: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING
|
|
75
|
+
? utils_1.WorksheetNoGenerator.batchPickingDetail()
|
|
76
|
+
: utils_1.WorksheetNoGenerator.pickingDetail(), targetProduct,
|
|
77
|
+
targetInventory, type: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING ? constants_1.WORKSHEET_TYPE.BATCH_PICKING : constants_1.WORKSHEET_TYPE.PICKING, status: constants_1.WORKSHEET_STATUS.DEACTIVATED, creator: user, updater: user }));
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
exports.regenerateReleaseGoodWorksheetDetails = regenerateReleaseGoodWorksheetDetails;
|
|
81
|
+
//# sourceMappingURL=regenerate-release-good-worksheet-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regenerate-release-good-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, Repository } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const regenerateReleaseGoodWorksheetDetailsResolver = {\n async regenerateReleaseGoodWorksheetDetails(\n _: any,\n { worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails },\n context: any\n ): Promise<void> {\n const { tx, domain, user } = context.state\n return await regenerateReleaseGoodWorksheetDetails(\n tx,\n domain,\n user,\n worksheetNo,\n batchId,\n productId,\n packingType,\n packingSize,\n orderProductId,\n worksheetDetails\n )\n }\n}\n\nexport async function regenerateReleaseGoodWorksheetDetails(\n tx: EntityManager,\n domain: Domain,\n user: User,\n worksheetNo: string,\n batchId: string,\n productId: string,\n packingType: string,\n packingSize: number,\n orderProductId: string,\n worksheetDetails: Partial<WorksheetDetail>[]\n): Promise<void> {\n // 1. Remove prev worksheet details if it's exists\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, domain },\n relations: [\n 'bizplace',\n 'releaseGood',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product',\n 'worksheetDetails.targetInventory.releaseGood',\n 'worksheetDetails.targetInventory.orderProduct',\n 'worksheetDetails.targetInventory.bizplace'\n ]\n })\n\n const prevWSDs: WorksheetDetail[] = worksheet.worksheetDetails.filter((wsd: WorksheetDetail) => {\n const targetInv: OrderInventory = wsd.targetInventory\n if (targetInv.orderProductId === orderProductId) return wsd.id\n })\n\n // TODO: Update prev inventory locked qty and delete order inventories\n if (prevWSDs?.length) {\n const wsdIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.id)\n const prevOrderInvIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.targetInventory.id)\n const prevOrderInventories: OrderInventory[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.targetInventory)\n await Promise.all(\n prevOrderInventories.map(async prevOI => {\n if (prevOI?.inventory) {\n await (tx.getRepository(Inventory) as Repository<Inventory>).update(\n { id: prevOI.inventory.id },\n {\n lockedQty: prevOI.inventory.lockedQty - prevOI.releaseQty,\n lockedUomValue: prevOI.inventory.lockedUomValue - prevOI.releaseUomValue\n }\n )\n }\n })\n )\n\n await tx.getRepository(WorksheetDetail).delete(wsdIds)\n await tx.getRepository(OrderInventory).delete(prevOrderInvIds)\n }\n\n await Promise.all(\n worksheetDetails.map(async (wsd: WorksheetDetail) => {\n // 2. Create order inventory\n let targetInventory: OrderInventory = wsd.targetInventory\n const inventory: Inventory = await tx.getRepository(Inventory).findOne(targetInventory.inventory.id)\n\n let targetProduct: OrderProduct = await tx\n .getRepository(OrderProduct)\n .findOne({ where: { id: wsd.targetProduct.id }, relations: ['releaseGood'] })\n\n targetInventory = await tx.getRepository(OrderInventory).save({\n ...targetInventory,\n domain,\n bizplace: worksheet.bizplace,\n name: OrderNoGenerator.orderInventory(),\n releaseGood: worksheet.type == WORKSHEET_TYPE.BATCH_PICKING ? targetProduct.releaseGood : worksheet.releaseGood,\n inventory,\n batchId: inventory.batchId,\n batchIdRef: inventory.batchIdRef,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n product: await tx.getRepository(Product).findOneBy({ id: productId }),\n packingType,\n packingSize,\n orderProduct: targetProduct,\n refWorksheetId: worksheet.type == WORKSHEET_TYPE.BATCH_PICKING ? worksheet.id : null,\n creator: user,\n updater: user\n })\n\n const currentLockedQty: any = inventory.lockedQty\n const currentLockedUomValue: any = inventory.lockedUomValue\n\n await tx.getRepository(Inventory).save({\n ...targetInventory.inventory,\n lockedQty: Boolean(currentLockedQty)\n ? targetInventory.releaseQty + currentLockedQty\n : targetInventory.releaseQty,\n lockedUomValue: Boolean(currentLockedUomValue)\n ? targetInventory.releaseUomValue + currentLockedUomValue\n : targetInventory.releaseUomValue,\n updater: user\n })\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: targetProduct.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user } as any)\n\n // 3. Create worksheet details\n await tx.getRepository(WorksheetDetail).save({\n ...wsd,\n domain,\n bizplace: worksheet.bizplace,\n worksheet,\n name:\n worksheet.type == WORKSHEET_TYPE.BATCH_PICKING\n ? WorksheetNoGenerator.batchPickingDetail()\n : WorksheetNoGenerator.pickingDetail(),\n targetProduct,\n targetInventory,\n type: worksheet.type == WORKSHEET_TYPE.BATCH_PICKING ? WORKSHEET_TYPE.BATCH_PICKING : WORKSHEET_TYPE.PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user,\n updater: user\n })\n })\n )\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateWorksheetDetail = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
4
|
const typeorm_1 = require("typeorm");
|
|
5
|
+
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
6
|
const sales_base_1 = require("@things-factory/sales-base");
|
|
7
7
|
const entities_1 = require("../../../entities");
|
|
8
8
|
exports.updateWorksheetDetail = {
|
|
@@ -10,7 +10,7 @@ exports.updateWorksheetDetail = {
|
|
|
10
10
|
const { tx, user, domain } = context.state;
|
|
11
11
|
const worksheetDetail = await tx.getRepository(entities_1.WorksheetDetail).findOne({
|
|
12
12
|
where: {
|
|
13
|
-
domain,
|
|
13
|
+
domain: { id: domain.id },
|
|
14
14
|
bizplace: (0, typeorm_1.In)(await (0, biz_base_1.getPermittedBizplaceIds)(domain, user)),
|
|
15
15
|
id
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-worksheet-detail.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/update-worksheet-detail.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"update-worksheet-detail.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/update-worksheet-detail.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAG3C,uDAA0E;AAC1E,2DAAmE;AAGnE,gDAAmD;AAEtC,QAAA,qBAAqB,GAAG;IACnC,KAAK,CAAC,qBAAqB,CAAC,CAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAwB;QACzE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,eAAe,GAAoB,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,OAAO,CAAC;YACvF,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;gBACzB,QAAQ,EAAE,IAAA,YAAE,EAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzD,EAAE;aACH;SACF,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;YACnC,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,iBAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;SACvE;QAED,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE;YACjD,KAAK,CAAC,aAAa,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,yBAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;SAC3F;QAED,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE;YACzC,KAAK,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,qBAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;SAC/E;QAED,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,+CAC9C,eAAe,GACf,KAAK,KACR,OAAO,EAAE,IAAI,IACb,CAAA;IACJ,CAAC;CACF,CAAA","sourcesContent":["import { EntityManager, In } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { getPermittedBizplaceIds, Worker } from '@things-factory/biz-base'\nimport { OrderProduct, OrderVas } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\n\nimport { WorksheetDetail } from '../../../entities'\n\nexport const updateWorksheetDetail = {\n async updateWorksheetDetail(_: any, { id, patch }, context: ResolverContext) {\n const { tx, user, domain } = context.state\n const worksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n domain: { id: domain.id },\n bizplace: In(await getPermittedBizplaceIds(domain, user)),\n id\n }\n })\n\n if (patch.worker && patch.worker.id) {\n patch.worker = await tx.getRepository(Worker).findOne(patch.worker.id)\n }\n\n if (patch.targetProduct && patch.targetProduct.id) {\n patch.targetProduct = await tx.getRepository(OrderProduct).findOne(patch.targetProduct.id)\n }\n\n if (patch.targetVas && patch.targetVas.id) {\n patch.targetVas = await tx.getRepository(OrderVas).findOne(patch.targetVas.id)\n }\n\n return await tx.getRepository(WorksheetDetail).save({\n ...worksheetDetail,\n ...patch,\n updater: user\n })\n }\n}\n"]}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.worksheetDetailResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
4
|
const typeorm_1 = require("typeorm");
|
|
5
|
+
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
6
|
const entities_1 = require("../../../entities");
|
|
7
7
|
exports.worksheetDetailResolver = {
|
|
8
8
|
async worksheetDetail(_, { name }, context) {
|
|
9
9
|
const { tx, user, domain } = context.state;
|
|
10
10
|
tx.getRepository(entities_1.WorksheetDetail).findOne({
|
|
11
11
|
where: {
|
|
12
|
-
domain,
|
|
12
|
+
domain: { id: domain.id },
|
|
13
13
|
bizplace: (0, typeorm_1.In)(await (0, biz_base_1.getPermittedBizplaceIds)(domain, user)),
|
|
14
14
|
name
|
|
15
15
|
},
|