@things-factory/worksheet-base 4.3.250 → 4.3.253

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 (40) hide show
  1. package/dist-server/controllers/outbound/picking-worksheet-controller.js +14 -12
  2. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  3. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +3 -2
  4. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
  5. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +23 -0
  6. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  7. package/dist-server/graphql/resolvers/worksheet/fetch-powrup-document.js +51 -0
  8. package/dist-server/graphql/resolvers/worksheet/fetch-powrup-document.js.map +1 -0
  9. package/dist-server/graphql/resolvers/worksheet/index.js +2 -1
  10. package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
  11. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +8 -5
  12. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  13. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +1 -1
  14. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  15. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +2 -2
  16. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  17. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +2 -3
  18. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
  19. package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js +2 -3
  20. package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js.map +1 -1
  21. package/dist-server/graphql/types/worksheet/index.js +6 -0
  22. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  23. package/dist-server/graphql/types/worksheet/powrup-document.js +11 -0
  24. package/dist-server/graphql/types/worksheet/powrup-document.js.map +1 -0
  25. package/dist-server/graphql/types/worksheet/worksheet-info.js +1 -0
  26. package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
  27. package/package.json +20 -20
  28. package/server/controllers/outbound/picking-worksheet-controller.ts +25 -16
  29. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +3 -2
  30. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +42 -3
  31. package/server/graphql/resolvers/worksheet/fetch-powrup-document.ts +56 -0
  32. package/server/graphql/resolvers/worksheet/index.ts +2 -0
  33. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +12 -5
  34. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +1 -1
  35. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +3 -3
  36. package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +2 -4
  37. package/server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.ts +2 -4
  38. package/server/graphql/types/worksheet/index.ts +7 -1
  39. package/server/graphql/types/worksheet/powrup-document.ts +8 -0
  40. package/server/graphql/types/worksheet/worksheet-info.ts +1 -0
@@ -1,10 +1,24 @@
1
1
  import { EntityManager, In } from 'typeorm'
2
2
 
3
- import { User } from '@things-factory/auth-base'
3
+ import { Application, ApplicationType, User } from '@things-factory/auth-base'
4
4
  import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
5
- import { InventoryCheck, ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory } from '@things-factory/sales-base'
5
+ import {
6
+ InventoryCheck,
7
+ ORDER_INVENTORY_STATUS,
8
+ ORDER_STATUS,
9
+ OrderInventory,
10
+ PowrupController
11
+ } from '@things-factory/sales-base'
12
+
6
13
  import { Domain } from '@things-factory/shell'
7
- import { Inventory, INVENTORY_STATUS, INVENTORY_TRANSACTION_TYPE, Location, generateInventoryHistory } from '@things-factory/warehouse-base'
14
+ import {
15
+ Inventory,
16
+ INVENTORY_STATUS,
17
+ INVENTORY_TRANSACTION_TYPE,
18
+ Location,
19
+ generateInventoryHistory
20
+ } from '@things-factory/warehouse-base'
21
+ import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
8
22
 
9
23
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
10
24
  import { SellercraftController } from '../../../controllers'
@@ -53,6 +67,7 @@ export async function cycleCountAdjustment(
53
67
  'targetInventory',
54
68
  'targetInventory.inventory',
55
69
  'targetInventory.inventory.product',
70
+ 'targetInventory.inventory.productDetail',
56
71
  'targetInventory.inventory.product.productDetails',
57
72
  'targetInventory.inventory.product.productDetails.childProductDetail',
58
73
  'targetInventory.inventory.bizplace',
@@ -77,6 +92,15 @@ export async function cycleCountAdjustment(
77
92
  relations: ['domain']
78
93
  })
79
94
 
