@things-factory/worksheet-base 4.3.77 → 4.3.79-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js +3 -3
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +2 -4
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/loading-worksheet-controller.js +10 -4
- package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js +28 -14
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +40 -48
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js +12 -14
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/vas/vas-worksheet-controller.js +1 -2
- package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +16 -4
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +6 -0
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +1 -2
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +6 -6
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js +3 -3
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +67 -28
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +23 -8
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +30 -7
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js +23 -8
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +25 -8
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +112 -22
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +51 -25
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +266 -140
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +3 -2
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +39 -14
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +17 -17
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js +4 -4
- package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +5 -2
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js +11 -0
- package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js.map +1 -0
- package/dist-server/graphql/types/worksheet-detail/index.js +1 -0
- package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
- package/dist-server/utils/inventory-util.js +1 -98
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/dist-server/utils/worksheet-util.js +3 -1
- package/dist-server/utils/worksheet-util.js.map +1 -1
- package/package.json +17 -17
- package/server/controllers/inbound/unloading-worksheet-controller.ts +5 -4
- package/server/controllers/inspect/cycle-count-worksheet-controller.ts +2 -4
- package/server/controllers/outbound/loading-worksheet-controller.ts +9 -3
- package/server/controllers/outbound/packing-worksheet-controller.ts +30 -19
- package/server/controllers/outbound/picking-worksheet-controller.ts +39 -60
- package/server/controllers/outbound/sorting-worksheet-controller.ts +12 -12
- package/server/controllers/vas/vas-worksheet-controller.ts +2 -2
- package/server/controllers/worksheet-controller.ts +29 -8
- package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +6 -0
- package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +1 -2
- package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +2 -2
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +3 -7
- package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +5 -4
- package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +3 -1
- package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +77 -33
- package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +26 -9
- package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +34 -9
- package/server/graphql/resolvers/worksheet/packing/packing.ts +26 -9
- package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +28 -9
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +128 -23
- package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +1 -1
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +60 -30
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +2 -2
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +288 -149
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +3 -2
- package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +45 -15
- package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +1 -0
- package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +3 -2
- package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +4 -1
- package/server/graphql/types/worksheet/index.ts +5 -2
- package/server/graphql/types/worksheet/multiple-release-good-worksheet.ts +8 -0
- package/server/graphql/types/worksheet-detail/index.ts +1 -0
- package/server/utils/inventory-util.ts +1 -126
- package/server/utils/worksheet-util.ts +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worksheet-util.js","sourceRoot":"","sources":["../../server/utils/worksheet-util.ts"],"names":[],"mappings":";;;AACA,2DAA8F;AAE9F,qCAAkF;AAClF,4CAA+C;AAC/C,0CAAuC;AAEhC,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,QAAkB,EAClB,SAAmB,EACnB,IAAY,EACZ,QAA8D,EAC9D,MAAsB;IAEtB,MAAM,MAAM,GAA0B,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,oBAAS,CAAC,KAAI,IAAA,uBAAa,EAAC,oBAAS,CAAC,CAAA;IAClG,MAAM,aAAa,GAAmB;QACpC,KAAK,EAAE;YACL,MAAM;YACN,QAAQ;YACR,IAAI;SACL;QACD,SAAS;KACV,CAAA;IAED,IAAI,QAAQ,YAAY,0BAAa,EAAE;QACrC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAA;KAChD;SAAM,IAAI,QAAQ,YAAY,wBAAW,EAAE;QAC1C,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAA;KAC9C;SAAM,IAAI,QAAQ,YAAY,qBAAQ,EAAE;QACvC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAA;KAC3C;SAAM,IAAI,QAAQ,YAAY,wBAAW,EAAE;QAC1C,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAA;KAC9C;IAED,MAAM,SAAS,GAAc,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IAChE,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAA;IAEzF,IAAI,SAAS,CAAC,MAAM,KAAK,4BAAgB,CAAC,SAAS,EAAE;QACnD,OAAO,SAAS,CAAA;KACjB;SAAM,IAAI,SAAS,CAAC,MAAM,KAAK,4BAAgB,CAAC,IAAI,EAAE;QACrD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;KAClD;SAAM,IAAI,SAAS,CAAC,MAAM,KAAK,4BAAgB,CAAC,WAAW,EAAE;QAC5D,
|
|
1
|
+
{"version":3,"file":"worksheet-util.js","sourceRoot":"","sources":["../../server/utils/worksheet-util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/worksheet-base",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.79-alpha.1",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -24,21 +24,21 @@
|
|
|
24
24
|
"migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@things-factory/auth-base": "^4.3.
|
|
28
|
-
"@things-factory/biz-base": "^4.3.
|
|
29
|
-
"@things-factory/document-template-base": "^4.3.
|
|
30
|
-
"@things-factory/id-rule-base": "^4.3.
|
|
31
|
-
"@things-factory/integration-lmd": "^4.3.
|
|
32
|
-
"@things-factory/integration-marketplace": "^4.3.
|
|
33
|
-
"@things-factory/integration-sellercraft": "^4.3.
|
|
34
|
-
"@things-factory/integration-sftp": "^4.3.
|
|
35
|
-
"@things-factory/marketplace-base": "^4.3.
|
|
36
|
-
"@things-factory/notification": "^4.3.
|
|
37
|
-
"@things-factory/sales-base": "^4.3.
|
|
38
|
-
"@things-factory/setting-base": "^4.3.
|
|
39
|
-
"@things-factory/shell": "^4.3.
|
|
40
|
-
"@things-factory/transport-base": "^4.3.
|
|
41
|
-
"@things-factory/warehouse-base": "^4.3.
|
|
27
|
+
"@things-factory/auth-base": "^4.3.79-alpha.0",
|
|
28
|
+
"@things-factory/biz-base": "^4.3.79-alpha.0",
|
|
29
|
+
"@things-factory/document-template-base": "^4.3.79-alpha.0",
|
|
30
|
+
"@things-factory/id-rule-base": "^4.3.79-alpha.0",
|
|
31
|
+
"@things-factory/integration-lmd": "^4.3.79-alpha.0",
|
|
32
|
+
"@things-factory/integration-marketplace": "^4.3.79-alpha.0",
|
|
33
|
+
"@things-factory/integration-sellercraft": "^4.3.79-alpha.0",
|
|
34
|
+
"@things-factory/integration-sftp": "^4.3.79-alpha.0",
|
|
35
|
+
"@things-factory/marketplace-base": "^4.3.79-alpha.1",
|
|
36
|
+
"@things-factory/notification": "^4.3.79-alpha.0",
|
|
37
|
+
"@things-factory/sales-base": "^4.3.79-alpha.1",
|
|
38
|
+
"@things-factory/setting-base": "^4.3.79-alpha.0",
|
|
39
|
+
"@things-factory/shell": "^4.3.79-alpha.0",
|
|
40
|
+
"@things-factory/transport-base": "^4.3.79-alpha.0",
|
|
41
|
+
"@things-factory/warehouse-base": "^4.3.79-alpha.1"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "781aa433ce81cb1cd08d6a3c4abb2934f0a192c1"
|
|
44
44
|
}
|
|
@@ -31,12 +31,13 @@ import {
|
|
|
31
31
|
InventoryNoGenerator,
|
|
32
32
|
Location,
|
|
33
33
|
Pallet,
|
|
34
|
-
Warehouse
|
|
34
|
+
Warehouse,
|
|
35
|
+
generateInventoryHistory
|
|
35
36
|
} from '@things-factory/warehouse-base'
|
|
36
37
|
|
|
37
38
|
import { RULE_TYPE, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
38
39
|
import { Worksheet, WorksheetDetail } from '../../entities'
|
|
39
|
-
import { DateGenerator
|
|
40
|
+
import { DateGenerator } from '../../utils'
|
|
40
41
|
import { VasWorksheetController } from '../vas/vas-worksheet-controller'
|
|
41
42
|
|
|
42
43
|
export type UnloadingWorksheetDetail = Partial<WorksheetDetail> & {
|
|
@@ -177,7 +178,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
|
|
|
177
178
|
} else {
|
|
178
179
|
uom = orderProductDetail.uom
|
|
179
180
|
}
|
|
180
|
-
qty = (await this.getChildQty(productDetails, productBarcode, orderProductDetail)) * qty
|
|
181
|
+
qty = (await this.getChildQty(productDetails, productBarcode, orderProductDetail, orderProductDetail)) * qty
|
|
181
182
|
} else {
|
|
182
183
|
uom = foundProductDetail.uom
|
|
183
184
|
qty
|
|
@@ -520,7 +521,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
|
|
|
520
521
|
} else {
|
|
521
522
|
uom = orderProductDetail.uom
|
|
522
523
|
}
|
|
523
|
-
qty = await this.getChildQty(productDetails, productBarcode, orderProductDetail)
|
|
524
|
+
qty = await this.getChildQty(productDetails, productBarcode, orderProductDetail, orderProductDetail)
|
|
524
525
|
} else {
|
|
525
526
|
uom = foundProductDetail.uom
|
|
526
527
|
qty++
|
|
@@ -103,16 +103,14 @@ export class CycleCountWorksheetController extends WorksheetController {
|
|
|
103
103
|
let keyval = {
|
|
104
104
|
batchId: 'batch_id',
|
|
105
105
|
batchIdRef: 'batch_id_ref',
|
|
106
|
-
|
|
107
|
-
packingSize: 'packing_size',
|
|
108
|
-
productId: 'product_id'
|
|
106
|
+
productDetailId: 'product_detail_id'
|
|
109
107
|
}
|
|
110
108
|
|
|
111
109
|
qb.andWhere(
|
|
112
110
|
new Brackets(qb => {
|
|
113
111
|
orderInventory.forEach((itm, idx) => {
|
|
114
112
|
// sample itm value
|
|
115
|
-
// batchId: 'WO00019730', batchIdRef: null,
|
|
113
|
+
// batchId: 'WO00019730', batchIdRef: null, productDetailId: '1d679587-c713-42d6-bd0a-74e587e39cc7'
|
|
116
114
|
qb.orWhere(
|
|
117
115
|
new Brackets(qb2 => {
|
|
118
116
|
let first = true
|
|
@@ -12,11 +12,10 @@ import {
|
|
|
12
12
|
OrderToteItem,
|
|
13
13
|
OrderTote
|
|
14
14
|
} from '@things-factory/sales-base'
|
|
15
|
-
import { Inventory, INVENTORY_TRANSACTION_TYPE, Tote, TOTE_STATUS } from '@things-factory/warehouse-base'
|
|
15
|
+
import { Inventory, INVENTORY_TRANSACTION_TYPE, Tote, TOTE_STATUS, generateInventoryHistory } from '@things-factory/warehouse-base'
|
|
16
16
|
|
|
17
17
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
18
18
|
import { Worksheet, WorksheetDetail } from '../../entities'
|
|
19
|
-
import { generateInventoryHistory } from '../../utils'
|
|
20
19
|
import { VasWorksheetController } from '../vas/vas-worksheet-controller'
|
|
21
20
|
|
|
22
21
|
export class LoadingWorksheetController extends VasWorksheetController {
|
|
@@ -112,7 +111,13 @@ export class LoadingWorksheetController extends VasWorksheetController {
|
|
|
112
111
|
let worksheetDetail = await this.findExecutableWorksheetDetailByName(
|
|
113
112
|
worksheetDetails[i].name,
|
|
114
113
|
WORKSHEET_TYPE.LOADING,
|
|
115
|
-
[
|
|
114
|
+
[
|
|
115
|
+
'worksheet',
|
|
116
|
+
'targetInventory',
|
|
117
|
+
'targetInventory.inventory',
|
|
118
|
+
'targetInventory.product',
|
|
119
|
+
'targetInventory.productDetail'
|
|
120
|
+
]
|
|
116
121
|
)
|
|
117
122
|
|
|
118
123
|
const worksheet: Worksheet = worksheetDetail.worksheet
|
|
@@ -170,6 +175,7 @@ export class LoadingWorksheetController extends VasWorksheetController {
|
|
|
170
175
|
newTargetInventory.releaseQty = remainQty
|
|
171
176
|
newTargetInventory.releaseUomValue = remainUomValue
|
|
172
177
|
newTargetInventory.product = targetInventory.product
|
|
178
|
+
newTargetInventory.productDetail = targetInventory.productDetail
|
|
173
179
|
newTargetInventory.packingType = targetInventory.packingType
|
|
174
180
|
newTargetInventory.batchId = targetInventory.batchId
|
|
175
181
|
newTargetInventory.creator = this.user
|
|
@@ -93,13 +93,15 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
93
93
|
'targetInventory.releaseGood',
|
|
94
94
|
'targetInventory.inventory',
|
|
95
95
|
'targetInventory.inventory.location',
|
|
96
|
-
'targetInventory.product'
|
|
96
|
+
'targetInventory.product',
|
|
97
|
+
'targetInventory.productDetail'
|
|
97
98
|
]
|
|
98
99
|
)
|
|
99
|
-
const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
|
|
100
100
|
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
101
|
-
const product: Product = targetInventory.product
|
|
102
101
|
let inventory: Inventory = targetInventory.inventory
|
|
102
|
+
const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
|
|
103
|
+
const product: Product = targetInventory.product
|
|
104
|
+
const productDetail: ProductDetail = targetInventory.productDetail
|
|
103
105
|
const pickedQty: number = targetInventory.releaseQty
|
|
104
106
|
|
|
105
107
|
if (packedQty > pickedQty) {
|
|
@@ -114,8 +116,7 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({
|
|
117
|
-
where: { domain: this.domain, serialNumber: serialNumber,
|
|
118
|
-
relations: ['product', 'inventory']
|
|
119
|
+
where: { domain: this.domain, serialNumber: serialNumber, productDetail }
|
|
119
120
|
})
|
|
120
121
|
|
|
121
122
|
if (foundSerialNumber) {
|
|
@@ -139,6 +140,7 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
139
140
|
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
140
141
|
inventoryItem.outboundOrderId = releaseGood.id
|
|
141
142
|
inventoryItem.product = product
|
|
143
|
+
inventoryItem.productDetail = productDetail
|
|
142
144
|
inventoryItem.inventory = inventory
|
|
143
145
|
inventoryItem.domain = this.domain
|
|
144
146
|
|
|
@@ -193,26 +195,34 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
193
195
|
'targetInventory.inventory',
|
|
194
196
|
'targetInventory.inventory.product',
|
|
195
197
|
'targetInventory.inventory.product.productDetails',
|
|
196
|
-
'targetInventory.inventory.
|
|
198
|
+
'targetInventory.inventory.product.productDetails.childProductDetail',
|
|
199
|
+
'targetInventory.inventory.location',
|
|
200
|
+
'targetInventory.productDetail'
|
|
197
201
|
]
|
|
198
202
|
)
|
|
199
|
-
const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
|
|
200
|
-
const product: Product = worksheetDetail.targetInventory.inventory.product
|
|
201
203
|
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
202
204
|
let inventory: Inventory = targetInventory.inventory
|
|
203
205
|
let packedQty: number = 1
|
|
204
|
-
|
|
206
|
+
let pickedQty: number = targetInventory.releaseQty
|
|
207
|
+
const releaseGood: ReleaseGood = targetInventory.releaseGood
|
|
208
|
+
const product: Product = targetInventory.inventory.product
|
|
209
|
+
const productDetail: ProductDetail = targetInventory.productDetail
|
|
205
210
|
|
|
206
211
|
// search for matching product barcode
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
)
|
|
215
|
-
|
|
212
|
+
const filterProductDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
|
|
213
|
+
const scannedProductDetail: ProductDetail = filterProductDetails.find(detail => detail.gtin == productBarcode)
|
|
214
|
+
if (!scannedProductDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
|
|
215
|
+
|
|
216
|
+
// case for scanning parent packing type, packing size
|
|
217
|
+
// when scannedProductDetail id is not the same as productDetail id, then it's not child gtin, proceed to get child qty
|
|
218
|
+
if (scannedProductDetail.id !== productDetail.id && !product?.isRequireSerialNumberScanningOutbound) {
|
|
219
|
+
let childQty = await this.getChildQty(filterProductDetails, productBarcode, productDetail, scannedProductDetail)
|
|
220
|
+
pickedQty *= childQty
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if (packedQty + targetInventory.packedQty > pickedQty) {
|
|
224
|
+
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))
|
|
225
|
+
}
|
|
216
226
|
|
|
217
227
|
// Serial Number scanning for batch picking
|
|
218
228
|
if (targetInventory?.refWorksheetId) {
|
|
@@ -223,7 +233,7 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
223
233
|
|
|
224
234
|
let foundSerialNumber: InventoryItem = await this.trxMgr
|
|
225
235
|
.getRepository(InventoryItem)
|
|
226
|
-
.findOne({ where: { domain: this.domain, serialNumber: serialNumber,
|
|
236
|
+
.findOne({ where: { domain: this.domain, serialNumber: serialNumber, productDetail } })
|
|
227
237
|
|
|
228
238
|
if (foundSerialNumber) {
|
|
229
239
|
if (foundSerialNumber.inventoryId !== inventory.id) {
|
|
@@ -250,6 +260,7 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
250
260
|
inventoryItem.outboundOrderId = releaseGood.id
|
|
251
261
|
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
252
262
|
inventoryItem.product = product
|
|
263
|
+
inventoryItem.productDetail = productDetail
|
|
253
264
|
inventoryItem.inventory = inventory
|
|
254
265
|
inventoryItem.domain = this.domain
|
|
255
266
|
|
|
@@ -40,7 +40,7 @@ import { VasWorksheetController } from '../vas/vas-worksheet-controller'
|
|
|
40
40
|
import { SellercraftController } from '../../controllers'
|
|
41
41
|
|
|
42
42
|
export class PickingWorksheetController extends VasWorksheetController {
|
|
43
|
-
async generatePickingWorksheet(releaseGoodNo: string): Promise<Worksheet> {
|
|
43
|
+
async generatePickingWorksheet(releaseGoodNo: string, currentStatus: string = null): Promise<Worksheet> {
|
|
44
44
|
let releaseGood: ReleaseGood = await this.findRefOrder(
|
|
45
45
|
ReleaseGood,
|
|
46
46
|
{
|
|
@@ -78,7 +78,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
78
78
|
|
|
79
79
|
releaseGood.status = ORDER_STATUS.READY_TO_PICK
|
|
80
80
|
releaseGood.updater = this.user
|
|
81
|
-
await this.updateRefOrder(releaseGood)
|
|
81
|
+
await this.updateRefOrder(releaseGood, null, currentStatus)
|
|
82
82
|
|
|
83
83
|
return worksheet
|
|
84
84
|
}
|
|
@@ -254,12 +254,13 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
254
254
|
|
|
255
255
|
worksheet = await this.activateWorksheet(worksheet, worksheetDetails, [])
|
|
256
256
|
|
|
257
|
-
|
|
258
|
-
|
|
257
|
+
// retrieve order inventory
|
|
258
|
+
const pickingOrderInventory: OrderInventory[] = await this.trxMgr.getRepository(OrderInventory).find({
|
|
259
|
+
where: { domain: this.domain, refWorksheetId: worksheet.id, status: ORDER_STATUS.PICKING },
|
|
259
260
|
relations: ['releaseGood']
|
|
260
261
|
})
|
|
261
262
|
|
|
262
|
-
let releaseGoods: ReleaseGood[] =
|
|
263
|
+
let releaseGoods: ReleaseGood[] = pickingOrderInventory.map((oi: OrderInventory) => oi.releaseGood)
|
|
263
264
|
|
|
264
265
|
if (releaseGoods?.length) {
|
|
265
266
|
releaseGoods = releaseGoods.map((rg: ReleaseGood) => {
|
|
@@ -272,11 +273,6 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
272
273
|
await this.trxMgr.getRepository(ReleaseGood).save(releaseGoods)
|
|
273
274
|
}
|
|
274
275
|
|
|
275
|
-
if (completeSplitOIs?.length) {
|
|
276
|
-
const ids: string[] = completeSplitOIs.map((oi: OrderInventory) => oi.id)
|
|
277
|
-
await this.trxMgr.getRepository(OrderInventory).delete(ids)
|
|
278
|
-
}
|
|
279
|
-
|
|
280
276
|
return worksheet
|
|
281
277
|
}
|
|
282
278
|
|
|
@@ -439,7 +435,8 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
439
435
|
'targetInventory.orderProduct',
|
|
440
436
|
'targetInventory.product.productDetails',
|
|
441
437
|
'targetInventory.product.productDetails.product',
|
|
442
|
-
'targetInventory.product.productDetails.childProductDetail'
|
|
438
|
+
'targetInventory.product.productDetails.childProductDetail',
|
|
439
|
+
'targetInventory.productDetail'
|
|
443
440
|
]
|
|
444
441
|
)
|
|
445
442
|
|
|
@@ -447,6 +444,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
447
444
|
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
448
445
|
let targetProduct: OrderProduct = targetInventory.orderProduct
|
|
449
446
|
const product: Product = targetInventory.product
|
|
447
|
+
const productDetail: ProductDetail = targetInventory.productDetail
|
|
450
448
|
let inventory: Inventory = targetInventory.inventory
|
|
451
449
|
let bizplace: Bizplace = worksheetDetail.worksheet.bizplace
|
|
452
450
|
|
|
@@ -462,9 +460,6 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
462
460
|
if (inventory.cartonId !== cartonId)
|
|
463
461
|
throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('Carton ID', cartonId, inventory.cartonId))
|
|
464
462
|
|
|
465
|
-
const packingType: string = inventory.packingType
|
|
466
|
-
const packingSize: number = inventory.packingSize
|
|
467
|
-
|
|
468
463
|
let pickedQty: number = pickingQty ? pickingQty : 1
|
|
469
464
|
const releaseQty: number = targetInventory.releaseQty
|
|
470
465
|
|
|
@@ -472,28 +467,15 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
472
467
|
|
|
473
468
|
// search for matching product barcode
|
|
474
469
|
const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
|
|
475
|
-
|
|
476
|
-
|
|
470
|
+
// scannedProductDetail can be child or gtin
|
|
471
|
+
const scannedProductDetail: ProductDetail = productDetails.find(detail => detail.gtin == productBarcode)
|
|
472
|
+
if (!scannedProductDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
|
|
477
473
|
|
|
478
474
|
// case for scanning parent packing type, packing size
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
detail.packingType === packingType &&
|
|
483
|
-
detail.packingSize == packingSize &&
|
|
484
|
-
detail.product?.id === product.id
|
|
485
|
-
)
|
|
486
|
-
|
|
487
|
-
if (!foundProductDetail && !product?.isRequireSerialNumberScanningOutbound) {
|
|
488
|
-
const roProductDetail: ProductDetail = productDetails.find(
|
|
489
|
-
(parentDetail: ProductDetail) =>
|
|
490
|
-
parentDetail.packingType === packingType && parentDetail.packingSize == packingSize
|
|
491
|
-
)
|
|
492
|
-
|
|
493
|
-
let childQty = await this.getChildQty(productDetails, productBarcode, roProductDetail)
|
|
475
|
+
// when scannedProductDetail id is not the same as productDetail id, then it's not child gtin, proceed to get child qty
|
|
476
|
+
if (scannedProductDetail.id !== productDetail.id && !product?.isRequireSerialNumberScanningOutbound) {
|
|
477
|
+
let childQty = await this.getChildQty(productDetails, productBarcode, productDetail, scannedProductDetail)
|
|
494
478
|
pickedQty *= childQty
|
|
495
|
-
} else if (!foundProductDetail) {
|
|
496
|
-
throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
|
|
497
479
|
}
|
|
498
480
|
|
|
499
481
|
if (pickedQty + targetInventory.pickedQty > releaseQty) {
|
|
@@ -545,6 +527,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
545
527
|
inventoryItem.outboundOrderId = releaseGood.id
|
|
546
528
|
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
547
529
|
inventoryItem.product = product
|
|
530
|
+
inventoryItem.productDetail = productDetail
|
|
548
531
|
inventoryItem.inventory = inventory
|
|
549
532
|
inventoryItem.domain = this.domain
|
|
550
533
|
|
|
@@ -584,13 +567,15 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
584
567
|
'targetInventory.orderProduct',
|
|
585
568
|
'targetInventory.inventory',
|
|
586
569
|
'targetInventory.inventory.location',
|
|
587
|
-
'targetInventory.product'
|
|
570
|
+
'targetInventory.product',
|
|
571
|
+
'targetInventory.productDetail'
|
|
588
572
|
]
|
|
589
573
|
)
|
|
590
574
|
|
|
591
575
|
const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
|
|
592
576
|
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
593
577
|
const product: Product = targetInventory.product
|
|
578
|
+
const productDetail: ProductDetail = targetInventory.productDetail
|
|
594
579
|
let inventory: Inventory = targetInventory.inventory
|
|
595
580
|
let targetProduct: OrderProduct = targetInventory.orderProduct
|
|
596
581
|
let bizplace: Bizplace = worksheetDetail.worksheet.bizplace
|
|
@@ -620,13 +605,13 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
620
605
|
})
|
|
621
606
|
|
|
622
607
|
let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({
|
|
623
|
-
where: { domain: this.domain, serialNumber: serialNumber,
|
|
624
|
-
relations: ['product', 'inventory']
|
|
608
|
+
where: { domain: this.domain, serialNumber: serialNumber, productDetail },
|
|
609
|
+
relations: ['product', 'productDetail', 'inventory']
|
|
625
610
|
})
|
|
626
611
|
|
|
627
612
|
let scannedPalletIdInventory: Inventory = await this.trxMgr
|
|
628
613
|
.getRepository(Inventory)
|
|
629
|
-
.findOne({ where: { domain: this.domain, palletId }, relations: ['
|
|
614
|
+
.findOne({ where: { domain: this.domain, palletId }, relations: ['productDetail'] })
|
|
630
615
|
|
|
631
616
|
if (foundSerialNumber) {
|
|
632
617
|
if (foundSerialNumber.outboundOrderId) {
|
|
@@ -653,6 +638,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
653
638
|
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
654
639
|
inventoryItem.outboundOrderId = releaseGood.id
|
|
655
640
|
inventoryItem.product = product
|
|
641
|
+
inventoryItem.productDetail = productDetail
|
|
656
642
|
inventoryItem.inventory = scannedPalletIdInventory
|
|
657
643
|
inventoryItem.domain = this.domain
|
|
658
644
|
|
|
@@ -678,8 +664,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
678
664
|
)
|
|
679
665
|
} else if (
|
|
680
666
|
scannedPalletIdInventory.batchId == inventory.batchId &&
|
|
681
|
-
scannedPalletIdInventory.
|
|
682
|
-
scannedPalletIdInventory.product.packingType == product.packingType
|
|
667
|
+
scannedPalletIdInventory.productDetail.id == productDetail.id
|
|
683
668
|
) {
|
|
684
669
|
//if replacement order inventory does not exist
|
|
685
670
|
await this.serialNumberReplacement(
|
|
@@ -687,6 +672,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
687
672
|
scannedPalletIdInventory,
|
|
688
673
|
releaseGood,
|
|
689
674
|
product,
|
|
675
|
+
productDetail,
|
|
690
676
|
worksheetDetail,
|
|
691
677
|
foundSerialNumber
|
|
692
678
|
)
|
|
@@ -862,16 +848,19 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
862
848
|
'worksheetDetails.targetInventory.releaseGood',
|
|
863
849
|
'worksheetDetails.targetInventory.inventory',
|
|
864
850
|
'worksheetDetails.targetInventory.inventory.location',
|
|
865
|
-
'worksheetDetails.targetInventory.
|
|
851
|
+
'worksheetDetails.targetInventory.productDetail',
|
|
852
|
+
'worksheetDetails.targetInventory.productDetail.product',
|
|
866
853
|
'worksheetDetails.targetInventory.product.productDetails',
|
|
867
854
|
'worksheetDetails.targetInventory.product.productDetails.childProductDetail'
|
|
868
855
|
]
|
|
869
856
|
})
|
|
870
857
|
|
|
871
858
|
const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
|
|
872
|
-
const
|
|
859
|
+
const productDetail: ProductDetail = worksheetDetails
|
|
873
860
|
.map((wsd: WorksheetDetail) => wsd.targetInventory.product)
|
|
874
|
-
.find((
|
|
861
|
+
.find((productDetail: ProductDetail) => productDetail.id === inventory.productDetail.id)
|
|
862
|
+
|
|
863
|
+
const product: Product = productDetail.product
|
|
875
864
|
|
|
876
865
|
const batchId: string = inventory.batchId
|
|
877
866
|
const packingType: string = inventory.packingType
|
|
@@ -890,26 +879,14 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
890
879
|
|
|
891
880
|
// search for matching product barcode
|
|
892
881
|
const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
|
|
893
|
-
|
|
894
|
-
|
|
882
|
+
// scannedProductDetail can be child or gtin
|
|
883
|
+
const scannedProductDetail: ProductDetail = productDetails.find(detail => detail.gtin == productBarcode)
|
|
884
|
+
if (!scannedProductDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
|
|
895
885
|
|
|
896
886
|
// case for scanning parent packing type, packing size
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
)
|
|
901
|
-
|
|
902
|
-
if (!foundProductDetail) {
|
|
903
|
-
const roProductDetail: ProductDetail = productDetails.find(
|
|
904
|
-
(parentDetail: ProductDetail) =>
|
|
905
|
-
parentDetail.packingType === packingType && parentDetail.packingSize == packingSize
|
|
906
|
-
)
|
|
907
|
-
if (!roProductDetail)
|
|
908
|
-
throw new Error(
|
|
909
|
-
this.ERROR_MSG.FIND.NO_RESULT(`Packing Type ( ${packingType}) or Packing Size (${packingSize})`)
|
|
910
|
-
)
|
|
911
|
-
|
|
912
|
-
let childQty = await this.getChildQty(productDetails, productBarcode, roProductDetail)
|
|
887
|
+
// when scannedProductDetail id is not the same as productDetail id, then it's not child gtin, proceed to get child qty
|
|
888
|
+
if (scannedProductDetail.id !== productDetail.id) {
|
|
889
|
+
let childQty = await this.getChildQty(productDetails, productBarcode, productDetail, scannedProductDetail)
|
|
913
890
|
pickedQty *= childQty
|
|
914
891
|
}
|
|
915
892
|
|
|
@@ -1304,6 +1281,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
1304
1281
|
scannedPalletIdInventory,
|
|
1305
1282
|
releaseGood,
|
|
1306
1283
|
product,
|
|
1284
|
+
productDetail,
|
|
1307
1285
|
worksheetDetail,
|
|
1308
1286
|
foundSerialNumber
|
|
1309
1287
|
) {
|
|
@@ -1368,6 +1346,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
1368
1346
|
releaseUomValue: newOrderInventoryReleaseUomValue,
|
|
1369
1347
|
pickedQty: 1,
|
|
1370
1348
|
product,
|
|
1349
|
+
productDetail,
|
|
1371
1350
|
inventory: scannedPalletIdInventory,
|
|
1372
1351
|
creator: this.user,
|
|
1373
1352
|
updater: this.user
|
|
@@ -95,7 +95,8 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
95
95
|
'worksheetDetails.targetInventory.inventory.product',
|
|
96
96
|
'worksheetDetails.targetInventory.inventory.product.productDetails',
|
|
97
97
|
'worksheetDetails.targetInventory.inventory.product.productDetails.product',
|
|
98
|
-
'worksheetDetails.targetInventory.releaseGood'
|
|
98
|
+
'worksheetDetails.targetInventory.releaseGood',
|
|
99
|
+
'worksheetDetails.targetInventory.productDetail'
|
|
99
100
|
]
|
|
100
101
|
})
|
|
101
102
|
|
|
@@ -118,17 +119,12 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
118
119
|
const matchingProductDetail: ProductDetail = productDetails.find(
|
|
119
120
|
(productDetail: ProductDetail) => productDetail.gtin === productBarcode
|
|
120
121
|
)
|
|
121
|
-
if (!matchingProductDetail) throw new Error(
|
|
122
|
+
if (!matchingProductDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
|
|
122
123
|
const packingType: string = matchingProductDetail.packingType
|
|
123
124
|
const packingSize: number = matchingProductDetail.packingSize
|
|
124
|
-
if (!matchingProductDetail)
|
|
125
|
-
throw new Error(this.ERROR_MSG.PRODUCT.BARCODE_NOT_EXIST(productBarcode, packingType, packingSize))
|
|
126
125
|
|
|
127
126
|
let matchingOIs: OrderInventory[] = orderInventories.filter(
|
|
128
|
-
(oi: OrderInventory) =>
|
|
129
|
-
oi.packingType === packingType &&
|
|
130
|
-
oi.packingSize === packingSize &&
|
|
131
|
-
oi.product?.id === matchingProductDetail.product?.id
|
|
127
|
+
(oi: OrderInventory) => oi.productDetail.id === matchingProductDetail.id
|
|
132
128
|
)
|
|
133
129
|
|
|
134
130
|
let sortedQty: number = 1
|
|
@@ -142,6 +138,7 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
142
138
|
const inventory: Inventory = matchingOI.inventory
|
|
143
139
|
const releaseGood: ReleaseGood = matchingOI.releaseGood
|
|
144
140
|
const product: Product = inventory.product
|
|
141
|
+
const productDetail: ProductDetail = matchingOI.productDetail
|
|
145
142
|
|
|
146
143
|
if (releaseQty != matchingOI?.sortedQty && sortedQty == 1) {
|
|
147
144
|
// Serial Number scanning for batch picking
|
|
@@ -153,7 +150,7 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
153
150
|
|
|
154
151
|
let foundSerialNumber: InventoryItem = await this.trxMgr
|
|
155
152
|
.getRepository(InventoryItem)
|
|
156
|
-
.findOne({ where: { domain: this.domain, serialNumber: serialNumber,
|
|
153
|
+
.findOne({ where: { domain: this.domain, serialNumber: serialNumber, productDetail } })
|
|
157
154
|
|
|
158
155
|
if (foundSerialNumber) {
|
|
159
156
|
if (foundSerialNumber.inventoryId !== inventory.id) {
|
|
@@ -180,6 +177,7 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
180
177
|
inventoryItem.outboundOrderId = releaseGood.id
|
|
181
178
|
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
182
179
|
inventoryItem.product = product
|
|
180
|
+
inventoryItem.productDetail = productDetail
|
|
183
181
|
inventoryItem.inventory = inventory
|
|
184
182
|
inventoryItem.domain = this.domain
|
|
185
183
|
|
|
@@ -263,7 +261,8 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
263
261
|
'worksheetDetails.targetInventory.inventory.product',
|
|
264
262
|
'worksheetDetails.targetInventory.inventory.product.productDetails',
|
|
265
263
|
'worksheetDetails.targetInventory.inventory.product.productDetails.product',
|
|
266
|
-
'worksheetDetails.targetInventory.releaseGood'
|
|
264
|
+
'worksheetDetails.targetInventory.releaseGood',
|
|
265
|
+
'worksheetDetails.targetInventory.productDetail'
|
|
267
266
|
]
|
|
268
267
|
})
|
|
269
268
|
|
|
@@ -283,6 +282,7 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
283
282
|
const inventory: Inventory = matchingOI.inventory
|
|
284
283
|
const releaseGood: ReleaseGood = matchingOI.releaseGood
|
|
285
284
|
const product: Product = matchingOI.inventory.product
|
|
285
|
+
const productDetail: ProductDetail = matchingOI.productDetail
|
|
286
286
|
const packingType: string = matchingOI.packingType
|
|
287
287
|
const packingSize: number = matchingOI.packingSize
|
|
288
288
|
|
|
@@ -292,8 +292,7 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
292
292
|
}
|
|
293
293
|
|
|
294
294
|
let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({
|
|
295
|
-
where: { domain: this.domain, serialNumber: serialNumber,
|
|
296
|
-
relations: ['product', 'inventory']
|
|
295
|
+
where: { domain: this.domain, serialNumber: serialNumber, productDetail }
|
|
297
296
|
})
|
|
298
297
|
|
|
299
298
|
if (foundSerialNumber) {
|
|
@@ -317,6 +316,7 @@ export class SortingWorksheetController extends VasWorksheetController {
|
|
|
317
316
|
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
318
317
|
inventoryItem.outboundOrderId = releaseGood.id
|
|
319
318
|
inventoryItem.product = product
|
|
319
|
+
inventoryItem.productDetail = productDetail
|
|
320
320
|
inventoryItem.inventory = inventory
|
|
321
321
|
inventoryItem.domain = this.domain
|
|
322
322
|
|
|
@@ -22,7 +22,8 @@ import {
|
|
|
22
22
|
InventoryNoGenerator,
|
|
23
23
|
Location,
|
|
24
24
|
LOCATION_TYPE,
|
|
25
|
-
Warehouse
|
|
25
|
+
Warehouse,
|
|
26
|
+
generateInventoryHistory
|
|
26
27
|
} from '@things-factory/warehouse-base'
|
|
27
28
|
|
|
28
29
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
@@ -36,7 +37,6 @@ import {
|
|
|
36
37
|
RefOrderType
|
|
37
38
|
} from '../../graphql/resolvers/worksheet/vas-transactions'
|
|
38
39
|
import { PackingUnits } from '../../graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging'
|
|
39
|
-
import { generateInventoryHistory } from '../../utils'
|
|
40
40
|
import { ReferenceOrderType, WorksheetController } from '../worksheet-controller'
|
|
41
41
|
|
|
42
42
|
type CompleteTransactionType = (trxMgr: EntityManager, orderVas: OrderVas, user: User) => Promise<void>
|