@things-factory/operato-hub 4.3.784 → 4.3.786

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.
@@ -42,11 +42,32 @@ api_1.restfulApiRouter.get('/v1/warehouse/get-return-order-details', middlewares
42
42
  if (!returnOrder) {
43
43
  throw new error_util_1.ApiError('E04', 'return order');
44
44
  }
45
+ // Lookup delivery orders from the release good's order inventories.
46
+ // NOTE: inventoryId is used as the lookup key, but it's not strictly unique — during loading,
47
+ // the same inventory can be split across multiple DOs (e.g., qty 6 split into DO-001:3 + DO-002:3).
48
+ // In that case, the last DO in the result set wins. This is acceptable for now since the UI also
49
+ // collapses split OIs into a single row per inventory. To fix properly, store delivery_order_id
50
+ // on the return order's OrderInventory during creation.
51
+ const returnOrderInvs = (returnOrder.orderInventories || []).filter(oi => oi.type === sales_base_1.ORDER_INVENTORY_TYPE.RETURN_ORDER);
52
+ const releaseGoodIds = [...new Set(returnOrderInvs.map(oi => { var _a; return (_a = oi.releaseGood) === null || _a === void 0 ? void 0 : _a.id; }).filter(Boolean))];
53
+ let doLookup = new Map();
54
+ if (releaseGoodIds.length > 0) {
55
+ const rgOrderInvs = await (0, typeorm_1.getRepository)(sales_base_1.OrderInventory)
56
+ .createQueryBuilder('oi')
57
+ .innerJoinAndSelect('oi.deliveryOrder', 'do')
58
+ .where('oi.release_good_id IN (:...releaseGoodIds)', { releaseGoodIds })
59
+ .andWhere('oi.delivery_order_id IS NOT NULL')
60
+ .andWhere(`oi.type = '${sales_base_1.ORDER_INVENTORY_TYPE.RELEASE_OF_GOODS}'`)
61
+ .getMany();
62
+ for (const rgOi of rgOrderInvs) {
63
+ doLookup.set(rgOi.inventoryId, { id: rgOi.deliveryOrder.id, name: rgOi.deliveryOrder.name });
64
+ }
65
+ }
45
66
  // Flatten inventoryInfos for frontend
46
67
  const itemInfos = (returnOrder.orderInventories || [])
47
- .filter(orderInv => orderInv.type === 'RETURN_ORDER')
68
+ .filter(orderInv => orderInv.type === sales_base_1.ORDER_INVENTORY_TYPE.RETURN_ORDER)
48
69
  .map(orderInv => {
49
- var _a, _b, _c, _d, _e, _f, _g;
70
+ var _a, _b, _c, _d, _e, _f, _g, _h;
50
71
  return {
51
72
  batchId: orderInv.batchId,
52
73
  refItemId: orderInv.refItemId,
@@ -74,6 +95,7 @@ api_1.restfulApiRouter.get('/v1/warehouse/get-return-order-details', middlewares
74
95
  refNo2: orderInv.releaseGood.refNo2,
75
96
  refNo3: orderInv.releaseGood.refNo3
76
97
  },
98
+ deliveryOrder: (((_h = orderInv.inventory) === null || _h === void 0 ? void 0 : _h.id) && doLookup.get(orderInv.inventory.id)) || null,
77
99
  returnQty: orderInv.returnQty,
78
100
  remark: orderInv.remark,
79
101
  status: orderInv.status
@@ -81,7 +103,7 @@ api_1.restfulApiRouter.get('/v1/warehouse/get-return-order-details', middlewares
81
103
  });
82
104
  // Putaway inventories (type !== RETURN_ORDER, created during putaway process)
83
105
  const putawayInventories = (returnOrder.orderInventories || [])
84
- .filter(orderInv => orderInv.type !== 'RETURN_ORDER')
106
+ .filter(orderInv => orderInv.type !== sales_base_1.ORDER_INVENTORY_TYPE.RETURN_ORDER)
85
107
  .map(orderInv => {
86
108
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
87
109
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"get-return-order-details.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/warehouse/get-return-order-details.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-return-order-details.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/warehouse/get-return-order-details.ts"],"names":[],"mappings":"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"}
@@ -415,6 +415,16 @@ definitions:
415
415
  refNo3:
416
416
  type: string
417
417
  example: '1234567890'
418
+ deliveryOrder:
419
+ type: object
420
+ nullable: true
421
+ properties:
422
+ id:
423
+ type: string
424
+ example: 'delivery-order-uuid'
425
+ name:
426
+ type: string
427
+ example: 'DO-20240315-001'
418
428
  returnQty:
419
429
  type: integer
420
430
  example: 10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/operato-hub",
3
- "version": "4.3.784",
3
+ "version": "4.3.786",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -123,5 +123,5 @@
123
123
  "resolutions": {
124
124
  "core-js": "^3.16.0"
125
125
  },
126
- "gitHead": "dae1fb8cbc409da6e78f52a2f8433caa3f544a54"
126
+ "gitHead": "b4c66bd17a3409215565261bff6ca9a6651a435d"
127
127
  }
@@ -1,6 +1,6 @@
1
1
  import _ from 'lodash'
2
2
  import { getRepository } from 'typeorm'
3
- import { ReturnOrder } from '@things-factory/sales-base'
3
+ import { ReturnOrder, OrderInventory, ORDER_INVENTORY_TYPE } from '@things-factory/sales-base'
4
4
 
5
5
  import { restfulApiRouter as router } from '@things-factory/api'
6
6
  import { businessMiddleware, loggingMiddleware, validationMiddleware } from '../middlewares'
@@ -51,9 +51,33 @@ router.get(
51
51
  if (!returnOrder) {
52
52
  throw new ApiError('E04', 'return order')
53
53
  }
54
+ // Lookup delivery orders from the release good's order inventories.
55
+ // NOTE: inventoryId is used as the lookup key, but it's not strictly unique — during loading,
56
+ // the same inventory can be split across multiple DOs (e.g., qty 6 split into DO-001:3 + DO-002:3).
57
+ // In that case, the last DO in the result set wins. This is acceptable for now since the UI also
58
+ // collapses split OIs into a single row per inventory. To fix properly, store delivery_order_id
59
+ // on the return order's OrderInventory during creation.
60
+ const returnOrderInvs = (returnOrder.orderInventories || []).filter(oi => oi.type === ORDER_INVENTORY_TYPE.RETURN_ORDER)
61
+ const releaseGoodIds = [...new Set(returnOrderInvs.map(oi => oi.releaseGood?.id).filter(Boolean))]
62
+
63
+ let doLookup: Map<string, { id: string; name: string }> = new Map()
64
+ if (releaseGoodIds.length > 0) {
65
+ const rgOrderInvs = await getRepository(OrderInventory)
66
+ .createQueryBuilder('oi')
67
+ .innerJoinAndSelect('oi.deliveryOrder', 'do')
68
+ .where('oi.release_good_id IN (:...releaseGoodIds)', { releaseGoodIds })
69
+ .andWhere('oi.delivery_order_id IS NOT NULL')
70
+ .andWhere(`oi.type = '${ORDER_INVENTORY_TYPE.RELEASE_OF_GOODS}'`)
71
+ .getMany()
72
+
73
+ for (const rgOi of rgOrderInvs as any[]) {
74
+ doLookup.set(rgOi.inventoryId, { id: rgOi.deliveryOrder.id, name: rgOi.deliveryOrder.name })
75
+ }
76
+ }
77
+
54
78
  // Flatten inventoryInfos for frontend
55
79
  const itemInfos = (returnOrder.orderInventories || [])
56
- .filter(orderInv => orderInv.type === 'RETURN_ORDER')
80
+ .filter(orderInv => orderInv.type === ORDER_INVENTORY_TYPE.RETURN_ORDER)
57
81
  .map(orderInv => {
58
82
  return {
59
83
  batchId: orderInv.batchId,
@@ -82,6 +106,7 @@ router.get(
82
106
  refNo2: orderInv.releaseGood.refNo2,
83
107
  refNo3: orderInv.releaseGood.refNo3
84
108
  },
109
+ deliveryOrder: (orderInv.inventory?.id && doLookup.get(orderInv.inventory.id)) || null,
85
110
  returnQty: orderInv.returnQty,
86
111
  remark: orderInv.remark,
87
112
  status: orderInv.status
@@ -90,7 +115,7 @@ router.get(
90
115
 
91
116
  // Putaway inventories (type !== RETURN_ORDER, created during putaway process)
92
117
  const putawayInventories = (returnOrder.orderInventories || [])
93
- .filter(orderInv => orderInv.type !== 'RETURN_ORDER')
118
+ .filter(orderInv => orderInv.type !== ORDER_INVENTORY_TYPE.RETURN_ORDER)
94
119
  .map(orderInv => {
95
120
  return {
96
121
  batchId: orderInv.batchId,