95
+ const customerDomain: Domain = targetInventory.inventory.bizplace.domain
96
+ const customerBizplaceId: string = targetInventory.inventory.bizplace.id
97
+ const companyBizplace: Bizplace = await getCompanyBizplace(domain, null, customerBizplaceId, tx)
98
+ const application: Application = await tx.getRepository(Application).findOne({
99
+ domain: companyBizplace.domain,
100
+ status: 'ACTIVE',
101
+ type: ApplicationType.POWRUP
102
+ })
103
+
80
104
  if (targetInventory.status === ORDER_INVENTORY_STATUS.MISSING) {
81
105
  // create STORED, CC_ADJUSTMENT history
82
106
  await generateInventoryHistory(
@@ -104,6 +128,11 @@ export async function cycleCountAdjustment(
104
128
  const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
105
129
  await sellercraftCtrl.updateSellercraftStock(sellercraft, inventory)
106
130
  }
131
+
132
+ if (application) {
133
+ const powrupController: PowrupController = new PowrupController()
134
+ await powrupController.updateStock([inventory], customerDomain, user, tx)
135
+ }
107
136
  } else if (targetInventory.inspectedQty == 0) {
108
137
  // create STORED, CC_ADJUSTMENT history
109
138
  await generateInventoryHistory(
@@ -135,6 +164,11 @@ export async function cycleCountAdjustment(
135
164
  const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
136
165
  await sellercraftCtrl.updateSellercraftStock(sellercraft, inventory)
137
166
  }
167
+
168
+ if (application) {
169
+ const powrupController: PowrupController = new PowrupController()
170
+ await powrupController.updateStock([inventory], customerDomain, user, tx)
171
+ }
138
172
  } else {
139
173
  const prevLocationId: string = inventory.location.id
140
174
 
@@ -191,6 +225,11 @@ export async function cycleCountAdjustment(
191
225
  await sellercraftCtrl.updateSellercraftStock(sellercraft, inventory)
192
226
  }
193
227
 
228
+ if (application) {
229
+ const powrupController: PowrupController = new PowrupController()
230
+ await powrupController.updateStock([inventory], customerDomain, user, tx)
231
+ }
232
+
194
233
  targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED
195
234
  targetInventory.updater = user
196
235
  await tx.getRepository(OrderInventory).save(targetInventory)
@@ -0,0 +1,56 @@
1
+ import { EntityManager, getRepository } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Powrup } from '@things-factory/integration-powrup'
5
+ import { ReleaseGood, PowrupController } from '@things-factory/sales-base'
6
+ import { Domain } from '@things-factory/shell'
7
+ import { logger } from '@things-factory/env'
8
+
9
+ export const fetchPowrupDocumentResolver = {
10
+ async fetchPowrupDocument(_: any, { releaseGoodId }, context: any) {
11
+ const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
12
+
13
+ //find release goods base on id
14
+ let releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({
15
+ where: { domain, id: releaseGoodId },
16
+ relations: ['bizplace', 'bizplace.domain']
17
+ })
18
+
19
+ //find user powrup data
20
+ const powrup: Powrup = await getRepository(Powrup).findOne({
21
+ active: true,
22
+ platform: 'POWRUP'
23
+ })
24
+
25
+ // instantiate powrup controller
26
+ const powrupCtrl: PowrupController = new PowrupController()
27
+
28
+ try {
29
+ // fetch document if not found
30
+ if (powrup && !releaseGood?.airwayBill) {
31
+ try {
32
+ // try fetch order document / AWB
33
+ releaseGood = await powrupCtrl.fetchDocument(powrup, releaseGood)
34
+ } catch (error) {
35
+ try {
36
+ // retry initiate order document
37
+ await powrupCtrl.initiateShipment(powrup, releaseGood, domain, user, tx)
38
+ } catch (error) {
39
+ throw new Error(`initiateShipment: ${error}`)
40
+ }
41
+ throw new Error(`fetchDocument: ${error}`)
42
+ }
43
+ }
44
+
45
+ const airwayBill: string = releaseGood?.airwayBill
46
+ const invoice: string = releaseGood?.invoice
47
+ return { airwayBill, invoice }
48
+ } catch (error) {
49
+ logger.error(
50
+ `packing-worksheet[getPowrupDocument]:(data:${JSON.stringify({ powrup, releaseGood, domain, user })}) ${error} `
51
+ )
52
+
53
+ throw new Error('Waiting for AWB from marketplace. Please retry in awhile')
54
+ }
55
+ }
56
+ }
@@ -10,6 +10,7 @@ import { deleteWorksheet } from './delete-worksheet'
10
10
  import { deliveryOrderByWorksheetResolver } from './delivery-order-by-worksheet'
11
11
  import { fetchDeliveryOrderROResolver } from './fetch-delivery-order-ro'
12
12
  import { fetchSellercraftDocumentResolver } from './fetch-sellercraft-document'
13
+ import { fetchPowrupDocumentResolver } from './fetch-powrup-document'
13
14
  import { findReleaseOrdersByTaskNoResolver } from './find-release-orders-by-task-no'
14
15
  import { findSortingReleaseOrdersByTaskNoResolver } from './find-sorting-release-orders-by-task-no'
15
16
  import { Mutations as GenerateWorksheetMutations } from './generate-worksheet'
@@ -142,6 +143,7 @@ export const Mutation = {
142
143
  ...unpackingResolver,
143
144
  ...palletizingPallets,
144
145
  ...fetchSellercraftDocumentResolver,
146
+ ...fetchPowrupDocumentResolver,
145
147
  ...cancelDraftReleaseOrder,
146
148
  ...cancelReplenishment,
147
149
  ...ReplenishmentMutations
@@ -153,11 +153,17 @@ export const packingWorksheetResolver = {
153
153
  if (worksheet.status === WORKSHEET_STATUS.DONE) {
154
154
  throw new Error(`Worksheet is completed already`)
155
155
  } else if (worksheet.status === WORKSHEET_STATUS.EXECUTING) {
156
- if (orderPackages?.length == 0 && orderSource == ApplicationType.SELLERCRAFT) {
156
+ if (
157
+ (orderPackages?.length == 0 && orderSource == ApplicationType.SELLERCRAFT) ||
158
+ (orderPackages?.length == 0 && orderSource == ApplicationType.POWRUP)
159
+ ) {
157
160
  throw new Error('Waiting for packages from marketplace. Please retry in while.')
158
161
  }
159
162
  } else if (worksheet.status === WORKSHEET_STATUS.DEACTIVATED) {
160
- if (orderPackages?.length == 0 && orderSource == ApplicationType.SELLERCRAFT) {
163
+ if (
164
+ (orderPackages?.length == 0 && orderSource == ApplicationType.SELLERCRAFT) ||
165
+ (orderPackages?.length == 0 && orderSource == ApplicationType.POWRUP)
166
+ ) {
161
167
  throw new Error('Waiting for packages from marketplace. Please retry in while.')
162
168
  }
163
169
 
@@ -274,6 +280,7 @@ export const packingWorksheetResolver = {
274
280
  refNo: releaseGood.refNo,
275
281
  refNo2: releaseGood.refNo2,
276
282
  refNo3: releaseGood.refNo3,
283
+ source: releaseGood.source,
277
284
  partnerDomainId: releaseGood.bizplace?.domain.id,
278
285
  startedAt: worksheet.startedAt,
279
286
  shippingProvider: shippingProvider ? shippingProvider : '',
@@ -423,11 +430,11 @@ async function getPowrupDocument(powrup: Powrup, releaseGood: ReleaseGood, domai
423
430
  } catch (error) {
424
431
  try {
425
432
  // retry initiate order shipment / RTS
426
- await powrupCtrl.initiateShipment(powrup, releaseGood)
433
+ await powrupCtrl.initiateShipment(powrup, releaseGood, domain, user, txMgr)
427
434
  } catch (error) {
428
- throw new Error(`initiateOrderShipment: ${error}`)
435
+ throw new Error(`initiateShipment: ${error}`)
429
436
  }
430
- throw new Error(`fetchOrderDocument: ${error}`)
437
+ throw new Error(`fetchDocument: ${error}`)
431
438
  }
432
439
  }
433
440
  } catch (error) {
@@ -142,7 +142,7 @@ export async function completeBatchPicking(
142
142
  const powrupCtrl: PowrupController = new PowrupController()
143
143
 
144
144
  if (!foundReleaseGood?.orderPackages?.length && !foundReleaseGood?.marketPackCallSuccess) {
145
- await powrupCtrl.packOrder(powrup, foundReleaseGood)
145
+ await powrupCtrl.packOrder(powrup, foundReleaseGood, domain, user, tx)
146
146
  }
147
147
 
148
148
  const rtsTriggerLevel: Setting = await tx.getRepository(Setting).findOne({
@@ -170,7 +170,7 @@ export async function completePicking(
170
170
  where: { releaseGood },
171
171
  relations: ['product', 'productDetail']
172
172
  })
173
- await powrupController.packOrder(powrup, { ...releaseGood, orderProducts }, domain, user, tx)
173
+ await powrupController.packOrder(powrup, { ...releaseGood, orderProducts }, domain, user, txMgr)
174
174
  }
175
175
 
176
176
  const rtsTriggerLevel: Setting = await txMgr.getRepository(Setting).findOne({
@@ -178,7 +178,7 @@ export async function completePicking(
178
178
  })
179
179
 
180
180
  if (rtsTriggerLevel && parseInt(rtsTriggerLevel?.value || 0) == 1) {
181
- await powrupController.initiateShipment(powrup, releaseGood)
181
+ await powrupController.initiateShipment(powrup, releaseGood, domain, user, txMgr)
182
182
  }
183
183
  })
184
184
  }
@@ -416,7 +416,7 @@ export async function completePicking(
416
416
  if (vasWorksheet) {
417
417
  await activateVas(tx, domain, user, vasWorksheet.name, vasWorksheetDetails)
418
418
  }
419
- } catch (e) { }
419
+ } catch (e) {}
420
420
  }
421
421
  // Can improve by applying "Else" since if got VAS user has to complete then only we generate loading worksheet
422
422
  if (!existLoadingWorksheet && !releaseGood.courierOption && !releaseGood.packingOption) {
@@ -3,10 +3,8 @@ import { EntityManager } from 'typeorm'
3
3
  import { Application, ApplicationType, User } from '@things-factory/auth-base'
4
4
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
5
5
  import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
6
- import { ArrivalNotice } from '@things-factory/sales-base'
6
+ import { ArrivalNotice, PowrupController } from '@things-factory/sales-base'
7
7
  import { Domain } from '@things-factory/shell'
8
- import { PowrupController } from '@things-factory/sales-base'
9
- import { Powrup } from '@things-factory/integration-powrup'
10
8
  import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
11
9
 
12
10
  import { PutawayWorksheetController } from '../../../../controllers'
@@ -100,7 +98,7 @@ export const completePutawayResolver = {
100
98
  const powrupController: PowrupController = new PowrupController()
101
99
 
102
100
  // allow async run to skip user wait time
103
- powrupController.updateStock(arrivalNotice.orderProducts, companyBizplace.domain, user, tx)
101
+ powrupController.updateStock(arrivalNotice.orderProducts, customerDomain, user)
104
102
  }
105
103
  }
106
104
  }
@@ -2,11 +2,9 @@ import { EntityManager } from 'typeorm'
2
2
 
3
3
  import { Application, ApplicationType, User } from '@things-factory/auth-base'
4
4
  import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
5
- import { ReturnOrder } from '@things-factory/sales-base'
5
+ import { ReturnOrder, PowrupController } from '@things-factory/sales-base'
6
6
  import { Domain } from '@things-factory/shell'
7
- import { PowrupController } from '@things-factory/sales-base'
8
7
  import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
9
- import { Powrup } from '@things-factory/integration-powrup'
10
8
 
11
9
  import { PutawayReturningWorksheetController } from '../../../../controllers'
12
10
  import { SellercraftController } from '../../../../controllers/ecommerce'
@@ -48,7 +46,7 @@ export const completePutawayReturnResolver = {
48
46
 
49
47
  if (application) {
50
48
  const powrupController: PowrupController = new PowrupController()
51
- await powrupController.updateStock(returnOrder.orderInventories, companyBizplace.domain, user, tx)
49
+ await powrupController.updateStock(returnOrder.orderInventories, customerDomain, user, tx)
52
50
  }
53
51
  }
54
52
  }
@@ -19,6 +19,7 @@ import { ProductApproval } from './product-approval'
19
19
  import { ReleaseGoodWorksheet } from './release-good-worksheet'
20
20
  import { ReturnOrderWorksheet } from './return-order-worksheet'
21
21
  import { SellercraftDocument } from './sellercraft-document'
22
+ import { PowrupDocument } from './powrup-document'
22
23
  import { VasOrderWorksheet } from './vas-order-worksheet'
23
24
  import { Worksheet } from './worksheet'
24
25
  import { WorksheetDetailInfo } from './worksheet-detail-info'
@@ -74,6 +75,10 @@ export const Mutation = /* GraphQL */ `
74
75
  releaseGoodId: String!
75
76
  ): SellercraftDocument @privilege(category: "worksheet_control", privilege: "mutation") @transaction
76
77
 
78
+ fetchPowrupDocument (
79
+ releaseGoodId: String!
80
+ ): PowrupDocument @privilege(category: "worksheet_control", privilege: "mutation") @transaction
81
+
77
82
  generateSortingWorksheet (
78
83
  worksheetNo: String!
79
84
  ): ReleaseGoodWorksheet @privilege(category: "worksheet_control", privilege: "mutation") @transaction
@@ -769,9 +774,10 @@ export const Query = /* GraphQL */ `
769
774
  findReleaseOrdersByTaskNo(taskNo: String!): FindReleaseOrdersByTaskNo @privilege(category: "worksheet", privilege: "query") @transaction
770
775
  `
771
776
 
772
- export const Types = /* GraphQL */[
777
+ export const Types = /* GraphQL */ [
773
778
  Worksheet,
774
779
  SellercraftDocument,
780
+ PowrupDocument,
775
781
  NewWorksheet,
776
782
  WorksheetPatch,
777
783
  WorksheetList,
@@ -0,0 +1,8 @@
1
+ import { gql } from 'apollo-server-koa'
2
+
3
+ export const PowrupDocument = gql`
4
+ type PowrupDocument {
5
+ airwayBill: String
6
+ invoice: String
7
+ }
8
+ `
@@ -18,6 +18,7 @@ export const WorksheetInfo = gql`
18
18
  shippingProvider: String
19
19
  trackingNo: String
20
20
  platform: String
21
+ source: String
21
22
  marketplaceStoreId: String
22
23
  marketplaceOrder: MarketplaceOrder
23
24
  bufferLocation: String