@things-factory/worksheet-base 5.0.0-alpha.5 → 5.0.0-alpha.52
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/constants/template.js +1 -0
- package/dist-server/constants/template.js.map +1 -1
- package/dist-server/controllers/ecommerce/sellercraft-controller.js +24 -10
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
- package/dist-server/controllers/inbound/putaway-worksheet-controller.js +22 -13
- package/dist-server/controllers/inbound/putaway-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js +309 -4
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/index.js +2 -0
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/outbound/loading-worksheet-controller.js +56 -9
- package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js +172 -7
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +500 -18
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/returning-worksheet-controller.js +11 -1
- package/dist-server/controllers/outbound/returning-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js +215 -12
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/render-fm-grn.js +229 -0
- package/dist-server/controllers/render-fm-grn.js.map +1 -0
- package/dist-server/controllers/render-grn.js +77 -45
- package/dist-server/controllers/render-grn.js.map +1 -1
- package/dist-server/controllers/render-invoices.js +103 -65
- package/dist-server/controllers/render-invoices.js.map +1 -1
- package/dist-server/controllers/render-manifest.js +12 -5
- package/dist-server/controllers/render-manifest.js.map +1 -1
- package/dist-server/controllers/render-orientage-do.js.map +1 -1
- package/dist-server/controllers/render-orientage-grn.js +1 -0
- package/dist-server/controllers/render-orientage-grn.js.map +1 -1
- package/dist-server/controllers/render-po.js +147 -0
- package/dist-server/controllers/render-po.js.map +1 -0
- package/dist-server/controllers/render-ro-do.js +65 -1
- package/dist-server/controllers/render-ro-do.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +23 -1
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/entities/index.js +2 -1
- package/dist-server/entities/index.js.map +1 -1
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js +174 -0
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +14 -1
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js +17 -0
- package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +12 -4
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js +30 -1
- package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js +27 -23
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/index.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +3 -0
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +48 -2
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/loading.js +3 -10
- package/dist-server/graphql/resolvers/worksheet/loading/loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +55 -21
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/index.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/packing/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js +15 -0
- package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +153 -132
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js +2 -5
- package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js +13 -10
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +14 -25
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/index.js +3 -1
- package/dist-server/graphql/resolvers/worksheet/picking/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js +49 -58
- package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/picking.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/picking/picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js +15 -0
- package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js +15 -0
- package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +10 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +36 -0
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js +11 -6
- package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js +6 -0
- package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js +3 -2
- package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js +0 -21
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/index.js +3 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js +15 -0
- package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js +15 -0
- package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/unloading/unload.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js +3 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +2 -0
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheets.js +45 -5
- package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +13 -8
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js +19 -4
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js +24 -34
- package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +12 -3
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js +10 -2
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js +2 -5
- package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js.map +1 -1
- package/dist-server/graphql/types/worksheet/find-release-orders-by-task-no.js +11 -0
- package/dist-server/graphql/types/worksheet/find-release-orders-by-task-no.js.map +1 -0
- package/dist-server/graphql/types/worksheet/index.js +52 -11
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js +1 -0
- package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js.map +1 -1
- package/dist-server/graphql/types/worksheet/picking-assignment-status.js +2 -2
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js +8 -3
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-info.js +3 -0
- package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-patch.js +1 -0
- package/dist-server/graphql/types/worksheet/worksheet-patch.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet.js +1 -0
- package/dist-server/graphql/types/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/index.js +0 -2
- package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +5 -2
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/worksheet-detail-patch.js +1 -1
- package/dist-server/index.js +5 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/routes.js +12 -0
- package/dist-server/routes.js.map +1 -1
- package/dist-server/utils/inventory-util.js +14 -25
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/dist-server/utils/worksheet-no-generator.js +25 -28
- package/dist-server/utils/worksheet-no-generator.js.map +1 -1
- package/package.json +17 -17
- package/server/constants/template.ts +1 -0
- package/server/controllers/ecommerce/sellercraft-controller.ts +38 -10
- package/server/controllers/inbound/putaway-worksheet-controller.ts +27 -13
- package/server/controllers/inbound/unloading-worksheet-controller.ts +376 -8
- package/server/controllers/index.ts +3 -0
- package/server/controllers/outbound/loading-worksheet-controller.ts +94 -15
- package/server/controllers/outbound/packing-worksheet-controller.ts +224 -9
- package/server/controllers/outbound/picking-worksheet-controller.ts +653 -24
- package/server/controllers/outbound/returning-worksheet-controller.ts +12 -1
- package/server/controllers/outbound/sorting-worksheet-controller.ts +303 -18
- package/server/controllers/render-fm-grn.ts +266 -0
- package/server/controllers/render-grn.ts +95 -52
- package/server/controllers/render-invoices.ts +119 -72
- package/server/controllers/render-manifest.ts +12 -5
- package/server/controllers/render-orientage-do.ts +11 -11
- package/server/controllers/render-orientage-grn.ts +12 -11
- package/server/controllers/render-po.ts +170 -0
- package/server/controllers/render-ro-do.ts +93 -8
- package/server/controllers/worksheet-controller.ts +32 -3
- package/server/entities/index.ts +2 -1
- package/server/entities/warehouse-bizplace-onhand-inventory.ts +147 -0
- package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +14 -0
- package/server/graphql/resolvers/worksheet/cancel-draft-release-order.ts +27 -0
- package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +15 -5
- package/server/graphql/resolvers/worksheet/find-release-orders-by-task-no.ts +35 -2
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts +35 -25
- package/server/graphql/resolvers/worksheet/index.ts +3 -1
- package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +2 -0
- package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +67 -8
- package/server/graphql/resolvers/worksheet/loading/loading.ts +5 -12
- package/server/graphql/resolvers/worksheet/loading-worksheet.ts +66 -13
- package/server/graphql/resolvers/worksheet/packing/index.ts +3 -1
- package/server/graphql/resolvers/worksheet/packing/packing.ts +5 -4
- package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +9 -4
- package/server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.ts +24 -0
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +167 -145
- package/server/graphql/resolvers/worksheet/palletizing-pallets.ts +2 -2
- package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +15 -11
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +1 -1
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +18 -31
- package/server/graphql/resolvers/worksheet/picking/index.ts +5 -1
- package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +62 -61
- package/server/graphql/resolvers/worksheet/picking/picking.ts +30 -4
- package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +7 -4
- package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +25 -0
- package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +24 -0
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +13 -2
- package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +45 -2
- package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +13 -9
- package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +6 -4
- package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +6 -4
- package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +6 -0
- package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +6 -2
- package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +0 -25
- package/server/graphql/resolvers/worksheet/unloading/index.ts +4 -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/unload.ts +3 -1
- package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +3 -1
- package/server/graphql/resolvers/worksheet/worksheet.ts +2 -0
- package/server/graphql/resolvers/worksheet/worksheets.ts +64 -5
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +30 -14
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +39 -11
- package/server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts +46 -49
- package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +15 -3
- package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +18 -1
- package/server/graphql/resolvers/worksheet-movement/create-worksheet-movement.ts +2 -2
- package/server/graphql/types/worksheet/find-release-orders-by-task-no.ts +8 -0
- package/server/graphql/types/worksheet/index.ts +52 -11
- package/server/graphql/types/worksheet/loaded-worksheet-detail.ts +1 -0
- package/server/graphql/types/worksheet/picking-assignment-status.ts +2 -2
- package/server/graphql/types/worksheet/worksheet-detail-info.ts +8 -3
- package/server/graphql/types/worksheet/worksheet-info.ts +3 -0
- package/server/graphql/types/worksheet/worksheet-patch.ts +1 -0
- package/server/graphql/types/worksheet/worksheet.ts +1 -0
- package/server/graphql/types/worksheet-detail/index.ts +0 -2
- package/server/graphql/types/worksheet-detail/inventory-detail.ts +5 -2
- package/server/graphql/types/worksheet-detail/worksheet-detail-patch.ts +1 -1
- package/server/index.ts +5 -0
- package/server/routes.ts +17 -0
- package/server/utils/inventory-util.ts +15 -23
- package/server/utils/worksheet-no-generator.ts +25 -25
|
@@ -124,6 +124,9 @@ export class ReturningWorksheetController extends VasWorksheetController {
|
|
|
124
124
|
// update status of order inventory
|
|
125
125
|
targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED
|
|
126
126
|
targetInventory.updater = this.user
|
|
127
|
+
targetInventory.returnToLocationQty = targetInventory.releaseQty
|
|
128
|
+
targetInventory.returnToLocationUomValue = targetInventory.releaseUomValue
|
|
129
|
+
|
|
127
130
|
await this.updateOrderTargets([targetInventory])
|
|
128
131
|
|
|
129
132
|
// update status of worksheet detail (EXECUTING => DONE)
|
|
@@ -164,7 +167,13 @@ export class ReturningWorksheetController extends VasWorksheetController {
|
|
|
164
167
|
where: {
|
|
165
168
|
domain: this.domain,
|
|
166
169
|
name: toLocationName,
|
|
167
|
-
type: In([
|
|
170
|
+
type: In([
|
|
171
|
+
LOCATION_TYPE.SHELF,
|
|
172
|
+
LOCATION_TYPE.BUFFER,
|
|
173
|
+
LOCATION_TYPE.FLOOR,
|
|
174
|
+
LOCATION_TYPE.BIN,
|
|
175
|
+
LOCATION_TYPE.QUARANTINE
|
|
176
|
+
])
|
|
168
177
|
},
|
|
169
178
|
relations: ['warehouse']
|
|
170
179
|
})
|
|
@@ -189,6 +198,8 @@ export class ReturningWorksheetController extends VasWorksheetController {
|
|
|
189
198
|
|
|
190
199
|
targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED
|
|
191
200
|
targetInventory.updater = this.user
|
|
201
|
+
targetInventory.returnToLocationQty = targetInventory.releaseQty
|
|
202
|
+
targetInventory.returnToLocationUomValue = targetInventory.releaseUomValue
|
|
192
203
|
await this.updateOrderTargets([targetInventory])
|
|
193
204
|
|
|
194
205
|
worksheetDetail.status = WORKSHEET_STATUS.DONE
|
|
@@ -1,9 +1,29 @@
|
|
|
1
|
+
import { IsNull, In } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { VasWorksheetController } from '../vas/vas-worksheet-controller'
|
|
2
4
|
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
+
import {
|
|
6
|
+
Inventory,
|
|
7
|
+
INVENTORY_TRANSACTION_TYPE,
|
|
8
|
+
InventoryItem,
|
|
9
|
+
INVENTORY_STATUS,
|
|
10
|
+
InventoryNoGenerator,
|
|
11
|
+
INVENTORY_ITEM_SOURCE,
|
|
12
|
+
Tote,
|
|
13
|
+
TOTE_STATUS
|
|
14
|
+
} from '@things-factory/warehouse-base'
|
|
15
|
+
import {
|
|
16
|
+
ReleaseGood,
|
|
17
|
+
OrderInventory,
|
|
18
|
+
ORDER_INVENTORY_STATUS,
|
|
19
|
+
ORDER_STATUS,
|
|
20
|
+
OrderTote,
|
|
21
|
+
OrderToteItem,
|
|
22
|
+
OrderNoGenerator
|
|
23
|
+
} from '@things-factory/sales-base'
|
|
5
24
|
import { Worksheet, WorksheetDetail } from '../../entities'
|
|
6
25
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
26
|
+
import { temporaryGetRemainInventoryAmount } from 'server/graphql/resolvers/worksheet/vas-transactions/common-utils'
|
|
7
27
|
|
|
8
28
|
export class SortingWorksheetController extends VasWorksheetController {
|
|
9
29
|
async generateSortingWorksheet(
|
|
@@ -51,7 +71,13 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
51
71
|
return await this.activateWorksheet(worksheet, worksheetDetails, sortingWorksheetDetails)
|
|
52
72
|
}
|
|
53
73
|
|
|
54
|
-
async scanProductSorting(
|
|
74
|
+
async scanProductSorting(
|
|
75
|
+
taskNo: string,
|
|
76
|
+
releaseGoodNo: string,
|
|
77
|
+
productBarcode: string,
|
|
78
|
+
serialNumber: string,
|
|
79
|
+
toteNo: string
|
|
80
|
+
): Promise<void> {
|
|
55
81
|
const worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({
|
|
56
82
|
where: {
|
|
57
83
|
domain: this.domain,
|
|
@@ -63,6 +89,8 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
63
89
|
'worksheetDetails',
|
|
64
90
|
'worksheetDetails.targetInventory',
|
|
65
91
|
'worksheetDetails.targetInventory.product',
|
|
92
|
+
'worksheetDetails.targetInventory.orderProduct',
|
|
93
|
+
'worksheetDetails.targetInventory.bizplace',
|
|
66
94
|
'worksheetDetails.targetInventory.inventory',
|
|
67
95
|
'worksheetDetails.targetInventory.inventory.product',
|
|
68
96
|
'worksheetDetails.targetInventory.inventory.product.productDetails',
|
|
@@ -113,8 +141,53 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
113
141
|
const releaseQty: number = matchingOI.releaseQty
|
|
114
142
|
const inventory: Inventory = matchingOI.inventory
|
|
115
143
|
const releaseGood: ReleaseGood = matchingOI.releaseGood
|
|
144
|
+
const product: Product = inventory.product
|
|
116
145
|
|
|
117
146
|
if (releaseQty != matchingOI?.sortedQty && sortedQty == 1) {
|
|
147
|
+
// Serial Number scanning for batch picking
|
|
148
|
+
if (matchingOI?.refWorksheetId) {
|
|
149
|
+
if (product?.isRequireSerialNumberScanningOutbound) {
|
|
150
|
+
if (!serialNumber || serialNumber == '') {
|
|
151
|
+
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('sorting', `require serial number`))
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
let foundSerialNumber: InventoryItem = await this.trxMgr
|
|
155
|
+
.getRepository(InventoryItem)
|
|
156
|
+
.findOne({ where: { domain: this.domain, serialNumber: serialNumber, product } })
|
|
157
|
+
|
|
158
|
+
if (foundSerialNumber) {
|
|
159
|
+
if (foundSerialNumber.inventoryId !== inventory.id) {
|
|
160
|
+
throw new Error('Serial Number scanned is in another inventory')
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (foundSerialNumber.outboundOrderId) {
|
|
164
|
+
let releaseGood: ReleaseGood = await this.trxMgr
|
|
165
|
+
.getRepository(ReleaseGood)
|
|
166
|
+
.findOne({ where: { id: foundSerialNumber.outboundOrderId } })
|
|
167
|
+
throw new Error(`Inventory Item is already picked/sorted in ${releaseGood.name}`)
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
foundSerialNumber.status = INVENTORY_STATUS.SORTING
|
|
171
|
+
foundSerialNumber.updater = this.user
|
|
172
|
+
foundSerialNumber.outboundOrderId = releaseGood.id
|
|
173
|
+
|
|
174
|
+
await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)
|
|
175
|
+
} else {
|
|
176
|
+
let inventoryItem: InventoryItem = new InventoryItem()
|
|
177
|
+
inventoryItem.name = InventoryNoGenerator.inventoryItemName()
|
|
178
|
+
inventoryItem.serialNumber = serialNumber
|
|
179
|
+
inventoryItem.status = INVENTORY_STATUS.SORTING
|
|
180
|
+
inventoryItem.outboundOrderId = releaseGood.id
|
|
181
|
+
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
182
|
+
inventoryItem.product = product
|
|
183
|
+
inventoryItem.inventory = inventory
|
|
184
|
+
inventoryItem.domain = this.domain
|
|
185
|
+
|
|
186
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
118
191
|
matchingOI.sortedQty = Boolean(matchingOI?.sortedQty) ? matchingOI.sortedQty + sortedQty : sortedQty
|
|
119
192
|
sortedQty -= 1
|
|
120
193
|
if (matchingOI.sortedQty == releaseQty) {
|
|
@@ -128,12 +201,36 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
128
201
|
worksheetDetail.status = WORKSHEET_STATUS.DONE
|
|
129
202
|
worksheetDetail.updater = this.user
|
|
130
203
|
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
204
|
+
|
|
205
|
+
let inventoryItems: InventoryItem = await this.trxMgr
|
|
206
|
+
.getRepository(InventoryItem)
|
|
207
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
208
|
+
|
|
209
|
+
if (inventoryItems.length > 0) {
|
|
210
|
+
inventoryItems.forEach((itm: InventoryItem) => {
|
|
211
|
+
itm.status = INVENTORY_STATUS.SORTED
|
|
212
|
+
itm.updater = this.user
|
|
213
|
+
})
|
|
214
|
+
|
|
215
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
|
|
216
|
+
}
|
|
131
217
|
} else if (matchingOI?.sortedQty > releaseQty) {
|
|
132
218
|
const product: Product = matchingOI.inventory.product
|
|
133
219
|
throw new Error(this.ERROR_MSG.ORDER_ITEM.EXCESS_QTY(product.sku, packingType, packingSize))
|
|
134
220
|
} else {
|
|
135
221
|
await this.updateOrderTargets([matchingOI])
|
|
136
222
|
}
|
|
223
|
+
|
|
224
|
+
if (toteNo) {
|
|
225
|
+
await this.toteScanning(
|
|
226
|
+
toteNo,
|
|
227
|
+
matchingOI.orderProduct,
|
|
228
|
+
matchingOI,
|
|
229
|
+
1,
|
|
230
|
+
releaseGood,
|
|
231
|
+
matchingOI.bizplace
|
|
232
|
+
)
|
|
233
|
+
}
|
|
137
234
|
}
|
|
138
235
|
})
|
|
139
236
|
)
|
|
@@ -141,7 +238,14 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
141
238
|
}
|
|
142
239
|
}
|
|
143
240
|
|
|
144
|
-
async sortingProduct(
|
|
241
|
+
async sortingProduct(
|
|
242
|
+
taskNo: string,
|
|
243
|
+
releaseGoodNo: string,
|
|
244
|
+
productId: string,
|
|
245
|
+
sortingQty: number,
|
|
246
|
+
serialNumber: string,
|
|
247
|
+
toteNo: string
|
|
248
|
+
): Promise<void> {
|
|
145
249
|
const worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({
|
|
146
250
|
where: {
|
|
147
251
|
domain: this.domain,
|
|
@@ -153,6 +257,8 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
153
257
|
'worksheetDetails',
|
|
154
258
|
'worksheetDetails.targetInventory',
|
|
155
259
|
'worksheetDetails.targetInventory.product',
|
|
260
|
+
'worksheetDetails.targetInventory.orderProduct',
|
|
261
|
+
'worksheetDetails.targetInventory.bizplace',
|
|
156
262
|
'worksheetDetails.targetInventory.inventory',
|
|
157
263
|
'worksheetDetails.targetInventory.inventory.product',
|
|
158
264
|
'worksheetDetails.targetInventory.inventory.product.productDetails',
|
|
@@ -180,14 +286,81 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
180
286
|
const packingType: string = matchingOI.packingType
|
|
181
287
|
const packingSize: number = matchingOI.packingSize
|
|
182
288
|
|
|
289
|
+
if (product?.isRequireSerialNumberScanningOutbound) {
|
|
290
|
+
if (!serialNumber || serialNumber == '') {
|
|
291
|
+
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('sorting', `require serial number`))
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({
|
|
295
|
+
where: { domain: this.domain, serialNumber: serialNumber, product },
|
|
296
|
+
relations: ['product', 'inventory']
|
|
297
|
+
})
|
|
298
|
+
|
|
299
|
+
if (foundSerialNumber) {
|
|
300
|
+
if (foundSerialNumber.outboundOrderId) {
|
|
301
|
+
let releaseGood: ReleaseGood = await this.trxMgr
|
|
302
|
+
.getRepository(ReleaseGood)
|
|
303
|
+
.findOne({ where: { id: foundSerialNumber.outboundOrderId } })
|
|
304
|
+
throw new Error(`Inventory Item is already picked/sorted in ${releaseGood.name}`)
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
foundSerialNumber.status = INVENTORY_STATUS.SORTING
|
|
308
|
+
foundSerialNumber.updater = this.user
|
|
309
|
+
foundSerialNumber.outboundOrderId = releaseGood.id
|
|
310
|
+
|
|
311
|
+
await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)
|
|
312
|
+
} else {
|
|
313
|
+
let inventoryItem: InventoryItem = new InventoryItem()
|
|
314
|
+
inventoryItem.name = InventoryNoGenerator.inventoryItemName()
|
|
315
|
+
inventoryItem.serialNumber = serialNumber
|
|
316
|
+
inventoryItem.status = INVENTORY_STATUS.SORTING
|
|
317
|
+
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
318
|
+
inventoryItem.outboundOrderId = releaseGood.id
|
|
319
|
+
inventoryItem.product = product
|
|
320
|
+
inventoryItem.inventory = inventory
|
|
321
|
+
inventoryItem.domain = this.domain
|
|
322
|
+
|
|
323
|
+
foundSerialNumber = await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
if (toteNo) {
|
|
328
|
+
await this.toteScanning(
|
|
329
|
+
toteNo,
|
|
330
|
+
matchingOI.orderProduct,
|
|
331
|
+
matchingOI,
|
|
332
|
+
sortingQty,
|
|
333
|
+
releaseGood,
|
|
334
|
+
matchingOI.bizplace
|
|
335
|
+
)
|
|
336
|
+
}
|
|
337
|
+
|
|
183
338
|
if (releaseQty != matchingOI?.sortedQty && sortingQty != 0) {
|
|
184
|
-
|
|
339
|
+
if (product?.isRequireSerialNumberScanningOutbound) {
|
|
340
|
+
matchingOI.sortedQty += sortingQty
|
|
341
|
+
} else {
|
|
342
|
+
matchingOI.sortedQty = releaseQty
|
|
343
|
+
}
|
|
344
|
+
|
|
185
345
|
sortingQty -= releaseQty
|
|
186
346
|
if (matchingOI.sortedQty == releaseQty) {
|
|
187
347
|
matchingOI.status = ORDER_INVENTORY_STATUS.SORTED
|
|
188
348
|
await this.updateOrderTargets([matchingOI])
|
|
189
349
|
await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.SORTING)
|
|
190
350
|
|
|
351
|
+
let inventoryItems: InventoryItem = await this.trxMgr
|
|
352
|
+
.getRepository(InventoryItem)
|
|
353
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
354
|
+
|
|
355
|
+
if (inventoryItems.length > 0) {
|
|
356
|
+
inventoryItems.forEach((itm: InventoryItem) => {
|
|
357
|
+
itm.status = INVENTORY_STATUS.PACKED
|
|
358
|
+
itm.updater = this.user
|
|
359
|
+
})
|
|
360
|
+
|
|
361
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
|
|
362
|
+
}
|
|
363
|
+
|
|
191
364
|
let worksheetDetail: WorksheetDetail = worksheetDetails.find(
|
|
192
365
|
wsd => wsd.targetInventory.id === matchingOI.id
|
|
193
366
|
)
|
|
@@ -206,21 +379,50 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
206
379
|
}
|
|
207
380
|
|
|
208
381
|
async completeOrderSorting(releaseGoodNo: string): Promise<ReleaseGood> {
|
|
209
|
-
|
|
210
|
-
ReleaseGood
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
382
|
+
try {
|
|
383
|
+
let releaseGood: ReleaseGood = await this.findRefOrder(
|
|
384
|
+
ReleaseGood,
|
|
385
|
+
{
|
|
386
|
+
domain: this.domain,
|
|
387
|
+
name: releaseGoodNo,
|
|
388
|
+
status: ORDER_STATUS.SORTING
|
|
389
|
+
},
|
|
390
|
+
['bizplace', 'orderInventories']
|
|
391
|
+
)
|
|
392
|
+
|
|
393
|
+
if (!releaseGood) {
|
|
394
|
+
throw new Error('Order is already sorted')
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
const foundNotSealedOrderTote = await this.trxMgr
|
|
398
|
+
.getRepository(OrderTote)
|
|
399
|
+
.findOne({ where: { releaseGood, closedDate: IsNull() } })
|
|
400
|
+
|
|
401
|
+
if (foundNotSealedOrderTote) {
|
|
402
|
+
throw new Error('Please seal the tote(s) before proceeding')
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
releaseGood.status = ORDER_STATUS.READY_TO_LOAD
|
|
406
|
+
releaseGood.updater = this.user
|
|
407
|
+
await this.trxMgr.getRepository(ReleaseGood).save(releaseGood)
|
|
218
408
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
409
|
+
let inventoryItems: InventoryItem = await this.trxMgr
|
|
410
|
+
.getRepository(InventoryItem)
|
|
411
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
222
412
|
|
|
223
|
-
|
|
413
|
+
if (inventoryItems.length > 0) {
|
|
414
|
+
inventoryItems.forEach((itm: InventoryItem) => {
|
|
415
|
+
itm.status = INVENTORY_STATUS.TERMINATED
|
|
416
|
+
itm.updater = this.user
|
|
417
|
+
})
|
|
418
|
+
|
|
419
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
return releaseGood
|
|
423
|
+
} catch (e) {
|
|
424
|
+
throw e
|
|
425
|
+
}
|
|
224
426
|
}
|
|
225
427
|
|
|
226
428
|
async completeWorksheetSorting(taskNo: string): Promise<Worksheet> {
|
|
@@ -238,6 +440,16 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
238
440
|
]
|
|
239
441
|
})
|
|
240
442
|
|
|
443
|
+
let releaseGoodIds = worksheet.worksheetDetails.map(itm => itm.targetInventory.releaseGood.id)
|
|
444
|
+
|
|
445
|
+
const foundNotSealedOrderTote = await this.trxMgr
|
|
446
|
+
.getRepository(OrderTote)
|
|
447
|
+
.findOne({ where: { releaseGood: In(releaseGoodIds), closedDate: IsNull() } })
|
|
448
|
+
|
|
449
|
+
if (foundNotSealedOrderTote) {
|
|
450
|
+
throw new Error('Please seal the tote(s) before proceeding')
|
|
451
|
+
}
|
|
452
|
+
|
|
241
453
|
this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })
|
|
242
454
|
|
|
243
455
|
const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
|
|
@@ -253,4 +465,77 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
253
465
|
|
|
254
466
|
return worksheet
|
|
255
467
|
}
|
|
468
|
+
|
|
469
|
+
private async toteScanning(toteNo, targetProduct, targetInventory, pickedQty, releaseGood, bizplace) {
|
|
470
|
+
//1. find tote
|
|
471
|
+
let foundTote: Tote = await this.trxMgr
|
|
472
|
+
.getRepository(Tote)
|
|
473
|
+
.findOne({ where: { bizplace, name: toteNo, deletedAt: IsNull() } })
|
|
474
|
+
|
|
475
|
+
if (foundTote?.status == TOTE_STATUS.DAMAGED) {
|
|
476
|
+
throw new Error('Tote is damaged')
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
if (foundTote?.status == TOTE_STATUS.DISPATCHED) {
|
|
480
|
+
throw new Error('Tote is dispatched')
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
//2. find order tote
|
|
484
|
+
let foundOrderTote: OrderTote = await this.trxMgr
|
|
485
|
+
.getRepository(OrderTote)
|
|
486
|
+
.findOne({ where: { domain: this.domain, name: toteNo, releaseGood } })
|
|
487
|
+
|
|
488
|
+
//if order tote not found the create one, if tote not found means it's tote box
|
|
489
|
+
//create order tote item
|
|
490
|
+
if (!foundOrderTote) {
|
|
491
|
+
const orderTote = await this.trxMgr.getRepository(OrderTote).save({
|
|
492
|
+
name: toteNo,
|
|
493
|
+
domain: this.domain,
|
|
494
|
+
releaseGood,
|
|
495
|
+
tote: foundTote ? foundTote : null,
|
|
496
|
+
updater: this.user
|
|
497
|
+
})
|
|
498
|
+
|
|
499
|
+
const orderToteItem = await this.trxMgr.getRepository(OrderToteItem).save({
|
|
500
|
+
domain: this.domain,
|
|
501
|
+
name: OrderNoGenerator.orderToteItem(),
|
|
502
|
+
orderProduct: targetProduct,
|
|
503
|
+
orderInventory: targetInventory,
|
|
504
|
+
orderTote,
|
|
505
|
+
qty: pickedQty,
|
|
506
|
+
updater: this.user
|
|
507
|
+
})
|
|
508
|
+
} else {
|
|
509
|
+
if (foundOrderTote.closedDate) {
|
|
510
|
+
throw new Error('Tote has been sealed, please try another tote!')
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
//if found order tote then check if order tote item exist
|
|
514
|
+
const foundOrderToteItem: OrderToteItem = await this.trxMgr.getRepository(OrderToteItem).findOne({
|
|
515
|
+
domain: this.domain,
|
|
516
|
+
orderProduct: targetProduct,
|
|
517
|
+
orderInventory: targetInventory,
|
|
518
|
+
orderTote: foundOrderTote
|
|
519
|
+
})
|
|
520
|
+
|
|
521
|
+
//if not order tote item doesnt exist then create one
|
|
522
|
+
if (!foundOrderToteItem) {
|
|
523
|
+
const orderToteItem = await this.trxMgr.getRepository(OrderToteItem).save({
|
|
524
|
+
domain: this.domain,
|
|
525
|
+
name: OrderNoGenerator.orderToteItem(),
|
|
526
|
+
orderProduct: targetProduct,
|
|
527
|
+
orderInventory: targetInventory,
|
|
528
|
+
orderTote: foundOrderTote,
|
|
529
|
+
qty: pickedQty,
|
|
530
|
+
updater: this.user
|
|
531
|
+
})
|
|
532
|
+
} else {
|
|
533
|
+
//if found order tote item found then add the quantity
|
|
534
|
+
const orderToteItem = await this.trxMgr.getRepository(OrderToteItem).save({
|
|
535
|
+
...foundOrderToteItem,
|
|
536
|
+
qty: foundOrderToteItem.qty + pickedQty
|
|
537
|
+
})
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|
|
256
541
|
}
|