@things-factory/worksheet-base 8.0.0-beta.8 → 8.0.0
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/inbound/unloading-worksheet-controller.js +2 -0
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-candidates.d.ts +2 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/utils/inventory-util.d.ts +2 -0
- package/package.json +17 -17
- package/server/constants/index.ts +5 -0
- package/server/constants/rule-type.ts +4 -0
- package/server/constants/target-type.ts +6 -0
- package/server/constants/template.ts +12 -0
- package/server/constants/transaction-type.ts +9 -0
- package/server/constants/worksheet.ts +38 -0
- package/server/controllers/ecommerce/ecommerce-controller.ts +209 -0
- package/server/controllers/ecommerce/index.ts +2 -0
- package/server/controllers/ecommerce/sellercraft-controller.ts +358 -0
- package/server/controllers/inbound/index.ts +4 -0
- package/server/controllers/inbound/putaway-returning-worksheet-controller.ts +450 -0
- package/server/controllers/inbound/putaway-worksheet-controller.ts +454 -0
- package/server/controllers/inbound/unloading-returning-worksheet-controller.ts +291 -0
- package/server/controllers/inbound/unloading-worksheet-controller.ts +1400 -0
- package/server/controllers/index.ts +21 -0
- package/server/controllers/inspect/cycle-count-worksheet-controller.ts +537 -0
- package/server/controllers/inspect/index.ts +1 -0
- package/server/controllers/outbound/index.ts +5 -0
- package/server/controllers/outbound/loading-worksheet-controller.ts +377 -0
- package/server/controllers/outbound/packing-worksheet-controller.ts +449 -0
- package/server/controllers/outbound/picking-worksheet-controller.ts +1769 -0
- package/server/controllers/outbound/returning-worksheet-controller.ts +254 -0
- package/server/controllers/outbound/sorting-worksheet-controller.ts +554 -0
- package/server/controllers/render-elccl-grn.ts +228 -0
- package/server/controllers/render-fm-grn.ts +287 -0
- package/server/controllers/render-grn.ts +285 -0
- package/server/controllers/render-invoices.ts +201 -0
- package/server/controllers/render-job-sheet.ts +208 -0
- package/server/controllers/render-kimeda-grn.ts +185 -0
- package/server/controllers/render-manifest.ts +76 -0
- package/server/controllers/render-manual-do.ts +227 -0
- package/server/controllers/render-orientage-do.ts +376 -0
- package/server/controllers/render-orientage-grn.ts +191 -0
- package/server/controllers/render-po.ts +182 -0
- package/server/controllers/render-ro-do.ts +404 -0
- package/server/controllers/render-seebuu-grn.ts +208 -0
- package/server/controllers/vas/index.ts +1 -0
- package/server/controllers/vas/vas-worksheet-controller.ts +848 -0
- package/server/controllers/worksheet-controller.ts +1267 -0
- package/server/entities/index.ts +8 -0
- package/server/entities/warehouse-bizplace-onhand-inventory.ts +148 -0
- package/server/entities/worksheet-detail.ts +106 -0
- package/server/entities/worksheet-movement.ts +34 -0
- package/server/entities/worksheet.ts +100 -0
- package/server/graphql/index.ts +7 -0
- package/server/graphql/resolvers/index.ts +8 -0
- package/server/graphql/resolvers/pallet/index.ts +7 -0
- package/server/graphql/resolvers/pallet/pallet-outbound.ts +92 -0
- package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +137 -0
- package/server/graphql/resolvers/worksheet/cancel-draft-release-order.ts +20 -0
- package/server/graphql/resolvers/worksheet/check-inventory-release.ts +37 -0
- package/server/graphql/resolvers/worksheet/check-stock-take-current-location.ts +63 -0
- package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +213 -0
- package/server/graphql/resolvers/worksheet/create-worksheet.ts +21 -0
- package/server/graphql/resolvers/worksheet/cross-dock-picking.ts +173 -0
- package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +211 -0
- package/server/graphql/resolvers/worksheet/cycle-count-worksheet.ts +79 -0
- package/server/graphql/resolvers/worksheet/delete-worksheet.ts +21 -0
- package/server/graphql/resolvers/worksheet/delivery-order-by-worksheet.ts +104 -0
- package/server/graphql/resolvers/worksheet/fetch-delivery-order-ro.ts +191 -0
- package/server/graphql/resolvers/worksheet/fetch-sellercraft-document.ts +69 -0
- package/server/graphql/resolvers/worksheet/find-release-orders-by-task-no.ts +36 -0
- package/server/graphql/resolvers/worksheet/find-release-orders-by-worksheet-no.ts +29 -0
- 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 +100 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.ts +26 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts +51 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +17 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-return-worksheet.ts +69 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-worksheet.ts +65 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-putaway-worksheet.ts +54 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +114 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.ts +45 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.ts +35 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/index.ts +23 -0
- package/server/graphql/resolvers/worksheet/having-vas.ts +45 -0
- package/server/graphql/resolvers/worksheet/index.ts +142 -0
- package/server/graphql/resolvers/worksheet/inspecting/activate-cycle-count.ts +24 -0
- package/server/graphql/resolvers/worksheet/inspecting/add-extra-pallet.ts +49 -0
- package/server/graphql/resolvers/worksheet/inspecting/check-missing-pallet.ts +18 -0
- package/server/graphql/resolvers/worksheet/inspecting/complete-inspection.ts +41 -0
- package/server/graphql/resolvers/worksheet/inspecting/index.ts +17 -0
- package/server/graphql/resolvers/worksheet/inspecting/inspecting.ts +30 -0
- package/server/graphql/resolvers/worksheet/inspecting/relocate-pallet.ts +46 -0
- package/server/graphql/resolvers/worksheet/inspecting/undo-inspection.ts +23 -0
- package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +150 -0
- package/server/graphql/resolvers/worksheet/loaded-inventories.ts +40 -0
- package/server/graphql/resolvers/worksheet/loading/activate-loading.ts +73 -0
- package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +165 -0
- package/server/graphql/resolvers/worksheet/loading/index.ts +11 -0
- package/server/graphql/resolvers/worksheet/loading/loading.ts +46 -0
- package/server/graphql/resolvers/worksheet/loading/undo-loading.ts +25 -0
- package/server/graphql/resolvers/worksheet/loading-worksheet.ts +150 -0
- package/server/graphql/resolvers/worksheet/not-tally-target-inventories.ts +34 -0
- package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +69 -0
- package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +102 -0
- package/server/graphql/resolvers/worksheet/packing/index.ts +13 -0
- package/server/graphql/resolvers/worksheet/packing/packing.ts +59 -0
- package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +70 -0
- package/server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.ts +24 -0
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +378 -0
- package/server/graphql/resolvers/worksheet/palletizing-pallets.ts +142 -0
- package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +234 -0
- package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +40 -0
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +98 -0
- package/server/graphql/resolvers/worksheet/picking/assign-picking-inventories.ts +50 -0
- package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +44 -0
- package/server/graphql/resolvers/worksheet/picking/batch-picking.ts +32 -0
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +137 -0
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +282 -0
- package/server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts +121 -0
- package/server/graphql/resolvers/worksheet/picking/index.ts +31 -0
- package/server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.ts +35 -0
- package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +96 -0
- package/server/graphql/resolvers/worksheet/picking/picking.ts +55 -0
- package/server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.ts +52 -0
- package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +25 -0
- package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +25 -0
- package/server/graphql/resolvers/worksheet/picking/undo-picking-assignment.ts +31 -0
- package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +24 -0
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +147 -0
- package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +242 -0
- package/server/graphql/resolvers/worksheet/putaway/activate-putaway.ts +51 -0
- package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +105 -0
- package/server/graphql/resolvers/worksheet/putaway/index.ts +11 -0
- package/server/graphql/resolvers/worksheet/putaway/putaway.ts +26 -0
- package/server/graphql/resolvers/worksheet/putaway/undo-putaway.ts +25 -0
- package/server/graphql/resolvers/worksheet/putaway-return/activate-putaway-return.ts +55 -0
- package/server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.ts +38 -0
- package/server/graphql/resolvers/worksheet/putaway-return/index.ts +11 -0
- package/server/graphql/resolvers/worksheet/putaway-return/putaway-return.ts +30 -0
- package/server/graphql/resolvers/worksheet/putaway-return/undo-putaway-return.ts +29 -0
- package/server/graphql/resolvers/worksheet/putaway-returning-worksheet.ts +83 -0
- package/server/graphql/resolvers/worksheet/putaway-worksheet.ts +82 -0
- package/server/graphql/resolvers/worksheet/recommend-putway-location.ts +133 -0
- package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +186 -0
- package/server/graphql/resolvers/worksheet/relocate-pallet.ts +67 -0
- package/server/graphql/resolvers/worksheet/replace-picking-pallets.ts +127 -0
- package/server/graphql/resolvers/worksheet/return-worksheet.ts +70 -0
- package/server/graphql/resolvers/worksheet/returning/activate-return.ts +24 -0
- package/server/graphql/resolvers/worksheet/returning/complete-return.ts +39 -0
- package/server/graphql/resolvers/worksheet/returning/index.ts +9 -0
- package/server/graphql/resolvers/worksheet/returning/returning.ts +26 -0
- package/server/graphql/resolvers/worksheet/sorting/activate-sorting.ts +25 -0
- package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +40 -0
- package/server/graphql/resolvers/worksheet/sorting/complete-worksheet-sorting.ts +23 -0
- package/server/graphql/resolvers/worksheet/sorting/index.ts +13 -0
- package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +31 -0
- package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +32 -0
- package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +87 -0
- package/server/graphql/resolvers/worksheet/transfer.ts +176 -0
- package/server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.ts +54 -0
- package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +78 -0
- package/server/graphql/resolvers/worksheet/unloading/activate-unloading.ts +56 -0
- package/server/graphql/resolvers/worksheet/unloading/complete-product-scan-unload.ts +25 -0
- package/server/graphql/resolvers/worksheet/unloading/complete-unloading-partially.ts +25 -0
- package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +76 -0
- package/server/graphql/resolvers/worksheet/unloading/index.ts +21 -0
- package/server/graphql/resolvers/worksheet/unloading/scan-product-unload.ts +26 -0
- package/server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.ts +26 -0
- package/server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.ts +24 -0
- package/server/graphql/resolvers/worksheet/unloading/undo-unloading.ts +25 -0
- package/server/graphql/resolvers/worksheet/unloading/unload.ts +26 -0
- package/server/graphql/resolvers/worksheet/unloading-return/activate-unloading-return.ts +28 -0
- package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-return-partially.ts +29 -0
- package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.ts +91 -0
- package/server/graphql/resolvers/worksheet/unloading-return/index.ts +9 -0
- package/server/graphql/resolvers/worksheet/unloading-return-worksheet.ts +75 -0
- package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +98 -0
- package/server/graphql/resolvers/worksheet/update-worksheet.ts +25 -0
- package/server/graphql/resolvers/worksheet/vas/activate-vas.ts +25 -0
- package/server/graphql/resolvers/worksheet/vas/assign-vas-inventories.ts +25 -0
- package/server/graphql/resolvers/worksheet/vas/complete-vas.ts +72 -0
- package/server/graphql/resolvers/worksheet/vas/execute-vas.ts +31 -0
- package/server/graphql/resolvers/worksheet/vas/index.ts +15 -0
- package/server/graphql/resolvers/worksheet/vas/undo-vas-inventory.ts +24 -0
- package/server/graphql/resolvers/worksheet/vas/undo-vas.ts +24 -0
- package/server/graphql/resolvers/worksheet/vas-candidates.ts +177 -0
- package/server/graphql/resolvers/worksheet/vas-inventories.ts +41 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +1182 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/index.ts +5 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.ts +56 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/relabeling.ts +20 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.ts +27 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/repalletizing.ts +14 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/unpacking.ts +14 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.ts +96 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.ts +93 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.ts +4 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.ts +105 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.ts +40 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts +236 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.ts +3 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts +402 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts +166 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.ts +116 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.ts +3 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.ts +167 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.ts +74 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.ts +20 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.ts +2 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.ts +164 -0
- package/server/graphql/resolvers/worksheet/vas-worksheet.ts +110 -0
- package/server/graphql/resolvers/worksheet/worksheet-by-order-no.ts +43 -0
- package/server/graphql/resolvers/worksheet/worksheet-with-pagination.ts +46 -0
- package/server/graphql/resolvers/worksheet/worksheet.ts +330 -0
- package/server/graphql/resolvers/worksheet/worksheets.ts +493 -0
- package/server/graphql/resolvers/worksheet-detail/check-progressing-pallet.ts +22 -0
- package/server/graphql/resolvers/worksheet-detail/create-worksheet-detail.ts +38 -0
- package/server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.ts +18 -0
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +206 -0
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +165 -0
- package/server/graphql/resolvers/worksheet-detail/generate-carton-id.ts +26 -0
- package/server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts +94 -0
- package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +259 -0
- package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +142 -0
- package/server/graphql/resolvers/worksheet-detail/index.ts +34 -0
- package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +165 -0
- package/server/graphql/resolvers/worksheet-detail/update-worksheet-detail.ts +39 -0
- package/server/graphql/resolvers/worksheet-detail/worksheet-detail.ts +19 -0
- package/server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.ts +56 -0
- package/server/graphql/resolvers/worksheet-detail/worksheet-details.ts +21 -0
- package/server/graphql/resolvers/worksheet-movement/create-worksheet-movement.ts +17 -0
- package/server/graphql/resolvers/worksheet-movement/delete-worksheet-movement.ts +12 -0
- package/server/graphql/resolvers/worksheet-movement/index.ts +17 -0
- package/server/graphql/resolvers/worksheet-movement/update-worksheet-movement.ts +15 -0
- package/server/graphql/resolvers/worksheet-movement/worksheet-movement.ts +10 -0
- package/server/graphql/resolvers/worksheet-movement/worksheet-movements.ts +14 -0
- package/server/graphql/types/index.ts +15 -0
- package/server/graphql/types/pallet/index.ts +12 -0
- package/server/graphql/types/pallet/pallet.ts +7 -0
- package/server/graphql/types/worksheet/arrival-notice-worksheet.ts +8 -0
- package/server/graphql/types/worksheet/batch-pick-worksheet-info.ts +9 -0
- package/server/graphql/types/worksheet/contact-point-info.ts +12 -0
- package/server/graphql/types/worksheet/cycle-count-worksheet.ts +16 -0
- package/server/graphql/types/worksheet/delivery-info.ts +11 -0
- package/server/graphql/types/worksheet/delivery-order-info.ts +25 -0
- package/server/graphql/types/worksheet/delivery-order-ro.ts +15 -0
- package/server/graphql/types/worksheet/delivery-worksheet.ts +7 -0
- package/server/graphql/types/worksheet/executing-worksheet.ts +8 -0
- package/server/graphql/types/worksheet/find-release-orders-by-task-no.ts +8 -0
- package/server/graphql/types/worksheet/goods-delivery-note.ts +8 -0
- package/server/graphql/types/worksheet/index.ts +750 -0
- package/server/graphql/types/worksheet/inventory-check-worksheet.ts +7 -0
- package/server/graphql/types/worksheet/loaded-worksheet-detail.ts +9 -0
- package/server/graphql/types/worksheet/multiple-release-good-worksheet.ts +8 -0
- package/server/graphql/types/worksheet/my-picking-assignment-status.ts +9 -0
- package/server/graphql/types/worksheet/new-worksheet.ts +10 -0
- package/server/graphql/types/worksheet/picking-assignment-status.ts +9 -0
- package/server/graphql/types/worksheet/product-approval.ts +11 -0
- package/server/graphql/types/worksheet/release-good-worksheet.ts +8 -0
- package/server/graphql/types/worksheet/return-order-worksheet.ts +8 -0
- package/server/graphql/types/worksheet/sellercraft-document.ts +8 -0
- package/server/graphql/types/worksheet/vas-order-worksheet.ts +7 -0
- package/server/graphql/types/worksheet/vas-worksheet.ts +8 -0
- package/server/graphql/types/worksheet/worksheet-detail-info.ts +68 -0
- package/server/graphql/types/worksheet/worksheet-info.ts +33 -0
- package/server/graphql/types/worksheet/worksheet-list.ts +8 -0
- package/server/graphql/types/worksheet/worksheet-patch.ts +19 -0
- package/server/graphql/types/worksheet/worksheet-with-pagination.ts +9 -0
- package/server/graphql/types/worksheet/worksheet.ts +34 -0
- package/server/graphql/types/worksheet-detail/index.ts +81 -0
- package/server/graphql/types/worksheet-detail/inventory-detail.ts +39 -0
- package/server/graphql/types/worksheet-detail/new-worksheet-detail.ts +20 -0
- package/server/graphql/types/worksheet-detail/pallet-info.ts +8 -0
- package/server/graphql/types/worksheet-detail/worksheet-detail-list.ts +8 -0
- package/server/graphql/types/worksheet-detail/worksheet-detail-patch.ts +28 -0
- package/server/graphql/types/worksheet-detail/worksheet-detail.ts +29 -0
- package/server/graphql/types/worksheet-movement/index.ts +30 -0
- package/server/graphql/types/worksheet-movement/new-worksheet-movement.ts +8 -0
- package/server/graphql/types/worksheet-movement/worksheet-movement-list.ts +8 -0
- package/server/graphql/types/worksheet-movement/worksheet-movement-patch.ts +8 -0
- package/server/graphql/types/worksheet-movement/worksheet-movement.ts +10 -0
- package/server/index.ts +14 -0
- package/server/middlewares/index.ts +3 -0
- package/server/migrations/index.ts +9 -0
- package/server/routes.ts +80 -0
- package/server/utils/datetime-util.ts +54 -0
- package/server/utils/index.ts +4 -0
- package/server/utils/inventory-util.ts +390 -0
- package/server/utils/worksheet-no-generator.ts +206 -0
- package/server/utils/worksheet-util.ts +85 -0
|
@@ -179,6 +179,8 @@ class UnloadingWorksheetController extends vas_worksheet_controller_1.VasWorkshe
|
|
|
179
179
|
newInventory.productQuality = inventory.productQuality || '';
|
|
180
180
|
newInventory.auxInfo2 = inventory.auxInfo2 || null;
|
|
181
181
|
newInventory.workCategory = inventory.workCategory || '';
|
|
182
|
+
newInventory.isMachineFiltering = inventory.isMachineFiltering || false;
|
|
183
|
+
newInventory.origin = inventory.origin || '';
|
|
182
184
|
if (inventory === null || inventory === void 0 ? void 0 : inventory.expirationDate) {
|
|
183
185
|
newInventory.expirationDate = new Date(inventory.expirationDate);
|
|
184
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unloading-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/inbound/unloading-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Equal, In, Not, SelectQueryBuilder } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport {\n ArrivalNotice,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct,\n OrderVas,\n ReleaseGood,\n ReturnOrder,\n Vas,\n VAS_TARGET_TYPES,\n VAS_TYPES\n} from '@things-factory/sales-base'\nimport { PartnerSetting, Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\nimport {\n Inventory,\n INVENTORY_ITEM_SOURCE,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE,\n InventoryHistory,\n InventoryItem,\n InventoryNoGenerator,\n Location,\n Pallet,\n Warehouse\n} from '@things-factory/warehouse-base'\n\nimport { RULE_TYPE, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { DateGenerator, generateInventoryHistory } from '../../utils'\nimport { VasWorksheetController } from '../vas/vas-worksheet-controller'\n\nexport type UnloadingWorksheetDetail = Partial<WorksheetDetail> & {\n palletizingVasId: string\n palletQty: number\n palletizingDescription: string\n}\n\nexport class UnloadingWorksheetController extends VasWorksheetController {\n async generateUnloadingWorksheet(arrivalNoticeNo: string, bufferLocationId: string): Promise<Worksheet> {\n try {\n //@ts-ignore\n let arrivalNotice: ArrivalNotice = await this.findRefOrder(\n //@ts-ignore\n ArrivalNotice,\n {\n domain: { id: this.domain.id },\n name: arrivalNoticeNo,\n status: ORDER_STATUS.ARRIVED\n },\n ['bizplace', 'orderProducts', 'orderVass']\n )\n const orderProducts: OrderProduct[] = arrivalNotice.orderProducts\n const orderVASs: OrderVas[] = arrivalNotice.orderVass\n const bufferLocation: Location = await this.trxMgr.getRepository(Location).findOneBy({ id: bufferLocationId })\n\n const worksheet: Worksheet = await this.generateWorksheet(\n WORKSHEET_TYPE.UNLOADING,\n arrivalNotice,\n orderProducts,\n ORDER_STATUS.READY_TO_UNLOAD,\n ORDER_PRODUCT_STATUS.READY_TO_UNLOAD,\n { bufferLocation }\n )\n\n if (orderVASs?.length > 0) {\n await this.generateVasWorksheet(arrivalNotice)\n }\n\n return worksheet\n } catch (e) {\n throw new Error(e)\n }\n }\n\n async unload(worksheetDetailName: string, inventory: Partial<Inventory>, productBarcode: string): Promise<string> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: [\n 'bizplace',\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.returnOrder',\n 'worksheet.bufferLocation',\n 'worksheet.bufferLocation.warehouse',\n 'targetProduct',\n 'targetProduct.product',\n 'targetProduct.product.productDetails',\n 'targetProduct.product.productDetails.childProductDetail',\n 'targetInventory',\n 'targetInventory.inventory',\n 'targetInventory.product',\n 'targetInventory.product.productDetails',\n 'targetInventory.product.productDetails.childProductDetail'\n ]\n })\n if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))\n const targetProduct: OrderProduct = worksheetDetail.targetProduct\n\n if (targetProduct && targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)\n throw new Error('this product is pending for changes approval')\n\n const bizplace: Bizplace = worksheetDetail.bizplace\n const companyDomain: Domain = bizplace?.company?.domain\n const worksheet: Worksheet = worksheetDetail.worksheet\n const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const orderId: string = Boolean(arrivalNotice?.id) ? arrivalNotice.id : returnOrder.id\n const targetInventory: OrderInventory = worksheetDetail?.targetInventory\n //@ts-ignore\n const originInventory: OrderInventory = targetInventory ? targetInventory.inventory : null\n const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId\n const batchIdRef: string = Boolean(arrivalNotice) ? targetProduct.batchIdRef : null\n const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product\n const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType\n const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize\n const remark: string = Boolean(arrivalNotice) ? targetProduct.remark : targetInventory.remark\n //@ts-ignore\n const manufactureDate: number = Boolean(arrivalNotice) ? targetProduct.manufactureDate : null\n let qty: number = inventory.qty\n let uom: string = Boolean(arrivalNotice) ? targetProduct.uom : originInventory.uom\n const location: Location = worksheet.bufferLocation\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n const unitCost: number = Boolean(arrivalNotice)\n ? targetProduct?.unitPrice\n ? ((targetProduct.packQty * targetProduct.unitPrice + targetProduct.miscAmt - targetProduct.discountAmt) *\n (1 + targetProduct.taxRate / 100)) /\n targetProduct.packQty\n : 0\n : null\n\n const palletId: string = inventory?.palletId\n const cartonId: string = inventory?.cartonId\n\n if (!inventory?.palletId) {\n inventory.palletId = await generateId({\n domain: this.domain,\n type: RULE_TYPE.LOT_NUMBER_ID,\n seed: { date: DateGenerator.generateDate() }\n })\n if (inventory?.cartonId) await this.checkCartonDuplication(cartonId, orderId)\n } else {\n await this.checkPalletDuplication(palletId)\n }\n\n if (productBarcode) {\n const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)\n const isMatchingBarcode: boolean = productDetails.map(detail => detail.gtin).includes(productBarcode)\n if (!isMatchingBarcode) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))\n\n const foundProductDetail: ProductDetail = productDetails.find(\n (detail: ProductDetail) =>\n detail.gtin === productBarcode && detail.packingType === packingType && detail.packingSize == packingSize\n )\n\n if (!foundProductDetail) {\n const orderProductDetail: ProductDetail = productDetails.find(\n (parentDetail: ProductDetail) =>\n parentDetail.packingType === packingType && parentDetail.packingSize == packingSize\n )\n if (!orderProductDetail)\n throw new Error(\n this.ERROR_MSG.FIND.NO_RESULT(`Packing Type ( ${packingType}) or Packing Size (${packingSize})`)\n )\n\n if (arrivalNotice) {\n uom = targetProduct.uom\n } else {\n uom = orderProductDetail.uom\n }\n qty = (await this.getChildQty(productDetails, productBarcode, orderProductDetail)) * qty\n } else {\n uom = foundProductDetail.uom\n qty\n }\n }\n\n const uomValue: number =\n Math.round(\n qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n\n let newInventory: Partial<Inventory> = new Inventory()\n newInventory.bizplace = bizplace\n newInventory.name = InventoryNoGenerator.inventoryName()\n newInventory.palletId = inventory.palletId\n newInventory.cartonId = inventory.cartonId\n newInventory.batchId = batchId\n newInventory.product = product\n newInventory.packingType = packingType\n newInventory.packingSize = packingSize\n newInventory.uom = uom\n newInventory.remark = remark\n newInventory.qty = qty\n newInventory.uomValue = uomValue\n newInventory.refOrderId = orderId\n newInventory.unitCost = unitCost\n if (inventory.reusablePallet?.id) {\n newInventory.reusablePallet = await this.trxMgr\n .getRepository(Pallet)\n .findOneBy({ id: inventory.reusablePallet.id })\n }\n if (arrivalNotice) {\n if (manufactureDate) {\n //@ts-ignore\n newInventory.manufactureDate = manufactureDate\n } else if (inventory?.manufactureDate) {\n newInventory.manufactureDate = new Date(inventory.manufactureDate)\n }\n newInventory.batchIdRef = batchIdRef\n newInventory.orderProductId = targetProduct?.id\n } else if (returnOrder) {\n newInventory.orderInventoryId = targetInventory?.id\n newInventory.refInventory = targetInventory?.inventory\n }\n newInventory.warehouse = warehouse\n newInventory.location = location\n newInventory.zone = zone\n newInventory.status = INVENTORY_STATUS.UNLOADED\n\n // product color, quality, zaho, work category\n newInventory.productColor = inventory.productColor || ''\n newInventory.productQuality = inventory.productQuality || ''\n newInventory.auxInfo2 = inventory.auxInfo2 || null\n newInventory.workCategory = inventory.workCategory || ''\n\n if (inventory?.expirationDate) {\n newInventory.expirationDate = new Date(inventory.expirationDate)\n }\n\n newInventory = await this.transactionInventory(\n newInventory,\n Boolean(arrivalNotice) ? arrivalNotice : returnOrder,\n newInventory.qty,\n newInventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNLOADING\n )\n\n if (arrivalNotice) {\n targetProduct.actualPalletQty++\n targetProduct.actualPackQty += qty\n targetProduct.status = ORDER_PRODUCT_STATUS.UNLOADED\n targetProduct.updater = this.user\n this.updateOrderTargets([targetProduct])\n } else if (returnOrder) {\n targetInventory.actualPalletQty++\n targetInventory.actualPackQty += qty\n targetInventory.status = ORDER_PRODUCT_STATUS.UNLOADED\n targetInventory.updater = this.user\n this.updateOrderTargets([targetInventory])\n }\n\n return inventory.palletId\n }\n\n async scanSerialNumberUnload(\n worksheetDetailName: string,\n serialNumber: string,\n inventory: Partial<Inventory>\n ): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: [\n 'bizplace',\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.returnOrder',\n 'worksheet.bufferLocation',\n 'worksheet.bufferLocation.warehouse',\n 'targetProduct',\n 'targetProduct.product',\n 'targetProduct.product.productDetails',\n 'targetProduct.product.productDetails.childProductDetail',\n 'targetInventory',\n 'targetInventory.product',\n 'targetInventory.product.productDetails',\n 'targetInventory.product.productDetails.childProductDetail'\n ]\n })\n if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))\n\n if (!inventory?.palletId)\n inventory.palletId = await generateId({\n domain: this.domain,\n type: RULE_TYPE.LOT_NUMBER_ID,\n seed: { date: DateGenerator.generateDate() }\n })\n\n const targetProduct: OrderProduct = worksheetDetail.targetProduct\n\n if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)\n throw new Error('this product is pending for changes approval')\n\n const bizplace: Bizplace = worksheetDetail.bizplace\n const worksheet: Worksheet = worksheetDetail.worksheet\n const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const targetInventory: OrderInventory = worksheetDetail.targetInventory\n const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product\n const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType\n const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize\n const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId\n let qty: number = 0\n let uom: string = Boolean(arrivalNotice) ? targetProduct.uom : targetInventory.uom\n const cartonId: string = inventory.cartonId\n const orderId: string = Boolean(arrivalNotice) ? arrivalNotice.id : returnOrder.id\n await this.checkSerialNumberDuplication(serialNumber, product)\n\n qty++\n\n const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr\n .getRepository(Inventory)\n .createQueryBuilder('INV')\n .where('INV.domain_id = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })\n .andWhere('INV.product_id = :productId', { productId: product.id })\n .andWhere('INV.batch_id = :batchId', { batchId: batchId })\n .andWhere('INV.packing_type = :packingType', { packingType: packingType })\n .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })\n\n if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })\n else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })\n\n if (inventory?.expirationDate) {\n invQb.andWhere('INV.expiration_date = :expirationDate', {\n expirationDate: inventory.expirationDate\n })\n }\n\n if (inventory?.cartonId) invQb.andWhere('INV.carton_id = :cartonId', { cartonId: inventory.cartonId })\n else invQb.andWhere('INV.pallet_id = :palletId', { palletId: inventory.palletId })\n\n let foundInventory: Inventory = await invQb.getOne()\n\n const batchIdRef: string = Boolean(arrivalNotice) ? targetProduct.batchIdRef : null\n const remark: string = Boolean(arrivalNotice) ? targetProduct.remark : targetInventory.remark\n //@ts-ignore\n const manufactureDate: number = Boolean(arrivalNotice) ? targetProduct.manufactureDate : null\n const location: Location = worksheet.bufferLocation\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n const unitCost: number = Boolean(arrivalNotice)\n ? targetProduct?.unitPrice\n ? ((targetProduct.packQty * targetProduct.unitPrice + targetProduct.miscAmt - targetProduct.discountAmt) *\n (1 + targetProduct.taxRate / 100)) /\n targetProduct.packQty\n : 0\n : null\n\n if (!foundInventory) {\n let newInventory: Partial<Inventory> = new Inventory()\n newInventory.bizplace = bizplace\n newInventory.domain = this.domain\n newInventory.name = InventoryNoGenerator.inventoryName()\n newInventory.palletId = inventory.palletId\n newInventory.cartonId = inventory.cartonId\n newInventory.batchId = batchId\n newInventory.batchIdRef = batchIdRef\n newInventory.product = product\n newInventory.packingType = packingType\n newInventory.packingSize = packingSize\n newInventory.uom = uom\n newInventory.remark = remark\n newInventory.qty = qty\n newInventory.uomValue =\n Math.round(\n qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n //@ts-ignore\n newInventory.manufactureDate = manufactureDate\n newInventory.refOrderId = orderId\n newInventory.unitCost = unitCost\n if (inventory.reusablePallet?.id) {\n newInventory.reusablePallet = await this.trxMgr\n .getRepository(Pallet)\n .findOneBy({ id: inventory.reusablePallet.id })\n }\n newInventory.orderProductId = Boolean(arrivalNotice) ? targetProduct.id : null\n newInventory.orderInventoryId = Boolean(returnOrder) ? targetInventory.id : null\n newInventory.warehouse = warehouse\n newInventory.location = location\n newInventory.zone = zone\n newInventory.status = INVENTORY_STATUS.CHECKED\n newInventory.creator = this.user\n\n if (inventory?.expirationDate) {\n newInventory.expirationDate = new Date(inventory.expirationDate)\n }\n\n if (arrivalNotice) {\n targetProduct.actualPalletQty++\n targetProduct.actualPackQty = Boolean(targetProduct.actualPackQty) ? targetProduct.actualPackQty + qty : qty\n } else if (returnOrder) {\n targetInventory.actualPalletQty++\n targetInventory.actualPackQty = Boolean(targetInventory.actualPackQty)\n ? targetInventory.actualPackQty + qty\n : qty\n }\n foundInventory = await this.trxMgr.getRepository(Inventory).save(newInventory)\n } else {\n const updatedQty: number = foundInventory.qty + qty\n foundInventory.expirationDate = foundInventory.expirationDate ? new Date(foundInventory.expirationDate) : null\n foundInventory.qty = updatedQty\n foundInventory.uomValue +=\n Math.round(\n qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n if (arrivalNotice) targetProduct.actualPackQty = targetProduct.actualPackQty + qty\n else if (returnOrder) targetInventory.actualPackQty = targetInventory.actualPackQty + qty\n foundInventory = await this.trxMgr.getRepository(Inventory).save(foundInventory)\n }\n\n let inventoryItem: InventoryItem = new InventoryItem()\n inventoryItem.name = InventoryNoGenerator.inventoryItemName()\n inventoryItem.serialNumber = serialNumber\n inventoryItem.status = foundInventory.status\n inventoryItem.inboundOrderId = foundInventory.refOrderId\n inventoryItem.product = product\n inventoryItem.inventory = foundInventory\n inventoryItem.source = INVENTORY_ITEM_SOURCE.INBOUND\n inventoryItem.domain = this.domain\n inventoryItem.creator = this.user\n inventoryItem.updater = this.user\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)\n\n if (arrivalNotice) {\n targetProduct.updater = this.user\n this.updateOrderTargets([targetProduct])\n } else if (returnOrder) {\n targetInventory.updater = this.user\n this.updateOrderTargets([targetInventory])\n }\n }\n\n async scanProductUnload(\n worksheetDetailName: string,\n productBarcode: string,\n inventory: Partial<Inventory>\n ): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: [\n 'bizplace',\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.returnOrder',\n 'worksheet.bufferLocation',\n 'worksheet.bufferLocation.warehouse',\n 'targetProduct',\n 'targetProduct.product',\n 'targetProduct.product.productDetails',\n 'targetProduct.product.productDetails.childProductDetail',\n 'targetInventory',\n 'targetInventory.product',\n 'targetInventory.product.productDetails',\n 'targetInventory.product.productDetails.childProductDetail'\n ]\n })\n if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))\n\n if (!inventory?.palletId)\n inventory.palletId = await generateId({\n domain: this.domain,\n type: RULE_TYPE.LOT_NUMBER_ID,\n seed: { date: DateGenerator.generateDate() }\n })\n\n const targetProduct: OrderProduct = worksheetDetail.targetProduct\n\n if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)\n throw new Error('this product is pending for changes approval')\n\n const bizplace: Bizplace = worksheetDetail.bizplace\n const worksheet: Worksheet = worksheetDetail.worksheet\n const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const targetInventory: OrderInventory = worksheetDetail.targetInventory\n const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product\n const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType\n const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize\n const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId\n let qty: number = 0\n let uom: string = Boolean(arrivalNotice) ? targetProduct.uom : targetInventory.uom\n const cartonId: string = inventory.cartonId\n const orderId: string = Boolean(arrivalNotice) ? arrivalNotice.id : returnOrder.id\n await this.checkCartonDuplication(cartonId, orderId)\n\n // search for matching product barcode\n const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)\n const isMatchingBarcode: boolean = productDetails.map(detail => detail.gtin).includes(productBarcode)\n if (!isMatchingBarcode) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))\n\n // case for scanning parent packing type, packing size\n const foundProductDetail: ProductDetail = productDetails.find(\n (detail: ProductDetail) =>\n detail.gtin === productBarcode && detail.packingType === packingType && detail.packingSize == packingSize\n )\n\n if (!foundProductDetail) {\n const orderProductDetail: ProductDetail = productDetails.find(\n (parentDetail: ProductDetail) =>\n parentDetail.packingType === packingType && parentDetail.packingSize == packingSize\n )\n if (!orderProductDetail)\n throw new Error(\n this.ERROR_MSG.FIND.NO_RESULT(`Packing Type ( ${packingType}) or Packing Size (${packingSize})`)\n )\n\n if (arrivalNotice) {\n uom = targetProduct.uom\n } else {\n uom = orderProductDetail.uom\n }\n qty = await this.getChildQty(productDetails, productBarcode, orderProductDetail)\n } else {\n uom = foundProductDetail.uom\n qty++\n }\n\n const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr\n .getRepository(Inventory)\n .createQueryBuilder('INV')\n .where('INV.domain_id = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })\n .andWhere('INV.product_id = :productId', { productId: product.id })\n .andWhere('INV.batch_id = :batchId', { batchId: batchId })\n .andWhere('INV.packing_type = :packingType', { packingType: packingType })\n .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })\n\n if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })\n else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })\n\n if (inventory?.expirationDate) {\n invQb.andWhere('INV.expiration_date = :expirationDate', {\n expirationDate: inventory.expirationDate\n })\n }\n\n if (inventory?.cartonId) invQb.andWhere('INV.carton_id = :cartonId', { cartonId: inventory.cartonId })\n else invQb.andWhere('INV.pallet_id = :palletId', { palletId: inventory.palletId })\n\n let foundInventory: Inventory = await invQb.getOne()\n\n const batchIdRef: string = Boolean(arrivalNotice) ? targetProduct.batchIdRef : null\n const remark: string = Boolean(arrivalNotice) ? targetProduct.remark : targetInventory.remark\n //@ts-ignore\n const manufactureDate: number = Boolean(arrivalNotice) ? targetProduct.manufactureDate : null\n const location: Location = worksheet.bufferLocation\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n const unitCost: number = Boolean(arrivalNotice)\n ? targetProduct?.unitPrice\n ? ((targetProduct.packQty * targetProduct.unitPrice + targetProduct.miscAmt - targetProduct.discountAmt) *\n (1 + targetProduct.taxRate / 100)) /\n targetProduct.packQty\n : 0\n : null\n\n if (!foundInventory) {\n let newInventory: Partial<Inventory> = new Inventory()\n newInventory.bizplace = bizplace\n newInventory.domain = this.domain\n newInventory.name = InventoryNoGenerator.inventoryName()\n newInventory.palletId = inventory.palletId\n newInventory.cartonId = inventory.cartonId\n newInventory.batchId = batchId\n newInventory.batchIdRef = batchIdRef\n newInventory.product = product\n newInventory.packingType = packingType\n newInventory.packingSize = packingSize\n newInventory.uom = uom\n newInventory.remark = remark\n newInventory.qty = qty\n newInventory.uomValue =\n Math.round(\n qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n //@ts-ignore\n newInventory.manufactureDate = manufactureDate\n newInventory.refOrderId = orderId\n newInventory.unitCost = unitCost\n if (inventory.reusablePallet?.id) {\n newInventory.reusablePallet = await this.trxMgr\n .getRepository(Pallet)\n .findOneBy({ id: inventory.reusablePallet.id })\n }\n newInventory.orderProductId = Boolean(arrivalNotice) ? targetProduct.id : null\n newInventory.orderInventoryId = Boolean(returnOrder) ? targetInventory.id : null\n newInventory.warehouse = warehouse\n newInventory.location = location\n newInventory.zone = zone\n newInventory.status = INVENTORY_STATUS.CHECKED\n newInventory.creator = this.user\n\n if (inventory?.expirationDate) {\n newInventory.expirationDate = new Date(inventory.expirationDate)\n }\n\n if (arrivalNotice) {\n targetProduct.actualPalletQty++\n targetProduct.actualPackQty = Boolean(targetProduct.actualPackQty) ? targetProduct.actualPackQty + qty : qty\n } else if (returnOrder) {\n targetInventory.actualPalletQty++\n targetInventory.actualPackQty = Boolean(targetInventory.actualPackQty)\n ? targetInventory.actualPackQty + qty\n : qty\n }\n await this.trxMgr.getRepository(Inventory).save(newInventory)\n } else {\n const updatedQty: number = foundInventory.qty + qty\n foundInventory.expirationDate = foundInventory.expirationDate ? new Date(foundInventory.expirationDate) : null\n foundInventory.qty = updatedQty\n foundInventory.uomValue +=\n Math.round(\n qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n if (arrivalNotice) targetProduct.actualPackQty = targetProduct.actualPackQty + qty\n else if (returnOrder) targetInventory.actualPackQty = targetInventory.actualPackQty + qty\n await this.trxMgr.getRepository(Inventory).save(foundInventory)\n }\n\n if (arrivalNotice) {\n targetProduct.updater = this.user\n this.updateOrderTargets([targetProduct])\n } else if (returnOrder) {\n targetInventory.updater = this.user\n this.updateOrderTargets([targetInventory])\n }\n }\n\n async completeProductScanUnload(worksheetDetailName: string, inventory: Partial<Inventory>): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: [\n 'bizplace',\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.returnOrder',\n 'worksheet.bufferLocation',\n 'worksheet.bufferLocation.warehouse',\n 'targetProduct',\n 'targetProduct.product',\n 'targetInventory',\n 'targetInventory.product'\n ]\n })\n if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))\n\n const bizplace: Bizplace = worksheetDetail.bizplace\n const worksheet: Worksheet = worksheetDetail.worksheet\n const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const targetProduct: OrderProduct = worksheetDetail.targetProduct\n const targetInventory: OrderInventory = worksheetDetail.targetInventory\n const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product\n const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType\n const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize\n const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId\n\n const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr\n .getRepository(Inventory)\n .createQueryBuilder('INV')\n .where('INV.domain_id = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })\n .andWhere('INV.product_id = :productId', { productId: product.id })\n .andWhere('INV.batch_id = :batchId', { batchId: batchId })\n .andWhere('INV.packing_type = :packingType', { packingType: packingType })\n .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })\n\n if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })\n else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })\n\n if (inventory?.expirationDate) {\n invQb.andWhere('INV.expiration_date = :expirationDate', {\n expirationDate: inventory.expirationDate\n })\n }\n\n if (inventory?.cartonId) invQb.andWhere('INV.carton_id = :cartonId', { cartonId: inventory.cartonId })\n else invQb.andWhere('INV.pallet_id = :palletId', { palletId: inventory.palletId })\n\n let foundInventory: Inventory = await invQb.getOne()\n if (!foundInventory) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(foundInventory.palletId))\n\n foundInventory.status = INVENTORY_STATUS.UNLOADED\n\n foundInventory = await this.transactionInventory(\n foundInventory,\n Boolean(arrivalNotice) ? arrivalNotice : returnOrder,\n foundInventory.qty,\n foundInventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNLOADING\n )\n }\n\n async undoUnload(orderType: string, orderNo: string, inventoryIds: [string]): Promise<void> {\n for (var i = 0; i < inventoryIds.length; i++) {\n const inventoryId: string = inventoryIds[i]\n let inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({\n where: { domain: { id: this.domain.id }, id: inventoryId },\n relations: ['location', 'product']\n })\n\n this.checkRecordValidity(inventory, {\n status: (status: string) => {\n const availableStatus: string[] = [INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED]\n if (availableStatus.indexOf(status) < 0) {\n throw new Error(\n this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE(\n 'status',\n 'Inventory current status unable to undo',\n status\n )\n )\n }\n return true\n }\n })\n\n const qty: number = inventory.qty\n\n let targetProduct: OrderProduct\n let targetInventory: OrderInventory\n let arrivalNotice: ArrivalNotice\n let returnOrder: ReturnOrder\n let worksheetDetail: WorksheetDetail\n\n if (orderType === ORDER_TYPES.ARRIVAL_NOTICE) {\n arrivalNotice = await this.trxMgr.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: this.domain.id }, name: orderNo },\n relations: ['orderProducts', 'orderProducts.product']\n })\n\n targetProduct = arrivalNotice.orderProducts.find(op => op.id === inventory.orderProductId)\n\n if (inventory.status == INVENTORY_STATUS.UNLOADED) {\n targetProduct.actualPackQty -= qty\n targetProduct.actualPalletQty--\n targetProduct.remark = null\n targetProduct.issue = null\n targetProduct.status = ORDER_PRODUCT_STATUS.UNLOADING\n } else {\n targetProduct.actualPackQty--\n // targetProduct.actualPalletQty--\n }\n targetProduct.updater = this.user\n await this.updateOrderTargets([targetProduct])\n\n worksheetDetail = await this.trxMgr\n .getRepository(WorksheetDetail)\n .findOne({ where: { domain: { id: this.domain.id }, targetProduct: { id: targetProduct.id } } })\n } else {\n returnOrder = await this.trxMgr.getRepository(ReturnOrder).findOne({\n where: { domain: { id: this.domain.id }, name: orderNo },\n relations: ['orderInventories', 'orderInventories.inventory', 'orderInventories.product']\n })\n\n targetInventory = returnOrder.orderInventories.find(\n oi =>\n oi.batchId == inventory.batchId &&\n oi.packingType == inventory.packingType &&\n oi.product.id == inventory.product.id &&\n oi.packingSize === inventory.packingSize\n )\n if (inventory.status == INVENTORY_STATUS.UNLOADED) {\n targetInventory.actualPackQty -= qty\n targetInventory.actualPalletQty--\n targetInventory.status = ORDER_PRODUCT_STATUS.UNLOADING\n } else {\n targetInventory.actualPackQty--\n // targetInventory.actualPalletQty--\n }\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail = await this.trxMgr\n .getRepository(WorksheetDetail)\n .findOne({ where: { domain: { id: this.domain.id }, targetInventory: { id: targetInventory.id } } })\n }\n\n if (inventory.status == INVENTORY_STATUS.CHECKED) {\n inventory.qty--\n inventory.uomValue =\n Math.round(\n inventory.qty *\n (Boolean(orderType === ORDER_TYPES.ARRIVAL_NOTICE)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue) *\n 100\n ) / 100\n inventory.updater = this.user\n await this.trxMgr.getRepository(Inventory).save(inventory)\n\n if (inventory.qty == 0) {\n inventory.lastSeq++\n inventory.status = INVENTORY_STATUS.DELETED\n inventory = await this.transactionInventory(\n inventory,\n Boolean(orderType === ORDER_TYPES.ARRIVAL_NOTICE) ? arrivalNotice : returnOrder,\n -inventory.qty,\n -inventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNDO_UNLOADING\n )\n inventory.qty = 0\n inventory.uomValue = 0\n inventory.updater = this.user\n targetProduct.actualPalletQty--\n\n await this.updateOrderTargets([targetProduct])\n\n await this.trxMgr.getRepository(InventoryHistory).update({ inventory }, { inventory: null })\n\n await this.trxMgr.getRepository(Inventory).delete({ id: inventory.id })\n }\n } else {\n inventory.lastSeq++\n inventory.status = INVENTORY_STATUS.DELETED\n inventory = await this.transactionInventory(\n inventory,\n Boolean(orderType === ORDER_TYPES.ARRIVAL_NOTICE) ? arrivalNotice : returnOrder,\n -inventory.qty,\n -inventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNDO_UNLOADING\n )\n inventory.qty = 0\n inventory.uomValue = 0\n inventory.updater = this.user\n\n await this.trxMgr.getRepository(InventoryHistory).update({ inventory }, { inventory: null })\n\n await this.trxMgr.getRepository(Inventory).delete({ id: inventory.id })\n }\n\n worksheetDetail.issue = inventory.qty == 0 && worksheetDetail?.issue ? null : worksheetDetail.issue\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n }\n\n async undoSerialNumberUnload(worksheetDetailName: string, inventoryItemId: string): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n domain: { id: this.domain.id },\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: [\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.returnOrder',\n 'targetProduct',\n 'targetProduct.product'\n ]\n })\n\n let worksheet: Worksheet = worksheetDetail.worksheet\n let arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n let returnOrder: ReturnOrder = worksheet.returnOrder\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n let targetProduct: OrderProduct = worksheetDetail.targetProduct\n let inventoryItem: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({\n where: { domain: { id: this.domain.id }, id: inventoryItemId },\n relations: ['inventory', 'product']\n })\n let inventory: Inventory = inventoryItem.inventory\n\n await this.trxMgr.getRepository(InventoryItem).delete(inventoryItem.id)\n\n inventory.qty--\n inventory.uomValue =\n Math.round(\n inventory.qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n await this.trxMgr\n .getRepository(Inventory)\n .update({ id: inventory.id }, { qty: inventory.qty, uomValue: inventory.uomValue })\n\n targetProduct.actualPackQty--\n\n const inventoryItems: InventoryItem[] = await this.trxMgr.getRepository(InventoryItem).find({\n where: { domain: { id: this.domain.id }, inboundOrderId: arrivalNotice.id, inventory: { id: inventory.id } }\n })\n\n if (inventoryItems?.length == 0) {\n await this.trxMgr.getRepository(Inventory).delete(inventory.id)\n\n targetProduct.actualPalletQty--\n }\n\n targetProduct.updater = this.user\n await this.updateOrderTargets([targetProduct])\n }\n\n async activateUnloading(\n worksheetNo: string,\n unloadingWorksheetDetails: UnloadingWorksheetDetail[]\n ): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.UNLOADING, [\n 'bizplace',\n 'arrivalNotice',\n 'worksheetDetails',\n 'worksheetDetails.targetProduct',\n 'worksheetDetails.targetProduct.product',\n 'worksheetDetails.targetVas'\n ])\n\n let arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n let vasWorksheet: Worksheet = new Worksheet()\n\n try {\n vasWorksheet = await this.findWorksheetByRefOrder(arrivalNotice, WORKSHEET_TYPE.VAS)\n } catch (e) {\n // do nothing\n }\n\n if (!Object.keys(vasWorksheet).length || vasWorksheet?.status == WORKSHEET_STATUS.DONE) {\n const bizplace: Bizplace = worksheet.bizplace\n let worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n\n const targetProducts: OrderProduct[] = worksheetDetails.map((wsd: WorksheetDetail) => {\n let targetProduct: OrderProduct = wsd.targetProduct\n\n if (!targetProduct.palletQty) {\n const { palletQty }: { palletQty: number } = this.findMatchedWSD(wsd.name, unloadingWorksheetDetails)\n targetProduct.palletQty = palletQty\n }\n targetProduct.status = ORDER_PRODUCT_STATUS.UNLOADING\n targetProduct.updater = this.user\n\n return targetProduct\n })\n await this.updateOrderTargets(targetProducts)\n\n arrivalNotice.status = ORDER_STATUS.PROCESSING\n arrivalNotice.updater = this.user\n this.updateRefOrder(arrivalNotice)\n\n const palletizingWSDs: UnloadingWorksheetDetail[] = this.filterPalletizingWSDs(unloadingWorksheetDetails)\n if (palletizingWSDs?.length) {\n this.createPalletizingWSDs(bizplace, arrivalNotice, worksheetDetails, unloadingWorksheetDetails)\n }\n\n worksheet = await this.activateWorksheet(worksheet, worksheetDetails, unloadingWorksheetDetails)\n } else if (vasWorksheet && vasWorksheet.status == WORKSHEET_STATUS.DEACTIVATED) {\n await this.activateVAS(vasWorksheet.name, vasWorksheet.worksheetDetails)\n } else if (vasWorksheet && vasWorksheet.status == WORKSHEET_STATUS.EXECUTING) {\n throw new Error(`There is pending VAS execution`)\n }\n\n return worksheet\n }\n\n async getProductScanningVal(arrivalNotice: ArrivalNotice) {\n let productScanning: string = 'false'\n const enableProductScanning: Setting = await this.trxMgr.getRepository(Setting).findOne({\n where: { domain: { id: this.domain.id }, category: 'id-rule', name: 'enable-product-scanning' }\n })\n\n if (enableProductScanning) {\n productScanning = enableProductScanning.value\n\n const partnerEnableProductScanning: PartnerSetting = await this.trxMgr.getRepository(PartnerSetting).findOne({\n where: {\n setting: { id: enableProductScanning.id },\n domain: { id: this.domain.id },\n partnerDomain: { id: arrivalNotice.bizplace?.domain.id }\n }\n })\n\n if (partnerEnableProductScanning) productScanning = partnerEnableProductScanning.value\n }\n\n return productScanning\n }\n\n async getInputQtyVal(arrivalNotice: ArrivalNotice) {\n let inputQty: string = 'false'\n const enableInputQty: Setting = await this.trxMgr.getRepository(Setting).findOne({\n where: { domain: { id: this.domain.id }, category: 'id-rule', name: 'enable-input-qty' }\n })\n\n if (enableInputQty) {\n inputQty = enableInputQty.value\n\n const partnerEnableInputQty: PartnerSetting = await this.trxMgr.getRepository(PartnerSetting).findOne({\n where: {\n setting: { id: enableInputQty.id },\n domain: { id: this.domain.id },\n partnerDomain: { id: arrivalNotice.bizplace?.domain.id }\n }\n })\n\n if (partnerEnableInputQty) inputQty = partnerEnableInputQty.value\n }\n\n return inputQty\n }\n\n // only creates inventory history upon partial or full unload when\n // productScanning is true\n // inputQty is false\n async createInventoryHistory(arrivalNotice: ArrivalNotice, inventories?: Inventory[]) {\n try {\n if (inventories === undefined) {\n const inventoryList = await this.trxMgr.getRepository(Inventory).findAndCount({\n where: {\n //@ts-ignore\n domain: { id: this.domain },\n refOrderId: arrivalNotice.id\n }\n })\n\n inventories = inventoryList[0]\n }\n\n for (const inventory of inventories) {\n await this.transactionInventory(\n inventory,\n arrivalNotice,\n inventory.qty,\n inventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNLOADING\n )\n }\n } catch (e) {\n throw e\n }\n }\n\n async completeUnloading(\n arrivalNoticeNo: string,\n unloadingWorksheetDetails: Partial<WorksheetDetail>[]\n ): Promise<void> {\n //@ts-ignore\n let arrivalNotice: ArrivalNotice = await this.findRefOrder(\n //@ts-ignore\n ArrivalNotice,\n {\n domain: { id: this.domain.id },\n name: arrivalNoticeNo,\n status: In([ORDER_STATUS.PROCESSING, ORDER_STATUS.PUTTING_AWAY])\n },\n ['orderProducts', 'releaseGood', 'bizplace', 'bizplace.domain']\n )\n\n if (arrivalNotice.crossDocking) {\n // Picking worksheet for cross docking should be completed before complete it\n // Find picking worksheet\n const releaseGood: ReleaseGood = arrivalNotice.releaseGood\n const executingPickingWS: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: { id: this.domain.id },\n releaseGood: { id: releaseGood.id },\n type: WORKSHEET_TYPE.PICKING,\n status: Not(Equal(WORKSHEET_STATUS.DONE))\n }\n })\n\n if (executingPickingWS)\n throw new Error(`Picking should be completed before complete unloading for cross docking.`)\n }\n\n if (arrivalNotice.orderProducts.some((op: OrderProduct) => op.status === ORDER_PRODUCT_STATUS.READY_TO_APPROVED)) {\n throw new Error(`There's non-approved order products`)\n }\n\n let worksheet: Worksheet = await this.findWorksheetByRefOrder(arrivalNotice, WORKSHEET_TYPE.UNLOADING, [\n 'worksheetDetails',\n 'worksheetDetails.targetProduct'\n ])\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n const partiallyUnloadedCnt: number = await this.trxMgr.getRepository(Inventory).count({\n where: {\n domain: { id: this.domain.id },\n refOrderId: arrivalNotice.id,\n status: INVENTORY_STATUS.PARTIALLY_UNLOADED\n }\n })\n if (partiallyUnloadedCnt) {\n throw new Error('There is partially unloaded pallet, generate putaway worksheet before complete unloading.')\n }\n\n if (unloadingWorksheetDetails.some((wsd: Partial<WorksheetDetail>) => wsd.issue)) {\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n unloadingWorksheetDetails = this.renewWorksheetDetails(worksheetDetails, unloadingWorksheetDetails, 'name', {\n updater: this.user\n })\n const worksheetDetailsWithIssue: WorksheetDetail[] = unloadingWorksheetDetails.filter(\n (wsd: WorksheetDetail) => wsd.issue\n ) as WorksheetDetail[]\n if (worksheetDetailsWithIssue.length) {\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetailsWithIssue)\n }\n\n const targetProductsWithIssue: OrderProduct[] = worksheetDetailsWithIssue.map((wsd: WorksheetDetail) => {\n let targetProduct: OrderProduct = wsd.targetProduct\n targetProduct.issue = wsd.issue\n return targetProduct\n })\n await this.updateOrderTargets(targetProductsWithIssue)\n }\n\n if (arrivalNotice.status !== ORDER_STATUS.PUTTING_AWAY) {\n await this.completeWorksheet(worksheet, ORDER_STATUS.READY_TO_PUTAWAY)\n } else {\n await this.completeWorksheet(worksheet)\n }\n\n const productScanning = await this.getProductScanningVal(arrivalNotice)\n const inputQty = await this.getInputQtyVal(arrivalNotice)\n if (productScanning === 'true' && inputQty === 'false') await this.createInventoryHistory(arrivalNotice)\n\n const inventories: Inventory[] = await this.trxMgr.getRepository(Inventory).find({\n where: {\n domain: { id: this.domain.id },\n refOrderId: arrivalNotice.id,\n status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED])\n },\n relations: ['domain', 'bizplace', 'product', 'warehouse', 'location']\n })\n\n for (let inventory of inventories) {\n let inventoryItems: InventoryItem[] = await this.trxMgr.getRepository(InventoryItem).find({\n where: { domain: { id: this.domain.id }, inventory: { id: inventory.id } }\n })\n\n if (inventoryItems?.length) {\n inventory.status = INVENTORY_STATUS.STORED\n\n await Promise.all(\n inventoryItems.map(async inventoryItem => {\n await this.trxMgr\n .getRepository(InventoryItem)\n .update({ id: inventoryItem.id }, { status: INVENTORY_STATUS.STORED })\n })\n )\n\n await generateInventoryHistory(\n inventory,\n arrivalNotice,\n INVENTORY_TRANSACTION_TYPE.UNLOADING,\n inventory.qty,\n inventory.uomValue,\n this.user,\n this.trxMgr\n )\n }\n }\n\n let vasWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n arrivalNotice: { id: arrivalNotice.id },\n type: WORKSHEET_TYPE.VAS\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetVas', 'worksheetDetails.targetVas.vas']\n })\n\n if (vasWorksheet) {\n let serviceVasWorksheetDetails: WorksheetDetail[] = vasWorksheet.worksheetDetails.filter(\n x => x.targetVas.vas.type == VAS_TYPES.SERVICE && x.status != WORKSHEET_STATUS.DONE\n )\n let materialsVasWorksheetDetails: WorksheetDetail[] = vasWorksheet.worksheetDetails.filter(\n x => x.targetVas.vas.type == VAS_TYPES.MATERIALS\n )\n materialsVasWorksheetDetails.forEach((wsd: WorksheetDetail) => {\n wsd.status = WORKSHEET_STATUS.DONE\n wsd.updater = this.user\n })\n await this.trxMgr.getRepository(WorksheetDetail).save(materialsVasWorksheetDetails)\n\n let targetVASs: OrderVas[] = materialsVasWorksheetDetails.map((wsd: WorksheetDetail) => {\n let targetVas: OrderVas = wsd.targetVas\n targetVas.status = ORDER_VAS_STATUS.TERMINATED\n targetVas.updater = this.user\n return targetVas\n })\n\n if (targetVASs.length) await this.updateOrderTargets(targetVASs)\n\n if (serviceVasWorksheetDetails.length <= 0) {\n vasWorksheet.status = WORKSHEET_STATUS.DONE\n vasWorksheet.updater = this.user\n\n await this.trxMgr.getRepository(Worksheet).save(vasWorksheet)\n }\n }\n }\n\n async completeUnloadingPartially(\n arrivalNoticeNo: string,\n unloadingWorksheetDetail: Partial<WorksheetDetail>[]\n ): Promise<Worksheet> {\n //@ts-ignore\n const arrivalNotice: ArrivalNotice = await this.findRefOrder(\n //@ts-ignore\n ArrivalNotice,\n {\n domain: { id: this.domain.id },\n name: arrivalNoticeNo,\n status: In([ORDER_STATUS.PROCESSING, ORDER_STATUS.PUTTING_AWAY])\n },\n ['bizplace', 'bizplace.domain']\n )\n\n const worksheet: Worksheet = await this.findWorksheetByRefOrder(arrivalNotice, WORKSHEET_TYPE.UNLOADING, [\n 'worksheetDetails',\n 'worksheetDetails.targetProduct'\n ])\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n let worksheetDetails = worksheet.worksheetDetails.filter(({ name: itm1 }) =>\n unloadingWorksheetDetail.some(({ name: itm2 }) => itm2 === itm1)\n )\n\n worksheetDetails.forEach((wsds: WorksheetDetail) => {\n wsds.status = WORKSHEET_STATUS.PARTIALLY_UNLOADED\n wsds.updater = this.user\n })\n\n worksheetDetails = await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)\n\n for (let i = 0; i < worksheetDetails.length; i++) {\n worksheetDetails[i].targetProduct.status = ORDER_PRODUCT_STATUS.PARTIALLY_UNLOADED\n worksheetDetails[i].targetProduct.remark = worksheetDetails[i].issue || worksheetDetails[i].targetProduct.remark\n await this.updateOrderTargets([worksheetDetails[i].targetProduct])\n }\n\n let inventories: Inventory[] = await this.trxMgr.getRepository(Inventory).find({\n where: {\n domain: { id: this.domain.id },\n refOrderId: arrivalNotice.id,\n status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED])\n }\n })\n\n inventories.forEach((inventory: Inventory) => {\n inventory.status = INVENTORY_STATUS.PARTIALLY_UNLOADED\n inventory.updater = this.user\n })\n await this.trxMgr.getRepository(Inventory).save(inventories)\n\n const productScanning = await this.getProductScanningVal(arrivalNotice)\n const inputQty = await this.getInputQtyVal(arrivalNotice)\n if (productScanning === 'true' && inputQty === 'false')\n await this.createInventoryHistory(arrivalNotice, inventories)\n\n let vasWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n arrivalNotice: { id: arrivalNotice.id },\n type: WORKSHEET_TYPE.VAS\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetVas', 'worksheetDetails.targetVas.vas']\n })\n\n if (vasWorksheet) {\n let serviceVasWorksheetDetails: WorksheetDetail[] = vasWorksheet.worksheetDetails.filter(\n x => x.targetVas.vas.type == VAS_TYPES.SERVICE && x.status != WORKSHEET_STATUS.DONE\n )\n let materialsVasWorksheetDetails: WorksheetDetail[] = vasWorksheet.worksheetDetails.filter(\n x => x.targetVas.vas.type == VAS_TYPES.MATERIALS\n )\n materialsVasWorksheetDetails.forEach((wsd: WorksheetDetail) => {\n wsd.status = WORKSHEET_STATUS.DONE\n wsd.updater = this.user\n })\n await this.trxMgr.getRepository(WorksheetDetail).save(materialsVasWorksheetDetails)\n\n let targetVASs: OrderVas[] = materialsVasWorksheetDetails.map((wsd: WorksheetDetail) => {\n let targetVas: OrderVas = wsd.targetVas\n targetVas.status = ORDER_VAS_STATUS.TERMINATED\n targetVas.updater = this.user\n return targetVas\n })\n\n await this.updateOrderTargets(targetVASs)\n\n if (serviceVasWorksheetDetails.length <= 0) {\n vasWorksheet.status = WORKSHEET_STATUS.DONE\n vasWorksheet.updater = this.user\n\n await this.trxMgr.getRepository(Worksheet).save(vasWorksheet)\n }\n }\n\n return worksheet\n }\n\n async createPalletizingWSDs(\n bizplace: Bizplace,\n arrivalNotice: ArrivalNotice,\n worksheetDetails: WorksheetDetail[],\n palletizingWSDs: UnloadingWorksheetDetail[]\n ): Promise<void> {\n let palletizingOrderVASs: OrderVas[] = []\n let currentSetNo: number = 1\n\n if (worksheetDetails.some((wd: WorksheetDetail) => wd.targetVas)) {\n const getSetNo: number[] = worksheetDetails.map((wd: WorksheetDetail) => wd.targetVas.set)\n\n if (getSetNo.length > 0) {\n currentSetNo = Math.max(...getSetNo) + 1\n }\n }\n\n for (let palletizingWSD of palletizingWSDs) {\n const palletizingVAS: Vas = await this.trxMgr.getRepository(Vas).findOne({\n where: { domain: { id: this.domain.id }, id: palletizingWSD.palletizingVasId }\n })\n\n const targetProduct: OrderProduct = worksheetDetails.find(\n (wsd: WorksheetDetail) => wsd.name === palletizingWSD.name\n ).targetProduct\n\n let palletizingOrderVas: OrderVas = new OrderVas()\n palletizingOrderVas.domain = this.domain\n palletizingOrderVas.bizplace = bizplace\n palletizingOrderVas.name = OrderNoGenerator.orderVas()\n palletizingOrderVas.arrivalNotice = arrivalNotice\n palletizingOrderVas.vas = palletizingVAS\n palletizingOrderVas.set = currentSetNo\n palletizingOrderVas.targetType = VAS_TARGET_TYPES.BATCH_AND_PRODUCT_TYPE\n palletizingOrderVas.targetBatchId = targetProduct.batchId\n palletizingOrderVas.qty = targetProduct.packQty\n palletizingOrderVas.targetProduct = targetProduct.product\n palletizingOrderVas.packingType = targetProduct.packingType\n palletizingOrderVas.description = palletizingWSD.palletizingDescription\n palletizingOrderVas.type = ORDER_TYPES.ARRIVAL_NOTICE\n palletizingOrderVas.status = ORDER_VAS_STATUS.COMPLETED\n palletizingOrderVas.creator = this.user\n palletizingOrderVas.updater = this.user\n\n palletizingOrderVas = await this.trxMgr.getRepository(OrderVas).save(palletizingOrderVas)\n palletizingOrderVASs.push(palletizingOrderVas)\n\n currentSetNo++\n }\n\n let vasWorksheet: Worksheet = await this.findWorksheetByRefOrder(arrivalNotice, WORKSHEET_TYPE.VAS)\n if (!vasWorksheet) {\n await this.generateVasWorksheet(arrivalNotice)\n } else {\n await this.createWorksheetDetails(vasWorksheet, WORKSHEET_TYPE.VAS, palletizingOrderVASs)\n }\n }\n\n filterPalletizingWSDs(unloadingWSDs: UnloadingWorksheetDetail[]): UnloadingWorksheetDetail[] {\n return unloadingWSDs.filter((wsd: UnloadingWorksheetDetail) => wsd.palletQty && wsd.palletizingDescription)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"unloading-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/inbound/unloading-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Equal, In, Not, SelectQueryBuilder } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport {\n ArrivalNotice,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct,\n OrderVas,\n ReleaseGood,\n ReturnOrder,\n Vas,\n VAS_TARGET_TYPES,\n VAS_TYPES\n} from '@things-factory/sales-base'\nimport { PartnerSetting, Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\nimport {\n Inventory,\n INVENTORY_ITEM_SOURCE,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE,\n InventoryHistory,\n InventoryItem,\n InventoryNoGenerator,\n Location,\n Pallet,\n Warehouse\n} from '@things-factory/warehouse-base'\n\nimport { RULE_TYPE, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { DateGenerator, generateInventoryHistory } from '../../utils'\nimport { VasWorksheetController } from '../vas/vas-worksheet-controller'\n\nexport type UnloadingWorksheetDetail = Partial<WorksheetDetail> & {\n palletizingVasId: string\n palletQty: number\n palletizingDescription: string\n}\n\nexport class UnloadingWorksheetController extends VasWorksheetController {\n async generateUnloadingWorksheet(arrivalNoticeNo: string, bufferLocationId: string): Promise<Worksheet> {\n try {\n //@ts-ignore\n let arrivalNotice: ArrivalNotice = await this.findRefOrder(\n //@ts-ignore\n ArrivalNotice,\n {\n domain: { id: this.domain.id },\n name: arrivalNoticeNo,\n status: ORDER_STATUS.ARRIVED\n },\n ['bizplace', 'orderProducts', 'orderVass']\n )\n const orderProducts: OrderProduct[] = arrivalNotice.orderProducts\n const orderVASs: OrderVas[] = arrivalNotice.orderVass\n const bufferLocation: Location = await this.trxMgr.getRepository(Location).findOneBy({ id: bufferLocationId })\n\n const worksheet: Worksheet = await this.generateWorksheet(\n WORKSHEET_TYPE.UNLOADING,\n arrivalNotice,\n orderProducts,\n ORDER_STATUS.READY_TO_UNLOAD,\n ORDER_PRODUCT_STATUS.READY_TO_UNLOAD,\n { bufferLocation }\n )\n\n if (orderVASs?.length > 0) {\n await this.generateVasWorksheet(arrivalNotice)\n }\n\n return worksheet\n } catch (e) {\n throw new Error(e)\n }\n }\n\n async unload(worksheetDetailName: string, inventory: Partial<Inventory>, productBarcode: string): Promise<string> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: [\n 'bizplace',\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.returnOrder',\n 'worksheet.bufferLocation',\n 'worksheet.bufferLocation.warehouse',\n 'targetProduct',\n 'targetProduct.product',\n 'targetProduct.product.productDetails',\n 'targetProduct.product.productDetails.childProductDetail',\n 'targetInventory',\n 'targetInventory.inventory',\n 'targetInventory.product',\n 'targetInventory.product.productDetails',\n 'targetInventory.product.productDetails.childProductDetail'\n ]\n })\n if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))\n const targetProduct: OrderProduct = worksheetDetail.targetProduct\n\n if (targetProduct && targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)\n throw new Error('this product is pending for changes approval')\n\n const bizplace: Bizplace = worksheetDetail.bizplace\n const companyDomain: Domain = bizplace?.company?.domain\n const worksheet: Worksheet = worksheetDetail.worksheet\n const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const orderId: string = Boolean(arrivalNotice?.id) ? arrivalNotice.id : returnOrder.id\n const targetInventory: OrderInventory = worksheetDetail?.targetInventory\n //@ts-ignore\n const originInventory: OrderInventory = targetInventory ? targetInventory.inventory : null\n const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId\n const batchIdRef: string = Boolean(arrivalNotice) ? targetProduct.batchIdRef : null\n const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product\n const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType\n const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize\n const remark: string = Boolean(arrivalNotice) ? targetProduct.remark : targetInventory.remark\n //@ts-ignore\n const manufactureDate: number = Boolean(arrivalNotice) ? targetProduct.manufactureDate : null\n let qty: number = inventory.qty\n let uom: string = Boolean(arrivalNotice) ? targetProduct.uom : originInventory.uom\n const location: Location = worksheet.bufferLocation\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n const unitCost: number = Boolean(arrivalNotice)\n ? targetProduct?.unitPrice\n ? ((targetProduct.packQty * targetProduct.unitPrice + targetProduct.miscAmt - targetProduct.discountAmt) *\n (1 + targetProduct.taxRate / 100)) /\n targetProduct.packQty\n : 0\n : null\n\n const palletId: string = inventory?.palletId\n const cartonId: string = inventory?.cartonId\n\n if (!inventory?.palletId) {\n inventory.palletId = await generateId({\n domain: this.domain,\n type: RULE_TYPE.LOT_NUMBER_ID,\n seed: { date: DateGenerator.generateDate() }\n })\n if (inventory?.cartonId) await this.checkCartonDuplication(cartonId, orderId)\n } else {\n await this.checkPalletDuplication(palletId)\n }\n\n if (productBarcode) {\n const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)\n const isMatchingBarcode: boolean = productDetails.map(detail => detail.gtin).includes(productBarcode)\n if (!isMatchingBarcode) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))\n\n const foundProductDetail: ProductDetail = productDetails.find(\n (detail: ProductDetail) =>\n detail.gtin === productBarcode && detail.packingType === packingType && detail.packingSize == packingSize\n )\n\n if (!foundProductDetail) {\n const orderProductDetail: ProductDetail = productDetails.find(\n (parentDetail: ProductDetail) =>\n parentDetail.packingType === packingType && parentDetail.packingSize == packingSize\n )\n if (!orderProductDetail)\n throw new Error(\n this.ERROR_MSG.FIND.NO_RESULT(`Packing Type ( ${packingType}) or Packing Size (${packingSize})`)\n )\n\n if (arrivalNotice) {\n uom = targetProduct.uom\n } else {\n uom = orderProductDetail.uom\n }\n qty = (await this.getChildQty(productDetails, productBarcode, orderProductDetail)) * qty\n } else {\n uom = foundProductDetail.uom\n qty\n }\n }\n\n const uomValue: number =\n Math.round(\n qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n\n let newInventory: Partial<Inventory> = new Inventory()\n newInventory.bizplace = bizplace\n newInventory.name = InventoryNoGenerator.inventoryName()\n newInventory.palletId = inventory.palletId\n newInventory.cartonId = inventory.cartonId\n newInventory.batchId = batchId\n newInventory.product = product\n newInventory.packingType = packingType\n newInventory.packingSize = packingSize\n newInventory.uom = uom\n newInventory.remark = remark\n newInventory.qty = qty\n newInventory.uomValue = uomValue\n newInventory.refOrderId = orderId\n newInventory.unitCost = unitCost\n if (inventory.reusablePallet?.id) {\n newInventory.reusablePallet = await this.trxMgr\n .getRepository(Pallet)\n .findOneBy({ id: inventory.reusablePallet.id })\n }\n if (arrivalNotice) {\n if (manufactureDate) {\n //@ts-ignore\n newInventory.manufactureDate = manufactureDate\n } else if (inventory?.manufactureDate) {\n newInventory.manufactureDate = new Date(inventory.manufactureDate)\n }\n newInventory.batchIdRef = batchIdRef\n newInventory.orderProductId = targetProduct?.id\n } else if (returnOrder) {\n newInventory.orderInventoryId = targetInventory?.id\n newInventory.refInventory = targetInventory?.inventory\n }\n newInventory.warehouse = warehouse\n newInventory.location = location\n newInventory.zone = zone\n newInventory.status = INVENTORY_STATUS.UNLOADED\n\n // product color, quality, zaho, work category\n newInventory.productColor = inventory.productColor || ''\n newInventory.productQuality = inventory.productQuality || ''\n newInventory.auxInfo2 = inventory.auxInfo2 || null\n newInventory.workCategory = inventory.workCategory || ''\n newInventory.isMachineFiltering = inventory.isMachineFiltering || false\n newInventory.origin = inventory.origin || ''\n\n if (inventory?.expirationDate) {\n newInventory.expirationDate = new Date(inventory.expirationDate)\n }\n\n newInventory = await this.transactionInventory(\n newInventory,\n Boolean(arrivalNotice) ? arrivalNotice : returnOrder,\n newInventory.qty,\n newInventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNLOADING\n )\n\n if (arrivalNotice) {\n targetProduct.actualPalletQty++\n targetProduct.actualPackQty += qty\n targetProduct.status = ORDER_PRODUCT_STATUS.UNLOADED\n targetProduct.updater = this.user\n this.updateOrderTargets([targetProduct])\n } else if (returnOrder) {\n targetInventory.actualPalletQty++\n targetInventory.actualPackQty += qty\n targetInventory.status = ORDER_PRODUCT_STATUS.UNLOADED\n targetInventory.updater = this.user\n this.updateOrderTargets([targetInventory])\n }\n\n return inventory.palletId\n }\n\n async scanSerialNumberUnload(\n worksheetDetailName: string,\n serialNumber: string,\n inventory: Partial<Inventory>\n ): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: [\n 'bizplace',\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.returnOrder',\n 'worksheet.bufferLocation',\n 'worksheet.bufferLocation.warehouse',\n 'targetProduct',\n 'targetProduct.product',\n 'targetProduct.product.productDetails',\n 'targetProduct.product.productDetails.childProductDetail',\n 'targetInventory',\n 'targetInventory.product',\n 'targetInventory.product.productDetails',\n 'targetInventory.product.productDetails.childProductDetail'\n ]\n })\n if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))\n\n if (!inventory?.palletId)\n inventory.palletId = await generateId({\n domain: this.domain,\n type: RULE_TYPE.LOT_NUMBER_ID,\n seed: { date: DateGenerator.generateDate() }\n })\n\n const targetProduct: OrderProduct = worksheetDetail.targetProduct\n\n if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)\n throw new Error('this product is pending for changes approval')\n\n const bizplace: Bizplace = worksheetDetail.bizplace\n const worksheet: Worksheet = worksheetDetail.worksheet\n const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const targetInventory: OrderInventory = worksheetDetail.targetInventory\n const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product\n const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType\n const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize\n const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId\n let qty: number = 0\n let uom: string = Boolean(arrivalNotice) ? targetProduct.uom : targetInventory.uom\n const cartonId: string = inventory.cartonId\n const orderId: string = Boolean(arrivalNotice) ? arrivalNotice.id : returnOrder.id\n await this.checkSerialNumberDuplication(serialNumber, product)\n\n qty++\n\n const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr\n .getRepository(Inventory)\n .createQueryBuilder('INV')\n .where('INV.domain_id = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })\n .andWhere('INV.product_id = :productId', { productId: product.id })\n .andWhere('INV.batch_id = :batchId', { batchId: batchId })\n .andWhere('INV.packing_type = :packingType', { packingType: packingType })\n .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })\n\n if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })\n else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })\n\n if (inventory?.expirationDate) {\n invQb.andWhere('INV.expiration_date = :expirationDate', {\n expirationDate: inventory.expirationDate\n })\n }\n\n if (inventory?.cartonId) invQb.andWhere('INV.carton_id = :cartonId', { cartonId: inventory.cartonId })\n else invQb.andWhere('INV.pallet_id = :palletId', { palletId: inventory.palletId })\n\n let foundInventory: Inventory = await invQb.getOne()\n\n const batchIdRef: string = Boolean(arrivalNotice) ? targetProduct.batchIdRef : null\n const remark: string = Boolean(arrivalNotice) ? targetProduct.remark : targetInventory.remark\n //@ts-ignore\n const manufactureDate: number = Boolean(arrivalNotice) ? targetProduct.manufactureDate : null\n const location: Location = worksheet.bufferLocation\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n const unitCost: number = Boolean(arrivalNotice)\n ? targetProduct?.unitPrice\n ? ((targetProduct.packQty * targetProduct.unitPrice + targetProduct.miscAmt - targetProduct.discountAmt) *\n (1 + targetProduct.taxRate / 100)) /\n targetProduct.packQty\n : 0\n : null\n\n if (!foundInventory) {\n let newInventory: Partial<Inventory> = new Inventory()\n newInventory.bizplace = bizplace\n newInventory.domain = this.domain\n newInventory.name = InventoryNoGenerator.inventoryName()\n newInventory.palletId = inventory.palletId\n newInventory.cartonId = inventory.cartonId\n newInventory.batchId = batchId\n newInventory.batchIdRef = batchIdRef\n newInventory.product = product\n newInventory.packingType = packingType\n newInventory.packingSize = packingSize\n newInventory.uom = uom\n newInventory.remark = remark\n newInventory.qty = qty\n newInventory.uomValue =\n Math.round(\n qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n //@ts-ignore\n newInventory.manufactureDate = manufactureDate\n newInventory.refOrderId = orderId\n newInventory.unitCost = unitCost\n if (inventory.reusablePallet?.id) {\n newInventory.reusablePallet = await this.trxMgr\n .getRepository(Pallet)\n .findOneBy({ id: inventory.reusablePallet.id })\n }\n newInventory.orderProductId = Boolean(arrivalNotice) ? targetProduct.id : null\n newInventory.orderInventoryId = Boolean(returnOrder) ? targetInventory.id : null\n newInventory.warehouse = warehouse\n newInventory.location = location\n newInventory.zone = zone\n newInventory.status = INVENTORY_STATUS.CHECKED\n newInventory.creator = this.user\n\n if (inventory?.expirationDate) {\n newInventory.expirationDate = new Date(inventory.expirationDate)\n }\n\n if (arrivalNotice) {\n targetProduct.actualPalletQty++\n targetProduct.actualPackQty = Boolean(targetProduct.actualPackQty) ? targetProduct.actualPackQty + qty : qty\n } else if (returnOrder) {\n targetInventory.actualPalletQty++\n targetInventory.actualPackQty = Boolean(targetInventory.actualPackQty)\n ? targetInventory.actualPackQty + qty\n : qty\n }\n foundInventory = await this.trxMgr.getRepository(Inventory).save(newInventory)\n } else {\n const updatedQty: number = foundInventory.qty + qty\n foundInventory.expirationDate = foundInventory.expirationDate ? new Date(foundInventory.expirationDate) : null\n foundInventory.qty = updatedQty\n foundInventory.uomValue +=\n Math.round(\n qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n if (arrivalNotice) targetProduct.actualPackQty = targetProduct.actualPackQty + qty\n else if (returnOrder) targetInventory.actualPackQty = targetInventory.actualPackQty + qty\n foundInventory = await this.trxMgr.getRepository(Inventory).save(foundInventory)\n }\n\n let inventoryItem: InventoryItem = new InventoryItem()\n inventoryItem.name = InventoryNoGenerator.inventoryItemName()\n inventoryItem.serialNumber = serialNumber\n inventoryItem.status = foundInventory.status\n inventoryItem.inboundOrderId = foundInventory.refOrderId\n inventoryItem.product = product\n inventoryItem.inventory = foundInventory\n inventoryItem.source = INVENTORY_ITEM_SOURCE.INBOUND\n inventoryItem.domain = this.domain\n inventoryItem.creator = this.user\n inventoryItem.updater = this.user\n\n await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)\n\n if (arrivalNotice) {\n targetProduct.updater = this.user\n this.updateOrderTargets([targetProduct])\n } else if (returnOrder) {\n targetInventory.updater = this.user\n this.updateOrderTargets([targetInventory])\n }\n }\n\n async scanProductUnload(\n worksheetDetailName: string,\n productBarcode: string,\n inventory: Partial<Inventory>\n ): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: [\n 'bizplace',\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.returnOrder',\n 'worksheet.bufferLocation',\n 'worksheet.bufferLocation.warehouse',\n 'targetProduct',\n 'targetProduct.product',\n 'targetProduct.product.productDetails',\n 'targetProduct.product.productDetails.childProductDetail',\n 'targetInventory',\n 'targetInventory.product',\n 'targetInventory.product.productDetails',\n 'targetInventory.product.productDetails.childProductDetail'\n ]\n })\n if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))\n\n if (!inventory?.palletId)\n inventory.palletId = await generateId({\n domain: this.domain,\n type: RULE_TYPE.LOT_NUMBER_ID,\n seed: { date: DateGenerator.generateDate() }\n })\n\n const targetProduct: OrderProduct = worksheetDetail.targetProduct\n\n if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)\n throw new Error('this product is pending for changes approval')\n\n const bizplace: Bizplace = worksheetDetail.bizplace\n const worksheet: Worksheet = worksheetDetail.worksheet\n const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const targetInventory: OrderInventory = worksheetDetail.targetInventory\n const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product\n const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType\n const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize\n const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId\n let qty: number = 0\n let uom: string = Boolean(arrivalNotice) ? targetProduct.uom : targetInventory.uom\n const cartonId: string = inventory.cartonId\n const orderId: string = Boolean(arrivalNotice) ? arrivalNotice.id : returnOrder.id\n await this.checkCartonDuplication(cartonId, orderId)\n\n // search for matching product barcode\n const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)\n const isMatchingBarcode: boolean = productDetails.map(detail => detail.gtin).includes(productBarcode)\n if (!isMatchingBarcode) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))\n\n // case for scanning parent packing type, packing size\n const foundProductDetail: ProductDetail = productDetails.find(\n (detail: ProductDetail) =>\n detail.gtin === productBarcode && detail.packingType === packingType && detail.packingSize == packingSize\n )\n\n if (!foundProductDetail) {\n const orderProductDetail: ProductDetail = productDetails.find(\n (parentDetail: ProductDetail) =>\n parentDetail.packingType === packingType && parentDetail.packingSize == packingSize\n )\n if (!orderProductDetail)\n throw new Error(\n this.ERROR_MSG.FIND.NO_RESULT(`Packing Type ( ${packingType}) or Packing Size (${packingSize})`)\n )\n\n if (arrivalNotice) {\n uom = targetProduct.uom\n } else {\n uom = orderProductDetail.uom\n }\n qty = await this.getChildQty(productDetails, productBarcode, orderProductDetail)\n } else {\n uom = foundProductDetail.uom\n qty++\n }\n\n const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr\n .getRepository(Inventory)\n .createQueryBuilder('INV')\n .where('INV.domain_id = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })\n .andWhere('INV.product_id = :productId', { productId: product.id })\n .andWhere('INV.batch_id = :batchId', { batchId: batchId })\n .andWhere('INV.packing_type = :packingType', { packingType: packingType })\n .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })\n\n if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })\n else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })\n\n if (inventory?.expirationDate) {\n invQb.andWhere('INV.expiration_date = :expirationDate', {\n expirationDate: inventory.expirationDate\n })\n }\n\n if (inventory?.cartonId) invQb.andWhere('INV.carton_id = :cartonId', { cartonId: inventory.cartonId })\n else invQb.andWhere('INV.pallet_id = :palletId', { palletId: inventory.palletId })\n\n let foundInventory: Inventory = await invQb.getOne()\n\n const batchIdRef: string = Boolean(arrivalNotice) ? targetProduct.batchIdRef : null\n const remark: string = Boolean(arrivalNotice) ? targetProduct.remark : targetInventory.remark\n //@ts-ignore\n const manufactureDate: number = Boolean(arrivalNotice) ? targetProduct.manufactureDate : null\n const location: Location = worksheet.bufferLocation\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n const unitCost: number = Boolean(arrivalNotice)\n ? targetProduct?.unitPrice\n ? ((targetProduct.packQty * targetProduct.unitPrice + targetProduct.miscAmt - targetProduct.discountAmt) *\n (1 + targetProduct.taxRate / 100)) /\n targetProduct.packQty\n : 0\n : null\n\n if (!foundInventory) {\n let newInventory: Partial<Inventory> = new Inventory()\n newInventory.bizplace = bizplace\n newInventory.domain = this.domain\n newInventory.name = InventoryNoGenerator.inventoryName()\n newInventory.palletId = inventory.palletId\n newInventory.cartonId = inventory.cartonId\n newInventory.batchId = batchId\n newInventory.batchIdRef = batchIdRef\n newInventory.product = product\n newInventory.packingType = packingType\n newInventory.packingSize = packingSize\n newInventory.uom = uom\n newInventory.remark = remark\n newInventory.qty = qty\n newInventory.uomValue =\n Math.round(\n qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n //@ts-ignore\n newInventory.manufactureDate = manufactureDate\n newInventory.refOrderId = orderId\n newInventory.unitCost = unitCost\n if (inventory.reusablePallet?.id) {\n newInventory.reusablePallet = await this.trxMgr\n .getRepository(Pallet)\n .findOneBy({ id: inventory.reusablePallet.id })\n }\n newInventory.orderProductId = Boolean(arrivalNotice) ? targetProduct.id : null\n newInventory.orderInventoryId = Boolean(returnOrder) ? targetInventory.id : null\n newInventory.warehouse = warehouse\n newInventory.location = location\n newInventory.zone = zone\n newInventory.status = INVENTORY_STATUS.CHECKED\n newInventory.creator = this.user\n\n if (inventory?.expirationDate) {\n newInventory.expirationDate = new Date(inventory.expirationDate)\n }\n\n if (arrivalNotice) {\n targetProduct.actualPalletQty++\n targetProduct.actualPackQty = Boolean(targetProduct.actualPackQty) ? targetProduct.actualPackQty + qty : qty\n } else if (returnOrder) {\n targetInventory.actualPalletQty++\n targetInventory.actualPackQty = Boolean(targetInventory.actualPackQty)\n ? targetInventory.actualPackQty + qty\n : qty\n }\n await this.trxMgr.getRepository(Inventory).save(newInventory)\n } else {\n const updatedQty: number = foundInventory.qty + qty\n foundInventory.expirationDate = foundInventory.expirationDate ? new Date(foundInventory.expirationDate) : null\n foundInventory.qty = updatedQty\n foundInventory.uomValue +=\n Math.round(\n qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n if (arrivalNotice) targetProduct.actualPackQty = targetProduct.actualPackQty + qty\n else if (returnOrder) targetInventory.actualPackQty = targetInventory.actualPackQty + qty\n await this.trxMgr.getRepository(Inventory).save(foundInventory)\n }\n\n if (arrivalNotice) {\n targetProduct.updater = this.user\n this.updateOrderTargets([targetProduct])\n } else if (returnOrder) {\n targetInventory.updater = this.user\n this.updateOrderTargets([targetInventory])\n }\n }\n\n async completeProductScanUnload(worksheetDetailName: string, inventory: Partial<Inventory>): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: [\n 'bizplace',\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.returnOrder',\n 'worksheet.bufferLocation',\n 'worksheet.bufferLocation.warehouse',\n 'targetProduct',\n 'targetProduct.product',\n 'targetInventory',\n 'targetInventory.product'\n ]\n })\n if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))\n\n const bizplace: Bizplace = worksheetDetail.bizplace\n const worksheet: Worksheet = worksheetDetail.worksheet\n const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const targetProduct: OrderProduct = worksheetDetail.targetProduct\n const targetInventory: OrderInventory = worksheetDetail.targetInventory\n const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product\n const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType\n const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize\n const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId\n\n const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr\n .getRepository(Inventory)\n .createQueryBuilder('INV')\n .where('INV.domain_id = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })\n .andWhere('INV.product_id = :productId', { productId: product.id })\n .andWhere('INV.batch_id = :batchId', { batchId: batchId })\n .andWhere('INV.packing_type = :packingType', { packingType: packingType })\n .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })\n\n if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })\n else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })\n\n if (inventory?.expirationDate) {\n invQb.andWhere('INV.expiration_date = :expirationDate', {\n expirationDate: inventory.expirationDate\n })\n }\n\n if (inventory?.cartonId) invQb.andWhere('INV.carton_id = :cartonId', { cartonId: inventory.cartonId })\n else invQb.andWhere('INV.pallet_id = :palletId', { palletId: inventory.palletId })\n\n let foundInventory: Inventory = await invQb.getOne()\n if (!foundInventory) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(foundInventory.palletId))\n\n foundInventory.status = INVENTORY_STATUS.UNLOADED\n\n foundInventory = await this.transactionInventory(\n foundInventory,\n Boolean(arrivalNotice) ? arrivalNotice : returnOrder,\n foundInventory.qty,\n foundInventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNLOADING\n )\n }\n\n async undoUnload(orderType: string, orderNo: string, inventoryIds: [string]): Promise<void> {\n for (var i = 0; i < inventoryIds.length; i++) {\n const inventoryId: string = inventoryIds[i]\n let inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({\n where: { domain: { id: this.domain.id }, id: inventoryId },\n relations: ['location', 'product']\n })\n\n this.checkRecordValidity(inventory, {\n status: (status: string) => {\n const availableStatus: string[] = [INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED]\n if (availableStatus.indexOf(status) < 0) {\n throw new Error(\n this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE(\n 'status',\n 'Inventory current status unable to undo',\n status\n )\n )\n }\n return true\n }\n })\n\n const qty: number = inventory.qty\n\n let targetProduct: OrderProduct\n let targetInventory: OrderInventory\n let arrivalNotice: ArrivalNotice\n let returnOrder: ReturnOrder\n let worksheetDetail: WorksheetDetail\n\n if (orderType === ORDER_TYPES.ARRIVAL_NOTICE) {\n arrivalNotice = await this.trxMgr.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: this.domain.id }, name: orderNo },\n relations: ['orderProducts', 'orderProducts.product']\n })\n\n targetProduct = arrivalNotice.orderProducts.find(op => op.id === inventory.orderProductId)\n\n if (inventory.status == INVENTORY_STATUS.UNLOADED) {\n targetProduct.actualPackQty -= qty\n targetProduct.actualPalletQty--\n targetProduct.remark = null\n targetProduct.issue = null\n targetProduct.status = ORDER_PRODUCT_STATUS.UNLOADING\n } else {\n targetProduct.actualPackQty--\n // targetProduct.actualPalletQty--\n }\n targetProduct.updater = this.user\n await this.updateOrderTargets([targetProduct])\n\n worksheetDetail = await this.trxMgr\n .getRepository(WorksheetDetail)\n .findOne({ where: { domain: { id: this.domain.id }, targetProduct: { id: targetProduct.id } } })\n } else {\n returnOrder = await this.trxMgr.getRepository(ReturnOrder).findOne({\n where: { domain: { id: this.domain.id }, name: orderNo },\n relations: ['orderInventories', 'orderInventories.inventory', 'orderInventories.product']\n })\n\n targetInventory = returnOrder.orderInventories.find(\n oi =>\n oi.batchId == inventory.batchId &&\n oi.packingType == inventory.packingType &&\n oi.product.id == inventory.product.id &&\n oi.packingSize === inventory.packingSize\n )\n if (inventory.status == INVENTORY_STATUS.UNLOADED) {\n targetInventory.actualPackQty -= qty\n targetInventory.actualPalletQty--\n targetInventory.status = ORDER_PRODUCT_STATUS.UNLOADING\n } else {\n targetInventory.actualPackQty--\n // targetInventory.actualPalletQty--\n }\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail = await this.trxMgr\n .getRepository(WorksheetDetail)\n .findOne({ where: { domain: { id: this.domain.id }, targetInventory: { id: targetInventory.id } } })\n }\n\n if (inventory.status == INVENTORY_STATUS.CHECKED) {\n inventory.qty--\n inventory.uomValue =\n Math.round(\n inventory.qty *\n (Boolean(orderType === ORDER_TYPES.ARRIVAL_NOTICE)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue) *\n 100\n ) / 100\n inventory.updater = this.user\n await this.trxMgr.getRepository(Inventory).save(inventory)\n\n if (inventory.qty == 0) {\n inventory.lastSeq++\n inventory.status = INVENTORY_STATUS.DELETED\n inventory = await this.transactionInventory(\n inventory,\n Boolean(orderType === ORDER_TYPES.ARRIVAL_NOTICE) ? arrivalNotice : returnOrder,\n -inventory.qty,\n -inventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNDO_UNLOADING\n )\n inventory.qty = 0\n inventory.uomValue = 0\n inventory.updater = this.user\n targetProduct.actualPalletQty--\n\n await this.updateOrderTargets([targetProduct])\n\n await this.trxMgr.getRepository(InventoryHistory).update({ inventory }, { inventory: null })\n\n await this.trxMgr.getRepository(Inventory).delete({ id: inventory.id })\n }\n } else {\n inventory.lastSeq++\n inventory.status = INVENTORY_STATUS.DELETED\n inventory = await this.transactionInventory(\n inventory,\n Boolean(orderType === ORDER_TYPES.ARRIVAL_NOTICE) ? arrivalNotice : returnOrder,\n -inventory.qty,\n -inventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNDO_UNLOADING\n )\n inventory.qty = 0\n inventory.uomValue = 0\n inventory.updater = this.user\n\n await this.trxMgr.getRepository(InventoryHistory).update({ inventory }, { inventory: null })\n\n await this.trxMgr.getRepository(Inventory).delete({ id: inventory.id })\n }\n\n worksheetDetail.issue = inventory.qty == 0 && worksheetDetail?.issue ? null : worksheetDetail.issue\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n }\n\n async undoSerialNumberUnload(worksheetDetailName: string, inventoryItemId: string): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n domain: { id: this.domain.id },\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: [\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.returnOrder',\n 'targetProduct',\n 'targetProduct.product'\n ]\n })\n\n let worksheet: Worksheet = worksheetDetail.worksheet\n let arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n let returnOrder: ReturnOrder = worksheet.returnOrder\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n let targetProduct: OrderProduct = worksheetDetail.targetProduct\n let inventoryItem: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({\n where: { domain: { id: this.domain.id }, id: inventoryItemId },\n relations: ['inventory', 'product']\n })\n let inventory: Inventory = inventoryItem.inventory\n\n await this.trxMgr.getRepository(InventoryItem).delete(inventoryItem.id)\n\n inventory.qty--\n inventory.uomValue =\n Math.round(\n inventory.qty *\n (Boolean(arrivalNotice)\n ? targetProduct.uomValue\n : targetInventory.returnUomValue / targetInventory.returnQty) *\n 100\n ) / 100\n await this.trxMgr\n .getRepository(Inventory)\n .update({ id: inventory.id }, { qty: inventory.qty, uomValue: inventory.uomValue })\n\n targetProduct.actualPackQty--\n\n const inventoryItems: InventoryItem[] = await this.trxMgr.getRepository(InventoryItem).find({\n where: { domain: { id: this.domain.id }, inboundOrderId: arrivalNotice.id, inventory: { id: inventory.id } }\n })\n\n if (inventoryItems?.length == 0) {\n await this.trxMgr.getRepository(Inventory).delete(inventory.id)\n\n targetProduct.actualPalletQty--\n }\n\n targetProduct.updater = this.user\n await this.updateOrderTargets([targetProduct])\n }\n\n async activateUnloading(\n worksheetNo: string,\n unloadingWorksheetDetails: UnloadingWorksheetDetail[]\n ): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.UNLOADING, [\n 'bizplace',\n 'arrivalNotice',\n 'worksheetDetails',\n 'worksheetDetails.targetProduct',\n 'worksheetDetails.targetProduct.product',\n 'worksheetDetails.targetVas'\n ])\n\n let arrivalNotice: ArrivalNotice = worksheet.arrivalNotice\n let vasWorksheet: Worksheet = new Worksheet()\n\n try {\n vasWorksheet = await this.findWorksheetByRefOrder(arrivalNotice, WORKSHEET_TYPE.VAS)\n } catch (e) {\n // do nothing\n }\n\n if (!Object.keys(vasWorksheet).length || vasWorksheet?.status == WORKSHEET_STATUS.DONE) {\n const bizplace: Bizplace = worksheet.bizplace\n let worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n\n const targetProducts: OrderProduct[] = worksheetDetails.map((wsd: WorksheetDetail) => {\n let targetProduct: OrderProduct = wsd.targetProduct\n\n if (!targetProduct.palletQty) {\n const { palletQty }: { palletQty: number } = this.findMatchedWSD(wsd.name, unloadingWorksheetDetails)\n targetProduct.palletQty = palletQty\n }\n targetProduct.status = ORDER_PRODUCT_STATUS.UNLOADING\n targetProduct.updater = this.user\n\n return targetProduct\n })\n await this.updateOrderTargets(targetProducts)\n\n arrivalNotice.status = ORDER_STATUS.PROCESSING\n arrivalNotice.updater = this.user\n this.updateRefOrder(arrivalNotice)\n\n const palletizingWSDs: UnloadingWorksheetDetail[] = this.filterPalletizingWSDs(unloadingWorksheetDetails)\n if (palletizingWSDs?.length) {\n this.createPalletizingWSDs(bizplace, arrivalNotice, worksheetDetails, unloadingWorksheetDetails)\n }\n\n worksheet = await this.activateWorksheet(worksheet, worksheetDetails, unloadingWorksheetDetails)\n } else if (vasWorksheet && vasWorksheet.status == WORKSHEET_STATUS.DEACTIVATED) {\n await this.activateVAS(vasWorksheet.name, vasWorksheet.worksheetDetails)\n } else if (vasWorksheet && vasWorksheet.status == WORKSHEET_STATUS.EXECUTING) {\n throw new Error(`There is pending VAS execution`)\n }\n\n return worksheet\n }\n\n async getProductScanningVal(arrivalNotice: ArrivalNotice) {\n let productScanning: string = 'false'\n const enableProductScanning: Setting = await this.trxMgr.getRepository(Setting).findOne({\n where: { domain: { id: this.domain.id }, category: 'id-rule', name: 'enable-product-scanning' }\n })\n\n if (enableProductScanning) {\n productScanning = enableProductScanning.value\n\n const partnerEnableProductScanning: PartnerSetting = await this.trxMgr.getRepository(PartnerSetting).findOne({\n where: {\n setting: { id: enableProductScanning.id },\n domain: { id: this.domain.id },\n partnerDomain: { id: arrivalNotice.bizplace?.domain.id }\n }\n })\n\n if (partnerEnableProductScanning) productScanning = partnerEnableProductScanning.value\n }\n\n return productScanning\n }\n\n async getInputQtyVal(arrivalNotice: ArrivalNotice) {\n let inputQty: string = 'false'\n const enableInputQty: Setting = await this.trxMgr.getRepository(Setting).findOne({\n where: { domain: { id: this.domain.id }, category: 'id-rule', name: 'enable-input-qty' }\n })\n\n if (enableInputQty) {\n inputQty = enableInputQty.value\n\n const partnerEnableInputQty: PartnerSetting = await this.trxMgr.getRepository(PartnerSetting).findOne({\n where: {\n setting: { id: enableInputQty.id },\n domain: { id: this.domain.id },\n partnerDomain: { id: arrivalNotice.bizplace?.domain.id }\n }\n })\n\n if (partnerEnableInputQty) inputQty = partnerEnableInputQty.value\n }\n\n return inputQty\n }\n\n // only creates inventory history upon partial or full unload when\n // productScanning is true\n // inputQty is false\n async createInventoryHistory(arrivalNotice: ArrivalNotice, inventories?: Inventory[]) {\n try {\n if (inventories === undefined) {\n const inventoryList = await this.trxMgr.getRepository(Inventory).findAndCount({\n where: {\n //@ts-ignore\n domain: { id: this.domain },\n refOrderId: arrivalNotice.id\n }\n })\n\n inventories = inventoryList[0]\n }\n\n for (const inventory of inventories) {\n await this.transactionInventory(\n inventory,\n arrivalNotice,\n inventory.qty,\n inventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNLOADING\n )\n }\n } catch (e) {\n throw e\n }\n }\n\n async completeUnloading(\n arrivalNoticeNo: string,\n unloadingWorksheetDetails: Partial<WorksheetDetail>[]\n ): Promise<void> {\n //@ts-ignore\n let arrivalNotice: ArrivalNotice = await this.findRefOrder(\n //@ts-ignore\n ArrivalNotice,\n {\n domain: { id: this.domain.id },\n name: arrivalNoticeNo,\n status: In([ORDER_STATUS.PROCESSING, ORDER_STATUS.PUTTING_AWAY])\n },\n ['orderProducts', 'releaseGood', 'bizplace', 'bizplace.domain']\n )\n\n if (arrivalNotice.crossDocking) {\n // Picking worksheet for cross docking should be completed before complete it\n // Find picking worksheet\n const releaseGood: ReleaseGood = arrivalNotice.releaseGood\n const executingPickingWS: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: { id: this.domain.id },\n releaseGood: { id: releaseGood.id },\n type: WORKSHEET_TYPE.PICKING,\n status: Not(Equal(WORKSHEET_STATUS.DONE))\n }\n })\n\n if (executingPickingWS)\n throw new Error(`Picking should be completed before complete unloading for cross docking.`)\n }\n\n if (arrivalNotice.orderProducts.some((op: OrderProduct) => op.status === ORDER_PRODUCT_STATUS.READY_TO_APPROVED)) {\n throw new Error(`There's non-approved order products`)\n }\n\n let worksheet: Worksheet = await this.findWorksheetByRefOrder(arrivalNotice, WORKSHEET_TYPE.UNLOADING, [\n 'worksheetDetails',\n 'worksheetDetails.targetProduct'\n ])\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n const partiallyUnloadedCnt: number = await this.trxMgr.getRepository(Inventory).count({\n where: {\n domain: { id: this.domain.id },\n refOrderId: arrivalNotice.id,\n status: INVENTORY_STATUS.PARTIALLY_UNLOADED\n }\n })\n if (partiallyUnloadedCnt) {\n throw new Error('There is partially unloaded pallet, generate putaway worksheet before complete unloading.')\n }\n\n if (unloadingWorksheetDetails.some((wsd: Partial<WorksheetDetail>) => wsd.issue)) {\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n unloadingWorksheetDetails = this.renewWorksheetDetails(worksheetDetails, unloadingWorksheetDetails, 'name', {\n updater: this.user\n })\n const worksheetDetailsWithIssue: WorksheetDetail[] = unloadingWorksheetDetails.filter(\n (wsd: WorksheetDetail) => wsd.issue\n ) as WorksheetDetail[]\n if (worksheetDetailsWithIssue.length) {\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetailsWithIssue)\n }\n\n const targetProductsWithIssue: OrderProduct[] = worksheetDetailsWithIssue.map((wsd: WorksheetDetail) => {\n let targetProduct: OrderProduct = wsd.targetProduct\n targetProduct.issue = wsd.issue\n return targetProduct\n })\n await this.updateOrderTargets(targetProductsWithIssue)\n }\n\n if (arrivalNotice.status !== ORDER_STATUS.PUTTING_AWAY) {\n await this.completeWorksheet(worksheet, ORDER_STATUS.READY_TO_PUTAWAY)\n } else {\n await this.completeWorksheet(worksheet)\n }\n\n const productScanning = await this.getProductScanningVal(arrivalNotice)\n const inputQty = await this.getInputQtyVal(arrivalNotice)\n if (productScanning === 'true' && inputQty === 'false') await this.createInventoryHistory(arrivalNotice)\n\n const inventories: Inventory[] = await this.trxMgr.getRepository(Inventory).find({\n where: {\n domain: { id: this.domain.id },\n refOrderId: arrivalNotice.id,\n status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED])\n },\n relations: ['domain', 'bizplace', 'product', 'warehouse', 'location']\n })\n\n for (let inventory of inventories) {\n let inventoryItems: InventoryItem[] = await this.trxMgr.getRepository(InventoryItem).find({\n where: { domain: { id: this.domain.id }, inventory: { id: inventory.id } }\n })\n\n if (inventoryItems?.length) {\n inventory.status = INVENTORY_STATUS.STORED\n\n await Promise.all(\n inventoryItems.map(async inventoryItem => {\n await this.trxMgr\n .getRepository(InventoryItem)\n .update({ id: inventoryItem.id }, { status: INVENTORY_STATUS.STORED })\n })\n )\n\n await generateInventoryHistory(\n inventory,\n arrivalNotice,\n INVENTORY_TRANSACTION_TYPE.UNLOADING,\n inventory.qty,\n inventory.uomValue,\n this.user,\n this.trxMgr\n )\n }\n }\n\n let vasWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n arrivalNotice: { id: arrivalNotice.id },\n type: WORKSHEET_TYPE.VAS\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetVas', 'worksheetDetails.targetVas.vas']\n })\n\n if (vasWorksheet) {\n let serviceVasWorksheetDetails: WorksheetDetail[] = vasWorksheet.worksheetDetails.filter(\n x => x.targetVas.vas.type == VAS_TYPES.SERVICE && x.status != WORKSHEET_STATUS.DONE\n )\n let materialsVasWorksheetDetails: WorksheetDetail[] = vasWorksheet.worksheetDetails.filter(\n x => x.targetVas.vas.type == VAS_TYPES.MATERIALS\n )\n materialsVasWorksheetDetails.forEach((wsd: WorksheetDetail) => {\n wsd.status = WORKSHEET_STATUS.DONE\n wsd.updater = this.user\n })\n await this.trxMgr.getRepository(WorksheetDetail).save(materialsVasWorksheetDetails)\n\n let targetVASs: OrderVas[] = materialsVasWorksheetDetails.map((wsd: WorksheetDetail) => {\n let targetVas: OrderVas = wsd.targetVas\n targetVas.status = ORDER_VAS_STATUS.TERMINATED\n targetVas.updater = this.user\n return targetVas\n })\n\n if (targetVASs.length) await this.updateOrderTargets(targetVASs)\n\n if (serviceVasWorksheetDetails.length <= 0) {\n vasWorksheet.status = WORKSHEET_STATUS.DONE\n vasWorksheet.updater = this.user\n\n await this.trxMgr.getRepository(Worksheet).save(vasWorksheet)\n }\n }\n }\n\n async completeUnloadingPartially(\n arrivalNoticeNo: string,\n unloadingWorksheetDetail: Partial<WorksheetDetail>[]\n ): Promise<Worksheet> {\n //@ts-ignore\n const arrivalNotice: ArrivalNotice = await this.findRefOrder(\n //@ts-ignore\n ArrivalNotice,\n {\n domain: { id: this.domain.id },\n name: arrivalNoticeNo,\n status: In([ORDER_STATUS.PROCESSING, ORDER_STATUS.PUTTING_AWAY])\n },\n ['bizplace', 'bizplace.domain']\n )\n\n const worksheet: Worksheet = await this.findWorksheetByRefOrder(arrivalNotice, WORKSHEET_TYPE.UNLOADING, [\n 'worksheetDetails',\n 'worksheetDetails.targetProduct'\n ])\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n let worksheetDetails = worksheet.worksheetDetails.filter(({ name: itm1 }) =>\n unloadingWorksheetDetail.some(({ name: itm2 }) => itm2 === itm1)\n )\n\n worksheetDetails.forEach((wsds: WorksheetDetail) => {\n wsds.status = WORKSHEET_STATUS.PARTIALLY_UNLOADED\n wsds.updater = this.user\n })\n\n worksheetDetails = await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)\n\n for (let i = 0; i < worksheetDetails.length; i++) {\n worksheetDetails[i].targetProduct.status = ORDER_PRODUCT_STATUS.PARTIALLY_UNLOADED\n worksheetDetails[i].targetProduct.remark = worksheetDetails[i].issue || worksheetDetails[i].targetProduct.remark\n await this.updateOrderTargets([worksheetDetails[i].targetProduct])\n }\n\n let inventories: Inventory[] = await this.trxMgr.getRepository(Inventory).find({\n where: {\n domain: { id: this.domain.id },\n refOrderId: arrivalNotice.id,\n status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED])\n }\n })\n\n inventories.forEach((inventory: Inventory) => {\n inventory.status = INVENTORY_STATUS.PARTIALLY_UNLOADED\n inventory.updater = this.user\n })\n await this.trxMgr.getRepository(Inventory).save(inventories)\n\n const productScanning = await this.getProductScanningVal(arrivalNotice)\n const inputQty = await this.getInputQtyVal(arrivalNotice)\n if (productScanning === 'true' && inputQty === 'false')\n await this.createInventoryHistory(arrivalNotice, inventories)\n\n let vasWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n arrivalNotice: { id: arrivalNotice.id },\n type: WORKSHEET_TYPE.VAS\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetVas', 'worksheetDetails.targetVas.vas']\n })\n\n if (vasWorksheet) {\n let serviceVasWorksheetDetails: WorksheetDetail[] = vasWorksheet.worksheetDetails.filter(\n x => x.targetVas.vas.type == VAS_TYPES.SERVICE && x.status != WORKSHEET_STATUS.DONE\n )\n let materialsVasWorksheetDetails: WorksheetDetail[] = vasWorksheet.worksheetDetails.filter(\n x => x.targetVas.vas.type == VAS_TYPES.MATERIALS\n )\n materialsVasWorksheetDetails.forEach((wsd: WorksheetDetail) => {\n wsd.status = WORKSHEET_STATUS.DONE\n wsd.updater = this.user\n })\n await this.trxMgr.getRepository(WorksheetDetail).save(materialsVasWorksheetDetails)\n\n let targetVASs: OrderVas[] = materialsVasWorksheetDetails.map((wsd: WorksheetDetail) => {\n let targetVas: OrderVas = wsd.targetVas\n targetVas.status = ORDER_VAS_STATUS.TERMINATED\n targetVas.updater = this.user\n return targetVas\n })\n\n await this.updateOrderTargets(targetVASs)\n\n if (serviceVasWorksheetDetails.length <= 0) {\n vasWorksheet.status = WORKSHEET_STATUS.DONE\n vasWorksheet.updater = this.user\n\n await this.trxMgr.getRepository(Worksheet).save(vasWorksheet)\n }\n }\n\n return worksheet\n }\n\n async createPalletizingWSDs(\n bizplace: Bizplace,\n arrivalNotice: ArrivalNotice,\n worksheetDetails: WorksheetDetail[],\n palletizingWSDs: UnloadingWorksheetDetail[]\n ): Promise<void> {\n let palletizingOrderVASs: OrderVas[] = []\n let currentSetNo: number = 1\n\n if (worksheetDetails.some((wd: WorksheetDetail) => wd.targetVas)) {\n const getSetNo: number[] = worksheetDetails.map((wd: WorksheetDetail) => wd.targetVas.set)\n\n if (getSetNo.length > 0) {\n currentSetNo = Math.max(...getSetNo) + 1\n }\n }\n\n for (let palletizingWSD of palletizingWSDs) {\n const palletizingVAS: Vas = await this.trxMgr.getRepository(Vas).findOne({\n where: { domain: { id: this.domain.id }, id: palletizingWSD.palletizingVasId }\n })\n\n const targetProduct: OrderProduct = worksheetDetails.find(\n (wsd: WorksheetDetail) => wsd.name === palletizingWSD.name\n ).targetProduct\n\n let palletizingOrderVas: OrderVas = new OrderVas()\n palletizingOrderVas.domain = this.domain\n palletizingOrderVas.bizplace = bizplace\n palletizingOrderVas.name = OrderNoGenerator.orderVas()\n palletizingOrderVas.arrivalNotice = arrivalNotice\n palletizingOrderVas.vas = palletizingVAS\n palletizingOrderVas.set = currentSetNo\n palletizingOrderVas.targetType = VAS_TARGET_TYPES.BATCH_AND_PRODUCT_TYPE\n palletizingOrderVas.targetBatchId = targetProduct.batchId\n palletizingOrderVas.qty = targetProduct.packQty\n palletizingOrderVas.targetProduct = targetProduct.product\n palletizingOrderVas.packingType = targetProduct.packingType\n palletizingOrderVas.description = palletizingWSD.palletizingDescription\n palletizingOrderVas.type = ORDER_TYPES.ARRIVAL_NOTICE\n palletizingOrderVas.status = ORDER_VAS_STATUS.COMPLETED\n palletizingOrderVas.creator = this.user\n palletizingOrderVas.updater = this.user\n\n palletizingOrderVas = await this.trxMgr.getRepository(OrderVas).save(palletizingOrderVas)\n palletizingOrderVASs.push(palletizingOrderVas)\n\n currentSetNo++\n }\n\n let vasWorksheet: Worksheet = await this.findWorksheetByRefOrder(arrivalNotice, WORKSHEET_TYPE.VAS)\n if (!vasWorksheet) {\n await this.generateVasWorksheet(arrivalNotice)\n } else {\n await this.createWorksheetDetails(vasWorksheet, WORKSHEET_TYPE.VAS, palletizingOrderVASs)\n }\n }\n\n filterPalletizingWSDs(unloadingWSDs: UnloadingWorksheetDetail[]): UnloadingWorksheetDetail[] {\n return unloadingWSDs.filter((wsd: UnloadingWorksheetDetail) => wsd.palletQty && wsd.palletizingDescription)\n }\n}\n"]}
|