@things-factory/worksheet-base 4.3.534 → 4.3.536

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 (28) hide show
  1. package/dist-server/controllers/inbound/putaway-worksheet-controller.js +3 -1
  2. package/dist-server/controllers/inbound/putaway-worksheet-controller.js.map +1 -1
  3. package/dist-server/controllers/outbound/loading-worksheet-controller.js +5 -2
  4. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/outbound/packing-worksheet-controller.js +5 -0
  6. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/outbound/picking-worksheet-controller.js +11 -0
  8. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +7 -0
  10. package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
  11. package/dist-server/controllers/worksheet-controller.js +14 -1
  12. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  13. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +12 -5
  14. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  15. package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js +2 -2
  16. package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js.map +1 -1
  17. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js +8 -2
  18. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
  19. package/package.json +20 -20
  20. package/server/controllers/inbound/putaway-worksheet-controller.ts +11 -4
  21. package/server/controllers/outbound/loading-worksheet-controller.ts +22 -16
  22. package/server/controllers/outbound/packing-worksheet-controller.ts +16 -3
  23. package/server/controllers/outbound/picking-worksheet-controller.ts +16 -1
  24. package/server/controllers/outbound/sorting-worksheet-controller.ts +13 -18
  25. package/server/controllers/worksheet-controller.ts +21 -33
  26. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +21 -40
  27. package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +2 -2
  28. package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +16 -5
@@ -1,4 +1,4 @@
1
- import { Equal, In, Not } from 'typeorm'
1
+ import { Equal, getConnection, In, Not } from 'typeorm'
2
2
 
3
3
  import { ApplicationType } from '@things-factory/auth-base'
4
4
  import { logger } from '@things-factory/env'
@@ -16,6 +16,7 @@ import {
16
16
  WebspertController,
17
17
  ReleaseGood
18
18
  } from '@things-factory/sales-base'
19
+ import { webhookHandler, WebhookEvents } from '@things-factory/integration-base'
19
20
  import {
20
21
  Inventory,
21
22
  INVENTORY_ITEM_SOURCE,
@@ -77,7 +78,9 @@ export class PackingWorksheetController extends VasWorksheetController {
77
78
  'worksheetDetails.targetInventory'
78
79
  ])
79
80
 
80
- if ([ORDER_INVENTORY_STATUS.PENDING_CANCEL, ORDER_INVENTORY_STATUS.CANCELLED].includes(worksheet?.releaseGood?.status)) {
81
+ if (
82
+ [ORDER_INVENTORY_STATUS.PENDING_CANCEL, ORDER_INVENTORY_STATUS.CANCELLED].includes(worksheet?.releaseGood?.status)
83
+ ) {
81
84
  throw new Error(`order status for ${worksheet.releaseGood.name}:${worksheet?.releaseGood?.status}`)
82
85
  }
83
86
 
@@ -169,6 +172,10 @@ export class PackingWorksheetController extends VasWorksheetController {
169
172
  break
170
173
  }
171
174
 
175
+ releaseGood.domain = this.domain
176
+
177
+ webhookHandler(releaseGood, releaseGood.bizplace, WebhookEvents.PackingStarted)
178
+
172
179
  return worksheet
173
180
  }
174
181
 
