@things-factory/worksheet-base 4.3.46 → 4.3.50

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.
Files changed (22) hide show
  1. package/dist-server/controllers/ecommerce/sellercraft-controller.js +223 -191
  2. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  3. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +19 -14
  4. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  5. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js +30 -23
  6. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js.map +1 -1
  7. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +8 -8
  8. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
  9. package/dist-server/graphql/resolvers/worksheet/worksheet.js +6 -1
  10. package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
  11. package/dist-server/graphql/resolvers/worksheet/worksheets.js +36 -11
  12. package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
  13. package/dist-server/graphql/types/worksheet/index.js +1 -1
  14. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  15. package/package.json +17 -17
  16. package/server/controllers/ecommerce/sellercraft-controller.ts +274 -223
  17. package/server/controllers/inbound/unloading-worksheet-controller.ts +31 -27
  18. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts +35 -27
  19. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +8 -8
  20. package/server/graphql/resolvers/worksheet/worksheet.ts +6 -1
  21. package/server/graphql/resolvers/worksheet/worksheets.ts +56 -15
  22. package/server/graphql/types/worksheet/index.ts +2 -3
@@ -47,33 +47,37 @@ export type UnloadingWorksheetDetail = Partial<WorksheetDetail> & {
47
47
 
48
48
  export class UnloadingWorksheetController extends VasWorksheetController {
49
49
  async generateUnloadingWorksheet(arrivalNoticeNo: string, bufferLocationId: string): Promise<Worksheet> {
50
- let arrivalNotice: ArrivalNotice = await this.findRefOrder(
51
- ArrivalNotice,
52
- {
53
- domain: this.domain,
54
- name: arrivalNoticeNo,
55
- status: ORDER_STATUS.ARRIVED
56
- },
57
- ['bizplace', 'orderProducts', 'orderVass']
58
- )
59
- const orderProducts: OrderProduct[] = arrivalNotice.orderProducts
60
- const orderVASs: OrderVas[] = arrivalNotice.orderVass
61
- const bufferLocation: Location = await this.trxMgr.getRepository(Location).findOne(bufferLocationId)
62
-
63
- const worksheet: Worksheet = await this.generateWorksheet(
64
- WORKSHEET_TYPE.UNLOADING,
65
- arrivalNotice,
66
- orderProducts,
67
- ORDER_STATUS.READY_TO_UNLOAD,
68
- ORDER_PRODUCT_STATUS.READY_TO_UNLOAD,
69
- { bufferLocation }
70
- )
50
+ try {
51
+ let arrivalNotice: ArrivalNotice = await this.findRefOrder(
52
+ ArrivalNotice,
53
+ {
54
+ domain: this.domain,
55
+ name: arrivalNoticeNo,
56
+ status: ORDER_STATUS.ARRIVED
57
+ },
58
+ ['bizplace', 'orderProducts', 'orderVass']
59
+ )
60
+ const orderProducts: OrderProduct[] = arrivalNotice.orderProducts
61
+ const orderVASs: OrderVas[] = arrivalNotice.orderVass
62
+ const bufferLocation: Location = await this.trxMgr.getRepository(Location).findOne(bufferLocationId)
71
63
 
72
- if (orderVASs?.length > 0) {
73
- await this.generateVasWorksheet(arrivalNotice)
74
- }
64
+ const worksheet: Worksheet = await this.generateWorksheet(
65
+ WORKSHEET_TYPE.UNLOADING,
66
+ arrivalNotice,
67
+ orderProducts,
68
+ ORDER_STATUS.READY_TO_UNLOAD,
69
+ ORDER_PRODUCT_STATUS.READY_TO_UNLOAD,
70
+ { bufferLocation }
71
+ )
75
72
 
76
- return worksheet
73
+ if (orderVASs?.length > 0) {
74
+ await this.generateVasWorksheet(arrivalNotice)
75
+ }
76
+
77
+ return worksheet
78
+ } catch (e) {
79
+ throw new Error(e)
80
+ }
77
81
  }
78
82
 
79
83
  async unload(worksheetDetailName: string, inventory: Partial<Inventory>, productBarcode: string): Promise<void> {
@@ -396,7 +400,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
396
400
  foundInventory = await this.trxMgr.getRepository(Inventory).save(newInventory)
397
401
  } else {
398
402
  const updatedQty: number = foundInventory.qty + qty
399
- foundInventory.expirationDate = new Date(foundInventory.expirationDate)
403
+ foundInventory.expirationDate = foundInventory.expirationDate ? new Date(foundInventory.expirationDate) : null
400
404
  foundInventory.qty = updatedQty
401
405
  foundInventory.uomValue +=
402
406
  Math.round(
@@ -613,7 +617,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
613
617
  await this.trxMgr.getRepository(Inventory).save(newInventory)
614
618
  } else {
615
619
  const updatedQty: number = foundInventory.qty + qty
616
- foundInventory.expirationDate = new Date(foundInventory.expirationDate)
620
+ foundInventory.expirationDate = foundInventory.expirationDate ? new Date(foundInventory.expirationDate) : null
617
621
  foundInventory.qty = updatedQty
618
622
  foundInventory.uomValue +=
619
623
  Math.round(
@@ -6,35 +6,43 @@ import { PickingWorksheetController, UnloadingWorksheetController } from '../../
6
6
  import { Worksheet } from '../../../../entities'
7
7
 
8
8
  export const generateArrivalNoticeWorksheetResolver = {
9
- async generateArrivalNoticeWorksheet(_: any, { arrivalNoticeNo, bufferLocation }, context: any) {
9
+ async generateArrivalNoticeWorksheet(_: any, { arrivalNoticeNos, bufferLocation }, context: any) {
10
10
  const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
11
- let unloadingWorksheet = await generateUnloadingWorksheet(tx, domain, user, arrivalNoticeNo, bufferLocation)
12
-
13
- if (!unloadingWorksheet.arrivalNotice?.id) {
14
- unloadingWorksheet = await tx.getRepository(Worksheet).findOne({
15
- where: unloadingWorksheet,
16
- relations: ['arrivalNotice']
11
+ await Promise.all(
12
+ arrivalNoticeNos.map(async arrivalNoticeNo => {
13
+ try {
14
+ let unloadingWorksheet = await generateUnloadingWorksheet(tx, domain, user, arrivalNoticeNo, bufferLocation)
15
+
16
+ if (!unloadingWorksheet.arrivalNotice?.id) {
17
+ unloadingWorksheet = await tx.getRepository(Worksheet).findOne({
18
+ where: unloadingWorksheet,
19
+ relations: ['arrivalNotice']
20
+ })
21
+ }
22
+
23
+ let arrivalNotice: ArrivalNotice = unloadingWorksheet.arrivalNotice
24
+ const crossDocking: boolean = unloadingWorksheet.arrivalNotice.crossDocking
25
+
26
+ if (crossDocking) {
27
+ arrivalNotice = await tx
28
+ .getRepository(ArrivalNotice)
29
+ .findOne({ where: { domain: domain, name: arrivalNoticeNo }, relations: ['releaseGood'] })
30
+
31
+ const releaseGoodNo: string = arrivalNotice.releaseGood.name
32
+ const pickingWSCtrl: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
33
+ await pickingWSCtrl.generatePickingWorksheet(releaseGoodNo)
34
+ }
35
+
36
+ const vasWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
37
+ where: { domain: domain, arrivalNotice }
38
+ })
39
+
40
+ return { unloadingWorksheet, vasWorksheet }
41
+ } catch (e) {
42
+ throw new Error(e)
43
+ }
17
44
  })
18
- }
19
-
20
- let arrivalNotice: ArrivalNotice = unloadingWorksheet.arrivalNotice
21
- const crossDocking: boolean = unloadingWorksheet.arrivalNotice.crossDocking
22
-
23
- if (crossDocking) {
24
- arrivalNotice = await tx
25
- .getRepository(ArrivalNotice)
26
- .findOne({ where: { domain: domain, name: arrivalNoticeNo }, relations: ['releaseGood'] })
27
-
28
- const releaseGoodNo: string = arrivalNotice.releaseGood.name
29
- const pickingWSCtrl: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
30
- await pickingWSCtrl.generatePickingWorksheet(releaseGoodNo)
31
- }
32
-
33
- const vasWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
34
- where: { domain: domain, arrivalNotice }
35
- })
36
-
37
- return { unloadingWorksheet, vasWorksheet }
45
+ )
38
46
  }
39
47
  }
40
48
 
@@ -74,14 +74,14 @@ export async function completeLoading(
74
74
  where: { domain, outboundOrderId: releaseGood.id }
75
75
  })
76
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
- }
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
85
 
86
86
  if (responseFileTypes.enableSerialNumber) {
87
87
  let snResult: Sftp = await SftpAPI.createSerialNumber(customerAvailableSftp, {
@@ -36,6 +36,7 @@ export const worksheetResolver = {
36
36
  'releaseGood',
37
37
  'releaseGood.arrivalNotice',
38
38
  'releaseGood.shippingOrder',
39
+ 'releaseGood.manifest',
39
40
  'returnOrder',
40
41
  'inventoryCheck',
41
42
  'vasOrder',
@@ -121,7 +122,11 @@ export const worksheetResolver = {
121
122
  let inventory: Inventory = wsd.targetInventory.inventory
122
123
 
123
124
  let foundUnloadedHistory: InventoryHistory = await getRepository(InventoryHistory).findOne({
124
- where: { inventory, refOrderId: worksheet.arrivalNotice.id, status: INVENTORY_STATUS.UNLOADED },
125
+ where: [
126
+ { inventory, refOrderId: worksheet.arrivalNotice.id, status: INVENTORY_STATUS.UNLOADED },
127
+ { inventory, refOrderId: worksheet.arrivalNotice.id, status: INVENTORY_STATUS.PARTIALLY_UNLOADED },
128
+ { inventory, refOrderId: worksheet.arrivalNotice.id, status: INVENTORY_STATUS.CHECKED }
129
+ ],
125
130
  relations: ['location', 'product']
126
131
  })
127
132
 
@@ -94,12 +94,20 @@ export const worksheetsResolver = {
94
94
  }
95
95
 
96
96
  ////For outbound worksheet filter
97
+ let outboundOrderInfoFilter
98
+ const outboundOrderInfoParamIdx = params.filters.findIndex(param => param.name === 'outboundOrderInfo')
99
+ if (outboundOrderInfoParamIdx >= 0) {
100
+ outboundOrderInfoFilter = params.filters[outboundOrderInfoParamIdx].value.toLowerCase().split(',').join('|')
101
+
102
+ params.filters.splice(outboundOrderInfoParamIdx, 1)
103
+ }
97
104
  const releaseGoodParam = params.filters.find(param => param.name === 'releaseGoodNo')
98
105
  const releaseGoodRefNoParam = params.filters.find(param => param.name === 'releaseGoodRefNo')
99
106
  const releaseGoodCrossDockingParam = params.filters.find(param => param.name === 'crossDocking')
100
107
  const releaseGoodCourierOptionParam = params.filters.find(param => param.name === 'courierOption')
101
108
  const releaseGoodPackingOptionParam = params.filters.find(param => param.name === 'packingOption')
102
109
  const orderRemarkParam = params.filters.find(param => param.name === 'orderRemark')
110
+ const manifestParam = params.filters.find(param => param.name === 'manifest')
103
111
 
104
112
  const releaseGoodPickerOptionParam = params.filters.find(param => param.name === 'assignee')
105
113
  if (
@@ -107,8 +115,7 @@ export const worksheetsResolver = {
107
115
  releaseGoodRefNoParam ||
108
116
  releaseGoodCrossDockingParam ||
109
117
  releaseGoodCourierOptionParam ||
110
- releaseGoodPackingOptionParam ||
111
- orderRemarkParam
118
+ releaseGoodPackingOptionParam
112
119
  ) {
113
120
  let arrFilters = []
114
121
  if (releaseGoodParam) {
@@ -151,19 +158,6 @@ export const worksheetsResolver = {
151
158
  arrFilters.push({ ...releaseGoodPackingOptionParam, name: 'packingOption' })
152
159
  }
153
160
 
154
- if (orderRemarkParam) {
155
- params.filters.splice(
156
- params.filters.findIndex(item => item.name == 'orderRemark'),
157
- 1
158
- )
159
-
160
- if (orderRemarkParam?.value == true) {
161
- arrFilters.push({ operator: 'is_not_null', name: 'remark' })
162
- } else if (orderRemarkParam?.value == false) {
163
- arrFilters.push({ operator: 'is_null', name: 'remark' })
164
- }
165
- }
166
-
167
161
  const foundReleaseGoods: ReleaseGood[] = await getRepository(ReleaseGood).find({
168
162
  ...convertListParams({ filters: arrFilters })
169
163
  })
@@ -295,6 +289,20 @@ export const worksheetsResolver = {
295
289
  }
296
290
  }
297
291
 
292
+ //check packing worksheet checkbox filter
293
+ if (manifestParam) {
294
+ params.filters.splice(
295
+ params.filters.findIndex(item => item.name == 'manifest'),
296
+ 1
297
+ )
298
+ }
299
+
300
+ if (orderRemarkParam) {
301
+ params.filters.splice(
302
+ params.filters.findIndex(item => item.name == 'orderRemark'),
303
+ 1
304
+ )
305
+ }
298
306
  ////Set default bizplace filter
299
307
  const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')
300
308
  if (!bizplaceFilter && typeParam.value[0] !== WORKSHEET_TYPE.BATCH_PICKING) {
@@ -331,6 +339,39 @@ export const worksheetsResolver = {
331
339
  )
332
340
  }
333
341
 
342
+ if (outboundOrderInfoFilter) {
343
+ qb.andWhere(
344
+ '(releaseGood.name ~* :outboundOrderInfoFilter or releaseGood.ref_no ~* :outboundOrderInfoFilter or releaseGood.ref_no_2 ~* :outboundOrderInfoFilter or releaseGood.ref_no_3 ~* :outboundOrderInfoFilter)',
345
+ { outboundOrderInfoFilter }
346
+ )
347
+ }
348
+
349
+ if (manifestParam) {
350
+ params.filters.splice(
351
+ params.filters.findIndex(item => item.name == 'manifest'),
352
+ 1
353
+ )
354
+
355
+ if (manifestParam?.value == true) {
356
+ qb.andWhere('releaseGood.manifest_id is not null')
357
+ } else if (manifestParam?.value == false) {
358
+ qb.andWhere('releaseGood.manifest_id is null')
359
+ }
360
+ }
361
+
362
+ if (orderRemarkParam) {
363
+ params.filters.splice(
364
+ params.filters.findIndex(item => item.name == 'orderRemark'),
365
+ 1
366
+ )
367
+
368
+ if (orderRemarkParam?.value == true) {
369
+ qb.andWhere('releaseGood.remark is not null')
370
+ } else if (orderRemarkParam?.value == false) {
371
+ qb.andWhere('releaseGood.remark is null')
372
+ }
373
+ }
374
+
334
375
  qb.addSelect('COALESCE("cc".rank, 99999)', 'rank')
335
376
  qb.leftJoinAndSelect('ws.domain', 'domain')
336
377
  qb.leftJoinAndSelect('ws.bizplace', 'bizplace')
@@ -25,7 +25,6 @@ import { WorksheetPatch } from './worksheet-patch'
25
25
  import { WorksheetWithPagination } from './worksheet-with-pagination'
26
26
  import { DeliveryOrderRO } from './delivery-order-ro'
27
27
 
28
-
29
28
  export const Mutation = /* GraphQL */ `
30
29
  createWorksheet (
31
30
  worksheet: NewWorksheet!
@@ -41,7 +40,7 @@ export const Mutation = /* GraphQL */ `
41
40
  ): Boolean @privilege(category: "worksheet", privilege: "mutation") @transaction
42
41
 
43
42
  generateArrivalNoticeWorksheet (
44
- arrivalNoticeNo: String!
43
+ arrivalNoticeNos: [String!]
45
44
  bufferLocation: ObjectRef!
46
45
  ): ArrivalNoticeWorksheet @privilege(category: "worksheet_control", privilege: "mutation") @transaction
47
46
 
@@ -713,7 +712,7 @@ export const Query = /* GraphQL */ `
713
712
  findReleaseOrdersByTaskNo(taskNo: String!): FindReleaseOrdersByTaskNo @privilege(category: "worksheet", privilege: "query") @transaction
714
713
  `
715
714
 
716
- export const Types = /* GraphQL */[
715
+ export const Types = /* GraphQL */ [
717
716
  Worksheet,
718
717
  AirwayBill,
719
718
  NewWorksheet,