@things-factory/worksheet-base 5.0.0-alpha.4 → 5.0.0-alpha.40
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 +9 -3
- package/dist-server/controllers/ecommerce/sellercraft-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 +10 -0
- 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 +352 -11
- 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 +110 -3
- 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 +45 -21
- 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-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 +15 -0
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +10 -3
- 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/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 +26 -2
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.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 +152 -132
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.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-picking.js +6 -19
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/index.js +2 -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/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/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/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/worksheets.js +18 -0
- 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 +4 -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-picking-worksheet-details.js +4 -2
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.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 +33 -6
- package/dist-server/graphql/types/worksheet/index.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 +3 -0
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-info.js +1 -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-detail/index.js +0 -2
- package/dist-server/graphql/types/worksheet-detail/index.js.map +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/package.json +17 -17
- package/server/constants/template.ts +1 -0
- package/server/controllers/ecommerce/sellercraft-controller.ts +10 -3
- 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 +13 -0
- package/server/controllers/outbound/packing-worksheet-controller.ts +224 -9
- package/server/controllers/outbound/picking-worksheet-controller.ts +465 -16
- package/server/controllers/outbound/returning-worksheet-controller.ts +12 -1
- package/server/controllers/outbound/sorting-worksheet-controller.ts +149 -4
- package/server/controllers/render-fm-grn.ts +266 -0
- package/server/controllers/render-grn.ts +57 -23
- package/server/controllers/render-invoices.ts +119 -72
- 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 +18 -2
- package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +13 -4
- 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/inventories-by-pallet.ts +2 -0
- package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +41 -8
- 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/picking/assign-picking-worker.ts +15 -11
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +5 -20
- package/server/graphql/resolvers/worksheet/picking/index.ts +3 -1
- package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +62 -61
- package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +24 -0
- package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +5 -4
- package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +5 -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/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/worksheets.ts +26 -0
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +10 -12
- package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +4 -2
- package/server/graphql/types/worksheet/find-release-orders-by-task-no.ts +8 -0
- package/server/graphql/types/worksheet/index.ts +33 -6
- package/server/graphql/types/worksheet/picking-assignment-status.ts +2 -2
- package/server/graphql/types/worksheet/worksheet-detail-info.ts +3 -0
- package/server/graphql/types/worksheet/worksheet-info.ts +1 -0
- package/server/graphql/types/worksheet/worksheet-patch.ts +1 -0
- package/server/graphql/types/worksheet-detail/index.ts +0 -2
- package/server/index.ts +5 -0
- package/server/routes.ts +17 -0
- package/server/utils/inventory-util.ts +15 -23
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { In } from 'typeorm'
|
|
1
|
+
import { Equal, In, Not } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { Bizplace } from '@things-factory/biz-base'
|
|
4
4
|
import { generateId } from '@things-factory/id-rule-base'
|
|
@@ -14,8 +14,11 @@ import {
|
|
|
14
14
|
import { Setting } from '@things-factory/setting-base'
|
|
15
15
|
import {
|
|
16
16
|
Inventory,
|
|
17
|
+
INVENTORY_ITEM_SOURCE,
|
|
17
18
|
INVENTORY_STATUS,
|
|
18
19
|
INVENTORY_TRANSACTION_TYPE,
|
|
20
|
+
InventoryItem,
|
|
21
|
+
InventoryNoGenerator,
|
|
19
22
|
Location,
|
|
20
23
|
LOCATION_TYPE
|
|
21
24
|
} from '@things-factory/warehouse-base'
|
|
@@ -443,26 +446,69 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
443
446
|
detail.product?.id === product.id
|
|
444
447
|
)
|
|
445
448
|
|
|
446
|
-
if (!foundProductDetail) {
|
|
449
|
+
if (!foundProductDetail && !product?.isRequireSerialNumberScanningOutbound) {
|
|
447
450
|
const roProductDetail: ProductDetail = productDetails.find(
|
|
448
451
|
(parentDetail: ProductDetail) =>
|
|
449
452
|
parentDetail.packingType === packingType && parentDetail.packingSize == packingSize
|
|
450
453
|
)
|
|
451
454
|
|
|
452
455
|
pickedQty = await this.getChildQty(productDetails, productBarcode, roProductDetail)
|
|
453
|
-
if (pickedQty > releaseQty) {
|
|
456
|
+
if (pickedQty + targetInventory.pickedQty > releaseQty) {
|
|
454
457
|
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))
|
|
455
458
|
}
|
|
459
|
+
} else if (!foundProductDetail) {
|
|
460
|
+
throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
|
|
456
461
|
}
|
|
457
462
|
|
|
458
|
-
if (product?.
|
|
459
|
-
if (!serialNumber || serialNumber == '')
|
|
463
|
+
if (product?.isRequireSerialNumberScanningOutbound) {
|
|
464
|
+
if (!serialNumber || serialNumber == '') {
|
|
460
465
|
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `require serial number`))
|
|
466
|
+
}
|
|
461
467
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
468
|
+
let totalInventoryItems = await this.trxMgr.getRepository(InventoryItem).count({
|
|
469
|
+
where: {
|
|
470
|
+
inventory,
|
|
471
|
+
status: Not(In([INVENTORY_STATUS.TERMINATED, INVENTORY_STATUS.PICKED]))
|
|
472
|
+
}
|
|
473
|
+
})
|
|
474
|
+
|
|
475
|
+
let foundSerialNumber: InventoryItem = await this.trxMgr
|
|
476
|
+
.getRepository(InventoryItem)
|
|
477
|
+
.findOne({ where: { domain: this.domain, serialNumber: serialNumber, product } })
|
|
478
|
+
|
|
479
|
+
if (foundSerialNumber) {
|
|
480
|
+
if (foundSerialNumber.inventoryId !== inventory.id) {
|
|
481
|
+
throw new Error('Serial Number scanned is in another inventory')
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
if (foundSerialNumber.outboundOrderId) {
|
|
485
|
+
let releaseGood: ReleaseGood = await this.trxMgr
|
|
486
|
+
.getRepository(ReleaseGood)
|
|
487
|
+
.findOne({ where: { id: foundSerialNumber.outboundOrderId } })
|
|
488
|
+
throw new Error(`Inventory Item is already picked in ${releaseGood.name}`)
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
foundSerialNumber.status = INVENTORY_STATUS.PICKING
|
|
492
|
+
foundSerialNumber.updater = this.user
|
|
493
|
+
foundSerialNumber.outboundOrderId = releaseGood.id
|
|
494
|
+
|
|
495
|
+
await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)
|
|
496
|
+
} else {
|
|
497
|
+
if (totalInventoryItems >= inventory.qty) {
|
|
498
|
+
throw new Error('Insufficient inventory quantity to scan new serial number')
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
let inventoryItem: InventoryItem = new InventoryItem()
|
|
502
|
+
inventoryItem.name = InventoryNoGenerator.inventoryItemName()
|
|
503
|
+
inventoryItem.serialNumber = serialNumber
|
|
504
|
+
inventoryItem.status = INVENTORY_STATUS.PICKING
|
|
505
|
+
inventoryItem.outboundOrderId = releaseGood.id
|
|
506
|
+
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
507
|
+
inventoryItem.product = product
|
|
508
|
+
inventoryItem.inventory = inventory
|
|
509
|
+
inventoryItem.domain = this.domain
|
|
510
|
+
|
|
511
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)
|
|
466
512
|
}
|
|
467
513
|
}
|
|
468
514
|
|
|
@@ -509,17 +555,95 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
509
555
|
//validation to prevent over release
|
|
510
556
|
if (inventory.qty <= 0) throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))
|
|
511
557
|
|
|
512
|
-
if (inventory.palletId !== palletId)
|
|
558
|
+
if (inventory.palletId !== palletId && !product?.isRequireSerialNumberScanningOutbound)
|
|
513
559
|
throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('Pallet ID', palletId, inventory.palletId))
|
|
514
560
|
|
|
515
|
-
if (product?.
|
|
516
|
-
if (!serialNumber || serialNumber == '')
|
|
561
|
+
if (product?.isRequireSerialNumberScanningOutbound) {
|
|
562
|
+
if (!serialNumber || serialNumber == '') {
|
|
517
563
|
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `require serial number`))
|
|
564
|
+
}
|
|
518
565
|
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
566
|
+
let totalInventoryItems = await this.trxMgr.getRepository(InventoryItem).count({
|
|
567
|
+
where: {
|
|
568
|
+
inventory,
|
|
569
|
+
status: Not(In([INVENTORY_STATUS.TERMINATED, INVENTORY_STATUS.PICKED]))
|
|
570
|
+
}
|
|
571
|
+
})
|
|
572
|
+
|
|
573
|
+
let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({
|
|
574
|
+
where: { domain: this.domain, serialNumber: serialNumber, product },
|
|
575
|
+
relations: ['product', 'inventory']
|
|
576
|
+
})
|
|
577
|
+
|
|
578
|
+
let scannedPalletIdInventory: Inventory = await this.trxMgr
|
|
579
|
+
.getRepository(Inventory)
|
|
580
|
+
.findOne({ where: { domain: this.domain, palletId }, relations: ['product'] })
|
|
581
|
+
|
|
582
|
+
if (foundSerialNumber) {
|
|
583
|
+
if (foundSerialNumber.outboundOrderId) {
|
|
584
|
+
let releaseGood: ReleaseGood = await this.trxMgr
|
|
585
|
+
.getRepository(ReleaseGood)
|
|
586
|
+
.findOne({ where: { id: foundSerialNumber.outboundOrderId } })
|
|
587
|
+
throw new Error(`Inventory Item is already picked in ${releaseGood.name}`)
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
foundSerialNumber.status = INVENTORY_STATUS.PICKING
|
|
591
|
+
foundSerialNumber.updater = this.user
|
|
592
|
+
foundSerialNumber.outboundOrderId = releaseGood.id
|
|
593
|
+
|
|
594
|
+
await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)
|
|
595
|
+
} else {
|
|
596
|
+
if (totalInventoryItems >= inventory.qty) {
|
|
597
|
+
throw new Error('Insufficient inventory quantity to scan new serial number')
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
let inventoryItem: InventoryItem = new InventoryItem()
|
|
601
|
+
inventoryItem.name = InventoryNoGenerator.inventoryItemName()
|
|
602
|
+
inventoryItem.serialNumber = serialNumber
|
|
603
|
+
inventoryItem.status = INVENTORY_STATUS.PICKING
|
|
604
|
+
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
605
|
+
inventoryItem.outboundOrderId = releaseGood.id
|
|
606
|
+
inventoryItem.product = product
|
|
607
|
+
inventoryItem.inventory = scannedPalletIdInventory
|
|
608
|
+
inventoryItem.domain = this.domain
|
|
609
|
+
|
|
610
|
+
foundSerialNumber = await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
if (inventory.palletId !== palletId) {
|
|
614
|
+
let existingOrderInv = await this.trxMgr.getRepository(OrderInventory).findOne({
|
|
615
|
+
where: {
|
|
616
|
+
domain: this.domain,
|
|
617
|
+
inventory: scannedPalletIdInventory,
|
|
618
|
+
releaseGood: releaseGood
|
|
619
|
+
}
|
|
620
|
+
})
|
|
621
|
+
|
|
622
|
+
if (existingOrderInv) {
|
|
623
|
+
//if replacement order inventory already existed in worksheet detail
|
|
624
|
+
await this.serialNumberReplacementForExistingOrderInv(
|
|
625
|
+
existingOrderInv,
|
|
626
|
+
targetInventory,
|
|
627
|
+
worksheetDetail,
|
|
628
|
+
foundSerialNumber
|
|
629
|
+
)
|
|
630
|
+
} else if (
|
|
631
|
+
scannedPalletIdInventory.batchId == inventory.batchId &&
|
|
632
|
+
scannedPalletIdInventory.product.id == product.id &&
|
|
633
|
+
scannedPalletIdInventory.product.packingType == product.packingType
|
|
634
|
+
) {
|
|
635
|
+
//if replacement order inventory does not exist
|
|
636
|
+
await this.serialNumberReplacement(
|
|
637
|
+
targetInventory,
|
|
638
|
+
scannedPalletIdInventory,
|
|
639
|
+
releaseGood,
|
|
640
|
+
product,
|
|
641
|
+
worksheetDetail,
|
|
642
|
+
foundSerialNumber
|
|
643
|
+
)
|
|
644
|
+
} else {
|
|
645
|
+
throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('Pallet ID', palletId, inventory.palletId))
|
|
646
|
+
}
|
|
523
647
|
}
|
|
524
648
|
}
|
|
525
649
|
|
|
@@ -829,6 +953,28 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
829
953
|
])
|
|
830
954
|
await this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })
|
|
831
955
|
|
|
956
|
+
let inventoryItems: InventoryItem = await this.trxMgr
|
|
957
|
+
.getRepository(InventoryItem)
|
|
958
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
959
|
+
|
|
960
|
+
if (inventoryItems.length > 0) {
|
|
961
|
+
inventoryItems.forEach((itm: InventoryItem) => {
|
|
962
|
+
itm.status = INVENTORY_STATUS.TERMINATED
|
|
963
|
+
itm.updater = this.user
|
|
964
|
+
})
|
|
965
|
+
|
|
966
|
+
// let inventoryLists = InventoryItems.filter(
|
|
967
|
+
// (value, index, self) => index === self.findIndex(itm => itm.inventory.id === value.inventory.id)
|
|
968
|
+
// )
|
|
969
|
+
|
|
970
|
+
// inventoryLists.forEach((itm: Inventory) => {
|
|
971
|
+
// if (itm.inventory.qty - itm.releaseQty == 0)
|
|
972
|
+
// this.transactionInventory(itm, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)
|
|
973
|
+
// })
|
|
974
|
+
|
|
975
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
|
|
976
|
+
}
|
|
977
|
+
|
|
832
978
|
let orderStatus: string
|
|
833
979
|
if (releaseGood?.packingOption) {
|
|
834
980
|
orderStatus = ORDER_STATUS.READY_TO_PACK
|
|
@@ -979,6 +1125,19 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
979
1125
|
worksheetDetail.updater = this.user
|
|
980
1126
|
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
981
1127
|
|
|
1128
|
+
let inventoryItems: InventoryItem = await this.trxMgr
|
|
1129
|
+
.getRepository(InventoryItem)
|
|
1130
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
1131
|
+
|
|
1132
|
+
if (inventoryItems.length > 0) {
|
|
1133
|
+
inventoryItems.forEach((itm: InventoryItem) => {
|
|
1134
|
+
itm.status = INVENTORY_STATUS.PICKED
|
|
1135
|
+
itm.updater = this.user
|
|
1136
|
+
})
|
|
1137
|
+
|
|
1138
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
|
|
1139
|
+
}
|
|
1140
|
+
|
|
982
1141
|
if (leftQty === 0) {
|
|
983
1142
|
inventory.status = INVENTORY_STATUS.TERMINATED
|
|
984
1143
|
await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)
|
|
@@ -989,4 +1148,294 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
989
1148
|
|
|
990
1149
|
return orderInventory
|
|
991
1150
|
}
|
|
1151
|
+
|
|
1152
|
+
private async serialNumberReplacementForExistingOrderInv(
|
|
1153
|
+
existingOrderInv,
|
|
1154
|
+
targetInventory,
|
|
1155
|
+
worksheetDetail,
|
|
1156
|
+
foundSerialNumber
|
|
1157
|
+
) {
|
|
1158
|
+
try {
|
|
1159
|
+
//1. update replacement inventory, order inventory, old inventory, old order inventory quantity
|
|
1160
|
+
let newInventory: Inventory = await this.trxMgr
|
|
1161
|
+
.getRepository(Inventory)
|
|
1162
|
+
.findOne({ where: { domain: this.domain, id: existingOrderInv?.inventoryId } })
|
|
1163
|
+
|
|
1164
|
+
let newOrderInventory: OrderInventory = await this.trxMgr
|
|
1165
|
+
.getRepository(OrderInventory)
|
|
1166
|
+
.findOne({ where: { domain: this.domain, id: existingOrderInv?.id } })
|
|
1167
|
+
|
|
1168
|
+
let oldInventory: Inventory = await this.trxMgr
|
|
1169
|
+
.getRepository(Inventory)
|
|
1170
|
+
.findOne({ where: { domain: this.domain, id: targetInventory?.inventory.id } })
|
|
1171
|
+
|
|
1172
|
+
let oldOrderInventory: OrderInventory = await this.trxMgr
|
|
1173
|
+
.getRepository(OrderInventory)
|
|
1174
|
+
.findOne({ where: { domain: this.domain, id: targetInventory?.id } })
|
|
1175
|
+
|
|
1176
|
+
//if replacement inventory quantity insufficient
|
|
1177
|
+
if (newInventory.qty - newInventory.lockedQty < targetInventory.releaseQty - targetInventory.pickedQty) {
|
|
1178
|
+
newOrderInventory.releaseQty += newInventory.qty - newInventory.lockedQty
|
|
1179
|
+
newOrderInventory.releaseUomValue += newInventory.uomValue - newInventory.lockedUomValue
|
|
1180
|
+
|
|
1181
|
+
oldOrderInventory.releaseQty -= newOrderInventory.releaseQty
|
|
1182
|
+
oldOrderInventory.releaseUomValue -= newOrderInventory.releaseUomValue
|
|
1183
|
+
|
|
1184
|
+
oldInventory.lockedQty -= newOrderInventory.releaseQty
|
|
1185
|
+
oldInventory.lockedUomValue -= newOrderInventory.releaseUomValue
|
|
1186
|
+
|
|
1187
|
+
newInventory.lockedQty = newInventory.qty
|
|
1188
|
+
newInventory.lockedUomValue = newInventory.uomValue
|
|
1189
|
+
} else {
|
|
1190
|
+
newOrderInventory.releaseQty += targetInventory.releaseQty - targetInventory.pickedQty
|
|
1191
|
+
newOrderInventory.releaseUomValue +=
|
|
1192
|
+
newOrderInventory.releaseQty * (targetInventory.releaseUomValue / targetInventory.releaseQty)
|
|
1193
|
+
|
|
1194
|
+
oldOrderInventory.releaseQty = targetInventory.pickedQty
|
|
1195
|
+
oldOrderInventory.status = ORDER_INVENTORY_STATUS.PICKED
|
|
1196
|
+
oldOrderInventory.releaseUomValue =
|
|
1197
|
+
(targetInventory.releaseUomValue / targetInventory.releaseQty) * oldOrderInventory.releaseQty
|
|
1198
|
+
|
|
1199
|
+
oldInventory.lockedQty -= targetInventory.releaseQty - targetInventory.pickedQty
|
|
1200
|
+
oldInventory.lockedUomValue =
|
|
1201
|
+
oldInventory.lockedQty * (targetInventory.releaseUomValue / targetInventory.releaseQty)
|
|
1202
|
+
|
|
1203
|
+
newInventory.lockedQty = newInventory.lockedQty + (targetInventory.releaseQty - targetInventory.pickedQty)
|
|
1204
|
+
newInventory.lockedUomValue =
|
|
1205
|
+
(targetInventory.releaseUomValue / targetInventory.releaseQty) * newInventory.lockedQty
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
newInventory = await this.trxMgr.getRepository(Inventory).save({ ...newInventory, updater: this.user })
|
|
1209
|
+
|
|
1210
|
+
newOrderInventory = await this.trxMgr.getRepository(OrderInventory).save({
|
|
1211
|
+
...newOrderInventory,
|
|
1212
|
+
status: INVENTORY_STATUS.PICKING,
|
|
1213
|
+
pickedQty: existingOrderInv.pickedQty++,
|
|
1214
|
+
updater: this.user
|
|
1215
|
+
})
|
|
1216
|
+
|
|
1217
|
+
oldInventory = await this.trxMgr.getRepository(Inventory).save({ ...oldInventory, updater: this.user })
|
|
1218
|
+
|
|
1219
|
+
foundSerialNumber = await this.trxMgr
|
|
1220
|
+
.getRepository(InventoryItem)
|
|
1221
|
+
.save({ ...foundSerialNumber, inventory: newInventory })
|
|
1222
|
+
|
|
1223
|
+
//2. update replacement worksheet detail
|
|
1224
|
+
await this.trxMgr.getRepository(WorksheetDetail).update(
|
|
1225
|
+
{
|
|
1226
|
+
targetInventory: existingOrderInv
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
status: WORKSHEET_STATUS.EXECUTING,
|
|
1230
|
+
updater: this.user
|
|
1231
|
+
}
|
|
1232
|
+
)
|
|
1233
|
+
|
|
1234
|
+
if (oldOrderInventory.releaseQty !== 0) {
|
|
1235
|
+
oldOrderInventory = await this.trxMgr
|
|
1236
|
+
.getRepository(OrderInventory)
|
|
1237
|
+
.save({ ...oldOrderInventory, updater: this.user })
|
|
1238
|
+
|
|
1239
|
+
await this.trxMgr.getRepository(WorksheetDetail).update(
|
|
1240
|
+
{
|
|
1241
|
+
name: worksheetDetail.name
|
|
1242
|
+
},
|
|
1243
|
+
{
|
|
1244
|
+
status: WORKSHEET_STATUS.DONE,
|
|
1245
|
+
updater: this.user
|
|
1246
|
+
}
|
|
1247
|
+
)
|
|
1248
|
+
} else {
|
|
1249
|
+
await this.trxMgr.getRepository(WorksheetDetail).delete(worksheetDetail.ild)
|
|
1250
|
+
await this.trxMgr.getRepository(OrderInventory).delete(targetInventory.id)
|
|
1251
|
+
}
|
|
1252
|
+
} catch (e) {}
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
private async serialNumberReplacement(
|
|
1256
|
+
targetInventory,
|
|
1257
|
+
scannedPalletIdInventory,
|
|
1258
|
+
releaseGood,
|
|
1259
|
+
product,
|
|
1260
|
+
worksheetDetail,
|
|
1261
|
+
foundSerialNumber
|
|
1262
|
+
) {
|
|
1263
|
+
try {
|
|
1264
|
+
//1. create new inventory, new order inventory, update old inventory, old order inventory quantity
|
|
1265
|
+
let newInventory: Inventory = await this.trxMgr
|
|
1266
|
+
.getRepository(Inventory)
|
|
1267
|
+
.findOne({ where: { id: scannedPalletIdInventory?.id } })
|
|
1268
|
+
|
|
1269
|
+
let oldInventory: Inventory = await this.trxMgr
|
|
1270
|
+
.getRepository(Inventory)
|
|
1271
|
+
.findOne({ where: { domain: this.domain, id: targetInventory?.inventory.id } })
|
|
1272
|
+
|
|
1273
|
+
let oldOrderInventory: OrderInventory = await this.trxMgr
|
|
1274
|
+
.getRepository(OrderInventory)
|
|
1275
|
+
.findOne({ where: { domain: this.domain, id: targetInventory?.id } })
|
|
1276
|
+
|
|
1277
|
+
let newOrderInventoryReleaseQty = 0
|
|
1278
|
+
let newOrderInventoryReleaseUomValue = 0
|
|
1279
|
+
|
|
1280
|
+
//if replacement inventory quantity insufficient
|
|
1281
|
+
if (newInventory.qty - newInventory.lockedQty < targetInventory.releaseQty - targetInventory.pickedQty) {
|
|
1282
|
+
newOrderInventoryReleaseQty = newInventory.qty - newInventory.lockedQty
|
|
1283
|
+
newOrderInventoryReleaseUomValue = newInventory.uomValue - newInventory.lockedUomValue
|
|
1284
|
+
|
|
1285
|
+
oldOrderInventory.releaseQty -= newOrderInventoryReleaseQty
|
|
1286
|
+
oldOrderInventory.releaseUomValue -= newOrderInventoryReleaseUomValue
|
|
1287
|
+
|
|
1288
|
+
oldInventory.lockedQty -= newOrderInventoryReleaseQty
|
|
1289
|
+
oldInventory.lockedUomValue -= newOrderInventoryReleaseUomValue
|
|
1290
|
+
|
|
1291
|
+
newInventory.lockedQty = newInventory.qty
|
|
1292
|
+
newInventory.lockedUomValue = newInventory.uomValue
|
|
1293
|
+
} else {
|
|
1294
|
+
newOrderInventoryReleaseQty = targetInventory.releaseQty - targetInventory.pickedQty
|
|
1295
|
+
newOrderInventoryReleaseUomValue =
|
|
1296
|
+
newOrderInventoryReleaseQty * (targetInventory.releaseUomValue / targetInventory.releaseQty)
|
|
1297
|
+
|
|
1298
|
+
oldOrderInventory.releaseQty = targetInventory.pickedQty
|
|
1299
|
+
oldOrderInventory.status = ORDER_INVENTORY_STATUS.PICKED
|
|
1300
|
+
oldOrderInventory.releaseUomValue =
|
|
1301
|
+
(targetInventory.releaseUomValue / targetInventory.releaseQty) * oldOrderInventory.releaseQty
|
|
1302
|
+
|
|
1303
|
+
oldInventory.lockedQty -= newOrderInventoryReleaseQty
|
|
1304
|
+
oldInventory.lockedUomValue -= newOrderInventoryReleaseUomValue
|
|
1305
|
+
|
|
1306
|
+
newInventory.lockedQty = newInventory.lockedQty + (targetInventory.releaseQty - targetInventory.pickedQty)
|
|
1307
|
+
newInventory.lockedUomValue =
|
|
1308
|
+
(targetInventory.releaseUomValue / targetInventory.releaseQty) * newInventory.lockedQty
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
newInventory = await this.trxMgr.getRepository(Inventory).save({ ...newInventory, updater: this.user })
|
|
1312
|
+
|
|
1313
|
+
let newTargetInventory = (({ id, ...targetInventory }) => targetInventory)(targetInventory)
|
|
1314
|
+
|
|
1315
|
+
let newOrderInventory = await this.trxMgr.getRepository(OrderInventory).save({
|
|
1316
|
+
...newTargetInventory,
|
|
1317
|
+
domain: this.domain,
|
|
1318
|
+
name: OrderNoGenerator.orderInventory(),
|
|
1319
|
+
releaseGood,
|
|
1320
|
+
releaseQty: newOrderInventoryReleaseQty,
|
|
1321
|
+
releaseUomValue: newOrderInventoryReleaseUomValue,
|
|
1322
|
+
pickedQty: 1,
|
|
1323
|
+
product,
|
|
1324
|
+
inventory: scannedPalletIdInventory,
|
|
1325
|
+
creator: this.user,
|
|
1326
|
+
updater: this.user
|
|
1327
|
+
})
|
|
1328
|
+
|
|
1329
|
+
oldInventory = await this.trxMgr.getRepository(Inventory).save({ ...oldInventory, updater: this.user })
|
|
1330
|
+
|
|
1331
|
+
foundSerialNumber = await this.trxMgr
|
|
1332
|
+
.getRepository(InventoryItem)
|
|
1333
|
+
.save({ ...foundSerialNumber, inventory: newInventory })
|
|
1334
|
+
|
|
1335
|
+
//3. create new worksheet detail
|
|
1336
|
+
let NewWorksheetDetail = (({ id, ...worksheetDetail }) => worksheetDetail)(worksheetDetail)
|
|
1337
|
+
await this.trxMgr.getRepository(WorksheetDetail).save({
|
|
1338
|
+
...NewWorksheetDetail,
|
|
1339
|
+
domain: this.domain,
|
|
1340
|
+
name: WorksheetNoGenerator.pickingDetail(),
|
|
1341
|
+
targetInventory: newOrderInventory,
|
|
1342
|
+
status: WORKSHEET_STATUS.EXECUTING,
|
|
1343
|
+
creator: this.user,
|
|
1344
|
+
updater: this.user
|
|
1345
|
+
})
|
|
1346
|
+
|
|
1347
|
+
//if old order inventory release quantity is 0 then delete
|
|
1348
|
+
if (oldOrderInventory.releaseQty !== 0) {
|
|
1349
|
+
oldOrderInventory = await this.trxMgr
|
|
1350
|
+
.getRepository(OrderInventory)
|
|
1351
|
+
.save({ ...oldOrderInventory, updater: this.user })
|
|
1352
|
+
|
|
1353
|
+
//4. update old worksheet detail
|
|
1354
|
+
worksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).update(
|
|
1355
|
+
{
|
|
1356
|
+
name: worksheetDetail.name
|
|
1357
|
+
},
|
|
1358
|
+
{
|
|
1359
|
+
status: WORKSHEET_STATUS.DONE,
|
|
1360
|
+
updater: this.user
|
|
1361
|
+
}
|
|
1362
|
+
)
|
|
1363
|
+
} else {
|
|
1364
|
+
await this.trxMgr.getRepository(WorksheetDetail).delete(worksheetDetail.id)
|
|
1365
|
+
await this.trxMgr.getRepository(OrderInventory).delete(targetInventory.id)
|
|
1366
|
+
}
|
|
1367
|
+
} catch (e) {}
|
|
1368
|
+
}
|
|
1369
|
+
|
|
1370
|
+
async undoSerialNumberPicking(worksheetDetailName: string, inventoryItemId: string): Promise<void> {
|
|
1371
|
+
const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({
|
|
1372
|
+
where: { name: worksheetDetailName, domain: this.domain, status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED)) },
|
|
1373
|
+
relations: [
|
|
1374
|
+
'worksheet',
|
|
1375
|
+
'worksheet.releaseGood',
|
|
1376
|
+
'targetInventory',
|
|
1377
|
+
'targetInventory.product',
|
|
1378
|
+
'targetInventory.inventory'
|
|
1379
|
+
]
|
|
1380
|
+
})
|
|
1381
|
+
|
|
1382
|
+
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
1383
|
+
let releaseGood: ReleaseGood = worksheetDetail.worksheet.releaseGood
|
|
1384
|
+
|
|
1385
|
+
if (
|
|
1386
|
+
targetInventory.releaseQty == targetInventory.pickedQty &&
|
|
1387
|
+
targetInventory.status == ORDER_INVENTORY_STATUS.PICKED
|
|
1388
|
+
) {
|
|
1389
|
+
targetInventory.status = INVENTORY_STATUS.PICKING
|
|
1390
|
+
|
|
1391
|
+
await this.trxMgr
|
|
1392
|
+
.getRepository(WorksheetDetail)
|
|
1393
|
+
.update({ id: worksheetDetail.id }, { status: WORKSHEET_STATUS.EXECUTING })
|
|
1394
|
+
|
|
1395
|
+
targetInventory.inventory.qty += targetInventory.releaseQty
|
|
1396
|
+
targetInventory.inventory.uomValue =
|
|
1397
|
+
Math.round((targetInventory.inventory.uomValue + targetInventory.releaseUomValue) * 100) / 100
|
|
1398
|
+
targetInventory.inventory.lockedQty = targetInventory.inventory.lockedQty + targetInventory.releaseQty
|
|
1399
|
+
targetInventory.inventory.lockedUomValue =
|
|
1400
|
+
Math.round((targetInventory.inventory.lockedUomValue + targetInventory.releaseUomValue) * 100) / 100
|
|
1401
|
+
|
|
1402
|
+
await this.trxMgr.getRepository(Inventory).save(targetInventory.inventory)
|
|
1403
|
+
}
|
|
1404
|
+
|
|
1405
|
+
let InventoryItems: InventoryItem = await this.trxMgr
|
|
1406
|
+
.getRepository(InventoryItem)
|
|
1407
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
1408
|
+
|
|
1409
|
+
let removeInventoryItem: InventoryItem = await this.trxMgr
|
|
1410
|
+
.getRepository(InventoryItem)
|
|
1411
|
+
.findOne({ where: { id: inventoryItemId } })
|
|
1412
|
+
|
|
1413
|
+
if (InventoryItems.length > 0) {
|
|
1414
|
+
InventoryItems.forEach((itm: InventoryItem) => {
|
|
1415
|
+
itm.status = INVENTORY_STATUS.PICKING
|
|
1416
|
+
itm.updater = this.user
|
|
1417
|
+
})
|
|
1418
|
+
|
|
1419
|
+
await this.trxMgr.getRepository(InventoryItem).save(InventoryItems)
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1422
|
+
if (removeInventoryItem.source == INVENTORY_ITEM_SOURCE.OUTBOUND) {
|
|
1423
|
+
await this.trxMgr.getRepository(InventoryItem).delete(removeInventoryItem.id)
|
|
1424
|
+
} else {
|
|
1425
|
+
await this.trxMgr.getRepository(InventoryItem).update(
|
|
1426
|
+
{
|
|
1427
|
+
id: inventoryItemId
|
|
1428
|
+
},
|
|
1429
|
+
{
|
|
1430
|
+
status: INVENTORY_STATUS.STORED,
|
|
1431
|
+
outboundOrderId: null,
|
|
1432
|
+
updater: this.user
|
|
1433
|
+
}
|
|
1434
|
+
)
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
targetInventory.pickedQty--
|
|
1438
|
+
targetInventory.updater = this.user
|
|
1439
|
+
await this.updateOrderTargets([targetInventory])
|
|
1440
|
+
}
|
|
992
1441
|
}
|
|
@@ -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
|