@things-factory/warehouse-base 4.3.671 → 4.3.673

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 (191) hide show
  1. package/dist-server/constants/adjustment-code.js +13 -0
  2. package/dist-server/constants/adjustment-code.js.map +1 -0
  3. package/dist-server/constants/index.js +23 -0
  4. package/dist-server/constants/index.js.map +1 -0
  5. package/dist-server/constants/inventory.js +74 -0
  6. package/dist-server/constants/inventory.js.map +1 -0
  7. package/dist-server/constants/location.js +19 -0
  8. package/dist-server/constants/location.js.map +1 -0
  9. package/dist-server/constants/pallet.js +13 -0
  10. package/dist-server/constants/pallet.js.map +1 -0
  11. package/dist-server/constants/rule-type.js +8 -0
  12. package/dist-server/constants/rule-type.js.map +1 -0
  13. package/dist-server/constants/tote.js +9 -0
  14. package/dist-server/constants/tote.js.map +1 -0
  15. package/dist-server/controllers/ecommerce/ecommerce-controller.js +125 -0
  16. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -0
  17. package/dist-server/controllers/ecommerce/index.js +22 -0
  18. package/dist-server/controllers/ecommerce/index.js.map +1 -0
  19. package/dist-server/controllers/ecommerce/pos-controller.js +65 -0
  20. package/dist-server/controllers/ecommerce/pos-controller.js.map +1 -0
  21. package/dist-server/controllers/ecommerce/powrup-controller.js +87 -0
  22. package/dist-server/controllers/ecommerce/powrup-controller.js.map +1 -0
  23. package/dist-server/controllers/ecommerce/sellercraft-controller.js +85 -0
  24. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -0
  25. package/dist-server/controllers/ecommerce/webspert-controller.js +131 -0
  26. package/dist-server/controllers/ecommerce/webspert-controller.js.map +1 -0
  27. package/dist-server/controllers/index.js +19 -0
  28. package/dist-server/controllers/index.js.map +1 -0
  29. package/dist-server/controllers/warehouse-controller.js +143 -0
  30. package/dist-server/controllers/warehouse-controller.js.map +1 -0
  31. package/dist-server/index.js +35 -0
  32. package/dist-server/index.js.map +1 -0
  33. package/dist-server/middlewares/index.js +1 -0
  34. package/dist-server/middlewares/index.js.map +1 -0
  35. package/dist-server/migrations/index.js +12 -0
  36. package/dist-server/migrations/index.js.map +1 -0
  37. package/dist-server/service/index.js +96 -0
  38. package/dist-server/service/index.js.map +1 -0
  39. package/dist-server/service/inventory/index.js +9 -0
  40. package/dist-server/service/inventory/index.js.map +1 -0
  41. package/dist-server/service/inventory/inventory-mutation.js +414 -0
  42. package/dist-server/service/inventory/inventory-mutation.js.map +1 -0
  43. package/dist-server/service/inventory/inventory-query.js +1211 -0
  44. package/dist-server/service/inventory/inventory-query.js.map +1 -0
  45. package/dist-server/service/inventory/inventory-types.js +478 -0
  46. package/dist-server/service/inventory/inventory-types.js.map +1 -0
  47. package/dist-server/service/inventory/inventory.js +569 -0
  48. package/dist-server/service/inventory/inventory.js.map +1 -0
  49. package/dist-server/service/inventory-change/index.js +9 -0
  50. package/dist-server/service/inventory-change/index.js.map +1 -0
  51. package/dist-server/service/inventory-change/inventory-change-mutation.js +1188 -0
  52. package/dist-server/service/inventory-change/inventory-change-mutation.js.map +1 -0
  53. package/dist-server/service/inventory-change/inventory-change-query.js +150 -0
  54. package/dist-server/service/inventory-change/inventory-change-query.js.map +1 -0
  55. package/dist-server/service/inventory-change/inventory-change-types.js +73 -0
  56. package/dist-server/service/inventory-change/inventory-change-types.js.map +1 -0
  57. package/dist-server/service/inventory-change/inventory-change.js +225 -0
  58. package/dist-server/service/inventory-change/inventory-change.js.map +1 -0
  59. package/dist-server/service/inventory-history/index.js +9 -0
  60. package/dist-server/service/inventory-history/index.js.map +1 -0
  61. package/dist-server/service/inventory-history/inventory-history-mutation.js +121 -0
  62. package/dist-server/service/inventory-history/inventory-history-mutation.js.map +1 -0
  63. package/dist-server/service/inventory-history/inventory-history-query.js +1694 -0
  64. package/dist-server/service/inventory-history/inventory-history-query.js.map +1 -0
  65. package/dist-server/service/inventory-history/inventory-history-types.js +626 -0
  66. package/dist-server/service/inventory-history/inventory-history-types.js.map +1 -0
  67. package/dist-server/service/inventory-history/inventory-history.js +238 -0
  68. package/dist-server/service/inventory-history/inventory-history.js.map +1 -0
  69. package/dist-server/service/inventory-item/index.js +9 -0
  70. package/dist-server/service/inventory-item/index.js.map +1 -0
  71. package/dist-server/service/inventory-item/inventory-item-mutation.js +274 -0
  72. package/dist-server/service/inventory-item/inventory-item-mutation.js.map +1 -0
  73. package/dist-server/service/inventory-item/inventory-item-query.js +265 -0
  74. package/dist-server/service/inventory-item/inventory-item-query.js.map +1 -0
  75. package/dist-server/service/inventory-item/inventory-item-type.js +127 -0
  76. package/dist-server/service/inventory-item/inventory-item-type.js.map +1 -0
  77. package/dist-server/service/inventory-item/inventory-item.js +146 -0
  78. package/dist-server/service/inventory-item/inventory-item.js.map +1 -0
  79. package/dist-server/service/inventory-item-change/index.js +9 -0
  80. package/dist-server/service/inventory-item-change/index.js.map +1 -0
  81. package/dist-server/service/inventory-item-change/inventory-item-change-mutation.js +121 -0
  82. package/dist-server/service/inventory-item-change/inventory-item-change-mutation.js.map +1 -0
  83. package/dist-server/service/inventory-item-change/inventory-item-change-query.js +87 -0
  84. package/dist-server/service/inventory-item-change/inventory-item-change-query.js.map +1 -0
  85. package/dist-server/service/inventory-item-change/inventory-item-change-type.js +107 -0
  86. package/dist-server/service/inventory-item-change/inventory-item-change-type.js.map +1 -0
  87. package/dist-server/service/inventory-item-change/inventory-item-change.js +110 -0
  88. package/dist-server/service/inventory-item-change/inventory-item-change.js.map +1 -0
  89. package/dist-server/service/inventory-product/index.js +9 -0
  90. package/dist-server/service/inventory-product/index.js.map +1 -0
  91. package/dist-server/service/inventory-product/inventory-product-mutation.js +120 -0
  92. package/dist-server/service/inventory-product/inventory-product-mutation.js.map +1 -0
  93. package/dist-server/service/inventory-product/inventory-product-query.js +87 -0
  94. package/dist-server/service/inventory-product/inventory-product-query.js.map +1 -0
  95. package/dist-server/service/inventory-product/inventory-product-type.js +95 -0
  96. package/dist-server/service/inventory-product/inventory-product-type.js.map +1 -0
  97. package/dist-server/service/inventory-product/inventory-product.js +112 -0
  98. package/dist-server/service/inventory-product/inventory-product.js.map +1 -0
  99. package/dist-server/service/location/index.js +9 -0
  100. package/dist-server/service/location/index.js.map +1 -0
  101. package/dist-server/service/location/location-mutation.js +279 -0
  102. package/dist-server/service/location/location-mutation.js.map +1 -0
  103. package/dist-server/service/location/location-query.js +321 -0
  104. package/dist-server/service/location/location-query.js.map +1 -0
  105. package/dist-server/service/location/location-types.js +296 -0
  106. package/dist-server/service/location/location-types.js.map +1 -0
  107. package/dist-server/service/location/location.js +146 -0
  108. package/dist-server/service/location/location.js.map +1 -0
  109. package/dist-server/service/movement/index.js +9 -0
  110. package/dist-server/service/movement/index.js.map +1 -0
  111. package/dist-server/service/movement/movement-mutation.js +80 -0
  112. package/dist-server/service/movement/movement-mutation.js.map +1 -0
  113. package/dist-server/service/movement/movement-query.js +286 -0
  114. package/dist-server/service/movement/movement-query.js.map +1 -0
  115. package/dist-server/service/movement/movement-types.js +117 -0
  116. package/dist-server/service/movement/movement-types.js.map +1 -0
  117. package/dist-server/service/movement/movement.js +101 -0
  118. package/dist-server/service/movement/movement.js.map +1 -0
  119. package/dist-server/service/pallet/index.js +9 -0
  120. package/dist-server/service/pallet/index.js.map +1 -0
  121. package/dist-server/service/pallet/pallet-mutation.js +194 -0
  122. package/dist-server/service/pallet/pallet-mutation.js.map +1 -0
  123. package/dist-server/service/pallet/pallet-query.js +164 -0
  124. package/dist-server/service/pallet/pallet-query.js.map +1 -0
  125. package/dist-server/service/pallet/pallet-types.js +109 -0
  126. package/dist-server/service/pallet/pallet-types.js.map +1 -0
  127. package/dist-server/service/pallet/pallet.js +112 -0
  128. package/dist-server/service/pallet/pallet.js.map +1 -0
  129. package/dist-server/service/pallet-count/index.js +9 -0
  130. package/dist-server/service/pallet-count/index.js.map +1 -0
  131. package/dist-server/service/pallet-count/pallet-count-mutation.js +153 -0
  132. package/dist-server/service/pallet-count/pallet-count-mutation.js.map +1 -0
  133. package/dist-server/service/pallet-count/pallet-count-query.js +86 -0
  134. package/dist-server/service/pallet-count/pallet-count-query.js.map +1 -0
  135. package/dist-server/service/pallet-count/pallet-count-types.js +65 -0
  136. package/dist-server/service/pallet-count/pallet-count-types.js.map +1 -0
  137. package/dist-server/service/pallet-count/pallet-count.js +89 -0
  138. package/dist-server/service/pallet-count/pallet-count.js.map +1 -0
  139. package/dist-server/service/pallet-history/index.js +9 -0
  140. package/dist-server/service/pallet-history/index.js.map +1 -0
  141. package/dist-server/service/pallet-history/pallet-history-mutation.js +120 -0
  142. package/dist-server/service/pallet-history/pallet-history-mutation.js.map +1 -0
  143. package/dist-server/service/pallet-history/pallet-history-query.js +87 -0
  144. package/dist-server/service/pallet-history/pallet-history-query.js.map +1 -0
  145. package/dist-server/service/pallet-history/pallet-history-types.js +65 -0
  146. package/dist-server/service/pallet-history/pallet-history-types.js.map +1 -0
  147. package/dist-server/service/pallet-history/pallet-history.js +107 -0
  148. package/dist-server/service/pallet-history/pallet-history.js.map +1 -0
  149. package/dist-server/service/product-detail-stock/index.js +9 -0
  150. package/dist-server/service/product-detail-stock/index.js.map +1 -0
  151. package/dist-server/service/product-detail-stock/product-detail-stock-mutation.js +120 -0
  152. package/dist-server/service/product-detail-stock/product-detail-stock-mutation.js.map +1 -0
  153. package/dist-server/service/product-detail-stock/product-detail-stock-query.js +66 -0
  154. package/dist-server/service/product-detail-stock/product-detail-stock-query.js.map +1 -0
  155. package/dist-server/service/product-detail-stock/product-detail-stock-types.js +57 -0
  156. package/dist-server/service/product-detail-stock/product-detail-stock-types.js.map +1 -0
  157. package/dist-server/service/product-detail-stock/product-detail-stock.js +90 -0
  158. package/dist-server/service/product-detail-stock/product-detail-stock.js.map +1 -0
  159. package/dist-server/service/reduced-inventory-history/index.js +6 -0
  160. package/dist-server/service/reduced-inventory-history/index.js.map +1 -0
  161. package/dist-server/service/reduced-inventory-history/reduced-inventory-history.js +133 -0
  162. package/dist-server/service/reduced-inventory-history/reduced-inventory-history.js.map +1 -0
  163. package/dist-server/service/tote/index.js +9 -0
  164. package/dist-server/service/tote/index.js.map +1 -0
  165. package/dist-server/service/tote/tote-mutation.js +192 -0
  166. package/dist-server/service/tote/tote-mutation.js.map +1 -0
  167. package/dist-server/service/tote/tote-query.js +162 -0
  168. package/dist-server/service/tote/tote-query.js.map +1 -0
  169. package/dist-server/service/tote/tote-types.js +75 -0
  170. package/dist-server/service/tote/tote-types.js.map +1 -0
  171. package/dist-server/service/tote/tote.js +98 -0
  172. package/dist-server/service/tote/tote.js.map +1 -0
  173. package/dist-server/service/warehouse/index.js +9 -0
  174. package/dist-server/service/warehouse/index.js.map +1 -0
  175. package/dist-server/service/warehouse/warehouse-mutation.js +148 -0
  176. package/dist-server/service/warehouse/warehouse-mutation.js.map +1 -0
  177. package/dist-server/service/warehouse/warehouse-query.js +91 -0
  178. package/dist-server/service/warehouse/warehouse-query.js.map +1 -0
  179. package/dist-server/service/warehouse/warehouse-types.js +82 -0
  180. package/dist-server/service/warehouse/warehouse-types.js.map +1 -0
  181. package/dist-server/service/warehouse/warehouse.js +114 -0
  182. package/dist-server/service/warehouse/warehouse.js.map +1 -0
  183. package/dist-server/utils/datetime-util.js +61 -0
  184. package/dist-server/utils/datetime-util.js.map +1 -0
  185. package/dist-server/utils/index.js +20 -0
  186. package/dist-server/utils/index.js.map +1 -0
  187. package/dist-server/utils/inventory-no-generator.js +17 -0
  188. package/dist-server/utils/inventory-no-generator.js.map +1 -0
  189. package/dist-server/utils/inventory-util.js +413 -0
  190. package/dist-server/utils/inventory-util.js.map +1 -0
  191. package/package.json +10 -10
