@things-factory/worksheet-base 5.0.0-alpha.3 → 5.0.0-alpha.30
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 +301 -2
- package/dist-server/controllers/inbound/unloading-worksheet-controller.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-grn.js +27 -3
- 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-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/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 +16 -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 +0 -17
- 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 +4 -7
- 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-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 +30 -4
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- 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-detail/index.js +0 -2
- package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
- package/dist-server/index.js +4 -0
- package/dist-server/index.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/controllers/inbound/unloading-worksheet-controller.ts +363 -6
- 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-grn.ts +39 -5
- 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-ro-do.ts +93 -8
- package/server/controllers/worksheet-controller.ts +18 -2
- 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 +25 -6
- 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 +0 -18
- package/server/graphql/resolvers/worksheet/picking/index.ts +3 -1
- package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +5 -7
- 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-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 +30 -4
- 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-detail/index.ts +0 -2
- package/server/index.ts +4 -0
- package/server/utils/inventory-util.ts +15 -23
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
import { Equal, Not } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
2
4
|
import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
3
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
Inventory,
|
|
7
|
+
INVENTORY_ITEM_SOURCE,
|
|
8
|
+
INVENTORY_STATUS,
|
|
9
|
+
INVENTORY_TRANSACTION_TYPE,
|
|
10
|
+
InventoryItem,
|
|
11
|
+
InventoryNoGenerator
|
|
12
|
+
} from '@things-factory/warehouse-base'
|
|
4
13
|
|
|
5
14
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
6
15
|
import { Worksheet, WorksheetDetail } from '../../entities'
|
|
@@ -70,7 +79,7 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
70
79
|
return worksheet
|
|
71
80
|
}
|
|
72
81
|
|
|
73
|
-
async packing(worksheetDetailName: string, packedQty: number): Promise<WorksheetDetail> {
|
|
82
|
+
async packing(worksheetDetailName: string, packedQty: number, serialNumber: string): Promise<WorksheetDetail> {
|
|
74
83
|
let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
|
|
75
84
|
worksheetDetailName,
|
|
76
85
|
WORKSHEET_TYPE.PACKING,
|
|
@@ -81,11 +90,13 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
81
90
|
'targetInventory',
|
|
82
91
|
'targetInventory.releaseGood',
|
|
83
92
|
'targetInventory.inventory',
|
|
84
|
-
'targetInventory.inventory.location'
|
|
93
|
+
'targetInventory.inventory.location',
|
|
94
|
+
'targetInventory.product'
|
|
85
95
|
]
|
|
86
96
|
)
|
|
87
97
|
const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
|
|
88
98
|
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
99
|
+
const product: Product = targetInventory.product
|
|
89
100
|
let inventory: Inventory = targetInventory.inventory
|
|
90
101
|
const pickedQty: number = targetInventory.releaseQty
|
|
91
102
|
|
|
@@ -93,19 +104,81 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
93
104
|
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('pack', `packed quantity can't exceed release qty`))
|
|
94
105
|
}
|
|
95
106
|
|
|
96
|
-
|
|
97
|
-
targetInventory
|
|
98
|
-
|
|
107
|
+
// Serial Number scanning for batch picking
|
|
108
|
+
if (targetInventory?.refWorksheetId) {
|
|
109
|
+
if (product?.isRequireSerialNumberScanningOutbound) {
|
|
110
|
+
if (!serialNumber || serialNumber == '') {
|
|
111
|
+
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('packing', `require serial number`))
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({
|
|
115
|
+
where: { domain: this.domain, serialNumber: serialNumber, product },
|
|
116
|
+
relations: ['product', 'inventory']
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
if (foundSerialNumber) {
|
|
120
|
+
if (foundSerialNumber.outboundOrderId) {
|
|
121
|
+
let releaseGood: ReleaseGood = await this.trxMgr
|
|
122
|
+
.getRepository(ReleaseGood)
|
|
123
|
+
.findOne({ where: { id: foundSerialNumber.outboundOrderId } })
|
|
124
|
+
throw new Error(`Inventory Item is already picked/packed in ${releaseGood.name}`)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
foundSerialNumber.status = INVENTORY_STATUS.PACKING
|
|
128
|
+
foundSerialNumber.updater = this.user
|
|
129
|
+
foundSerialNumber.outboundOrderId = releaseGood.id
|
|
130
|
+
|
|
131
|
+
await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)
|
|
132
|
+
} else {
|
|
133
|
+
let inventoryItem: InventoryItem = new InventoryItem()
|
|
134
|
+
inventoryItem.name = InventoryNoGenerator.inventoryItemName()
|
|
135
|
+
inventoryItem.serialNumber = serialNumber
|
|
136
|
+
inventoryItem.status = INVENTORY_STATUS.PACKING
|
|
137
|
+
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
138
|
+
inventoryItem.outboundOrderId = releaseGood.id
|
|
139
|
+
inventoryItem.product = product
|
|
140
|
+
inventoryItem.inventory = inventory
|
|
141
|
+
inventoryItem.domain = this.domain
|
|
142
|
+
|
|
143
|
+
foundSerialNumber = await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
targetInventory.packedQty = Boolean(targetInventory.packedQty) ? targetInventory.packedQty + packedQty : packedQty
|
|
149
|
+
if (targetInventory.packedQty == targetInventory.releaseQty) {
|
|
150
|
+
targetInventory.status = ORDER_INVENTORY_STATUS.PACKED
|
|
151
|
+
|
|
152
|
+
let inventoryItems: InventoryItem = await this.trxMgr
|
|
153
|
+
.getRepository(InventoryItem)
|
|
154
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
155
|
+
|
|
156
|
+
if (inventoryItems.length > 0) {
|
|
157
|
+
inventoryItems.forEach((itm: InventoryItem) => {
|
|
158
|
+
itm.status = INVENTORY_STATUS.PACKED
|
|
159
|
+
itm.updater = this.user
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.PACKING)
|
|
166
|
+
|
|
167
|
+
worksheetDetail.status = WORKSHEET_STATUS.DONE
|
|
168
|
+
}
|
|
99
169
|
|
|
100
|
-
await this.
|
|
170
|
+
await this.updateOrderTargets([targetInventory])
|
|
101
171
|
|
|
102
|
-
worksheetDetail.status = WORKSHEET_STATUS.DONE
|
|
103
172
|
worksheetDetail.updater = this.user
|
|
104
173
|
worksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
105
174
|
return worksheetDetail
|
|
106
175
|
}
|
|
107
176
|
|
|
108
|
-
async scanProductPacking(
|
|
177
|
+
async scanProductPacking(
|
|
178
|
+
worksheetDetailName: string,
|
|
179
|
+
productBarcode: string,
|
|
180
|
+
serialNumber?: string
|
|
181
|
+
): Promise<WorksheetDetail> {
|
|
109
182
|
let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
|
|
110
183
|
worksheetDetailName,
|
|
111
184
|
WORKSHEET_TYPE.PACKING,
|
|
@@ -139,11 +212,64 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
139
212
|
)
|
|
140
213
|
if (!productDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
|
|
141
214
|
|
|
215
|
+
// Serial Number scanning for batch picking
|
|
216
|
+
if (targetInventory?.refWorksheetId) {
|
|
217
|
+
if (product?.isRequireSerialNumberScanningOutbound) {
|
|
218
|
+
if (!serialNumber || serialNumber == '') {
|
|
219
|
+
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('packing', `require serial number`))
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
let foundSerialNumber: InventoryItem = await this.trxMgr
|
|
223
|
+
.getRepository(InventoryItem)
|
|
224
|
+
.findOne({ where: { domain: this.domain, serialNumber: serialNumber, product } })
|
|
225
|
+
|
|
226
|
+
if (foundSerialNumber) {
|
|
227
|
+
if (foundSerialNumber.inventoryId !== inventory.id) {
|
|
228
|
+
throw new Error('Serial Number scanned is in another inventory')
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if (foundSerialNumber.outboundOrderId) {
|
|
232
|
+
let releaseGood: ReleaseGood = await this.trxMgr
|
|
233
|
+
.getRepository(ReleaseGood)
|
|
234
|
+
.findOne({ where: { id: foundSerialNumber.outboundOrderId } })
|
|
235
|
+
throw new Error(`Inventory Item is already picked/packed in ${releaseGood.name}`)
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
foundSerialNumber.status = INVENTORY_STATUS.PACKING
|
|
239
|
+
foundSerialNumber.updater = this.user
|
|
240
|
+
foundSerialNumber.outboundOrderId = releaseGood.id
|
|
241
|
+
|
|
242
|
+
await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)
|
|
243
|
+
} else {
|
|
244
|
+
let inventoryItem: InventoryItem = new InventoryItem()
|
|
245
|
+
inventoryItem.name = InventoryNoGenerator.inventoryItemName()
|
|
246
|
+
inventoryItem.serialNumber = serialNumber
|
|
247
|
+
inventoryItem.status = INVENTORY_STATUS.PACKING
|
|
248
|
+
inventoryItem.outboundOrderId = releaseGood.id
|
|
249
|
+
inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
|
|
250
|
+
inventoryItem.product = product
|
|
251
|
+
inventoryItem.inventory = inventory
|
|
252
|
+
inventoryItem.domain = this.domain
|
|
253
|
+
|
|
254
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
142
259
|
targetInventory.packedQty = Boolean(targetInventory?.packedQty) ? targetInventory.packedQty + packedQty : packedQty
|
|
143
260
|
if (targetInventory.packedQty > pickedQty) {
|
|
144
261
|
throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('pack', `packed quantity can't exceed release qty`))
|
|
145
262
|
}
|
|
146
263
|
|
|
264
|
+
targetInventory.packedAt = new Date()
|
|
265
|
+
targetInventory.packedByUser = this.user
|
|
266
|
+
|
|
267
|
+
let packedBy: string[] = targetInventory.packedBy ? targetInventory.packedBy.split(',') : []
|
|
268
|
+
if (!packedBy.find(x => x == this.user.name)) {
|
|
269
|
+
packedBy.push(this.user.name)
|
|
270
|
+
targetInventory.packedBy = packedBy.join(',')
|
|
271
|
+
}
|
|
272
|
+
|
|
147
273
|
if (targetInventory.packedQty == pickedQty) {
|
|
148
274
|
targetInventory.status = ORDER_INVENTORY_STATUS.PACKED
|
|
149
275
|
await this.updateOrderTargets([targetInventory])
|
|
@@ -152,6 +278,19 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
152
278
|
worksheetDetail.status = WORKSHEET_STATUS.DONE
|
|
153
279
|
worksheetDetail.updater = this.user
|
|
154
280
|
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
|
|
281
|
+
|
|
282
|
+
let inventoryItems: InventoryItem = await this.trxMgr
|
|
283
|
+
.getRepository(InventoryItem)
|
|
284
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
285
|
+
|
|
286
|
+
if (inventoryItems.length > 0) {
|
|
287
|
+
inventoryItems.forEach((itm: InventoryItem) => {
|
|
288
|
+
itm.status = INVENTORY_STATUS.PACKED
|
|
289
|
+
itm.updater = this.user
|
|
290
|
+
})
|
|
291
|
+
|
|
292
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
|
|
293
|
+
}
|
|
155
294
|
} else {
|
|
156
295
|
await this.trxMgr.getRepository(OrderInventory).save(targetInventory)
|
|
157
296
|
}
|
|
@@ -172,10 +311,86 @@ export class PackingWorksheetController extends VasWorksheetController {
|
|
|
172
311
|
])
|
|
173
312
|
this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })
|
|
174
313
|
|
|
314
|
+
let inventoryItems: InventoryItem = await this.trxMgr
|
|
315
|
+
.getRepository(InventoryItem)
|
|
316
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
317
|
+
|
|
318
|
+
if (inventoryItems.length > 0) {
|
|
319
|
+
inventoryItems.forEach((itm: InventoryItem) => {
|
|
320
|
+
itm.status = INVENTORY_STATUS.TERMINATED
|
|
321
|
+
itm.updater = this.user
|
|
322
|
+
})
|
|
323
|
+
|
|
324
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
|
|
325
|
+
}
|
|
326
|
+
|
|
175
327
|
let orderStatus: string
|
|
176
328
|
if (releaseGood?.courierOption) orderStatus = ORDER_STATUS.DONE
|
|
177
329
|
else orderStatus = ORDER_STATUS.LOADING
|
|
178
330
|
|
|
179
331
|
return await this.completeWorksheet(worksheet, orderStatus)
|
|
180
332
|
}
|
|
333
|
+
|
|
334
|
+
async undoSerialNumberPacking(worksheetDetailName: string, inventoryItemId: string): Promise<void> {
|
|
335
|
+
const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({
|
|
336
|
+
where: { name: worksheetDetailName, domain: this.domain, status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED)) },
|
|
337
|
+
relations: [
|
|
338
|
+
'worksheet',
|
|
339
|
+
'worksheet.releaseGood',
|
|
340
|
+
'targetInventory',
|
|
341
|
+
'targetInventory.product',
|
|
342
|
+
'targetInventory.inventory'
|
|
343
|
+
]
|
|
344
|
+
})
|
|
345
|
+
|
|
346
|
+
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
347
|
+
let releaseGood: ReleaseGood = worksheetDetail.worksheet.releaseGood
|
|
348
|
+
|
|
349
|
+
if (
|
|
350
|
+
targetInventory.releaseQty == targetInventory.packedQty &&
|
|
351
|
+
targetInventory.status == ORDER_INVENTORY_STATUS.PACKED
|
|
352
|
+
) {
|
|
353
|
+
targetInventory.status = INVENTORY_STATUS.PACKING
|
|
354
|
+
|
|
355
|
+
await this.trxMgr
|
|
356
|
+
.getRepository(WorksheetDetail)
|
|
357
|
+
.update({ id: worksheetDetail.id }, { status: WORKSHEET_STATUS.EXECUTING })
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
let inventoryItems: InventoryItem = await this.trxMgr
|
|
361
|
+
.getRepository(InventoryItem)
|
|
362
|
+
.find({ where: { outboundOrderId: releaseGood.id } })
|
|
363
|
+
|
|
364
|
+
let removeInventoryItem: InventoryItem = await this.trxMgr
|
|
365
|
+
.getRepository(InventoryItem)
|
|
366
|
+
.findOne({ where: { id: inventoryItemId } })
|
|
367
|
+
|
|
368
|
+
if (inventoryItems.length > 0) {
|
|
369
|
+
inventoryItems.forEach((itm: InventoryItem) => {
|
|
370
|
+
itm.status = INVENTORY_STATUS.PACKING
|
|
371
|
+
itm.updater = this.user
|
|
372
|
+
})
|
|
373
|
+
|
|
374
|
+
await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
if (removeInventoryItem.source == INVENTORY_ITEM_SOURCE.OUTBOUND) {
|
|
378
|
+
await this.trxMgr.getRepository(InventoryItem).delete(removeInventoryItem.id)
|
|
379
|
+
} else {
|
|
380
|
+
await this.trxMgr.getRepository(InventoryItem).update(
|
|
381
|
+
{
|
|
382
|
+
id: inventoryItemId
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
status: INVENTORY_STATUS.STORED,
|
|
386
|
+
outboundOrderId: null,
|
|
387
|
+
updater: this.user
|
|
388
|
+
}
|
|
389
|
+
)
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
targetInventory.packedQty--
|
|
393
|
+
targetInventory.updater = this.user
|
|
394
|
+
await this.updateOrderTargets([targetInventory])
|
|
395
|
+
}
|
|
181
396
|
}
|