@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
|
@@ -4,9 +4,9 @@ import { EntityManager } from 'typeorm'
|
|
|
4
4
|
import { SortingWorksheetController } from '../../../../controllers'
|
|
5
5
|
|
|
6
6
|
export const scanProductSortingResolver = {
|
|
7
|
-
async scanProductSorting(_: any, { taskNo, releaseGoodNo, productBarcode, serialNumber }, context: any) {
|
|
7
|
+
async scanProductSorting(_: any, { taskNo, releaseGoodNo, productBarcode, serialNumber, toteNo }, context: any) {
|
|
8
8
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
9
|
-
await scanProductSorting(tx, domain, user, taskNo, releaseGoodNo, productBarcode, serialNumber)
|
|
9
|
+
await scanProductSorting(tx, domain, user, taskNo, releaseGoodNo, productBarcode, serialNumber, toteNo)
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -17,8 +17,9 @@ export async function scanProductSorting(
|
|
|
17
17
|
taskNo: string,
|
|
18
18
|
releaseGoodNo: string,
|
|
19
19
|
productBarcode?: string,
|
|
20
|
-
serialNumber?: string
|
|
20
|
+
serialNumber?: string,
|
|
21
|
+
toteNo?: string
|
|
21
22
|
) {
|
|
22
23
|
const worksheetController: SortingWorksheetController = new SortingWorksheetController(tx, domain, user)
|
|
23
|
-
await worksheetController.scanProductSorting(taskNo, releaseGoodNo, productBarcode, serialNumber)
|
|
24
|
+
await worksheetController.scanProductSorting(taskNo, releaseGoodNo, productBarcode, serialNumber, toteNo)
|
|
24
25
|
}
|
|
@@ -4,9 +4,9 @@ import { EntityManager } from 'typeorm'
|
|
|
4
4
|
import { SortingWorksheetController } from '../../../../controllers'
|
|
5
5
|
|
|
6
6
|
export const sortingProductResolver = {
|
|
7
|
-
async sortingProduct(_: any, { taskNo, releaseGoodNo, productId, sortingQty, serialNumber }, context: any) {
|
|
7
|
+
async sortingProduct(_: any, { taskNo, releaseGoodNo, productId, sortingQty, serialNumber, toteNo }, context: any) {
|
|
8
8
|
const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
|
|
9
|
-
await sortingProduct(tx, domain, user, taskNo, releaseGoodNo, productId, sortingQty, serialNumber)
|
|
9
|
+
await sortingProduct(tx, domain, user, taskNo, releaseGoodNo, productId, sortingQty, serialNumber, toteNo)
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -18,8 +18,9 @@ export async function sortingProduct(
|
|
|
18
18
|
releaseGoodNo: string,
|
|
19
19
|
productId: string,
|
|
20
20
|
sortingQty: number,
|
|
21
|
-
serialNumber?: string
|
|
21
|
+
serialNumber?: string,
|
|
22
|
+
toteNo?: string
|
|
22
23
|
) {
|
|
23
24
|
const worksheetController: SortingWorksheetController = new SortingWorksheetController(tx, domain, user)
|
|
24
|
-
await worksheetController.sortingProduct(taskNo, releaseGoodNo, productId, sortingQty, serialNumber)
|
|
25
|
+
await worksheetController.sortingProduct(taskNo, releaseGoodNo, productId, sortingQty, serialNumber, toteNo)
|
|
25
26
|
}
|
|
@@ -2,15 +2,12 @@ import { EntityManager, In } from 'typeorm'
|
|
|
2
2
|
|
|
3
3
|
import { User } from '@things-factory/auth-base'
|
|
4
4
|
import { Bizplace } from '@things-factory/biz-base'
|
|
5
|
-
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
6
|
-
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
7
5
|
import { ArrivalNotice, generateGoodsReceivalNote } from '@things-factory/sales-base'
|
|
8
6
|
import { Domain } from '@things-factory/shell'
|
|
9
7
|
import { Inventory, INVENTORY_STATUS } from '@things-factory/warehouse-base'
|
|
10
8
|
|
|
11
9
|
import { WORKSHEET_STATUS } from '../../../../constants'
|
|
12
10
|
import { PutawayWorksheetController, UnloadingWorksheetController } from '../../../../controllers'
|
|
13
|
-
import { EcommerceController, SellercraftController } from '../../../../controllers/ecommerce'
|
|
14
11
|
import { Worksheet, WorksheetDetail } from '../../../../entities'
|
|
15
12
|
|
|
16
13
|
export const completeUnloadingResolver = {
|
|
@@ -40,28 +37,6 @@ export const completeUnloadingResolver = {
|
|
|
40
37
|
where: { domain, refOrderId: arrivalNotice.id, status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED]) }
|
|
41
38
|
})
|
|
42
39
|
|
|
43
|
-
// search for any active marketplace connection
|
|
44
|
-
const companyDomain: Domain = arrivalNotice.bizplace.company.domain
|
|
45
|
-
const customerDomain: Domain = arrivalNotice.bizplace.domain
|
|
46
|
-
const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
|
|
47
|
-
where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
|
|
48
|
-
relations: ['marketplaceDistributors']
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
const sellercraft: Sellercraft = await tx
|
|
52
|
-
.getRepository(Sellercraft)
|
|
53
|
-
.findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
|
|
54
|
-
|
|
55
|
-
if (sellercraft) {
|
|
56
|
-
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
57
|
-
await sellercraftCtrl.registerProductInbound(sellercraft, arrivalNotice)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (marketplaceStores?.length && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
|
|
61
|
-
const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
62
|
-
await ecommerceCtrl.updateProductVariationStock(marketplaceStores, arrivalNotice.orderProducts, companyDomain)
|
|
63
|
-
}
|
|
64
|
-
|
|
65
40
|
putawayWorksheet = await putawayWSCtrl.generatePutawayWorksheet(arrivalNotice.name, inventories)
|
|
66
41
|
|
|
67
42
|
if (putawayWorksheet.status === WORKSHEET_STATUS.DEACTIVATED) {
|
|
@@ -117,6 +117,7 @@ export const worksheetResolver = {
|
|
|
117
117
|
.leftJoinAndSelect('oi.releaseGood', 'releaseGood')
|
|
118
118
|
.leftJoinAndSelect('oi.inventory', 'inventory')
|
|
119
119
|
.leftJoinAndSelect('oi.product', 'product')
|
|
120
|
+
.leftJoinAndSelect('oi.orderProduct', 'orderProduct')
|
|
120
121
|
.leftJoinAndSelect('inventory.location', 'location')
|
|
121
122
|
.leftJoinAndSelect('oi.bizplace', 'bizplace')
|
|
122
123
|
.where('"oi"."domain_id" = :domain')
|
|
@@ -146,6 +147,7 @@ export const worksheetResolver = {
|
|
|
146
147
|
.leftJoinAndSelect('oi.releaseGood', 'releaseGood')
|
|
147
148
|
.leftJoinAndSelect('oi.inventory', 'inventory')
|
|
148
149
|
.leftJoinAndSelect('oi.product', 'product')
|
|
150
|
+
.leftJoinAndSelect('oi.orderProduct', 'orderProduct')
|
|
149
151
|
.leftJoinAndSelect('inventory.location', 'location')
|
|
150
152
|
.leftJoinAndSelect('oi.bizplace', 'bizplace')
|
|
151
153
|
.where('"oi"."domain_id" = :domain')
|
|
@@ -108,13 +108,16 @@ export const worksheetsResolver = {
|
|
|
108
108
|
const releaseGoodCrossDockingParam = params.filters.find(param => param.name === 'crossDocking')
|
|
109
109
|
const releaseGoodCourierOptionParam = params.filters.find(param => param.name === 'courierOption')
|
|
110
110
|
const releaseGoodPackingOptionParam = params.filters.find(param => param.name === 'packingOption')
|
|
111
|
+
const orderRemarkParam = params.filters.find(param => param.name === 'orderRemark')
|
|
112
|
+
|
|
111
113
|
const releaseGoodPickerOptionParam = params.filters.find(param => param.name === 'assignee')
|
|
112
114
|
if (
|
|
113
115
|
releaseGoodParam ||
|
|
114
116
|
releaseGoodRefNoParam ||
|
|
115
117
|
releaseGoodCrossDockingParam ||
|
|
116
118
|
releaseGoodCourierOptionParam ||
|
|
117
|
-
releaseGoodPackingOptionParam
|
|
119
|
+
releaseGoodPackingOptionParam ||
|
|
120
|
+
orderRemarkParam
|
|
118
121
|
) {
|
|
119
122
|
let arrFilters = []
|
|
120
123
|
if (releaseGoodParam) {
|
|
@@ -124,6 +127,7 @@ export const worksheetsResolver = {
|
|
|
124
127
|
)
|
|
125
128
|
arrFilters.push({ ...releaseGoodParam, name: 'name' })
|
|
126
129
|
}
|
|
130
|
+
|
|
127
131
|
if (releaseGoodRefNoParam) {
|
|
128
132
|
params.filters.splice(
|
|
129
133
|
params.filters.findIndex(item => item.name == 'releaseGoodRefNo'),
|
|
@@ -156,8 +160,21 @@ export const worksheetsResolver = {
|
|
|
156
160
|
arrFilters.push({ ...releaseGoodPackingOptionParam, name: 'packingOption' })
|
|
157
161
|
}
|
|
158
162
|
|
|
163
|
+
if (orderRemarkParam) {
|
|
164
|
+
params.filters.splice(
|
|
165
|
+
params.filters.findIndex(item => item.name == 'orderRemark'),
|
|
166
|
+
1
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
if (orderRemarkParam?.value == true) {
|
|
170
|
+
arrFilters.push({ operator: 'is_not_null', name: 'remark' })
|
|
171
|
+
} else if (orderRemarkParam?.value == false) {
|
|
172
|
+
arrFilters.push({ operator: 'is_null', name: 'remark' })
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
159
176
|
const foundReleaseGoods: ReleaseGood[] = await getRepository(ReleaseGood).find({
|
|
160
|
-
...convertListParams({ filters: arrFilters })
|
|
177
|
+
...convertListParams({ filters: arrFilters }, { searchables: ['arrivalNoticeNo', 'releaseGoodNo'] })
|
|
161
178
|
})
|
|
162
179
|
|
|
163
180
|
if (foundReleaseGoods && foundReleaseGoods.length) {
|
|
@@ -311,7 +328,7 @@ export const worksheetsResolver = {
|
|
|
311
328
|
params.filters = params.filters.filter(param => param.name !== 'name')
|
|
312
329
|
}
|
|
313
330
|
|
|
314
|
-
buildQuery(qb, params, context)
|
|
331
|
+
buildQuery(qb, params, context, { searchables: ['arrivalNoticeNo'] })
|
|
315
332
|
|
|
316
333
|
if (orderName !== '') {
|
|
317
334
|
qb.andWhere(
|
|
@@ -414,7 +431,14 @@ export const worksheetsResolver = {
|
|
|
414
431
|
|
|
415
432
|
qb.orderBy(sort)
|
|
416
433
|
|
|
417
|
-
|
|
434
|
+
let [items, total] = await qb.getManyAndCount()
|
|
435
|
+
|
|
436
|
+
items = items.map(item => {
|
|
437
|
+
return {
|
|
438
|
+
...item,
|
|
439
|
+
orderRemark: item?.releaseGood?.remark ? true : false
|
|
440
|
+
}
|
|
441
|
+
})
|
|
418
442
|
|
|
419
443
|
return { items, total }
|
|
420
444
|
} catch (error) {
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { EntityManager, getRepository } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { User } from '@things-factory/auth-base'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
ORDER_INVENTORY_STATUS,
|
|
6
|
+
ORDER_PRODUCT_STATUS,
|
|
7
|
+
ORDER_TYPES,
|
|
8
|
+
OrderInventory,
|
|
9
|
+
OrderNoGenerator,
|
|
10
|
+
OrderProduct
|
|
11
|
+
} from '@things-factory/sales-base'
|
|
5
12
|
import { Setting } from '@things-factory/setting-base'
|
|
6
13
|
import { Domain } from '@things-factory/shell'
|
|
7
14
|
import { Inventory } from '@things-factory/warehouse-base'
|
|
@@ -60,7 +67,7 @@ export const generateBatchPickingWorksheetDetailsByBulkResolver = {
|
|
|
60
67
|
packingSize: oi.packingSize,
|
|
61
68
|
status: ORDER_INVENTORY_STATUS.PENDING_SPLIT
|
|
62
69
|
},
|
|
63
|
-
relations: ['product', 'releaseGood', 'bizplace'],
|
|
70
|
+
relations: ['product', 'releaseGood', 'bizplace', 'orderProduct'],
|
|
64
71
|
order: {
|
|
65
72
|
releaseQty: 'DESC'
|
|
66
73
|
}
|
|
@@ -120,6 +127,14 @@ export const generateBatchPickingWorksheetDetailsByBulkResolver = {
|
|
|
120
127
|
.where('id = :id', { id: targetInventory.id })
|
|
121
128
|
await qbInv.execute()
|
|
122
129
|
|
|
130
|
+
// update order product status to ASSIGNED
|
|
131
|
+
await tx
|
|
132
|
+
.getRepository(OrderProduct)
|
|
133
|
+
.update(
|
|
134
|
+
{ id: orderInventory.orderProduct.id },
|
|
135
|
+
{ status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user }
|
|
136
|
+
)
|
|
137
|
+
|
|
123
138
|
// Create new order inventory with status -> READY_TO_PICK, type -> RELEASE_OF_GOODS
|
|
124
139
|
let newTargetInventory: OrderInventory = new OrderInventory()
|
|
125
140
|
newTargetInventory = {
|
|
@@ -137,7 +152,9 @@ export const generateBatchPickingWorksheetDetailsByBulkResolver = {
|
|
|
137
152
|
creator: user,
|
|
138
153
|
inventory: targetInventory,
|
|
139
154
|
releaseQty: allocatedQty,
|
|
140
|
-
releaseUomValue: allocatedUomValue
|
|
155
|
+
releaseUomValue: allocatedUomValue,
|
|
156
|
+
uom: orderInventory.uom,
|
|
157
|
+
orderProduct: orderInventory.orderProduct
|
|
141
158
|
}
|
|
142
159
|
newTargetInventory = await tx.getRepository(OrderInventory).save(newTargetInventory)
|
|
143
160
|
|
|
@@ -150,6 +167,7 @@ export const generateBatchPickingWorksheetDetailsByBulkResolver = {
|
|
|
150
167
|
bizplace: orderInventory.bizplace,
|
|
151
168
|
name: WorksheetNoGenerator.batchPickingDetail(),
|
|
152
169
|
targetInventory: newTargetInventory,
|
|
170
|
+
targetProduct: newTargetInventory.orderProduct,
|
|
153
171
|
type: WORKSHEET_TYPE.BATCH_PICKING,
|
|
154
172
|
status: WORKSHEET_STATUS.DEACTIVATED,
|
|
155
173
|
creator: user
|
package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
1
4
|
import { Product } from '@things-factory/product-base'
|
|
2
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
ORDER_INVENTORY_STATUS,
|
|
7
|
+
ORDER_PRODUCT_STATUS,
|
|
8
|
+
OrderInventory,
|
|
9
|
+
OrderNoGenerator,
|
|
10
|
+
OrderProduct
|
|
11
|
+
} from '@things-factory/sales-base'
|
|
12
|
+
import { Domain } from '@things-factory/shell'
|
|
3
13
|
import { Inventory } from '@things-factory/warehouse-base'
|
|
4
|
-
|
|
14
|
+
|
|
5
15
|
import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
|
|
6
16
|
import { Worksheet, WorksheetDetail } from '../../../entities'
|
|
7
17
|
import { WorksheetNoGenerator } from '../../../utils'
|
|
8
|
-
import { User } from '@things-factory/auth-base'
|
|
9
|
-
import { Domain } from '@things-factory/shell'
|
|
10
18
|
|
|
11
19
|
export const generateBatchPickingWorksheetDetailsResolver = {
|
|
12
20
|
async generateBatchPickingWorksheetDetails(
|
|
@@ -15,7 +23,7 @@ export const generateBatchPickingWorksheetDetailsResolver = {
|
|
|
15
23
|
context: any
|
|
16
24
|
): Promise<void> {
|
|
17
25
|
const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state
|
|
18
|
-
|
|
26
|
+
|
|
19
27
|
// 1. Find Related Worksheet
|
|
20
28
|
const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
|
|
21
29
|
where: { name: worksheetNo, domain },
|
|
@@ -28,14 +36,21 @@ export const generateBatchPickingWorksheetDetailsResolver = {
|
|
|
28
36
|
})
|
|
29
37
|
|
|
30
38
|
// Only proceed if worksheet status IS "DEACTIVATED"
|
|
31
|
-
if(worksheet.status != WORKSHEET_STATUS.DEACTIVATED){
|
|
39
|
+
if (worksheet.status != WORKSHEET_STATUS.DEACTIVATED) {
|
|
32
40
|
return
|
|
33
41
|
}
|
|
34
42
|
|
|
35
43
|
// 2. Find all existing order inventory that is related to the product
|
|
36
44
|
let prevOrdInvs: OrderInventory[] = await tx.getRepository(OrderInventory).find({
|
|
37
|
-
where: {
|
|
38
|
-
|
|
45
|
+
where: {
|
|
46
|
+
domain,
|
|
47
|
+
refWorksheetId: worksheet.id,
|
|
48
|
+
product: productId,
|
|
49
|
+
batchId,
|
|
50
|
+
packingType,
|
|
51
|
+
status: ORDER_INVENTORY_STATUS.PENDING_SPLIT
|
|
52
|
+
},
|
|
53
|
+
relations: ['releaseGood', 'bizplace', 'orderProduct']
|
|
39
54
|
})
|
|
40
55
|
|
|
41
56
|
// Sort all release qty from highest to lowest
|
|
@@ -80,6 +95,8 @@ export const generateBatchPickingWorksheetDetailsResolver = {
|
|
|
80
95
|
newTargetInventory.packingType = prevOrdInv.packingType
|
|
81
96
|
newTargetInventory.packingSize = parseFloat(prevOrdInv.packingSize)
|
|
82
97
|
newTargetInventory.creator = user
|
|
98
|
+
newTargetInventory.uom = selectedOrdInv.uom
|
|
99
|
+
newTargetInventory.orderProduct = prevOrdInv.orderProduct
|
|
83
100
|
|
|
84
101
|
let inventory: Inventory = await tx.getRepository(Inventory).findOne(selectedOrdInv.inventory.id)
|
|
85
102
|
|
|
@@ -100,7 +117,7 @@ export const generateBatchPickingWorksheetDetailsResolver = {
|
|
|
100
117
|
|
|
101
118
|
requiredQty = fulfiledQty <= 0 ? 0 : fulfiledQty
|
|
102
119
|
requiredUomValue = fulfiledUomValue <= 0 ? 0 : fulfiledUomValue
|
|
103
|
-
|
|
120
|
+
|
|
104
121
|
await tx.getRepository(Inventory).update(
|
|
105
122
|
{ domain, id: inventory.id },
|
|
106
123
|
{
|
|
@@ -115,6 +132,11 @@ export const generateBatchPickingWorksheetDetailsResolver = {
|
|
|
115
132
|
}
|
|
116
133
|
)
|
|
117
134
|
|
|
135
|
+
// update order product status to ASSIGNED
|
|
136
|
+
await tx
|
|
137
|
+
.getRepository(OrderProduct)
|
|
138
|
+
.update({ id: prevOrdInv.orderProduct.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user })
|
|
139
|
+
|
|
118
140
|
// Generate Worksheet Detail
|
|
119
141
|
let newWorksheetDetail: WorksheetDetail = new WorksheetDetail()
|
|
120
142
|
newWorksheetDetail = {
|
|
@@ -124,6 +146,7 @@ export const generateBatchPickingWorksheetDetailsResolver = {
|
|
|
124
146
|
bizplace: prevOrdInv.bizplace,
|
|
125
147
|
name: WorksheetNoGenerator.batchPickingDetail(),
|
|
126
148
|
targetInventory: newTargetInventory,
|
|
149
|
+
targetProduct: prevOrdInv.orderProduct,
|
|
127
150
|
type: WORKSHEET_TYPE.BATCH_PICKING,
|
|
128
151
|
status: WORKSHEET_STATUS.DEACTIVATED,
|
|
129
152
|
creator: user
|
|
@@ -134,11 +157,16 @@ export const generateBatchPickingWorksheetDetailsResolver = {
|
|
|
134
157
|
selectedOrdInv.releaseUomValue = remainingUomValue <= 0 ? 0 : remainingUomValue
|
|
135
158
|
|
|
136
159
|
// insufficient qty for current order inventory, use the next inventory qty
|
|
137
|
-
if (selectedOrdInv.releaseQty == 0){
|
|
160
|
+
if (selectedOrdInv.releaseQty == 0) {
|
|
138
161
|
j = j + 1
|
|
139
162
|
}
|
|
140
163
|
}
|
|
141
|
-
await tx
|
|
164
|
+
await tx
|
|
165
|
+
.getRepository(OrderInventory)
|
|
166
|
+
.update(
|
|
167
|
+
{ id: prevOrdInvs[i].id },
|
|
168
|
+
{ status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, updater: user, updatedAt: new Date() }
|
|
169
|
+
)
|
|
142
170
|
}
|
|
143
171
|
}
|
|
144
172
|
}
|
|
@@ -1,33 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { EntityManager, In } from 'typeorm'
|
|
2
|
+
|
|
3
3
|
import { generateId } from '@things-factory/id-rule-base'
|
|
4
|
-
import {
|
|
4
|
+
import { Domain } from '@things-factory/shell'
|
|
5
|
+
|
|
5
6
|
import { WorksheetDetail } from '../../../entities'
|
|
6
7
|
|
|
7
8
|
export const generatePalletIdResolver = {
|
|
8
9
|
async generatePalletId(_: any, { targets, type }, context: any) {
|
|
9
10
|
const { tx, domain }: { tx: EntityManager; domain: Domain } = context.state
|
|
10
|
-
// 1. get
|
|
11
|
-
const
|
|
12
|
-
const year = today.getFullYear()
|
|
13
|
-
const month = today.getMonth()
|
|
14
|
-
const day = today.getDate()
|
|
15
|
-
|
|
16
|
-
const yy = String(year).substr(String(year).length - 2)
|
|
17
|
-
const mm = String(month + 1).padStart(2, '0')
|
|
18
|
-
const dd = String(day).padStart(2, '0')
|
|
19
|
-
|
|
20
|
-
const date = yy + mm + dd
|
|
11
|
+
// 1. get date in yymmdd format
|
|
12
|
+
const date = new Date().toJSON().slice(0, 10).replace(/-/g, '').slice(2, 8)
|
|
21
13
|
let results = []
|
|
22
14
|
|
|
23
|
-
// 2. get worksheet
|
|
24
|
-
let ids = targets.map(target => target.id)
|
|
25
|
-
|
|
26
|
-
// - getRepository using In(array) to pass the value to defined variable
|
|
15
|
+
// 2. get worksheet details
|
|
27
16
|
const foundWorksheetDetails: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({
|
|
28
17
|
where: {
|
|
29
18
|
domain,
|
|
30
|
-
id: In(
|
|
19
|
+
id: In(targets.map(target => target.id))
|
|
31
20
|
},
|
|
32
21
|
relations: [
|
|
33
22
|
'domain',
|
|
@@ -35,6 +24,8 @@ export const generatePalletIdResolver = {
|
|
|
35
24
|
'worksheet',
|
|
36
25
|
'worker',
|
|
37
26
|
'targetProduct',
|
|
27
|
+
'targetProduct.arrivalNotice',
|
|
28
|
+
'targetProduct.arrivalNotice.purchaseOrder',
|
|
38
29
|
'targetProduct.product',
|
|
39
30
|
'targetInventory',
|
|
40
31
|
'targetInventory.product',
|
|
@@ -44,8 +35,7 @@ export const generatePalletIdResolver = {
|
|
|
44
35
|
})
|
|
45
36
|
|
|
46
37
|
// 3. from worksheet detail get product name, product type, batchid, packing type, bizplace
|
|
47
|
-
|
|
48
|
-
if (foundWorksheetDetails.length <= 0) throw new Error('Unable to find worksheet details')
|
|
38
|
+
if (!foundWorksheetDetails?.length) throw new Error('Unable to find worksheet details')
|
|
49
39
|
else {
|
|
50
40
|
for (let i = 0; i < foundWorksheetDetails.length; i++) {
|
|
51
41
|
let foundWSD = foundWorksheetDetails[i]
|
|
@@ -53,39 +43,46 @@ export const generatePalletIdResolver = {
|
|
|
53
43
|
if (foundWSD.id === targets[idx].id) {
|
|
54
44
|
// 4. generate pallet id based on print qty > call generateId resolver
|
|
55
45
|
for (let i = 0; i < targets[idx].printQty; i++) {
|
|
56
|
-
|
|
57
|
-
domain,
|
|
58
|
-
type,
|
|
59
|
-
seed: {
|
|
60
|
-
batchId: foundWSD?.targetProduct?.batchId
|
|
61
|
-
? foundWSD.targetProduct.batchId
|
|
62
|
-
: foundWSD?.targetInventory?.batchId
|
|
63
|
-
? foundWSD.targetInventory.batchId
|
|
64
|
-
: foundWSD.targetVas.targetBatchId,
|
|
65
|
-
date: date
|
|
66
|
-
}
|
|
67
|
-
})
|
|
68
|
-
|
|
46
|
+
let result: any = {}
|
|
69
47
|
// 5. map all data to be returned
|
|
70
|
-
if (foundWSD.targetProduct
|
|
71
|
-
|
|
48
|
+
if (foundWSD.targetProduct) {
|
|
49
|
+
result = {
|
|
72
50
|
...foundWSD.targetProduct,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
51
|
+
bizplace: foundWSD.bizplace,
|
|
52
|
+
orderProductRemark: foundWSD.targetProduct.remark,
|
|
53
|
+
purchaseOrderNo: foundWSD.targetProduct.arrivalNotice?.purchaseOrder?.name || '',
|
|
54
|
+
arrivalNoticeRefNo: foundWSD.targetProduct.arrivalNotice?.refNo || ''
|
|
55
|
+
}
|
|
56
|
+
} else if (foundWSD.targetInventory) {
|
|
57
|
+
result = {
|
|
78
58
|
...foundWSD.targetInventory,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
59
|
+
bizplace: foundWSD.bizplace,
|
|
60
|
+
orderProductRemark: '',
|
|
61
|
+
purchaseOrderNo: '',
|
|
62
|
+
arrivalNoticeRefNo: ''
|
|
63
|
+
}
|
|
64
|
+
} else if (foundWSD.targetVas) {
|
|
65
|
+
result = {
|
|
84
66
|
...foundWSD.targetVas,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
67
|
+
bizplace: foundWSD.bizplace,
|
|
68
|
+
batchId: foundWSD.targetVas.targetBatchId,
|
|
69
|
+
orderProductRemark: '',
|
|
70
|
+
purchaseOrderNo: '',
|
|
71
|
+
arrivalNoticeRefNo: ''
|
|
72
|
+
}
|
|
88
73
|
}
|
|
74
|
+
|
|
75
|
+
results.push({
|
|
76
|
+
...result,
|
|
77
|
+
palletId: await generateId({
|
|
78
|
+
domain,
|
|
79
|
+
type,
|
|
80
|
+
seed: {
|
|
81
|
+
batchId: result.batchId || '',
|
|
82
|
+
date
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
})
|
|
89
86
|
}
|
|
90
87
|
}
|
|
91
88
|
}
|
|
@@ -3,10 +3,12 @@ import { EntityManager } from 'typeorm'
|
|
|
3
3
|
import { User } from '@things-factory/auth-base'
|
|
4
4
|
import {
|
|
5
5
|
ORDER_INVENTORY_STATUS,
|
|
6
|
+
ORDER_PRODUCT_STATUS,
|
|
6
7
|
ORDER_TYPES,
|
|
7
8
|
OrderInventory,
|
|
8
9
|
OrderInventoryPatch,
|
|
9
10
|
OrderNoGenerator,
|
|
11
|
+
OrderProduct,
|
|
10
12
|
ReleaseGood
|
|
11
13
|
} from '@things-factory/sales-base'
|
|
12
14
|
import { Setting } from '@things-factory/setting-base'
|
|
@@ -116,6 +118,11 @@ export const generatePickingWorksheetDetailsResolver = {
|
|
|
116
118
|
.where('id = :id', { id: targetInventory.inventory.id })
|
|
117
119
|
.execute()
|
|
118
120
|
|
|
121
|
+
// update order product status to ASSIGNED
|
|
122
|
+
await tx
|
|
123
|
+
.getRepository(OrderProduct)
|
|
124
|
+
.update({ id: targetInventory.orderProduct.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user })
|
|
125
|
+
|
|
119
126
|
// 7. collect new worksheet details records
|
|
120
127
|
const worksheetDetail: WorksheetDetail = Object.assign(new WorksheetDetail(), {
|
|
121
128
|
domain,
|
|
@@ -124,6 +131,7 @@ export const generatePickingWorksheetDetailsResolver = {
|
|
|
124
131
|
name: WorksheetNoGenerator.pickingDetail(),
|
|
125
132
|
seq: 0,
|
|
126
133
|
targetInventory,
|
|
134
|
+
targetProduct: targetInventory.orderProduct,
|
|
127
135
|
type: WORKSHEET_TYPE.PICKING,
|
|
128
136
|
status: WORKSHEET_STATUS.DEACTIVATED,
|
|
129
137
|
creator: user,
|
|
@@ -198,7 +206,9 @@ function _composeWorksheetDetails(
|
|
|
198
206
|
creator: user,
|
|
199
207
|
updater: user,
|
|
200
208
|
status: ORDER_INVENTORY_STATUS.READY_TO_PICK,
|
|
201
|
-
type: ORDER_TYPES.RELEASE_OF_GOODS
|
|
209
|
+
type: ORDER_TYPES.RELEASE_OF_GOODS,
|
|
210
|
+
uom: record.uom,
|
|
211
|
+
orderProduct: { id: inv.orderProductId }
|
|
202
212
|
}
|
|
203
213
|
})
|
|
204
214
|
|
package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts
CHANGED
|
@@ -2,7 +2,13 @@ import { EntityManager } from 'typeorm'
|
|
|
2
2
|
|
|
3
3
|
import { User } from '@things-factory/auth-base'
|
|
4
4
|
import { Product } from '@things-factory/product-base'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
ORDER_INVENTORY_STATUS,
|
|
7
|
+
ORDER_PRODUCT_STATUS,
|
|
8
|
+
OrderInventory,
|
|
9
|
+
OrderNoGenerator,
|
|
10
|
+
OrderProduct
|
|
11
|
+
} from '@things-factory/sales-base'
|
|
6
12
|
import { Domain } from '@things-factory/shell'
|
|
7
13
|
import { Inventory } from '@things-factory/warehouse-base'
|
|
8
14
|
|
|
@@ -74,6 +80,10 @@ export async function generateReleaseGoodWorksheetDetails(
|
|
|
74
80
|
let targetInventory: OrderInventory = wsd.targetInventory
|
|
75
81
|
const inventory: Inventory = await tx.getRepository(Inventory).findOne(targetInventory.inventory.id)
|
|
76
82
|
|
|
83
|
+
let targetProduct: OrderProduct = await tx
|
|
84
|
+
.getRepository(OrderProduct)
|
|
85
|
+
.findOne({ where: { id: wsd.targetProduct.id } })
|
|
86
|
+
|
|
77
87
|
targetInventory = await tx.getRepository(OrderInventory).save({
|
|
78
88
|
...targetInventory,
|
|
79
89
|
domain,
|
|
@@ -87,6 +97,7 @@ export async function generateReleaseGoodWorksheetDetails(
|
|
|
87
97
|
product: await tx.getRepository(Product).findOne(productId),
|
|
88
98
|
packingType,
|
|
89
99
|
packingSize,
|
|
100
|
+
orderProduct: targetProduct,
|
|
90
101
|
creator: user,
|
|
91
102
|
updater: user
|
|
92
103
|
})
|
|
@@ -105,6 +116,11 @@ export async function generateReleaseGoodWorksheetDetails(
|
|
|
105
116
|
updater: user
|
|
106
117
|
})
|
|
107
118
|
|
|
119
|
+
// update order product status to ASSIGNED
|
|
120
|
+
await tx
|
|
121
|
+
.getRepository(OrderProduct)
|
|
122
|
+
.update({ id: targetProduct.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user })
|
|
123
|
+
|
|
108
124
|
// 3. Create worksheet details
|
|
109
125
|
await tx.getRepository(WorksheetDetail).save({
|
|
110
126
|
...wsd,
|
|
@@ -112,6 +128,7 @@ export async function generateReleaseGoodWorksheetDetails(
|
|
|
112
128
|
bizplace: worksheet.bizplace,
|
|
113
129
|
worksheet,
|
|
114
130
|
name: WorksheetNoGenerator.pickingDetail(),
|
|
131
|
+
targetProduct,
|
|
115
132
|
targetInventory,
|
|
116
133
|
type: WORKSHEET_TYPE.PICKING,
|
|
117
134
|
status: WORKSHEET_STATUS.DEACTIVATED,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { EntityManager } from 'typeorm'
|
|
2
2
|
import { WorksheetMovement } from '../../../entities'
|
|
3
|
-
import
|
|
3
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
4
4
|
|
|
5
5
|
export const createWorksheetMovement = {
|
|
6
6
|
async createWorksheetMovement(_, { worksheetMovement: attrs }, context: any) {
|
|
7
7
|
const { tx }: { tx: EntityManager } = context.state
|
|
8
8
|
const repository = tx.getRepository(WorksheetMovement)
|
|
9
9
|
const newWorksheetMovement = {
|
|
10
|
-
id:
|
|
10
|
+
id: uuidv4(),
|
|
11
11
|
...attrs
|
|
12
12
|
}
|
|
13
13
|
|
|
@@ -179,6 +179,12 @@ export const Mutation = /* GraphQL */ `
|
|
|
179
179
|
inventoryItemId: String!
|
|
180
180
|
): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
|
|
181
181
|
|
|
182
|
+
sealTote (
|
|
183
|
+
sealNo: String!
|
|
184
|
+
toteNo: String!
|
|
185
|
+
orderNo: String!
|
|
186
|
+
): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
|
|
187
|
+
|
|
182
188
|
unload (
|
|
183
189
|
worksheetDetailName: String!
|
|
184
190
|
inventory: InventoryPatch!
|
|
@@ -313,6 +319,7 @@ export const Mutation = /* GraphQL */ `
|
|
|
313
319
|
releaseQty: Float!
|
|
314
320
|
binLocation: String
|
|
315
321
|
serialNumber: String
|
|
322
|
+
toteNo: String
|
|
316
323
|
): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
|
|
317
324
|
|
|
318
325
|
scanProductPicking (
|
|
@@ -322,6 +329,7 @@ export const Mutation = /* GraphQL */ `
|
|
|
322
329
|
cartonId: String!
|
|
323
330
|
binLocation: String
|
|
324
331
|
serialNumber: String
|
|
332
|
+
toteNo: String
|
|
325
333
|
): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
|
|
326
334
|
|
|
327
335
|
sortingProduct (
|
|
@@ -330,6 +338,7 @@ export const Mutation = /* GraphQL */ `
|
|
|
330
338
|
productId: String!
|
|
331
339
|
sortingQty: Float!
|
|
332
340
|
serialNumber: String
|
|
341
|
+
toteNo: String
|
|
333
342
|
): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
|
|
334
343
|
|
|
335
344
|
scanProductSorting (
|
|
@@ -337,6 +346,7 @@ export const Mutation = /* GraphQL */ `
|
|
|
337
346
|
releaseGoodNo: String!
|
|
338
347
|
productBarcode: String!
|
|
339
348
|
serialNumber: String
|
|
349
|
+
toteNo: String
|
|
340
350
|
): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
|
|
341
351
|
|
|
342
352
|
packing (
|
|
@@ -551,6 +561,10 @@ export const Mutation = /* GraphQL */ `
|
|
|
551
561
|
refOrderNo: String!
|
|
552
562
|
patches: [OrderVasPatch]
|
|
553
563
|
): Boolean @privilege(category: "worksheet_execute", privilege: "mutation") @transaction
|
|
564
|
+
|
|
565
|
+
cancelDraftReleaseOrder (
|
|
566
|
+
name: String!
|
|
567
|
+
): Boolean @transaction
|
|
554
568
|
`
|
|
555
569
|
|
|
556
570
|
export const Query = /* GraphQL */ `
|