@things-factory/operato-hub 4.3.785 → 4.3.787

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.
@@ -31,7 +31,6 @@ api_1.restfulApiRouter.get('/v1/warehouse/get-return-order-details', middlewares
31
31
  'orderInventories.releaseGood',
32
32
  'orderInventories.product',
33
33
  'orderInventories.productDetail',
34
- 'orderInventories.deliveryOrder',
35
34
  'orderInventories.inventory',
36
35
  'orderInventories.inventory.location',
37
36
  'orderInventories.inventory.location.warehouse',
@@ -43,11 +42,32 @@ api_1.restfulApiRouter.get('/v1/warehouse/get-return-order-details', middlewares
43
42
  if (!returnOrder) {
44
43
  throw new error_util_1.ApiError('E04', 'return order');
45
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
+ }
46
66
  // Flatten inventoryInfos for frontend
47
67
  const itemInfos = (returnOrder.orderInventories || [])
48
- .filter(orderInv => orderInv.type === 'RETURN_ORDER')
68
+ .filter(orderInv => orderInv.type === sales_base_1.ORDER_INVENTORY_TYPE.RETURN_ORDER)
49
69
  .map(orderInv => {
50
- var _a, _b, _c, _d, _e, _f, _g;
70
+ var _a, _b, _c, _d, _e, _f, _g, _h;
51
71
  return {
52
72
  batchId: orderInv.batchId,
53
73
  refItemId: orderInv.refItemId,
@@ -75,9 +95,7 @@ api_1.restfulApiRouter.get('/v1/warehouse/get-return-order-details', middlewares
75
95
  refNo2: orderInv.releaseGood.refNo2,
76
96
  refNo3: orderInv.releaseGood.refNo3
77
97
  },
78
- deliveryOrder: orderInv.deliveryOrder
79
- ? { id: orderInv.deliveryOrder.id, name: orderInv.deliveryOrder.name }
80
- : null,
98
+ deliveryOrder: (((_h = orderInv.inventory) === null || _h === void 0 ? void 0 : _h.id) && doLookup.get(orderInv.inventory.id)) || null,
81
99
  returnQty: orderInv.returnQty,
82
100
  remark: orderInv.remark,
83
101
  status: orderInv.status
@@ -85,7 +103,7 @@ api_1.restfulApiRouter.get('/v1/warehouse/get-return-order-details', middlewares
85
103
  });
86
104
  // Putaway inventories (type !== RETURN_ORDER, created during putaway process)
87
105
  const putawayInventories = (returnOrder.orderInventories || [])
88
- .filter(orderInv => orderInv.type !== 'RETURN_ORDER')
106
+ .filter(orderInv => orderInv.type !== sales_base_1.ORDER_INVENTORY_TYPE.RETURN_ORDER)
89
107
  .map(orderInv => {
90
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;
91
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/operato-hub",
3
- "version": "4.3.785",
3
+ "version": "4.3.787",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -110,7 +110,7 @@
110
110
  "@things-factory/system-ui": "^4.3.767",
111
111
  "@things-factory/transport-base": "^4.3.767",
112
112
  "@things-factory/warehouse-base": "^4.3.784",
113
- "@things-factory/worksheet-base": "^4.3.784",
113
+ "@things-factory/worksheet-base": "^4.3.787",
114
114
  "cron-parser": "^4.7.0",
115
115
  "koa2-swagger-ui": "^5.0.2",
116
116
  "swagger-jsdoc": "^5.0.0",
@@ -123,5 +123,5 @@
123
123
  "resolutions": {
124
124
  "core-js": "^3.16.0"
125
125
  },
126
- "gitHead": "6f1673816e1fac2fae6ea707c6386a45936cba56"
126
+ "gitHead": "dad39e86be326a731ad345afea52bba594d11452"
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'
@@ -40,7 +40,6 @@ router.get(
40
40
  'orderInventories.releaseGood',
41
41
  'orderInventories.product',
42
42
  'orderInventories.productDetail',
43
- 'orderInventories.deliveryOrder',
44
43
  'orderInventories.inventory',
45
44
  'orderInventories.inventory.location',
46
45
  'orderInventories.inventory.location.warehouse',
@@ -52,9 +51,33 @@ router.get(
52
51
  if (!returnOrder) {
53
52
  throw new ApiError('E04', 'return order')
54
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
+
55
78
  // Flatten inventoryInfos for frontend
56
79
  const itemInfos = (returnOrder.orderInventories || [])
57
- .filter(orderInv => orderInv.type === 'RETURN_ORDER')
80
+ .filter(orderInv => orderInv.type === ORDER_INVENTORY_TYPE.RETURN_ORDER)
58
81
  .map(orderInv => {
59
82
  return {
60
83
  batchId: orderInv.batchId,
@@ -83,9 +106,7 @@ router.get(
83
106
  refNo2: orderInv.releaseGood.refNo2,
84
107
  refNo3: orderInv.releaseGood.refNo3
85
108
  },
86
- deliveryOrder: orderInv.deliveryOrder
87
- ? { id: orderInv.deliveryOrder.id, name: orderInv.deliveryOrder.name }
88
- : null,
109
+ deliveryOrder: (orderInv.inventory?.id && doLookup.get(orderInv.inventory.id)) || null,
89
110
  returnQty: orderInv.returnQty,
90
111
  remark: orderInv.remark,
91
112
  status: orderInv.status
@@ -94,7 +115,7 @@ router.get(
94
115
 
95
116
  // Putaway inventories (type !== RETURN_ORDER, created during putaway process)
96
117
  const putawayInventories = (returnOrder.orderInventories || [])
97
- .filter(orderInv => orderInv.type !== 'RETURN_ORDER')
118
+ .filter(orderInv => orderInv.type !== ORDER_INVENTORY_TYPE.RETURN_ORDER)
98
119
  .map(orderInv => {
99
120
  return {
100
121
  batchId: orderInv.batchId,