@things-factory/warehouse-base 4.3.135 → 4.3.138

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 (46) hide show
  1. package/dist-server/controllers/warehouse-controller.js.map +1 -1
  2. package/dist-server/service/inventory/inventory-query.js +74 -68
  3. package/dist-server/service/inventory/inventory-query.js.map +1 -1
  4. package/dist-server/service/inventory/inventory-types.js +16 -12
  5. package/dist-server/service/inventory/inventory-types.js.map +1 -1
  6. package/dist-server/service/inventory/inventory.js +4 -0
  7. package/dist-server/service/inventory/inventory.js.map +1 -1
  8. package/dist-server/service/inventory-change/inventory-change-mutation.js +7 -3
  9. package/dist-server/service/inventory-change/inventory-change-mutation.js.map +1 -1
  10. package/dist-server/service/inventory-history/inventory-history-query.js +14 -7
  11. package/dist-server/service/inventory-history/inventory-history-query.js.map +1 -1
  12. package/dist-server/service/inventory-item/inventory-item.js +8 -3
  13. package/dist-server/service/inventory-item/inventory-item.js.map +1 -1
  14. package/dist-server/service/inventory-product/inventory-product.js +8 -3
  15. package/dist-server/service/inventory-product/inventory-product.js.map +1 -1
  16. package/dist-server/service/location/location-mutation.js +3 -1
  17. package/dist-server/service/location/location-mutation.js.map +1 -1
  18. package/dist-server/service/pallet/pallet-mutation.js +35 -33
  19. package/dist-server/service/pallet/pallet-mutation.js.map +1 -1
  20. package/dist-server/service/tote/tote-mutation.js +1 -1
  21. package/dist-server/service/tote/tote-mutation.js.map +1 -1
  22. package/dist-server/service/tote/tote-query.js +4 -3
  23. package/dist-server/service/tote/tote-query.js.map +1 -1
  24. package/dist-server/service/warehouse/warehouse-mutation.js +30 -16
  25. package/dist-server/service/warehouse/warehouse-mutation.js.map +1 -1
  26. package/dist-server/utils/inventory-util.js +86 -25
  27. package/dist-server/utils/inventory-util.js.map +1 -1
  28. package/package.json +9 -9
  29. package/server/controllers/warehouse-controller.ts +0 -1
  30. package/server/service/inventory/inventory-query.ts +88 -121
  31. package/server/service/inventory/inventory-types.ts +3 -0
  32. package/server/service/inventory/inventory.ts +3 -0
  33. package/server/service/inventory-change/inventory-change-mutation.ts +10 -5
  34. package/server/service/inventory-history/inventory-history-query.ts +16 -7
  35. package/server/service/inventory-item/inventory-item.ts +9 -2
  36. package/server/service/inventory-product/inventory-product.ts +5 -1
  37. package/server/service/location/location-mutation.ts +3 -1
  38. package/server/service/pallet/pallet-mutation.ts +50 -69
  39. package/server/service/tote/tote-mutation.ts +1 -1
  40. package/server/service/tote/tote-query.ts +6 -5
  41. package/server/service/warehouse/warehouse-mutation.ts +35 -18
  42. package/server/utils/inventory-util.ts +116 -51
  43. package/translations/en.json +4 -2
  44. package/translations/ko.json +4 -2
  45. package/translations/ms.json +4 -2
  46. package/translations/zh.json +14 -12
@@ -1 +1 @@
1
- {"version":3,"file":"inventory-util.js","sourceRoot":"","sources":["../../server/utils/inventory-util.ts"],"names":[],"mappings":"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"}
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.135",
3
+ "version": "4.3.138",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -23,13 +23,13 @@
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.131",
27
- "@things-factory/id-rule-base": "^4.3.131",
28
- "@things-factory/integration-accounting": "^4.3.135",
29
- "@things-factory/integration-sellercraft": "^4.3.131",
30
- "@things-factory/marketplace-base": "^4.3.132",
31
- "@things-factory/product-base": "^4.3.131",
32
- "@things-factory/setting-base": "^4.3.131"
26
+ "@things-factory/biz-base": "^4.3.138",
27
+ "@things-factory/id-rule-base": "^4.3.138",
28
+ "@things-factory/integration-accounting": "^4.3.138",
29
+ "@things-factory/integration-sellercraft": "^4.3.138",
30
+ "@things-factory/marketplace-base": "^4.3.138",
31
+ "@things-factory/product-base": "^4.3.138",
32
+ "@things-factory/setting-base": "^4.3.138"
33
33
  },