@@ -0,0 +1,413 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInventoriesByStrategy = exports.getProductBundleInventory = exports.checkPalletIdenticallity = exports.checkPalletDuplication = exports.switchLocationStatus = exports.generateInventoryHistory = exports.InventoryUtil = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const product_base_1 = require("@things-factory/product-base");
6
+ const constants_1 = require("../constants");
7
+ const service_1 = require("../service");
8
+ const utils_1 = require("../utils");
9
+ class InventoryUtil {
10
+ constructor(trxMgr, domain, user) {
11
+ this.ERROR_MSG = {
12
+ FIND: {
13
+ NO_RESULT: (condition) => `There's no results matched with condition ${condition}`,
14
+ NO_CHILD_RESULT: (condition) => `There's no child result matched with condition ${condition}`,
15
+ NOT_MATCH: (source, target) => `Unable to find matching ${target} using ${source}`
16
+ },
17
+ ORDER_ITEM: {
18
+ NO_MATCHING_RESULT: (condition, condition2) => `Current item with ${condition} (${condition2}) not belong to this order`,
19
+ EXCESS_QTY: (condition, condition2, condition3) => `Excess qty is scanned for item ${condition}, ${condition2} (${condition3})`
20
+ },
21
+ PRODUCT: {
22
+ NO_MATCHING_RESULT: (condition, condition2) => `Order packing type and packing size not match with product master, ${condition} (${condition2})`,
23
+ BARCODE_NOT_EXIST: (condition, condition2, condition3) => `Product barcode - ${condition} with ${condition2} ${condition3}, not exist in master data.`
24
+ },
25
+ CREATE: {
26
+ ID_EXISTS: 'Target has ID already',
27
+ EMPTY_CREATOR: 'Cannot create without creator',
28
+ EMPTY_UPDATER: 'Cannot create without updater'
29
+ },
30
+ UPDATE: {
31
+ ID_NOT_EXISTS: `Target doesn't have ID`,
32
+ EMPTY_UPDATER: 'Cannot update without updater'
33
+ },
34
+ VALIDITY: {
35
+ UNEXPECTED_FIELD_VALUE: (field, expectedValue, actualValue) => `Expected ${field} value is ${expectedValue} but got ${actualValue}`,
36
+ DUPLICATED: (field, value) => `There is duplicated ${field} value (${value})`,
37
+ CANT_PROCEED_STEP_BY: (step, reason) => `Can't proceed to ${step} because ${reason}`
38
+ }
39
+ };
40
+ this.trxMgr = trxMgr;
41
+ this.domain = domain;
42
+ this.user = user;
43
+ }
44
+ async createInventory(inventory) {
45
+ inventory = this.setStamp(inventory);
46
+ return await this.trxMgr.getRepository(service_1.Inventory).save(inventory);
47
+ }
48
+ /**
49
+ * @summary Update inventory record
50
+ * @description It will update inventory after set a stamp (domain, updater)
51
+ * The special point of this function is that this changes won't generate inventory history
52
+ * If you want to generate inventory history automatically you would better to use transactionInventory function
53
+ */
54
+ async updateInventory(inventory) {
55
+ if (!inventory.id)
56
+ throw new Error(this.ERROR_MSG.UPDATE.ID_NOT_EXISTS);
57
+ inventory = this.setStamp(inventory);
58
+ return await this.trxMgr.getRepository(service_1.Inventory).save(inventory);
59
+ }
60
+ /**
61
+ * @summary Do transaction on inventory record
62
+ * @description It will update inventory after set a temp (domain, updater)
63
+ * and then generate inventory history based on current changes
64
+ */
65
+ async transactionInventory(inventory, refOrder, changedQty, changedUom, transactionType) {
66
+ if (inventory.id) {
67
+ inventory = await this.updateInventory(inventory);
68
+ }
69
+ else {
70
+ inventory = await this.createInventory(inventory);
71
+ }
72
+ await generateInventoryHistory(inventory, refOrder, transactionType, changedQty, changedUom, this.user, this.trxMgr);
73
+ return inventory;
74
+ }
75
+ /**
76
+ * @summary set common stamp like domain, creator, updater
77
+ * @description Set common stamp to passed record
78
+ * If it doesn't have id it will handle it as creating one
79
+ * If it has id it will handle it as updating one
80
+ */
81
+ setStamp(record) {
82
+ if (!record.domain)
83
+ record.domain = this.domain;
84
+ if (!record.id && !record.creator)
85
+ record.creator = this.user;
86
+ if (!record.updater)
87
+ record.updater = this.user;
88
+ return record;
89
+ }
90
+ }
91
+ exports.InventoryUtil = InventoryUtil;
92
+ /**
93
+ * @description It will insert new record into inventory histories table.
94
+ * seq will be calculated based on number of records for one specific pallet id (provided by inventory object)
95
+ */
96
+ async function generateInventoryHistory(inventory, refOrder, transactionType, qty, uomValue, user, trxMgr) {
97
+ const invHistoryRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(service_1.InventoryHistory)) || (0, typeorm_1.getRepository)(service_1.InventoryHistory);
98
+ const invRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(service_1.Inventory)) || (0, typeorm_1.getRepository)(service_1.Inventory);
99
+ if (!(inventory === null || inventory === void 0 ? void 0 : inventory.id))
100
+ throw new Error(`Can't find out ID of inventory.`);
101
+ inventory = await invRepo.findOne({
102
+ where: { id: inventory.id },
103
+ relations: ['domain', 'bizplace', 'product', 'warehouse', 'location', 'productDetail', 'reusablePallet']
104
+ });
105
+ const domain = inventory.domain;
106
+ const location = inventory.location;
107
+ const lastInvHistory = await invHistoryRepo.findOne({
108
+ where: {
109
+ domain: inventory.domain,
110
+ palletId: inventory.palletId
111
+ },
112
+ order: {
113
+ seq: 'DESC'
114
+ }
115
+ });
116
+ let lastSeq;
117
+ let res;
118
+ let inventoryHistoryFields = {
119
+ refOrderId: (refOrder === null || refOrder === void 0 ? void 0 : refOrder.id) || null,
120
+ orderNo: (refOrder === null || refOrder === void 0 ? void 0 : refOrder.name) || null,
121
+ orderRefNo: (refOrder === null || refOrder === void 0 ? void 0 : refOrder.refNo) || null,
122
+ uom: inventory === null || inventory === void 0 ? void 0 : inventory.uom,
123
+ creator: user,
124
+ updater: user,
125
+ domain: inventory === null || inventory === void 0 ? void 0 : inventory.domain,
126
+ bizplace: inventory === null || inventory === void 0 ? void 0 : inventory.bizplace,
127
+ reusablePallet: inventory === null || inventory === void 0 ? void 0 : inventory.reusablePallet,
128
+ inventory: inventory,
129
+ product: inventory === null || inventory === void 0 ? void 0 : inventory.product,
130
+ productDetail: inventory === null || inventory === void 0 ? void 0 : inventory.productDetail,
131
+ warehouse: inventory === null || inventory === void 0 ? void 0 : inventory.warehouse,
132
+ location: inventory === null || inventory === void 0 ? void 0 : inventory.location,
133
+ palletId: inventory === null || inventory === void 0 ? void 0 : inventory.palletId,
134
+ batchId: inventory === null || inventory === void 0 ? void 0 : inventory.batchId,
135
+ zone: inventory === null || inventory === void 0 ? void 0 : inventory.zone,
136
+ packingType: inventory === null || inventory === void 0 ? void 0 : inventory.packingType,
137
+ description: inventory === null || inventory === void 0 ? void 0 : inventory.description,
138
+ expirationDate: inventory === null || inventory === void 0 ? void 0 : inventory.expirationDate,
139
+ unitCost: inventory === null || inventory === void 0 ? void 0 : inventory.unitCost,
140
+ batchIdRef: inventory === null || inventory === void 0 ? void 0 : inventory.batchIdRef,
141
+ cartonId: inventory === null || inventory === void 0 ? void 0 : inventory.cartonId,
142
+ manufactureYear: inventory === null || inventory === void 0 ? void 0 : inventory.manufactureYear,
143
+ packingSize: inventory === null || inventory === void 0 ? void 0 : inventory.packingSize,
144
+ manufactureDate: inventory === null || inventory === void 0 ? void 0 : inventory.manufactureDate,
145
+ status: inventory.status
146
+ };
147
+ if (!lastInvHistory) {
148
+ res = await invHistoryRepo
149
+ .createQueryBuilder()
150
+ .insert()
151
+ .into(service_1.InventoryHistory)
152
+ .values([
153
+ Object.assign(Object.assign({}, inventoryHistoryFields), { name: utils_1.InventoryNoGenerator.inventoryHistoryName(), status: inventory.status, transactionType,
154
+ qty, openingQty: 0, uomValue: Math.trunc(uomValue * 1000) / 1000, openingUomValue: 0, seq: 0 })
155
+ ])
156
+ .returning('*')
157
+ .execute();
158
+ }
159
+ else {
160
+ if (transactionType == 'PICKING' || transactionType == 'UNLOADING') {
161
+ const findSameOrderHistory = await invHistoryRepo.find({
162
+ domain: inventory.domain,
163
+ palletId: inventory.palletId,
164
+ refOrderId: refOrder.id
165
+ });
166
+ if (findSameOrderHistory.length > 0) {
167
+ let prevTotalQty = 0;
168
+ let prevTotalUomValue = 0;
169
+ for (let oh of findSameOrderHistory) {
170
+ prevTotalQty += oh.qty;
171
+ prevTotalUomValue += oh.uomValue;
172
+ }
173
+ qty -= prevTotalQty;
174
+ uomValue -= prevTotalUomValue;
175
+ }
176
+ }
177
+ res = await invHistoryRepo
178
+ .createQueryBuilder()
179
+ .insert()
180
+ .into(service_1.InventoryHistory)
181
+ .values([
182
+ Object.assign(Object.assign({}, inventoryHistoryFields), { name: utils_1.InventoryNoGenerator.inventoryHistoryName(), transactionType,
183
+ qty, openingQty: () => `TRUNC((select opening_qty::numeric from inventory_histories where pallet_id = '${inventory.palletId}' and domain_id = '${domain.id}' order by seq desc limit 1) + (select qty::numeric from inventory_histories where pallet_id = '${inventory.palletId}' and domain_id = '${domain.id}' order by seq desc limit 1), 3)`, uomValue: Math.trunc(uomValue * 1000) / 1000, openingUomValue: () => `TRUNC((select opening_uom_value::numeric from inventory_histories where pallet_id = '${inventory.palletId}' and domain_id = '${domain.id}' order by seq desc limit 1) + (select uom_value::numeric from inventory_histories where pallet_id = '${inventory.palletId}' and domain_id = '${domain.id}' order by seq desc limit 1), 3)`, seq: () => `(select seq from inventory_histories where pallet_id = '${inventory.palletId}' and domain_id = '${domain.id}' order by seq desc limit 1) + 1` })
184
+ ])
185
+ .returning('*')
186
+ .execute();
187
+ }
188
+ let newInventoryHistory = res.generatedMaps[0];
189
+ lastSeq = newInventoryHistory.seq;
190
+ if (newInventoryHistory.openingQty + qty == 0 &&
191
+ transactionType != 'UNDO_UNLOADING' &&
192
+ transactionType != 'PACKING' &&
193
+ transactionType != 'LOADING' &&
194
+ transactionType != 'SORTING') {
195
+ let terminatedRes = await invHistoryRepo
196
+ .createQueryBuilder()
197
+ .insert()
198
+ .into(service_1.InventoryHistory)
199
+ .values([
200
+ Object.assign(Object.assign({}, inventoryHistoryFields), { name: utils_1.InventoryNoGenerator.inventoryHistoryName(), status: constants_1.INVENTORY_STATUS.TERMINATED, transactionType: constants_1.INVENTORY_TRANSACTION_TYPE.TERMINATED, qty: 0, openingQty: 0, uomValue: 0, openingUomValue: 0, seq: () => `(select seq from inventory_histories where inventory_id = '${inventory.id}' order by seq desc limit 1) + 1` })
201
+ ])
202
+ .returning('seq')
203
+ .execute();
204
+ lastSeq = terminatedRes.generatedMaps[0].seq;
205
+ inventory.status = constants_1.INVENTORY_STATUS.TERMINATED;
206
+ }
207
+ await invRepo.update(inventory.id, { lastSeq, updater: user, status: inventory.status });
208
+ await switchLocationStatus(domain, location, user, trxMgr);
209
+ return newInventoryHistory;
210
+ }
211
+ exports.generateInventoryHistory = generateInventoryHistory;
212
+ /**
213
+ * @description: Check location emptiness and update status of location
214
+ * @param domain
215
+ * @param location
216
+ * @param updater
217
+ * @param trxMgr
218
+ */
219
+ async function switchLocationStatus(domain, location, updater, trxMgr) {
220
+ const invRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(service_1.Inventory)) || (0, typeorm_1.getRepository)(service_1.Inventory);
221
+ const locationRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(service_1.Location)) || (0, typeorm_1.getRepository)(service_1.Location);
222
+ const allocatedItemsCnt = await invRepo.count({
223
+ domain,
224
+ status: constants_1.INVENTORY_STATUS.STORED,
225
+ location
226
+ });
227
+ if (!allocatedItemsCnt && location.status !== constants_1.LOCATION_STATUS.EMPTY) {
228
+ location = await locationRepo.save(Object.assign(Object.assign({}, location), { status: constants_1.LOCATION_STATUS.EMPTY, updater }));
229
+ }
230
+ else if (allocatedItemsCnt && location.status === constants_1.LOCATION_STATUS.EMPTY) {
231
+ location = await locationRepo.save(Object.assign(Object.assign({}, location), { status: constants_1.LOCATION_STATUS.OCCUPIED, updater }));
232
+ }
233
+ return location;
234
+ }
235
+ exports.switchLocationStatus = switchLocationStatus;
236
+ async function checkPalletDuplication(domain, bizplace, palletId, trxMgr) {
237
+ const invRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(service_1.Inventory)) || (0, typeorm_1.getRepository)(service_1.Inventory);
238
+ const duplicatedPalletCnt = await invRepo.count({
239
+ domain,
240
+ bizplace,
241
+ palletId
242
+ });
243
+ return Boolean(duplicatedPalletCnt);
244
+ }
245
+ exports.checkPalletDuplication = checkPalletDuplication;
246
+ /**
247
+ * @description Check whether inventory is same with passed conditions
248
+ * @param {Domain} domain
249
+ * @param {Bizplace} bizplace
250
+ * @param {String} palletId
251
+ * @param {String} batchId
252
+ * @param {String | Product} product
253
+ * @param {String} packingType
254
+ * @param {EntityManager} trxMgr
255
+ */
256
+ async function checkPalletIdenticallity(domain, bizplace, palletId, batchId, product, packingType, trxMgr) {
257
+ var _a;
258
+ const productRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(product_base_1.Product)) || (0, typeorm_1.getRepository)(product_base_1.Product);
259
+ const invRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(service_1.Inventory)) || (0, typeorm_1.getRepository)(service_1.Inventory);
260
+ if (typeof product === 'string') {
261
+ const foundProduct = await productRepo.findOne(product);
262
+ if (!foundProduct)
263
+ throw new Error(`Failed to find product with ${product}`);
264
+ product = foundProduct;
265
+ }
266
+ const inv = await invRepo.findOne({
267
+ where: { domain, bizplace, palletId },
268
+ relations: ['product']
269
+ });
270
+ if (batchId !== inv.batchId)
271
+ return { identicallity: false, errorMessage: `Batch ID is not matched with ${batchId}` };
272
+ if ((product === null || product === void 0 ? void 0 : product.id) !== ((_a = inv === null || inv === void 0 ? void 0 : inv.product) === null || _a === void 0 ? void 0 : _a.id))
273
+ return { identicallity: false, errorMessage: `Product is not matched with ${product.name}` };
274
+ if (packingType !== inv.packingType)
275
+ return { identicallity: false, errorMessage: `Packing Type is not matched with ${packingType}` };
276
+ return { identicallity: true };
277
+ }
278
+ exports.checkPalletIdenticallity = checkPalletIdenticallity;
279
+ /**
280
+ * @description Check whether inventory is same with passed conditions
281
+ * @param {Domain} domain
282
+ * @param {Domain} productOwnerDomain
283
+ * @param {OrderProduct} bizplace *
284
+ * @param {EntityManager} trxMgr
285
+ */
286
+ async function getProductBundleInventory(domain, productOwnerDomain, orderProducts, trxMgr) {
287
+ let orderProductsJson = JSON.stringify(orderProducts.map(itm => {
288
+ return {
289
+ sku: itm.product.sku,
290
+ product_id: itm.product.id,
291
+ packing_type: itm.packingType,
292
+ packing_size: itm.packingSize,
293
+ uom: itm.uom
294
+ };
295
+ }) || []);
296
+ const result = await trxMgr.query(`
297
+ select product_bundle_id, sku, name, min(available_qty) as qty from (
298
+ select
299
+ pb.sku, pb.name, pbs.product_bundle_id, pbs.bundle_qty, pd.product_id, pd.packing_type, pd.packing_size, pd.uom,
300
+ floor(coalesce(sum(inv.qty - coalesce(inv.locked_qty,0)),0)/pbs.bundle_qty) as available_qty,
301
+ floor(coalesce(sum(inv.uom_value - coalesce(inv.locked_uom_value,0)),0)/pbs.bundle_qty) as available_uom_value
302
+ from (
303
+ select pb.id, pb.sku, pb.name
304
+ from json_populate_recordset(NULL::order_products,'${orderProductsJson}') src
305
+ inner join product_details pd ON src.product_id = pd.product_id and src.packing_type = pd.packing_type and src.packing_size = pd.packing_size and src.uom = pd.uom
306
+ inner join product_bundle_settings pbs on pbs.product_detail_id = pd.id
307
+ inner join product_bundles pb on pb.id = pbs.product_bundle_id and pb.status = 'ACTIVATED'
308
+ where pb.domain_id = $1
309
+ group by pb.id, pb.sku, pb.name
310
+ ) pb
311
+ inner join product_bundle_settings pbs on pbs.product_bundle_id = pb.id
312
+ inner join product_details pd on pd.id = pbs.product_detail_id
313
+ left join inventories inv on ((inv.status <> 'TERMINATED' and (inv.qty - coalesce(inv.locked_qty,0)) > 0) or (inv.status = 'TERMINATED' and (inv.qty - coalesce(inv.locked_qty,0)) = 0)) and inv.product_id = pd.product_id and inv.packing_type = pd.packing_type and inv.packing_size = pd.packing_size and inv.uom = pd.uom
314
+ where inv.domain_id = $2
315
+ group by pb.sku, pb.name, pbs.product_bundle_id, pbs.bundle_qty, pd.product_id, pd.packing_type, pd.packing_size, pd.uom
316
+ ) foo group by product_bundle_id, sku, name
317
+ `, [productOwnerDomain.id, domain.id]);
318
+ return result;
319
+ }
320
+ exports.getProductBundleInventory = getProductBundleInventory;
321
+ /**
322
+ * @description This function will return multiple products
323
+ * and it is different with @inventoriesByStrategy that returns
324
+ * inventories for one product only
325
+ * @param {string} bizplaceId
326
+ * @param {string} worksheetId
327
+ * @param {any[]} orderProducts
328
+ * @param {string} pickingStrategy
329
+ * @param {[Object]} locationSortingRules
330
+ * @param {EntityManager} trxMgr
331
+ * @returns inventories for multiple products
332
+ */
333
+ async function getInventoriesByStrategy(domainId, bizplaceId, worksheetId, orderProducts, locationSortingRules, trxMgr) {
334
+ let orderProductsJSON = JSON.stringify(orderProducts);
335
+ let locationSorting = (locationSortingRules || [])
336
+ .map((rule) => {
337
+ return `l.${rule.name}${rule.descOrder ? 'DESC' : ''}`;
338
+ })
339
+ .join(', ');
340
+ if (locationSorting === '')
341
+ locationSorting = 'l.name';
342
+ await trxMgr.query(`
343
+ CREATE TEMP TABLE temp_op2(
344
+ "productId" VARCHAR(50),
345
+ "batchId" VARCHAR(50),
346
+ "packingType" VARCHAR(50),
347
+ "packingSize" INT,
348
+ "uom" VARCHAR(10),
349
+ "releaseQty" INT,
350
+ "pickingStrategy" VARCHAR(25),
351
+ "orderProductId" VARCHAR(50)
352
+ );
353
+ `);
354
+ await trxMgr.query(`
355
+ INSERT INTO temp_op2
356
+ SELECT "productId", "batchId", "packingType", "packingSize", "uom", "releaseQty", "pickingStrategy", "orderProductId"
357
+ FROM JSON_POPULATE_RECORDSET(NULL::temp_op2, $1) js
358
+ `, [orderProductsJSON]);
359
+ await trxMgr.query(`
360
+ CREATE TEMP TABLE acc_oi2 AS (
361
+ SELECT oi.inventory_id, SUM(oi.release_qty) AS total_release_qty, SUM(oi.release_uom_value) AS total_release_uom_value
362
+ FROM order_inventories oi
363
+ WHERE oi.status IN ('PENDING','PENDING_RECEIVE','PENDING_WORKSHEET','PENDING_SPLIT')
364
+ AND oi.bizplace_id = $1
365
+ AND oi.inventory_id NOTNULL
366
+ AND oi.ref_worksheet_id != $2
367
+ GROUP BY oi.inventory_id
368
+ )
369
+ `, [bizplaceId, worksheetId]);
370
+ // get inventories
371
+ let inventories = await trxMgr.query(`
372
+ SELECT
373
+ i.id,
374
+ op."productId",
375
+ op."batchId",
376
+ i.qty - COALESCE(i.locked_qty,0) - COALESCE(foo.total_release_qty,0) AS "remainQty",
377
+ i.uom_value - COALESCE(i.locked_uom_value,0) - COALESCE(foo.total_release_uom_value,0) AS "remainUomValue",
378
+ op."packingType",
379
+ op."packingSize",
380
+ op."uom",
381
+ op."orderProductId",
382
+ ROW_NUMBER() OVER (
383
+ PARTITION BY op."productId", op."batchId", op."packingType", op."packingSize", op."uom"
384
+ ORDER BY
385
+ CASE WHEN op."pickingStrategy" = 'FIFO' THEN i.created_at END,
386
+ CASE WHEN op."pickingStrategy" = 'FEFO' THEN i.expiration_date END,
387
+ CASE WHEN op."pickingStrategy" = 'LIFO' THEN i.created_at END DESC,
388
+ CASE WHEN op."pickingStrategy" = 'FMFO' THEN i.manufacture_date END,
389
+ ${locationSorting}
390
+ ) AS rn
391
+ FROM inventories i
392
+ INNER JOIN locations l ON i.location_id = l.id
393
+ INNER JOIN products p ON p.id = i.product_id
394
+ AND l.TYPE NOT IN ($1, $2)
395
+ INNER JOIN temp_op2 op ON i.product_id = op."productId"::uuid
396
+ AND i.batch_id = op."batchId"
397
+ AND i.packing_type = op."packingType"
398
+ AND i.packing_size = op."packingSize"
399
+ LEFT JOIN acc_oi2 foo ON i.id = foo.inventory_id
400
+ WHERE i.domain_id = $3
401
+ AND i.bizplace_id = $4
402
+ AND i.status = $5
403
+ AND i.obsolete = false
404
+ AND i.transfer_qty <= 0
405
+ AND i.transfer_uom_value <= 0
406
+ AND case when i.expiration_date is not null and p.min_outbound_shelf_life is not null then CURRENT_DATE < i.expiration_date - p.min_outbound_shelf_life else true end
407
+ ORDER BY op."productId", rn
408
+ `, [constants_1.LOCATION_TYPE.QUARANTINE, constants_1.LOCATION_TYPE.RESERVE, domainId, bizplaceId, constants_1.INVENTORY_STATUS.STORED]);
409
+ await trxMgr.query('DROP TABLE temp_op2, acc_oi2');
410
+ return inventories;
411
+ }
412
+ exports.getInventoriesByStrategy = getInventoriesByStrategy;
413
+ //# sourceMappingURL=inventory-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-util.js","sourceRoot":"","sources":["../../server/utils/inventory-util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/warehouse-base",
3
- "version": "4.3.671",
3
+ "version": "4.3.673",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -23,14 +23,14 @@
23
23
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
24
24
  },
