@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
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Worksheet } from './worksheet'
|
|
2
|
+
import { WorksheetDetail } from './worksheet-detail'
|
|
3
|
+
import { WorksheetMovement } from './worksheet-movement'
|
|
4
|
+
import { WarehouseBizplaceOnhandInventory } from './warehouse-bizplace-onhand-inventory'
|
|
5
|
+
|
|
6
|
+
export const entities = [Worksheet, WorksheetDetail, WorksheetMovement, WarehouseBizplaceOnhandInventory]
|
|
7
|
+
|
|
8
|
+
export { Worksheet, WorksheetDetail, WorksheetMovement }
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { ViewColumn, ViewEntity } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
@ViewEntity({
|
|
4
|
+
expression: `
|
|
5
|
+
select d.name as "domainName", b.name as "bizplaceName", src.* from (
|
|
6
|
+
WITH oi as (
|
|
7
|
+
select
|
|
8
|
+
oi.domain_id,
|
|
9
|
+
oi.bizplace_id,
|
|
10
|
+
SUM(oi.release_qty) AS release_qty,
|
|
11
|
+
SUM(oi.release_uom_value) AS release_uom_value,
|
|
12
|
+
oi.batch_id,
|
|
13
|
+
oi.batch_id_ref,
|
|
14
|
+
oi.product_id,
|
|
15
|
+
oi.packing_type,
|
|
16
|
+
oi.packing_size,
|
|
17
|
+
oi.uom
|
|
18
|
+
FROM
|
|
19
|
+
order_inventories oi
|
|
20
|
+
WHERE
|
|
21
|
+
(oi.status = 'PENDING' or oi.status = 'PENDING_RECEIVE' or oi.status = 'PENDING_WORKSHEET' or oi.status = 'PENDING_SPLIT')
|
|
22
|
+
AND oi.batch_id NOTNULL
|
|
23
|
+
AND oi.product_id NOTNULL
|
|
24
|
+
AND oi.packing_type NOTNULL
|
|
25
|
+
AND oi.packing_size NOTNULL
|
|
26
|
+
AND oi.inventory_id IS NULL
|
|
27
|
+
GROUP BY
|
|
28
|
+
oi.domain_id,
|
|
29
|
+
oi.bizplace_id,
|
|
30
|
+
oi.batch_id,
|
|
31
|
+
oi.batch_id_ref,
|
|
32
|
+
oi.product_id,
|
|
33
|
+
oi.packing_type,
|
|
34
|
+
oi.packing_size,
|
|
35
|
+
oi.uom
|
|
36
|
+
)
|
|
37
|
+
-- SINGLE ITEM INVENTORY QUERY
|
|
38
|
+
select
|
|
39
|
+
i.domain_id as "domainId",
|
|
40
|
+
i.bizplace_id as "bizplaceId",
|
|
41
|
+
i.packing_type as "packingType",
|
|
42
|
+
i.packing_size as "packingSize",
|
|
43
|
+
i.uom,
|
|
44
|
+
i.product_id as "productId",
|
|
45
|
+
null as "productBundleId",
|
|
46
|
+
COALESCE(SUM(COALESCE(i.qty, 0)) - SUM(COALESCE(i.locked_qty, 0)) - MAX(COALESCE(oi.release_qty, 0))) AS "remainQty",
|
|
47
|
+
COALESCE(SUM(COALESCE(i.uom_value, 0)) - SUM(COALESCE(i.locked_uom_value, 0)) - MAX(COALESCE(oi.release_uom_value, 0)), 0) AS "remainUomValue",
|
|
48
|
+
COALESCE(sum(COALESCE(i.qty, 0::double precision))) AS "qty",
|
|
49
|
+
COALESCE(sum(COALESCE(i.uom_value, 0::double precision))) AS "uomValue",
|
|
50
|
+
'SINGLE' AS "groupType"
|
|
51
|
+
FROM inventories i
|
|
52
|
+
INNER JOIN locations l2 ON i.location_id = l2.id AND i.domain_id = l2.domain_id AND l2.type NOT IN ('QUARANTINE', 'RESERVE')
|
|
53
|
+
LEFT JOIN oi ON i.batch_id = oi.batch_id AND i.product_id = oi.product_id AND i.packing_type = oi.packing_type AND i.packing_size = oi.packing_size AND i.uom = oi.uom
|
|
54
|
+
WHERE i.status = 'STORED'
|
|
55
|
+
GROUP by
|
|
56
|
+
i.domain_id,
|
|
57
|
+
i.bizplace_id,
|
|
58
|
+
i.product_id,
|
|
59
|
+
i.packing_type,
|
|
60
|
+
i.packing_size,
|
|
61
|
+
i.uom
|
|
62
|
+
union all
|
|
63
|
+
-- BUNDLE ITEM INVENTORY QUERY
|
|
64
|
+
SELECT
|
|
65
|
+
pbs.domain_id as "domainId",
|
|
66
|
+
pbs.bizplace_id as "bizplaceId",
|
|
67
|
+
pb.packing_type as "packingType",
|
|
68
|
+
pb.packing_size as "packingSize",
|
|
69
|
+
'UNIT' AS "uom",
|
|
70
|
+
null as "productId",
|
|
71
|
+
pb.id AS "productBundleId",
|
|
72
|
+
COALESCE(MIN(FLOOR(pbs."availableQty")),0) AS "remainQty",
|
|
73
|
+
COALESCE(MIN(FLOOR(pbs."availableUomValue")),0) AS "remainUomValue",
|
|
74
|
+
COALESCE(MIN(FLOOR(pbs."qty")), 0::double precision) AS "qty",
|
|
75
|
+
COALESCE(MIN(FLOOR(pbs."uomValue")), 0::double precision) AS "uomValue",
|
|
76
|
+
'BUNDLE' AS "groupType"
|
|
77
|
+
FROM product_bundles pb
|
|
78
|
+
INNER JOIN (
|
|
79
|
+
SELECT i.domain_id, i.bizplace_id, pbs.product_id, pbs.product_bundle_id, min(pbs.bundle_qty),
|
|
80
|
+
(SUM(COALESCE(i.qty, 0)) - SUM(COALESCE(i.locked_qty, 0)) - MAX(COALESCE(oi.release_qty, 0))) / min(pbs.bundle_qty) AS "availableQty",
|
|
81
|
+
(SUM(COALESCE(i.uom_value, 0)) - SUM(COALESCE(i.locked_uom_value, 0)) - MAX(COALESCE(oi.release_uom_value, 0))) / min(pbs.bundle_qty) AS "availableUomValue",
|
|
82
|
+
(sum(COALESCE(i.qty, 0::double precision))) / min(pbs.bundle_qty)::double precision AS "qty",
|
|
83
|
+
(sum(COALESCE(i.uom_value, 0::double precision))) / min(pbs.bundle_qty)::double precision AS "uomValue"
|
|
84
|
+
FROM product_bundle_settings pbs
|
|
85
|
+
LEFT JOIN inventories i ON i.product_id = pbs.product_id AND i.status = 'STORED'
|
|
86
|
+
INNER JOIN locations l ON i.location_id = l.id AND i.domain_id = l.domain_id AND l.type NOT IN ('QUARANTINE', 'RESERVE')
|
|
87
|
+
LEFT JOIN oi ON oi.product_id = i.product_id
|
|
88
|
+
GROUP by
|
|
89
|
+
i.domain_id,
|
|
90
|
+
i.bizplace_id,
|
|
91
|
+
pbs.product_id,
|
|
92
|
+
pbs.product_bundle_id
|
|
93
|
+
) pbs ON pbs.product_bundle_id = pb.id
|
|
94
|
+
GROUP BY
|
|
95
|
+
pbs.domain_id,
|
|
96
|
+
pbs.bizplace_id,
|
|
97
|
+
pb.packing_type,
|
|
98
|
+
pb.packing_size,
|
|
99
|
+
pb.name,
|
|
100
|
+
pb.sku,
|
|
101
|
+
pb.id
|
|
102
|
+
)
|
|
103
|
+
AS src
|
|
104
|
+
inner join domains d on d.id = src."domainId"
|
|
105
|
+
inner join bizplaces b on b.id = src."bizplaceId"
|
|
106
|
+
where src."remainQty" >= 0
|
|
107
|
+
and src."qty" > 0
|
|
108
|
+
order by src."domainId"
|
|
109
|
+
`
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
export class WarehouseBizplaceOnhandInventory {
|
|
113
|
+
@ViewColumn()
|
|
114
|
+
domainName: string
|
|
115
|
+
|
|
116
|
+
@ViewColumn()
|
|
117
|
+
bizplaceName: string
|
|
118
|
+
|
|
119
|
+
@ViewColumn()
|
|
120
|
+
domainId: string
|
|
121
|
+
|
|
122
|
+
@ViewColumn()
|
|
123
|
+
bizplaceId: string
|
|
124
|
+
|
|
125
|
+
@ViewColumn()
|
|
126
|
+
packingType: string
|
|
127
|
+
|
|
128
|
+
@ViewColumn()
|
|
129
|
+
packingSize: number
|
|
130
|
+
|
|
131
|
+
@ViewColumn()
|
|
132
|
+
uom: string
|
|
133
|
+
|
|
134
|
+
@ViewColumn()
|
|
135
|
+
productId: string
|
|
136
|
+
|
|
137
|
+
@ViewColumn()
|
|
138
|
+
productBundleId: string
|
|
139
|
+
|
|
140
|
+
@ViewColumn()
|
|
141
|
+
remainQty: number
|
|
142
|
+
|
|
143
|
+
@ViewColumn()
|
|
144
|
+
remainUomValue: number
|
|
145
|
+
|
|
146
|
+
@ViewColumn()
|
|
147
|
+
groupType: string
|
|
148
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { User } from '@things-factory/auth-base'
|
|
2
|
+
import { Bizplace, Worker } from '@things-factory/biz-base'
|
|
3
|
+
import { OrderInventory, OrderProduct, OrderVas } from '@things-factory/sales-base'
|
|
4
|
+
import { Domain } from '@things-factory/shell'
|
|
5
|
+
import { Location } from '@things-factory/warehouse-base'
|
|
6
|
+
import { Column, CreateDateColumn, Entity, Index, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'
|
|
7
|
+
import { Worksheet } from './worksheet'
|
|
8
|
+
|
|
9
|
+
@Entity()
|
|
10
|
+
@Index(
|
|
11
|
+
'ix_worksheet-detail_0',
|
|
12
|
+
(worksheetDetail: WorksheetDetail) => [worksheetDetail.domain, worksheetDetail.bizplace, worksheetDetail.name],
|
|
13
|
+
{ unique: true }
|
|
14
|
+
)
|
|
15
|
+
@Index(
|
|
16
|
+
'ix_worksheet-detail_1',
|
|
17
|
+
(worksheetDetail: WorksheetDetail) => [worksheetDetail.targetInventory]
|
|
18
|
+
)
|
|
19
|
+
@Index(
|
|
20
|
+
'ix_worksheet-detail_2',
|
|
21
|
+
(worksheetDetail: WorksheetDetail) => [worksheetDetail.id],
|
|
22
|
+
{ unique: true }
|
|
23
|
+
)
|
|
24
|
+
export class WorksheetDetail {
|
|
25
|
+
@PrimaryGeneratedColumn('uuid')
|
|
26
|
+
id: string
|
|
27
|
+
|
|
28
|
+
@ManyToOne(type => Domain)
|
|
29
|
+
domain: Domain
|
|
30
|
+
|
|
31
|
+
@ManyToOne(type => Bizplace)
|
|
32
|
+
bizplace: Bizplace
|
|
33
|
+
|
|
34
|
+
@Column()
|
|
35
|
+
name: string
|
|
36
|
+
|
|
37
|
+
@Column({
|
|
38
|
+
nullable: true
|
|
39
|
+
})
|
|
40
|
+
description: string
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @description Sequance for VAS Order
|
|
44
|
+
*/
|
|
45
|
+
@Column({
|
|
46
|
+
nullable: true,
|
|
47
|
+
type: 'smallint',
|
|
48
|
+
default: 0
|
|
49
|
+
})
|
|
50
|
+
seq: number
|
|
51
|
+
|
|
52
|
+
@Column()
|
|
53
|
+
type: string
|
|
54
|
+
|
|
55
|
+
@Column()
|
|
56
|
+
status: string
|
|
57
|
+
|
|
58
|
+
@ManyToOne(type => Worksheet, {
|
|
59
|
+
nullable: false
|
|
60
|
+
})
|
|
61
|
+
worksheet: Worksheet
|
|
62
|
+
|
|
63
|
+
@ManyToOne(type => Worker)
|
|
64
|
+
worker: Worker
|
|
65
|
+
|
|
66
|
+
@ManyToOne(type => OrderProduct)
|
|
67
|
+
targetProduct: OrderProduct
|
|
68
|
+
|
|
69
|
+
@ManyToOne(type => OrderVas)
|
|
70
|
+
targetVas: OrderVas
|
|
71
|
+
|
|
72
|
+
@ManyToOne(type => OrderInventory)
|
|
73
|
+
targetInventory: OrderInventory
|
|
74
|
+
|
|
75
|
+
@ManyToOne(type => Location)
|
|
76
|
+
fromLocation: Location
|
|
77
|
+
|
|
78
|
+
@ManyToOne(type => Location)
|
|
79
|
+
toLocation: Location
|
|
80
|
+
|
|
81
|
+
@Column({
|
|
82
|
+
nullable: true
|
|
83
|
+
})
|
|
84
|
+
remark: string
|
|
85
|
+
|
|
86
|
+
@Column({
|
|
87
|
+
nullable: true
|
|
88
|
+
})
|
|
89
|
+
issue: string
|
|
90
|
+
|
|
91
|
+
@ManyToOne(type => User, {
|
|
92
|
+
nullable: true
|
|
93
|
+
})
|
|
94
|
+
creator: User
|
|
95
|
+
|
|
96
|
+
@ManyToOne(type => User, {
|
|
97
|
+
nullable: true
|
|
98
|
+
})
|
|
99
|
+
updater: User
|
|
100
|
+
|
|
101
|
+
@CreateDateColumn()
|
|
102
|
+
createdAt: Date
|
|
103
|
+
|
|
104
|
+
@UpdateDateColumn()
|
|
105
|
+
updatedAt: Date
|
|
106
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Domain } from '@things-factory/shell'
|
|
2
|
+
import { Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'
|
|
3
|
+
import { Worksheet } from './worksheet'
|
|
4
|
+
|
|
5
|
+
@Entity()
|
|
6
|
+
@Index('ix_worksheet-movement_0', (worksheetMovement: WorksheetMovement) => [worksheetMovement.domain], {
|
|
7
|
+
unique: true
|
|
8
|
+
})
|
|
9
|
+
export class WorksheetMovement {
|
|
10
|
+
@PrimaryGeneratedColumn('uuid')
|
|
11
|
+
id: string
|
|
12
|
+
|
|
13
|
+
@ManyToOne(type => Domain)
|
|
14
|
+
domain: Domain
|
|
15
|
+
|
|
16
|
+
@Column({
|
|
17
|
+
nullable: true
|
|
18
|
+
})
|
|
19
|
+
date: Date
|
|
20
|
+
|
|
21
|
+
@ManyToOne(type => Worksheet)
|
|
22
|
+
worksheet: Worksheet
|
|
23
|
+
|
|
24
|
+
@Column({ nullable: true })
|
|
25
|
+
startTime: Date
|
|
26
|
+
|
|
27
|
+
@Column({ nullable: true })
|
|
28
|
+
endTime: Date
|
|
29
|
+
|
|
30
|
+
@Column({
|
|
31
|
+
nullable: true
|
|
32
|
+
})
|
|
33
|
+
description: string
|
|
34
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { User } from '@things-factory/auth-base'
|
|
2
|
+
import { Bizplace } from '@things-factory/biz-base'
|
|
3
|
+
import {
|
|
4
|
+
ArrivalNotice,
|
|
5
|
+
InventoryCheck,
|
|
6
|
+
ReleaseGood,
|
|
7
|
+
ShippingOrder,
|
|
8
|
+
VasOrder,
|
|
9
|
+
ReturnOrder
|
|
10
|
+
} from '@things-factory/sales-base'
|
|
11
|
+
import { Domain } from '@things-factory/shell'
|
|
12
|
+
import { Location } from '@things-factory/warehouse-base'
|
|
13
|
+
import {
|
|
14
|
+
Column,
|
|
15
|
+
CreateDateColumn,
|
|
16
|
+
Entity,
|
|
17
|
+
Index,
|
|
18
|
+
ManyToOne,
|
|
19
|
+
OneToMany,
|
|
20
|
+
PrimaryGeneratedColumn,
|
|
21
|
+
UpdateDateColumn
|
|
22
|
+
} from 'typeorm'
|
|
23
|
+
import { WorksheetDetail } from './worksheet-detail'
|
|
24
|
+
|
|
25
|
+
@Entity()
|
|
26
|
+
@Index('ix_worksheet_0', (worksheet: Worksheet) => [worksheet.domain, worksheet.bizplace, worksheet.name], {
|
|
27
|
+
unique: true
|
|
28
|
+
})
|
|
29
|
+
@Index('ix_worksheet_1', (worksheet: Worksheet) => [worksheet.arrivalNotice, worksheet.type])
|
|
30
|
+
@Index('ix_worksheet_2', (worksheet: Worksheet) => [worksheet.releaseGood, worksheet.type])
|
|
31
|
+
export class Worksheet {
|
|
32
|
+
@PrimaryGeneratedColumn('uuid')
|
|
33
|
+
id: string
|
|
34
|
+
|
|
35
|
+
@ManyToOne(type => Domain)
|
|
36
|
+
domain: Domain
|
|
37
|
+
|
|
38
|
+
@ManyToOne(type => Bizplace)
|
|
39
|
+
bizplace: Bizplace
|
|
40
|
+
|
|
41
|
+
@ManyToOne(type => ArrivalNotice)
|
|
42
|
+
arrivalNotice: ArrivalNotice
|
|
43
|
+
|
|
44
|
+
@ManyToOne(type => ReleaseGood)
|
|
45
|
+
releaseGood: ReleaseGood
|
|
46
|
+
|
|
47
|
+
@ManyToOne(type => ReturnOrder)
|
|
48
|
+
returnOrder: ReturnOrder
|
|
49
|
+
|
|
50
|
+
@ManyToOne(type => InventoryCheck)
|
|
51
|
+
inventoryCheck: InventoryCheck
|
|
52
|
+
|
|
53
|
+
@ManyToOne(type => VasOrder)
|
|
54
|
+
vasOrder: VasOrder
|
|
55
|
+
|
|
56
|
+
@ManyToOne(type => ShippingOrder)
|
|
57
|
+
shippingOrder: ShippingOrder
|
|
58
|
+
|
|
59
|
+
@ManyToOne(type => Location)
|
|
60
|
+
bufferLocation: Location
|
|
61
|
+
|
|
62
|
+
@Column()
|
|
63
|
+
name: string
|
|
64
|
+
|
|
65
|
+
@Column({ nullable: true })
|
|
66
|
+
description: string
|
|
67
|
+
|
|
68
|
+
@Column({ nullable: true })
|
|
69
|
+
taskNo: string
|
|
70
|
+
|
|
71
|
+
@Column()
|
|
72
|
+
type: string
|
|
73
|
+
|
|
74
|
+
@OneToMany(type => WorksheetDetail, worksheetDetail => worksheetDetail.worksheet)
|
|
75
|
+
worksheetDetails: WorksheetDetail[]
|
|
76
|
+
|
|
77
|
+
@Column()
|
|
78
|
+
status: string
|
|
79
|
+
|
|
80
|
+
@ManyToOne(type => User)
|
|
81
|
+
assignee: User
|
|
82
|
+
|
|
83
|
+
@Column({ nullable: true })
|
|
84
|
+
startedAt: Date
|
|
85
|
+
|
|
86
|
+
@Column({ nullable: true })
|
|
87
|
+
endedAt: Date
|
|
88
|
+
|
|
89
|
+
@ManyToOne(type => User, { nullable: true })
|
|
90
|
+
creator: User
|
|
91
|
+
|
|
92
|
+
@ManyToOne(type => User, { nullable: true })
|
|
93
|
+
updater: User
|
|
94
|
+
|
|
95
|
+
@CreateDateColumn()
|
|
96
|
+
createdAt: Date
|
|
97
|
+
|
|
98
|
+
@UpdateDateColumn()
|
|
99
|
+
updatedAt: Date
|
|
100
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as Worksheet from './worksheet'
|
|
2
|
+
import * as WorksheetDetail from './worksheet-detail'
|
|
3
|
+
import * as WorksheetMovement from './worksheet-movement'
|
|
4
|
+
import * as Pallet from './pallet'
|
|
5
|
+
|
|
6
|
+
export const queries = [Worksheet.Query, WorksheetDetail.Query, WorksheetMovement.Query]
|
|
7
|
+
|
|
8
|
+
export const mutations = [Worksheet.Mutation, WorksheetDetail.Mutation, WorksheetMovement.Mutation, Pallet.Mutation]
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { EntityManager, In } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Bizplace } from '@things-factory/biz-base'
|
|
5
|
+
import { ReleaseGood } from '@things-factory/sales-base'
|
|
6
|
+
import { Domain } from '@things-factory/shell'
|
|
7
|
+
import { Pallet, PalletHistory } from '@things-factory/warehouse-base'
|
|
8
|
+
|
|
9
|
+
export const palletOutbound = {
|
|
10
|
+
async palletOutbound(_: any, { refOrderNo, patches }, context: ResolverContext) {
|
|
11
|
+
const { tx, domain, user, bizplace } = context.state
|
|
12
|
+
|
|
13
|
+
const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
|
|
14
|
+
where: { name: refOrderNo },
|
|
15
|
+
relations: ['bizplace']
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
let palletPatches: Pallet[] =
|
|
19
|
+
patches.length > 0
|
|
20
|
+
? await tx.getRepository(Pallet).find({
|
|
21
|
+
where: { id: In(patches.map(pallet => pallet.id)) },
|
|
22
|
+
relations: ['owner', 'holder', 'domain', 'creator', 'updater']
|
|
23
|
+
})
|
|
24
|
+
: []
|
|
25
|
+
|
|
26
|
+
let releasedPallets: Pallet[] = await tx.getRepository(Pallet).find({
|
|
27
|
+
where: { refOrderNo: refOrderNo },
|
|
28
|
+
relations: ['owner', 'holder', 'domain', 'creator', 'updater']
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
// get added pallets
|
|
32
|
+
let addedPallets: Pallet[] = palletPatches
|
|
33
|
+
.filter(e => e.refOrderNo == null)
|
|
34
|
+
.map(pallet => {
|
|
35
|
+
return {
|
|
36
|
+
...pallet,
|
|
37
|
+
holder: releaseGood.bizplace,
|
|
38
|
+
refOrderNo: refOrderNo,
|
|
39
|
+
seq: pallet.seq + 1
|
|
40
|
+
}
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
// get removed pallets
|
|
44
|
+
let removedPallets: Pallet[] = releasedPallets
|
|
45
|
+
.filter(e => !palletPatches.find(patch => patch.id == e.id))
|
|
46
|
+
.map(pallet => {
|
|
47
|
+
return {
|
|
48
|
+
...pallet,
|
|
49
|
+
holder: pallet.owner,
|
|
50
|
+
refOrderNo: null,
|
|
51
|
+
seq: pallet.seq - 1
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
// Add into pallet history for outbound
|
|
56
|
+
await Promise.all(
|
|
57
|
+
addedPallets.map(async pallet => {
|
|
58
|
+
let newHistory = {
|
|
59
|
+
...pallet,
|
|
60
|
+
pallet: pallet,
|
|
61
|
+
domain: domain,
|
|
62
|
+
creator: user,
|
|
63
|
+
updater: user,
|
|
64
|
+
transactionType: 'OUTBOUND'
|
|
65
|
+
}
|
|
66
|
+
delete newHistory.id
|
|
67
|
+
|
|
68
|
+
await tx.getRepository(PalletHistory).save({
|
|
69
|
+
...newHistory
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
// Roll back pallet history
|
|
75
|
+
await Promise.all(
|
|
76
|
+
removedPallets.map(async item => {
|
|
77
|
+
tx.getRepository(PalletHistory).delete({ name: item.name, seq: item.seq + 1 })
|
|
78
|
+
})
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
// Update Pallet data
|
|
82
|
+
await Promise.all(
|
|
83
|
+
[...addedPallets, ...removedPallets].map(async item => {
|
|
84
|
+
await tx.getRepository(Pallet).save({
|
|
85
|
+
...item
|
|
86
|
+
})
|
|
87
|
+
})
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
return true
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { SelectQueryBuilder } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { ORDER_INVENTORY_STATUS } from '@things-factory/sales-base'
|
|
4
|
+
import { getRepository } from '@things-factory/shell'
|
|
5
|
+
import { InventoryChange } from '@things-factory/warehouse-base'
|
|
6
|
+
|
|
7
|
+
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
|
|
8
|
+
import { Worksheet, WorksheetDetail } from '../../../entities'
|
|
9
|
+
|
|
10
|
+
export const batchPickingWorksheetResolver = {
|
|
11
|
+
async batchPickingWorksheet(_: any, { taskNo, locationSortingRules }, context: ResolverContext) {
|
|
12
|
+
const { domain } = context.state
|
|
13
|
+
const worksheet: Worksheet = await getRepository(Worksheet).findOne({
|
|
14
|
+
where: {
|
|
15
|
+
domain: { id: domain.id },
|
|
16
|
+
taskNo,
|
|
17
|
+
type: WORKSHEET_TYPE.BATCH_PICKING,
|
|
18
|
+
status: WORKSHEET_STATUS.EXECUTING
|
|
19
|
+
},
|
|
20
|
+
relations: ['bizplace', 'bizplace.domain']
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
if (!worksheet) throw new Error(`Couldn't find picking worksheet - (${taskNo})`)
|
|
24
|
+
|
|
25
|
+
const qb: SelectQueryBuilder<WorksheetDetail> = getRepository(WorksheetDetail).createQueryBuilder('WSD')
|
|
26
|
+
qb.select('INV.id', 'inventoryId')
|
|
27
|
+
.addSelect('SUM(T_INV.releaseQty)', 'releaseQty')
|
|
28
|
+
.addSelect('SUM(T_INV.pickedQty)', 'pickedQty')
|
|
29
|
+
.addSelect('"INV".pallet_id', 'palletId')
|
|
30
|
+
.addSelect('"INV".carton_id', 'cartonId')
|
|
31
|
+
.addSelect('"INV".expiration_date', 'expirationDate')
|
|
32
|
+
.addSelect('"INV".batch_id', 'batchId')
|
|
33
|
+
.addSelect('"PROD".id', 'productId')
|
|
34
|
+
.addSelect('"PROD".name', 'productName')
|
|
35
|
+
.addSelect('"PROD".sku', 'productSku')
|
|
36
|
+
.addSelect('"PROD".description', 'productDescription')
|
|
37
|
+
.addSelect('"INV".qty', 'qty')
|
|
38
|
+
.addSelect('"INV".packing_type', 'packingType')
|
|
39
|
+
.addSelect('"INV".packing_size', 'packingSize')
|
|
40
|
+
.addSelect('"T_INV".batch_id', 'targetBatchId')
|
|
41
|
+
.addSelect('"T_INV".packing_type', 'targetPackingType')
|
|
42
|
+
.addSelect('LOC.name', 'locationName')
|
|
43
|
+
.addSelect('LOC.zone', 'zone')
|
|
44
|
+
.addSelect('LOC.row', 'row')
|
|
45
|
+
.addSelect('LOC.column', 'column')
|
|
46
|
+
.addSelect('LOC.shelf', 'shelf')
|
|
47
|
+
.addSelect('BIN_LOC.name', 'binLocationName')
|
|
48
|
+
.addSelect('WSD.status', 'status')
|
|
49
|
+
.leftJoin('WSD.targetInventory', 'T_INV')
|
|
50
|
+
.leftJoin('T_INV.inventory', 'INV')
|
|
51
|
+
.leftJoin('T_INV.product', 'PROD')
|
|
52
|
+
.leftJoin('T_INV.binLocation', 'BIN_LOC')
|
|
53
|
+
.leftJoin('INV.location', 'LOC')
|
|
54
|
+
.where('"WSD"."worksheet_id" = :worksheetId', { worksheetId: worksheet.id })
|
|
55
|
+
.andWhere('"WSD"."status" != :status', { status: WORKSHEET_STATUS.REPLACED })
|
|
56
|
+
.andWhere('"T_INV"."status" != :t_invstatus', { t_invstatus: ORDER_INVENTORY_STATUS.CANCELLED })
|
|
57
|
+
.groupBy('"INV".id')
|
|
58
|
+
.addGroupBy('"INV".pallet_id')
|
|
59
|
+
.addGroupBy('"INV".carton_id')
|
|
60
|
+
.addGroupBy('"INV".expiration_date')
|
|
61
|
+
.addGroupBy('"INV".batch_id')
|
|
62
|
+
.addGroupBy('"INV".qty')
|
|
63
|
+
.addGroupBy('"INV".packing_type')
|
|
64
|
+
.addGroupBy('"INV".packing_size')
|
|
65
|
+
.addGroupBy('"PROD".id')
|
|
66
|
+
.addGroupBy('"PROD".name')
|
|
67
|
+
.addGroupBy('"PROD".sku')
|
|
68
|
+
.addGroupBy('"PROD".description')
|
|
69
|
+
.addGroupBy('"T_INV".batch_id')
|
|
70
|
+
.addGroupBy('"T_INV".packing_type')
|
|
71
|
+
.addGroupBy('BIN_LOC.name')
|
|
72
|
+
.addGroupBy('LOC.name')
|
|
73
|
+
.addGroupBy('LOC.zone')
|
|
74
|
+
.addGroupBy('LOC.column')
|
|
75
|
+
.addGroupBy('LOC.row')
|
|
76
|
+
.addGroupBy('LOC.shelf')
|
|
77
|
+
.addGroupBy('WSD.status')
|
|
78
|
+
|
|
79
|
+
if (locationSortingRules?.length > 0) {
|
|
80
|
+
locationSortingRules.forEach((rule: { name: string; desc: boolean }) => {
|
|
81
|
+
qb.addOrderBy(`LOC.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const items: any[] = await qb.getRawMany()
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
worksheetInfo: {
|
|
89
|
+
startedAt: worksheet.startedAt,
|
|
90
|
+
bizplaceName: worksheet.bizplace.name,
|
|
91
|
+
partnerDomainId: worksheet.bizplace?.domain.id
|
|
92
|
+
},
|
|
93
|
+
worksheetDetailInfos: items.map(async (item: any) => {
|
|
94
|
+
const inventoryChangesCount: number = await getRepository(InventoryChange).count({
|
|
95
|
+
where: {
|
|
96
|
+
inventory: { id: item.inventoryId },
|
|
97
|
+
status: 'PENDING',
|
|
98
|
+
transactionType: 'MISSING'
|
|
99
|
+
},
|
|
100
|
+
relations: ['inventory', 'product']
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
palletId: item?.palletId,
|
|
105
|
+
cartonId: item?.cartonId,
|
|
106
|
+
batchId: item?.batchId,
|
|
107
|
+
product: {
|
|
108
|
+
id: item?.productId,
|
|
109
|
+
name: item?.productName,
|
|
110
|
+
description: item?.productDescription,
|
|
111
|
+
sku: item?.productSku
|
|
112
|
+
},
|
|
113
|
+
qty: item?.qty,
|
|
114
|
+
releaseQty: item.releaseQty,
|
|
115
|
+
hasMissingInventoryChanges: inventoryChangesCount > 0 ? true : false,
|
|
116
|
+
status: item.status,
|
|
117
|
+
pickedQty: item.pickedQty,
|
|
118
|
+
packingType: item?.packingType,
|
|
119
|
+
packingSize: item?.packingSize,
|
|
120
|
+
expirationDate: item?.expirationDate,
|
|
121
|
+
location: { name: item?.locationName },
|
|
122
|
+
binLocation: { name: item?.binLocationName },
|
|
123
|
+
relatedOrderInv: {
|
|
124
|
+
batchId: item?.targetBatchId,
|
|
125
|
+
packingType: item?.targetPackingType,
|
|
126
|
+
product: {
|
|
127
|
+
id: item?.productId,
|
|
128
|
+
name: item?.productName,
|
|
129
|
+
description: item?.productDescription,
|
|
130
|
+
sku: item?.productSku
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
})
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DraftReleaseGood, ORDER_STATUS } from '@things-factory/sales-base'
|
|
2
|
+
|
|
3
|
+
export const cancelDraftReleaseOrder = {
|
|
4
|
+
async cancelDraftReleaseOrder(_: any, { name }, context: ResolverContext) {
|
|
5
|
+
const { tx, domain, user } = context.state
|
|
6
|
+
|
|
7
|
+
const foundDRO: DraftReleaseGood = await tx.getRepository(DraftReleaseGood).findOne({
|
|
8
|
+
where: { domain: { id: domain.id }, name }
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
if (foundDRO) {
|
|
12
|
+
await tx.getRepository(DraftReleaseGood).save({
|
|
13
|
+
...foundDRO,
|
|
14
|
+
status: ORDER_STATUS.CANCELLED,
|
|
15
|
+
updater: user
|
|
16
|
+
})
|
|
17
|
+
}
|
|
18
|
+
return
|
|
19
|
+
}
|
|
20
|
+
}
|