34
- "gitHead": "55b877e97abb4350a0fa9dceb051c54fd496dcf0"
34
+ "gitHead": "1d4e0a3ff6b8792c843b9735a28a3f5fb946b144"
35
35
  }
@@ -2,7 +2,6 @@ import { EntityManager } from 'typeorm'
2
2
 
3
3
  import { Role, User } from '@things-factory/auth-base'
4
4
  import { Bizplace, getDomainUsers } from '@things-factory/biz-base'
5
- import { sendNotification } from '@things-factory/notification'
6
5
  import { ProductDetail } from '@things-factory/product-base'
7
6
  import { Domain } from '@things-factory/shell'
8
7
 
@@ -1,55 +1,17 @@
1
- import {
2
- Arg,
3
- Args,
4
- Ctx,
5
- Directive,
6
- FieldResolver,
7
- Query,
8
- Resolver,
9
- Root
10
- } from 'type-graphql'
11
- import {
12
- Brackets,
13
- EntityManager,
14
- Equal,
15
- getRepository,
16
- Not,
17
- Repository,
18
- SelectQueryBuilder
19
- } from 'typeorm'
1
+ import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
+ import { Brackets, EntityManager, Equal, getRepository, Not, Repository, SelectQueryBuilder } from 'typeorm'
20
3
 
21
4
  import { User } from '@things-factory/auth-base'
22
- import {
23
- Bizplace,
24
- getPartnersCompanyBizplaces,
25
- getPermittedBizplaceIds
26
- } from '@things-factory/biz-base'
5
+ import { Bizplace, getPartnersCompanyBizplaces, getPermittedBizplaceIds } from '@things-factory/biz-base'
27
6
  import { logger } from '@things-factory/env'
28
- import {
29
- Product,
30
- ProductBundleSetting,
31
- ProductDetail
32
- } from '@things-factory/product-base'
7
+ import { Product, ProductBundleSetting, ProductDetail } from '@things-factory/product-base'
33
8
  import { Setting } from '@things-factory/setting-base'
34
- import {
35
- buildQuery,
36
- Domain,
37
- Filter,
38
- ListParam,
39
- Pagination,
40
- Sorting
41
- } from '@things-factory/shell'
42
-
43
- import {
44
- INVENTORY_STATUS,
45
- LOCATION_TYPE
46
- } from '../../constants'
9
+ import { buildQuery, Domain, Filter, ListParam, Pagination, Sorting } from '@things-factory/shell'
10
+
11
+ import { INVENTORY_STATUS, LOCATION_TYPE } from '../../constants'
47
12
  import { InventoryChange } from '../inventory-change/inventory-change'
48
13
  import { Inventory } from './inventory'
49
- import {
50
- InventoryBundleGroupDetail,
51
- InventoryList
52
- } from './inventory-types'
14
+ import { InventoryBundleGroupDetail, InventoryList } from './inventory-types'
53
15
 
54
16
  @Resolver(Inventory)
