@things-factory/warehouse-base 3.7.5 → 3.7.9

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.
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.inventoriesResolver = void 0;
4
+ const typeorm_1 = require("typeorm");
4
5
  const biz_base_1 = require("@things-factory/biz-base");
5
6
  const product_base_1 = require("@things-factory/product-base");
6
7
  const shell_1 = require("@things-factory/shell");
7
- const typeorm_1 = require("typeorm");
8
8
  const entities_1 = require("../../../entities");
9
9
  exports.inventoriesResolver = {
10
10
  async inventories(_, { filters, pagination, sortings, locationSortingRules }, context) {
@@ -52,15 +52,16 @@ exports.inventoriesResolver = {
52
52
  }
53
53
  if (productFilters) {
54
54
  let productFilterValue = `%${productFilters.value.toLowerCase()}%`;
55
- qb.andWhere((qb) => {
56
- const subQuery = qb.subQuery()
55
+ qb.andWhere(qb => {
56
+ const subQuery = qb
57
+ .subQuery()
57
58
  .select()
58
59
  .from(product_base_1.Product, `products`)
59
60
  .where(`products.id = iv.product_id`)
60
61
  .andWhere(new typeorm_1.Brackets(qb => {
61
- qb.where("Lower(products.sku) LIKE :productInfo", { productInfo: productFilterValue })
62
- .orWhere("Lower(products.name) LIKE :productInfo", { productInfo: productFilterValue })
63
- .orWhere("Lower(products.description) LIKE :productInfo", { productInfo: productFilterValue });
62
+ qb.where('Lower(products.sku) LIKE :productInfo', { productInfo: productFilterValue })
63
+ .orWhere('Lower(products.name) LIKE :productInfo', { productInfo: productFilterValue })
64
+ .orWhere('Lower(products.description) LIKE :productInfo', { productInfo: productFilterValue });
64
65
  }))
65
66
  .getQuery();
66
67
  return `EXISTS ${subQuery}`;
@@ -85,6 +86,13 @@ exports.inventoriesResolver = {
85
86
  });
86
87
  const selectedQty = item.lockedQty ? item.lockedQty : 0;
87
88
  const selectedUomValue = item.lockedUomValue ? item.lockedUomValue : 0;
89
+ item.product['productDetails'] = await (0, typeorm_1.getRepository)(product_base_1.ProductDetail).find({
90
+ where: {
91
+ product: item.product.id,
92
+ packingType: item.packingType,
93
+ packingSize: item.packingSize
94
+ }
95
+ });
88
96
  return Object.assign(Object.assign({}, item), { changeCount: inventoryChangeCount, remainQty: item.qty - selectedQty, remainUomValue: item.uomValue - selectedUomValue });
89
97
  }));
90
98
  return { items, total };
@@ -1 +1 @@
1
- {"version":3,"file":"inventories.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory/inventories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inventories.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory/inventories.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Mutation = exports.Query = void 0;
3
+ exports.onhandInventories = exports.Mutation = exports.Query = void 0;
4
4
  const create_inventory_history_1 = require("./create-inventory-history");
5
5
  const delete_inventory_histories_1 = require("./delete-inventory-histories");
6
6
  const delete_inventory_history_1 = require("./delete-inventory-history");
@@ -15,6 +15,7 @@ const inventory_history_pallet_detail_report_1 = require("./inventory-history-pa
15
15
  const inventory_history_pallet_storage_report_1 = require("./inventory-history-pallet-storage-report");
16
16
  const inventory_history_summary_report_1 = require("./inventory-history-summary-report");
17
17
  const onhand_inventories_1 = require("./onhand-inventories");
18
+ Object.defineProperty(exports, "onhandInventories", { enumerable: true, get: function () { return onhand_inventories_1.onhandInventories; } });
18
19
  exports.Query = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, inventory_histories_1.inventoryHistoriesResolver), inventory_history_1.inventoryHistoryResolver), bizplace_inventory_histories_1.bizplaceInventoryHistories), inventory_history_report_1.inventoryHistoryReport), inventory_history_pallet_report_1.inventoryHistoryPalletReport), inventory_history_pallet_detail_report_1.inventoryHistoryPalletDetailReport), inventory_history_pallet_storage_report_1.inventoryHistoryPalletStorageReport), inventory_history_summary_report_1.inventoryHistorySummaryReport), onhand_inventories_1.onhandInventoriesResolver);
19
20
  exports.Mutation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, update_inventory_history_1.updateInventoryHistory), update_multiple_inventory_history_1.updateMultipleInventoryHistory), create_inventory_history_1.createInventoryHistory), delete_inventory_history_1.deleteInventoryHistory), delete_inventory_histories_1.deleteInventoryHistories);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory-history/index.ts"],"names":[],"mappings":";;;AAAA,yEAAmE;AACnE,6EAAuE;AACvE,yEAAmE;AACnE,+DAAkE;AAClE,2DAA8D;AAC9D,yEAAmE;AACnE,2FAAoF;AACpF,iFAA2E;AAC3E,yEAAmE;AACnE,uFAAgF;AAChF,qGAA6F;AAC7F,uGAA+F;AAC/F,yFAAkF;AAClF,6DAAgE;AAEnD,QAAA,KAAK,qIACb,gDAA0B,GAC1B,4CAAwB,GACxB,yDAA0B,GAC1B,iDAAsB,GACtB,8DAA4B,GAC5B,2EAAkC,GAClC,6EAAmC,GACnC,gEAA6B,GAC7B,8CAAyB,EAC7B;AAEY,QAAA,QAAQ,6EAChB,iDAAsB,GACtB,kEAA8B,GAC9B,iDAAsB,GACtB,iDAAsB,GACtB,qDAAwB,EAC5B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory-history/index.ts"],"names":[],"mappings":";;;AAAA,yEAAmE;AACnE,6EAAuE;AACvE,yEAAmE;AACnE,+DAAkE;AAClE,2DAA8D;AAC9D,yEAAmE;AACnE,2FAAoF;AACpF,iFAA2E;AAC3E,yEAAmE;AACnE,uFAAgF;AAChF,qGAA6F;AAC7F,uGAA+F;AAC/F,yFAAkF;AAClF,6DAAmF;AAuB1E,kGAvB2B,sCAAiB,OAuB3B;AArBb,QAAA,KAAK,qIACb,gDAA0B,GAC1B,4CAAwB,GACxB,yDAA0B,GAC1B,iDAAsB,GACtB,8DAA4B,GAC5B,2EAAkC,GAClC,6EAAmC,GACnC,gEAA6B,GAC7B,8CAAyB,EAC7B;AAEY,QAAA,QAAQ,6EAChB,iDAAsB,GACtB,kEAA8B,GAC9B,iDAAsB,GACtB,iDAAsB,GACtB,qDAAwB,EAC5B"}
@@ -1,198 +1,200 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.onhandInventoriesResolver = void 0;
3
+ exports.onhandInventories = exports.onhandInventoriesResolver = void 0;
4
4
  const auth_base_1 = require("@things-factory/auth-base");
5
5
  const biz_base_1 = require("@things-factory/biz-base");
