@things-factory/worksheet-base 4.3.2 → 4.4.0-alpha.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/constants/index.js +5 -1
- package/dist-server/constants/index.js.map +1 -1
- package/dist-server/controllers/ecommerce/index.js +5 -1
- package/dist-server/controllers/ecommerce/index.js.map +1 -1
- package/dist-server/controllers/inbound/index.js +5 -1
- package/dist-server/controllers/inbound/index.js.map +1 -1
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js +3 -9
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/index.js +5 -2
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/inspect/index.js +5 -1
- package/dist-server/controllers/inspect/index.js.map +1 -1
- package/dist-server/controllers/outbound/index.js +5 -1
- package/dist-server/controllers/outbound/index.js.map +1 -1
- package/dist-server/controllers/outbound/loading-worksheet-controller.js +10 -47
- package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +5 -142
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js +20 -116
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/render-grn.js +18 -18
- package/dist-server/controllers/vas/index.js +5 -1
- package/dist-server/controllers/vas/index.js.map +1 -1
- package/dist-server/graphql/index.js +5 -1
- package/dist-server/graphql/index.js.map +1 -1
- package/dist-server/graphql/resolvers/index.js +5 -1
- package/dist-server/graphql/resolvers/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +1 -14
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/loading.js +10 -3
- package/dist-server/graphql/resolvers/worksheet/loading/loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +21 -55
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +0 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.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 +6 -8
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/index.js +1 -2
- package/dist-server/graphql/resolvers/worksheet/picking/index.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-worksheet.js +1 -10
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js +6 -11
- 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/vas-transactions/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +0 -2
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheets.js +2 -17
- 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 +3 -5
- 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 +4 -15
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +1 -4
- 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 +2 -6
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
- package/dist-server/graphql/types/index.js +5 -1
- package/dist-server/graphql/types/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +0 -10
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js +0 -1
- package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js +0 -2
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-info.js +0 -2
- package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet.js +0 -1
- package/dist-server/graphql/types/worksheet/worksheet.js.map +1 -1
- package/dist-server/index.js +5 -1
- package/dist-server/index.js.map +1 -1
- package/dist-server/routes.js +0 -4
- package/dist-server/routes.js.map +1 -1
- package/dist-server/utils/index.js +5 -1
- package/dist-server/utils/index.js.map +1 -1
- package/package.json +17 -17
- package/server/controllers/inbound/unloading-worksheet-controller.ts +3 -14
- package/server/controllers/index.ts +0 -1
- package/server/controllers/outbound/loading-worksheet-controller.ts +17 -83
- package/server/controllers/outbound/picking-worksheet-controller.ts +7 -178
- package/server/controllers/outbound/sorting-worksheet-controller.ts +27 -167
- package/server/controllers/render-grn.ts +18 -18
- package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +0 -14
- package/server/graphql/resolvers/worksheet/loading/loading.ts +12 -5
- package/server/graphql/resolvers/worksheet/loading-worksheet.ts +13 -66
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +1 -1
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +1 -1
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +11 -13
- package/server/graphql/resolvers/worksheet/picking/index.ts +1 -3
- package/server/graphql/resolvers/worksheet/picking/picking.ts +4 -30
- package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +4 -7
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +2 -13
- package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +9 -13
- package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +4 -5
- package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +4 -5
- package/server/graphql/resolvers/worksheet/worksheet.ts +0 -2
- package/server/graphql/resolvers/worksheet/worksheets.ts +2 -26
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +3 -12
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +7 -22
- package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +2 -6
- package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +1 -7
- package/server/graphql/types/worksheet/index.ts +0 -10
- package/server/graphql/types/worksheet/loaded-worksheet-detail.ts +0 -1
- package/server/graphql/types/worksheet/worksheet-detail-info.ts +0 -2
- package/server/graphql/types/worksheet/worksheet-info.ts +0 -2
- package/server/graphql/types/worksheet/worksheet.ts +0 -1
- package/server/routes.ts +0 -5
- package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js +0 -15
- package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js.map +0 -1
- package/server/controllers/render-fm-grn.ts +0 -266
- package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +0 -25
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { IsNull, In } from 'typeorm'
|
|
2
|
-
|
|
3
1
|
import { VasWorksheetController } from '../vas/vas-worksheet-controller'
|
|
4
2
|
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
5
3
|
import {
|
|
@@ -8,22 +6,11 @@ import {
|
|
|
8
6
|
InventoryItem,
|
|
9
7
|
INVENTORY_STATUS,
|
|
10
8
|
InventoryNoGenerator,
|
|
11
|
-
INVENTORY_ITEM_SOURCE
|
|
12
|
-
Tote,
|
|
13
|
-
TOTE_STATUS
|
|
9
|
+
INVENTORY_ITEM_SOURCE
|
|
14
10
|
} 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'
|
|
11
|
+
import { ReleaseGood, OrderInventory, ORDER_INVENTORY_STATUS, ORDER_STATUS } from '@things-factory/sales-base'
|
|
24
12
|
import { Worksheet, WorksheetDetail } from '../../entities'
|
|
25
13
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
26
|
-
import { temporaryGetRemainInventoryAmount } from 'server/graphql/resolvers/worksheet/vas-transactions/common-utils'
|
|
27
14
|
|
|
28
15
|
export class SortingWorksheetController extends VasWorksheetController {
|
|
29
16
|
async generateSortingWorksheet(
|
|
@@ -75,8 +62,7 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
75
62
|
taskNo: string,
|
|
76
63
|
releaseGoodNo: string,
|
|
77
64
|
productBarcode: string,
|
|
78
|
-
serialNumber: string
|
|
79
|
-
toteNo: string
|
|
65
|
+
serialNumber: string
|
|
80
66
|
): Promise<void> {
|
|
81
67
|
const worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({
|
|
82
68
|
where: {
|
|
@@ -89,8 +75,6 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
89
75
|
'worksheetDetails',
|
|
90
76
|
'worksheetDetails.targetInventory',
|
|
91
77
|
'worksheetDetails.targetInventory.product',
|
|
92
|
-
'worksheetDetails.targetInventory.orderProduct',
|
|
93
|
-
'worksheetDetails.targetInventory.bizplace',
|
|
94
78
|
'worksheetDetails.targetInventory.inventory',
|
|
95
79
|
'worksheetDetails.targetInventory.inventory.product',
|
|
96
80
|
'worksheetDetails.targetInventory.inventory.product.productDetails',
|
|
@@ -220,17 +204,6 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
220
204
|
} else {
|
|
221
205
|
await this.updateOrderTargets([matchingOI])
|
|
222
206
|
}
|
|
223
|
-
|
|
224
|
-
if (toteNo) {
|
|
225
|
-
await this.toteScanning(
|
|
226
|
-
toteNo,
|
|
227
|
-
matchingOI.orderProduct,
|
|
228
|
-
matchingOI,
|
|
229
|
-
1,
|
|
230
|
-
releaseGood,
|
|
231
|
-
matchingOI.bizplace
|
|
232
|
-
)
|
|
233
|
-
}
|
|
234
207
|
}
|
|
235
208
|
})
|
|
236
209
|
)
|
|
@@ -243,8 +216,7 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
243
216
|
releaseGoodNo: string,
|
|
244
217
|
productId: string,
|
|
245
218
|
sortingQty: number,
|
|
246
|
-
serialNumber: string
|
|
247
|
-
toteNo: string
|
|
219
|
+
serialNumber: string
|
|
248
220
|
): Promise<void> {
|
|
249
221
|
const worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({
|
|
250
222
|
where: {
|
|
@@ -257,8 +229,6 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
257
229
|
'worksheetDetails',
|
|
258
230
|
'worksheetDetails.targetInventory',
|
|
259
231
|
'worksheetDetails.targetInventory.product',
|
|
260
|
-
'worksheetDetails.targetInventory.orderProduct',
|
|
261
|
-
'worksheetDetails.targetInventory.bizplace',
|
|
262
232
|
'worksheetDetails.targetInventory.inventory',
|
|
263
233
|
'worksheetDetails.targetInventory.inventory.product',
|
|
264
234
|
'worksheetDetails.targetInventory.inventory.product.productDetails',
|
|
@@ -324,17 +294,6 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
324
294
|
}
|
|
325
295
|
}
|
|
326
296
|
|
|
327
|
-
if (toteNo) {
|
|
328
|
-
await this.toteScanning(
|
|
329
|
-
toteNo,
|
|
330
|
-
matchingOI.orderProduct,
|
|
331
|
-
matchingOI,
|
|
332
|
-
sortingQty,
|
|
333
|
-
releaseGood,
|
|
334
|
-
matchingOI.bizplace
|
|
335
|
-
)
|
|
336
|
-
}
|
|
337
|
-
|
|
338
297
|
if (releaseQty != matchingOI?.sortedQty && sortingQty != 0) {
|
|
339
298
|
if (product?.isRequireSerialNumberScanningOutbound) {
|
|
340
299
|
matchingOI.sortedQty += sortingQty
|
|
@@ -379,50 +338,34 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
379
338
|
}
|
|
380
339
|
|
|
381
340
|
async completeOrderSorting(releaseGoodNo: string): Promise<ReleaseGood> {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
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)
|
|
341
|
+
let releaseGood: ReleaseGood = await this.findRefOrder(
|
|
342
|
+
ReleaseGood,
|
|
343
|
+
{
|
|
344
|
+
domain: this.domain,
|
|
345
|
+
name: releaseGoodNo,
|
|
346
|
+
status: ORDER_STATUS.SORTING
|
|
347
|
+
},
|
|
348
|
+
['bizplace', 'orderInventories']
|
|
349
|
+
)
|
|
408
350
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
351
|
+
releaseGood.status = ORDER_STATUS.READY_TO_LOAD
|
|
352
|
+
releaseGood.updater = this.user
|
|
353
|
+
await this.trxMgr.getRepository(ReleaseGood).save(releaseGood)
|
|
412
354
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
itm.updater = this.user
|
|
417
|
-
})
|
|
355
|
+
let inventoryItems: InventoryItem = await this.trxMgr
|
|
356
|
+
.getRepository(InventoryItem)
|
|
357
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
418
358
|
|
|
419
|
-
|
|
420
|
-
|
|
359
|
+
if (inventoryItems.length > 0) {
|
|
360
|
+
inventoryItems.forEach((itm: InventoryItem) => {
|
|
361
|
+
itm.status = INVENTORY_STATUS.TERMINATED
|
|
362
|
+
itm.updater = this.user
|
|
363
|
+
})
|
|
421
364
|
|
|
422
|
-
|
|
423
|
-
} catch (e) {
|
|
424
|
-
throw e
|
|
365
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
|
|
425
366
|
}
|
|
367
|
+
|
|
368
|
+
return releaseGood
|
|
426
369
|
}
|
|
427
370
|
|
|
428
371
|
async completeWorksheetSorting(taskNo: string): Promise<Worksheet> {
|
|
@@ -440,16 +383,6 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
440
383
|
]
|
|
441
384
|
})
|
|
442
385
|
|
|
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
|
-
|
|
453
386
|
this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })
|
|
454
387
|
|
|
455
388
|
const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
|
|
@@ -465,77 +398,4 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
465
398
|
|
|
466
399
|
return worksheet
|
|
467
400
|
}
|
|
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
|
-
}
|
|
541
401
|
}
|
|
@@ -52,25 +52,25 @@ export async function renderGRN({ grnNo, timezoneOffSet }, context: any) {
|
|
|
52
52
|
})
|
|
53
53
|
|
|
54
54
|
const qbReducedInventory = getRepository(ReducedInventoryHistory)
|
|
55
|
-
.createQueryBuilder(
|
|
56
|
-
.select(
|
|
57
|
-
.addSelect(
|
|
58
|
-
.addSelect(
|
|
59
|
-
.addSelect(
|
|
60
|
-
.addSelect(
|
|
61
|
-
.addSelect(
|
|
62
|
-
.addSelect(
|
|
63
|
-
.addSelect(
|
|
64
|
-
.addSelect(`string_agg(distinct expiration_date::varchar,', ' order by expiration_date::varchar)`,
|
|
65
|
-
.addSelect(`string_agg(distinct pallet_id::varchar,', ' order by pallet_id::varchar)`,
|
|
66
|
-
.where(
|
|
67
|
-
.andWhere(
|
|
55
|
+
.createQueryBuilder(`ivh`)
|
|
56
|
+
.select(`product_id`, `productId`)
|
|
57
|
+
.addSelect(`batch_id`, `batchId`)
|
|
58
|
+
.addSelect(`reusable_pallet_id`, `reusablePalletId`)
|
|
59
|
+
.addSelect(`packing_type`, `packingType`)
|
|
60
|
+
.addSelect(`sum(qty)`, `qty`)
|
|
61
|
+
.addSelect(`sum(uom_value)`, `uomValue`)
|
|
62
|
+
.addSelect(`uom`, `uom`)
|
|
63
|
+
.addSelect(`count(distinct pallet_id)`, `pallet`)
|
|
64
|
+
.addSelect(`string_agg(distinct expiration_date::varchar,', ' order by expiration_date::varchar)`, `expiryDate`)
|
|
65
|
+
.addSelect(`string_agg(distinct pallet_id::varchar,', ' order by pallet_id::varchar)`, `palletId`)
|
|
66
|
+
.where(`ivh.domain_id = :domainId`, { domainId: domain.id })
|
|
67
|
+
.andWhere(`ivh.ref_order_id = :refOrderId`, { refOrderId: foundGAN.id })
|
|
68
68
|
.andWhere(`ivh.transaction_type = 'UNLOADING'`)
|
|
69
|
-
.groupBy(
|
|
70
|
-
.addGroupBy(
|
|
71
|
-
.addGroupBy(
|
|
72
|
-
.addGroupBy(
|
|
73
|
-
.addGroupBy(
|
|
69
|
+
.groupBy(`reusable_pallet_id`)
|
|
70
|
+
.addGroupBy(`product_id`)
|
|
71
|
+
.addGroupBy(`batch_id`)
|
|
72
|
+
.addGroupBy(`packing_type`)
|
|
73
|
+
.addGroupBy(`uom`)
|
|
74
74
|
.getRawMany()
|
|
75
75
|
|
|
76
76
|
// 5. find domain contact point
|
|
@@ -3,7 +3,6 @@ import { getRepository, SelectQueryBuilder } from 'typeorm'
|
|
|
3
3
|
import { ORDER_INVENTORY_STATUS } from '@things-factory/sales-base'
|
|
4
4
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
|
|
5
5
|
import { Worksheet, WorksheetDetail } from '../../../entities'
|
|
6
|
-
import { InventoryChange } from '@things-factory/warehouse-base'
|
|
7
6
|
|
|
8
7
|
export const batchPickingWorksheetResolver = {
|
|
9
8
|
async batchPickingWorksheet(_: any, { taskNo, locationSortingRules }, context: any) {
|
|
@@ -43,7 +42,6 @@ export const batchPickingWorksheetResolver = {
|
|
|
43
42
|
.addSelect('LOC.column', 'column')
|
|
44
43
|
.addSelect('LOC.shelf', 'shelf')
|
|
45
44
|
.addSelect('BIN_LOC.name', 'binLocationName')
|
|
46
|
-
.addSelect('WSD.status', 'status')
|
|
47
45
|
.leftJoin('WSD.targetInventory', 'T_INV')
|
|
48
46
|
.leftJoin('T_INV.inventory', 'INV')
|
|
49
47
|
.leftJoin('T_INV.product', 'PROD')
|
|
@@ -72,7 +70,6 @@ export const batchPickingWorksheetResolver = {
|
|
|
72
70
|
.addGroupBy('LOC.column')
|
|
73
71
|
.addGroupBy('LOC.row')
|
|
74
72
|
.addGroupBy('LOC.shelf')
|
|
75
|
-
.addGroupBy('WSD.status')
|
|
76
73
|
|
|
77
74
|
if (locationSortingRules?.length > 0) {
|
|
78
75
|
locationSortingRules.forEach((rule: { name: string; desc: boolean }) => {
|
|
@@ -89,15 +86,6 @@ export const batchPickingWorksheetResolver = {
|
|
|
89
86
|
partnerDomainId: worksheet.bizplace?.domain.id
|
|
90
87
|
},
|
|
91
88
|
worksheetDetailInfos: items.map(async (item: any) => {
|
|
92
|
-
const inventoryChangesCount: number = await getRepository(InventoryChange).count({
|
|
93
|
-
where: {
|
|
94
|
-
inventory: item.inventoryId,
|
|
95
|
-
status: 'PENDING',
|
|
96
|
-
transactionType: 'MISSING'
|
|
97
|
-
},
|
|
98
|
-
relations: ['inventory', 'product']
|
|
99
|
-
})
|
|
100
|
-
|
|
101
89
|
return {
|
|
102
90
|
palletId: item?.palletId,
|
|
103
91
|
cartonId: item?.cartonId,
|
|
@@ -110,8 +98,6 @@ export const batchPickingWorksheetResolver = {
|
|
|
110
98
|
},
|
|
111
99
|
qty: item?.qty,
|
|
112
100
|
releaseQty: item.releaseQty,
|
|
113
|
-
hasMissingInventoryChanges: inventoryChangesCount > 0 ? true : false,
|
|
114
|
-
status: item.status,
|
|
115
101
|
pickedQty: item.pickedQty,
|
|
116
102
|
packingType: item?.packingType,
|
|
117
103
|
packingSize: item?.packingSize,
|
|
@@ -9,7 +9,7 @@ import { WorksheetDetail } from '../../../../entities'
|
|
|
9
9
|
export const loadingResolver = {
|
|
10
10
|
async loading(_: any, { loadedWorksheetDetails, releaseGoodNo, orderInfo }, context: any) {
|
|
11
11
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
12
|
-
|
|
12
|
+
await loading(tx, domain, user, loadedWorksheetDetails, releaseGoodNo)
|
|
13
13
|
const worksheetController: WorksheetController = new WorksheetController(tx, domain, user)
|
|
14
14
|
const releaseGood: ReleaseGood = await worksheetController.findRefOrder(
|
|
15
15
|
ReleaseGood,
|
|
@@ -18,7 +18,14 @@ export const loadingResolver = {
|
|
|
18
18
|
)
|
|
19
19
|
|
|
20
20
|
const loadingWorksheetController: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
|
|
21
|
-
let targetInventories: OrderInventory[] =
|
|
21
|
+
let targetInventories: OrderInventory[] = []
|
|
22
|
+
for (let worksheetDetail of loadedWorksheetDetails) {
|
|
23
|
+
worksheetDetail = await loadingWorksheetController.findWorksheetDetailByName(worksheetDetail.name, [
|
|
24
|
+
'targetInventory'
|
|
25
|
+
])
|
|
26
|
+
const targetInventory = worksheetDetail.targetInventory
|
|
27
|
+
targetInventories.push(targetInventory)
|
|
28
|
+
}
|
|
22
29
|
|
|
23
30
|
const bizplace: Bizplace = releaseGood.bizplace
|
|
24
31
|
orderInfo = {
|
|
@@ -34,9 +41,9 @@ export async function loading(
|
|
|
34
41
|
tx: EntityManager,
|
|
35
42
|
domain: Domain,
|
|
36
43
|
user: User,
|
|
37
|
-
worksheetDetails: Partial<WorksheetDetail & { loadedQty: number }
|
|
44
|
+
worksheetDetails: Partial<WorksheetDetail & { loadedQty: number }>[],
|
|
38
45
|
releaseGoodNo: string
|
|
39
|
-
): Promise<
|
|
46
|
+
): Promise<void> {
|
|
40
47
|
const worksheetController: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
|
|
41
|
-
|
|
48
|
+
await worksheetController.loading(releaseGoodNo, worksheetDetails)
|
|
42
49
|
}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { Equal, getRepository, In, Not, SelectQueryBuilder } from 'typeorm'
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
ORDER_STATUS,
|
|
5
|
-
ORDER_INVENTORY_STATUS,
|
|
6
|
-
OrderInventory,
|
|
7
|
-
ReleaseGood,
|
|
8
|
-
OrderTote,
|
|
9
|
-
OrderToteItem
|
|
10
|
-
} from '@things-factory/sales-base'
|
|
3
|
+
import { ORDER_STATUS, ORDER_INVENTORY_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
11
4
|
import { Domain } from '@things-factory/shell'
|
|
12
5
|
import { Inventory, Location } from '@things-factory/warehouse-base'
|
|
13
6
|
|
|
@@ -34,9 +27,7 @@ export const loadingWorksheetResolver = {
|
|
|
34
27
|
.innerJoinAndSelect('releaseGood.bizplace', 'bizplace')
|
|
35
28
|
.innerJoinAndSelect('bizplace.domain', 'domain')
|
|
36
29
|
.where('orderInventory.domain_id = :domainId', { domainId: domain.id })
|
|
37
|
-
.andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
|
|
38
|
-
orderInventoryStatus: [ORDER_INVENTORY_STATUS.LOADING, ORDER_INVENTORY_STATUS.LOADED]
|
|
39
|
-
})
|
|
30
|
+
.andWhere('orderInventory.status IN (:...orderInventoryStatus)', { orderInventoryStatus: [ORDER_INVENTORY_STATUS.LOADING, ORDER_INVENTORY_STATUS.LOADED] })
|
|
40
31
|
.andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })
|
|
41
32
|
.andWhere('releaseGood.status = :status', { status: ORDER_STATUS.LOADING })
|
|
42
33
|
|
|
@@ -50,10 +41,6 @@ export const loadingWorksheetResolver = {
|
|
|
50
41
|
|
|
51
42
|
if (!releaseGood) throw new Error(`Release good doesn't exists.`)
|
|
52
43
|
|
|
53
|
-
let [orderTotes, orderTotesTotal]: OrderTote = await getRepository(OrderTote).findAndCount({
|
|
54
|
-
where: { releaseGood: releaseGood.id }
|
|
55
|
-
})
|
|
56
|
-
|
|
57
44
|
const foundWorksheet: Worksheet = await fetchExecutingWorksheet(
|
|
58
45
|
domain,
|
|
59
46
|
releaseGood.bizplace,
|
|
@@ -61,7 +48,7 @@ export const loadingWorksheetResolver = {
|
|
|
61
48
|
WORKSHEET_TYPE.LOADING,
|
|
62
49
|
releaseGood
|
|
63
50
|
)
|
|
64
|
-
|
|
51
|
+
const foundWSD: WorksheetDetail[] = await getRepository(WorksheetDetail).find({
|
|
65
52
|
where: {
|
|
66
53
|
domain,
|
|
67
54
|
worksheet: foundWorksheet,
|
|
@@ -70,50 +57,21 @@ export const loadingWorksheetResolver = {
|
|
|
70
57
|
},
|
|
71
58
|
relations: [
|
|
72
59
|
'targetInventory',
|
|
73
|
-
'targetInventory.orderProduct',
|
|
74
60
|
'targetInventory.inventory',
|
|
75
61
|
'targetInventory.inventory.location',
|
|
76
62
|
'targetInventory.inventory.product'
|
|
77
63
|
]
|
|
78
64
|
})
|
|
79
65
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
let wsdIndex = foundWSD.findIndex(
|
|
90
|
-
itm => !itm?.toteName && itm.targetInventory.id == toteItems[i].orderInventory.id
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
if (wsdIndex >= 0) {
|
|
94
|
-
let filterWSD: any = JSON.parse(JSON.stringify(foundWSD[wsdIndex]))
|
|
95
|
-
let uomValue =
|
|
96
|
-
Math.round((filterWSD.targetInventory.releaseUomValue / filterWSD.targetInventory.releaseQty) * 100) / 100
|
|
97
|
-
|
|
98
|
-
foundWSD[wsdIndex].targetInventory.releaseQty -= toteItems[i].qty
|
|
99
|
-
foundWSD[wsdIndex].targetInventory.pickedQty -= toteItems[i].qty
|
|
100
|
-
foundWSD[wsdIndex].targetInventory.releaseUomValue = foundWSD[wsdIndex].targetInventory.releaseQty * uomValue
|
|
101
|
-
|
|
102
|
-
filterWSD.targetInventory.releaseQty = toteItems[i].qty
|
|
103
|
-
filterWSD.targetInventory.pickedQty = toteItems[i].qty
|
|
104
|
-
filterWSD.targetInventory.releaseUomValue = toteItems[i].qty * uomValue
|
|
105
|
-
filterWSD.toteName = toteItems[i].orderTote.name
|
|
106
|
-
toteWsd.push(filterWSD)
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
foundWSD = foundWSD.concat(toteWsd)
|
|
111
|
-
foundWSD.sort((a, b) => (a.toteName > b.toteName ? 1 : -1))
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
let worksheetDetailInfos = foundWSD
|
|
115
|
-
.filter(itm => itm.targetInventory.releaseQty > 0)
|
|
116
|
-
.map((loadingWSD: any) => {
|
|
66
|
+
return {
|
|
67
|
+
worksheetInfo: {
|
|
68
|
+
releaseGood,
|
|
69
|
+
bizplaceName: releaseGood.bizplace.name,
|
|
70
|
+
startedAt: foundWorksheet.startedAt,
|
|
71
|
+
refNo: releaseGood.refNo,
|
|
72
|
+
ownCollection: releaseGood.ownTransport
|
|
73
|
+
},
|
|
74
|
+
worksheetDetailInfos: foundWSD.map(async (loadingWSD: WorksheetDetail) => {
|
|
117
75
|
const targetInventory: OrderInventory = loadingWSD.targetInventory
|
|
118
76
|
const inventory: Inventory = targetInventory.inventory
|
|
119
77
|
return {
|
|
@@ -129,20 +87,9 @@ export const loadingWorksheetResolver = {
|
|
|
129
87
|
targetName: targetInventory.name,
|
|
130
88
|
packingType: inventory.packingType,
|
|
131
89
|
packingSize: inventory.packingSize,
|
|
132
|
-
inventory: targetInventory.inventory
|
|
133
|
-
toteName: loadingWSD.toteName
|
|
90
|
+
inventory: targetInventory.inventory
|
|
134
91
|
}
|
|
135
92
|
})
|
|
136
|
-
|
|
137
|
-
return {
|
|
138
|
-
worksheetInfo: {
|
|
139
|
-
releaseGood,
|
|
140
|
-
bizplaceName: releaseGood.bizplace.name,
|
|
141
|
-
startedAt: foundWorksheet.startedAt,
|
|
142
|
-
refNo: releaseGood.refNo,
|
|
143
|
-
ownCollection: releaseGood.ownTransport
|
|
144
|
-
},
|
|
145
|
-
worksheetDetailInfos
|
|
146
93
|
}
|
|
147
94
|
}
|
|
148
95
|
}
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
12
12
|
import { Domain } from '@things-factory/shell'
|
|
13
13
|
import { Inventory, Location } from '@things-factory/warehouse-base'
|
|
14
|
+
import { ProductDetail } from '@things-factory/product-base'
|
|
14
15
|
|
|
15
16
|
import { WORKSHEET_TYPE } from '../../../constants'
|
|
16
17
|
import { SellercraftController } from '../../../controllers'
|
|
@@ -166,7 +167,6 @@ export const packingWorksheetResolver = {
|
|
|
166
167
|
shippingProvider: shippingProvider ? shippingProvider : '',
|
|
167
168
|
trackingNo: trackingNo ? trackingNo : '',
|
|
168
169
|
airwayBill: releaseGood?.airwayBill,
|
|
169
|
-
checkedRemarkBy: releaseGood?.checkedRemarkBy,
|
|
170
170
|
invoice: releaseGood?.invoice,
|
|
171
171
|
platform: marketplaceOrder ? marketplaceOrder.marketplaceStore.platform : 'operato',
|
|
172
172
|
marketplaceStoreId: marketplaceOrder ? marketplaceOrder.marketplaceStore.id : '',
|
|
@@ -42,7 +42,7 @@ export async function completeBatchPicking(
|
|
|
42
42
|
const worksheet = await pickingWSCtrl.completeBatchPicking(taskNo)
|
|
43
43
|
|
|
44
44
|
const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
|
|
45
|
-
const targetInventories: OrderInventory[] = worksheetDetails.
|
|
45
|
+
const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)
|
|
46
46
|
|
|
47
47
|
const sellercraft: Sellercraft = await tx
|
|
48
48
|
.getRepository(Sellercraft)
|
|
@@ -248,20 +248,18 @@ export async function completePicking(
|
|
|
248
248
|
})
|
|
249
249
|
|
|
250
250
|
if (!existLoadingWorksheet && !releaseGood.courierOption && !releaseGood.packingOption) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
loadingWorksheet = await pickingWSCtrl.findWorksheetById(loadingWorksheet.id)
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
const loadingWorksheetDetails: WorksheetDetail[] = loadingWorksheet.worksheetDetails
|
|
263
|
-
await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails)
|
|
251
|
+
const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
|
|
252
|
+
let loadingWorksheet: Worksheet = await loadingWSCtrl.generateLoadingWorksheet(
|
|
253
|
+
releaseGoodNo,
|
|
254
|
+
pickedTargetInventories
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
if (!loadingWorksheet.worksheetDetails?.length) {
|
|
258
|
+
loadingWorksheet = await pickingWSCtrl.findWorksheetById(loadingWorksheet.id)
|
|
264
259
|
}
|
|
260
|
+
|
|
261
|
+
const loadingWorksheetDetails: WorksheetDetail[] = loadingWorksheet.worksheetDetails
|
|
262
|
+
await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails)
|
|
265
263
|
} else {
|
|
266
264
|
const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
|
|
267
265
|
let loadingWorksheet: Worksheet = await loadingWSCtrl.updateLoadingWorksheet(
|
|
@@ -11,7 +11,6 @@ import { scanProductPickingResolver } from './scan-product-picking'
|
|
|
11
11
|
import { scanProductBatchPickingResolver } from './scan-product-batch-picking'
|
|
12
12
|
import { undoPickingAssigmentResolver } from './undo-picking-assignment'
|
|
13
13
|
import { undoSerialNumberPickingResolver } from './undo-serial-number-picking'
|
|
14
|
-
import { sealToteResolver } from './seal-tote'
|
|
15
14
|
|
|
16
15
|
export const Mutations = {
|
|
17
16
|
...assignPickingInventoriesResolver,
|
|
@@ -26,6 +25,5 @@ export const Mutations = {
|
|
|
26
25
|
...completeBatchPickingResolver,
|
|
27
26
|
...assignPickingWorkerResolver,
|
|
28
27
|
...fetchAndAssignPickingTaskResolver,
|
|
29
|
-
...undoSerialNumberPickingResolver
|
|
30
|
-
...sealToteResolver
|
|
28
|
+
...undoSerialNumberPickingResolver
|
|
31
29
|
}
|
|
@@ -4,25 +4,9 @@ import { EntityManager } from 'typeorm'
|
|
|
4
4
|
import { PickingWorksheetController } from '../../../../controllers'
|
|
5
5
|
|
|
6
6
|
export const pickingResolver = {
|
|
7
|
-
async picking(
|
|
8
|
-
_: any,
|
|
9
|
-
{ worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation, serialNumber, toteNo },
|
|
10
|
-
context: any
|
|
11
|
-
) {
|
|
7
|
+
async picking(_: any, { worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation, serialNumber }, context: any) {
|
|
12
8
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
13
|
-
await picking(
|
|
14
|
-
tx,
|
|
15
|
-
domain,
|
|
16
|
-
user,
|
|
17
|
-
worksheetDetailName,
|
|
18
|
-
worksheetType,
|
|
19
|
-
palletId,
|
|
20
|
-
locationName,
|
|
21
|
-
releaseQty,
|
|
22
|
-
binLocation,
|
|
23
|
-
serialNumber,
|
|
24
|
-
toteNo
|
|
25
|
-
)
|
|
9
|
+
await picking(tx, domain, user, worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation, serialNumber)
|
|
26
10
|
}
|
|
27
11
|
}
|
|
28
12
|
|
|
@@ -36,18 +20,8 @@ export async function picking(
|
|
|
36
20
|
locationName: string,
|
|
37
21
|
releaseQty: number,
|
|
38
22
|
binLocation?: string,
|
|
39
|
-
serialNumber?: string
|
|
40
|
-
toteNo?: string
|
|
23
|
+
serialNumber?: string
|
|
41
24
|
) {
|
|
42
25
|
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
43
|
-
await worksheetController.picking(
|
|
44
|
-
worksheetDetailName,
|
|
45
|
-
worksheetType,
|
|
46
|
-
palletId,
|
|
47
|
-
locationName,
|
|
48
|
-
releaseQty,
|
|
49
|
-
binLocation,
|
|
50
|
-
serialNumber,
|
|
51
|
-
toteNo
|
|
52
|
-
)
|
|
26
|
+
await worksheetController.picking(worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation, serialNumber)
|
|
53
27
|
}
|