@things-factory/worksheet-base 4.3.2 → 4.4.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-server/constants/index.js +5 -1
- package/dist-server/constants/index.js.map +1 -1
- package/dist-server/controllers/ecommerce/index.js +5 -1
- package/dist-server/controllers/ecommerce/index.js.map +1 -1
- package/dist-server/controllers/inbound/index.js +5 -1
- package/dist-server/controllers/inbound/index.js.map +1 -1
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js +3 -9
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/index.js +5 -2
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/inspect/index.js +5 -1
- package/dist-server/controllers/inspect/index.js.map +1 -1
- package/dist-server/controllers/outbound/index.js +5 -1
- package/dist-server/controllers/outbound/index.js.map +1 -1
- package/dist-server/controllers/outbound/loading-worksheet-controller.js +10 -47
- package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +5 -142
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js +20 -116
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/render-grn.js +18 -18
- package/dist-server/controllers/vas/index.js +5 -1
- package/dist-server/controllers/vas/index.js.map +1 -1
- package/dist-server/graphql/index.js +5 -1
- package/dist-server/graphql/index.js.map +1 -1
- package/dist-server/graphql/resolvers/index.js +5 -1
- package/dist-server/graphql/resolvers/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +1 -14
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/loading.js +10 -3
- package/dist-server/graphql/resolvers/worksheet/loading/loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +21 -55
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +0 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +6 -8
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/index.js +1 -2
- package/dist-server/graphql/resolvers/worksheet/picking/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/picking.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/picking/picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +1 -10
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js +6 -11
- package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.js +5 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +0 -2
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheets.js +2 -17
- package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +3 -5
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js +4 -15
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +1 -4
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js +2 -6
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
- package/dist-server/graphql/types/index.js +5 -1
- package/dist-server/graphql/types/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +0 -10
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js +0 -1
- package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js +0 -2
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-info.js +0 -2
- package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet.js +0 -1
- package/dist-server/graphql/types/worksheet/worksheet.js.map +1 -1
- package/dist-server/index.js +5 -1
- package/dist-server/index.js.map +1 -1
- package/dist-server/routes.js +0 -4
- package/dist-server/routes.js.map +1 -1
- package/dist-server/utils/index.js +5 -1
- package/dist-server/utils/index.js.map +1 -1
- package/package.json +17 -17
- package/server/controllers/inbound/unloading-worksheet-controller.ts +3 -14
- package/server/controllers/index.ts +0 -1
- package/server/controllers/outbound/loading-worksheet-controller.ts +17 -83
- package/server/controllers/outbound/picking-worksheet-controller.ts +7 -178
- package/server/controllers/outbound/sorting-worksheet-controller.ts +27 -167
- package/server/controllers/render-grn.ts +18 -18
- package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +0 -14
- package/server/graphql/resolvers/worksheet/loading/loading.ts +12 -5
- package/server/graphql/resolvers/worksheet/loading-worksheet.ts +13 -66
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +1 -1
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +1 -1
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +11 -13
- package/server/graphql/resolvers/worksheet/picking/index.ts +1 -3
- package/server/graphql/resolvers/worksheet/picking/picking.ts +4 -30
- package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +4 -7
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +2 -13
- package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +9 -13
- package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +4 -5
- package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +4 -5
- package/server/graphql/resolvers/worksheet/worksheet.ts +0 -2
- package/server/graphql/resolvers/worksheet/worksheets.ts +2 -26
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +3 -12
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +7 -22
- package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +2 -6
- package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +1 -7
- package/server/graphql/types/worksheet/index.ts +0 -10
- package/server/graphql/types/worksheet/loaded-worksheet-detail.ts +0 -1
- package/server/graphql/types/worksheet/worksheet-detail-info.ts +0 -2
- package/server/graphql/types/worksheet/worksheet-info.ts +0 -2
- package/server/graphql/types/worksheet/worksheet.ts +0 -1
- package/server/routes.ts +0 -5
- package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js +0 -15
- package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js.map +0 -1
- package/server/controllers/render-fm-grn.ts +0 -266
- package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +0 -25
|
@@ -101,10 +101,6 @@ export class UnloadingWorksheetController extends VasWorksheetController {
|
|
|
101
101
|
]
|
|
102
102
|
})
|
|
103
103
|
if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))
|
|
104
|
-
const targetProduct: OrderProduct = worksheetDetail.targetProduct
|
|
105
|
-
|
|
106
|
-
if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)
|
|
107
|
-
throw new Error('this product is pending for changes approval')
|
|
108
104
|
|
|
109
105
|
const bizplace: Bizplace = worksheetDetail.bizplace
|
|
110
106
|
const companyDomain: Domain = bizplace?.company?.domain
|
|
@@ -112,6 +108,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
|
|
|
112
108
|
const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice
|
|
113
109
|
const returnOrder: ReturnOrder = worksheet.returnOrder
|
|
114
110
|
const orderId: string = Boolean(arrivalNotice?.id) ? arrivalNotice.id : returnOrder.id
|
|
111
|
+
const targetProduct: OrderProduct = worksheetDetail.targetProduct
|
|
115
112
|
const targetInventory: OrderInventory = worksheetDetail?.targetInventory
|
|
116
113
|
const originInventory: OrderInventory = targetInventory ? targetInventory.inventory : null
|
|
117
114
|
const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId
|
|
@@ -283,15 +280,11 @@ export class UnloadingWorksheetController extends VasWorksheetController {
|
|
|
283
280
|
seed: { date: DateGenerator.generateDate() }
|
|
284
281
|
})
|
|
285
282
|
|
|
286
|
-
const targetProduct: OrderProduct = worksheetDetail.targetProduct
|
|
287
|
-
|
|
288
|
-
if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)
|
|
289
|
-
throw new Error('this product is pending for changes approval')
|
|
290
|
-
|
|
291
283
|
const bizplace: Bizplace = worksheetDetail.bizplace
|
|
292
284
|
const worksheet: Worksheet = worksheetDetail.worksheet
|
|
293
285
|
const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice
|
|
294
286
|
const returnOrder: ReturnOrder = worksheet.returnOrder
|
|
287
|
+
const targetProduct: OrderProduct = worksheetDetail.targetProduct
|
|
295
288
|
const targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
296
289
|
const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
|
|
297
290
|
const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
|
|
@@ -470,15 +463,11 @@ export class UnloadingWorksheetController extends VasWorksheetController {
|
|
|
470
463
|
seed: { date: DateGenerator.generateDate() }
|
|
471
464
|
})
|
|
472
465
|
|
|
473
|
-
const targetProduct: OrderProduct = worksheetDetail.targetProduct
|
|
474
|
-
|
|
475
|
-
if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)
|
|
476
|
-
throw new Error('this product is pending for changes approval')
|
|
477
|
-
|
|
478
466
|
const bizplace: Bizplace = worksheetDetail.bizplace
|
|
479
467
|
const worksheet: Worksheet = worksheetDetail.worksheet
|
|
480
468
|
const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice
|
|
481
469
|
const returnOrder: ReturnOrder = worksheet.returnOrder
|
|
470
|
+
const targetProduct: OrderProduct = worksheetDetail.targetProduct
|
|
482
471
|
const targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
483
472
|
const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
|
|
484
473
|
const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Equal, Not
|
|
1
|
+
import { Equal, Not } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { Bizplace } from '@things-factory/biz-base'
|
|
4
4
|
import {
|
|
@@ -8,11 +8,9 @@ import {
|
|
|
8
8
|
ORDER_TYPES,
|
|
9
9
|
OrderInventory,
|
|
10
10
|
OrderNoGenerator,
|
|
11
|
-
ReleaseGood
|
|
12
|
-
OrderToteItem,
|
|
13
|
-
OrderTote
|
|
11
|
+
ReleaseGood
|
|
14
12
|
} from '@things-factory/sales-base'
|
|
15
|
-
import { Inventory, INVENTORY_TRANSACTION_TYPE
|
|
13
|
+
import { Inventory, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'
|
|
16
14
|
|
|
17
15
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
18
16
|
import { Worksheet, WorksheetDetail } from '../../entities'
|
|
@@ -97,8 +95,8 @@ export class LoadingWorksheetController extends VasWorksheetController {
|
|
|
97
95
|
|
|
98
96
|
async loading(
|
|
99
97
|
releaseGoodNo: string,
|
|
100
|
-
worksheetDetails: Partial<WorksheetDetail & { loadedQty: number }
|
|
101
|
-
): Promise<
|
|
98
|
+
worksheetDetails: Partial<WorksheetDetail & { loadedQty: number }>[]
|
|
99
|
+
): Promise<void> {
|
|
102
100
|
const releaseGood: ReleaseGood = await this.findRefOrder(
|
|
103
101
|
ReleaseGood,
|
|
104
102
|
{ domain: this.domain, name: releaseGoodNo },
|
|
@@ -106,14 +104,14 @@ export class LoadingWorksheetController extends VasWorksheetController {
|
|
|
106
104
|
)
|
|
107
105
|
const bizplace: Bizplace = releaseGood.bizplace
|
|
108
106
|
|
|
109
|
-
for (let
|
|
110
|
-
const loadedQty: number =
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
)
|
|
107
|
+
for (let worksheetDetail of worksheetDetails) {
|
|
108
|
+
const loadedQty: number = worksheetDetail.loadedQty
|
|
109
|
+
worksheetDetail = await this.findExecutableWorksheetDetailByName(worksheetDetail.name, WORKSHEET_TYPE.LOADING, [
|
|
110
|
+
'worksheet',
|
|
111
|
+
'targetInventory',
|
|
112
|
+
'targetInventory.inventory',
|
|
113
|
+
'targetInventory.product'
|
|
114
|
+
])
|
|
117
115
|
|
|
118
116
|
const worksheet: Worksheet = worksheetDetail.worksheet
|
|
119
117
|
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
@@ -121,9 +119,9 @@ export class LoadingWorksheetController extends VasWorksheetController {
|
|
|
121
119
|
let inventory: Inventory = targetInventory.inventory
|
|
122
120
|
|
|
123
121
|
targetInventory.loadedAt = new Date()
|
|
124
|
-
targetInventory.loadedByUser = this.user
|
|
122
|
+
targetInventory.loadedByUser = this.user;
|
|
125
123
|
|
|
126
|
-
let loadedBy: string[] = targetInventory.loadedBy ? targetInventory.loadedBy.split(',') : []
|
|
124
|
+
let loadedBy: string[] = targetInventory.loadedBy ? (targetInventory.loadedBy).split(',') : []
|
|
127
125
|
if (!loadedBy.find(x => x == this.user.name)) {
|
|
128
126
|
loadedBy.push(this.user.name)
|
|
129
127
|
targetInventory.loadedBy = loadedBy.join(',')
|
|
@@ -176,56 +174,11 @@ export class LoadingWorksheetController extends VasWorksheetController {
|
|
|
176
174
|
newTargetInventory.updater = this.user
|
|
177
175
|
newTargetInventory = await this.trxMgr.getRepository(OrderInventory).save(newTargetInventory)
|
|
178
176
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
.getRepository(OrderTote)
|
|
182
|
-
.findOne({ where: { name: toteName, releaseGood } })
|
|
183
|
-
|
|
184
|
-
let foundOrderToteItems = await this.trxMgr
|
|
185
|
-
.getRepository(OrderToteItem)
|
|
186
|
-
.find({ where: { orderInventory: targetInventory.id } })
|
|
187
|
-
|
|
188
|
-
let foundOrderToteItemIds = foundOrderToteItems.map((itm: OrderToteItem) => itm.id)
|
|
189
|
-
|
|
190
|
-
await this.trxMgr
|
|
191
|
-
.getRepository(OrderToteItem)
|
|
192
|
-
.update({ id: In(foundOrderToteItemIds) }, { orderInventory: newTargetInventory })
|
|
193
|
-
|
|
194
|
-
let foundOrderToteItem: OrderToteItem = await this.trxMgr
|
|
195
|
-
.getRepository(OrderToteItem)
|
|
196
|
-
.findOne({ where: { orderInventory: newTargetInventory.id, orderTote: foundOrderTote, qty: loadedQty } })
|
|
197
|
-
|
|
198
|
-
await this.trxMgr
|
|
199
|
-
.getRepository(OrderToteItem)
|
|
200
|
-
.update({ id: foundOrderToteItem.id }, { orderInventory: targetInventory.id })
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
let newWorksheetDetail: any = await this.createWorksheetDetails(
|
|
204
|
-
worksheet,
|
|
205
|
-
WORKSHEET_TYPE.LOADING,
|
|
206
|
-
[newTargetInventory],
|
|
207
|
-
{
|
|
208
|
-
status: WORKSHEET_STATUS.EXECUTING
|
|
209
|
-
}
|
|
210
|
-
)
|
|
211
|
-
|
|
212
|
-
let worksheetDetailName = worksheetDetails[i].name
|
|
213
|
-
worksheetDetails = worksheetDetails.map(record => {
|
|
214
|
-
if (record.name == worksheetDetailName && !record?.targetInventory) {
|
|
215
|
-
return {
|
|
216
|
-
...record,
|
|
217
|
-
name: newWorksheetDetail[0].name
|
|
218
|
-
}
|
|
219
|
-
} else {
|
|
220
|
-
return record
|
|
221
|
-
}
|
|
177
|
+
await this.createWorksheetDetails(worksheet, WORKSHEET_TYPE.LOADING, [newTargetInventory], {
|
|
178
|
+
status: WORKSHEET_STATUS.EXECUTING
|
|
222
179
|
})
|
|
223
|
-
|
|
224
|
-
worksheetDetails[i].name = worksheetDetailName
|
|
225
180
|
}
|
|
226
181
|
|
|
227
|
-
worksheetDetails[i].targetInventory = targetInventory
|
|
228
|
-
|
|
229
182
|
await generateInventoryHistory(
|
|
230
183
|
inventory,
|
|
231
184
|
releaseGood,
|
|
@@ -236,8 +189,6 @@ export class LoadingWorksheetController extends VasWorksheetController {
|
|
|
236
189
|
this.trxMgr
|
|
237
190
|
)
|
|
238
191
|
}
|
|
239
|
-
|
|
240
|
-
return worksheetDetails
|
|
241
192
|
}
|
|
242
193
|
|
|
243
194
|
async undoLoading(deliveryOrder: Partial<DeliveryOrder>, palletIds: string[]): Promise<void> {
|
|
@@ -277,10 +228,6 @@ export class LoadingWorksheetController extends VasWorksheetController {
|
|
|
277
228
|
}
|
|
278
229
|
})
|
|
279
230
|
|
|
280
|
-
let undoOrderToteItem: OrderToteItem = await this.trxMgr
|
|
281
|
-
.getRepository(OrderToteItem)
|
|
282
|
-
.findOne({ where: { orderInventory: undoTargetOrderInventory } })
|
|
283
|
-
|
|
284
231
|
if (prevTargetInventory) {
|
|
285
232
|
// If there's prev target inventory
|
|
286
233
|
// Merge qty and uomValue into prev target inventory
|
|
@@ -289,13 +236,6 @@ export class LoadingWorksheetController extends VasWorksheetController {
|
|
|
289
236
|
prevTargetInventory.updater = this.user
|
|
290
237
|
await this.updateOrderTargets([prevTargetInventory])
|
|
291
238
|
|
|
292
|
-
//Update order tote item if any
|
|
293
|
-
if (undoOrderToteItem) {
|
|
294
|
-
undoOrderToteItem.orderInventoryId = prevTargetInventory.id
|
|
295
|
-
undoOrderToteItem.orderInventory = prevTargetInventory
|
|
296
|
-
await this.trxMgr.getRepository(OrderToteItem).save(undoOrderToteItem)
|
|
297
|
-
}
|
|
298
|
-
|
|
299
239
|
// Terminate undo target order inventory
|
|
300
240
|
undoTargetOrderInventory.status = ORDER_INVENTORY_STATUS.TERMINATED
|
|
301
241
|
await this.updateOrderTargets([undoTargetOrderInventory])
|
|
@@ -342,12 +282,6 @@ export class LoadingWorksheetController extends VasWorksheetController {
|
|
|
342
282
|
status: ORDER_STATUS.LOADING
|
|
343
283
|
})
|
|
344
284
|
|
|
345
|
-
const orderToteIds = await (
|
|
346
|
-
await this.trxMgr.getRepository(OrderTote).find({ where: { releaseGood }, relations: ['tote'] })
|
|
347
|
-
).map((record: OrderTote) => record?.toteId)
|
|
348
|
-
|
|
349
|
-
await this.trxMgr.getRepository(Tote).update({ id: In(orderToteIds) }, { status: TOTE_STATUS.DISPATCHED })
|
|
350
|
-
|
|
351
285
|
const worksheet: Worksheet = await this.findWorksheetByRefOrder(releaseGood, WORKSHEET_TYPE.LOADING, [
|
|
352
286
|
'worksheetDetails',
|
|
353
287
|
'worksheetDetails.targetInventory'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Equal, In,
|
|
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'
|
|
@@ -8,10 +8,6 @@ import {
|
|
|
8
8
|
ORDER_STATUS,
|
|
9
9
|
OrderInventory,
|
|
10
10
|
OrderNoGenerator,
|
|
11
|
-
OrderProduct,
|
|
12
|
-
OrderTote,
|
|
13
|
-
OrderToteItem,
|
|
14
|
-
OrderToteSeal,
|
|
15
11
|
OrderVas,
|
|
16
12
|
ReleaseGood
|
|
17
13
|
} from '@things-factory/sales-base'
|
|
@@ -24,9 +20,7 @@ import {
|
|
|
24
20
|
InventoryItem,
|
|
25
21
|
InventoryNoGenerator,
|
|
26
22
|
Location,
|
|
27
|
-
LOCATION_TYPE
|
|
28
|
-
Tote,
|
|
29
|
-
TOTE_STATUS
|
|
23
|
+
LOCATION_TYPE
|
|
30
24
|
} from '@things-factory/warehouse-base'
|
|
31
25
|
|
|
32
26
|
import { TASK_NUMBER_RULE_TYPE, TASK_NUMBER_SETTING_KEY, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
|
|
@@ -394,8 +388,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
394
388
|
productBarcode: string,
|
|
395
389
|
cartonId: string,
|
|
396
390
|
binLocation?: string,
|
|
397
|
-
serialNumber?: string
|
|
398
|
-
toteNo?: string
|
|
391
|
+
serialNumber?: string
|
|
399
392
|
): Promise<OrderInventory> {
|
|
400
393
|
try {
|
|
401
394
|
let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
|
|
@@ -408,7 +401,6 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
408
401
|
'targetInventory.releaseGood',
|
|
409
402
|
'targetInventory.inventory',
|
|
410
403
|
'targetInventory.product',
|
|
411
|
-
'targetInventory.orderProduct',
|
|
412
404
|
'targetInventory.product.productDetails',
|
|
413
405
|
'targetInventory.product.productDetails.product',
|
|
414
406
|
'targetInventory.product.productDetails.childProductDetail'
|
|
@@ -417,10 +409,8 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
417
409
|
|
|
418
410
|
const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
|
|
419
411
|
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
420
|
-
let targetProduct: OrderProduct = targetInventory.orderProduct
|
|
421
412
|
const product: Product = targetInventory.product
|
|
422
413
|
let inventory: Inventory = targetInventory.inventory
|
|
423
|
-
let bizplace: Bizplace = worksheetDetail.worksheet.bizplace
|
|
424
414
|
|
|
425
415
|
//validation to prevent duplicated picking
|
|
426
416
|
let oiValidate: OrderInventory = await this.trxMgr.getRepository(OrderInventory).findOne({
|
|
@@ -522,10 +512,6 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
522
512
|
}
|
|
523
513
|
}
|
|
524
514
|
|
|
525
|
-
if (toteNo) {
|
|
526
|
-
await this.toteScanning(toteNo, targetProduct, targetInventory, pickedQty, releaseGood, bizplace)
|
|
527
|
-
}
|
|
528
|
-
|
|
529
515
|
await this.updatePickingTransaction(releaseGood, targetInventory, worksheetDetail, inventory, pickedQty)
|
|
530
516
|
} catch (error) {
|
|
531
517
|
throw error
|
|
@@ -539,8 +525,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
539
525
|
locationName: string,
|
|
540
526
|
pickedQty: number,
|
|
541
527
|
binLocation?: string,
|
|
542
|
-
serialNumber?: string
|
|
543
|
-
toteNo?: string
|
|
528
|
+
serialNumber?: string
|
|
544
529
|
): Promise<void> {
|
|
545
530
|
try {
|
|
546
531
|
let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
|
|
@@ -548,10 +533,8 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
548
533
|
worksheetType,
|
|
549
534
|
[
|
|
550
535
|
'worksheet',
|
|
551
|
-
'worksheet.bizplace',
|
|
552
536
|
'targetInventory',
|
|
553
537
|
'targetInventory.releaseGood',
|
|
554
|
-
'targetInventory.orderProduct',
|
|
555
538
|
'targetInventory.inventory',
|
|
556
539
|
'targetInventory.inventory.location',
|
|
557
540
|
'targetInventory.product'
|
|
@@ -562,8 +545,6 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
562
545
|
let targetInventory: OrderInventory = worksheetDetail.targetInventory
|
|
563
546
|
const product: Product = targetInventory.product
|
|
564
547
|
let inventory: Inventory = targetInventory.inventory
|
|
565
|
-
let targetProduct: OrderProduct = targetInventory.orderProduct
|
|
566
|
-
let bizplace: Bizplace = worksheetDetail.worksheet.bizplace
|
|
567
548
|
|
|
568
549
|
//validation to prevent duplicated picking
|
|
569
550
|
let oiValidate: OrderInventory = await this.trxMgr.getRepository(OrderInventory).findOne({
|
|
@@ -668,10 +649,6 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
668
649
|
|
|
669
650
|
targetInventory = await this.checkAndSetBinPicking(targetInventory, binLocation)
|
|
670
651
|
|
|
671
|
-
if (toteNo) {
|
|
672
|
-
await this.toteScanning(toteNo, targetProduct, targetInventory, pickedQty, releaseGood, bizplace)
|
|
673
|
-
}
|
|
674
|
-
|
|
675
652
|
await this.updatePickingTransaction(releaseGood, targetInventory, worksheetDetail, inventory, pickedQty)
|
|
676
653
|
|
|
677
654
|
const fromLocation: Location = targetInventory.inventory.location
|
|
@@ -970,14 +947,6 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
970
947
|
status: ORDER_STATUS.PICKING
|
|
971
948
|
})
|
|
972
949
|
|
|
973
|
-
const foundNotSealedOrderTote = await this.trxMgr
|
|
974
|
-
.getRepository(OrderTote)
|
|
975
|
-
.findOne({ where: { releaseGood, closedDate: IsNull() } })
|
|
976
|
-
|
|
977
|
-
if (foundNotSealedOrderTote) {
|
|
978
|
-
throw new Error('Please seal the tote(s) before completing')
|
|
979
|
-
}
|
|
980
|
-
|
|
981
950
|
let worksheet: Worksheet = await this.findWorksheetByRefOrder(releaseGood, WORKSHEET_TYPE.PICKING, [
|
|
982
951
|
'worksheetDetails',
|
|
983
952
|
'worksheetDetails.targetInventory'
|
|
@@ -1039,14 +1008,14 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
1039
1008
|
worksheet.updater = this.user
|
|
1040
1009
|
worksheet = await this.trxMgr.getRepository(Worksheet).save(worksheet)
|
|
1041
1010
|
|
|
1042
|
-
const worksheetDetails:
|
|
1011
|
+
const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
|
|
1043
1012
|
worksheetDetails.forEach((wsd: WorksheetDetail) => {
|
|
1044
1013
|
wsd.status = WORKSHEET_STATUS.DONE
|
|
1045
1014
|
wsd.updater = this.user
|
|
1046
1015
|
})
|
|
1047
1016
|
await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)
|
|
1048
1017
|
|
|
1049
|
-
const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => {
|
|
1018
|
+
const targetInventories: OrderInventory[] = worksheet.worksheetDetails.map((wsd: WorksheetDetail) => {
|
|
1050
1019
|
let targetInventory: OrderInventory = wsd.targetInventory
|
|
1051
1020
|
targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED
|
|
1052
1021
|
targetInventory.updater = this.user
|
|
@@ -1054,7 +1023,7 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
1054
1023
|
})
|
|
1055
1024
|
await this.updateOrderTargets(targetInventories)
|
|
1056
1025
|
|
|
1057
|
-
const releaseGoods: ReleaseGood[] = worksheetDetails.map((wsd: WorksheetDetail) => {
|
|
1026
|
+
const releaseGoods: ReleaseGood[] = worksheet.worksheetDetails.map((wsd: WorksheetDetail) => {
|
|
1058
1027
|
let releaseGood: ReleaseGood = wsd.targetInventory.releaseGood
|
|
1059
1028
|
|
|
1060
1029
|
let orderStatus: string
|
|
@@ -1139,9 +1108,6 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
1139
1108
|
}
|
|
1140
1109
|
|
|
1141
1110
|
orderInventory.status = ORDER_INVENTORY_STATUS.PICKED
|
|
1142
|
-
orderInventory.pickedBy = this.user?.name
|
|
1143
|
-
orderInventory.pickedByUser = this.user
|
|
1144
|
-
orderInventory.pickedAt = new Date()
|
|
1145
1111
|
|
|
1146
1112
|
inventory.qty -= orderInventory.releaseQty
|
|
1147
1113
|
inventory.uomValue = Math.round((inventory.uomValue - orderInventory.releaseUomValue) * 100) / 100
|
|
@@ -1401,75 +1367,6 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
1401
1367
|
} catch (e) {}
|
|
1402
1368
|
}
|
|
1403
1369
|
|
|
1404
|
-
private async toteScanning(toteNo, targetProduct, targetInventory, pickedQty, releaseGood, bizplace) {
|
|
1405
|
-
//1. find tote
|
|
1406
|
-
let foundTote: Tote = await this.trxMgr
|
|
1407
|
-
.getRepository(Tote)
|
|
1408
|
-
.findOne({ where: { bizplace, name: toteNo, deletedAt: IsNull() } })
|
|
1409
|
-
|
|
1410
|
-
if (foundTote?.status == TOTE_STATUS.DAMAGED || foundTote?.status == TOTE_STATUS.DISPATCHED) {
|
|
1411
|
-
foundTote = null
|
|
1412
|
-
}
|
|
1413
|
-
|
|
1414
|
-
//2. find order tote
|
|
1415
|
-
let foundOrderTote: OrderTote = await this.trxMgr
|
|
1416
|
-
.getRepository(OrderTote)
|
|
1417
|
-
.findOne({ where: { domain: this.domain, name: toteNo, releaseGood } })
|
|
1418
|
-
|
|
1419
|
-
//if order tote not found the create one, if tote not found means it's tote box
|
|
1420
|
-
//create order tote item
|
|
1421
|
-
if (!foundOrderTote) {
|
|
1422
|
-
const orderTote = await this.trxMgr.getRepository(OrderTote).save({
|
|
1423
|
-
name: toteNo,
|
|
1424
|
-
domain: this.domain,
|
|
1425
|
-
releaseGood,
|
|
1426
|
-
tote: foundTote ? foundTote : null,
|
|
1427
|
-
updater: this.user
|
|
1428
|
-
})
|
|
1429
|
-
|
|
1430
|
-
const orderToteItem = await this.trxMgr.getRepository(OrderToteItem).save({
|
|
1431
|
-
domain: this.domain,
|
|
1432
|
-
name: OrderNoGenerator.orderToteItem(),
|
|
1433
|
-
orderProduct: targetProduct,
|
|
1434
|
-
orderInventory: targetInventory,
|
|
1435
|
-
orderTote,
|
|
1436
|
-
qty: pickedQty,
|
|
1437
|
-
updater: this.user
|
|
1438
|
-
})
|
|
1439
|
-
} else {
|
|
1440
|
-
if (foundOrderTote.closedDate) {
|
|
1441
|
-
throw new Error('Tote has been sealed, please try another tote!')
|
|
1442
|
-
}
|
|
1443
|
-
|
|
1444
|
-
//if found order tote then check if order tote item exist
|
|
1445
|
-
const foundOrderToteItem: OrderToteItem = await this.trxMgr.getRepository(OrderToteItem).findOne({
|
|
1446
|
-
domain: this.domain,
|
|
1447
|
-
orderProduct: targetProduct,
|
|
1448
|
-
orderInventory: targetInventory,
|
|
1449
|
-
orderTote: foundOrderTote
|
|
1450
|
-
})
|
|
1451
|
-
|
|
1452
|
-
//if not order tote item doesnt exist then create one
|
|
1453
|
-
if (!foundOrderToteItem) {
|
|
1454
|
-
const orderToteItem = await this.trxMgr.getRepository(OrderToteItem).save({
|
|
1455
|
-
domain: this.domain,
|
|
1456
|
-
name: OrderNoGenerator.orderToteItem(),
|
|
1457
|
-
orderProduct: targetProduct,
|
|
1458
|
-
orderInventory: targetInventory,
|
|
1459
|
-
orderTote: foundOrderTote,
|
|
1460
|
-
qty: pickedQty,
|
|
1461
|
-
updater: this.user
|
|
1462
|
-
})
|
|
1463
|
-
} else {
|
|
1464
|
-
//if found order tote item found then add the quantity
|
|
1465
|
-
const orderToteItem = await this.trxMgr.getRepository(OrderToteItem).save({
|
|
1466
|
-
...foundOrderToteItem,
|
|
1467
|
-
qty: foundOrderToteItem.qty + pickedQty
|
|
1468
|
-
})
|
|
1469
|
-
}
|
|
1470
|
-
}
|
|
1471
|
-
}
|
|
1472
|
-
|
|
1473
1370
|
async undoSerialNumberPicking(worksheetDetailName: string, inventoryItemId: string): Promise<void> {
|
|
1474
1371
|
const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({
|
|
1475
1372
|
where: { name: worksheetDetailName, domain: this.domain, status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED)) },
|
|
@@ -1541,72 +1438,4 @@ export class PickingWorksheetController extends VasWorksheetController {
|
|
|
1541
1438
|
targetInventory.updater = this.user
|
|
1542
1439
|
await this.updateOrderTargets([targetInventory])
|
|
1543
1440
|
}
|
|
1544
|
-
|
|
1545
|
-
async sealTote(sealNo: string, toteNo: string, orderNo: string): Promise<void> {
|
|
1546
|
-
const checkDuplicateSeal = await this.trxMgr.getRepository(OrderToteSeal).findOne({
|
|
1547
|
-
where: {
|
|
1548
|
-
name: sealNo
|
|
1549
|
-
}
|
|
1550
|
-
})
|
|
1551
|
-
|
|
1552
|
-
if (checkDuplicateSeal) {
|
|
1553
|
-
throw new Error('Seal has been scanned before')
|
|
1554
|
-
}
|
|
1555
|
-
|
|
1556
|
-
const releaseGood: ReleaseGood = await this.trxMgr
|
|
1557
|
-
.getRepository(ReleaseGood)
|
|
1558
|
-
.findOne({ where: { domain: this.domain, name: orderNo }, relations: ['bizplace', 'bizplace.domain'] })
|
|
1559
|
-
|
|
1560
|
-
let sealNoSetting: Setting = await this.trxMgr.getRepository(Setting).findOne({
|
|
1561
|
-
where: {
|
|
1562
|
-
domain: releaseGood.bizplace.domain,
|
|
1563
|
-
name: 'minimum-seal-number'
|
|
1564
|
-
}
|
|
1565
|
-
})
|
|
1566
|
-
|
|
1567
|
-
if (!sealNoSetting) {
|
|
1568
|
-
sealNoSetting = await this.trxMgr.getRepository(Setting).findOne({
|
|
1569
|
-
where: {
|
|
1570
|
-
domain: this.domain,
|
|
1571
|
-
name: 'minimum-seal-number'
|
|
1572
|
-
}
|
|
1573
|
-
})
|
|
1574
|
-
}
|
|
1575
|
-
|
|
1576
|
-
const foundOrderTote: OrderTote = await this.trxMgr
|
|
1577
|
-
.getRepository(OrderTote)
|
|
1578
|
-
.findOne({ where: { domain: this.domain, name: toteNo, releaseGood } })
|
|
1579
|
-
|
|
1580
|
-
if (!foundOrderTote) {
|
|
1581
|
-
throw new Error('Tote not scanned under this order')
|
|
1582
|
-
}
|
|
1583
|
-
|
|
1584
|
-
let totalOrderToteItems = await this.trxMgr.getRepository(OrderToteItem).count({
|
|
1585
|
-
where: {
|
|
1586
|
-
orderTote: foundOrderTote
|
|
1587
|
-
}
|
|
1588
|
-
})
|
|
1589
|
-
|
|
1590
|
-
if (totalOrderToteItems < 1) {
|
|
1591
|
-
throw new Error('Tote carton is empty')
|
|
1592
|
-
}
|
|
1593
|
-
|
|
1594
|
-
const newToteOrderSeal: OrderToteSeal = await this.trxMgr.getRepository(OrderToteSeal).save({
|
|
1595
|
-
domain: this.domain,
|
|
1596
|
-
name: sealNo,
|
|
1597
|
-
orderTote: foundOrderTote,
|
|
1598
|
-
updater: this.user
|
|
1599
|
-
})
|
|
1600
|
-
|
|
1601
|
-
const totalSeal = await this.trxMgr.getRepository(OrderToteSeal).count({
|
|
1602
|
-
orderTote: foundOrderTote
|
|
1603
|
-
})
|
|
1604
|
-
|
|
1605
|
-
if (totalSeal >= parseInt(sealNoSetting?.value || 0)) {
|
|
1606
|
-
await this.trxMgr.getRepository(OrderTote).save({
|
|
1607
|
-
...foundOrderTote,
|
|
1608
|
-
closedDate: new Date()
|
|
1609
|
-
})
|
|
1610
|
-
}
|
|
1611
|
-
}
|
|
1612
1441
|
}
|