25
25
  "dependencies": {
26
- "@things-factory/biz-base": "^4.3.671",
27
- "@things-factory/id-rule-base": "^4.3.671",
28
- "@things-factory/integration-accounting": "^4.3.671",
29
- "@things-factory/integration-powrup": "^4.3.671",
30
- "@things-factory/integration-sellercraft": "^4.3.671",
31
- "@things-factory/marketplace-base": "^4.3.671",
32
- "@things-factory/product-base": "^4.3.671",
33
- "@things-factory/setting-base": "^4.3.671"
26
+ "@things-factory/biz-base": "^4.3.673",
27
+ "@things-factory/id-rule-base": "^4.3.673",
28
+ "@things-factory/integration-accounting": "^4.3.673",
29
+ "@things-factory/integration-powrup": "^4.3.673",
30
+ "@things-factory/integration-sellercraft": "^4.3.673",
31
+ "@things-factory/marketplace-base": "^4.3.673",
32
+ "@things-factory/product-base": "^4.3.673",
33
+ "@things-factory/setting-base": "^4.3.673"
34
34
  },
35
- "gitHead": "ef524cb207378186ec71917d9a8546363d4300b2"
35
+ "gitHead": "d22f985380f3af2ebc0f81ea8bec478ba00b4777"
36
36
  }