@things-factory/warehouse-base 6.0.73 → 6.0.75

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/warehouse-base",
3
- "version": "6.0.73",
3
+ "version": "6.0.75",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -23,12 +23,12 @@
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": "^6.0.73",
27
- "@things-factory/id-rule-base": "^6.0.73",
28
- "@things-factory/integration-sellercraft": "^6.0.73",
29
- "@things-factory/marketplace-base": "^6.0.73",
30
- "@things-factory/product-base": "^6.0.73",
31
- "@things-factory/setting-base": "^6.0.73"
26
+ "@things-factory/biz-base": "^6.0.75",
27
+ "@things-factory/id-rule-base": "^6.0.75",
28
+ "@things-factory/integration-sellercraft": "^6.0.75",
29
+ "@things-factory/marketplace-base": "^6.0.75",
30
+ "@things-factory/product-base": "^6.0.75",
31
+ "@things-factory/setting-base": "^6.0.75"
32
32
  },
33
- "gitHead": "cf00adc3f06bebbe492c63f0f743eb874155f9b5"
33
+ "gitHead": "f7ca179a7fabfc129a9981a7bd734380a3ac64f0"
34
34
  }
@@ -1,21 +1,21 @@
1
1
  import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
- import {
3
- Brackets,
4
- EntityManager,
5
- Equal,
6
- getRepository,
7
- Not,
8
- OrderByCondition,
9
- Repository,
10
- SelectQueryBuilder
11
- } from 'typeorm'
2
+ import { Brackets, EntityManager, Equal, Not, OrderByCondition, Repository, SelectQueryBuilder } from 'typeorm'
12
3
 
13
4
  import { User } from '@things-factory/auth-base'
14
5
  import { Bizplace, getPartnersCompanyBizplaces, getPermittedBizplaceIds } from '@things-factory/biz-base'
15
6
  import { logger } from '@things-factory/env'
16
7
  import { Product, ProductBundleSetting } from '@things-factory/product-base'
17
8
  import { Setting } from '@things-factory/setting-base'
18
- import { buildQuery, Domain, Filter, ListParam, Pagination, Sorting } from '@things-factory/shell'
9
+ import {
10
+ buildQuery,
11
+ Domain,
12
+ Filter,
13
+ ListParam,
14
+ Pagination,
15
+ Sorting,
16
+ getQueryBuilderFromListParams,
17
+ getRepository
18
+ } from '@things-factory/shell'
19
19
 
20
20
  import { INVENTORY_STATUS, LOCATION_TYPE } from '../../constants'
21
21
  import { InventoryChange } from '../inventory-change/inventory-change'
@@ -58,20 +58,13 @@ export class InventoryQuery {
58
58
 
59
59
  const params = { filters, pagination }
60
60
 
61
- if (!bizplace) {
62
- params.filters.push({
63
- name: 'bizplace',
64
- operator: 'in',
65
- value: await getPermittedBizplaceIds(domain, user),
66
- relation: true
67
- })
68
- }
69
-
70
61
  const remainOnly: boolean = remainOnlyParam?.value || false
71
62
 
72
- // Define Query data
73
- const qb: SelectQueryBuilder<Inventory> = tx.getRepository(Inventory).createQueryBuilder('inventory')
74
- buildQuery(qb, params, context, {
63
+ const qb: SelectQueryBuilder<Inventory> = getQueryBuilderFromListParams({
64
+ repository: tx.getRepository(Inventory),
65
+ params,
66
+ domain,
67
+ alias: 'inventory',
75
68
  searchables: ['warehouse', 'product', 'batchId', 'location', 'palletId']
76
69
  })
77
70
 
@@ -83,24 +76,31 @@ export class InventoryQuery {
83
76
  .leftJoinAndSelect('inventory.creator', 'creator')
84
77
  .leftJoinAndSelect('inventory.updater', 'updater')
85
78
 
86
- // To get aggregated serial number in csv and total number of stored serial number
87
- .leftJoinAndSelect(
88
- subQuery => {
89
- return subQuery
90
- .select('inventoryItems.inventory_id', 'inventory_item_inventory_id')
91
- .addSelect(
92
- `SUM(case when "inventoryItems"."status" = 'STORED' then 1 else 0 end)`,
93
- 'inventory_item_count'
94
- )
95
- .addSelect(`string_agg(inventoryItems.serial_number, ', ')`, 'serial_numbers')
96
- .from('inventory_items', 'inventoryItems')
97
- .where(`inventoryItems.domain_id = :domainId`, { domainId: domain.id })
98
- .andWhere(`inventoryItems.status = :ivicStatus`, { ivicStatus: INVENTORY_STATUS.STORED })
99
- .groupBy('inventoryItems.inventory_id')
100
- },
101
- 'inventoryItems',
102
- '"inventoryItems"."inventory_item_inventory_id" = "inventory"."id"'
79
+ if (!bizplace) {
80
+ const bizplaces = await getPermittedBizplaceIds(domain, user)
81
+
82
+ qb.andWhere(
83
+ new Brackets(qb => {
84
+ qb.orWhere('inventory.bizplace_id IN (:...bizplaces)', { bizplaces })
85
+ })
103
86
  )
87
+ }
88
+
89
+ // To get aggregated serial number in csv and total number of stored serial number
90
+ qb.leftJoinAndSelect(
91
+ subQuery => {
92
+ return subQuery
93
+ .select('inventoryItems.inventory_id', 'inventory_item_inventory_id')
94
+ .addSelect(`SUM(case when "inventoryItems"."status" = 'STORED' then 1 else 0 end)`, 'inventory_item_count')
95
+ .addSelect(`string_agg(inventoryItems.serial_number, ', ')`, 'serial_numbers')
96
+ .from('inventory_items', 'inventoryItems')
97
+ .where(`inventoryItems.domain_id = :domainId`, { domainId: domain.id })
98
+ .andWhere(`inventoryItems.status = :ivicStatus`, { ivicStatus: INVENTORY_STATUS.STORED })
99
+ .groupBy('inventoryItems.inventory_id')
100
+ },
101
+ 'inventoryItems',
102
+ '"inventoryItems"."inventory_item_inventory_id" = "inventory"."id"'
103
+ )
104
104
 
105
105
  // To get inventory with remaining qty
106
106
  if (remainOnly) {