55
17
  export class InventoryQuery {
@@ -104,7 +66,12 @@ export class InventoryQuery {
104
66
 
105
67
  qb.leftJoinAndSelect('inventory.bizplace', 'bizplace')
106
68
  .leftJoinAndSelect('inventory.product', 'product')
107
- //.leftJoinAndSelect('product.productDetails', 'productDetail', 'productDetail.product_id = product.id')
69
+ .leftJoinAndSelect('inventory.productDetail', 'productDetail')
70
+ .leftJoinAndSelect(
71
+ 'product.productDetails',
72
+ 'productDetails',
73
+ 'productDetails.id = inventory.product_detail_id'
74
+ )
108
75
  .leftJoinAndSelect('inventory.warehouse', 'warehouse')
109
76
  .leftJoinAndSelect('inventory.location', 'location')
110
77
  .leftJoinAndSelect('inventory.creator', 'creator')
@@ -184,36 +151,17 @@ export class InventoryQuery {
184
151
  qb.offset((page - 1) * limit).limit(limit)
185
152
  }
186
153
 
187
- let items: any = await qb.getRawMany()
188
-
189
- items = await Promise.all(
190
- items.map(async item => {
191
- let productDetails = await tx.getRepository(ProductDetail).find({ where: { product: item.product_id } })
192
- let productDetail
193
- //if more than one productDetail
194
- if (productDetails.length > 1) {
195
- productDetail = productDetails.filter(
196
- (itm: ProductDetail) =>
197
- itm.packingType == item.inventory_packing_type && itm.packingSize == item.inventory_packing_size
198
- )
199
-
200
- //if more than one with same packingType and packingSize
201
- if (productDetail.length > 1) {
202
- productDetail = productDetail.find((itm: ProductDetail) => itm.isDefault == true)
203
- } else {
204
- productDetail = productDetail[0]
205
- }
206
- } else {
207
- productDetail = productDetails[0]
208
- }
209
- item = {
210
- ...new Inventory(item),
211
- serialNumbers: item.serial_numbers,
212
- productDetail
154
+ let items = (await qb.getRawMany()).map(item => {
155
+ return {
156
+ ...new Inventory(item),
157
+ serialNumbers: item.serial_numbers,
158
+ productDetail: {
159
+ id: item.productDetail_id,
160
+ name: item.productDetail_name,
161
+ gtin: item.productDetail_gtin
213
162
  }
214
- return item
215
- })
216
- )
163
+ }
164
+ })
217
165
  let total = await qb.getCount()
218
166
 
219
167
  return {
@@ -269,6 +217,7 @@ export class InventoryQuery {
269
217
  let quarantineStockFilter = params.filters.find(filter => filter.name == 'quarantineStock')
270
218
  let reserveStockFilter = params.filters.find(filter => filter.name == 'reserveStock')
271
219
  let productTypeFilter = params.filters.find(filter => filter.name == 'type')
220
+ let expirationDateFilter = params.filters.find(filter => filter.name == 'expirationDate')
272
221
 
273
222
  if (bizplaceFilter) {
274
223
  const bizplaceQueryBuilder: SelectQueryBuilder<Bizplace> = getRepository(Bizplace).createQueryBuilder('b')
@@ -382,6 +331,14 @@ export class InventoryQuery {
382
331
  ` AND (
383
332
  Lower("Inventory"."packing_type") LIKE ANY(ARRAY[${packingTypeValue}])
384
333
  )`
334
+ }
335
+ let expirationDateQuery = ''
336
+ if (expirationDateFilter) {
337
+ let expirationDateValue = expirationDateFilter.value
338
+
339
+ expirationDateQuery =
340
+ expirationDateQuery +
341
+ ` AND "Inventory"."expiration_date" = '${expirationDateValue}'`
385
342
  }
386
343
 
387
344
  let thresholdQuery = ''
@@ -406,12 +363,13 @@ export class InventoryQuery {
406
363
  // [domain.id]
407
364
  // )
408
365
 
366
+ // correction on the as --> AS
409
367
  await tx.query(
410
368
  `
411
369
  create temp table temp_inv_history AS
412
370
  (
413
371
  SELECT "Product"."id" AS "id", "Product"."sku" AS "sku", "Product"."brand" AS "brand", "Product"."name" AS "name", "Product"."type" AS "type", "Product"."description" AS "description",
414
- "Inventory"."packing_type" AS "packingType",
372
+ "Inventory"."packing_type" AS "packingType","Inventory"."expiration_date" AS "expirationDate",
415
373
  "Product"."weight" AS "weight", "ProductRef"."id" AS "productRefId",
416
374
  "ProductRef"."description" AS "productRefDesciption", "Bizplace"."id" AS "bizplaceId", "Bizplace"."name" AS "bizplaceName",
417
375
  CASE WHEN SUM("Inventory"."qty") > 0 THEN SUM(COALESCE("Inventory"."unit_cost", 0) * "Inventory"."qty")/ SUM("Inventory"."qty") ELSE 0 END AS "averageUnitCost",
@@ -419,15 +377,15 @@ export class InventoryQuery {
419
377
  COALESCE("ProductDetailBizplaceSetting"."max_qty", "Product"."max_qty",0) AS "maxQty",
420
378
  COALESCE(putawayinv.putaway_qty, 0) AS "putawayQty",
421
379
  (CASE WHEN "Location"."type" NOT IN ('${LOCATION_TYPE.QUARANTINE}','${LOCATION_TYPE.RESERVE}')
422
- THEN
380
+ THEN
423
381
  CASE WHEN SUM("Inventory"."qty") > 0
424
382
  THEN SUM("Inventory"."qty")
425
383
  ELSE 0 END
426
384
  ELSE 0 END) AS "qty",
427
385
  (CASE WHEN "Location"."type" NOT IN ('${LOCATION_TYPE.QUARANTINE}','${LOCATION_TYPE.RESERVE}')
428
- THEN
429
- CASE WHEN SUM("Inventory"."qty") > 0 THEN SUM("Inventory"."qty") ELSE 0 END - SUM(COALESCE("Inventory"."locked_qty", 0)) - COALESCE("opd"."total_release_qty", 0)
430
- ELSE 0 END) AS "availableQty",
386
+ THEN
387
+ CASE WHEN SUM("Inventory"."qty") > 0 THEN SUM("Inventory"."qty") ELSE 0 END - SUM(COALESCE("Inventory"."locked_qty", 0)) - COALESCE("opd"."total_release_qty", 0)
388
+ ELSE 0 END) AS "availableQty",
431
389
  (CASE WHEN "Location"."type" NOT IN ('${LOCATION_TYPE.QUARANTINE}','${LOCATION_TYPE.RESERVE}')
432
390
  THEN SUM(COALESCE("Inventory"."locked_qty", 0)) ELSE 0 END) AS "releaseQty",
433
391
  CASE WHEN "Location"."type" = '${LOCATION_TYPE.QUARANTINE}'
@@ -458,12 +416,12 @@ export class InventoryQuery {
458
416
  select "op"."product_id", COALESCE(SUM("op"."release_qty")) as "total_release_qty",
459
417
  "op"."packing_type", "op"."packing_size", "op"."uom"
460
418
  from "order_products" op
461
- INNER JOIN "draft_release_goods" drg on drg.id = op.draft_release_good_id
419
+ INNER JOIN "draft_release_goods" drg ON drg.id = op.draft_release_good_id
462
420
  WHERE "drg"."status" = 'DRAFT'
463
421
  AND "op"."draft_release_good_id" IS NOT null
464
422
  AND "drg"."domain_id" = $1
465
- group by "op"."product_id","op"."packing_type" ,"op"."packing_size", "op"."uom"
466
- ) as "opd"
423
+ GROUP BY "op"."product_id","op"."packing_type" ,"op"."packing_size", "op"."uom"
424
+ ) AS "opd"
467
425
  ON "Inventory"."product_id" = "opd"."product_id" AND "Inventory"."packing_type" = "opd"."packing_type"
468
426
  AND "Inventory"."packing_size" = "opd"."packing_size"
469
427
  AND "Inventory"."uom" = "opd"."uom"
@@ -472,18 +430,19 @@ export class InventoryQuery {
472
430
  SELECT sum(i.qty) as "putaway_qty", i.product_id, i.packing_type, i.packing_size, i.uom FROM "inventories" i
473
431
  WHERE i.status = 'PUTTING_AWAY' and i.domain_id = $1
474
432
  GROUP BY i.product_id, i.packing_type, i.packing_size, i.uom
475
- ) as "putawayinv" ON "Inventory"."product_id" = "putawayinv"."product_id" AND "Inventory"."packing_type" = "putawayinv"."packing_type"
476
- AND "Inventory"."packing_size" = "putawayinv"."packing_size"
477
- AND "Inventory"."uom" = "putawayinv"."uom"
478
- INNER JOIN "bizplaces" "Bizplace" ON "Bizplace"."id"="Inventory"."bizplace_id"
479
- INNER JOIN "locations" "Location" ON "Location"."id" = "Inventory"."location_id"
480
- WHERE "Inventory"."qty" >= 0
481
- AND "Inventory"."status" <> 'MISSING' AND "Inventory"."status" <> 'PUTTING_AWAY'
433
+ ) as "putawayinv" ON "Inventory"."product_id" = "putawayinv"."product_id" AND "Inventory"."packing_type" = "putawayinv"."packing_type"
434
+ AND "Inventory"."packing_size" = "putawayinv"."packing_size"
435
+ AND "Inventory"."uom" = "putawayinv"."uom"
436
+ INNER JOIN "bizplaces" "Bizplace" ON "Bizplace"."id"="Inventory"."bizplace_id"
437
+ INNER JOIN "locations" "Location" ON "Location"."id" = "Inventory"."location_id"
438
+ WHERE "Inventory"."qty" >= 0
439
+ AND "Inventory"."status" <> 'MISSING' AND "Inventory"."status" <> 'PUTTING_AWAY'
482
440
  AND "Inventory"."domain_id" = $1
483
441
  ${bizplaceQuery}
484
442
  ${productQuery}
485
- GROUP BY "Product"."id", "Bizplace"."id", "ProductDetailBizplaceSetting"."id"
486
- , "Inventory"."packing_type", "Inventory"."packing_size", "Inventory"."uom"
443
+ ${expirationDateQuery}
444
+ GROUP BY "Inventory"."expiration_date","Product"."id","Bizplace"."id", "ProductDetailBizplaceSetting"."id"
445
+ , "Inventory"."packing_type", "Inventory"."packing_size", "Inventory"."uom"
487
446
  , "Location"."type", "ProductRef"."id", "opd"."total_release_qty", "putawayinv"."putaway_qty"
488
447
  HAVING 1 = 1
489
448
  ${availableStockQuery}
@@ -493,21 +452,21 @@ export class InventoryQuery {
493
452
 
494
453
  await tx.query(
495
454
  `
496
- CREATE TEMP TABLE grouped_inventories_product AS (
497
- SELECT "id", "sku", "brand", "name", "description",
498
- "packingType", "bizplaceId", "bizplaceName", sum("averageUnitCost") AS "averageUnitCost",
499
- sum("minQty") AS "minQty", sum("maxQty") AS "maxQty",
500
- sum("putawayQty") AS "putawayQty",
501
- sum("qty") AS "qty",
502
- sum("quarantineQty") AS "quarantineQty",
503
- sum("reserveQty") AS "reserveQty",
504
- sum("releaseQty") AS "releaseQty",
505
- sum("draftQty") AS "draftQty",
506
- sum("availableQty") AS "availableQty",
507
- sum("putawayQty" + "quarantineQty" + "reserveQty" + "availableQty") AS "warehouseQty"
508
- FROM temp_inv_history
509
- GROUP BY "id", "sku", "brand", "name", "description", "packingType", "bizplaceId", "bizplaceName"
510
- HAVING 1=1
455
+ CREATE TEMP TABLE grouped_inventories_product AS (
456
+ SELECT "id", "sku", "brand", "name", "description","expirationDate",
457
+ "packingType", "bizplaceId", "bizplaceName", sum("averageUnitCost") AS "averageUnitCost",
458
+ sum("minQty") AS "minQty", sum("maxQty") AS "maxQty",
459
+ sum("putawayQty") AS "putawayQty",
460
+ sum("qty") AS "qty",
461
+ sum("quarantineQty") AS "quarantineQty",
462
+ sum("reserveQty") AS "reserveQty",
463
+ sum("releaseQty") AS "releaseQty",
464
+ sum("draftQty") AS "draftQty",
465
+ sum("availableQty") AS "availableQty",
466
+ sum("putawayQty" + "quarantineQty" + "reserveQty" + "availableQty") AS "warehouseQty"
467
+ FROM temp_inv_history
468
+ GROUP BY "expirationDate","id", "sku", "brand", "name", "description", "packingType", "bizplaceId", "bizplaceName"
469
+ HAVING 1=1
511
470
  ${qtyStockQuery}
512
471
  ${thresholdQuery}
513
472
  )
@@ -542,6 +501,7 @@ export class InventoryQuery {
542
501
  id: item.bizplaceId,
543
502
  name: item.bizplaceName
544
503
  },
504
+ expirationDate: item.expirationDate,
545
505
  packingType: item.packingType,
546
506
  averageUnitCost: item.averageUnitCost,
547
507
  putawayQty: item.putawayQty,
@@ -672,23 +632,27 @@ export class InventoryQuery {
672
632
  @Arg('bizplaceName') bizplaceName: string,
673
633
  @Ctx() context: any
674
634
  ): Promise<Boolean> {
675
- const invRepo: Repository<Inventory> = getRepository(Inventory)
676
- const bizRepo: Repository<Bizplace> = getRepository(Bizplace)
635
+ try {
636
+ const invRepo: Repository<Inventory> = getRepository(Inventory)
637
+ const bizRepo: Repository<Bizplace> = getRepository(Bizplace)
677
638
 
678
- const inventory: Inventory = await invRepo.findOne({
679
- where: { domain: context.state.domain, palletId, status: INVENTORY_STATUS.STORED },
680
- relations: ['bizplace']
681
- })
639
+ const inventory: Inventory = await invRepo.findOne({
640
+ where: { domain: context.state.domain, palletId, status: INVENTORY_STATUS.STORED },
641
+ relations: ['bizplace']
642
+ })
682
643
 
683
- if (!inventory) throw new Error('This inventory status is not stored.')
644
+ if (!inventory) throw new Error('This inventory status is not stored.')
684
645
 
685
- const ownerBizplace: Bizplace = await bizRepo.findOne({
686
- where: { name: bizplaceName }
687
- })
646
+ const ownerBizplace: Bizplace = await bizRepo.findOne({
647
+ where: { name: bizplaceName }
648
+ })
688
649
 
689
- const foundBizplace: Bizplace = inventory.bizplace
650
+ const foundBizplace: Bizplace = inventory.bizplace
690
651
 
691
- return Boolean(ownerBizplace.id === foundBizplace.id)
652
+ return Boolean(ownerBizplace.id === foundBizplace.id)
653
+ } catch (e) {
654
+ return false
655
+ }
692
656
  }
693
657
 
694
658
  @Directive('@privilege(category: "inventory", privilege: "query")')
@@ -748,7 +712,7 @@ export class InventoryQuery {
748
712
 
749
713
  const productBundleSettings: ProductBundleSetting[] = await getRepository(ProductBundleSetting).find({
750
714
  where: { productBundle: productBundleId },
751
- relations: ['product', 'productBundle']
715
+ relations: ['product', 'productDetail', 'productBundle']
752
716
  })
753
717
 
754
718
  if (!productBundleSettings.length) {
@@ -759,6 +723,7 @@ export class InventoryQuery {
759
723
  buildQuery(qb, params, context)
760
724
 
761
725
  qb.select('iv.product_id', 'productId')
726
+ .addSelect('iv.product_detail_id', 'productDetailId')
762
727
  .addSelect('iv.batch_id', 'batchId')
763
728
  .addSelect('iv.batch_id_ref', 'batchIdRef')
764
729
  .addSelect('iv.packing_type', 'packingType')
@@ -787,6 +752,7 @@ export class InventoryQuery {
787
752
  productIds: productBundleSettings.map(productBundle => productBundle.product.id)
788
753
  })
789
754
  .groupBy('iv.product_id')
755
+ .addGroupBy('iv.product_detail_id')
790
756
  .addGroupBy('iv.batch_id')
791
757
  .addGroupBy('iv.batch_id_ref')
792
758
  .addGroupBy('iv.packing_type')
@@ -815,6 +781,7 @@ export class InventoryQuery {
815
781
  return {
816
782
  id: pbs.id,
817
783
  productId: pbs.product.id,
784
+ productDetailId: pbs.productDetail.id,
818
785
  bundleId: pbs.productBundle.id,
819
786
  bundleQty: pbs.bundleQty,
820
787
  releaseQty: bundleReleaseQty * pbs.bundleQty,
@@ -47,6 +47,9 @@ export class InventoryPatch {
47
47
  @Field(type => ObjectRef, { nullable: true })
48
48
  product?: ObjectRef
49
49
 
50
+ @Field(type => ObjectRef, { nullable: true })
51
+ productDetail?: ObjectRef
52
+
50
53
  @Field({ nullable: true })
51
54
  sku?: string
52
55
 
@@ -222,6 +222,9 @@ export class Inventory {
222
222
  @Field({ nullable: true })
223
223
  productId: string
224
224
 
225
+ @Field({ nullable: true })
226
+ productDetailId: string
227
+
225
228
  @Field({ nullable: true })
226
229
  productName: string
227
230
 
@@ -7,7 +7,7 @@ import { generateId } from '@things-factory/id-rule-base'
7
7
  import { Account } from '@things-factory/integration-accounting'
8
8
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
9
9
  import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
10
- import { Product } from '@things-factory/product-base'
10
+ import { Product, ProductDetail } from '@things-factory/product-base'
11
11
  import { PartnerSetting, Setting } from '@things-factory/setting-base'
12
12
  import { Domain } from '@things-factory/shell'
13
13
 
@@ -215,7 +215,9 @@ export class InventoryChangeMutation {
215
215
  newRecord.bizplace = bizplace
216
216
 
217
217
  var product: Product = await tx.getRepository(Product).findOne(newRecord.product.id)
218
+ var productDetail: ProductDetail = await tx.getRepository(ProductDetail).findOne(newRecord.productDetailId)
218
219
  newRecord.product = product
220
+ newRecord.productDetail = productDetail
219
221
 
220
222
  newRecord.status = 'PENDING'
221
223
  newRecord.transactionType = 'NEW'
@@ -589,6 +591,7 @@ async function upsertInventoryItems(context, inventoryChange, approvalStatus, tx
589
591
  inventoryItem.serialNumber = inventoryItemChange.serialNumber
590
592
  inventoryItem.status = INVENTORY_STATUS.STORED
591
593
  inventoryItem.product = inventoryChange.inventory.product
594
+ inventoryItem.productDetail = inventoryChange.inventory.productDetail
592
595
  inventoryItem.domain = inventoryItemChange.domain
593
596
  inventoryItem.inventory = inventoryChange.inventory
594
597
  inventoryItem.source = INVENTORY_ITEM_SOURCE.ADJUSTMENT
@@ -608,7 +611,8 @@ async function upsertInventoryItems(context, inventoryChange, approvalStatus, tx
608
611
  inventoryItem = {
609
612
  ...existingInventoryItem,
610
613
  serialNumber: inventoryItemChange.serialNumber,
611
- product: inventoryItemChange.inventory.product
614
+ product: inventoryItemChange.inventory.product,
615
+ productDetail: inventoryItemChange.inventory.productDetail
612
616
  }
613
617
  } else if (changeType == INVENTORY_ITEM_CHANGE_TYPE.REMOVED) {
614
618
  inventoryItem = {
@@ -645,6 +649,7 @@ export async function approveInventoryChanges(patches: any, context: any) {
645
649
  'bizplace.company',
646
650
  'bizplace.company.domain',
647
651
  'product',
652
+ 'productDetail',
648
653
  'product.productDetails',
649
654
  'product.productDetails.childProductDetail',
650
655
  'location'
@@ -680,6 +685,7 @@ export async function approveInventoryChanges(patches: any, context: any) {
680
685
  'bizplace.company',
681
686
  'bizplace.company.domain',
682
687
  'product',
688
+ 'productDetail',
683
689
  'product.productDetails',
684
690
  'product.productDetails.childProductDetail',
685
691
  'warehouse',
@@ -689,8 +695,6 @@ export async function approveInventoryChanges(patches: any, context: any) {
689
695
  ]
690
696
  })
691
697
 
692
- const customerDomain: Domain = inventory.bizplace.domain
693
-
694
698
  // Check for locked inventory, and stop from udpating inventory
695
699
  if (inventory.qty < inventory.lockedQty) {
696
700
  arrLockedInventory.push(_inventoryChanges[i])
@@ -860,7 +864,8 @@ export async function approveInventoryChanges(patches: any, context: any) {
860
864
  id: inventoryId,
861
865
  status: statusFilter,
862
866
  updater: user,
863
- lastSeq: lastSeq
867
+ lastSeq: lastSeq,
868
+ createdAt: inventory.createdAt
864
869
  })
865
870
 
866
871
  //Check and set latest location status
@@ -230,6 +230,8 @@ export class InventoryHistoryQuery {
230
230
  Lower(prd.name) LIKE ANY(ARRAY[${productValue}])
231
231
  OR Lower(prd.sku) LIKE ANY(ARRAY[${productValue}])
232
232
  OR Lower(prd.description) LIKE ANY(ARRAY[${productValue}])
233
+ OR Lower(prd.brand) LIKE ANY(ARRAY[${productValue}])
234
+ OR Lower(prd.brand_sku) LIKE ANY(ARRAY[${productValue}])
233
235
  )`
234
236
  }
235
237
 
@@ -1043,7 +1045,7 @@ export class InventoryHistoryQuery {
1043
1045
  and (lower(prd.name) like any(array[${products}])
1044
1046
  or lower(prd.description) like any(array[${products}])
1045
1047
  or lower(prd.sku) like any(array[${products}])
1046
- or lower(prd.brand) like any(array[${products}]))
1048
+ or lower(prd.brand_sku) like any(array[${products}]))
1047
1049
  and prd.id = rih.product_id
1048
1050
  group by prd.id
1049
1051
  )`
@@ -1400,7 +1402,14 @@ export class InventoryHistoryQuery {
1400
1402
 
1401
1403
  let foundProductDetail = await tx
1402
1404
  .getRepository(ProductDetail)
1403
- .findOne({ where: { domain: companyDomain, volume: IsNull() || 0 } })
1405
+ .createQueryBuilder('pd')
1406
+ .where('pd.domain = :domainId ', { domainId: companyDomain.id })
1407
+ .andWhere(
1408
+ new Brackets(qb => {
1409
+ qb.where('pd.volume = 0').orWhere('pd.volume is null')
1410
+ })
1411
+ )
1412
+ .getOne()
1404
1413
 
1405
1414
  if (foundProductDetail) {
1406
1415
  throw new Error('there is product master with empty volume')
@@ -1425,7 +1434,7 @@ export class InventoryHistoryQuery {
1425
1434
  rih.bizplace_id as bizplace_id,
1426
1435
  cast(rih.created_at + (interval '8 hour') as DATE) as "tempDate"
1427
1436
  from reduced_inventory_histories rih
1428
- left join product_details pd on pd.product_id = rih.product_id and pd.packing_type = rih.packing_type
1437
+ left join product_details pd on pd.id = rih.product_detail_id
1429
1438
  where rih.status not like 'TERMINATED' and rih.bizplace_id = $1
1430
1439
  group by CAST(rih.created_at + (interval '8 hour') as DATE), rih.bizplace_id
1431
1440
  )
@@ -1465,8 +1474,8 @@ export class InventoryHistoryQuery {
1465
1474
  await tx.query(
1466
1475
  `
1467
1476
  create temp table temp_result ON COMMIT drop as(
1468
- select lag(sub."closingQty", 1, 0) over (partition by sub.bizplace_id order by sub.date) as "openingQty",
1469
- lag(sub."closingVolume", 1, 0) over (partition by sub.bizplace_id order by sub.date) as "openingVolume", sub.* from(
1477
+ select lag(sub."closingQty", 1, 0::double precision) over (partition by sub.bizplace_id order by sub.date) as "openingQty",
1478
+ lag(sub."closingVolume", 1, 0::numeric) over (partition by sub.bizplace_id order by sub.date) as "openingVolume", sub.* from(
1470
1479
  select (select sum(tmp2.total) from temp_reduced_inventory_histories_with_date_range tmp2 where tmp2.row <= tmp.row) as "closingQty",
1471
1480
  (select sum(tmp2."totalVolume") from temp_reduced_inventory_histories_with_date_range tmp2 where tmp2.row <= tmp.row) as "closingVolume", tmp.* from
1472
1481
  temp_reduced_inventory_histories_with_date_range tmp) sub
@@ -1556,8 +1565,8 @@ async function massageInventorySummary(tx: EntityManager, params: ListParam, biz
1556
1565
  sum(case when ih.created_at >= $1 and ih.transaction_type = 'ADJUSTMENT' then ih.qty else 0 end) as adjustment_qty,
1557
1566
  sum(case when ih.created_at < $1 then qty else 0 end) as opening_qty,
1558
1567
  sum(case when ih.status = 'MISSING' then -ih.opening_qty else 0 end) as missing_qty,
1559
- sum(case when ih.created_at >= $1 then case when ih.qty > 0 and ih.transaction_type <> 'ADJUSTMENT' then ih.qty else 0 end else 0 end) as total_in_qty,
1560
- sum(case when ih.created_at >= $1 then case when ih.qty < 0 and ih.transaction_type <> 'ADJUSTMENT' then ih.qty else 0 end else 0 end) as total_out_qty,
1568
+ sum(case when ih.created_at >= $1 then case when ih.qty > 0 and ih.transaction_type <> 'ADJUSTMENT' and ih.transaction_type <> 'RELOCATE' then ih.qty else 0 end else 0 end) as total_in_qty,
1569
+ sum(case when ih.created_at >= $1 then case when ih.qty < 0 and ih.transaction_type <> 'ADJUSTMENT' and ih.transaction_type <> 'RELOCATE' then ih.qty else 0 end else 0 end) as total_out_qty,
1561
1570
  ih.product_id
1562
1571
  from temp_inv_history ih
1563
1572
  inner join temp_products prd on prd.id = ih.product_id
@@ -11,7 +11,7 @@ import {
11
11
  } from 'typeorm'
12
12
 
13
13
  import { User } from '@things-factory/auth-base'
14
- import { Product } from '@things-factory/product-base'
14
+ import { Product, ProductDetail} from '@things-factory/product-base'
15
15
  import { Domain } from '@things-factory/shell'
16
16
 
17
17
  import { Inventory } from '../inventory/inventory'
@@ -32,7 +32,8 @@ export class InventoryItem {
32
32
 
33
33
  @RelationId((inventoryItem: InventoryItem) => inventoryItem.domain)
34
34
  domainId?: string
35
-
35
+
36
+
36
37
  @Column()
37
38
  @Field()
38
39
  name: string
@@ -57,13 +58,19 @@ export class InventoryItem {
57
58
  @Field({ nullable: true })
58
59
  outboundOrderId: string
59
60
 
61
+
60
62
  @ManyToOne(type => Product)
61
63
  @Field(type => Product, { nullable: true })
62
64
  product?: Product
63
65
 
66
+
64
67
  @RelationId((inventoryItem: InventoryItem) => inventoryItem.product)
65
68
  productId?: string
66
69
 
70
+ @ManyToOne(type => ProductDetail, { nullable: true })
71
+ @Field({ nullable: true })
72
+ productDetail: ProductDetail
73
+
67
74
  @ManyToOne(type => Inventory)
68
75
  @Field(type => Inventory)
69
76
  inventory?: Inventory