@things-factory/worksheet-base 4.3.828 → 4.3.829

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/outbound/packing-worksheet-controller.js +10 -3
  2. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  3. package/dist-server/graphql/resolvers/worksheet/fetch-powrup-document.js +4 -2
  4. package/dist-server/graphql/resolvers/worksheet/fetch-powrup-document.js.map +1 -1
  5. package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js +3 -2
  6. package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js.map +1 -1
  7. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +24 -11
  8. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
  9. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +46 -48
  10. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  11. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +26 -21
  12. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  13. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +37 -32
  14. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  15. package/package.json +2 -2
  16. package/server/controllers/outbound/packing-worksheet-controller.ts +11 -4
  17. package/server/graphql/resolvers/worksheet/fetch-powrup-document.ts +4 -2
  18. package/server/graphql/resolvers/worksheet/fetch-sellercraft-document.ts +4 -3
  19. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +28 -17
  20. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +46 -48
  21. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +25 -20
  22. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +37 -32
@@ -1,4 +1,4 @@
1
- import { EntityManager, getManager, In } from 'typeorm'
1
+ import { EntityManager, getManager, getRepository, In } from 'typeorm'
2
2
  import { ApplicationType, User } from '@things-factory/auth-base'
3
3
  import { Bizplace, ContactPoint, getMyBizplace } from '@things-factory/biz-base'
4
4
  import { logger } from '@things-factory/env'
@@ -169,21 +169,22 @@ export async function completePicking(
169
169
 
170
170
  if (sellercraft) {
171
171
  const initSCOrderShipment = async (sellercraft, rtsTriggerLevel) => {
172
- await getManager().transaction(async txMgr => {
173
- const sellercraftCtrl: SellercraftController = new SellercraftController(txMgr, domain, user)
174
-
175
- if (!releaseGood?.orderPackages?.length && !releaseGood?.marketPackCallSuccess) {
176
- ///// Q: why need to refetch Order Products?
177
- const orderProducts: OrderProduct[] = await txMgr.getRepository(OrderProduct).find({
178
- where: { releaseGood },
179
- relations: ['product', 'product.productDetails', 'productDetail']
180
- })
181
- await sellercraftCtrl.packOrder(sellercraft, { ...releaseGood, orderProducts })
182
- }
172
+ // Issue #4104: don't wrap marketplace HTTP calls in a transaction.
173
+ // Bind the controller to getManager() (auto-commit) and use the
174
+ // global repository for the orderProducts read.
175
+ const sellercraftCtrl: SellercraftController = new SellercraftController(getManager(), domain, user)
176
+
177
+ if (!releaseGood?.orderPackages?.length && !releaseGood?.marketPackCallSuccess) {
178
+ ///// Q: why need to refetch Order Products?
179
+ const orderProducts: OrderProduct[] = await getRepository(OrderProduct).find({
180
+ where: { releaseGood },
181
+ relations: ['product', 'product.productDetails', 'productDetail']
182
+ })
183
+ await sellercraftCtrl.packOrder(sellercraft, { ...releaseGood, orderProducts })
184
+ }
183
185
 
184
- // Trigger if RTS Trigger Level Setting == 1
185
- if (rtsTriggerLevel == 1) await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
186
- })
186
+ // Trigger if RTS Trigger Level Setting == 1
187
+ if (rtsTriggerLevel == 1) await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
187
188
  }
188
189
 
189
190
  // asynchronouly call to initiate sellercraft order shipment/ RTS
@@ -196,22 +197,22 @@ export async function completePicking(
196
197
 
197
198
  if (powrup) {
198
199
  const initPowrupShipment = async (powrup, rtsTriggerLevel) => {
199
- await getManager().transaction(async txMgr => {
200
- const powrupController: PowrupController = new PowrupController()
201
-
202
- if (!releaseGood?.orderPackages?.length && !releaseGood?.marketPackCallSuccess && !releaseGood.lastMileDelivery?.isTms) {
203
- ///// Q: why need to refetch Order Products?
204
- const orderProducts: OrderProduct[] = await txMgr.getRepository(OrderProduct).find({
205
- where: { releaseGood },
206
- relations: ['product', 'productDetail']
207
- })
208
- await powrupController.packOrder(powrup, { ...releaseGood, orderProducts }, domain, user, txMgr)
209
- }
200
+ // Issue #4104: same fix — no surrounding transaction, no trxMgr
201
+ // passed to controller methods.
202
+ const powrupController: PowrupController = new PowrupController()
210
203
 
211
- // Trigger if RTS Trigger Level Setting == 1
212
- if (rtsTriggerLevel == 1)
213
- await powrupController.initiateShipment(powrup, releaseGood, domain, user, txMgr)
214
- })
204
+ if (!releaseGood?.orderPackages?.length && !releaseGood?.marketPackCallSuccess && !releaseGood.lastMileDelivery?.isTms) {
205
+ ///// Q: why need to refetch Order Products?
206
+ const orderProducts: OrderProduct[] = await getRepository(OrderProduct).find({
207
+ where: { releaseGood },
208
+ relations: ['product', 'productDetail']
209
+ })
210
+ await powrupController.packOrder(powrup, { ...releaseGood, orderProducts }, domain, user)
211
+ }
212
+
213
+ // Trigger if RTS Trigger Level Setting == 1
214
+ if (rtsTriggerLevel == 1)
215
+ await powrupController.initiateShipment(powrup, releaseGood, domain, user)
215
216
  }
216
217
  // asynchronouly call to initiate powrup order shipment/ RTS
217
218
  initPowrupShipment(powrup, rtsTriggerLevel)
@@ -445,7 +446,10 @@ export async function completePicking(
445
446
  status: SellercraftStatus.ACTIVE
446
447
  })
447
448
  if (sellercraft) {
448
- const sellercraftCtrl: SellercraftController = new SellercraftController(tx, null, null)
449
+ // Issue #4104: bind to getManager() (auto-commit), not the
450
+ // outer @transaction `tx`, so marketplace HTTP calls don't
451
+ // hold row locks on order_packages.
452
+ const sellercraftCtrl: SellercraftController = new SellercraftController(getManager(), null, null)
449
453
  const rtsTriggerLevel: Setting = await tx.getRepository(Setting).findOne({
450
454
  where: { domain: releaseGood.domain, category: 'id-rule', name: 'rts-trigger-level' }
451
455
  })
@@ -464,7 +468,8 @@ export async function completePicking(
464
468
  })
465
469
 
466
470
  if (rtsTriggerLevel && parseInt(rtsTriggerLevel?.value || 0) == 1) {
467
- powrupController.initiateShipment(powrup, releaseGood, domain, user, tx)
471
+ // Issue #4104: don't pass `tx` — same reason as above.
472
+ powrupController.initiateShipment(powrup, releaseGood, domain, user)
468
473
  }
469
474
  }
470
475
  }