@things-factory/warehouse-base 4.3.76 → 4.3.79-alpha.1

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 (26) hide show
  1. package/dist-server/service/inventory/inventory-query.js +69 -167
  2. package/dist-server/service/inventory/inventory-query.js.map +1 -1
  3. package/dist-server/service/inventory/inventory.js +39 -35
  4. package/dist-server/service/inventory/inventory.js.map +1 -1
  5. package/dist-server/service/inventory-change/inventory-change-mutation.js +209 -203
  6. package/dist-server/service/inventory-change/inventory-change-mutation.js.map +1 -1
  7. package/dist-server/service/inventory-item/inventory-item.js +8 -3
  8. package/dist-server/service/inventory-item/inventory-item.js.map +1 -1
  9. package/dist-server/service/inventory-product/inventory-product.js +8 -3
  10. package/dist-server/service/inventory-product/inventory-product.js.map +1 -1
  11. package/dist-server/service/location/location-query.js +1 -1
  12. package/dist-server/service/location/location-query.js.map +1 -1
  13. package/dist-server/service/location/location.js +10 -10
  14. package/dist-server/service/warehouse/warehouse.js +7 -7
  15. package/dist-server/utils/inventory-util.js +83 -24
  16. package/dist-server/utils/inventory-util.js.map +1 -1
  17. package/package.json +8 -8
  18. package/server/service/inventory/inventory-query.ts +76 -220
  19. package/server/service/inventory/inventory.ts +38 -35
  20. package/server/service/inventory-change/inventory-change-mutation.ts +237 -231
  21. package/server/service/inventory-item/inventory-item.ts +9 -2
  22. package/server/service/inventory-product/inventory-product.ts +5 -1
  23. package/server/service/location/location-query.ts +1 -1
  24. package/server/service/location/location.ts +10 -10
  25. package/server/service/warehouse/warehouse.ts +7 -7
  26. package/server/utils/inventory-util.ts +117 -51
@@ -147,68 +147,134 @@ export async function generateInventoryHistory(
147
147
  }
148
148
  })
149
149
 
