@things-factory/operato-wms 6.2.100 → 6.2.102
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 +35 -35
- package/dist-server/graphql/index.js +0 -11
- package/dist-server/graphql/index.js.map +0 -1
- package/dist-server/graphql/resolvers/board-setting/board-settings.js +0 -76
- package/dist-server/graphql/resolvers/board-setting/board-settings.js.map +0 -1
- package/dist-server/graphql/resolvers/board-setting/index.js +0 -6
- package/dist-server/graphql/resolvers/board-setting/index.js.map +0 -1
- package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js +0 -87
- package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js.map +0 -1
- package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js +0 -138
- package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js.map +0 -1
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js +0 -124
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js.map +0 -1
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js +0 -158
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js.map +0 -1
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +0 -90
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js.map +0 -1
- package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js +0 -36
- package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js.map +0 -1
- package/dist-server/graphql/resolvers/custom/elccl/index.js +0 -11
- package/dist-server/graphql/resolvers/custom/elccl/index.js.map +0 -1
- package/dist-server/graphql/resolvers/custom/kimeda/index.js +0 -6
- package/dist-server/graphql/resolvers/custom/kimeda/index.js.map +0 -1
- package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js +0 -42
- package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js.map +0 -1
- package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js +0 -35
- package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js.map +0 -1
- package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js +0 -23
- package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js.map +0 -1
- package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js +0 -23
- package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js.map +0 -1
- package/dist-server/graphql/resolvers/dashboard/index.js +0 -12
- package/dist-server/graphql/resolvers/dashboard/index.js.map +0 -1
- package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js +0 -56
- package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js.map +0 -1
- package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js +0 -124
- package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js.map +0 -1
- package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js +0 -35
- package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js.map +0 -1
- package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js +0 -56
- package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js.map +0 -1
- package/dist-server/graphql/resolvers/index.js +0 -27
- package/dist-server/graphql/resolvers/index.js.map +0 -1
- package/dist-server/graphql/resolvers/inventory-comparison/index.js +0 -6
- package/dist-server/graphql/resolvers/inventory-comparison/index.js.map +0 -1
- package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js +0 -78
- package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js.map +0 -1
- package/dist-server/graphql/resolvers/opa-menu/index.js +0 -6
- package/dist-server/graphql/resolvers/opa-menu/index.js.map +0 -1
- package/dist-server/graphql/resolvers/opa-menu/opa-menus.js +0 -71
- package/dist-server/graphql/resolvers/opa-menu/opa-menus.js.map +0 -1
- package/dist-server/graphql/resolvers/other/add-release-good-products.js +0 -291
- package/dist-server/graphql/resolvers/other/add-release-good-products.js.map +0 -1
- package/dist-server/graphql/resolvers/other/index.js +0 -8
- package/dist-server/graphql/resolvers/other/index.js.map +0 -1
- package/dist-server/graphql/resolvers/other/page-settings.js +0 -87
- package/dist-server/graphql/resolvers/other/page-settings.js.map +0 -1
- package/dist-server/graphql/resolvers/reports/costing-report.js +0 -172
- package/dist-server/graphql/resolvers/reports/costing-report.js.map +0 -1
- package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js +0 -200
- package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js.map +0 -1
- package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js +0 -140
- package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js.map +0 -1
- package/dist-server/graphql/resolvers/reports/index.js +0 -12
- package/dist-server/graphql/resolvers/reports/index.js.map +0 -1
- package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js +0 -232
- package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js.map +0 -1
- package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js +0 -143
- package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js.map +0 -1
- package/dist-server/graphql/resolvers/reports/product-label-report.js +0 -57
- package/dist-server/graphql/resolvers/reports/product-label-report.js.map +0 -1
- package/dist-server/graphql/resolvers/reports/release-inventory-report.js +0 -180
- package/dist-server/graphql/resolvers/reports/release-inventory-report.js.map +0 -1
- package/dist-server/graphql/resolvers/shipping-provider/index.js +0 -6
- package/dist-server/graphql/resolvers/shipping-provider/index.js.map +0 -1
- package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +0 -20
- package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +0 -1
- package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/index.js +0 -6
- package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/index.js.map +0 -1
- package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js +0 -65
- package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js.map +0 -1
- package/dist-server/graphql/types/board-setting/board-setting.js +0 -14
- package/dist-server/graphql/types/board-setting/board-setting.js.map +0 -1
- package/dist-server/graphql/types/board-setting/index.js +0 -9
- package/dist-server/graphql/types/board-setting/index.js.map +0 -1
- package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report-list.js +0 -12
- package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report-list.js.map +0 -1
- package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report.js +0 -28
- package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report.js.map +0 -1
- package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report-list.js +0 -12
- package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report-list.js.map +0 -1
- package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report.js +0 -23
- package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report.js.map +0 -1
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.js +0 -20
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.js.map +0 -1
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report-list.js +0 -12
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report-list.js.map +0 -1
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report.js +0 -21
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report.js.map +0 -1
- package/dist-server/graphql/types/custom/elccl/elccl-pallet-detail-report.js +0 -20
- package/dist-server/graphql/types/custom/elccl/elccl-pallet-detail-report.js.map +0 -1
- package/dist-server/graphql/types/custom/elccl/index.js +0 -30
- package/dist-server/graphql/types/custom/elccl/index.js.map +0 -1
- package/dist-server/graphql/types/custom/kimeda/index.js +0 -7
- package/dist-server/graphql/types/custom/kimeda/index.js.map +0 -1
- package/dist-server/graphql/types/dashboard/index.js +0 -17
- package/dist-server/graphql/types/dashboard/index.js.map +0 -1
- package/dist-server/graphql/types/dashboard/inventory-expiry-counter.js +0 -13
- package/dist-server/graphql/types/dashboard/inventory-expiry-counter.js.map +0 -1
- package/dist-server/graphql/types/dashboard/inventory-expiry-status.js +0 -12
- package/dist-server/graphql/types/dashboard/inventory-expiry-status.js.map +0 -1
- package/dist-server/graphql/types/dashboard/order-status-counter.js +0 -12
- package/dist-server/graphql/types/dashboard/order-status-counter.js.map +0 -1
- package/dist-server/graphql/types/index.js +0 -40
- package/dist-server/graphql/types/index.js.map +0 -1
- package/dist-server/graphql/types/inventory-comparison/index.js +0 -13
- package/dist-server/graphql/types/inventory-comparison/index.js.map +0 -1
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js +0 -12
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js.map +0 -1
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js +0 -16
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js.map +0 -1
- package/dist-server/graphql/types/opa-menu/index.js +0 -9
- package/dist-server/graphql/types/opa-menu/index.js.map +0 -1
- package/dist-server/graphql/types/opa-menu/opa-menu.js +0 -43
- package/dist-server/graphql/types/opa-menu/opa-menu.js.map +0 -1
- package/dist-server/graphql/types/other/index.js +0 -19
- package/dist-server/graphql/types/other/index.js.map +0 -1
- package/dist-server/graphql/types/other/page-setting.js +0 -34
- package/dist-server/graphql/types/other/page-setting.js.map +0 -1
- package/dist-server/graphql/types/reports/costing-report-list.js +0 -12
- package/dist-server/graphql/types/reports/costing-report-list.js.map +0 -1
- package/dist-server/graphql/types/reports/costing-report.js +0 -17
- package/dist-server/graphql/types/reports/costing-report.js.map +0 -1
- package/dist-server/graphql/types/reports/inbound-order-details-report-list.js +0 -12
- package/dist-server/graphql/types/reports/inbound-order-details-report-list.js.map +0 -1
- package/dist-server/graphql/types/reports/inbound-order-details-report.js +0 -57
- package/dist-server/graphql/types/reports/inbound-order-details-report.js.map +0 -1
- package/dist-server/graphql/types/reports/inbound-serial-number-report-list.js +0 -12
- package/dist-server/graphql/types/reports/inbound-serial-number-report-list.js.map +0 -1
- package/dist-server/graphql/types/reports/inbound-serial-number-report.js +0 -21
- package/dist-server/graphql/types/reports/inbound-serial-number-report.js.map +0 -1
- package/dist-server/graphql/types/reports/index.js +0 -43
- package/dist-server/graphql/types/reports/index.js.map +0 -1
- package/dist-server/graphql/types/reports/outbound-order-details-report-list.js +0 -12
- package/dist-server/graphql/types/reports/outbound-order-details-report-list.js.map +0 -1
- package/dist-server/graphql/types/reports/outbound-order-details-report.js +0 -74
- package/dist-server/graphql/types/reports/outbound-order-details-report.js.map +0 -1
- package/dist-server/graphql/types/reports/outbound-serial-number-report-list.js +0 -12
- package/dist-server/graphql/types/reports/outbound-serial-number-report-list.js.map +0 -1
- package/dist-server/graphql/types/reports/outbound-serial-number-report.js +0 -23
- package/dist-server/graphql/types/reports/outbound-serial-number-report.js.map +0 -1
- package/dist-server/graphql/types/reports/product-label-report-list.js +0 -12
- package/dist-server/graphql/types/reports/product-label-report-list.js.map +0 -1
- package/dist-server/graphql/types/reports/product-label-report.js +0 -14
- package/dist-server/graphql/types/reports/product-label-report.js.map +0 -1
- package/dist-server/graphql/types/reports/release-inventory-report-list.js +0 -12
- package/dist-server/graphql/types/reports/release-inventory-report-list.js.map +0 -1
- package/dist-server/graphql/types/reports/release-inventory-report.js +0 -27
- package/dist-server/graphql/types/reports/release-inventory-report.js.map +0 -1
- package/dist-server/graphql/types/shipping-provider/index.js +0 -10
- package/dist-server/graphql/types/shipping-provider/index.js.map +0 -1
- package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js +0 -11
- package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js.map +0 -1
- package/dist-server/graphql/types/shipping-provider/shipping-provider.js +0 -11
- package/dist-server/graphql/types/shipping-provider/shipping-provider.js.map +0 -1
- package/dist-server/graphql/types/warehouse-inventory-adjustment/index.js +0 -9
- package/dist-server/graphql/types/warehouse-inventory-adjustment/index.js.map +0 -1
- package/dist-server/index.js +0 -7
- package/dist-server/index.js.map +0 -1
- package/dist-server/migrations/1568858861188-SeedSetting.js +0 -51
- package/dist-server/migrations/1568858861188-SeedSetting.js.map +0 -1
- package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js +0 -35
- package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js.map +0 -1
- package/dist-server/migrations/1623381200659-SeedStoringRule.js +0 -33
- package/dist-server/migrations/1623381200659-SeedStoringRule.js.map +0 -1
- package/dist-server/migrations/index.js +0 -12
- package/dist-server/migrations/index.js.map +0 -1
- package/dist-server/opa-app-setting-constants.js +0 -13
- package/dist-server/opa-app-setting-constants.js.map +0 -1
- package/dist-server/routes.js +0 -2
- package/dist-server/routes.js.map +0 -1
- package/dist-server/tsconfig.tsbuildinfo +0 -1
- package/dist-server/utils/index.js +0 -5
- package/dist-server/utils/index.js.map +0 -1
- package/dist-server/utils/report-query-util.js +0 -42
- package/dist-server/utils/report-query-util.js.map +0 -1
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.elcclInventoryHistoryReport = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
|
-
exports.elcclInventoryHistoryReport = {
|
|
6
|
-
async elcclInventoryHistoryReport(_, params, context) {
|
|
7
|
-
try {
|
|
8
|
-
// const convertedParams = convertListParams(params)
|
|
9
|
-
const { tx } = context.state;
|
|
10
|
-
let bizplaceFilter = params.filters.find(data => data.name === 'bizplace');
|
|
11
|
-
let fromDate = params.filters.find(data => data.name === 'fromDate');
|
|
12
|
-
let toDate = params.filters.find(data => data.name === 'toDate');
|
|
13
|
-
let batchNo = params.filters.find(data => data.name === 'batch_no');
|
|
14
|
-
let product = params.filters.find(data => data.name === 'product');
|
|
15
|
-
if (!bizplaceFilter || !fromDate || !toDate)
|
|
16
|
-
throw 'Invalid input';
|
|
17
|
-
const bizplace = await tx.getRepository(biz_base_1.Bizplace).findOneBy({
|
|
18
|
-
id: bizplaceFilter.value
|
|
19
|
-
});
|
|
20
|
-
let batchNoQuery = '';
|
|
21
|
-
if (batchNo) {
|
|
22
|
-
batchNoQuery =
|
|
23
|
-
'AND Lower(invh.batch_id) LIKE ANY(ARRAY[' +
|
|
24
|
-
batchNo.value
|
|
25
|
-
.toLowerCase()
|
|
26
|
-
.split(',')
|
|
27
|
-
.map(prod => {
|
|
28
|
-
return "'%" + prod.trim().replace(/'/g, "''") + "%'";
|
|
29
|
-
})
|
|
30
|
-
.join(',') +
|
|
31
|
-
'])';
|
|
32
|
-
}
|
|
33
|
-
let productQuery = '';
|
|
34
|
-
if (product) {
|
|
35
|
-
let productValue = product.value
|
|
36
|
-
.toLowerCase()
|
|
37
|
-
.split(',')
|
|
38
|
-
.map(prod => {
|
|
39
|
-
return "'%" + prod.trim().replace(/'/g, "''") + "%'";
|
|
40
|
-
})
|
|
41
|
-
.join(',');
|
|
42
|
-
productQuery = `AND (
|
|
43
|
-
Lower(prd.name) LIKE ANY(ARRAY[${productValue}])
|
|
44
|
-
OR Lower(prd.sku) LIKE ANY(ARRAY[${productValue}])
|
|
45
|
-
OR Lower(prd.description) LIKE ANY(ARRAY[${productValue}])
|
|
46
|
-
)`;
|
|
47
|
-
}
|
|
48
|
-
await tx.query(`
|
|
49
|
-
create temp table temp_data_src AS
|
|
50
|
-
(
|
|
51
|
-
SELECT prd.sku AS product_sku, prd.name AS product_name, prd.description AS product_description, trim(invh.batch_id) as batch_id, invh.product_id,
|
|
52
|
-
invh.packing_type, invh.bizplace_id, invh.domain_id,
|
|
53
|
-
invh.ref_order_id, invh.order_no, invh.order_ref_no, invh.transaction_type, invh.created_at,
|
|
54
|
-
invh.qty, invh.opening_qty, invh.uom_value, invh.opening_uom_value
|
|
55
|
-
FROM reduced_inventory_histories invh
|
|
56
|
-
INNER JOIN products prd ON prd.id = invh.product_id
|
|
57
|
-
WHERE invh.domain_id = $1
|
|
58
|
-
AND invh.bizplace_id = $2
|
|
59
|
-
AND invh.created_at <= $3
|
|
60
|
-
${batchNoQuery}
|
|
61
|
-
${productQuery}
|
|
62
|
-
)
|
|
63
|
-
`, [context.state.domain.id, bizplace.id, toDate.value]);
|
|
64
|
-
await tx.query(`
|
|
65
|
-
create temp table temp_inv_history as (
|
|
66
|
-
SELECT src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type,
|
|
67
|
-
src.bizplace_id, src.domain_id,
|
|
68
|
-
SUM(COALESCE(invh.qty,0)) AS qty,
|
|
69
|
-
0 AS opening_qty,
|
|
70
|
-
SUM(COALESCE(invh.uom_value,0)) AS uom_value,
|
|
71
|
-
0 AS opening_uom_value,
|
|
72
|
-
'Opening Balance' AS order_name,
|
|
73
|
-
'-' AS ref_no,
|
|
74
|
-
0 AS rn,
|
|
75
|
-
$1 AS created_at
|
|
76
|
-
FROM (
|
|
77
|
-
SELECT src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id,
|
|
78
|
-
src.domain_id
|
|
79
|
-
FROM temp_data_src src
|
|
80
|
-
GROUP BY src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id,
|
|
81
|
-
src.domain_id
|
|
82
|
-
) AS src
|
|
83
|
-
LEFT JOIN inventory_histories invh ON src.batch_id = trim(invh.batch_id) AND
|
|
84
|
-
src.product_id = invh.product_id AND
|
|
85
|
-
src.packing_type = invh.packing_type AND
|
|
86
|
-
src.bizplace_id = invh.bizplace_id AND
|
|
87
|
-
src.domain_id = invh.domain_id AND
|
|
88
|
-
invh.created_at < $1::timestamp AND
|
|
89
|
-
invh.transaction_type IN ('NEW', 'ADJUSTMENT', 'UNLOADING', 'PICKING', 'LOADING', 'UNDO_UNLOADING', 'CANCEL_ORDER', 'RETURN')
|
|
90
|
-
GROUP BY src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id,
|
|
91
|
-
src.domain_id
|
|
92
|
-
UNION ALL
|
|
93
|
-
SELECT product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id,
|
|
94
|
-
domain_id, sum(qty) as qty, sum(opening_qty) as opening_qty, sum(uom_value) as uom_value, sum(opening_uom_value) as opening_uom_value, order_name, ref_no, rn, MIN(created_at) as created_at
|
|
95
|
-
FROM (
|
|
96
|
-
SELECT invh.product_sku, invh.product_name, invh.product_description, invh.batch_id, invh.product_id, invh.packing_type, invh.bizplace_id,
|
|
97
|
-
invh.domain_id,
|
|
98
|
-
invh.qty, invh.opening_qty, invh.uom_value, invh.opening_uom_value,
|
|
99
|
-
CASE WHEN invh.transaction_type = 'ADJUSTMENT' THEN 'ADJUSTMENT'
|
|
100
|
-
WHEN invh.transaction_type = 'NEW' THEN 'NEW'
|
|
101
|
-
ELSE COALESCE(order_no, '-') END AS order_name,
|
|
102
|
-
CASE WHEN invh.transaction_type = 'ADJUSTMENT' THEN 'ADJUSTMENT'
|
|
103
|
-
WHEN invh.transaction_type = 'NEW' THEN 'NEW'
|
|
104
|
-
ELSE COALESCE(order_ref_no, '-') END AS ref_no,
|
|
105
|
-
1 AS rn, invh.created_at
|
|
106
|
-
FROM temp_data_src invh
|
|
107
|
-
LEFT JOIN arrival_notices arrNo ON cast(arrNo.id AS VARCHAR) = invh.ref_order_id AND (invh.transaction_type = 'UNLOADING' OR
|
|
108
|
-
invh.transaction_type = 'UNDO_UNLOADING')
|
|
109
|
-
LEFT JOIN worksheets wks ON cast(wks.id AS VARCHAR) = invh.ref_order_id AND invh.transaction_type = 'PICKING'
|
|
110
|
-
LEFT JOIN release_goods rel ON cast(rel.id AS VARCHAR) = cast(wks.release_good_id AS VARCHAR) AND
|
|
111
|
-
invh.transaction_type = 'PICKING'
|
|
112
|
-
WHERE (invh.qty <> 0 OR invh.uom_value <> 0)
|
|
113
|
-
AND invh.created_at BETWEEN $1::timestamp AND $2::timestamp
|
|
114
|
-
) AS inv_movement
|
|
115
|
-
GROUP BY product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id,
|
|
116
|
-
domain_id, order_name, ref_no, rn
|
|
117
|
-
)`, [fromDate.value, toDate.value]);
|
|
118
|
-
const result = await tx.query(`
|
|
119
|
-
select product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id,
|
|
120
|
-
domain_id, qty, opening_qty, uom_value, opening_uom_value, order_name, ref_no, created_at::date
|
|
121
|
-
from temp_inv_history invh where
|
|
122
|
-
exists (
|
|
123
|
-
select * from (
|
|
124
|
-
select batch_id, product_name, packing_type, sum(qty) as totalQty, count(*) as totalRow from temp_inv_history ih2 group by batch_id, product_name, packing_type
|
|
125
|
-
) src where src.batch_id = invh.batch_id and src.product_name = invh.product_name and src.packing_type = invh.packing_type and (src.totalRow > 1 or src.totalQty <> 0)
|
|
126
|
-
)
|
|
127
|
-
ORDER BY invh.batch_id asc, invh.product_name asc, invh.product_description asc, invh.packing_type asc, invh.rn asc, invh.created_at asc
|
|
128
|
-
`);
|
|
129
|
-
tx.query(`
|
|
130
|
-
drop table temp_data_src, temp_inv_history
|
|
131
|
-
`);
|
|
132
|
-
let items = result.map(itm => {
|
|
133
|
-
return {
|
|
134
|
-
batchId: itm.batch_id,
|
|
135
|
-
packingType: itm.packing_type,
|
|
136
|
-
product: {
|
|
137
|
-
id: itm.product_id,
|
|
138
|
-
sku: itm.product_sku,
|
|
139
|
-
name: itm.product_name,
|
|
140
|
-
description: itm.product_description
|
|
141
|
-
},
|
|
142
|
-
refNo: itm.ref_no,
|
|
143
|
-
qty: itm.qty,
|
|
144
|
-
uomValue: itm.uom_value,
|
|
145
|
-
openingQty: itm.opening_qty,
|
|
146
|
-
openingUomValue: itm.opening_uom_value,
|
|
147
|
-
orderNo: itm.order_name,
|
|
148
|
-
createdAt: itm.created_at
|
|
149
|
-
};
|
|
150
|
-
});
|
|
151
|
-
return items;
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
throw error;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
//# sourceMappingURL=elccl-inventory-history-report.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elccl-inventory-history-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const elcclInventoryHistoryReport = {\n async elcclInventoryHistoryReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n // const convertedParams = convertListParams(params)\n const { tx } = context.state\n\n let bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let batchNo = params.filters.find(data => data.name === 'batch_no')\n let product = params.filters.find(data => data.name === 'product')\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n let batchNoQuery = ''\n if (batchNo) {\n batchNoQuery =\n 'AND Lower(invh.batch_id) LIKE ANY(ARRAY[' +\n batchNo.value\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',') +\n '])'\n }\n\n let productQuery = ''\n if (product) {\n let productValue = product.value\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n productQuery = `AND (\n Lower(prd.name) LIKE ANY(ARRAY[${productValue}])\n OR Lower(prd.sku) LIKE ANY(ARRAY[${productValue}])\n OR Lower(prd.description) LIKE ANY(ARRAY[${productValue}])\n )`\n }\n\n await tx.query(\n `\n create temp table temp_data_src AS\n (\n SELECT prd.sku AS product_sku, prd.name AS product_name, prd.description AS product_description, trim(invh.batch_id) as batch_id, invh.product_id,\n invh.packing_type, invh.bizplace_id, invh.domain_id,\n invh.ref_order_id, invh.order_no, invh.order_ref_no, invh.transaction_type, invh.created_at,\n invh.qty, invh.opening_qty, invh.uom_value, invh.opening_uom_value\n FROM reduced_inventory_histories invh\n INNER JOIN products prd ON prd.id = invh.product_id\n WHERE invh.domain_id = $1\n AND invh.bizplace_id = $2\n AND invh.created_at <= $3\n ${batchNoQuery}\n ${productQuery}\n ) \n `,\n [context.state.domain.id, bizplace.id, toDate.value]\n )\n\n await tx.query(\n `\n create temp table temp_inv_history as (\n SELECT src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, \n src.bizplace_id, src.domain_id,\n SUM(COALESCE(invh.qty,0)) AS qty,\n 0 AS opening_qty,\n SUM(COALESCE(invh.uom_value,0)) AS uom_value,\n 0 AS opening_uom_value,\n 'Opening Balance' AS order_name,\n '-' AS ref_no,\n 0 AS rn,\n $1 AS created_at\n FROM (\n SELECT src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id, \n src.domain_id\n FROM temp_data_src src\n GROUP BY src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id, \n src.domain_id\n ) AS src \n LEFT JOIN inventory_histories invh ON src.batch_id = trim(invh.batch_id) AND \n src.product_id = invh.product_id AND \n src.packing_type = invh.packing_type AND \n src.bizplace_id = invh.bizplace_id AND \n src.domain_id = invh.domain_id AND\n invh.created_at < $1::timestamp AND\n invh.transaction_type IN ('NEW', 'ADJUSTMENT', 'UNLOADING', 'PICKING', 'LOADING', 'UNDO_UNLOADING', 'CANCEL_ORDER', 'RETURN')\n GROUP BY src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id, \n src.domain_id\n UNION ALL\n SELECT product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id, \n domain_id, sum(qty) as qty, sum(opening_qty) as opening_qty, sum(uom_value) as uom_value, sum(opening_uom_value) as opening_uom_value, order_name, ref_no, rn, MIN(created_at) as created_at\n FROM (\n SELECT invh.product_sku, invh.product_name, invh.product_description, invh.batch_id, invh.product_id, invh.packing_type, invh.bizplace_id, \n invh.domain_id,\n invh.qty, invh.opening_qty,\tinvh.uom_value, invh.opening_uom_value,\n CASE WHEN invh.transaction_type = 'ADJUSTMENT' THEN 'ADJUSTMENT'\n WHEN invh.transaction_type = 'NEW' THEN 'NEW'\n ELSE COALESCE(order_no, '-') END AS order_name,\n CASE WHEN invh.transaction_type = 'ADJUSTMENT' THEN 'ADJUSTMENT' \n WHEN invh.transaction_type = 'NEW' THEN 'NEW'\n ELSE COALESCE(order_ref_no, '-') END AS ref_no,\n 1 AS rn, invh.created_at\n FROM temp_data_src invh\n LEFT JOIN arrival_notices arrNo ON cast(arrNo.id AS VARCHAR) = invh.ref_order_id AND (invh.transaction_type = 'UNLOADING' OR \n invh.transaction_type = 'UNDO_UNLOADING')\n LEFT JOIN worksheets wks ON cast(wks.id AS VARCHAR) = invh.ref_order_id AND invh.transaction_type = 'PICKING'\n LEFT JOIN release_goods rel ON cast(rel.id AS VARCHAR) = cast(wks.release_good_id AS VARCHAR) AND \n invh.transaction_type = 'PICKING'\n WHERE (invh.qty <> 0 OR invh.uom_value <> 0)\n AND invh.created_at BETWEEN $1::timestamp AND $2::timestamp\n ) AS inv_movement \n GROUP BY product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id, \n domain_id, order_name, ref_no, rn\n )`,\n [fromDate.value, toDate.value]\n )\n\n const result: any = await tx.query(\n ` \n select product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id, \n domain_id, qty, opening_qty, uom_value, opening_uom_value, order_name, ref_no, created_at::date\n from temp_inv_history invh where\n exists (\n select * from (\n select batch_id, product_name, packing_type, sum(qty) as totalQty, count(*) as totalRow from temp_inv_history ih2 group by batch_id, product_name, packing_type\n ) src where src.batch_id = invh.batch_id and src.product_name = invh.product_name and src.packing_type = invh.packing_type and (src.totalRow > 1 or src.totalQty <> 0)\n )\n ORDER BY invh.batch_id asc, invh.product_name asc, invh.product_description asc, invh.packing_type asc, invh.rn asc, invh.created_at asc\n `\n )\n\n tx.query(\n `\n drop table temp_data_src, temp_inv_history\n `\n )\n\n let items = result.map(itm => {\n return {\n batchId: itm.batch_id,\n packingType: itm.packing_type,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description\n },\n refNo: itm.ref_no,\n qty: itm.qty,\n uomValue: itm.uom_value,\n openingQty: itm.opening_qty,\n openingUomValue: itm.opening_uom_value,\n orderNo: itm.order_name,\n createdAt: itm.created_at\n }\n })\n\n return items\n } catch (error) {\n throw error\n }\n }\n}\n"]}
|
package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.inventoryHistorySummaryReportQuery = exports.elcclInventoryHistorySummaryReport = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
|
-
const shell_1 = require("@things-factory/shell");
|
|
6
|
-
exports.elcclInventoryHistorySummaryReport = {
|
|
7
|
-
async elcclInventoryHistorySummaryReport(_, params, context) {
|
|
8
|
-
try {
|
|
9
|
-
const { tx } = context.state;
|
|
10
|
-
await inventoryHistorySummaryReportQuery(_, params, context);
|
|
11
|
-
const total = await tx.query(`select count(*) from temp_inventory_summary`);
|
|
12
|
-
const result = await tx.query(`
|
|
13
|
-
select * from temp_inventory_summary ORDER BY initial_date OFFSET $1 LIMIT $2
|
|
14
|
-
`, [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]);
|
|
15
|
-
let items = result.map(itm => {
|
|
16
|
-
return Object.assign(Object.assign({}, itm), { batchId: itm.batch_id, packingType: itm.packing_type, openingQty: itm.opening_qty, adjustmentQty: itm.adjustment_qty, closingQty: itm.closing_qty, totalInQty: itm.total_in_qty, totalOutQty: itm.total_out_qty, totalReturnQty: itm.total_return_qty, initialQty: itm.initial_qty, initialDate: itm.initial_date, product: {
|
|
17
|
-
id: itm.product_id,
|
|
18
|
-
sku: itm.product_sku,
|
|
19
|
-
name: itm.product_name,
|
|
20
|
-
description: itm.product_description
|
|
21
|
-
} });
|
|
22
|
-
});
|
|
23
|
-
return { items, total: total[0].count };
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
throw error;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
async function inventoryHistorySummaryReportQuery(_, params, context) {
|
|
31
|
-
try {
|
|
32
|
-
const { tx } = context.state;
|
|
33
|
-
let balanceOnlyFilter = params.filters.find(data => data.name === 'balanceOnly');
|
|
34
|
-
let bizplaceFilter = params.filters.find(data => data.name === 'bizplace');
|
|
35
|
-
let fromDate = params.filters.find(data => data.name === 'fromDate');
|
|
36
|
-
let toDate = params.filters.find(data => data.name === 'toDate');
|
|
37
|
-
if (!bizplaceFilter || !fromDate || !toDate)
|
|
38
|
-
throw 'Invalid input';
|
|
39
|
-
const bizplace = await (0, shell_1.getRepository)(biz_base_1.Bizplace).findOneBy({
|
|
40
|
-
id: bizplaceFilter.value
|
|
41
|
-
});
|
|
42
|
-
let balanceOnlyQuery = '';
|
|
43
|
-
if (balanceOnlyFilter && balanceOnlyFilter.value) {
|
|
44
|
-
balanceOnlyQuery = 'and (opening_qty + adjustment_qty + total_in_qty + total_out_qty + total_return_qty) > 0 ';
|
|
45
|
-
}
|
|
46
|
-
await tx.query(`
|
|
47
|
-
create temp table temp_inv_history on commit drop as (
|
|
48
|
-
select i2.pallet_id, ih.product_id::uuid, ih.packing_type, ih.batch_id,
|
|
49
|
-
ih.id as inventory_history_id, ih.seq, ih.status, ih.transaction_type, ih.qty, ih.opening_qty, ih.created_at,
|
|
50
|
-
ih.ref_order_id::uuid as ref_order_id
|
|
51
|
-
from inventories i2
|
|
52
|
-
inner join reduced_inventory_histories ih on ih.pallet_id = i2.pallet_id and ih.domain_id = i2.domain_id
|
|
53
|
-
where
|
|
54
|
-
i2.domain_id = $1
|
|
55
|
-
and i2.bizplace_id = $2
|
|
56
|
-
and ih.created_at <= $3
|
|
57
|
-
)
|
|
58
|
-
`, [context.state.domain.id, bizplace.id, toDate.value]);
|
|
59
|
-
await tx.query(`
|
|
60
|
-
create temp table temp_inventory_summary on commit drop as (
|
|
61
|
-
select src.*,
|
|
62
|
-
opening_qty + adjustment_qty + total_in_qty + total_out_qty + total_return_qty as closing_qty,
|
|
63
|
-
prd.name as product_name, prd.sku as product_sku, prd.description as product_description
|
|
64
|
-
from (
|
|
65
|
-
select ih.batch_id, ih.packing_type,
|
|
66
|
-
min(ih.created_at) as initial_date,
|
|
67
|
-
sum(case when (ih.transaction_type = 'UNLOADING' or ih.transaction_type = 'NEW') and rtn.id is null then qty else 0 end) as initial_qty,
|
|
68
|
-
sum(case when ih.created_at > $1 and ih.transaction_type = 'ADJUSTMENT' then ih.qty else 0 end) as adjustment_qty,
|
|
69
|
-
sum(case when ih.created_at < $1 then ih.qty else 0 end) as opening_qty,
|
|
70
|
-
sum(case when ih.created_at > $1 then case when ih.qty > 0 and ih.transaction_type <> 'ADJUSTMENT' and ih.transaction_type <> 'RETURN' and rtn.id is null then ih.qty else 0 end else 0 end) as total_in_qty,
|
|
71
|
-
sum(case when ih.created_at > $1 then case when (ih.qty < 0 and ih.transaction_type <> 'ADJUSTMENT') or ih.transaction_type = 'RETURN' then ih.qty else 0 end else 0 end) as total_out_qty,
|
|
72
|
-
ih.product_id,
|
|
73
|
-
sum(case when rtn.id is not null and ih.transaction_type <> 'ADJUSTMENT' and ih.created_at > $1 then qty else 0 end) as total_return_qty
|
|
74
|
-
from temp_inv_history ih
|
|
75
|
-
left join return_orders rtn on rtn.id = ih.ref_order_id
|
|
76
|
-
group by ih.batch_id, ih.product_id, ih.packing_type
|
|
77
|
-
order by batch_id
|
|
78
|
-
) src
|
|
79
|
-
inner join products prd on prd.id = src.product_id
|
|
80
|
-
where (opening_qty > 0 or total_in_qty > 0 or adjustment_qty > 0)
|
|
81
|
-
${balanceOnlyQuery}
|
|
82
|
-
)
|
|
83
|
-
`, [fromDate.value]);
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
throw error;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
exports.inventoryHistorySummaryReportQuery = inventoryHistorySummaryReportQuery;
|
|
90
|
-
//# sourceMappingURL=elccl-inventory-history-summary-report.js.map
|
package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elccl-inventory-history-summary-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\n\nexport const elcclInventoryHistorySummaryReport = {\n async elcclInventoryHistorySummaryReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n\n await inventoryHistorySummaryReportQuery(_, params, context)\n\n const total: any = await tx.query(`select count(*) from temp_inventory_summary`)\n\n const result: any = await tx.query(\n ` \n select * from temp_inventory_summary ORDER BY initial_date OFFSET $1 LIMIT $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n let items = result.map(itm => {\n return {\n ...itm,\n batchId: itm.batch_id,\n packingType: itm.packing_type,\n openingQty: itm.opening_qty,\n adjustmentQty: itm.adjustment_qty,\n closingQty: itm.closing_qty,\n totalInQty: itm.total_in_qty,\n totalOutQty: itm.total_out_qty,\n totalReturnQty: itm.total_return_qty,\n initialQty: itm.initial_qty,\n initialDate: itm.initial_date,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description\n }\n }\n })\n\n return { items, total: total[0].count }\n } catch (error) {\n throw error\n }\n }\n}\n\nexport async function inventoryHistorySummaryReportQuery(\n _: any,\n params: ListParam,\n context: ResolverContext\n): Promise<void> {\n try {\n const { tx } = context.state\n\n let balanceOnlyFilter = params.filters.find(data => data.name === 'balanceOnly')\n\n let bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n let balanceOnlyQuery = ''\n if (balanceOnlyFilter && balanceOnlyFilter.value) {\n balanceOnlyQuery = 'and (opening_qty + adjustment_qty + total_in_qty + total_out_qty + total_return_qty) > 0 '\n }\n\n await tx.query(\n `\n create temp table temp_inv_history on commit drop as (\n select i2.pallet_id, ih.product_id::uuid, ih.packing_type, ih.batch_id,\n ih.id as inventory_history_id, ih.seq, ih.status, ih.transaction_type, ih.qty, ih.opening_qty, ih.created_at,\n ih.ref_order_id::uuid as ref_order_id\n from inventories i2\n inner join reduced_inventory_histories ih on ih.pallet_id = i2.pallet_id and ih.domain_id = i2.domain_id\n where\n i2.domain_id = $1\n and i2.bizplace_id = $2\n and ih.created_at <= $3\n )\n `,\n [context.state.domain.id, bizplace.id, toDate.value]\n )\n\n await tx.query(\n `\n create temp table temp_inventory_summary on commit drop as (\n select src.*,\n opening_qty + adjustment_qty + total_in_qty + total_out_qty + total_return_qty as closing_qty,\n prd.name as product_name, prd.sku as product_sku, prd.description as product_description \n from (\n select ih.batch_id, ih.packing_type,\n min(ih.created_at) as initial_date,\n sum(case when (ih.transaction_type = 'UNLOADING' or ih.transaction_type = 'NEW') and rtn.id is null then qty else 0 end) as initial_qty,\n sum(case when ih.created_at > $1 and ih.transaction_type = 'ADJUSTMENT' then ih.qty else 0 end) as adjustment_qty,\n sum(case when ih.created_at < $1 then ih.qty else 0 end) as opening_qty,\n sum(case when ih.created_at > $1 then case when ih.qty > 0 and ih.transaction_type <> 'ADJUSTMENT' and ih.transaction_type <> 'RETURN' and rtn.id is null then ih.qty else 0 end else 0 end) as total_in_qty,\n sum(case when ih.created_at > $1 then case when (ih.qty < 0 and ih.transaction_type <> 'ADJUSTMENT') or ih.transaction_type = 'RETURN' then ih.qty else 0 end else 0 end) as total_out_qty,\n ih.product_id,\n sum(case when rtn.id is not null and ih.transaction_type <> 'ADJUSTMENT' and ih.created_at > $1 then qty else 0 end) as total_return_qty\n from temp_inv_history ih\n left join return_orders rtn on rtn.id = ih.ref_order_id\n group by ih.batch_id, ih.product_id, ih.packing_type\n order by batch_id\n ) src\n inner join products prd on prd.id = src.product_id\n where (opening_qty > 0 or total_in_qty > 0 or adjustment_qty > 0)\n ${balanceOnlyQuery}\n )\n `,\n [fromDate.value]\n )\n } catch (error) {\n throw error\n }\n}\n"]}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.elcclOnhandInventoryCounterResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
|
-
const shell_1 = require("@things-factory/shell");
|
|
6
|
-
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
7
|
-
exports.elcclOnhandInventoryCounterResolver = {
|
|
8
|
-
async elcclOnhandInventoryCounter(_, params, context) {
|
|
9
|
-
let bizplaces = await (0, biz_base_1.getPermittedBizplaceIds)(context.state.domain, context.state.user);
|
|
10
|
-
bizplaces = bizplaces
|
|
11
|
-
.map(bizplace => {
|
|
12
|
-
return "'" + bizplace.trim() + "'";
|
|
13
|
-
})
|
|
14
|
-
.join(',');
|
|
15
|
-
const result = await (0, shell_1.getRepository)(warehouse_base_1.Inventory).query(`
|
|
16
|
-
select sum(qty) as total from (
|
|
17
|
-
select count(pallet_id) as qty from inventories i2
|
|
18
|
-
where status not in ('INTRANSIT', 'TERMINATED', 'DELETED')
|
|
19
|
-
and reusable_pallet_id is null
|
|
20
|
-
and bizplace_id in (${bizplaces})
|
|
21
|
-
and domain_id = '${context.state.domain.id}'
|
|
22
|
-
union all
|
|
23
|
-
select count(distinct ref_order_id) as qty from inventories i2
|
|
24
|
-
where status not in ('INTRANSIT', 'TERMINATED', 'DELETED')
|
|
25
|
-
and reusable_pallet_id notnull
|
|
26
|
-
and ref_order_id notnull
|
|
27
|
-
and bizplace_id in (${bizplaces})
|
|
28
|
-
and domain_id = '${context.state.domain.id}'
|
|
29
|
-
group by reusable_pallet_id
|
|
30
|
-
) as foo
|
|
31
|
-
`);
|
|
32
|
-
const total = parseInt(result[0].total);
|
|
33
|
-
return total;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=elccl-onhand-inventory-counter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elccl-onhand-inventory-counter.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.ts"],"names":[],"mappings":";;;AAAA,uDAAkE;AAClE,iDAAgE;AAChE,mEAA0D;AAE7C,QAAA,mCAAmC,GAAG;IACjD,KAAK,CAAC,2BAA2B,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QACnF,IAAI,SAAS,GAAG,MAAM,IAAA,kCAAuB,EAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvF,SAAS,GAAG,SAAS;aAClB,GAAG,CAAC,QAAQ,CAAC,EAAE;YACd,OAAO,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,CAAA;QACpC,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAa,EAAC,0BAAS,CAAC,CAAC,KAAK,CAAC;;;;;gCAKxB,SAAS;6BACZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;;;;;gCAMpB,SAAS;6BACZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;;KAG/C,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAEvC,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nexport const elcclOnhandInventoryCounterResolver = {\n async elcclOnhandInventoryCounter(_: any, params: ListParam, context: ResolverContext) {\n let bizplaces = await getPermittedBizplaceIds(context.state.domain, context.state.user)\n bizplaces = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace.trim() + \"'\"\n })\n .join(',')\n\n const result = await getRepository(Inventory).query(`\n select sum(qty) as total from (\n select count(pallet_id) as qty from inventories i2\n where status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and reusable_pallet_id is null\n and bizplace_id in (${bizplaces})\n and domain_id = '${context.state.domain.id}'\n union all\n select count(distinct ref_order_id) as qty from inventories i2\n where status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and reusable_pallet_id notnull\n and ref_order_id notnull\n and bizplace_id in (${bizplaces})\n and domain_id = '${context.state.domain.id}'\n group by reusable_pallet_id\n ) as foo\n `)\n\n const total = parseInt(result[0].total)\n\n return total\n }\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Query = void 0;
|
|
4
|
-
const elccl_inventory_history_summary_report_1 = require("./elccl-inventory-history-summary-report");
|
|
5
|
-
const elccl_daily_collection_report_1 = require("./elccl-daily-collection-report");
|
|
6
|
-
const elccl_inventory_history_report_1 = require("./elccl-inventory-history-report");
|
|
7
|
-
const elccl_inventory_history_pallet_detail_report_1 = require("./elccl-inventory-history-pallet-detail-report");
|
|
8
|
-
const elccl_onhand_inventory_counter_1 = require("./elccl-onhand-inventory-counter");
|
|
9
|
-
const elccl_daily_order_inventory_report_1 = require("./elccl-daily-order-inventory-report");
|
|
10
|
-
exports.Query = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, elccl_inventory_history_summary_report_1.elcclInventoryHistorySummaryReport), elccl_daily_collection_report_1.elcclDailyCollectionReport), elccl_inventory_history_report_1.elcclInventoryHistoryReport), elccl_inventory_history_pallet_detail_report_1.elcclInventoryHistoryPalletDetailReport), elccl_onhand_inventory_counter_1.elcclOnhandInventoryCounterResolver), elccl_daily_order_inventory_report_1.elcclDailyOrderInventoryReport);
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/index.ts"],"names":[],"mappings":";;;AAAA,qGAA6F;AAC7F,mFAA4E;AAC5E,qFAA8E;AAC9E,iHAAwG;AACxG,qFAAsF;AACtF,6FAAqF;AAExE,QAAA,KAAK,2FACb,2EAAkC,GAClC,0DAA0B,GAC1B,4DAA2B,GAC3B,sFAAuC,GACvC,oEAAmC,GACnC,mEAA8B,EAClC","sourcesContent":["import { elcclInventoryHistorySummaryReport } from './elccl-inventory-history-summary-report'\nimport { elcclDailyCollectionReport } from './elccl-daily-collection-report'\nimport { elcclInventoryHistoryReport } from './elccl-inventory-history-report'\nimport { elcclInventoryHistoryPalletDetailReport } from './elccl-inventory-history-pallet-detail-report'\nimport { elcclOnhandInventoryCounterResolver } from './elccl-onhand-inventory-counter'\nimport { elcclDailyOrderInventoryReport } from './elccl-daily-order-inventory-report'\n\nexport const Query = {\n ...elcclInventoryHistorySummaryReport,\n ...elcclDailyCollectionReport,\n ...elcclInventoryHistoryReport,\n ...elcclInventoryHistoryPalletDetailReport,\n ...elcclOnhandInventoryCounterResolver,\n ...elcclDailyOrderInventoryReport\n}\n"]}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Query = void 0;
|
|
4
|
-
const kimeda_onhand_inventory_counter_1 = require("./kimeda-onhand-inventory-counter");
|
|
5
|
-
exports.Query = Object.assign({}, kimeda_onhand_inventory_counter_1.kimedaOnhandInventoryCounterResolver);
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/kimeda/index.ts"],"names":[],"mappings":";;;AAAA,uFAAwF;AAE3E,QAAA,KAAK,qBACb,sEAAoC,EACxC","sourcesContent":["import { kimedaOnhandInventoryCounterResolver } from './kimeda-onhand-inventory-counter'\n\nexport const Query = {\n ...kimedaOnhandInventoryCounterResolver\n}\n"]}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.kimedaOnhandInventoryCounterResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
|
-
const shell_1 = require("@things-factory/shell");
|
|
6
|
-
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
7
|
-
exports.kimedaOnhandInventoryCounterResolver = {
|
|
8
|
-
async kimedaOnhandInventoryCounter(_, params, context) {
|
|
9
|
-
let bizplaces = await (0, biz_base_1.getPermittedBizplaceIds)(context.state.domain, context.state.user);
|
|
10
|
-
bizplaces = bizplaces
|
|
11
|
-
.map(bizplace => {
|
|
12
|
-
return "'" + bizplace.trim() + "'";
|
|
13
|
-
})
|
|
14
|
-
.join(',');
|
|
15
|
-
const result = await (0, shell_1.getRepository)(warehouse_base_1.Inventory).query(`
|
|
16
|
-
select sum(qty) as total from (
|
|
17
|
-
select l2.name, count(distinct i2.location_id) as qty, string_agg(i2.pallet_id, ', ')
|
|
18
|
-
from inventories i2
|
|
19
|
-
inner join locations l2 on i2.location_id = l2.id
|
|
20
|
-
and i2.domain_id = l2.domain_id
|
|
21
|
-
where i2.status not in ('INTRANSIT', 'TERMINATED', 'DELETED')
|
|
22
|
-
and i2.domain_id = '${context.state.domain.id}'
|
|
23
|
-
and i2.bizplace_id in (${bizplaces})
|
|
24
|
-
and l2.type = 'SHELF'
|
|
25
|
-
group by l2.name
|
|
26
|
-
union all
|
|
27
|
-
select l2.name, count(i2.pallet_id) as qty, string_agg(i2.pallet_id, ', ')
|
|
28
|
-
from inventories i2
|
|
29
|
-
inner join locations l2 on i2.location_id = l2.id
|
|
30
|
-
and i2.domain_id = l2.domain_id
|
|
31
|
-
where i2.status not in ('INTRANSIT', 'TERMINATED', 'DELETED')
|
|
32
|
-
and i2.domain_id = '${context.state.domain.id}'
|
|
33
|
-
and i2.bizplace_id in (${bizplaces})
|
|
34
|
-
and l2.type = 'FLOOR'
|
|
35
|
-
group by l2.name
|
|
36
|
-
) as foo
|
|
37
|
-
`);
|
|
38
|
-
const total = parseInt(result[0].total);
|
|
39
|
-
return total;
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=kimeda-onhand-inventory-counter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kimeda-onhand-inventory-counter.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.ts"],"names":[],"mappings":";;;AAAA,uDAAkE;AAClE,iDAAgE;AAChE,mEAA0D;AAE7C,QAAA,oCAAoC,GAAG;IAClD,KAAK,CAAC,4BAA4B,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QACpF,IAAI,SAAS,GAAG,MAAM,IAAA,kCAAuB,EAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvF,SAAS,GAAG,SAAS;aAClB,GAAG,CAAC,QAAQ,CAAC,EAAE;YACd,OAAO,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,CAAA;QACpC,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAa,EAAC,0BAAS,CAAC,CAAC,KAAK,CAAC;;;;;;;8BAO1B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;iCACpB,SAAS;;;;;;;;;8BASZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;iCACpB,SAAS;;;;KAIrC,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAEvC,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nexport const kimedaOnhandInventoryCounterResolver = {\n async kimedaOnhandInventoryCounter(_: any, params: ListParam, context: ResolverContext) {\n let bizplaces = await getPermittedBizplaceIds(context.state.domain, context.state.user)\n bizplaces = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace.trim() + \"'\"\n })\n .join(',')\n\n const result = await getRepository(Inventory).query(`\n select sum(qty) as total from (\n select l2.name, count(distinct i2.location_id) as qty, string_agg(i2.pallet_id, ', ')\n from inventories i2\n inner join locations l2 on i2.location_id = l2.id\n and i2.domain_id = l2.domain_id\n where i2.status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and i2.domain_id = '${context.state.domain.id}'\n and i2.bizplace_id in (${bizplaces})\n and l2.type = 'SHELF'\n group by l2.name\n union all\n select l2.name, count(i2.pallet_id) as qty, string_agg(i2.pallet_id, ', ')\n from inventories i2\n inner join locations l2 on i2.location_id = l2.id\n and i2.domain_id = l2.domain_id\n where i2.status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and i2.domain_id = '${context.state.domain.id}'\n and i2.bizplace_id in (${bizplaces})\n and l2.type = 'FLOOR'\n group by l2.name\n ) as foo\n `)\n\n const total = parseInt(result[0].total)\n\n return total\n }\n}\n"]}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.arrivalNoticesByStatusResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
|
-
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
|
-
const shell_1 = require("@things-factory/shell");
|
|
7
|
-
exports.arrivalNoticesByStatusResolver = {
|
|
8
|
-
async arrivalNoticesByStatus(_, params, context) {
|
|
9
|
-
var _a;
|
|
10
|
-
const { domain, user } = context.state;
|
|
11
|
-
const bizplaceId = ((_a = params.filters.find((filter) => filter.name === 'bizplace')) === null || _a === void 0 ? void 0 : _a.value) || 'ALL';
|
|
12
|
-
params.filters = params.filters.filter(filter => filter.name !== 'bizplace');
|
|
13
|
-
const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i);
|
|
14
|
-
let bizplaceIds;
|
|
15
|
-
if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {
|
|
16
|
-
let bizplaces = bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await (0, biz_base_1.getPermittedBizplaceIds)(domain, user);
|
|
17
|
-
bizplaceIds = bizplaces
|
|
18
|
-
.map(bizplace => {
|
|
19
|
-
return "'" + (bizplace === null || bizplace === void 0 ? void 0 : bizplace.trim()) + "'";
|
|
20
|
-
})
|
|
21
|
-
.join(',');
|
|
22
|
-
}
|
|
23
|
-
else
|
|
24
|
-
throw new Error('invalid bizplaceId');
|
|
25
|
-
const qb = (0, shell_1.getRepository)(sales_base_1.ArrivalNotice).createQueryBuilder('an');
|
|
26
|
-
(0, shell_1.buildQuery)(qb, params, context);
|
|
27
|
-
return qb
|
|
28
|
-
.select('an.status', 'status')
|
|
29
|
-
.addSelect('COUNT(*) AS count')
|
|
30
|
-
.andWhere(`an.bizplace_id IN (${bizplaceIds})`)
|
|
31
|
-
.groupBy('an.status')
|
|
32
|
-
.getRawMany();
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=arrival-notices-by-status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"arrival-notices-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/arrival-notices-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAA0D;AAC1D,iDAA4E;AAE/D,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,sBAAsB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC9E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QACtC,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QAC5E,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;YAC/D,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;SACb;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,EAAE,GAAsC,IAAA,qBAAa,EAAC,0BAAa,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACnG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE;aACN,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC;aAC7B,SAAS,CAAC,mBAAmB,CAAC;aAC9B,QAAQ,CAAC,sBAAsB,WAAW,GAAG,CAAC;aAC9C,OAAO,CAAC,WAAW,CAAC;aACpB,UAAU,EAAE,CAAA;IACjB,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ArrivalNotice } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const arrivalNoticesByStatusResolver = {\n async arrivalNoticesByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n params.filters = params.filters.filter(filter => filter.name !== 'bizplace')\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n return qb\n .select('an.status', 'status')\n .addSelect('COUNT(*) AS count')\n .andWhere(`an.bizplace_id IN (${bizplaceIds})`)\n .groupBy('an.status')\n .getRawMany()\n }\n}\n"]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.collectionOrdersByStatusResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
|
-
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
|
-
const shell_1 = require("@things-factory/shell");
|
|
7
|
-
exports.collectionOrdersByStatusResolver = {
|
|
8
|
-
async collectionOrdersByStatus(_, params, context) {
|
|
9
|
-
const { domain, user } = context.state;
|
|
10
|
-
if (!params.filters.find((filter) => filter.name === 'bizplace')) {
|
|
11
|
-
params.filters.push({
|
|
12
|
-
name: 'bizplaceId',
|
|
13
|
-
operator: 'in',
|
|
14
|
-
value: await (0, biz_base_1.getPermittedBizplaceIds)(domain, user),
|
|
15
|
-
relation: false
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
const qb = (0, shell_1.getRepository)(sales_base_1.CollectionOrder).createQueryBuilder('co');
|
|
19
|
-
(0, shell_1.buildQuery)(qb, params, context);
|
|
20
|
-
return qb.select('co.status', 'status').addSelect('COUNT(*) AS count').groupBy('co.status').getRawMany();
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=collection-orders-by-status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collection-orders-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/collection-orders-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAA4D;AAC5D,iDAA4E;AAE/D,QAAA,gCAAgC,GAAG;IAC9C,KAAK,CAAC,wBAAwB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAChF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE;YACrE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC;gBAClD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;SACH;QAED,MAAM,EAAE,GAAwC,IAAA,qBAAa,EAAC,4BAAe,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACvG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAA;IAC1G,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { CollectionOrder } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const collectionOrdersByStatusResolver = {\n async collectionOrdersByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n\n if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<CollectionOrder> = getRepository(CollectionOrder).createQueryBuilder('co')\n buildQuery(qb, params, context)\n return qb.select('co.status', 'status').addSelect('COUNT(*) AS count').groupBy('co.status').getRawMany()\n }\n}\n"]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deliveryOrdersByStatusResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
|
-
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
|
-
const shell_1 = require("@things-factory/shell");
|
|
7
|
-
exports.deliveryOrdersByStatusResolver = {
|
|
8
|
-
async deliveryOrdersByStatus(_, params, context) {
|
|
9
|
-
const { domain, user } = context.state;
|
|
10
|
-
if (!params.filters.find((filter) => filter.name === 'bizplace')) {
|
|
11
|
-
params.filters.push({
|
|
12
|
-
name: 'bizplaceId',
|
|
13
|
-
operator: 'in',
|
|
14
|
-
value: await (0, biz_base_1.getPermittedBizplaceIds)(domain, user),
|
|
15
|
-
relation: false
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
const qb = (0, shell_1.getRepository)(sales_base_1.DeliveryOrder).createQueryBuilder('do');
|
|
19
|
-
(0, shell_1.buildQuery)(qb, params, context);
|
|
20
|
-
return qb.select('do.status', 'status').addSelect('COUNT(*) AS count').groupBy('do.status').getRawMany();
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=delivery-orders-by-status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-orders-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/delivery-orders-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAA0D;AAC1D,iDAA4E;AAE/D,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,sBAAsB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAC9E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE;YACrE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC;gBAClD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;SACH;QAED,MAAM,EAAE,GAAsC,IAAA,qBAAa,EAAC,0BAAa,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACnG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAA;IAC1G,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { DeliveryOrder } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const deliveryOrdersByStatusResolver = {\n async deliveryOrdersByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n\n if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<DeliveryOrder> = getRepository(DeliveryOrder).createQueryBuilder('do')\n buildQuery(qb, params, context)\n return qb.select('do.status', 'status').addSelect('COUNT(*) AS count').groupBy('do.status').getRawMany()\n }\n}\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Query = void 0;
|
|
4
|
-
const arrival_notices_by_status_1 = require("./arrival-notices-by-status");
|
|
5
|
-
const collection_orders_by_status_1 = require("./collection-orders-by-status");
|
|
6
|
-
const delivery_orders_by_status_1 = require("./delivery-orders-by-status");
|
|
7
|
-
const inventory_expiry_monitor_1 = require("./inventory-expiry-monitor");
|
|
8
|
-
const outbound_order_by_status_1 = require("./outbound-order-by-status");
|
|
9
|
-
const release_goods_by_status_1 = require("./release-goods-by-status");
|
|
10
|
-
const unit_inbounded_outbounded_1 = require("./unit-inbounded-outbounded");
|
|
11
|
-
exports.Query = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, arrival_notices_by_status_1.arrivalNoticesByStatusResolver), collection_orders_by_status_1.collectionOrdersByStatusResolver), delivery_orders_by_status_1.deliveryOrdersByStatusResolver), release_goods_by_status_1.releaseGoodsByStatusResolver), outbound_order_by_status_1.outboundOrderByStatusResolver), inventory_expiry_monitor_1.inventoryExpiryMonitorResolver), unit_inbounded_outbounded_1.unitInboundedOutboundedResolver);
|
|
12
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/index.ts"],"names":[],"mappings":";;;AAAA,2EAA4E;AAC5E,+EAAgF;AAChF,2EAA4E;AAC5E,yEAA2E;AAC3E,yEAA0E;AAC1E,uEAAwE;AACxE,2EAA6E;AAEhE,QAAA,KAAK,yGACb,0DAA8B,GAC9B,8DAAgC,GAChC,0DAA8B,GAC9B,sDAA4B,GAC5B,wDAA6B,GAC7B,yDAA8B,GAC9B,2DAA+B,EACnC","sourcesContent":["import { arrivalNoticesByStatusResolver } from './arrival-notices-by-status'\nimport { collectionOrdersByStatusResolver } from './collection-orders-by-status'\nimport { deliveryOrdersByStatusResolver } from './delivery-orders-by-status'\nimport { inventoryExpiryMonitorResolver } from './inventory-expiry-monitor'\nimport { outboundOrderByStatusResolver } from './outbound-order-by-status'\nimport { releaseGoodsByStatusResolver } from './release-goods-by-status'\nimport { unitInboundedOutboundedResolver } from './unit-inbounded-outbounded'\n\nexport const Query = {\n ...arrivalNoticesByStatusResolver,\n ...collectionOrdersByStatusResolver,\n ...deliveryOrdersByStatusResolver,\n ...releaseGoodsByStatusResolver,\n ...outboundOrderByStatusResolver,\n ...inventoryExpiryMonitorResolver,\n ...unitInboundedOutboundedResolver\n}\n"]}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.inventoryExpiryMonitorResolver = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
|
-
exports.inventoryExpiryMonitorResolver = {
|
|
7
|
-
async inventoryExpiryMonitor(_, params, context) {
|
|
8
|
-
var _a;
|
|
9
|
-
const { domain, user, tx } = context.state;
|
|
10
|
-
const bizplaceId = ((_a = params.filters.find((filter) => filter.name === 'bizplace')) === null || _a === void 0 ? void 0 : _a.value) || 'ALL';
|
|
11
|
-
const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i);
|
|
12
|
-
let bizplaceIds;
|
|
13
|
-
if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {
|
|
14
|
-
let bizplaces = bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await (0, biz_base_1.getPermittedBizplaceIds)(domain, user);
|
|
15
|
-
bizplaceIds = bizplaces
|
|
16
|
-
.map(bizplace => {
|
|
17
|
-
return "'" + (bizplace === null || bizplace === void 0 ? void 0 : bizplace.trim()) + "'";
|
|
18
|
-
})
|
|
19
|
-
.join(',');
|
|
20
|
-
}
|
|
21
|
-
else
|
|
22
|
-
throw new Error('invalid bizplaceId');
|
|
23
|
-
const expInventories = await tx.query(`
|
|
24
|
-
SELECT "location", sum("expired") AS "expired", sum("sixMonths") AS "sixMonths", sum("nineMonths") AS "nineMonths" FROM (
|
|
25
|
-
SELECT
|
|
26
|
-
CASE WHEN l.TYPE IN ('QUARANTINE','RESERVE') THEN 'QUARANTINED' ELSE 'IN SHELF' END AS "location",
|
|
27
|
-
CASE WHEN i.expiration_date - now()::date <= 0 THEN 1 ELSE 0 END AS "expired",
|
|
28
|
-
CASE WHEN i.expiration_date - now()::date > 0 AND i.expiration_date - now()::date <= 180 THEN 1 ELSE 0 END AS "sixMonths",
|
|
29
|
-
CASE WHEN i.expiration_date - now()::date > 180 AND i.expiration_date - now()::date <= 270 THEN 1 ELSE 0 END AS "nineMonths"
|
|
30
|
-
FROM inventories i
|
|
31
|
-
INNER JOIN locations l ON i.location_id = l.id
|
|
32
|
-
WHERE i.expiration_date - now()::date <= 270
|
|
33
|
-
AND i.expiration_date NOTNULL
|
|
34
|
-
AND i.status = 'STORED'
|
|
35
|
-
AND i.domain_id = $1
|
|
36
|
-
AND i.bizplace_id IN (${bizplaceIds})
|
|
37
|
-
) AS foo
|
|
38
|
-
GROUP BY "location"
|
|
39
|
-
`, [domain.id]);
|
|
40
|
-
return {
|
|
41
|
-
quarantined: getExpiryCountByStatus(expInventories, 'QUARANTINED'),
|
|
42
|
-
inShelf: getExpiryCountByStatus(expInventories, 'IN SHELF')
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
function getExpiryCountByStatus(expInventories, location) {
|
|
47
|
-
let matchedInv = expInventories.find(inv => inv.location == location);
|
|
48
|
-
if (matchedInv)
|
|
49
|
-
return ((_a) => {
|
|
50
|
-
var { location } = _a, inv = tslib_1.__rest(_a, ["location"]);
|
|
51
|
-
return inv;
|
|
52
|
-
})(matchedInv);
|
|
53
|
-
else
|
|
54
|
-
return { expired: 0, sixMonths: 0, nineMonths: 0 };
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=inventory-expiry-monitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inventory-expiry-monitor.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/inventory-expiry-monitor.ts"],"names":[],"mappings":";;;;AAAA,uDAAkE;AAGrD,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,sBAAsB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC9E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;YAC/D,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;SACb;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,cAAc,GAMd,MAAM,EAAE,CAAC,KAAK,CAClB;;;;;;;;;;;;;gCAa0B,WAAW;;;KAGtC,EACC,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAA;QAED,OAAO;YACL,WAAW,EAAE,sBAAsB,CAAC,cAAc,EAAE,aAAa,CAAC;YAClE,OAAO,EAAE,sBAAsB,CAAC,cAAc,EAAE,UAAU,CAAC;SAC5D,CAAA;IACH,CAAC;CACF,CAAA;AAED,SAAS,sBAAsB,CAAC,cAAc,EAAE,QAAQ;IACtD,IAAI,UAAU,GAAQ,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAA;IAE1E,IAAI,UAAU;QAAE,OAAO,CAAC,CAAC,EAAoB,EAAE,EAAE;gBAAxB,EAAE,QAAQ,OAAU,EAAL,GAAG,sBAAlB,YAAoB,CAAF;YAAO,OAAA,GAAG,CAAA;SAAA,CAAC,CAAC,UAAU,CAAC,CAAA;;QAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;AACzD,CAAC","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const inventoryExpiryMonitorResolver = {\n async inventoryExpiryMonitor(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user, tx } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const expInventories: {\n location: string\n expired: number\n thirtyDays: number\n fortyFiveDays: number\n sixtyDays: number\n }[] = await tx.query(\n `\n SELECT \"location\", sum(\"expired\") AS \"expired\", sum(\"sixMonths\") AS \"sixMonths\", sum(\"nineMonths\") AS \"nineMonths\" FROM (\n SELECT \n CASE WHEN l.TYPE IN ('QUARANTINE','RESERVE') THEN 'QUARANTINED' ELSE 'IN SHELF' END AS \"location\",\n CASE WHEN i.expiration_date - now()::date <= 0 THEN 1 ELSE 0 END AS \"expired\",\n CASE WHEN i.expiration_date - now()::date > 0 AND i.expiration_date - now()::date <= 180 THEN 1 ELSE 0 END AS \"sixMonths\",\n CASE WHEN i.expiration_date - now()::date > 180 AND i.expiration_date - now()::date <= 270 THEN 1 ELSE 0 END AS \"nineMonths\"\n FROM inventories i\n INNER JOIN locations l ON i.location_id = l.id\n WHERE i.expiration_date - now()::date <= 270\n AND i.expiration_date NOTNULL\n AND i.status = 'STORED'\n AND i.domain_id = $1\n AND i.bizplace_id IN (${bizplaceIds})\n ) AS foo\n GROUP BY \"location\"\n `,\n [domain.id]\n )\n\n return {\n quarantined: getExpiryCountByStatus(expInventories, 'QUARANTINED'),\n inShelf: getExpiryCountByStatus(expInventories, 'IN SHELF')\n }\n }\n}\n\nfunction getExpiryCountByStatus(expInventories, location) {\n let matchedInv: any = expInventories.find(inv => inv.location == location)\n\n if (matchedInv) return (({ location, ...inv }) => inv)(matchedInv)\n else return { expired: 0, sixMonths: 0, nineMonths: 0 }\n}\n"]}
|