@things-factory/worksheet-base 4.0.0-y.0 → 4.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/ecommerce/ecommerce-controller.js +23 -9
- package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
- package/dist-server/controllers/ecommerce/index.js +1 -0
- package/dist-server/controllers/ecommerce/index.js.map +1 -1
- package/dist-server/controllers/ecommerce/sellercraft-controller.js +168 -0
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -0
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js +6 -5
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/index.js +1 -0
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +43 -8
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js +16 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +17 -9
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/render-grn.js +192 -0
- package/dist-server/controllers/render-grn.js.map +1 -0
- package/dist-server/controllers/render-job-sheet.js +51 -35
- package/dist-server/controllers/render-job-sheet.js.map +1 -1
- package/dist-server/controllers/render-kimeda-grn.js +12 -5
- package/dist-server/controllers/render-kimeda-grn.js.map +1 -1
- package/dist-server/controllers/render-ro-do.js +19 -5
- package/dist-server/controllers/render-ro-do.js.map +1 -1
- package/dist-server/controllers/render-seebuu-grn.js +9 -3
- package/dist-server/controllers/render-seebuu-grn.js.map +1 -1
- package/dist-server/controllers/vas/vas-worksheet-controller.js +75 -14
- package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +61 -8
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/pallet/pallet-outbound.js +1 -1
- package/dist-server/graphql/resolvers/pallet/pallet-outbound.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +23 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js +4 -2
- package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js +25 -0
- package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/index.js +5 -4
- package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +13 -1
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +24 -38
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js +13 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +13 -1
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +60 -19
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js +20 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +24 -14
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +19 -0
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +124 -149
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js +13 -4
- package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js +21 -2
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js +18 -1
- package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +302 -11
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js +137 -31
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js +157 -42
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js +35 -21
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +33 -27
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheets.js +39 -10
- 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 +1 -1
- 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-release-good-worksheet-details.js +3 -2
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js +3 -2
- package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js.map +1 -1
- package/dist-server/graphql/types/index.js +2 -1
- package/dist-server/graphql/types/index.js.map +1 -1
- package/dist-server/graphql/types/pallet/index.js +10 -0
- package/dist-server/graphql/types/pallet/index.js.map +1 -0
- package/dist-server/graphql/types/worksheet/airwaybill.js +10 -0
- package/dist-server/graphql/types/worksheet/airwaybill.js.map +1 -0
- package/dist-server/graphql/types/worksheet/index.js +10 -2
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-info.js +2 -0
- package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/index.js +2 -1
- package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +1 -0
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js.map +1 -1
- package/dist-server/routes.js +10 -6
- package/dist-server/routes.js.map +1 -1
- package/dist-server/utils/inventory-util.js +7 -3
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/package.json +16 -15
- package/server/controllers/ecommerce/ecommerce-controller.ts +37 -10
- package/server/controllers/ecommerce/index.ts +1 -0
- package/server/controllers/ecommerce/sellercraft-controller.ts +223 -0
- package/server/controllers/inbound/unloading-worksheet-controller.ts +16 -13
- package/server/controllers/index.ts +1 -0
- package/server/controllers/inspect/cycle-count-worksheet-controller.ts +108 -43
- package/server/controllers/outbound/packing-worksheet-controller.ts +21 -4
- package/server/controllers/outbound/picking-worksheet-controller.ts +26 -11
- package/server/controllers/render-grn.ts +218 -0
- package/server/controllers/render-job-sheet.ts +51 -39
- package/server/controllers/render-kimeda-grn.ts +16 -12
- package/server/controllers/render-ro-do.ts +22 -6
- package/server/controllers/render-seebuu-grn.ts +12 -12
- package/server/controllers/vas/vas-worksheet-controller.ts +104 -23
- package/server/controllers/worksheet-controller.ts +87 -22
- package/server/graphql/resolvers/pallet/pallet-outbound.ts +2 -1
- package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +30 -2
- package/server/graphql/resolvers/worksheet/cycle-count-worksheet.ts +7 -4
- package/server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.ts +30 -0
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts +18 -3
- package/server/graphql/resolvers/worksheet/index.ts +6 -4
- package/server/graphql/resolvers/worksheet/not-tally-target-inventories.ts +4 -2
- package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +20 -3
- package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +30 -49
- package/server/graphql/resolvers/worksheet/packing/packing.ts +22 -3
- package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +22 -3
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +71 -20
- package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +32 -3
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +31 -17
- package/server/graphql/resolvers/worksheet/picking/assign-picking-inventories.ts +4 -3
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +31 -3
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +143 -175
- package/server/graphql/resolvers/worksheet/picking/undo-picking-assignment.ts +5 -4
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +5 -2
- package/server/graphql/resolvers/worksheet/recommend-putway-location.ts +1 -1
- package/server/graphql/resolvers/worksheet/replace-picking-pallets.ts +22 -9
- package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +27 -4
- package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.ts +23 -2
- package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +452 -14
- package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.ts +36 -1
- package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.ts +8 -2
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts +185 -56
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts +210 -54
- package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts +64 -32
- package/server/graphql/resolvers/worksheet/worksheet.ts +67 -62
- package/server/graphql/resolvers/worksheet/worksheets.ts +51 -13
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +1 -0
- package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +2 -1
- package/server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.ts +2 -1
- package/server/graphql/types/index.ts +2 -1
- package/server/graphql/types/pallet/index.ts +6 -0
- package/server/graphql/types/worksheet/airwaybill.ts +7 -0
- package/server/graphql/types/worksheet/index.ts +10 -2
- package/server/graphql/types/worksheet/worksheet-info.ts +2 -0
- package/server/graphql/types/worksheet-detail/index.ts +2 -1
- package/server/graphql/types/worksheet-detail/inventory-detail.ts +1 -0
- package/server/routes.ts +11 -6
- package/server/utils/inventory-util.ts +14 -5
|
@@ -1,21 +1,29 @@
|
|
|
1
|
+
import { Brackets, Equal, In, Not, SelectQueryBuilder } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { Bizplace } from '@things-factory/biz-base'
|
|
2
4
|
import {
|
|
3
5
|
generateCycleCount,
|
|
4
6
|
InventoryCheck,
|
|
5
|
-
OrderInventory,
|
|
6
|
-
OrderNoGenerator,
|
|
7
7
|
ORDER_INVENTORY_STATUS,
|
|
8
|
-
ORDER_STATUS
|
|
8
|
+
ORDER_STATUS,
|
|
9
|
+
OrderInventory,
|
|
10
|
+
OrderNoGenerator
|
|
9
11
|
} from '@things-factory/sales-base'
|
|
10
|
-
import { Inventory,
|
|
11
|
-
|
|
12
|
+
import { Inventory, INVENTORY_STATUS, Location } from '@things-factory/warehouse-base'
|
|
13
|
+
|
|
12
14
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
13
15
|
import { Worksheet, WorksheetDetail } from '../../entities'
|
|
14
|
-
import { WorksheetController } from '../worksheet-controller'
|
|
15
16
|
import { WorksheetNoGenerator } from '../../utils'
|
|
17
|
+
import { WorksheetController } from '../worksheet-controller'
|
|
16
18
|
|
|
17
19
|
export class CycleCountWorksheetController extends WorksheetController {
|
|
18
|
-
async generateCycleCountWorksheet(
|
|
20
|
+
async generateCycleCountWorksheet(
|
|
21
|
+
executionDate: string,
|
|
22
|
+
customerId: string,
|
|
23
|
+
orderInventoryIds: string[] = [],
|
|
24
|
+
orderInventory: OrderInventory[],
|
|
25
|
+
limit: number
|
|
26
|
+
): Promise<Worksheet> {
|
|
19
27
|
// Find out warehouse and customer bizplace
|
|
20
28
|
const customerBizplace: Bizplace = await this.trxMgr.getRepository(Bizplace).findOne(customerId)
|
|
21
29
|
let foundCycleCountWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({
|
|
@@ -27,11 +35,13 @@ export class CycleCountWorksheetController extends WorksheetController {
|
|
|
27
35
|
},
|
|
28
36
|
relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'inventoryCheck']
|
|
29
37
|
})
|
|
30
|
-
|
|
38
|
+
|
|
31
39
|
// Create second round of cycle count with specified order inventories
|
|
32
40
|
if (orderInventoryIds.length) {
|
|
33
41
|
// Update status of target inventories (NOT_TALLY => INSPECTING)
|
|
34
|
-
let targetInventories: OrderInventory[] = await this.trxMgr
|
|
42
|
+
let targetInventories: OrderInventory[] = await this.trxMgr
|
|
43
|
+
.getRepository(OrderInventory)
|
|
44
|
+
.findByIds(orderInventoryIds)
|
|
35
45
|
targetInventories.forEach((targetInventory: OrderInventory) => {
|
|
36
46
|
targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING
|
|
37
47
|
targetInventory.updater = this.user
|
|
@@ -68,7 +78,13 @@ export class CycleCountWorksheetController extends WorksheetController {
|
|
|
68
78
|
throw new Error(`Unfinished cycle count worksheet exists.`)
|
|
69
79
|
}
|
|
70
80
|
|
|
71
|
-
const cycleCount: InventoryCheck = await generateCycleCount(
|
|
81
|
+
const cycleCount: InventoryCheck = await generateCycleCount(
|
|
82
|
+
this.trxMgr,
|
|
83
|
+
this.domain,
|
|
84
|
+
this.user,
|
|
85
|
+
executionDate,
|
|
86
|
+
customerId
|
|
87
|
+
)
|
|
72
88
|
|
|
73
89
|
// Find out inventories which is target for cycle counting
|
|
74
90
|
const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')
|
|
@@ -83,11 +99,42 @@ export class CycleCountWorksheetController extends WorksheetController {
|
|
|
83
99
|
})
|
|
84
100
|
)
|
|
85
101
|
|
|
102
|
+
if (orderInventory && orderInventory.length > 0) {
|
|
103
|
+
let keyval = {
|
|
104
|
+
batchId: 'batch_id',
|
|
105
|
+
batchIdRef: 'batch_id_ref',
|
|
106
|
+
packingType: 'packing_type',
|
|
107
|
+
packingSize: 'packing_size',
|
|
108
|
+
productId: 'product_id'
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
qb.andWhere(
|
|
112
|
+
new Brackets(qb => {
|
|
113
|
+
orderInventory.forEach((itm, idx) => {
|
|
114
|
+
// sample itm value
|
|
115
|
+
// batchId: 'WO00019730', batchIdRef: null, packingType: 'CARBOY', packingSize: 1, productId: '1d679587-c713-42d6-bd0a-74e587e39cc7'
|
|
116
|
+
qb.orWhere(
|
|
117
|
+
new Brackets(qb2 => {
|
|
118
|
+
let first = true
|
|
119
|
+
for (var prop in itm) {
|
|
120
|
+
if (first) {
|
|
121
|
+
first = false
|
|
122
|
+
qb2.where(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : " = '" + itm[prop] + "'"}`)
|
|
123
|
+
} else {
|
|
124
|
+
qb2.andWhere(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : " = '" + itm[prop] + "'"}`)
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
})
|
|
128
|
+
)
|
|
129
|
+
})
|
|
130
|
+
})
|
|
131
|
+
)
|
|
132
|
+
} else {
|
|
86
133
|
if (limit > 0) {
|
|
87
|
-
qb.orderBy(
|
|
88
|
-
.limit(limit)
|
|
134
|
+
qb.orderBy('RANDOM()').limit(limit)
|
|
89
135
|
}
|
|
90
|
-
|
|
136
|
+
}
|
|
137
|
+
|
|
91
138
|
let inventories: Inventory[] = await qb.getMany()
|
|
92
139
|
|
|
93
140
|
if (!inventories.length) {
|
|
@@ -234,7 +281,7 @@ export class CycleCountWorksheetController extends WorksheetController {
|
|
|
234
281
|
await this.updateOrderTargets([targetInventory])
|
|
235
282
|
|
|
236
283
|
//If all tally, remove lockedQty, lockedWeight, lockedUomValue
|
|
237
|
-
if(!isChanged) {
|
|
284
|
+
if (!isChanged) {
|
|
238
285
|
inventory.lockedQty = 0
|
|
239
286
|
inventory.lockedWeight = 0
|
|
240
287
|
inventory.lockedUomValue = 0
|
|
@@ -256,9 +303,9 @@ export class CycleCountWorksheetController extends WorksheetController {
|
|
|
256
303
|
targetInventory.inspectedUomValue = null
|
|
257
304
|
targetInventory.inspectedLocation = null
|
|
258
305
|
targetInventory.status =
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
306
|
+
targetInventory.status === ORDER_INVENTORY_STATUS.RELOCATED
|
|
307
|
+
? ORDER_INVENTORY_STATUS.MISSING
|
|
308
|
+
: ORDER_INVENTORY_STATUS.INSPECTING
|
|
262
309
|
targetInventory.updater = this.user
|
|
263
310
|
await this.updateOrderTargets([targetInventory])
|
|
264
311
|
|
|
@@ -285,15 +332,22 @@ export class CycleCountWorksheetController extends WorksheetController {
|
|
|
285
332
|
worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY
|
|
286
333
|
worksheetDetail.updater = this.user
|
|
287
334
|
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
288
|
-
|
|
335
|
+
|
|
289
336
|
targetInventory.status = ORDER_INVENTORY_STATUS.MISSING
|
|
290
337
|
targetInventory.updater = this.user
|
|
291
|
-
await this.updateOrderTargets([targetInventory])
|
|
338
|
+
await this.updateOrderTargets([targetInventory])
|
|
292
339
|
}
|
|
293
340
|
|
|
294
|
-
async addExtraPallet(
|
|
341
|
+
async addExtraPallet(
|
|
342
|
+
cycleCountNo: string,
|
|
343
|
+
palletId: string,
|
|
344
|
+
inspectedBatchNo: string,
|
|
345
|
+
inspectedQty: number,
|
|
346
|
+
inspectedUomValue: number,
|
|
347
|
+
locationName: string
|
|
348
|
+
): Promise<void> {
|
|
295
349
|
const inventoryCheck: InventoryCheck = await this.findRefOrder(
|
|
296
|
-
InventoryCheck,
|
|
350
|
+
InventoryCheck,
|
|
297
351
|
{
|
|
298
352
|
name: cycleCountNo,
|
|
299
353
|
status: ORDER_STATUS.INSPECTING
|
|
@@ -304,26 +358,31 @@ export class CycleCountWorksheetController extends WorksheetController {
|
|
|
304
358
|
const bizplace: Bizplace = inventoryCheck.bizplace
|
|
305
359
|
const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')
|
|
306
360
|
let inventory: Inventory = await qb
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
361
|
+
.where('INV.domain = :domainId', { domainId: this.domain.id })
|
|
362
|
+
.andWhere('INV.bizplace = :bizplaceId', { bizplaceId: bizplace.id })
|
|
363
|
+
.andWhere('INV.palletId = :palletId', { palletId })
|
|
364
|
+
.andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })
|
|
365
|
+
.andWhere(
|
|
366
|
+
new Brackets(qb => {
|
|
367
|
+
qb.where('INV.lockedQty ISNULL')
|
|
368
|
+
qb.orWhere('INV.lockedQty = 0')
|
|
369
|
+
})
|
|
370
|
+
)
|
|
371
|
+
.getOne()
|
|
318
372
|
if (!inventory) throw new Error('Failed to find inventory')
|
|
319
373
|
|
|
320
374
|
const worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({
|
|
321
|
-
where: {
|
|
375
|
+
where: {
|
|
376
|
+
domain: this.domain,
|
|
377
|
+
type: WORKSHEET_TYPE.CYCLE_COUNT,
|
|
378
|
+
status: WORKSHEET_STATUS.EXECUTING,
|
|
379
|
+
inventoryCheck
|
|
380
|
+
}
|
|
322
381
|
})
|
|
323
382
|
const location: Location = await this.trxMgr.getRepository(Location).findOne({
|
|
324
383
|
where: { domain: this.domain, name: locationName }
|
|
325
384
|
})
|
|
326
|
-
|
|
385
|
+
|
|
327
386
|
let targetInventory: OrderInventory = new OrderInventory()
|
|
328
387
|
targetInventory.domain = this.domain
|
|
329
388
|
targetInventory.bizplace = bizplace
|
|
@@ -338,7 +397,7 @@ export class CycleCountWorksheetController extends WorksheetController {
|
|
|
338
397
|
targetInventory.inspectedLocation = location
|
|
339
398
|
targetInventory.creator = this.user
|
|
340
399
|
targetInventory.updater = this.user
|
|
341
|
-
await this.updateOrderTargets([targetInventory])
|
|
400
|
+
await this.updateOrderTargets([targetInventory])
|
|
342
401
|
|
|
343
402
|
let worksheetDetail: WorksheetDetail = new WorksheetDetail()
|
|
344
403
|
worksheetDetail.domain = this.domain
|
|
@@ -353,34 +412,40 @@ export class CycleCountWorksheetController extends WorksheetController {
|
|
|
353
412
|
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
354
413
|
}
|
|
355
414
|
|
|
356
|
-
async relocatePallet(
|
|
415
|
+
async relocatePallet(
|
|
416
|
+
worksheetDetailName: string,
|
|
417
|
+
inspectedBatchNo: string,
|
|
418
|
+
inspectedQty: number,
|
|
419
|
+
inspectedUomValue: number,
|
|
420
|
+
inspectedLocationName: string
|
|
421
|
+
): Promise<void> {
|
|
357
422
|
let worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({
|
|
358
423
|
where: { domain: this.domain, name: worksheetDetailName, type: WORKSHEET_TYPE.CYCLE_COUNT },
|
|
359
424
|
relations: ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']
|
|
360
425
|
})
|
|
361
|
-
|
|
426
|
+
|
|
362
427
|
if (!worksheetDetail) throw new Error('Failed to find worksheet detail')
|
|
363
|
-
|
|
428
|
+
|
|
364
429
|
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
365
430
|
const location: Location = targetInventory?.inventory?.location
|
|
366
431
|
if (location.name === inspectedLocationName) throw new Error(`You can't relocate at same location`)
|
|
367
|
-
|
|
432
|
+
|
|
368
433
|
const inspectedLocation: Location = await this.trxMgr.getRepository(Location).findOne({
|
|
369
434
|
where: { name: inspectedLocationName, domain: this.domain }
|
|
370
435
|
})
|
|
371
|
-
|
|
436
|
+
|
|
372
437
|
worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY
|
|
373
438
|
worksheetDetail.updater = this.user
|
|
374
439
|
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
375
|
-
|
|
440
|
+
|
|
376
441
|
targetInventory.inspectedLocation = inspectedLocation
|
|
377
442
|
targetInventory.inspectedBatchNo = inspectedBatchNo
|
|
378
443
|
targetInventory.inspectedQty = inspectedQty
|
|
379
444
|
targetInventory.inspectedWeight = 0
|
|
380
|
-
targetInventory.inspectedUomValue = inspectedUomValue
|
|
445
|
+
targetInventory.inspectedUomValue = inspectedUomValue
|
|
381
446
|
targetInventory.status = ORDER_INVENTORY_STATUS.RELOCATED
|
|
382
447
|
targetInventory.updater = this.user
|
|
383
|
-
await this.updateOrderTargets([targetInventory])
|
|
448
|
+
await this.updateOrderTargets([targetInventory])
|
|
384
449
|
}
|
|
385
450
|
|
|
386
451
|
async completeCycleCount(inventoryCheckNo: string): Promise<Worksheet> {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
2
|
-
import {
|
|
2
|
+
import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
3
3
|
import { Inventory, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'
|
|
4
|
+
|
|
4
5
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
5
6
|
import { Worksheet, WorksheetDetail } from '../../entities'
|
|
6
7
|
import { VasWorksheetController } from '../vas/vas-worksheet-controller'
|
|
@@ -18,6 +19,13 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
18
19
|
)
|
|
19
20
|
const orderInventories: OrderInventory[] = releaseGood.orderInventories
|
|
20
21
|
|
|
22
|
+
const existingPackingWorksheet: Worksheet = await this.trxMgr
|
|
23
|
+
.getRepository(Worksheet)
|
|
24
|
+
.findOne({
|
|
25
|
+
where: { domain: this.domain, releaseGood, type: WORKSHEET_TYPE.PACKING, status: WORKSHEET_STATUS.DEACTIVATED }
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
if (existingPackingWorksheet) throw new Error('There is existing packing worksheet that has been generated')
|
|
21
29
|
let worksheet: Worksheet = await this.createWorksheet(releaseGood, WORKSHEET_TYPE.PACKING)
|
|
22
30
|
|
|
23
31
|
if (orderInventories.every((oi: OrderInventory) => oi.inventory?.id) || releaseGood.crossDocking) {
|
|
@@ -44,6 +52,8 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
44
52
|
async activatePacking(worksheetNo: string): Promise<Worksheet> {
|
|
45
53
|
let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.PACKING, [
|
|
46
54
|
'releaseGood',
|
|
55
|
+
'releaseGood.bizplace',
|
|
56
|
+
'releaseGood.bizplace.domain',
|
|
47
57
|
'worksheetDetails',
|
|
48
58
|
'worksheetDetails.targetInventory'
|
|
49
59
|
])
|
|
@@ -67,12 +77,14 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
67
77
|
return worksheet
|
|
68
78
|
}
|
|
69
79
|
|
|
70
|
-
async packing(worksheetDetailName: string, packedQty: number): Promise<
|
|
80
|
+
async packing(worksheetDetailName: string, packedQty: number): Promise<WorksheetDetail> {
|
|
71
81
|
let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
|
|
72
82
|
worksheetDetailName,
|
|
73
83
|
WORKSHEET_TYPE.PACKING,
|
|
74
84
|
[
|
|
75
85
|
'worksheet',
|
|
86
|
+
'worksheet.bizplace',
|
|
87
|
+
'worksheet.bizplace.domain',
|
|
76
88
|
'targetInventory',
|
|
77
89
|
'targetInventory.releaseGood',
|
|
78
90
|
'targetInventory.inventory',
|
|
@@ -96,15 +108,18 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
96
108
|
|
|
97
109
|
worksheetDetail.status = WORKSHEET_STATUS.DONE
|
|
98
110
|
worksheetDetail.updater = this.user
|
|
99
|
-
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
111
|
+
worksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
112
|
+
return worksheetDetail
|
|
100
113
|
}
|
|
101
114
|
|
|
102
|
-
async scanProductPacking(worksheetDetailName: string, productBarcode: string): Promise<
|
|
115
|
+
async scanProductPacking(worksheetDetailName: string, productBarcode: string): Promise<WorksheetDetail> {
|
|
103
116
|
let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
|
|
104
117
|
worksheetDetailName,
|
|
105
118
|
WORKSHEET_TYPE.PACKING,
|
|
106
119
|
[
|
|
107
120
|
'worksheet',
|
|
121
|
+
'worksheet.bizplace',
|
|
122
|
+
'worksheet.bizplace.domain',
|
|
108
123
|
'targetInventory',
|
|
109
124
|
'targetInventory.releaseGood',
|
|
110
125
|
'targetInventory.inventory',
|
|
@@ -147,6 +162,8 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
147
162
|
} else {
|
|
148
163
|
await this.trxMgr.getRepository(OrderInventory).save(targetInventory)
|
|
149
164
|
}
|
|
165
|
+
|
|
166
|
+
return worksheetDetail
|
|
150
167
|
}
|
|
151
168
|
|
|
152
169
|
async completePacking(releaseGoodNo: string): Promise<Worksheet> {
|
|
@@ -1,27 +1,29 @@
|
|
|
1
|
+
import { In } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { Bizplace } from '@things-factory/biz-base'
|
|
4
|
+
import { generateId } from '@things-factory/id-rule-base'
|
|
2
5
|
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
3
6
|
import {
|
|
7
|
+
ORDER_INVENTORY_STATUS,
|
|
8
|
+
ORDER_STATUS,
|
|
4
9
|
OrderInventory,
|
|
5
10
|
OrderNoGenerator,
|
|
6
11
|
OrderVas,
|
|
7
|
-
ORDER_INVENTORY_STATUS,
|
|
8
|
-
ORDER_STATUS,
|
|
9
12
|
ReleaseGood
|
|
10
13
|
} from '@things-factory/sales-base'
|
|
11
|
-
import { generateId } from '@things-factory/id-rule-base'
|
|
12
14
|
import { Setting } from '@things-factory/setting-base'
|
|
13
|
-
import { In } from 'typeorm'
|
|
14
15
|
import {
|
|
15
16
|
Inventory,
|
|
16
17
|
INVENTORY_STATUS,
|
|
17
18
|
INVENTORY_TRANSACTION_TYPE,
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
Location,
|
|
20
|
+
LOCATION_TYPE
|
|
20
21
|
} from '@things-factory/warehouse-base'
|
|
21
|
-
|
|
22
|
+
|
|
23
|
+
import { TASK_NUMBER_RULE_TYPE, TASK_NUMBER_SETTING_KEY, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
22
24
|
import { Worksheet, WorksheetDetail } from '../../entities'
|
|
23
|
-
import { VasWorksheetController } from '../vas/vas-worksheet-controller'
|
|
24
25
|
import { WorksheetNoGenerator } from '../../utils'
|
|
26
|
+
import { VasWorksheetController } from '../vas/vas-worksheet-controller'
|
|
25
27
|
|
|
26
28
|
export class PickingWorksheetController extends VasWorksheetController {
|
|
27
29
|
async generatePickingWorksheet(releaseGoodNo: string): Promise<Worksheet> {
|
|
@@ -157,7 +159,9 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
157
159
|
let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.PICKING, [
|
|
158
160
|
'releaseGood',
|
|
159
161
|
'releaseGood.bizplace',
|
|
162
|
+
'domain',
|
|
160
163
|
'bizplace',
|
|
164
|
+
'bizplace.domain',
|
|
161
165
|
'bizplace.company',
|
|
162
166
|
'bizplace.company.domain',
|
|
163
167
|
'worksheetDetails',
|
|
@@ -203,8 +207,10 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
203
207
|
let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.BATCH_PICKING, [
|
|
204
208
|
'worksheetDetails',
|
|
205
209
|
'worksheetDetails.targetInventory',
|
|
210
|
+
'worksheetDetails.targetInventory.releaseGood',
|
|
206
211
|
'worksheetDetails.targetInventory.product',
|
|
207
212
|
'bizplace',
|
|
213
|
+
'bizplace.domain',
|
|
208
214
|
'bizplace.company',
|
|
209
215
|
'bizplace.company.domain'
|
|
210
216
|
])
|
|
@@ -251,6 +257,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
251
257
|
batchId: string,
|
|
252
258
|
productId: string,
|
|
253
259
|
packingType: string,
|
|
260
|
+
packingSize: number,
|
|
254
261
|
worksheetDetails: Partial<WorksheetDetail>[]
|
|
255
262
|
): Promise<void> {
|
|
256
263
|
// 1. Remove prev worksheet details if it's exists
|
|
@@ -265,7 +272,8 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
265
272
|
worksheet.worksheetDetails,
|
|
266
273
|
batchId,
|
|
267
274
|
productId,
|
|
268
|
-
packingType
|
|
275
|
+
packingType,
|
|
276
|
+
packingSize
|
|
269
277
|
)
|
|
270
278
|
// Delete order inventories
|
|
271
279
|
if (prevWorksheetDetails?.length) {
|
|
@@ -301,6 +309,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
301
309
|
newTargetInventory.batchId = batchId
|
|
302
310
|
newTargetInventory.product = product
|
|
303
311
|
newTargetInventory.packingType = packingType
|
|
312
|
+
newTargetInventory.packingSize = packingSize
|
|
304
313
|
newTargetInventory.creator = this.user
|
|
305
314
|
newTargetInventory.updater = this.user
|
|
306
315
|
newTargetInventory = await this.trxMgr.getRepository(OrderInventory).save(newTargetInventory)
|
|
@@ -319,7 +328,8 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
319
328
|
worksheetNo: string,
|
|
320
329
|
batchId: string,
|
|
321
330
|
productId: string,
|
|
322
|
-
packingType: string
|
|
331
|
+
packingType: string,
|
|
332
|
+
packingSize: number
|
|
323
333
|
): Promise<void> {
|
|
324
334
|
const worksheet: Worksheet = await this.findWorksheetByNo(worksheetNo, [
|
|
325
335
|
'worksheetDetails',
|
|
@@ -333,6 +343,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
333
343
|
batchId,
|
|
334
344
|
productId,
|
|
335
345
|
packingType,
|
|
346
|
+
packingSize,
|
|
336
347
|
['targetInventory', 'targetInventory.inventory']
|
|
337
348
|
)
|
|
338
349
|
|
|
@@ -363,6 +374,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
363
374
|
batchId,
|
|
364
375
|
product: { id: productId },
|
|
365
376
|
packingType,
|
|
377
|
+
packingSize,
|
|
366
378
|
status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT
|
|
367
379
|
},
|
|
368
380
|
{ status: ORDER_INVENTORY_STATUS.PENDING_SPLIT, updater: this.user, updatedAt: new Date() }
|
|
@@ -849,6 +861,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
849
861
|
},
|
|
850
862
|
relations: [
|
|
851
863
|
'bizplace',
|
|
864
|
+
'bizplace.domain',
|
|
852
865
|
'worksheetDetails',
|
|
853
866
|
'worksheetDetails.targetInventory',
|
|
854
867
|
'worksheetDetails.targetInventory.releaseGood'
|
|
@@ -901,6 +914,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
901
914
|
standardBatchId: string,
|
|
902
915
|
standardProductId: string,
|
|
903
916
|
standardPackingType: string,
|
|
917
|
+
standardPackingSize: number,
|
|
904
918
|
relations: string[] = ['targetInventory', 'targetInventory.product']
|
|
905
919
|
): Promise<WorksheetDetail[]> {
|
|
906
920
|
for (let wsd of worksheetDetails) {
|
|
@@ -913,7 +927,8 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
913
927
|
(wsd: WorksheetDetail) =>
|
|
914
928
|
wsd.targetInventory.batchId === standardBatchId &&
|
|
915
929
|
wsd.targetInventory.product.id === standardProductId &&
|
|
916
|
-
wsd.targetInventory.packingType === standardPackingType
|
|
930
|
+
wsd.targetInventory.packingType === standardPackingType &&
|
|
931
|
+
wsd.targetInventory.packingSize === standardPackingSize
|
|
917
932
|
)
|
|
918
933
|
|
|
919
934
|
for (let wsd of worksheetDetails) {
|