@things-factory/worksheet-base 5.0.0-alpha.50 → 5.0.0-alpha.53
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/ecommerce/sellercraft-controller.js +15 -7
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
- package/dist-server/controllers/inbound/putaway-worksheet-controller.js +22 -13
- package/dist-server/controllers/inbound/putaway-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js +1 -1
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/loading-worksheet-controller.js +47 -10
- package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +148 -7
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js +116 -20
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/render-grn.js +35 -27
- package/dist-server/controllers/render-grn.js.map +1 -1
- package/dist-server/controllers/render-manifest.js +12 -5
- package/dist-server/controllers/render-manifest.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +8 -1
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/entities/index.js +2 -1
- package/dist-server/entities/index.js.map +1 -1
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js +174 -0
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +14 -1
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js +17 -0
- package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/index.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +40 -18
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/loading.js +3 -10
- package/dist-server/graphql/resolvers/worksheet/loading/loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +55 -21
- package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +1 -0
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js +2 -5
- package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.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 +8 -6
- 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.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/seal-tote.js +15 -0
- package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js.map +1 -0
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +10 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +36 -0
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js +11 -6
- 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/unloading/complete-unloading.js +0 -21
- package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheet.js +2 -0
- package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/worksheets.js +19 -4
- 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 +9 -3
- 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 +19 -4
- package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js +24 -34
- package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +8 -1
- 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 +10 -2
- package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js +2 -5
- package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +14 -0
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js +1 -0
- package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js +2 -0
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-info.js +2 -0
- package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet.js +1 -0
- package/dist-server/graphql/types/worksheet/worksheet.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +3 -0
- package/dist-server/graphql/types/worksheet-detail/inventory-detail.js.map +1 -1
- package/dist-server/utils/worksheet-no-generator.js +25 -28
- package/dist-server/utils/worksheet-no-generator.js.map +1 -1
- package/package.json +17 -17
- package/server/controllers/ecommerce/sellercraft-controller.ts +28 -7
- package/server/controllers/inbound/putaway-worksheet-controller.ts +27 -13
- package/server/controllers/inbound/unloading-worksheet-controller.ts +1 -1
- package/server/controllers/outbound/loading-worksheet-controller.ts +83 -17
- package/server/controllers/outbound/picking-worksheet-controller.ts +189 -9
- package/server/controllers/outbound/sorting-worksheet-controller.ts +167 -27
- package/server/controllers/render-grn.ts +46 -37
- package/server/controllers/render-manifest.ts +12 -5
- package/server/controllers/worksheet-controller.ts +14 -1
- package/server/entities/index.ts +2 -1
- package/server/entities/warehouse-bizplace-onhand-inventory.ts +147 -0
- package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +14 -0
- package/server/graphql/resolvers/worksheet/cancel-draft-release-order.ts +27 -0
- package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +2 -1
- package/server/graphql/resolvers/worksheet/index.ts +3 -1
- package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +44 -18
- package/server/graphql/resolvers/worksheet/loading/loading.ts +5 -12
- package/server/graphql/resolvers/worksheet/loading-worksheet.ts +66 -13
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +1 -1
- package/server/graphql/resolvers/worksheet/palletizing-pallets.ts +2 -2
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +1 -1
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +13 -11
- package/server/graphql/resolvers/worksheet/picking/index.ts +3 -1
- package/server/graphql/resolvers/worksheet/picking/picking.ts +30 -4
- package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +7 -4
- package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +25 -0
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +13 -2
- package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +45 -2
- package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +13 -9
- 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/unloading/complete-unloading.ts +0 -25
- package/server/graphql/resolvers/worksheet/worksheet.ts +2 -0
- package/server/graphql/resolvers/worksheet/worksheets.ts +28 -4
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +21 -3
- package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +39 -11
- package/server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts +46 -49
- package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +11 -1
- package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +18 -1
- package/server/graphql/resolvers/worksheet-movement/create-worksheet-movement.ts +2 -2
- package/server/graphql/types/worksheet/index.ts +14 -0
- package/server/graphql/types/worksheet/loaded-worksheet-detail.ts +1 -0
- package/server/graphql/types/worksheet/worksheet-detail-info.ts +2 -0
- package/server/graphql/types/worksheet/worksheet-info.ts +2 -0
- package/server/graphql/types/worksheet/worksheet.ts +1 -0
- package/server/graphql/types/worksheet-detail/inventory-detail.ts +3 -0
- package/server/utils/worksheet-no-generator.ts +25 -25
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import {
|
|
5
|
+
ORDER_STATUS,
|
|
6
|
+
DraftReleaseGood
|
|
7
|
+
} from '@things-factory/sales-base'
|
|
8
|
+
import { Domain } from '@things-factory/shell'
|
|
9
|
+
|
|
10
|
+
export const cancelDraftReleaseOrder = {
|
|
11
|
+
async cancelDraftReleaseOrder(_: any, { name }, context: any) {
|
|
12
|
+
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
13
|
+
|
|
14
|
+
const foundDRO: DraftReleaseGood = await tx.getRepository(DraftReleaseGood).findOne({
|
|
15
|
+
where: { domain, name }
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
if (foundDRO) {
|
|
19
|
+
await tx.getRepository(DraftReleaseGood).save({
|
|
20
|
+
...foundDRO,
|
|
21
|
+
status: ORDER_STATUS.CANCELLED,
|
|
22
|
+
updater: user
|
|
23
|
+
})
|
|
24
|
+
}
|
|
25
|
+
return
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -73,7 +73,8 @@ export async function cycleCountAdjustment(
|
|
|
73
73
|
let transactUomValue: number = targetInventory.inspectedUomValue - inventory.uomValue
|
|
74
74
|
|
|
75
75
|
const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
|
|
76
|
-
where: { domain: inventory.bizplace.domain, status: SellercraftStatus.ACTIVE }
|
|
76
|
+
where: { domain: inventory.bizplace.domain, status: SellercraftStatus.ACTIVE },
|
|
77
|
+
relations: ['domain']
|
|
77
78
|
})
|
|
78
79
|
|
|
79
80
|
if (targetInventory.status === ORDER_INVENTORY_STATUS.MISSING) {
|
|
@@ -22,6 +22,7 @@ import { Mutations as PackingMutations } from './packing'
|
|
|
22
22
|
import { packingWorksheetResolver } from './packing-worksheet'
|
|
23
23
|
import { palletizingPallets } from './palletizing-pallets'
|
|
24
24
|
import { pendingCancellationReleaseOrder } from './pending-cancellation-release-order'
|
|
25
|
+
import { cancelDraftReleaseOrder } from './cancel-draft-release-order'
|
|
25
26
|
import { Mutations as PickingMutations } from './picking'
|
|
26
27
|
import { pickingWorksheetResolver } from './picking-worksheet'
|
|
27
28
|
import { myPickingAssignmentStatusResolver } from './picking/my-picking-assignment-status'
|
|
@@ -132,5 +133,6 @@ export const Mutation = {
|
|
|
132
133
|
...crossDockPickingResolver,
|
|
133
134
|
...unpackingResolver,
|
|
134
135
|
...palletizingPallets,
|
|
135
|
-
...fetchSellercraftAirwayBillResolver
|
|
136
|
+
...fetchSellercraftAirwayBillResolver,
|
|
137
|
+
...cancelDraftReleaseOrder
|
|
136
138
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { EntityManager } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Bizplace, Company } from '@things-factory/biz-base'
|
|
5
|
+
import { FulfillmentCenter } from '@things-factory/integration-fulfillment'
|
|
4
6
|
import { Sftp, SftpAPI } from '@things-factory/integration-sftp'
|
|
5
7
|
import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
6
8
|
import { Domain } from '@things-factory/shell'
|
|
@@ -44,28 +46,52 @@ export async function completeLoading(
|
|
|
44
46
|
(targetInventory: OrderInventory) => targetInventory.status === ORDER_INVENTORY_STATUS.LOADING
|
|
45
47
|
)
|
|
46
48
|
|
|
49
|
+
// Search Warehouse Company Domain
|
|
50
|
+
const warehouseCompanyBizplace: Bizplace = await tx
|
|
51
|
+
.getRepository(Bizplace)
|
|
52
|
+
.findOne({ where: { domain }, relations: ['company'] })
|
|
53
|
+
|
|
54
|
+
const warehouseCompany: Company = warehouseCompanyBizplace.company
|
|
55
|
+
const warehouseBizplaces: Bizplace[] = await tx
|
|
56
|
+
.getRepository(Bizplace)
|
|
57
|
+
.find({ where: { company: warehouseCompany }, relations: ['domain'] })
|
|
58
|
+
const warehouseCompanyBizplaces: Bizplace[] = warehouseBizplaces.filter(biz => biz.domain.extType == 'company')
|
|
59
|
+
const warehouseCompanyDomain: Domain = warehouseCompanyBizplaces[0].domain
|
|
60
|
+
|
|
47
61
|
const customerDomain: Domain = releaseGood.bizplace.domain
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (customerAvailableSftp) {
|
|
52
|
-
let inventoryItems: InventoryItem[] = await tx.getRepository(InventoryItem).find({
|
|
53
|
-
where: { domain, outboundOrderId: releaseGood.id }
|
|
54
|
-
})
|
|
62
|
+
const fulfillmentCenter: FulfillmentCenter = await tx
|
|
63
|
+
.getRepository(FulfillmentCenter)
|
|
64
|
+
.findOne({ domain: warehouseCompanyDomain, centerId: domain.subdomain, status: 'active' })
|
|
55
65
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
sftp: customerAvailableSftp
|
|
66
|
+
if (fulfillmentCenter) {
|
|
67
|
+
let customerAvailableSftp: Sftp = await tx.getRepository(Sftp).findOne({
|
|
68
|
+
where: { domain: customerDomain, status: 'ACTIVE', fulfillmentCenter }
|
|
60
69
|
})
|
|
61
|
-
|
|
70
|
+
if (customerAvailableSftp) {
|
|
71
|
+
const responseFileTypes: any = JSON.parse(customerAvailableSftp.responseFileTypes)
|
|
62
72
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
73
|
+
let inventoryItems: InventoryItem[] = await tx.getRepository(InventoryItem).find({
|
|
74
|
+
where: { domain, outboundOrderId: releaseGood.id }
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
if (responseFileTypes.enableShipment) {
|
|
78
|
+
let shipmentResult: Sftp = await SftpAPI.createShipment(customerAvailableSftp, {
|
|
79
|
+
releaseGood,
|
|
80
|
+
orderInventories: targetInventories,
|
|
81
|
+
sftp: customerAvailableSftp
|
|
82
|
+
})
|
|
83
|
+
customerAvailableSftp = await tx.getRepository(Sftp).save(shipmentResult)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (responseFileTypes.enableSerialNumber) {
|
|
87
|
+
let snResult: Sftp = await SftpAPI.createSerialNumber(customerAvailableSftp, {
|
|
88
|
+
releaseGood,
|
|
89
|
+
inventoryItems,
|
|
90
|
+
sftp: customerAvailableSftp
|
|
91
|
+
})
|
|
92
|
+
customerAvailableSftp = await tx.getRepository(Sftp).save(snResult)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
69
95
|
}
|
|
70
96
|
|
|
71
97
|
await worksheetController.completeLoading(releaseGoodNo)
|
|
@@ -9,7 +9,7 @@ import { WorksheetDetail } from '../../../../entities'
|
|
|
9
9
|
export const loadingResolver = {
|
|
10
10
|
async loading(_: any, { loadedWorksheetDetails, releaseGoodNo, orderInfo }, context: any) {
|
|
11
11
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
12
|
-
await loading(tx, domain, user, loadedWorksheetDetails, releaseGoodNo)
|
|
12
|
+
const worksheetDetails = await loading(tx, domain, user, loadedWorksheetDetails, releaseGoodNo)
|
|
13
13
|
const worksheetController: WorksheetController = new WorksheetController(tx, domain, user)
|
|
14
14
|
const releaseGood: ReleaseGood = await worksheetController.findRefOrder(
|
|
15
15
|
ReleaseGood,
|
|
@@ -18,14 +18,7 @@ export const loadingResolver = {
|
|
|
18
18
|
)
|
|
19
19
|
|
|
20
20
|
const loadingWorksheetController: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
|
|
21
|
-
let targetInventories: OrderInventory[] =
|
|
22
|
-
for (let worksheetDetail of loadedWorksheetDetails) {
|
|
23
|
-
worksheetDetail = await loadingWorksheetController.findWorksheetDetailByName(worksheetDetail.name, [
|
|
24
|
-
'targetInventory'
|
|
25
|
-
])
|
|
26
|
-
const targetInventory = worksheetDetail.targetInventory
|
|
27
|
-
targetInventories.push(targetInventory)
|
|
28
|
-
}
|
|
21
|
+
let targetInventories: OrderInventory[] = worksheetDetails.map(itm => itm.targetInventory)
|
|
29
22
|
|
|
30
23
|
const bizplace: Bizplace = releaseGood.bizplace
|
|
31
24
|
orderInfo = {
|
|
@@ -41,9 +34,9 @@ export async function loading(
|
|
|
41
34
|
tx: EntityManager,
|
|
42
35
|
domain: Domain,
|
|
43
36
|
user: User,
|
|
44
|
-
worksheetDetails: Partial<WorksheetDetail & { loadedQty: number }>[],
|
|
37
|
+
worksheetDetails: Partial<WorksheetDetail & { loadedQty: number } & { toteName: string }>[],
|
|
45
38
|
releaseGoodNo: string
|
|
46
|
-
): Promise<
|
|
39
|
+
): Promise<any> {
|
|
47
40
|
const worksheetController: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
|
|
48
|
-
await worksheetController.loading(releaseGoodNo, worksheetDetails)
|
|
41
|
+
return await worksheetController.loading(releaseGoodNo, worksheetDetails)
|
|
49
42
|
}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { Equal, getRepository, In, Not, SelectQueryBuilder } from 'typeorm'
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
ORDER_STATUS,
|
|
5
|
+
ORDER_INVENTORY_STATUS,
|
|
6
|
+
OrderInventory,
|
|
7
|
+
ReleaseGood,
|
|
8
|
+
OrderTote,
|
|
9
|
+
OrderToteItem
|
|
10
|
+
} from '@things-factory/sales-base'
|
|
4
11
|
import { Domain } from '@things-factory/shell'
|
|
5
12
|
import { Inventory, Location } from '@things-factory/warehouse-base'
|
|
6
13
|
|
|
@@ -27,7 +34,9 @@ export const loadingWorksheetResolver = {
|
|
|
27
34
|
.innerJoinAndSelect('releaseGood.bizplace', 'bizplace')
|
|
28
35
|
.innerJoinAndSelect('bizplace.domain', 'domain')
|
|
29
36
|
.where('orderInventory.domain_id = :domainId', { domainId: domain.id })
|
|
30
|
-
.andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
|
|
37
|
+
.andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
|
|
38
|
+
orderInventoryStatus: [ORDER_INVENTORY_STATUS.LOADING, ORDER_INVENTORY_STATUS.LOADED]
|
|
39
|
+
})
|
|
31
40
|
.andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })
|
|
32
41
|
.andWhere('releaseGood.status = :status', { status: ORDER_STATUS.LOADING })
|
|
33
42
|
|
|
@@ -41,6 +50,10 @@ export const loadingWorksheetResolver = {
|
|
|
41
50
|
|
|
42
51
|
if (!releaseGood) throw new Error(`Release good doesn't exists.`)
|
|
43
52
|
|
|
53
|
+
let [orderTotes, orderTotesTotal]: OrderTote = await getRepository(OrderTote).findAndCount({
|
|
54
|
+
where: { releaseGood: releaseGood.id }
|
|
55
|
+
})
|
|
56
|
+
|
|
44
57
|
const foundWorksheet: Worksheet = await fetchExecutingWorksheet(
|
|
45
58
|
domain,
|
|
46
59
|
releaseGood.bizplace,
|
|
@@ -48,7 +61,7 @@ export const loadingWorksheetResolver = {
|
|
|
48
61
|
WORKSHEET_TYPE.LOADING,
|
|
49
62
|
releaseGood
|
|
50
63
|
)
|
|
51
|
-
|
|
64
|
+
let foundWSD: any[] = await getRepository(WorksheetDetail).find({
|
|
52
65
|
where: {
|
|
53
66
|
domain,
|
|
54
67
|
worksheet: foundWorksheet,
|
|
@@ -57,21 +70,50 @@ export const loadingWorksheetResolver = {
|
|
|
57
70
|
},
|
|
58
71
|
relations: [
|
|
59
72
|
'targetInventory',
|
|
73
|
+
'targetInventory.orderProduct',
|
|
60
74
|
'targetInventory.inventory',
|
|
61
75
|
'targetInventory.inventory.location',
|
|
62
76
|
'targetInventory.inventory.product'
|
|
63
77
|
]
|
|
64
78
|
})
|
|
65
79
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
if (orderTotesTotal > 0) {
|
|
81
|
+
let [toteItems, toteItemsTotal]: OrderToteItem = await getRepository(OrderToteItem).findAndCount({
|
|
82
|
+
where: { orderTote: In(orderTotes.map(itm => itm.id)) },
|
|
83
|
+
relations: ['orderTote', 'orderInventory']
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
let toteWsd = []
|
|
87
|
+
|
|
88
|
+
for (let i = 0; i < toteItemsTotal; i++) {
|
|
89
|
+
let wsdIndex = foundWSD.findIndex(
|
|
90
|
+
itm => !itm?.toteName && itm.targetInventory.id == toteItems[i].orderInventory.id
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
if (wsdIndex >= 0) {
|
|
94
|
+
let filterWSD: any = JSON.parse(JSON.stringify(foundWSD[wsdIndex]))
|
|
95
|
+
let uomValue =
|
|
96
|
+
Math.round((filterWSD.targetInventory.releaseUomValue / filterWSD.targetInventory.releaseQty) * 100) / 100
|
|
97
|
+
|
|
98
|
+
foundWSD[wsdIndex].targetInventory.releaseQty -= toteItems[i].qty
|
|
99
|
+
foundWSD[wsdIndex].targetInventory.pickedQty -= toteItems[i].qty
|
|
100
|
+
foundWSD[wsdIndex].targetInventory.releaseUomValue = foundWSD[wsdIndex].targetInventory.releaseQty * uomValue
|
|
101
|
+
|
|
102
|
+
filterWSD.targetInventory.releaseQty = toteItems[i].qty
|
|
103
|
+
filterWSD.targetInventory.pickedQty = toteItems[i].qty
|
|
104
|
+
filterWSD.targetInventory.releaseUomValue = toteItems[i].qty * uomValue
|
|
105
|
+
filterWSD.toteName = toteItems[i].orderTote.name
|
|
106
|
+
toteWsd.push(filterWSD)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
foundWSD = foundWSD.concat(toteWsd)
|
|
111
|
+
foundWSD.sort((a, b) => (a.toteName > b.toteName ? 1 : -1))
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
let worksheetDetailInfos = foundWSD
|
|
115
|
+
.filter(itm => itm.targetInventory.releaseQty > 0)
|
|
116
|
+
.map((loadingWSD: any) => {
|
|
75
117
|
const targetInventory: OrderInventory = loadingWSD.targetInventory
|
|
76
118
|
const inventory: Inventory = targetInventory.inventory
|
|
77
119
|
return {
|
|
@@ -87,9 +129,20 @@ export const loadingWorksheetResolver = {
|
|
|
87
129
|
targetName: targetInventory.name,
|
|
88
130
|
packingType: inventory.packingType,
|
|
89
131
|
packingSize: inventory.packingSize,
|
|
90
|
-
inventory: targetInventory.inventory
|
|
132
|
+
inventory: targetInventory.inventory,
|
|
133
|
+
toteName: loadingWSD.toteName
|
|
91
134
|
}
|
|
92
135
|
})
|
|
136
|
+
|
|
137
|
+
return {
|
|
138
|
+
worksheetInfo: {
|
|
139
|
+
releaseGood,
|
|
140
|
+
bizplaceName: releaseGood.bizplace.name,
|
|
141
|
+
startedAt: foundWorksheet.startedAt,
|
|
142
|
+
refNo: releaseGood.refNo,
|
|
143
|
+
ownCollection: releaseGood.ownTransport
|
|
144
|
+
},
|
|
145
|
+
worksheetDetailInfos
|
|
93
146
|
}
|
|
94
147
|
}
|
|
95
148
|
}
|
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
12
12
|
import { Domain } from '@things-factory/shell'
|
|
13
13
|
import { Inventory, Location } from '@things-factory/warehouse-base'
|
|
14
|
-
import { ProductDetail } from '@things-factory/product-base'
|
|
15
14
|
|
|
16
15
|
import { WORKSHEET_TYPE } from '../../../constants'
|
|
17
16
|
import { SellercraftController } from '../../../controllers'
|
|
@@ -167,6 +166,7 @@ export const packingWorksheetResolver = {
|
|
|
167
166
|
shippingProvider: shippingProvider ? shippingProvider : '',
|
|
168
167
|
trackingNo: trackingNo ? trackingNo : '',
|
|
169
168
|
airwayBill: releaseGood?.airwayBill,
|
|
169
|
+
checkedRemarkBy: releaseGood?.checkedRemarkBy,
|
|
170
170
|
invoice: releaseGood?.invoice,
|
|
171
171
|
platform: marketplaceOrder ? marketplaceOrder.marketplaceStore.platform : 'operato',
|
|
172
172
|
marketplaceStoreId: marketplaceOrder ? marketplaceOrder.marketplaceStore.id : '',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { User } from '@things-factory/auth-base'
|
|
2
2
|
import { Domain } from '@things-factory/shell'
|
|
3
3
|
import { ArrivalNotice, OrderVas, Vas, ORDER_STATUS, ORDER_VAS_STATUS, ORDER_TYPES } from '@things-factory/sales-base'
|
|
4
|
-
import
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
5
5
|
import { Equal, Not, EntityManager } from 'typeorm'
|
|
6
6
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
|
|
7
7
|
import { Worksheet, WorksheetDetail } from '../../../entities'
|
|
@@ -74,7 +74,7 @@ export const palletizingPallets = {
|
|
|
74
74
|
}
|
|
75
75
|
} else {
|
|
76
76
|
orderVass = {
|
|
77
|
-
name:
|
|
77
|
+
name: uuidv4(),
|
|
78
78
|
set: patch.set,
|
|
79
79
|
vas: palletizingVAS,
|
|
80
80
|
qty: patch.qty,
|
|
@@ -42,7 +42,7 @@ export async function completeBatchPicking(
|
|
|
42
42
|
const worksheet = await pickingWSCtrl.completeBatchPicking(taskNo)
|
|
43
43
|
|
|
44
44
|
const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
|
|
45
|
-
const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)
|
|
45
|
+
const targetInventories: OrderInventory[] = worksheetDetails.filter(wsd=>wsd.status != 'MISSING').map((wsd: WorksheetDetail) => wsd.targetInventory)
|
|
46
46
|
|
|
47
47
|
const sellercraft: Sellercraft = await tx
|
|
48
48
|
.getRepository(Sellercraft)
|
|
@@ -248,18 +248,20 @@ export async function completePicking(
|
|
|
248
248
|
})
|
|
249
249
|
|
|
250
250
|
if (!existLoadingWorksheet && !releaseGood.courierOption && !releaseGood.packingOption) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
251
|
+
if(pickedTargetInventories.length>0){
|
|
252
|
+
const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
|
|
253
|
+
let loadingWorksheet: Worksheet = await loadingWSCtrl.generateLoadingWorksheet(
|
|
254
|
+
releaseGoodNo,
|
|
255
|
+
pickedTargetInventories
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
if (!loadingWorksheet.worksheetDetails?.length) {
|
|
259
|
+
loadingWorksheet = await pickingWSCtrl.findWorksheetById(loadingWorksheet.id)
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
const loadingWorksheetDetails: WorksheetDetail[] = loadingWorksheet.worksheetDetails
|
|
263
|
+
await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails)
|
|
259
264
|
}
|
|
260
|
-
|
|
261
|
-
const loadingWorksheetDetails: WorksheetDetail[] = loadingWorksheet.worksheetDetails
|
|
262
|
-
await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails)
|
|
263
265
|
} else {
|
|
264
266
|
const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
|
|
265
267
|
let loadingWorksheet: Worksheet = await loadingWSCtrl.updateLoadingWorksheet(
|
|
@@ -11,6 +11,7 @@ import { scanProductPickingResolver } from './scan-product-picking'
|
|
|
11
11
|
import { scanProductBatchPickingResolver } from './scan-product-batch-picking'
|
|
12
12
|
import { undoPickingAssigmentResolver } from './undo-picking-assignment'
|
|
13
13
|
import { undoSerialNumberPickingResolver } from './undo-serial-number-picking'
|
|
14
|
+
import { sealToteResolver } from './seal-tote'
|
|
14
15
|
|
|
15
16
|
export const Mutations = {
|
|
16
17
|
...assignPickingInventoriesResolver,
|
|
@@ -25,5 +26,6 @@ export const Mutations = {
|
|
|
25
26
|
...completeBatchPickingResolver,
|
|
26
27
|
...assignPickingWorkerResolver,
|
|
27
28
|
...fetchAndAssignPickingTaskResolver,
|
|
28
|
-
...undoSerialNumberPickingResolver
|
|
29
|
+
...undoSerialNumberPickingResolver,
|
|
30
|
+
...sealToteResolver
|
|
29
31
|
}
|
|
@@ -4,9 +4,25 @@ import { EntityManager } from 'typeorm'
|
|
|
4
4
|
import { PickingWorksheetController } from '../../../../controllers'
|
|
5
5
|
|
|
6
6
|
export const pickingResolver = {
|
|
7
|
-
async picking(
|
|
7
|
+
async picking(
|
|
8
|
+
_: any,
|
|
9
|
+
{ worksheetDetailName, worksheetType, palletId, locationName, releaseQty, binLocation, serialNumber, toteNo },
|
|
10
|
+
context: any
|
|
11
|
+
) {
|
|
8
12
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
9
|
-
await picking(
|
|
13
|
+
await picking(
|
|
14
|
+
tx,
|
|
15
|
+
domain,
|
|
16
|
+
user,
|
|
17
|
+
worksheetDetailName,
|
|
18
|
+
worksheetType,
|
|
19
|
+
palletId,
|
|
20
|
+
locationName,
|
|
21
|
+
releaseQty,
|
|
22
|
+
binLocation,
|
|
23
|
+
serialNumber,
|
|
24
|
+
toteNo
|
|
25
|
+
)
|
|
10
26
|
}
|
|
11
27
|
}
|
|
12
28
|
|
|
@@ -20,8 +36,18 @@ export async function picking(
|
|
|
20
36
|
locationName: string,
|
|
21
37
|
releaseQty: number,
|
|
22
38
|
binLocation?: string,
|
|
23
|
-
serialNumber?: string
|
|
39
|
+
serialNumber?: string,
|
|
40
|
+
toteNo?: string
|
|
24
41
|
) {
|
|
25
42
|
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
26
|
-
await worksheetController.picking(
|
|
43
|
+
await worksheetController.picking(
|
|
44
|
+
worksheetDetailName,
|
|
45
|
+
worksheetType,
|
|
46
|
+
palletId,
|
|
47
|
+
locationName,
|
|
48
|
+
releaseQty,
|
|
49
|
+
binLocation,
|
|
50
|
+
serialNumber,
|
|
51
|
+
toteNo
|
|
52
|
+
)
|
|
27
53
|
}
|
|
@@ -6,7 +6,7 @@ import { PickingWorksheetController } from '../../../../controllers'
|
|
|
6
6
|
export const scanProductPickingResolver = {
|
|
7
7
|
async scanProductPicking(
|
|
8
8
|
_: any,
|
|
9
|
-
{ worksheetDetailName, worksheetType, productBarcode, cartonId, binLocation, serialNumber },
|
|
9
|
+
{ worksheetDetailName, worksheetType, productBarcode, cartonId, binLocation, serialNumber, toteNo },
|
|
10
10
|
context: any
|
|
11
11
|
) {
|
|
12
12
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
@@ -19,7 +19,8 @@ export const scanProductPickingResolver = {
|
|
|
19
19
|
productBarcode,
|
|
20
20
|
cartonId,
|
|
21
21
|
binLocation,
|
|
22
|
-
serialNumber
|
|
22
|
+
serialNumber,
|
|
23
|
+
toteNo
|
|
23
24
|
)
|
|
24
25
|
}
|
|
25
26
|
}
|
|
@@ -33,7 +34,8 @@ export async function scanProductPicking(
|
|
|
33
34
|
productBarcode: string,
|
|
34
35
|
cartonId: string,
|
|
35
36
|
binLocation?: string,
|
|
36
|
-
serialNumber?: string
|
|
37
|
+
serialNumber?: string,
|
|
38
|
+
toteNo?: string
|
|
37
39
|
) {
|
|
38
40
|
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
39
41
|
await worksheetController.scanProductPicking(
|
|
@@ -42,6 +44,7 @@ export async function scanProductPicking(
|
|
|
42
44
|
productBarcode,
|
|
43
45
|
cartonId,
|
|
44
46
|
binLocation,
|
|
45
|
-
serialNumber
|
|
47
|
+
serialNumber,
|
|
48
|
+
toteNo
|
|
46
49
|
)
|
|
47
50
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { Domain } from '@things-factory/shell'
|
|
5
|
+
|
|
6
|
+
import { PickingWorksheetController } from '../../../../controllers'
|
|
7
|
+
|
|
8
|
+
export const sealToteResolver = {
|
|
9
|
+
async sealTote(_: any, { sealNo, toteNo, orderNo }, context: any) {
|
|
10
|
+
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
11
|
+
await sealTote(tx, domain, user, sealNo, toteNo, orderNo)
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async function sealTote(
|
|
16
|
+
tx: EntityManager,
|
|
17
|
+
domain: Domain,
|
|
18
|
+
user: User,
|
|
19
|
+
sealNo: string,
|
|
20
|
+
toteNo: string,
|
|
21
|
+
orderNo: string
|
|
22
|
+
): Promise<void> {
|
|
23
|
+
const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
|
|
24
|
+
await worksheetController.sealTote(sealNo, toteNo, orderNo)
|
|
25
|
+
}
|
|
@@ -2,7 +2,7 @@ import { EntityManager, In, SelectQueryBuilder } from 'typeorm'
|
|
|
2
2
|
|
|
3
3
|
import { ORDER_INVENTORY_STATUS, OrderInventory, ReleaseGood, ShippingOrder } from '@things-factory/sales-base'
|
|
4
4
|
import { Domain } from '@things-factory/shell'
|
|
5
|
-
import { Inventory, Location } from '@things-factory/warehouse-base'
|
|
5
|
+
import { Inventory, Location, InventoryChange } from '@things-factory/warehouse-base'
|
|
6
6
|
|
|
7
7
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
|
|
8
8
|
import { WorksheetDetail } from '../../../entities'
|
|
@@ -109,6 +109,16 @@ export async function pickingWorksheet(
|
|
|
109
109
|
worksheetDetailInfos: worksheetDetails.map(async (pickingWSD: WorksheetDetail) => {
|
|
110
110
|
const targetInventory: OrderInventory = pickingWSD.targetInventory
|
|
111
111
|
const inventory: Inventory = targetInventory.inventory
|
|
112
|
+
|
|
113
|
+
const inventoryChangesCount: number = await tx.getRepository(InventoryChange).count({
|
|
114
|
+
where: {
|
|
115
|
+
inventory: inventory.id,
|
|
116
|
+
status:"PENDING",
|
|
117
|
+
transactionType:"MISSING"
|
|
118
|
+
},
|
|
119
|
+
relations:['inventory','product']
|
|
120
|
+
})
|
|
121
|
+
|
|
112
122
|
return {
|
|
113
123
|
name: pickingWSD.name,
|
|
114
124
|
palletId: inventory?.palletId,
|
|
@@ -127,7 +137,8 @@ export async function pickingWorksheet(
|
|
|
127
137
|
packingSize: inventory?.packingSize,
|
|
128
138
|
expirationDate: inventory?.expirationDate,
|
|
129
139
|
location: inventory?.location,
|
|
130
|
-
relatedOrderInv: targetInventory
|
|
140
|
+
relatedOrderInv: targetInventory,
|
|
141
|
+
hasMissingInventoryChanges:inventoryChangesCount > 0 ? true:false
|
|
131
142
|
}
|
|
132
143
|
})
|
|
133
144
|
}
|
|
@@ -1,13 +1,56 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
5
|
+
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
6
|
+
import { ArrivalNotice } from '@things-factory/sales-base'
|
|
2
7
|
import { Domain } from '@things-factory/shell'
|
|
3
|
-
|
|
8
|
+
|
|
4
9
|
import { PutawayWorksheetController } from '../../../../controllers'
|
|
10
|
+
import { EcommerceController, SellercraftController } from '../../../../controllers/ecommerce'
|
|
5
11
|
import { Worksheet } from '../../../../entities'
|
|
6
12
|
|
|
7
13
|
export const completePutawayResolver = {
|
|
8
14
|
async completePutaway(_: any, { arrivalNoticeNo }, context: any) {
|
|
9
15
|
const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state
|
|
10
16
|
await completePutaway(tx, domain, user, arrivalNoticeNo)
|
|
17
|
+
|
|
18
|
+
const arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({
|
|
19
|
+
where: { domain, name: arrivalNoticeNo },
|
|
20
|
+
relations: [
|
|
21
|
+
'purchaseOrder',
|
|
22
|
+
'bizplace',
|
|
23
|
+
'bizplace.domain',
|
|
24
|
+
'bizplace.company',
|
|
25
|
+
'bizplace.company.domain',
|
|
26
|
+
'orderProducts',
|
|
27
|
+
'orderProducts.product',
|
|
28
|
+
'orderProducts.product.productDetails',
|
|
29
|
+
'orderProducts.product.productDetails.childProductDetail'
|
|
30
|
+
]
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
// search for any active marketplace connection
|
|
34
|
+
const companyDomain: Domain = arrivalNotice.bizplace.company.domain
|
|
35
|
+
const customerDomain: Domain = arrivalNotice.bizplace.domain
|
|
36
|
+
const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
|
|
37
|
+
where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
|
|
38
|
+
relations: ['marketplaceDistributors']
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
const sellercraft: Sellercraft = await tx
|
|
42
|
+
.getRepository(Sellercraft)
|
|
43
|
+
.findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
|
|
44
|
+
|
|
45
|
+
if (sellercraft) {
|
|
46
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
47
|
+
await sellercraftCtrl.registerProductInbound(sellercraft, arrivalNotice)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (marketplaceStores?.length && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
|
|
51
|
+
const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
52
|
+
await ecommerceCtrl.updateProductVariationStock(marketplaceStores, arrivalNotice.orderProducts, companyDomain)
|
|
53
|
+
}
|
|
11
54
|
}
|
|
12
55
|
}
|
|
13
56
|
|
|
@@ -28,4 +71,4 @@ export async function completePutaway(
|
|
|
28
71
|
relations: ['bizplace', 'arrivalNotice']
|
|
29
72
|
})
|
|
30
73
|
}
|
|
31
|
-
}
|
|
74
|
+
}
|
|
@@ -19,16 +19,20 @@ export async function completeOrderSorting(
|
|
|
19
19
|
user: User,
|
|
20
20
|
releaseGoodNo: string
|
|
21
21
|
): Promise<void> {
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
try {
|
|
23
|
+
const sortingWSCtrl: SortingWorksheetController = new SortingWorksheetController(tx, domain, user)
|
|
24
|
+
const releaseGood = await sortingWSCtrl.completeOrderSorting(releaseGoodNo)
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
|
|
27
|
+
let loadingWorksheet: Worksheet = await loadingWSCtrl.generateLoadingWorksheet(
|
|
28
|
+
releaseGood.name,
|
|
29
|
+
releaseGood.orderInventories.filter(itm => itm.status != ORDER_INVENTORY_STATUS.COMPLETE_SPLIT)
|
|
30
|
+
)
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
if (loadingWorksheet.status === WORKSHEET_STATUS.DEACTIVATED) {
|
|
33
|
+
await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheet.worksheetDetails)
|
|
34
|
+
}
|
|
35
|
+
} catch (e) {
|
|
36
|
+
throw e
|
|
33
37
|
}
|
|
34
38
|
}
|