@things-factory/worksheet-base 8.0.0-beta.9 → 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,36 @@
|
|
|
1
|
+
import { SelectQueryBuilder } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { OrderInventory as OrderInventoryEntity, ReleaseGood as ReleaseGoodEntity } from '@things-factory/sales-base'
|
|
4
|
+
import { Domain } from '@things-factory/shell'
|
|
5
|
+
|
|
6
|
+
import { Worksheet as WorksheetEntity, WorksheetDetail as WorksheetDetailEntity } from '../../../entities'
|
|
7
|
+
|
|
8
|
+
export const findReleaseOrdersByTaskNoResolver = {
|
|
9
|
+
async findReleaseOrdersByTaskNo(_: any, { taskNo }, context: ResolverContext) {
|
|
10
|
+
const { domain, tx } = context.state
|
|
11
|
+
let task = await tx.getRepository(WorksheetEntity).findOne({
|
|
12
|
+
where: { taskNo }
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
if (!task) throw new Error('Unable to find task no.')
|
|
16
|
+
|
|
17
|
+
const qb: SelectQueryBuilder<WorksheetEntity> = tx
|
|
18
|
+
.getRepository(WorksheetEntity)
|
|
19
|
+
.createQueryBuilder('ws')
|
|
20
|
+
.select('rg.id as id')
|
|
21
|
+
.addSelect('rg.name as name')
|
|
22
|
+
.addSelect('rg.status as status')
|
|
23
|
+
.innerJoin(Domain, 'domain', 'ws.domain_id = domain.id')
|
|
24
|
+
.innerJoin(WorksheetDetailEntity, 'wsd', 'ws.id = wsd.worksheet_id')
|
|
25
|
+
.innerJoin(OrderInventoryEntity, 'oi', 'oi.id = wsd.target_inventory_id')
|
|
26
|
+
.innerJoin(ReleaseGoodEntity, 'rg', 'rg.id = oi.release_good_id')
|
|
27
|
+
.where('domain.id = :domainId', { domainId: domain.id })
|
|
28
|
+
.andWhere('ws.taskNo = :taskNo', { taskNo: taskNo })
|
|
29
|
+
.groupBy('rg.id')
|
|
30
|
+
.addGroupBy('rg.name')
|
|
31
|
+
.addGroupBy('rg.status')
|
|
32
|
+
|
|
33
|
+
const releaseGoods: ReleaseGoodEntity[] = await qb.getRawMany()
|
|
34
|
+
return { releaseGoods, taskNo }
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SelectQueryBuilder } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
//@ts-ignore
|
|
4
|
+
import { ReleaseGood as ReleaseGoodEntity, Worksheet as WorksheetEntity } from '@things-factory/sales-base'
|
|
5
|
+
|
|
6
|
+
export const findReleaseOrderByWorksheetNoResolver = {
|
|
7
|
+
async findReleaseOrderByWorksheetNo(_: any, { batchWorksheetNo }, context: ResolverContext) {
|
|
8
|
+
const { domain, tx } = context.state
|
|
9
|
+
if (!batchWorksheetNo) throw new Error('Unable to find worksheet no.')
|
|
10
|
+
|
|
11
|
+
const qb: SelectQueryBuilder<WorksheetEntity> = tx
|
|
12
|
+
.getRepository(WorksheetEntity)
|
|
13
|
+
.createQueryBuilder('ws')
|
|
14
|
+
.select('rg.name')
|
|
15
|
+
.addSelect('rg.status')
|
|
16
|
+
.innerJoin('ws.domain', 'domain')
|
|
17
|
+
.innerJoin('ws.worksheetDetail', 'wsd')
|
|
18
|
+
.innerJoin('wsd.targetInventory', 'oi')
|
|
19
|
+
.innerJoin('oi.releaseGood', 'rg')
|
|
20
|
+
.where('ws.domain_id = :domainId', { domainId: domain.id })
|
|
21
|
+
.andWhere('ws.name = :worksheetNo', { worksheetNo: batchWorksheetNo })
|
|
22
|
+
.groupBy('rg.id')
|
|
23
|
+
.addGroupBy('rg.name')
|
|
24
|
+
.addGroupBy('rg.status')
|
|
25
|
+
|
|
26
|
+
const releaseGoods: ReleaseGoodEntity[] = await qb.getRawMany()
|
|
27
|
+
return releaseGoods
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { SelectQueryBuilder } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
ORDER_INVENTORY_STATUS,
|
|
5
|
+
ORDER_STATUS,
|
|
6
|
+
OrderInventory as OrderInventoryEntity,
|
|
7
|
+
ReleaseGood as ReleaseGoodEntity
|
|
8
|
+
} from '@things-factory/sales-base'
|
|
9
|
+
import { Domain } from '@things-factory/shell'
|
|
10
|
+
import { Location } from '@things-factory/warehouse-base'
|
|
11
|
+
|
|
12
|
+
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
|
|
13
|
+
import { Worksheet as WorksheetEntity, WorksheetDetail as WorksheetDetailEntity } from '../../../entities'
|
|
14
|
+
|
|
15
|
+
export const findSortingReleaseOrdersByTaskNoResolver = {
|
|
16
|
+
async findSortingReleaseOrdersByTaskNo(_: any, { taskNo }, context: ResolverContext) {
|
|
17
|
+
const { domain, tx } = context.state
|
|
18
|
+
let task = await tx.getRepository(WorksheetEntity).findOne({
|
|
19
|
+
where: { taskNo, status: WORKSHEET_STATUS.EXECUTING, type: WORKSHEET_TYPE.SORTING }
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
// Find Task based on Bin
|
|
23
|
+
if (!task) {
|
|
24
|
+
const binLocation: Location = await tx.getRepository(Location).findOne({
|
|
25
|
+
where: { domain: { id: domain.id }, name: taskNo }
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
const qb: SelectQueryBuilder<OrderInventoryEntity> = tx
|
|
29
|
+
.getRepository(OrderInventoryEntity)
|
|
30
|
+
.createQueryBuilder('orderInventory')
|
|
31
|
+
|
|
32
|
+
qb.innerJoinAndSelect('orderInventory.releaseGood', 'releaseGood')
|
|
33
|
+
.innerJoinAndSelect('worksheets', 'ws', `orderInventory.ref_worksheet_id = ws.id AND ws.type = 'BATCH_PICKING'`)
|
|
34
|
+
.innerJoinAndSelect('worksheets', 'ws2', `ws2.task_no = ws.task_no AND ws2.type = 'SORTING'`)
|
|
35
|
+
.innerJoinAndSelect('releaseGood.bizplace', 'bizplace')
|
|
36
|
+
.innerJoinAndSelect('bizplace.domain', 'domain')
|
|
37
|
+
.where('orderInventory.domain_id = :domainId', { domainId: domain.id })
|
|
38
|
+
.andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
|
|
39
|
+
orderInventoryStatus: [ORDER_INVENTORY_STATUS.SORTING]
|
|
40
|
+
})
|
|
41
|
+
.andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })
|
|
42
|
+
.andWhere('releaseGood.status = :status', { status: ORDER_STATUS.SORTING })
|
|
43
|
+
|
|
44
|
+
const orderInventoryByBin = await qb.getRawOne()
|
|
45
|
+
if (orderInventoryByBin?.releaseGood_id) {
|
|
46
|
+
taskNo = orderInventoryByBin.ws_task_no
|
|
47
|
+
task = await tx.getRepository(WorksheetEntity).findOne({
|
|
48
|
+
where: { taskNo, status: WORKSHEET_STATUS.EXECUTING, type: WORKSHEET_TYPE.SORTING }
|
|
49
|
+
})
|
|
50
|
+
} else {
|
|
51
|
+
throw new Error(`Bin do not have any batch picking order.`)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (!task) throw new Error('Unable to find task no.')
|
|
56
|
+
|
|
57
|
+
const qb: SelectQueryBuilder<WorksheetEntity> = tx
|
|
58
|
+
.getRepository(WorksheetEntity)
|
|
59
|
+
.createQueryBuilder('ws')
|
|
60
|
+
.select('rg.id as id')
|
|
61
|
+
.addSelect('rg.name as name')
|
|
62
|
+
.addSelect('rg.status as status')
|
|
63
|
+
.innerJoin(Domain, 'domain', 'ws.domain_id = domain.id')
|
|
64
|
+
.innerJoin(WorksheetDetailEntity, 'wsd', 'ws.id = wsd.worksheet_id')
|
|
65
|
+
.innerJoin(OrderInventoryEntity, 'oi', 'oi.id = wsd.target_inventory_id')
|
|
66
|
+
.innerJoin(ReleaseGoodEntity, 'rg', 'rg.id = oi.release_good_id')
|
|
67
|
+
.where('domain.id = :domainId', { domainId: domain.id })
|
|
68
|
+
.andWhere('ws.taskNo = :taskNo', { taskNo: taskNo })
|
|
69
|
+
.andWhere('ws.type = :worksheetType', { worksheetType: WORKSHEET_TYPE.SORTING })
|
|
70
|
+
.andWhere('ws.status = :worksheetStatus', { worksheetStatus: WORKSHEET_STATUS.EXECUTING })
|
|
71
|
+
.andWhere('rg.status = :roStatus', { roStatus: ORDER_STATUS.SORTING })
|
|
72
|
+
.groupBy('rg.id')
|
|
73
|
+
.addGroupBy('rg.name')
|
|
74
|
+
.addGroupBy('rg.status')
|
|
75
|
+
.orderBy('rg.createdAt', 'ASC')
|
|
76
|
+
|
|
77
|
+
const releaseGoods: ReleaseGoodEntity[] = await qb.getRawMany()
|
|
78
|
+
return { releaseGoods, taskNo }
|
|
79
|
+
}
|
|
80
|
+
}
|
package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { ArrivalNotice } from '@things-factory/sales-base'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
|
|
7
|
+
import { PickingWorksheetController, UnloadingWorksheetController } from '../../../../controllers'
|
|
8
|
+
import { Worksheet } from '../../../../entities'
|
|
9
|
+
|
|
10
|
+
export const generateArrivalNoticeWorksheetResolver = {
|
|
11
|
+
async generateArrivalNoticeWorksheet(_: any, { arrivalNoticeNos, bufferLocation }, context: ResolverContext) {
|
|
12
|
+
const { tx, domain, user } = context.state
|
|
13
|
+
/* REVIEW ME --
|
|
14
|
+
return await generateArrivalNoticeWorksheet(tx, domain, user, arrivalNoticeNo, bufferLocation)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
await Promise.all(
|
|
18
|
+
arrivalNoticeNos.map(async arrivalNoticeNo => {
|
|
19
|
+
try {
|
|
20
|
+
let unloadingWorksheet = await generateUnloadingWorksheet(tx, domain, user, arrivalNoticeNo, bufferLocation)
|
|
21
|
+
|
|
22
|
+
if (!unloadingWorksheet.arrivalNotice?.id) {
|
|
23
|
+
unloadingWorksheet = await tx.getRepository(Worksheet).findOne({
|
|
24
|
+
where: { id: unloadingWorksheet.id },
|
|
25
|
+
relations: ['arrivalNotice']
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
let arrivalNotice: ArrivalNotice = unloadingWorksheet.arrivalNotice
|
|
30
|
+
const crossDocking: boolean = unloadingWorksheet.arrivalNotice.crossDocking
|
|
31
|
+
|
|
32
|
+
if (crossDocking) {
|
|
33
|
+
arrivalNotice = await tx
|
|
34
|
+
.getRepository(ArrivalNotice)
|
|
35
|
+
.findOne({ where: { domain: { id: domain.id }, name: arrivalNoticeNo }, relations: ['releaseGood'] })
|
|
36
|
+
|
|
37
|
+
const releaseGoodNo: string = arrivalNotice.releaseGood.name
|
|
38
|
+
const pickingWSCtrl: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
39
|
+
await pickingWSCtrl.generatePickingWorksheet(releaseGoodNo)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const vasWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
|
|
43
|
+
where: { domain: { id: domain.id }, arrivalNotice: { id: arrivalNotice.id } }
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
return { unloadingWorksheet, vasWorksheet }
|
|
47
|
+
} catch (e) {
|
|
48
|
+
throw new Error(e)
|
|
49
|
+
}
|
|
50
|
+
})
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export async function generateArrivalNoticeWorksheet(
|
|
56
|
+
tx: EntityManager,
|
|
57
|
+
domain: Domain,
|
|
58
|
+
user: User,
|
|
59
|
+
arrivalNoticeNo: string,
|
|
60
|
+
bufferLocation: { id: string }
|
|
61
|
+
) {
|
|
62
|
+
let unloadingWorksheet = await generateUnloadingWorksheet(tx, domain, user, arrivalNoticeNo, bufferLocation)
|
|
63
|
+
|
|
64
|
+
if (!unloadingWorksheet.arrivalNotice?.id) {
|
|
65
|
+
unloadingWorksheet = await tx.getRepository(Worksheet).findOne({
|
|
66
|
+
where: { id: unloadingWorksheet.id },
|
|
67
|
+
relations: ['arrivalNotice']
|
|
68
|
+
})
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
let arrivalNotice: ArrivalNotice = unloadingWorksheet.arrivalNotice
|
|
72
|
+
const crossDocking: boolean = unloadingWorksheet.arrivalNotice.crossDocking
|
|
73
|
+
|
|
74
|
+
if (crossDocking) {
|
|
75
|
+
arrivalNotice = await tx
|
|
76
|
+
.getRepository(ArrivalNotice)
|
|
77
|
+
.findOne({ where: { domain: { id: domain.id }, name: arrivalNoticeNo }, relations: ['releaseGood'] })
|
|
78
|
+
|
|
79
|
+
const releaseGoodNo: string = arrivalNotice.releaseGood.name
|
|
80
|
+
const pickingWSCtrl: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
81
|
+
await pickingWSCtrl.generatePickingWorksheet(releaseGoodNo)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const vasWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
|
|
85
|
+
where: { domain: { id: domain.id }, arrivalNotice: { id: arrivalNotice.id } }
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
return { unloadingWorksheet, vasWorksheet }
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
async function generateUnloadingWorksheet(
|
|
92
|
+
tx: EntityManager,
|
|
93
|
+
domain: Domain,
|
|
94
|
+
user: User,
|
|
95
|
+
arrivalNoticeNo: string,
|
|
96
|
+
bufferLocation: { id: string }
|
|
97
|
+
): Promise<Worksheet> {
|
|
98
|
+
const worksheetController: UnloadingWorksheetController = new UnloadingWorksheetController(tx, domain, user)
|
|
99
|
+
return await worksheetController.generateUnloadingWorksheet(arrivalNoticeNo, bufferLocation.id)
|
|
100
|
+
}
|
package/server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
//@ts-ignore
|
|
5
|
+
import { GenerateBatchPickInfo } from '@things-factory/sales-base'
|
|
6
|
+
import { Domain } from '@things-factory/shell'
|
|
7
|
+
|
|
8
|
+
import { PickingWorksheetController } from '../../../../controllers/'
|
|
9
|
+
import { Worksheet } from '../../../../entities'
|
|
10
|
+
|
|
11
|
+
export const generateBatchPickingWorksheetResolver = {
|
|
12
|
+
async generateBatchPickingWorksheet(_: any, { releaseGoodWithBiz }, context: ResolverContext) {
|
|
13
|
+
const { tx, domain, user } = context.state
|
|
14
|
+
return await generateBatchPickingWorksheet(tx, domain, user, releaseGoodWithBiz)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function generateBatchPickingWorksheet(
|
|
19
|
+
tx: EntityManager,
|
|
20
|
+
domain: Domain,
|
|
21
|
+
user: User,
|
|
22
|
+
releaseGoodWithBiz: [[GenerateBatchPickInfo]]
|
|
23
|
+
): Promise<Worksheet[]> {
|
|
24
|
+
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
25
|
+
return await worksheetController.generateBatchPickingWorksheet(releaseGoodWithBiz)
|
|
26
|
+
}
|
package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { OrderInventory } from '@things-factory/sales-base'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
|
|
7
|
+
import { CycleCountWorksheetController } from '../../../../controllers'
|
|
8
|
+
import { Worksheet } from '../../../../entities'
|
|
9
|
+
|
|
10
|
+
export const generateCycleCountWorksheetResolver = {
|
|
11
|
+
async generateCycleCountWorksheet(
|
|
12
|
+
_: any,
|
|
13
|
+
{ executionDate, customerId, orderInventoryIds, orderInventories, limit },
|
|
14
|
+
context: any
|
|
15
|
+
) {
|
|
16
|
+
const { tx, domain, user } = context.state
|
|
17
|
+
|
|
18
|
+
const cycleCountWorksheet: Worksheet = await generateCycleCountWorksheet(
|
|
19
|
+
tx,
|
|
20
|
+
domain,
|
|
21
|
+
user,
|
|
22
|
+
executionDate,
|
|
23
|
+
customerId,
|
|
24
|
+
orderInventoryIds,
|
|
25
|
+
orderInventories,
|
|
26
|
+
limit
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
return cycleCountWorksheet
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export async function generateCycleCountWorksheet(
|
|
34
|
+
tx: EntityManager,
|
|
35
|
+
domain: Domain,
|
|
36
|
+
user: User,
|
|
37
|
+
executionDate: string,
|
|
38
|
+
customerId: string,
|
|
39
|
+
orderInventoryIds: string[] = [],
|
|
40
|
+
orderInventories: OrderInventory[],
|
|
41
|
+
limit: number
|
|
42
|
+
): Promise<Worksheet> {
|
|
43
|
+
const worksheetController: CycleCountWorksheetController = new CycleCountWorksheetController(tx, domain, user)
|
|
44
|
+
return await worksheetController.generateCycleCountWorksheet(
|
|
45
|
+
executionDate,
|
|
46
|
+
customerId,
|
|
47
|
+
orderInventoryIds,
|
|
48
|
+
orderInventories,
|
|
49
|
+
limit
|
|
50
|
+
)
|
|
51
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { generatePickingWorksheet } from './generate-release-good-worksheet'
|
|
4
|
+
|
|
5
|
+
export const generateMultipleReleaseGoodWorksheetResolver = {
|
|
6
|
+
async generateMultipleReleaseGoodWorksheet(_: any, { releaseGoods }, context: ResolverContext) {
|
|
7
|
+
const { tx, domain, user } = context.state
|
|
8
|
+
|
|
9
|
+
for (let idx = 0; idx < releaseGoods.length; idx++) {
|
|
10
|
+
await getManager().transaction(async txMgr => {
|
|
11
|
+
await generatePickingWorksheet(txMgr, domain, user, releaseGoods[idx].name, releaseGoods[idx].status)
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return true
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { ReturnOrder } from '@things-factory/sales-base'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
import { Inventory } from '@things-factory/warehouse-base'
|
|
7
|
+
|
|
8
|
+
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../../constants'
|
|
9
|
+
import { PutawayReturningWorksheetController } from '../../../../controllers'
|
|
10
|
+
import { Worksheet, WorksheetDetail } from '../../../../entities'
|
|
11
|
+
|
|
12
|
+
export const generatePartialPutawayReturnWorksheetResolver = {
|
|
13
|
+
async generatePartialPutawayReturnWorksheet(
|
|
14
|
+
_: any,
|
|
15
|
+
{ returnOrderNo, inventories },
|
|
16
|
+
context: ResolverContext
|
|
17
|
+
): Promise<void> {
|
|
18
|
+
const { tx, domain, user } = context.state
|
|
19
|
+
let worksheet: Worksheet = await generatePartialPutawayReturnWorksheet(tx, domain, user, returnOrderNo, inventories)
|
|
20
|
+
|
|
21
|
+
if (!worksheet?.returnOrder?.id) {
|
|
22
|
+
worksheet = await tx.getRepository(Worksheet).findOne({
|
|
23
|
+
where: { id: worksheet.id },
|
|
24
|
+
relations: ['returnOrder']
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const returnOrder: ReturnOrder = worksheet.returnOrder
|
|
29
|
+
const unloadingWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
|
|
30
|
+
where: { returnOrder: { id: returnOrder.id }, type: WORKSHEET_TYPE.UNLOADING_RETURN },
|
|
31
|
+
relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
const remainPalletCnt: number = await tx.getRepository(Inventory).count({
|
|
35
|
+
where: {
|
|
36
|
+
domain: { id: domain.id },
|
|
37
|
+
refOrderId: returnOrder.id,
|
|
38
|
+
status: WORKSHEET_STATUS.PARTIALLY_UNLOADED
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
const wsdStatus: string = remainPalletCnt >= 0 ? WORKSHEET_STATUS.PARTIALLY_UNLOADED : WORKSHEET_STATUS.EXECUTING
|
|
42
|
+
|
|
43
|
+
const worksheetDetails: WorksheetDetail[] = unloadingWorksheet.worksheetDetails
|
|
44
|
+
// const nonStartedWorksheetDetails: WorksheetDetail[] = worksheetDetails
|
|
45
|
+
// .filter((wsd: WorksheetDetail) => wsd.targetInventory?.inventory?.status !== INVENTORY_STATUS.PARTIALLY_UNLOADED)
|
|
46
|
+
// .map((wsd: WorksheetDetail) => {
|
|
47
|
+
// wsd.status = wsdStatus
|
|
48
|
+
// wsd.updater = user
|
|
49
|
+
// return wsd
|
|
50
|
+
// })
|
|
51
|
+
|
|
52
|
+
// await tx.getRepository(WorksheetDetail).save(nonStartedWorksheetDetails)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export async function generatePartialPutawayReturnWorksheet(
|
|
57
|
+
tx: EntityManager,
|
|
58
|
+
domain: Domain,
|
|
59
|
+
user: User,
|
|
60
|
+
returnOrderNo: string,
|
|
61
|
+
inventories: Inventory[]
|
|
62
|
+
): Promise<Worksheet> {
|
|
63
|
+
const worksheetController: PutawayReturningWorksheetController = new PutawayReturningWorksheetController(
|
|
64
|
+
tx,
|
|
65
|
+
domain,
|
|
66
|
+
user
|
|
67
|
+
)
|
|
68
|
+
return await worksheetController.generatePutawayReturnWorksheet(returnOrderNo, inventories)
|
|
69
|
+
}
|
package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-worksheet.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { ArrivalNotice } from '@things-factory/sales-base'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
import { Inventory } from '@things-factory/warehouse-base'
|
|
7
|
+
|
|
8
|
+
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../../constants'
|
|
9
|
+
import { PutawayWorksheetController } from '../../../../controllers'
|
|
10
|
+
import { Worksheet, WorksheetDetail } from '../../../../entities'
|
|
11
|
+
|
|
12
|
+
export const generatePartialPutawayWorksheetResolver = {
|
|
13
|
+
async generatePartialPutawayWorksheet(
|
|
14
|
+
_: any,
|
|
15
|
+
{ arrivalNoticeNo, inventories },
|
|
16
|
+
context: ResolverContext
|
|
17
|
+
): Promise<void> {
|
|
18
|
+
const { tx, domain, user } = context.state
|
|
19
|
+
let worksheet: Worksheet = await generatePartialPutawayWorksheet(tx, domain, user, arrivalNoticeNo, inventories)
|
|
20
|
+
|
|
21
|
+
if (!worksheet?.arrivalNotice?.id) {
|
|
22
|
+
worksheet = await tx.getRepository(Worksheet).findOne({
|
|
23
|
+
where: { id: worksheet.id },
|
|
24
|
+
relations: ['arrivalNotice']
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice
|
|
29
|
+
const unloadingWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
|
|
30
|
+
where: { arrivalNotice: { id: arrivalNotice.id }, type: WORKSHEET_TYPE.UNLOADING },
|
|
31
|
+
relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
const remainPalletCnt: number = await tx.getRepository(Inventory).count({
|
|
35
|
+
where: {
|
|
36
|
+
domain: { id: domain.id },
|
|
37
|
+
refOrderId: arrivalNotice.id,
|
|
38
|
+
status: WORKSHEET_STATUS.PARTIALLY_UNLOADED
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
const wsdStatus: string = remainPalletCnt >= 0 ? WORKSHEET_STATUS.PARTIALLY_UNLOADED : WORKSHEET_STATUS.EXECUTING
|
|
42
|
+
|
|
43
|
+
const worksheetDetails: WorksheetDetail[] = unloadingWorksheet.worksheetDetails
|
|
44
|
+
// const nonStartedWorksheetDetails: WorksheetDetail[] = worksheetDetails
|
|
45
|
+
// .filter((wsd: WorksheetDetail) => wsd.targetInventory?.inventory?.status !== INVENTORY_STATUS.PARTIALLY_UNLOADED)
|
|
46
|
+
// .map((wsd: WorksheetDetail) => {
|
|
47
|
+
// wsd.status = wsdStatus
|
|
48
|
+
// wsd.updater = user
|
|
49
|
+
// return wsd
|
|
50
|
+
// })
|
|
51
|
+
|
|
52
|
+
// await tx.getRepository(WorksheetDetail).save(nonStartedWorksheetDetails)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export async function generatePartialPutawayWorksheet(
|
|
57
|
+
tx: EntityManager,
|
|
58
|
+
domain: Domain,
|
|
59
|
+
user: User,
|
|
60
|
+
arrivalNoticeNo: string,
|
|
61
|
+
inventories: Inventory[]
|
|
62
|
+
): Promise<Worksheet> {
|
|
63
|
+
const worksheetController: PutawayWorksheetController = new PutawayWorksheetController(tx, domain, user)
|
|
64
|
+
return await worksheetController.generatePutawayWorksheet(arrivalNoticeNo, inventories)
|
|
65
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { ArrivalNotice } from '@things-factory/sales-base'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
import { Inventory, INVENTORY_STATUS } from '@things-factory/warehouse-base'
|
|
7
|
+
|
|
8
|
+
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../../constants'
|
|
9
|
+
import { PutawayWorksheetController } from '../../../../controllers'
|
|
10
|
+
import { Worksheet, WorksheetDetail } from '../../../../entities'
|
|
11
|
+
|
|
12
|
+
export const generatePutawayWorksheetResolver = {
|
|
13
|
+
async generatePutawayWorksheet(_: any, { arrivalNoticeNo, inventories }, context: ResolverContext): Promise<void> {
|
|
14
|
+
const { tx, domain, user } = context.state
|
|
15
|
+
let worksheet: Worksheet = await generatePutawayWorksheet(tx, domain, user, arrivalNoticeNo, inventories)
|
|
16
|
+
|
|
17
|
+
if (!worksheet.arrivalNotice?.id) {
|
|
18
|
+
worksheet = await tx.getRepository(Worksheet).findOne({
|
|
19
|
+
where: { id: worksheet.id },
|
|
20
|
+
relations: ['arrivalNotice']
|
|
21
|
+
})
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Find whether there's partially unloaded and not started inventories
|
|
25
|
+
// to execute it automatically.
|
|
26
|
+
const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice
|
|
27
|
+
const unloadingWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
|
|
28
|
+
where: { arrivalNotice: { id: arrivalNotice.id }, type: WORKSHEET_TYPE.UNLOADING },
|
|
29
|
+
relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']
|
|
30
|
+
})
|
|
31
|
+
const worksheetDetails: WorksheetDetail[] = unloadingWorksheet.worksheetDetails
|
|
32
|
+
const nonStartedWorksheetDetails: WorksheetDetail[] = worksheetDetails
|
|
33
|
+
.filter((wsd: WorksheetDetail) => wsd.targetInventory?.inventory?.status !== INVENTORY_STATUS.PARTIALLY_UNLOADED)
|
|
34
|
+
.map((wsd: WorksheetDetail) => {
|
|
35
|
+
wsd.status = WORKSHEET_STATUS.EXECUTING
|
|
36
|
+
wsd.updater = user
|
|
37
|
+
|
|
38
|
+
return wsd
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
await tx.getRepository(WorksheetDetail).save(nonStartedWorksheetDetails)
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export async function generatePutawayWorksheet(
|
|
46
|
+
tx: EntityManager,
|
|
47
|
+
domain: Domain,
|
|
48
|
+
user: User,
|
|
49
|
+
arrivalNoticeNo: string,
|
|
50
|
+
inventories: Inventory[]
|
|
51
|
+
): Promise<Worksheet> {
|
|
52
|
+
const worksheetController: PutawayWorksheetController = new PutawayWorksheetController(tx, domain, user)
|
|
53
|
+
return await worksheetController.generatePutawayWorksheet(arrivalNoticeNo, inventories)
|
|
54
|
+
}
|
package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
5
|
+
import { Setting } from '@things-factory/setting-base'
|
|
6
|
+
import { Domain } from '@things-factory/shell'
|
|
7
|
+
import { Inventory, INVENTORY_TRANSACTION_TYPE, InventoryUtil } from '@things-factory/warehouse-base'
|
|
8
|
+
|
|
9
|
+
import { PickingWorksheetController } from '../../../../controllers/'
|
|
10
|
+
import { Worksheet, WorksheetDetail } from '../../../../entities'
|
|
11
|
+
|
|
12
|
+
export const generateReleaseGoodWorksheetResolver = {
|
|
13
|
+
async generateReleaseGoodWorksheet(_: any, { releaseGoodNo, currentStatus = null }, context: ResolverContext) {
|
|
14
|
+
const { tx, domain, user } = context.state
|
|
15
|
+
return await generatePickingWorksheet(tx, domain, user, releaseGoodNo, currentStatus)
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export async function generatePickingWorksheet(
|
|
20
|
+
tx: EntityManager,
|
|
21
|
+
domain: Domain,
|
|
22
|
+
user: User,
|
|
23
|
+
releaseGoodNo: string,
|
|
24
|
+
currentStatus: string = null
|
|
25
|
+
): Promise<Worksheet> {
|
|
26
|
+
try {
|
|
27
|
+
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
28
|
+
|
|
29
|
+
//@ts-ignore
|
|
30
|
+
let releaseGood: ReleaseGood = await worksheetController.findRefOrder(ReleaseGood, {
|
|
31
|
+
domain: { id: domain.id },
|
|
32
|
+
name: releaseGoodNo,
|
|
33
|
+
status: ORDER_STATUS.PENDING_WORKSHEET
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
let worksheet: Worksheet = new Worksheet()
|
|
37
|
+
|
|
38
|
+
const directReleaseOrder: Setting = await tx.getRepository(Setting).findOne({
|
|
39
|
+
where: { domain: { id: domain.id }, category: 'id-rule', name: 'enable-direct-b2c-release-order' }
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
if (releaseGood.type == 'b2c' && directReleaseOrder && directReleaseOrder.value.toLowerCase() == 'true') {
|
|
43
|
+
const inventoryUtil = new InventoryUtil(tx, domain, user)
|
|
44
|
+
|
|
45
|
+
let orderInventories: OrderInventory[] = await tx.getRepository(OrderInventory).find({
|
|
46
|
+
where: { domain: { id: domain.id }, releaseGood: { id: releaseGood.id } },
|
|
47
|
+
relations: ['inventory']
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
for (let idx = 0; idx < orderInventories.length; idx++) {
|
|
51
|
+
let orderInventory = orderInventories[idx]
|
|
52
|
+
//@ts-ignore
|
|
53
|
+
if (orderInventory.releaseQty <= 0 || (orderInventory.uomValue != null && orderInventory.uomValue <= 0)) {
|
|
54
|
+
throw new Error(`Invalid data for ${releaseGoodNo}. Please contact support.`)
|
|
55
|
+
}
|
|
56
|
+
//@ts-ignore
|
|
57
|
+
orderInventory.uomValue = orderInventory.uomValue > 0 ? orderInventory.uomValue : 0
|
|
58
|
+
|
|
59
|
+
let inventory: Inventory = await tx
|
|
60
|
+
.getRepository(Inventory)
|
|
61
|
+
.findOne({ where: { id: orderInventory.inventory.id } })
|
|
62
|
+
|
|
63
|
+
await inventoryUtil.transactionInventory(
|
|
64
|
+
{
|
|
65
|
+
id: inventory.id,
|
|
66
|
+
qty: inventory.qty - orderInventory.releaseQty,
|
|
67
|
+
uomValue: Math.round((inventory.uomValue - orderInventory.releaseUomValue) * 100) / 100,
|
|
68
|
+
lockedQty: inventory.lockedQty - orderInventory.releaseQty,
|
|
69
|
+
lockedUomValue: Math.round((inventory.lockedUomValue - orderInventory.releaseUomValue) * 100) / 100
|
|
70
|
+
} as any,
|
|
71
|
+
releaseGood,
|
|
72
|
+
-orderInventory.releaseQty,
|
|
73
|
+
-orderInventory.releaseUomValue,
|
|
74
|
+
INVENTORY_TRANSACTION_TYPE.DIRECT_DEDUCTION
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
await tx
|
|
78
|
+
.getRepository(OrderInventory)
|
|
79
|
+
.update({ id: orderInventory.id }, { status: ORDER_INVENTORY_STATUS.TERMINATED })
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
await tx.getRepository(ReleaseGood).update({ id: releaseGood.id }, { status: ORDER_STATUS.DONE })
|
|
83
|
+
} else {
|
|
84
|
+
worksheet = await worksheetController.generatePickingWorksheet(releaseGoodNo, currentStatus)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return worksheet
|
|
88
|
+
} catch (error) {
|
|
89
|
+
return new Worksheet()
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @description This function will generate picking worksheet detail
|
|
95
|
+
* If you call this function without specified status, status will be set as DEACTIVATED
|
|
96
|
+
*
|
|
97
|
+
* @param {EntityManager} tx
|
|
98
|
+
* @param {Domain} domain
|
|
99
|
+
* @param {Bizplace} bizplace
|
|
100
|
+
* @param {User} user
|
|
101
|
+
* @param {Worksheet} worksheet
|
|
102
|
+
* @param {OrderInventory} targetInventory
|
|
103
|
+
* @param {String} status
|
|
104
|
+
*/
|
|
105
|
+
export async function generatePickingWorksheetDetail(
|
|
106
|
+
tx: EntityManager,
|
|
107
|
+
domain: Domain,
|
|
108
|
+
user: User,
|
|
109
|
+
worksheet: Worksheet,
|
|
110
|
+
targetInventory: Partial<OrderInventory>[]
|
|
111
|
+
): Promise<WorksheetDetail[]> {
|
|
112
|
+
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
113
|
+
return await worksheetController.generatePickingWorksheetDetail(worksheet, targetInventory)
|
|
114
|
+
}
|