@@ -532,7 +539,10 @@ export class PackingWorksheetController extends VasWorksheetController {
532
539
 
533
540
  await this.trxMgr
534
541
  .getRepository(OrderPackage)
535
- .update({ id: orderPackage.id }, { status: ORDER_STATUS.DONE, updater: this.user, updatedAt: new Date(), grossWeight: grossWeight })
542
+ .update(
543
+ { id: orderPackage.id },
544
+ { status: ORDER_STATUS.DONE, updater: this.user, updatedAt: new Date(), grossWeight: grossWeight }
545
+ )
536
546
 
537
547
  let releaseGood: ReleaseGood = await this.findRefOrder(
538
548
  ReleaseGood,
@@ -580,6 +590,9 @@ export class PackingWorksheetController extends VasWorksheetController {
580
590
  // { trackingNo: `${releaseGood?.trackingNo ? releaseGood?.trackingNo.split(',').push(orderPackage.trackingNo).join(',') : orderPackage.trackingNo}` }
581
591
  // )
582
592
  // }
593
+ releaseGood.domain = this.domain
594
+
595
+ webhookHandler(releaseGood, releaseGood.bizplace, WebhookEvents.PackingCompleted)
583
596
 
584
597
  return await this.completeWorksheet(worksheet, orderStatus)
585
598
  } else {
@@ -46,7 +46,7 @@ import {
46
46
  Tote,
47
47
  TOTE_STATUS
48
48
  } from '@things-factory/warehouse-base'
49
-
49
+ import { webhookHandler, WebhookEvents } from '@things-factory/integration-base'
50
50
  import { TASK_NUMBER_RULE_TYPE, TASK_NUMBER_SETTING_KEY, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
51
51
  import { SellercraftController } from '../../controllers'
52
52
  import { ActiveWorksheetPickingView, Worksheet, WorksheetDetail } from '../../entities'
@@ -284,6 +284,8 @@ export class PickingWorksheetController extends VasWorksheetController {
284
284
  releaseGood.updater = this.user
285
285
  this.updateRefOrder(releaseGood)
286
286
 
287
+ webhookHandler(releaseGood, releaseGood.bizplace, WebhookEvents.PickingStarted)
288
+
287
289
  worksheet = await this.activateWorksheet(worksheet, worksheetDetails, [])
288
290
 
289
291
  // VAS will be activated after PICKING is completed
@@ -619,6 +621,10 @@ export class PickingWorksheetController extends VasWorksheetController {
619
621
  await this.trxMgr.getRepository(ReleaseGood).save(releaseGoods)
620
622
  }
621
623
 
624
+ for (const releaseGood of releaseGoods) {
625
+ webhookHandler(releaseGood, releaseGood.bizplace, WebhookEvents.PickingStarted)
626
+ }
627
+
622
628
  return worksheet
623
629
  }
624
630
 
@@ -1665,6 +1671,8 @@ export class PickingWorksheetController extends VasWorksheetController {
1665
1671
  }
1666
1672
  }
1667
1673
 
1674
+ webhookHandler(releaseGood, releaseGood.bizplace, WebhookEvents.PickingCompleted)
1675
+
1668
1676
  return await this.completeWorksheet(worksheet, orderStatus)
1669
1677
  }
1670
1678
 
@@ -1746,6 +1754,13 @@ export class PickingWorksheetController extends VasWorksheetController {
1746
1754
 
1747
1755
  await this.trxMgr.getRepository(ReleaseGood).save(releaseGoods)
1748
1756
 
1757
+ for (let releaseGood of releaseGoods) {
1758
+ releaseGood.domain = this.domain
1759
+ releaseGood.bizplace = worksheet.bizplace
1760
+
1761
+ webhookHandler(releaseGood, releaseGood.bizplace, WebhookEvents.PickingCompleted)
1762
+ }
1763
+
1749
1764
  return worksheet
1750
1765
  }
1751
1766
 
@@ -1,13 +1,6 @@
1
- import {
2
- In,
3
- IsNull
4
- } from 'typeorm'
5
-
6
- import {
7
- Product,
8
- ProductBarcode,
9
- ProductDetail
10
- } from '@things-factory/product-base'
1
+ import { In, IsNull } from 'typeorm'
2
+ import { webhookHandler, WebhookEvents } from '@things-factory/integration-base'
3
+ import { Product, ProductBarcode, ProductDetail } from '@things-factory/product-base'
11
4
  import {
12
5
  ORDER_INVENTORY_STATUS,
13
6
  ORDER_STATUS,
@@ -28,14 +21,8 @@ import {
28
21
  TOTE_STATUS
29
22
  } from '@things-factory/warehouse-base'
30
23
 
31
- import {
32
- WORKSHEET_STATUS,
33
- WORKSHEET_TYPE
34
- } from '../../constants'
35
- import {
36
- Worksheet,
37
- WorksheetDetail
38
- } from '../../entities'
24
+ import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
25
+ import { Worksheet, WorksheetDetail } from '../../entities'
39
26
  import { VasWorksheetController } from '../vas/vas-worksheet-controller'
40
27
 
41
28
  export class SortingWorksheetController extends VasWorksheetController {
@@ -505,6 +492,14 @@ export class SortingWorksheetController extends VasWorksheetController {
505
492
  worksheet.updater = this.user
506
493
  worksheet = await this.trxMgr.getRepository(Worksheet).save(worksheet)
507
494
 
495
+ const releaseGoods: ReleaseGood[] = await this.trxMgr
496
+ .getRepository(ReleaseGood)
497
+ .find({ where: { id: In(releaseGoodIds) }, relations: ['domain', 'bizplace'] })
498
+
499
+ for (let releaseGood of releaseGoods) {
500
+ webhookHandler(releaseGood, releaseGood.bizplace, WebhookEvents.LoadingStarted)
501
+ }
502
+
508
503
  return worksheet
509
504
  }
510
505
 
@@ -1,25 +1,8 @@
1
- import {
2
- EntityManager,
3
- EntitySchema,
4
- Equal,
5
- FindOneOptions,
6
- getRepository,
7
- In,
8
- Not
9
- } from 'typeorm'
10
-
11
- import {
12
- Role,
13
- User
14
- } from '@things-factory/auth-base'
15
- import {
16
- Bizplace,
17
- getDomainUsers
18
- } from '@things-factory/biz-base'
19
- import {
20
- Product,
21
- ProductDetail
22
- } from '@things-factory/product-base'
1
+ import { EntityManager, EntitySchema, Equal, FindOneOptions, getRepository, In, Not, getConnection } from 'typeorm'
2
+ import { webhookHandler, WebhookEvents } from '@things-factory/integration-base'
3
+ import { Role, User } from '@things-factory/auth-base'
4
+ import { Bizplace, getDomainUsers } from '@things-factory/biz-base'
5
+ import { Product, ProductDetail } from '@things-factory/product-base'
23
6
  import {
24
7
  ArrivalNotice,
25
8
  DeliveryOrder,
@@ -45,14 +28,8 @@ import {
45
28
  Pallet
46
29
  } from '@things-factory/warehouse-base'
47
30
 
48
- import {
49
- WORKSHEET_STATUS,
50
- WORKSHEET_TYPE
51
- } from '../constants'
52
- import {
53
- Worksheet,
54
- WorksheetDetail
55
- } from '../entities'
31
+ import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../constants'
32
+ import { Worksheet, WorksheetDetail } from '../entities'
56
33
  import { WorksheetNoGenerator } from '../utils'
57
34
 
58
35
  export type ReferenceOrderType =
@@ -774,7 +751,6 @@ export class WorksheetController {
774
751
  changedWorksheetDetails: Partial<WorksheetDetail>[],
775
752
  tx?: EntityManager
776
753
  ): Promise<Worksheet> {
777
-
778
754
  const transaction = tx ? tx : this.trxMgr
779
755
 
780
756
  if (!worksheet.id || worksheetDetails.some((wsd: WorksheetDetail) => !wsd.id)) {
@@ -786,7 +762,6 @@ export class WorksheetController {
786
762
  worksheet.updater = this.user
787
763
  worksheet = await transaction.getRepository(Worksheet).save(worksheet)
788
764
 
789
-
790
765
  worksheetDetails = this.renewWorksheetDetails(worksheetDetails, changedWorksheetDetails, 'name', {
791
766
  status: WORKSHEET_STATUS.EXECUTING,
792
767
  updater: this.user
@@ -886,6 +861,10 @@ export class WorksheetController {
886
861
  refOrder.status = updatedRefOrderStatus
887
862
  refOrder.updater = this.user
888
863
  await this.updateRefOrder(refOrder)
864
+
865
+ if (!(worksheetType === WORKSHEET_TYPE.PUTAWAY) && updatedRefOrderStatus === 'DONE') {
866
+ webhookHandler(refOrder, refOrder.bizplace, WebhookEvents.ReleaseOrderCompleted)
867
+ }
889
868
  }
890
869
 
891
870
  return worksheet
@@ -1029,7 +1008,16 @@ export class WorksheetController {
1029
1008
  null
1030
1009
  if (!refOrder) {
1031
1010
  const wsWithRefOrd: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne(worksheet.id, {
1032
- relations: ['arrivalNotice', 'releaseGood', 'vasOrder', 'inventoryCheck', 'returnOrder', 'replenishment']
1011
+ relations: [
1012
+ 'arrivalNotice',
1013
+ 'releaseGood',
1014
+ 'releaseGood.domain',
1015
+ 'releaseGood.bizplace',
1016
+ 'vasOrder',
1017
+ 'inventoryCheck',
1018
+ 'returnOrder',
1019
+ 'replenishment'
1020
+ ]
1033
1021
  })
1034
1022
 
1035
1023
  refOrder =
@@ -1,34 +1,14 @@
1
- import {
2
- EntityManager,
3
- getManager,
4
- In
5
- } from 'typeorm'
6
-
7
- import {
8
- ApplicationType,
9
- User
10
- } from '@things-factory/auth-base'
11
- import {
12
- Bizplace,
13
- ContactPoint,
14
- getMyBizplace
15
- } from '@things-factory/biz-base'
1
+ import { EntityManager, getManager, In } from 'typeorm'
2
+ import { webhookHandler, WebhookEvents } from '@things-factory/integration-base'
3
+ import { ApplicationType, User } from '@things-factory/auth-base'
4
+ import { Bizplace, ContactPoint, getMyBizplace } from '@things-factory/biz-base'
16
5
  import { logger } from '@things-factory/env'
17
6
  import { Account } from '@things-factory/integration-accounting'
18
7
  import { sqsSendMessage } from '@things-factory/integration-base'
19
- import {
20
- LastMileAPI,
21
- LastMileDelivery
22
- } from '@things-factory/integration-lmd'
23
- import {
24
- MarketplaceStore,
25
- MarketplaceTransporter
26
- } from '@things-factory/integration-marketplace'
8
+ import { LastMileAPI, LastMileDelivery } from '@things-factory/integration-lmd'
9
+ import { MarketplaceStore, MarketplaceTransporter } from '@things-factory/integration-marketplace'
27
10
  import { Powrup } from '@things-factory/integration-powrup'
28
- import {
29
- Sellercraft,
30
- SellercraftStatus
31
- } from '@things-factory/integration-sellercraft'
11
+ import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
32
12
  import {
33
13
  MarketplaceOrder,
34
14
  MarketplaceOrderItem,
@@ -52,10 +32,7 @@ import { Setting } from '@things-factory/setting-base'
52
32
  import { Domain } from '@things-factory/shell'
53
33
  import { Inventory } from '@things-factory/warehouse-base'
54
34
 
55
- import {
56
- WORKSHEET_STATUS,
57
- WORKSHEET_TYPE
58
- } from '../../../../constants'
35
+ import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../../constants'
59
36
  import {
60
37
  createOrderPackageAndItems,
61
38
  LoadingWorksheetController,
@@ -66,10 +43,7 @@ import {
66
43
  } from '../../../../controllers/'
67
44
  import { EcommerceController } from '../../../../controllers/ecommerce'
68
45
  import { WorksheetController } from '../../../../controllers/worksheet-controller'
69
- import {
70
- Worksheet,
71
- WorksheetDetail
72
- } from '../../../../entities'
46
+ import { Worksheet, WorksheetDetail } from '../../../../entities'
73
47
  import { activateVas } from '../vas/activate-vas'
74
48
 
75
49
  export const completePickingResolver = {
@@ -174,9 +148,14 @@ export async function completePicking(
174
148
 
175
149
  let foundObsoleteInventories = await pickingWSCtrl.completePicking(releaseGood, worksheet, inventories)
176
150
 
177
- const rtsTriggerLevel: Setting = await tx.getRepository(Setting).findOne({
178
- where: { domain, category: 'id-rule', name: 'rts-trigger-level' }
179
- }).then((setting: Setting) => { return parseInt(setting?.value || 0) })
151
+ const rtsTriggerLevel: Setting = await tx
152
+ .getRepository(Setting)
153
+ .findOne({
154
+ where: { domain, category: 'id-rule', name: 'rts-trigger-level' }
155
+ })
156
+ .then((setting: Setting) => {
157
+ return parseInt(setting?.value || 0)
158
+ })
180
159
 
181
160
  if (foundObsoleteInventories?.type) {
182
161
  const orderSource: string = releaseGood.source
@@ -228,7 +207,8 @@ export async function completePicking(
228
207
  }
229
208
 
230
209
  // Trigger if RTS Trigger Level Setting == 1
231
- if (rtsTriggerLevel == 1) await powrupController.initiateShipment(powrup, releaseGood, domain, user, txMgr)
210
+ if (rtsTriggerLevel == 1)
211
+ await powrupController.initiateShipment(powrup, releaseGood, domain, user, txMgr)
232
212
  })
233
213
  }
234
214
  // asynchronouly call to initiate powrup order shipment/ RTS
@@ -356,7 +336,7 @@ export async function completePicking(
356
336
 
357
337
  case ApplicationType.WEBSPERT:
358
338
  // Trigger Whole Order Process
359
- WebspertController.triggerOrderProcesses(releaseGood, domain, user, (rtsTriggerLevel == 1))
339
+ WebspertController.triggerOrderProcesses(releaseGood, domain, user, rtsTriggerLevel == 1)
360
340
 
361
341
  break
362
342
  default:
@@ -460,6 +440,7 @@ export async function completePicking(
460
440
 
461
441
  const loadingWorksheetDetails: WorksheetDetail[] = loadingWorksheet.worksheetDetails
462
442
  await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails)
443
+ webhookHandler(releaseGood, releaseGood.bizplace, WebhookEvents.LoadingStarted)
463
444
  } else {
464
445
  const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
465
446
  let loadingWorksheet: Worksheet = await loadingWSCtrl.updateLoadingWorksheet(
@@ -87,14 +87,14 @@ export const proceedExtraProductsResolver = {
87
87
  packingType: selectedOrderProduct?.adjustedPackingType
88
88
  ? selectedOrderProduct.adjustedPackingType
89
89
  : selectedOrderProduct.packingType,
90
- packQty: selectedOrderProduct?.adjustedPackQty
90
+ packQty: selectedOrderProduct?.adjustedPackQty != null
91
91
  ? selectedOrderProduct.adjustedPackQty
92
92
  : selectedOrderProduct.packQty,
93
93
  uom: selectedOrderProduct?.adjustedUom ? selectedOrderProduct.adjustedUom : selectedOrderProduct.uom,
94
94
  uomValue: selectedOrderProduct?.adjustedUomValue
95
95
  ? selectedOrderProduct.adjustedUomValue
96
96
  : selectedOrderProduct.uomValue,
97
- totalUomValue: selectedOrderProduct?.adjustedTotalUomValue
97
+ totalUomValue: (selectedOrderProduct?.adjustedTotalUomValue || selectedOrderProduct?.adjustedTotalUomValue === '')
98
98
  ? selectedOrderProduct.adjustedTotalUomValue
99
99
  : selectedOrderProduct.totalUomValue,
100
100
  palletQty: selectedOrderProduct?.adjustedPalletQty
@@ -1,4 +1,4 @@
1
- import { EntityManager, In } from 'typeorm'
1
+ import { EntityManager, In, getConnection } from 'typeorm'
2
2
 
3
3
  import { User } from '@things-factory/auth-base'
4
4
  import { Bizplace } from '@things-factory/biz-base'
@@ -6,11 +6,11 @@ import { Account } from '@things-factory/integration-accounting'
6
6
  import { ArrivalNotice, generateGoodsReceivalNote } from '@things-factory/sales-base'
7
7
  import { Domain } from '@things-factory/shell'
8
8
  import { Inventory, INVENTORY_STATUS } from '@things-factory/warehouse-base'
9
-
9
+ import { webhookHandler, WebhookEvents } from '@things-factory/integration-base'
10
10
  import { WORKSHEET_STATUS } from '../../../../constants'
11
11
  import { PutawayWorksheetController, UnloadingWorksheetController } from '../../../../controllers'
12
12
  import { XilnexController } from '../../../../controllers/pos'
13
- import { Worksheet, WorksheetDetail } from '../../../../entities'
13
+ import { Worksheet, WorksheetDetail } from '../../../../entities'
14
14
 
15
15
  export const completeUnloadingResolver = {
16
16
  async completeUnloading(_: any, { arrivalNoticeNo, worksheetDetails }, context: any) {
@@ -36,7 +36,11 @@ export const completeUnloadingResolver = {
36
36
  let putawayWorksheet: Worksheet
37
37
 
38
38
  const inventories: Inventory[] = await tx.getRepository(Inventory).find({
39
- where: { domain, refOrderId: arrivalNotice.id, status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED]) },
39
+ where: {
40
+ domain,
41
+ refOrderId: arrivalNotice.id,
42
+ status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED])
43
+ },
40
44
  relations: ['productDetail', 'product', 'creator']
41
45
  })
42
46
 
@@ -49,7 +53,12 @@ export const completeUnloadingResolver = {
49
53
  }
50
54
 
51
55
  const bizplaceId: Bizplace = arrivalNotice.bizplace.id
52
- await generateGoodsReceivalNote({ refNo: arrivalNoticeNo, customer: bizplaceId }, domain, user, tx)
56
+ const goodReceiveNote = await generateGoodsReceivalNote(
57
+ { refNo: arrivalNoticeNo, customer: bizplaceId },
58
+ domain,
59
+ user,
60
+ tx
61
+ )
53
62
 
54
63
  const customerDomain: Domain = arrivalNotice.bizplace.domain
55
64
  const xilnex: Account = await tx
@@ -68,6 +77,8 @@ export const completeUnloadingResolver = {
68
77
  url: context.header.referer,
69
78
  data: { url: context.header.referer }
70
79
  })
80
+
81
+ webhookHandler(goodReceiveNote, goodReceiveNote.bizplace, WebhookEvents.GrnCreated)
71
82
  }
72
83
  }
73
84