150
- let seq: number = 0
151
- let openingQty: number = 0
152
- let openingUomValue: number = 0
153
-
154
- if (lastInvHistory) {
155
- openingQty = lastInvHistory.openingQty + lastInvHistory.qty
156
- openingUomValue = lastInvHistory.openingUomValue + lastInvHistory.uomValue
157
- seq = lastInvHistory.seq + 1
158
- }
159
-
160
- let remainQty = (openingQty || 0) + (qty || 0)
161
-
162
- let inventoryHistory: any = new InventoryHistory()
163
-
164
- inventoryHistory = {
165
- ...inventory,
166
- name: InventoryNoGenerator.inventoryHistoryName(),
167
- inventory,
168
- seq: seq,
169
- status: remainQty == 0 ? INVENTORY_STATUS.TERMINATED : inventory.status,
170
- transactionType,
150
+ let lastSeq: number
151
+ let res: any
152
+ let inventoryHistoryFields: any = {
171
153
  refOrderId: refOrder?.id || null,
172
154
  orderNo: refOrder?.name || null,
173
155
  orderRefNo: refOrder?.refNo || null,
174
- qty,
175
- openingQty,
176
- uomValue,
177
- openingUomValue: openingUomValue,
156
+ uom: inventory?.uom,
157
+
178
158
  creator: user,
179
- updater: user
159
+ updater: user,
160
+ domain: inventory?.domain,
161
+ bizplace: inventory?.bizplace,
162
+ reusablePallet: inventory?.reusablePallet,
163
+ inventory: inventory,
164
+ product: inventory?.product,
165
+ warehouse: inventory?.warehouse,
166
+ location: inventory?.location,
167
+
168
+ palletId: inventory?.palletId,
169
+ batchId: inventory?.batchId,
170
+ zone: inventory?.zone,
171
+ packingType: inventory?.packingType,
172
+ description: inventory?.description,
173
+ expirationDate: inventory?.expirationDate,
174
+ unitCost: inventory?.unitCost,
175
+ batchIdRef: inventory?.batchIdRef,
176
+ cartonId: inventory?.cartonId,
177
+ manufactureYear: inventory?.manufactureYear,
178
+ packingSize: inventory?.packingSize,
179
+ manufactureDate: inventory?.manufactureDate
180
180
  }
181
181
 
182
- delete inventoryHistory.updatedAt
183
- delete inventoryHistory.createdAt
184
- delete inventoryHistory.id
185
-
186
- let newInventoryHistory = await invHistoryRepo.save(inventoryHistory)
187
-
188
- if (remainQty == 0) {
189
- seq = seq + 1
190
- let terminatedHistory = {
191
- ...newInventoryHistory,
192
- name: InventoryNoGenerator.inventoryHistoryName(),
193
- seq: seq,
194
- status: INVENTORY_STATUS.TERMINATED,
195
- transactionType: INVENTORY_TRANSACTION_TYPE.TERMINATED,
196
- uom: inventory.uom,
197
- qty: 0,
198
- openingQty: 0,
199
- uomValue: 0,
200
- openingUomValue: 0
182
+ if (!lastInvHistory) {
183
+ res = await invHistoryRepo
184
+ .createQueryBuilder()
185
+ .insert()
186
+ .into(InventoryHistory)
187
+ .values([
188
+ {
189
+ ...inventoryHistoryFields,
190
+ name: InventoryNoGenerator.inventoryHistoryName(),
191
+ status: inventory.status,
192
+ transactionType,
193
+ qty,
194
+ openingQty: 0,
195
+ uomValue,
196
+ openingUomValue: 0,
197
+ seq: 0
198
+ }
199
+ ])
200
+ .returning('*')
201
+ .execute()
202
+ }
203
+ else {
204
+ if (transactionType == 'PICKING' || transactionType == 'UNLOADING') {
205
+ const findSameOrderHistory: InventoryHistory[] = await invHistoryRepo.find({
206
+ domain: inventory.domain,
207
+ palletId: inventory.palletId,
208
+ refOrderId: refOrder.id
209
+ })
210
+
211
+ if (findSameOrderHistory.length > 0) {
212
+ let prevTotalQty = 0
213
+ let prevTotalUomValue = 0
214
+ for (let oh of findSameOrderHistory) {
215
+ prevTotalQty += oh.qty
216
+ prevTotalUomValue += oh.uomValue
217
+ }
218
+ qty -= prevTotalQty
219
+ uomValue -= prevTotalUomValue
220
+ }
201
221
  }
222
+
223
+ res = await invHistoryRepo
224
+ .createQueryBuilder()
225
+ .insert()
226
+ .into(InventoryHistory)
227
+ .values([
228
+ {
229
+ ...inventoryHistoryFields,
230
+ name: InventoryNoGenerator.inventoryHistoryName(),
231
+ status: () =>
232
+ `(select case when opening_qty + ${qty} = 0 then 'TERMINATED' else 'STORED' end as status from inventory_histories where inventory_id = '${inventory.id}' order by seq desc limit 1)`,
233
+ transactionType,
234
+ qty,
235
+ openingQty: () =>
236
+ `(select opening_qty from inventory_histories where inventory_id = '${inventory.id}' order by seq desc limit 1) + ${qty}`,
237
+ uomValue,
238
+ openingUomValue: () =>
239
+ `(select opening_uom_value from inventory_histories where inventory_id = '${inventory.id}' order by seq desc limit 1) + ${uomValue}`,
240
+ seq: () =>
241
+ `(select seq from inventory_histories where inventory_id = '${inventory.id}' order by seq desc limit 1) + 1`
242
+ }
243
+ ])
244
+ .returning('*')
245
+ .execute()
246
+ }
202
247
 
203
- delete terminatedHistory.id
204
-
205
- newInventoryHistory = await invHistoryRepo.save(terminatedHistory)
248
+ let newInventoryHistory: InventoryHistory = res.generatedMaps[0]
249
+ lastSeq = newInventoryHistory.seq
250
+
251
+ if (newInventoryHistory.openingQty == 0) {
252
+ let terminatedRes = await invHistoryRepo
253
+ .createQueryBuilder()
254
+ .insert()
255
+ .into(InventoryHistory)
256
+ .values([
257
+ {
258
+ ...inventoryHistoryFields,
259
+ name: InventoryNoGenerator.inventoryHistoryName(),
260
+ status: INVENTORY_STATUS.TERMINATED,
261
+ transactionType: INVENTORY_TRANSACTION_TYPE.TERMINATED,
262
+ qty: 0,
263
+ openingQty: 0,
264
+ uomValue: 0,
265
+ openingUomValue: 0,
266
+ seq: () =>
267
+ `(select seq from inventory_histories where inventory_id = '${inventory.id}' order by seq desc limit 1) + 1`
268
+ }
269
+ ])
270
+ .returning('seq')
271
+ .execute()
272
+
273
+ lastSeq = terminatedRes.generatedMaps[0].seq
206
274
  inventory.status = INVENTORY_STATUS.TERMINATED
207
275
  }
208
276
 
209
- if (inventory.lastSeq !== seq) {
210
- await invRepo.update(inventory.id, { lastSeq: newInventoryHistory.seq, updater: user })
211
- }
277
+ await invRepo.update(inventory.id, { lastSeq, updater: user })
212
278
 
213
279
  await switchLocationStatus(domain, location, user, trxMgr)
214
280
  return newInventoryHistory