6
6
  exports.onhandInventoriesResolver = {
7
7
  async onhandInventories(_, { filters, pagination, sortings, locationSortingRules }, context) {
8
- const { domain, user, tx } = context.state;
9
- // define all inputs
10
- let userFilter = filters.find(data => data.name === 'user');
11
- let product = filters.find(data => data.name === 'product');
12
- let createdAt = filters.find(data => data.name === 'created_at');
13
- let location = filters.find(data => data.name === 'location');
14
- let batchId = filters.find(data => data.name === 'batchId');
15
- let palletId = filters.find(data => data.name === 'palletId');
16
- let cartonId = filters.find(data => data.name === 'cartonId');
17
- let packingType = filters.find(data => data.name === 'packingType');
18
- let timezoneOffset = filters.find(data => data.name === 'timezoneOffset').value + ' minutes';
19
- // expiration date filter
20
- let expiration = filters.find(data => data.name === 'expiration').value;
21
- let expFromDate = filters.find(data => data.name === 'expFromDate');
22
- let expToDate = filters.find(data => data.name === 'expToDate');
23
- let bizplaceFilter = { name: '', operator: '', value: [] };
24
- // prepare query filters
25
- if (userFilter) {
26
- const user = await tx.getRepository(auth_base_1.User).findOne({
27
- where: { id: userFilter.value },
28
- relations: ['bizplaces']
29
- });
30
- const bizplace = user.bizplaces[0];
31
- if (!bizplace)
32
- throw 'Invalid input';
33
- bizplaceFilter = { name: 'bizplace', operator: 'eq', value: [bizplace.id] };
34
- }
35
- else {
36
- bizplaceFilter = !filters.find((filter) => filter.name === 'bizplace')
37
- ? {
38
- name: 'bizplace',
39
- operator: 'in',
40
- value: await (0, biz_base_1.getPermittedBizplaceIds)(domain, user),
41
- relation: true
42
- }
43
- : Object.assign(Object.assign({}, filters.find(data => data.name === 'bizplace')), { value: [filters.find(data => data.name === 'bizplace').value] });
44
- }
45
- let queryFilter = ``;
46
- let bizplaces = bizplaceFilter.value.map(id => `('${id}')`).join(',');
47
- if (product) {
48
- let products = product.value
49
- .toLowerCase()
50
- .split(',')
51
- .map(prod => {
52
- return "'%" + prod.trim().replace(/'/g, "''") + "%'";
53
- })
54
- .join(',');
55
- queryFilter =
56
- queryFilter +
57
- ` and exists (
58
- select prd.id as product_id from products prd
59
- inner join bizplaces b on b.id = prd.bizplace_id
60
- inner join companies c on c.domain_id = b.domain_id
61
- inner join bizplaces b2 on b2.company_id = c.id
62
- where exists (
63
- SELECT * FROM tmp_bizfilter bizFilter
64
- WHERE bizFilter.bizplace_id = "b2"."id"
65
- )
66
- and (lower(prd.name) like any(array[${products}])
67
- or lower(prd.description) like any(array[${products}])
68
- or lower(prd.sku) like any(array[${products}]))
69
- and prd.id = rih.product_id
70
- group by prd.id
71
- )`;
72
- }
73
- if (location) {
74
- let locations = location.value
75
- .map(loc => {
76
- return "'" + loc + "'";
77
- })
78
- .join(',');
79
- queryFilter =
80
- queryFilter +
81
- `and exists (
82
- select loc.id from locations loc where
83
- loc.id = any(array[${locations}]::uuid[])
84
- and loc.id = rih.location_id
85
- )`;
86
- }
87
- // default sorting
88
- let queryOrder = 'order by created_at desc';
89
- if (sortings && sortings.length > 0) {
90
- const arrObjectMap = [
91
- { name: 'palletId', value: 'rih.pallet_id' },
92
- { name: 'cartonId', value: 'rih.carton_id' },
93
- { name: 'batchId', value: 'rih.batch_id' },
94
- { name: 'initialInboundAt', value: 'rih.initial_inbound_at' },
95
- { name: 'bizplace|name', value: 'bz.name' },
96
- { name: 'product|name', value: 'prd.sku' },
97
- { name: 'remainQty', value: 'rih.qty' },
98
- { name: 'location|name', value: 'loc.name' }
99
- ];
100
- sortings.forEach((sorting, idx) => {
101
- let itmIndex = arrObjectMap.findIndex(x => x.name === sorting.name);
102
- queryOrder = `${idx === 0 ? 'order by' : queryOrder + ','} ${itmIndex >= 0 ? arrObjectMap[itmIndex].value : sorting.name} ${sorting.desc ? 'DESC' : 'ASC'}`;
103
- });
104
- }
105
- if (batchId)
106
- queryFilter = `${queryFilter} and lower(rih.batch_id) like '${batchId.value.toLowerCase()}' `;
107
- if (palletId)
108
- queryFilter = `${queryFilter} and rih.pallet_id like '${palletId.value}' `;
109
- if (cartonId)
110
- queryFilter = `${queryFilter} and rih.carton_id like '${cartonId.value}' `;
111
- if (packingType)
112
- queryFilter = `${queryFilter} and rih.packing_type like '${packingType.value}' `;
113
- let expirationQueryFilter = ``;
114
- if (expiration)
115
- expirationQueryFilter = ` and iv.expiration_date >= '${expFromDate.value}'::timestamp + '${timezoneOffset}'::INTERVAL and
116
- iv.expiration_date <= '${expToDate.value}'::timestamp + '${timezoneOffset}'::INTERVAL + '1 day'::INTERVAL`;
117
- // query the results
118
- await tx.query(`
119
- CREATE TEMP TABLE tmp_bizfilter AS (
120
- SELECT bizplace_id::uuid FROM (VALUES ${bizplaces}) AS bizFilter(bizplace_id)
121
- );
122
- `);
123
- await tx.query(`
124
- create temp table tmp_src as (
125
- select domain_id, pallet_id, carton_id, seq, qty, uom_value, packing_type, batch_id, batch_id_ref, created_at, status,
126
- product_id::uuid as product_id, bizplace_id::uuid as bizplace_id, location_id::uuid as location_id
127
- from reduced_inventory_histories rih
128
- where domain_id = $1 and created_at < $2::timestamp + $3::INTERVAL + '1 day'::INTERVAL
129
- );
130
- `, [domain.id, createdAt.value, timezoneOffset]);
131
- await tx.query(`
132
- create temp table tmp_data as (
133
- select dt.*, rih.carton_id, rih.batch_id, rih.batch_id_ref, rih.product_id, rih.packing_type, rih.bizplace_id, rih.location_id, iv.uom,
134
- iv.expiration_date, iv.reusable_pallet_id, iv.remark
135
- from
136
- (
137
- select ih.domain_id, ih.pallet_id, sum(ih.qty) as qty, sum(ih.uom_value) as uom_value, max(ih.seq) as last_seq, max(ih.created_at) as created_at,
138
- min(ih.created_at) as initial_inbound_at
139
- from tmp_src ih
140
- group by ih.domain_id, ih.pallet_id
141
- ) dt
142
- inner join tmp_src rih on dt.domain_id = rih.domain_id and dt.pallet_id = rih.pallet_id and dt.last_seq = rih.seq and rih.status <> 'TERMINATED'
143
- inner join inventories iv on iv.domain_id = dt.domain_id and iv.pallet_id = dt.pallet_id
8
+ return await onhandInventories(filters, pagination, sortings, locationSortingRules, context);
9
+ }
10
+ };
11
+ async function onhandInventories(filters, pagination, sortings, locationSortingRules, context, setPagination = true) {
12
+ const { domain, user, tx } = context.state;
13
+ // define all inputs
14
+ let userFilter = filters.find(data => data.name === 'user');
15
+ let product = filters.find(data => data.name === 'product');
16
+ let createdAt = filters.find(data => data.name === 'created_at');
17
+ let location = filters.find(data => data.name === 'location');
18
+ let batchId = filters.find(data => data.name === 'batchId');
19
+ let palletId = filters.find(data => data.name === 'palletId');
20
+ let cartonId = filters.find(data => data.name === 'cartonId');
21
+ let packingType = filters.find(data => data.name === 'packingType');
22
+ let timezoneOffset = filters.find(data => data.name === 'timezoneOffset').value + ' minutes';
23
+ // expiration date filter
24
+ let expiration = filters.find(data => data.name === 'expiration').value;
25
+ let expFromDate = filters.find(data => data.name === 'expFromDate');
26
+ let expToDate = filters.find(data => data.name === 'expToDate');
27
+ let bizplaceFilter = { name: '', operator: '', value: [] };
28
+ // prepare query filters
29
+ if (userFilter) {
30
+ const user = await tx.getRepository(auth_base_1.User).findOne({
31
+ where: { id: userFilter.value },
32
+ relations: ['bizplaces']
33
+ });
34
+ const bizplace = user.bizplaces[0];
35
+ if (!bizplace)
36
+ throw 'Invalid input';
37
+ bizplaceFilter = { name: 'bizplace', operator: 'eq', value: [bizplace.id] };
38
+ }
39
+ else {
40
+ bizplaceFilter = !filters.find((filter) => filter.name === 'bizplace')
41
+ ? {
42
+ name: 'bizplace',
43
+ operator: 'in',
44
+ value: await (0, biz_base_1.getPermittedBizplaceIds)(domain, user),
45
+ relation: true
46
+ }
47
+ : Object.assign(Object.assign({}, filters.find(data => data.name === 'bizplace')), { value: [filters.find(data => data.name === 'bizplace').value] });
48
+ }
49
+ let queryFilter = ``;
50
+ let bizplaces = bizplaceFilter.value.map(id => `('${id}')`).join(',');
51
+ if (product) {
52
+ let products = product.value
53
+ .toLowerCase()
54
+ .split(',')
55
+ .map(prod => {
56
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'";
57
+ })
58
+ .join(',');
59
+ queryFilter =
60
+ queryFilter +
61
+ ` and exists (
62
+ select prd.id as product_id from products prd
63
+ inner join bizplaces b on b.id = prd.bizplace_id
64
+ inner join companies c on c.domain_id = b.domain_id
65
+ inner join bizplaces b2 on b2.company_id = c.id
144
66
  where exists (
145
67
  SELECT * FROM tmp_bizfilter bizFilter
146
- WHERE bizFilter.bizplace_id = "rih"."bizplace_id"
68
+ WHERE bizFilter.bizplace_id = "b2"."id"
147
69
  )
148
- ${queryFilter}
149
- ${expirationQueryFilter}
150
- );
151
- `);
152
- const total = await tx.query(`select count(*) from tmp_data`);
153
- const result = await tx.query(`
154
- select
155
- rih.domain_id, rih.pallet_id as "palletId", rih.carton_id as "cartonId", rih.qty as "remainQty", rih.uom_value as "uomValue", rih.uom, rih.last_seq, rih.created_at,
156
- rih.initial_inbound_at as "initialInboundAt",
157
- case when rih.reusable_pallet_id is not null then concat(rih.batch_id, ' (', plt.name, ')') else rih.batch_id end as "batchId",
158
- rih.batch_id_ref as "batchIdRef", rih.product_id, rih.packing_type as "packingType", rih.bizplace_id, rih.location_id,
159
- prd.id as product_id, prd.name as product_name, prd.sku as product_sku, prd.description as product_description,
160
- bz.id as bizplace_id, bz.name as bizplace_name,
161
- loc.id as location_id, loc.name as location_name, loc."zone" as location_zone, loc."row" as location_row, loc."column" as location_column, loc.shelf as location_shelf,
162
- wh.name as warehouse_name, plt.name as reusable_pallet_name,
163
- rih.remark,
164
- rih.expiration_date as "expirationDate"
165
- from tmp_data rih
166
- left join pallets plt on plt.id = rih.reusable_pallet_id
167
- inner join products prd on prd.id = rih.product_id
168
- inner join bizplaces bz on bz.id = rih.bizplace_id
169
- inner join locations loc on loc.id = rih.location_id
170
- inner join warehouses wh on wh.id = loc.warehouse_id
171
- WHERE 1 = 1
172
- ${queryOrder}
173
- OFFSET $1 LIMIT $2;
174
- `, [(pagination.page - 1) * pagination.limit, pagination.limit]);
175
- tx.query(`
176
- drop table tmp_src, tmp_data, tmp_bizfilter
177
- `);
178
- // map all results
179
- let items = result.map(itm => {
180
- return Object.assign(Object.assign({}, itm), { bizplace: {
181
- id: itm.bizplace_id,
182
- name: itm.bizplace_name
183
- }, location: {
184
- id: itm.location_id,
185
- name: itm.location_name,
186
- type: itm.location_type,
187
- zone: itm.location_zone
188
- }, product: {
189
- id: itm.product_id,
190
- name: itm.product_name,
191
- description: itm.product_description,
192
- sku: itm.product_sku
193
- } });
70
+ and (lower(prd.name) like any(array[${products}])
71
+ or lower(prd.description) like any(array[${products}])
72
+ or lower(prd.sku) like any(array[${products}]))
73
+ and prd.id = rih.product_id
74
+ group by prd.id
75
+ )`;
76
+ }
77
+ if (location) {
78
+ let locations = location.value
79
+ .map(loc => {
80
+ return "'" + loc + "'";
81
+ })
82
+ .join(',');
83
+ queryFilter =
84
+ queryFilter +
85
+ `and exists (
86
+ select loc.id from locations loc where
87
+ loc.id = any(array[${locations}]::uuid[])
88
+ and loc.id = rih.location_id
89
+ )`;
90
+ }
91
+ // default sorting
92
+ let queryOrder = 'order by created_at desc';
93
+ if (sortings && sortings.length > 0) {
94
+ const arrObjectMap = [
95
+ { name: 'palletId', value: 'rih.pallet_id' },
96
+ { name: 'cartonId', value: 'rih.carton_id' },
97
+ { name: 'batchId', value: 'rih.batch_id' },
98
+ { name: 'initialInboundAt', value: 'rih.initial_inbound_at' },
99
+ { name: 'bizplace|name', value: 'bz.name' },
100
+ { name: 'product|name', value: 'prd.sku' },
101
+ { name: 'remainQty', value: 'rih.qty' },
102
+ { name: 'location|name', value: 'loc.name' }
103
+ ];
104
+ sortings.forEach((sorting, idx) => {
105
+ let itmIndex = arrObjectMap.findIndex(x => x.name === sorting.name);
106
+ queryOrder = `${idx === 0 ? 'order by' : queryOrder + ','} ${itmIndex >= 0 ? arrObjectMap[itmIndex].value : sorting.name} ${sorting.desc ? 'DESC' : 'ASC'}`;
194
107
  });
195
- return { items, total: total[0].count };
196
108
  }
197
- };
109
+ if (batchId)
110
+ queryFilter = `${queryFilter} and lower(rih.batch_id) like '${batchId.value.toLowerCase()}' `;
111
+ if (palletId)
112
+ queryFilter = `${queryFilter} and rih.pallet_id like '${palletId.value}' `;
113
+ if (cartonId)
114
+ queryFilter = `${queryFilter} and rih.carton_id like '${cartonId.value}' `;
115
+ if (packingType)
116
+ queryFilter = `${queryFilter} and rih.packing_type like '${packingType.value}' `;
117
+ let expirationQueryFilter = ``;
118
+ if (expiration)
119
+ expirationQueryFilter = ` and iv.expiration_date >= '${expFromDate.value}'::timestamp + '${timezoneOffset}'::INTERVAL and
120
+ iv.expiration_date <= '${expToDate.value}'::timestamp + '${timezoneOffset}'::INTERVAL + '1 day'::INTERVAL`;
121
+ // query the results
122
+ await tx.query(`
123
+ CREATE TEMP TABLE tmp_bizfilter on commit drop AS (
124
+ SELECT bizplace_id::uuid FROM (VALUES ${bizplaces}) AS bizFilter(bizplace_id)
125
+ );
126
+ `);
127
+ await tx.query(`
128
+ create temp table tmp_src on commit drop as (
129
+ select domain_id, pallet_id, carton_id, seq, qty, uom_value, packing_type, batch_id, batch_id_ref, created_at, status,
130
+ product_id::uuid as product_id, bizplace_id::uuid as bizplace_id, location_id::uuid as location_id
131
+ from reduced_inventory_histories rih
132
+ where domain_id = $1 and created_at < $2::timestamp + $3::INTERVAL + '1 day'::INTERVAL
133
+ );
134
+ `, [domain.id, createdAt.value, timezoneOffset]);
135
+ await tx.query(`
136
+ create temp table tmp_data on commit drop as (
137
+ select dt.*, rih.carton_id, rih.batch_id, rih.batch_id_ref, rih.product_id, rih.packing_type, rih.bizplace_id, rih.location_id, iv.uom,
138
+ iv.expiration_date, iv.reusable_pallet_id, iv.remark
139
+ from
140
+ (
141
+ select ih.domain_id, ih.pallet_id, sum(ih.qty) as qty, sum(ih.uom_value) as uom_value, max(ih.seq) as last_seq, max(ih.created_at) as created_at,
142
+ min(ih.created_at) as initial_inbound_at
143
+ from tmp_src ih
144
+ group by ih.domain_id, ih.pallet_id
145
+ ) dt
146
+ inner join tmp_src rih on dt.domain_id = rih.domain_id and dt.pallet_id = rih.pallet_id and dt.last_seq = rih.seq and rih.status <> 'TERMINATED'
147
+ inner join inventories iv on iv.domain_id = dt.domain_id and iv.pallet_id = dt.pallet_id
148
+ where exists (
149
+ SELECT * FROM tmp_bizfilter bizFilter
150
+ WHERE bizFilter.bizplace_id = "rih"."bizplace_id"
151
+ )
152
+ ${queryFilter}
153
+ ${expirationQueryFilter}
154
+ );
155
+ `);
156
+ const total = await tx.query(`select count(*) from tmp_data`);
157
+ const result = await tx.query(`
158
+ select
159
+ rih.domain_id, rih.pallet_id as "palletId", rih.carton_id as "cartonId", rih.qty as "remainQty", rih.uom_value as "uomValue", rih.uom, rih.last_seq, rih.created_at,
160
+ rih.initial_inbound_at as "initialInboundAt",
161
+ case when rih.reusable_pallet_id is not null then concat(rih.batch_id, ' (', plt.name, ')') else rih.batch_id end as "batchId",
162
+ rih.batch_id_ref as "batchIdRef", rih.product_id, rih.packing_type as "packingType", rih.bizplace_id, rih.location_id,
163
+ prd.id as product_id, prd.name as product_name, prd.sku as product_sku, prd.description as product_description,
164
+ bz.id as bizplace_id, bz.name as bizplace_name,
165
+ loc.id as location_id, loc.name as location_name, loc."zone" as location_zone, loc."row" as location_row, loc."column" as location_column, loc.shelf as location_shelf,
166
+ wh.name as warehouse_name, plt.name as reusable_pallet_name,
167
+ rih.remark,
168
+ rih.expiration_date as "expirationDate"
169
+ from tmp_data rih
170
+ left join pallets plt on plt.id = rih.reusable_pallet_id
171
+ inner join products prd on prd.id = rih.product_id
172
+ inner join bizplaces bz on bz.id = rih.bizplace_id
173
+ inner join locations loc on loc.id = rih.location_id
174
+ inner join warehouses wh on wh.id = loc.warehouse_id
175
+ WHERE 1 = 1
176
+ ${queryOrder}
177
+ ${setPagination ? 'OFFSET ' + (pagination.page - 1) * pagination.limit + ' LIMIT ' + pagination.limit : ''}
178
+ ;
179
+ `);
180
+ // map all results
181
+ let items = result.map(itm => {
182
+ return Object.assign(Object.assign({}, itm), { bizplace: {
183
+ id: itm.bizplace_id,
184
+ name: itm.bizplace_name
185
+ }, location: {
186
+ id: itm.location_id,
187
+ name: itm.location_name,
188
+ type: itm.location_type,
189
+ zone: itm.location_zone
190
+ }, product: {
191
+ id: itm.product_id,
192
+ name: itm.product_name,
193
+ description: itm.product_description,
194
+ sku: itm.product_sku
195
+ } });
196
+ });
197
+ return { items, total: total[0].count };
198
+ }
199
+ exports.onhandInventories = onhandInventories;
198
200
  //# sourceMappingURL=onhand-inventories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"onhand-inventories.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory-history/onhand-inventories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onhand-inventories.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory-history/onhand-inventories.ts"],"names":[],"mappings":"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"}
@@ -25,10 +25,10 @@ exports.InventoryBundleGroup = (0, graphql_tag_1.default) `
25
25
  releaseQty: Int
26
26
  remainUomValue: Float
27
27
  lockedUomValue: Float
28
+ uom: String
28
29
  releaseUomValue: Float
29
30
  releaseUomValueWithUom: String
30
31
  packingType: String
31
- uom: String
32
32
  domain: Domain
33
33
  description: String
34
34
  updater: User
@@ -10,7 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.updateWarehouse = exports.deleteWarehouses = exports.deleteWarehouse = exports.createWarehouse = exports.updateLocation = exports.deleteLocations = exports.deleteLocation = exports.createLocation = void 0;
13
+ exports.onhandInventories = exports.updateWarehouse = exports.deleteWarehouses = exports.deleteWarehouse = exports.createWarehouse = exports.updateLocation = exports.deleteLocations = exports.deleteLocation = exports.createLocation = void 0;
14
14
  __exportStar(require("./constants"), exports);
15
15
  __exportStar(require("./entities"), exports);
16
16
  __exportStar(require("./graphql"), exports);
@@ -24,6 +24,8 @@ Object.defineProperty(exports, "createWarehouse", { enumerable: true, get: funct
24
24
  Object.defineProperty(exports, "deleteWarehouse", { enumerable: true, get: function () { return warehouse_1.deleteWarehouse; } });
25
25
  Object.defineProperty(exports, "deleteWarehouses", { enumerable: true, get: function () { return warehouse_1.deleteWarehouses; } });
26
26
  Object.defineProperty(exports, "updateWarehouse", { enumerable: true, get: function () { return warehouse_1.updateWarehouse; } });
27
+ var onhand_inventories_1 = require("./graphql/resolvers/inventory-history/onhand-inventories");
28
+ Object.defineProperty(exports, "onhandInventories", { enumerable: true, get: function () { return onhand_inventories_1.onhandInventories; } });
27
29
  __exportStar(require("./migrations"), exports);
28
30
  __exportStar(require("./utils"), exports);
29
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,6CAA0B;AAC1B,4CAAyB;AACzB,yDAA8G;AAArG,0GAAA,cAAc,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,0GAAA,cAAc,OAAA;AACxE,2DAAmH;AAA1G,4GAAA,eAAe,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AAAE,4GAAA,eAAe,OAAA;AAC5E,+CAA4B;AAC5B,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,6CAA0B;AAC1B,4CAAyB;AACzB,yDAA8G;AAArG,0GAAA,cAAc,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,0GAAA,cAAc,OAAA;AACxE,2DAAmH;AAA1G,4GAAA,eAAe,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AAAE,4GAAA,eAAe,OAAA;AAC5E,+FAA4F;AAAnF,uHAAA,iBAAiB,OAAA;AAC1B,+CAA4B;AAC5B,0CAAuB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/warehouse-base",
3
- "version": "3.7.5",
3
+ "version": "3.7.9",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -25,11 +25,11 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@things-factory/biz-base": "^3.7.5",
28
- "@things-factory/id-rule-base": "^3.7.5",
29
- "@things-factory/integration-sellercraft": "^3.7.5",
30
- "@things-factory/marketplace-base": "^3.7.5",
31
- "@things-factory/product-base": "^3.7.5",
28
+ "@things-factory/id-rule-base": "^3.7.6",
29
+ "@things-factory/integration-sellercraft": "^3.7.7",
30
+ "@things-factory/marketplace-base": "^3.7.9",
31
+ "@things-factory/product-base": "^3.7.8",
32
32
  "@things-factory/setting-base": "^3.7.5"
33
33
  },
34
- "gitHead": "43e77ed980b3e999d9d17aa75cf50a547f87f4e7"
34
+ "gitHead": "4d4b67315ce5f7a8a3e2cbc3206ff23b0f1d5f9d"
35
35
  }
@@ -1,8 +1,10 @@
1
+ import { Brackets, getRepository, SelectQueryBuilder } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
4
  import { getPermittedBizplaceIds } from '@things-factory/biz-base'
3
- import { Product } from '@things-factory/product-base'
5
+ import { Product, ProductDetail } from '@things-factory/product-base'
4
6
  import { buildQuery, Domain } from '@things-factory/shell'
5
- import { getRepository, SelectQueryBuilder, Brackets } from 'typeorm'
7
+
6
8
  import { Inventory, InventoryChange } from '../../../entities'
7
9
 
8
10
  export const inventoriesResolver = {
@@ -12,7 +14,7 @@ export const inventoriesResolver = {
12
14
  const productFilters = filters.find(x => x.name == 'product_info')
13
15
  filters = filters.filter(x => x.name != 'product_info')
14
16
  const params = { filters, pagination }
15
-
17
+
16
18
  if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {
17
19
  params.filters.push({
18
20
  name: 'bizplace',
@@ -67,20 +69,23 @@ export const inventoriesResolver = {
67
69
  qb.andWhere('CASE WHEN iv.lockedQty IS NULL THEN 0 ELSE iv.lockedQty END = 0')
68
70
  }
69
71
 
70
- if(productFilters){
72
+ if (productFilters) {
71
73
  let productFilterValue = `%${productFilters.value.toLowerCase()}%`
72
- qb.andWhere((qb) => {
73
- const subQuery = qb.subQuery()
74
- .select()
75
- .from(Product, `products`)
76
- .where(`products.id = iv.product_id`)
77
- .andWhere(new Brackets(qb => {
78
- qb.where("Lower(products.sku) LIKE :productInfo", { productInfo: productFilterValue})
79
- .orWhere("Lower(products.name) LIKE :productInfo", { productInfo: productFilterValue})
80
- .orWhere("Lower(products.description) LIKE :productInfo", { productInfo: productFilterValue})
81
- }))
82
- .getQuery();
83
- return `EXISTS ${subQuery}`;
74
+ qb.andWhere(qb => {
75
+ const subQuery = qb
76
+ .subQuery()
77
+ .select()
78
+ .from(Product, `products`)
79
+ .where(`products.id = iv.product_id`)
80
+ .andWhere(
81
+ new Brackets(qb => {
82
+ qb.where('Lower(products.sku) LIKE :productInfo', { productInfo: productFilterValue })
83
+ .orWhere('Lower(products.name) LIKE :productInfo', { productInfo: productFilterValue })
84
+ .orWhere('Lower(products.description) LIKE :productInfo', { productInfo: productFilterValue })
85
+ })
86
+ )
87
+ .getQuery()
88
+ return `EXISTS ${subQuery}`
84
89
  })
85
90
  }
86
91
 
@@ -115,6 +120,14 @@ export const inventoriesResolver = {
115
120
  const selectedQty = item.lockedQty ? item.lockedQty : 0
116
121
  const selectedUomValue = item.lockedUomValue ? item.lockedUomValue : 0
117
122
 
123
+ item.product['productDetails'] = await getRepository(ProductDetail).find({
124
+ where: {
125
+ product: item.product.id,
126
+ packingType: item.packingType,
127
+ packingSize: item.packingSize
128
+ }
129
+ })
130
+
118
131
  return {
119
132
  ...item,
120
133
  changeCount: inventoryChangeCount,
@@ -11,7 +11,7 @@ import { inventoryHistoryPalletReport } from './inventory-history-pallet-report'
11
11
  import { inventoryHistoryPalletDetailReport } from './inventory-history-pallet-detail-report'
12
12
  import { inventoryHistoryPalletStorageReport } from './inventory-history-pallet-storage-report'
13
13
  import { inventoryHistorySummaryReport } from './inventory-history-summary-report'
14
- import { onhandInventoriesResolver } from './onhand-inventories'
14
+ import { onhandInventoriesResolver, onhandInventories } from './onhand-inventories'
15
15
 
16
16
  export const Query = {
17
17
  ...inventoryHistoriesResolver,
@@ -32,3 +32,6 @@ export const Mutation = {
32
32
  ...deleteInventoryHistory,
33
33
  ...deleteInventoryHistories
34
34
  }
35
+
36
+
37
+ export { onhandInventories }
@@ -6,232 +6,239 @@ import { Domain } from '@things-factory/shell'
6
6
 
7
7
  export const onhandInventoriesResolver = {
8
8
  async onhandInventories(_: any, { filters, pagination, sortings, locationSortingRules }, context: any) {
9
- const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state
10
-
11
- // define all inputs
12
- let userFilter = filters.find(data => data.name === 'user')
13
- let product = filters.find(data => data.name === 'product')
14
- let createdAt = filters.find(data => data.name === 'created_at')
15
- let location = filters.find(data => data.name === 'location')
16
- let batchId = filters.find(data => data.name === 'batchId')
17
- let palletId = filters.find(data => data.name === 'palletId')
18
- let cartonId = filters.find(data => data.name === 'cartonId')
19
- let packingType = filters.find(data => data.name === 'packingType')
20
- let timezoneOffset = filters.find(data => data.name === 'timezoneOffset').value + ' minutes'
21
-
22
- // expiration date filter
23
- let expiration = filters.find(data => data.name === 'expiration').value
24
- let expFromDate = filters.find(data => data.name === 'expFromDate')
25
- let expToDate = filters.find(data => data.name === 'expToDate')
26
-
27
- let bizplaceFilter = { name: '', operator: '', value: [] }
28
-
29
- // prepare query filters
30
- if (userFilter) {
31
- const user: User = await tx.getRepository(User).findOne({
32
- where: { id: userFilter.value },
33
- relations: ['bizplaces']
34
- })
9
+ return await onhandInventories(filters, pagination, sortings, locationSortingRules, context)
10
+ }
11
+ }
35
12
 
36
- const bizplace: Bizplace = user.bizplaces[0]
37
-
38
- if (!bizplace) throw 'Invalid input'
39
-
40
- bizplaceFilter = { name: 'bizplace', operator: 'eq', value: [bizplace.id] }
41
- } else {
42
- bizplaceFilter = !filters.find((filter: any) => filter.name === 'bizplace')
43
- ? {
44
- name: 'bizplace',
45
- operator: 'in',
46
- value: await getPermittedBizplaceIds(domain, user),
47
- relation: true
48
- }
49
- : {
50
- ...filters.find(data => data.name === 'bizplace'),
51
- value: [filters.find(data => data.name === 'bizplace').value]
52
- }
53
- }
13
+ export async function onhandInventories(
14
+ filters,
15
+ pagination,
16
+ sortings,
17
+ locationSortingRules,
18
+ context,
19
+ setPagination = true
20
+ ) {
21
+ const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state
22
+
23
+ // define all inputs
24
+ let userFilter = filters.find(data => data.name === 'user')
25
+ let product = filters.find(data => data.name === 'product')
26
+ let createdAt = filters.find(data => data.name === 'created_at')
27
+ let location = filters.find(data => data.name === 'location')
28
+ let batchId = filters.find(data => data.name === 'batchId')
29
+ let palletId = filters.find(data => data.name === 'palletId')
30
+ let cartonId = filters.find(data => data.name === 'cartonId')
31
+ let packingType = filters.find(data => data.name === 'packingType')
32
+ let timezoneOffset = filters.find(data => data.name === 'timezoneOffset').value + ' minutes'
33
+
34
+ // expiration date filter
35
+ let expiration = filters.find(data => data.name === 'expiration').value
36
+ let expFromDate = filters.find(data => data.name === 'expFromDate')
37
+ let expToDate = filters.find(data => data.name === 'expToDate')
38
+
39
+ let bizplaceFilter = { name: '', operator: '', value: [] }
40
+
41
+ // prepare query filters
42
+ if (userFilter) {
43
+ const user: User = await tx.getRepository(User).findOne({
44
+ where: { id: userFilter.value },
45
+ relations: ['bizplaces']
46
+ })
54
47
 
55
- let queryFilter = ``
56
- let bizplaces = bizplaceFilter.value.map(id => `('${id}')`).join(',')
57
-
58
- if (product) {
59
- let products = product.value
60
- .toLowerCase()
61
- .split(',')
62
- .map(prod => {
63
- return "'%" + prod.trim().replace(/'/g, "''") + "%'"
64
- })
65
- .join(',')
66
-
67
- queryFilter =
68
- queryFilter +
69
- ` and exists (
70
- select prd.id as product_id from products prd
71
- inner join bizplaces b on b.id = prd.bizplace_id
72
- inner join companies c on c.domain_id = b.domain_id
73
- inner join bizplaces b2 on b2.company_id = c.id
74
- where exists (
75
- SELECT * FROM tmp_bizfilter bizFilter
76
- WHERE bizFilter.bizplace_id = "b2"."id"
77
- )
78
- and (lower(prd.name) like any(array[${products}])
79
- or lower(prd.description) like any(array[${products}])
80
- or lower(prd.sku) like any(array[${products}]))
81
- and prd.id = rih.product_id
82
- group by prd.id
83
- )`
84
- }
48
+ const bizplace: Bizplace = user.bizplaces[0]
85
49
 
86
- if (location) {
87
- let locations = location.value
88
- .map(loc => {
89
- return "'" + loc + "'"
90
- })
91
- .join(',')
92
-
93
- queryFilter =
94
- queryFilter +
95
- `and exists (
96
- select loc.id from locations loc where
97
- loc.id = any(array[${locations}]::uuid[])
98
- and loc.id = rih.location_id
99
- )`
100
- }
50
+ if (!bizplace) throw 'Invalid input'
101
51
 
102
- // default sorting
103
- let queryOrder = 'order by created_at desc'
104
- if (sortings && sortings.length > 0) {
105
- const arrObjectMap = [
106
- { name: 'palletId', value: 'rih.pallet_id' },
107
- { name: 'cartonId', value: 'rih.carton_id' },
108
- { name: 'batchId', value: 'rih.batch_id' },
109
- { name: 'initialInboundAt', value: 'rih.initial_inbound_at' },
110
- { name: 'bizplace|name', value: 'bz.name' },
111
- { name: 'product|name', value: 'prd.sku' },
112
- { name: 'remainQty', value: 'rih.qty' },
113
- { name: 'location|name', value: 'loc.name' }
114
- ]
115
- sortings.forEach((sorting, idx) => {
116
- let itmIndex = arrObjectMap.findIndex(x => x.name === sorting.name)
117
-
118
- queryOrder = `${idx === 0 ? 'order by' : queryOrder + ','} ${
119
- itmIndex >= 0 ? arrObjectMap[itmIndex].value : sorting.name
120
- } ${sorting.desc ? 'DESC' : 'ASC'}`
121
- })
122
- }
123
-
124
- if (batchId) queryFilter = `${queryFilter} and lower(rih.batch_id) like '${batchId.value.toLowerCase()}' `
52
+ bizplaceFilter = { name: 'bizplace', operator: 'eq', value: [bizplace.id] }
53
+ } else {
54
+ bizplaceFilter = !filters.find((filter: any) => filter.name === 'bizplace')
55
+ ? {
56
+ name: 'bizplace',
57
+ operator: 'in',
58
+ value: await getPermittedBizplaceIds(domain, user),
59
+ relation: true
60
+ }
61
+ : {
62
+ ...filters.find(data => data.name === 'bizplace'),
63
+ value: [filters.find(data => data.name === 'bizplace').value]
64
+ }
65
+ }
125
66
 
126
- if (palletId) queryFilter = `${queryFilter} and rih.pallet_id like '${palletId.value}' `
67
+ let queryFilter = ``
68
+ let bizplaces = bizplaceFilter.value.map(id => `('${id}')`).join(',')
127
69
 
128
- if (cartonId) queryFilter = `${queryFilter} and rih.carton_id like '${cartonId.value}' `
70
+ if (product) {
71
+ let products = product.value
72
+ .toLowerCase()
73
+ .split(',')
74
+ .map(prod => {
75
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'"
76
+ })
77
+ .join(',')
78
+
79
+ queryFilter =
80
+ queryFilter +
81
+ ` and exists (
82
+ select prd.id as product_id from products prd
83
+ inner join bizplaces b on b.id = prd.bizplace_id
84
+ inner join companies c on c.domain_id = b.domain_id
85
+ inner join bizplaces b2 on b2.company_id = c.id
86
+ where exists (
87
+ SELECT * FROM tmp_bizfilter bizFilter
88
+ WHERE bizFilter.bizplace_id = "b2"."id"
89
+ )
90
+ and (lower(prd.name) like any(array[${products}])
91
+ or lower(prd.description) like any(array[${products}])
92
+ or lower(prd.sku) like any(array[${products}]))
93
+ and prd.id = rih.product_id
94
+ group by prd.id
95
+ )`
96
+ }
129
97
 
130
- if (packingType) queryFilter = `${queryFilter} and rih.packing_type like '${packingType.value}' `
98
+ if (location) {
99
+ let locations = location.value
100
+ .map(loc => {
101
+ return "'" + loc + "'"
102
+ })
103
+ .join(',')
104
+
105
+ queryFilter =
106
+ queryFilter +
107
+ `and exists (
108
+ select loc.id from locations loc where
109
+ loc.id = any(array[${locations}]::uuid[])
110
+ and loc.id = rih.location_id
111
+ )`
112
+ }
131
113
 
132
- let expirationQueryFilter = ``
133
- if (expiration)
134
- expirationQueryFilter = ` and iv.expiration_date >= '${expFromDate.value}'::timestamp + '${timezoneOffset}'::INTERVAL and
135
- iv.expiration_date <= '${expToDate.value}'::timestamp + '${timezoneOffset}'::INTERVAL + '1 day'::INTERVAL`
114
+ // default sorting
115
+ let queryOrder = 'order by created_at desc'
116
+ if (sortings && sortings.length > 0) {
117
+ const arrObjectMap = [
118
+ { name: 'palletId', value: 'rih.pallet_id' },
119
+ { name: 'cartonId', value: 'rih.carton_id' },
120
+ { name: 'batchId', value: 'rih.batch_id' },
121
+ { name: 'initialInboundAt', value: 'rih.initial_inbound_at' },
122
+ { name: 'bizplace|name', value: 'bz.name' },
123
+ { name: 'product|name', value: 'prd.sku' },
124
+ { name: 'remainQty', value: 'rih.qty' },
125
+ { name: 'location|name', value: 'loc.name' }
126
+ ]
127
+ sortings.forEach((sorting, idx) => {
128
+ let itmIndex = arrObjectMap.findIndex(x => x.name === sorting.name)
129
+
130
+ queryOrder = `${idx === 0 ? 'order by' : queryOrder + ','} ${
131
+ itmIndex >= 0 ? arrObjectMap[itmIndex].value : sorting.name
132
+ } ${sorting.desc ? 'DESC' : 'ASC'}`
133
+ })
134
+ }
136
135
 
137
- // query the results
138
- await tx.query(`
139
- CREATE TEMP TABLE tmp_bizfilter AS (
140
- SELECT bizplace_id::uuid FROM (VALUES ${bizplaces}) AS bizFilter(bizplace_id)
141
- );
142
- `)
143
-
144
- await tx.query(
145
- `
146
- create temp table tmp_src as (
147
- select domain_id, pallet_id, carton_id, seq, qty, uom_value, packing_type, batch_id, batch_id_ref, created_at, status,
148
- product_id::uuid as product_id, bizplace_id::uuid as bizplace_id, location_id::uuid as location_id
149
- from reduced_inventory_histories rih
150
- where domain_id = $1 and created_at < $2::timestamp + $3::INTERVAL + '1 day'::INTERVAL
136
+ if (batchId) queryFilter = `${queryFilter} and lower(rih.batch_id) like '${batchId.value.toLowerCase()}' `
137
+
138
+ if (palletId) queryFilter = `${queryFilter} and rih.pallet_id like '${palletId.value}' `
139
+
140
+ if (cartonId) queryFilter = `${queryFilter} and rih.carton_id like '${cartonId.value}' `
141
+
142
+ if (packingType) queryFilter = `${queryFilter} and rih.packing_type like '${packingType.value}' `
143
+
144
+ let expirationQueryFilter = ``
145
+ if (expiration)
146
+ expirationQueryFilter = ` and iv.expiration_date >= '${expFromDate.value}'::timestamp + '${timezoneOffset}'::INTERVAL and
147
+ iv.expiration_date <= '${expToDate.value}'::timestamp + '${timezoneOffset}'::INTERVAL + '1 day'::INTERVAL`
148
+
149
+ // query the results
150
+ await tx.query(`
151
+ CREATE TEMP TABLE tmp_bizfilter on commit drop AS (
152
+ SELECT bizplace_id::uuid FROM (VALUES ${bizplaces}) AS bizFilter(bizplace_id)
153
+ );
154
+ `)
155
+
156
+ await tx.query(
157
+ `
158
+ create temp table tmp_src on commit drop as (
159
+ select domain_id, pallet_id, carton_id, seq, qty, uom_value, packing_type, batch_id, batch_id_ref, created_at, status,
160
+ product_id::uuid as product_id, bizplace_id::uuid as bizplace_id, location_id::uuid as location_id
161
+ from reduced_inventory_histories rih
162
+ where domain_id = $1 and created_at < $2::timestamp + $3::INTERVAL + '1 day'::INTERVAL
163
+ );
164
+ `,
165
+ [domain.id, createdAt.value, timezoneOffset]
166
+ )
167
+
168
+ await tx.query(
169
+ `
170
+ create temp table tmp_data on commit drop as (
171
+ select dt.*, rih.carton_id, rih.batch_id, rih.batch_id_ref, rih.product_id, rih.packing_type, rih.bizplace_id, rih.location_id, iv.uom,
172
+ iv.expiration_date, iv.reusable_pallet_id, iv.remark
173
+ from
174
+ (
175
+ select ih.domain_id, ih.pallet_id, sum(ih.qty) as qty, sum(ih.uom_value) as uom_value, max(ih.seq) as last_seq, max(ih.created_at) as created_at,
176
+ min(ih.created_at) as initial_inbound_at
177
+ from tmp_src ih
178
+ group by ih.domain_id, ih.pallet_id
179
+ ) dt
180
+ inner join tmp_src rih on dt.domain_id = rih.domain_id and dt.pallet_id = rih.pallet_id and dt.last_seq = rih.seq and rih.status <> 'TERMINATED'
181
+ inner join inventories iv on iv.domain_id = dt.domain_id and iv.pallet_id = dt.pallet_id
182
+ where exists (
183
+ SELECT * FROM tmp_bizfilter bizFilter
184
+ WHERE bizFilter.bizplace_id = "rih"."bizplace_id"
185
+ )
186
+ ${queryFilter}
187
+ ${expirationQueryFilter}
151
188
  );
152
- `,
153
- [domain.id, createdAt.value, timezoneOffset]
154
- )
155
-
156
- await tx.query(
157
- `
158
- create temp table tmp_data as (
159
- select dt.*, rih.carton_id, rih.batch_id, rih.batch_id_ref, rih.product_id, rih.packing_type, rih.bizplace_id, rih.location_id, iv.uom,
160
- iv.expiration_date, iv.reusable_pallet_id, iv.remark
161
- from
162
- (
163
- select ih.domain_id, ih.pallet_id, sum(ih.qty) as qty, sum(ih.uom_value) as uom_value, max(ih.seq) as last_seq, max(ih.created_at) as created_at,
164
- min(ih.created_at) as initial_inbound_at
165
- from tmp_src ih
166
- group by ih.domain_id, ih.pallet_id
167
- ) dt
168
- inner join tmp_src rih on dt.domain_id = rih.domain_id and dt.pallet_id = rih.pallet_id and dt.last_seq = rih.seq and rih.status <> 'TERMINATED'
169
- inner join inventories iv on iv.domain_id = dt.domain_id and iv.pallet_id = dt.pallet_id
170
- where exists (
171
- SELECT * FROM tmp_bizfilter bizFilter
172
- WHERE bizFilter.bizplace_id = "rih"."bizplace_id"
173
- )
174
- ${queryFilter}
175
- ${expirationQueryFilter}
176
- );
177
- `
178
- )
179
-
180
- const total: any = await tx.query(`select count(*) from tmp_data`)
181
-
182
- const result: any = await tx.query(
183
- `
184
- select
185
- rih.domain_id, rih.pallet_id as "palletId", rih.carton_id as "cartonId", rih.qty as "remainQty", rih.uom_value as "uomValue", rih.uom, rih.last_seq, rih.created_at,
186
- rih.initial_inbound_at as "initialInboundAt",
187
- case when rih.reusable_pallet_id is not null then concat(rih.batch_id, ' (', plt.name, ')') else rih.batch_id end as "batchId",
188
- rih.batch_id_ref as "batchIdRef", rih.product_id, rih.packing_type as "packingType", rih.bizplace_id, rih.location_id,
189
- prd.id as product_id, prd.name as product_name, prd.sku as product_sku, prd.description as product_description,
190
- bz.id as bizplace_id, bz.name as bizplace_name,
191
- loc.id as location_id, loc.name as location_name, loc."zone" as location_zone, loc."row" as location_row, loc."column" as location_column, loc.shelf as location_shelf,
192
- wh.name as warehouse_name, plt.name as reusable_pallet_name,
193
- rih.remark,
194
- rih.expiration_date as "expirationDate"
195
- from tmp_data rih
196
- left join pallets plt on plt.id = rih.reusable_pallet_id
197
- inner join products prd on prd.id = rih.product_id
198
- inner join bizplaces bz on bz.id = rih.bizplace_id
199
- inner join locations loc on loc.id = rih.location_id
200
- inner join warehouses wh on wh.id = loc.warehouse_id
201
- WHERE 1 = 1
202
- ${queryOrder}
203
- OFFSET $1 LIMIT $2;
204
- `,
205
- [(pagination.page - 1) * pagination.limit, pagination.limit]
206
- )
207
-
208
- tx.query(`
209
- drop table tmp_src, tmp_data, tmp_bizfilter
210
- `)
211
-
212
- // map all results
213
- let items = result.map(itm => {
214
- return {
215
- ...itm,
216
- bizplace: {
217
- id: itm.bizplace_id,
218
- name: itm.bizplace_name
219
- },
220
- location: {
221
- id: itm.location_id,
222
- name: itm.location_name,
223
- type: itm.location_type,
224
- zone: itm.location_zone
225
- },
226
- product: {
227
- id: itm.product_id,
228
- name: itm.product_name,
229
- description: itm.product_description,
230
- sku: itm.product_sku
231
- }
189
+ `
190
+ )
191
+
192
+ const total: any = await tx.query(`select count(*) from tmp_data`)
193
+
194
+ const result: any = await tx.query(
195
+ `
196
+ select
197
+ rih.domain_id, rih.pallet_id as "palletId", rih.carton_id as "cartonId", rih.qty as "remainQty", rih.uom_value as "uomValue", rih.uom, rih.last_seq, rih.created_at,
198
+ rih.initial_inbound_at as "initialInboundAt",
199
+ case when rih.reusable_pallet_id is not null then concat(rih.batch_id, ' (', plt.name, ')') else rih.batch_id end as "batchId",
200
+ rih.batch_id_ref as "batchIdRef", rih.product_id, rih.packing_type as "packingType", rih.bizplace_id, rih.location_id,
201
+ prd.id as product_id, prd.name as product_name, prd.sku as product_sku, prd.description as product_description,
202
+ bz.id as bizplace_id, bz.name as bizplace_name,
203
+ loc.id as location_id, loc.name as location_name, loc."zone" as location_zone, loc."row" as location_row, loc."column" as location_column, loc.shelf as location_shelf,
204
+ wh.name as warehouse_name, plt.name as reusable_pallet_name,
205
+ rih.remark,
206
+ rih.expiration_date as "expirationDate"
207
+ from tmp_data rih
208
+ left join pallets plt on plt.id = rih.reusable_pallet_id
209
+ inner join products prd on prd.id = rih.product_id
210
+ inner join bizplaces bz on bz.id = rih.bizplace_id
211
+ inner join locations loc on loc.id = rih.location_id
212
+ inner join warehouses wh on wh.id = loc.warehouse_id
213
+ WHERE 1 = 1
214
+ ${queryOrder}
215
+ ${setPagination ? 'OFFSET ' + (pagination.page - 1) * pagination.limit + ' LIMIT ' + pagination.limit : ''}
216
+ ;
217
+ `
218
+ )
219
+
220
+ // map all results
221
+ let items = result.map(itm => {
222
+ return {
223
+ ...itm,
224
+ bizplace: {
225
+ id: itm.bizplace_id,
226
+ name: itm.bizplace_name
227
+ },
228
+ location: {
229
+ id: itm.location_id,
230
+ name: itm.location_name,
231
+ type: itm.location_type,
232
+ zone: itm.location_zone
233
+ },
234
+ product: {
235
+ id: itm.product_id,
236
+ name: itm.product_name,
237
+ description: itm.product_description,
238
+ sku: itm.product_sku
232
239
  }
233
- })
240
+ }
241
+ })
234
242
 
235
- return { items, total: total[0].count }
236
- }
243
+ return { items, total: total[0].count }
237
244
  }
@@ -20,10 +20,10 @@ export const InventoryBundleGroup = gql`
20
20
  releaseQty: Int
21
21
  remainUomValue: Float
22
22
  lockedUomValue: Float
23
+ uom: String
23
24
  releaseUomValue: Float
24
25
  releaseUomValueWithUom: String
25
26
  packingType: String
26
- uom: String
27
27
  domain: Domain
28
28
  description: String
29
29
  updater: User
package/server/index.ts CHANGED
@@ -3,5 +3,6 @@ export * from './entities'
3
3
  export * from './graphql'
4
4
  export { createLocation, deleteLocation, deleteLocations, updateLocation } from './graphql/resolvers/location'
5
5
  export { createWarehouse, deleteWarehouse, deleteWarehouses, updateWarehouse } from './graphql/resolvers/warehouse'
6
+ export { onhandInventories } from './graphql/resolvers/inventory-history/onhand-inventories'
6
7
  export * from './migrations'
7
8
  export * from './utils'