@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,124 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.outboundOrderByStatusResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
|
-
exports.outboundOrderByStatusResolver = {
|
|
6
|
-
async outboundOrderByStatus(_, params, context) {
|
|
7
|
-
var _a;
|
|
8
|
-
const { domain, user, tx } = context.state;
|
|
9
|
-
const bizplaceId = ((_a = params.filters.find((filter) => filter.name === 'bizplace')) === null || _a === void 0 ? void 0 : _a.value) || 'ALL';
|
|
10
|
-
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);
|
|
11
|
-
let bizplaceIds;
|
|
12
|
-
if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {
|
|
13
|
-
let bizplaces = bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await (0, biz_base_1.getPermittedBizplaceIds)(domain, user);
|
|
14
|
-
bizplaceIds = bizplaces
|
|
15
|
-
.map(bizplace => {
|
|
16
|
-
return "'" + (bizplace === null || bizplace === void 0 ? void 0 : bizplace.trim()) + "'";
|
|
17
|
-
})
|
|
18
|
-
.join(',');
|
|
19
|
-
}
|
|
20
|
-
else
|
|
21
|
-
throw new Error('invalid bizplaceId');
|
|
22
|
-
const orderStatus = await tx.query(`
|
|
23
|
-
WITH cte_list ("status", "count") AS (
|
|
24
|
-
SELECT 'PICKING UNASSIGNED' AS status, 0 AS "count"
|
|
25
|
-
UNION
|
|
26
|
-
SELECT 'PICKING ASSIGNED' AS status, 0 AS "count"
|
|
27
|
-
UNION
|
|
28
|
-
SELECT 'BATCH PICKING ASSIGNED' AS status, 0 AS "count"
|
|
29
|
-
UNION
|
|
30
|
-
SELECT 'PACKING' AS status, 0 AS "count"
|
|
31
|
-
UNION
|
|
32
|
-
SELECT 'AWAITING DISPATCH' AS status, 0 AS "count"
|
|
33
|
-
UNION
|
|
34
|
-
SELECT 'OUT FROM WAREHOUSE' AS status, 0 AS "count"
|
|
35
|
-
UNION
|
|
36
|
-
SELECT 'PENDING MANIFEST CREATION' AS status, 0 AS "count"
|
|
37
|
-
UNION
|
|
38
|
-
SELECT 'DONE' AS status, 0 AS "count"
|
|
39
|
-
UNION
|
|
40
|
-
SELECT 'PENDING CANCEL' AS status, 0 AS "count"
|
|
41
|
-
UNION
|
|
42
|
-
SELECT 'CANCELLED' AS status, 0 AS "count"
|
|
43
|
-
UNION
|
|
44
|
-
SELECT 'OTHERS' AS status, 0 AS "count"
|
|
45
|
-
UNION
|
|
46
|
-
SELECT 'DRAFT' AS status, 0 AS "count"
|
|
47
|
-
) SELECT l."status", coalesce(src."count", l."count") AS "count"
|
|
48
|
-
FROM cte_list l
|
|
49
|
-
LEFT JOIN (
|
|
50
|
-
SELECT "status", SUM("count") AS count FROM (
|
|
51
|
-
SELECT "status", COUNT(*) AS "count" FROM (
|
|
52
|
-
SELECT
|
|
53
|
-
CASE WHEN "status" = 'DONE' AND rg.updated_at::date = CURRENT_DATE THEN 'DONE'
|
|
54
|
-
WHEN "status" = 'PENDING_CANCEL' THEN 'PENDING CANCEL'
|
|
55
|
-
WHEN "status" = 'CANCELLED' AND rg.updated_at::date = CURRENT_DATE THEN 'CANCELLED'
|
|
56
|
-
WHEN "status" IN('PENDING_RECEIVE','PENDING_WORKSHEET') THEN 'PICKING UNASSIGNED'
|
|
57
|
-
END AS "status"
|
|
58
|
-
FROM release_goods rg
|
|
59
|
-
WHERE "domain_id" = $1
|
|
60
|
-
AND rg."bizplace_id" IN (${bizplaceIds})
|
|
61
|
-
AND rg."status" IN ('PENDING','PENDING_RECEIVE','PENDING_WORKSHEET','READY_TO_PICK','PICKING','READY_TO_PACK','PACKING','PENDING_CANCEL','CANCELLED','DONE')
|
|
62
|
-
) AS foo
|
|
63
|
-
GROUP BY "status"
|
|
64
|
-
UNION ALL
|
|
65
|
-
SELECT "status", COUNT(*) AS "count" FROM (
|
|
66
|
-
SELECT
|
|
67
|
-
CASE WHEN "dispatchment_status" = 'DISPATCHED' AND rg.updated_at::date = CURRENT_DATE THEN 'OUT FROM WAREHOUSE'
|
|
68
|
-
END AS "status"
|
|
69
|
-
FROM release_goods rg
|
|
70
|
-
WHERE "domain_id" = $1
|
|
71
|
-
AND rg."bizplace_id" IN (${bizplaceIds})
|
|
72
|
-
AND rg."dispatchment_status" IN ('READY_TO_DISPATCH', 'DISPATCHED')
|
|
73
|
-
AND rg."tracking_no" NOTNULL
|
|
74
|
-
AND rg."type" = 'b2c'
|
|
75
|
-
) AS foo
|
|
76
|
-
GROUP BY "status"
|
|
77
|
-
UNION ALL
|
|
78
|
-
SELECT 'AWAITING DISPATCH' AS "status", count(*) FROM manifests m
|
|
79
|
-
INNER JOIN release_goods rg ON rg.manifest_id = m.id
|
|
80
|
-
WHERE m."status" in ('OPEN', 'IN_QUEUE')
|
|
81
|
-
AND m."domain_id" = $1
|
|
82
|
-
AND rg."bizplace_id" IN (${bizplaceIds})
|
|
83
|
-
UNION ALL
|
|
84
|
-
SELECT 'PICKING ASSIGNED' AS "status", count(*) FROM worksheets w
|
|
85
|
-
WHERE w."domain_id" = $1
|
|
86
|
-
AND w."bizplace_id" IN (${bizplaceIds})
|
|
87
|
-
AND w."type" = 'PICKING'
|
|
88
|
-
AND w."status" IN ('DEACTIVATED','EXECUTING')
|
|
89
|
-
GROUP BY w."status"
|
|
90
|
-
UNION ALL
|
|
91
|
-
SELECT 'BATCH PICKING ASSIGNED' AS "status", count(*) FROM worksheets w
|
|
92
|
-
WHERE w."domain_id" = $1
|
|
93
|
-
AND w."bizplace_id" IN (${bizplaceIds})
|
|
94
|
-
AND w."type" = 'BATCH_PICKING'
|
|
95
|
-
AND w."status" IN ('DEACTIVATED','EXECUTING')
|
|
96
|
-
GROUP BY w."status"
|
|
97
|
-
UNION ALL
|
|
98
|
-
SELECT 'PACKING' AS "status", count(*) FROM worksheets w
|
|
99
|
-
WHERE w."domain_id" = $1 AND w."type" = 'PACKING'
|
|
100
|
-
AND w."bizplace_id" IN (${bizplaceIds})
|
|
101
|
-
AND w."status" IN ('DEACTIVATED','EXECUTING')
|
|
102
|
-
GROUP BY w."status"
|
|
103
|
-
UNION ALL
|
|
104
|
-
SELECT 'PENDING MANIFEST CREATION' AS "status", count(*) FROM release_goods rg
|
|
105
|
-
WHERE rg."domain_id" = $1
|
|
106
|
-
AND rg."bizplace_id" IN (${bizplaceIds})
|
|
107
|
-
AND rg."status" = 'DONE'
|
|
108
|
-
AND rg."manifest_id" ISNULL
|
|
109
|
-
AND rg."type" = 'b2c'
|
|
110
|
-
AND rg."updated_at" >= (CURRENT_DATE - 30)
|
|
111
|
-
UNION ALL
|
|
112
|
-
SELECT 'DRAFT' AS "status", count(*) FROM draft_release_goods drg
|
|
113
|
-
WHERE drg."domain_id" = $1
|
|
114
|
-
AND drg."bizplace_id" IN (${bizplaceIds})
|
|
115
|
-
AND drg."status" = 'DRAFT'
|
|
116
|
-
AND drg."type" = 'b2c'
|
|
117
|
-
) AS src
|
|
118
|
-
GROUP BY "status"
|
|
119
|
-
) src ON src."status" = l."status"
|
|
120
|
-
`, [domain.id]);
|
|
121
|
-
return orderStatus;
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
//# sourceMappingURL=outbound-order-by-status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"outbound-order-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/outbound-order-by-status.ts"],"names":[],"mappings":";;;AAAA,uDAAkE;AAGrD,QAAA,6BAA6B,GAAG;IAC3C,KAAK,CAAC,qBAAqB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC7E,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,WAAW,GAAwC,MAAM,EAAE,CAAC,KAAK,CACrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAsCiC,WAAW;;;;;;;;;;;uCAWX,WAAW;;;;;;;;;;;qCAWb,WAAW;;;;oCAIZ,WAAW;;;;;;;oCAOX,WAAW;;;;;;;oCAOX,WAAW;;;;;;qCAMV,WAAW;;;;;;;;sCAQV,WAAW;;;;;;KAM5C,EACC,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAA;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;CACF,CAAA","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const outboundOrderByStatusResolver = {\n async outboundOrderByStatus(_: 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 orderStatus: { status: string; count: number }[] = await tx.query(\n `\n WITH cte_list (\"status\", \"count\") AS (\n SELECT 'PICKING UNASSIGNED' AS status, 0 AS \"count\"\n UNION\n SELECT 'PICKING ASSIGNED' AS status, 0 AS \"count\"\n UNION\n SELECT 'BATCH PICKING ASSIGNED' AS status, 0 AS \"count\"\n UNION\n SELECT 'PACKING' AS status, 0 AS \"count\"\n UNION\n SELECT 'AWAITING DISPATCH' AS status, 0 AS \"count\"\n UNION\n SELECT 'OUT FROM WAREHOUSE' AS status, 0 AS \"count\"\n UNION\n SELECT 'PENDING MANIFEST CREATION' AS status, 0 AS \"count\"\n UNION\n SELECT 'DONE' AS status, 0 AS \"count\"\n UNION\n SELECT 'PENDING CANCEL' AS status, 0 AS \"count\"\n UNION\n SELECT 'CANCELLED' AS status, 0 AS \"count\"\n UNION\n SELECT 'OTHERS' AS status, 0 AS \"count\"\n UNION\n SELECT 'DRAFT' AS status, 0 AS \"count\"\n ) SELECT l.\"status\", coalesce(src.\"count\", l.\"count\") AS \"count\" \n FROM cte_list l\n LEFT JOIN (\n SELECT \"status\", SUM(\"count\") AS count FROM (\n SELECT \"status\", COUNT(*) AS \"count\" FROM (\n SELECT \n CASE WHEN \"status\" = 'DONE' AND rg.updated_at::date = CURRENT_DATE THEN 'DONE' \n WHEN \"status\" = 'PENDING_CANCEL' THEN 'PENDING CANCEL' \n WHEN \"status\" = 'CANCELLED' AND rg.updated_at::date = CURRENT_DATE THEN 'CANCELLED'\n WHEN \"status\" IN('PENDING_RECEIVE','PENDING_WORKSHEET') THEN 'PICKING UNASSIGNED'\n END AS \"status\" \n FROM release_goods rg\n WHERE \"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.\"status\" IN ('PENDING','PENDING_RECEIVE','PENDING_WORKSHEET','READY_TO_PICK','PICKING','READY_TO_PACK','PACKING','PENDING_CANCEL','CANCELLED','DONE')\n ) AS foo \n GROUP BY \"status\"\n UNION ALL \n SELECT \"status\", COUNT(*) AS \"count\" FROM (\n SELECT \n CASE WHEN \"dispatchment_status\" = 'DISPATCHED' AND rg.updated_at::date = CURRENT_DATE THEN 'OUT FROM WAREHOUSE' \n END AS \"status\" \n FROM release_goods rg\n WHERE \"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.\"dispatchment_status\" IN ('READY_TO_DISPATCH', 'DISPATCHED')\n AND rg.\"tracking_no\" NOTNULL\n AND rg.\"type\" = 'b2c'\n ) AS foo \n GROUP BY \"status\"\t\t\n UNION ALL \n SELECT 'AWAITING DISPATCH' AS \"status\", count(*) FROM manifests m \n INNER JOIN release_goods rg ON rg.manifest_id = m.id\n WHERE m.\"status\" in ('OPEN', 'IN_QUEUE') \n AND m.\"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n UNION ALL\n SELECT 'PICKING ASSIGNED' AS \"status\", count(*) FROM worksheets w \n WHERE w.\"domain_id\" = $1 \n AND w.\"bizplace_id\" IN (${bizplaceIds})\n AND w.\"type\" = 'PICKING' \n AND w.\"status\" IN ('DEACTIVATED','EXECUTING')\n GROUP BY w.\"status\"\n UNION ALL\n SELECT 'BATCH PICKING ASSIGNED' AS \"status\", count(*) FROM worksheets w \n WHERE w.\"domain_id\" = $1 \n AND w.\"bizplace_id\" IN (${bizplaceIds})\n AND w.\"type\" = 'BATCH_PICKING' \n AND w.\"status\" IN ('DEACTIVATED','EXECUTING')\n GROUP BY w.\"status\"\n UNION ALL\n SELECT 'PACKING' AS \"status\", count(*) FROM worksheets w \n WHERE w.\"domain_id\" = $1 AND w.\"type\" = 'PACKING' \n AND w.\"bizplace_id\" IN (${bizplaceIds})\n AND w.\"status\" IN ('DEACTIVATED','EXECUTING')\n GROUP BY w.\"status\"\n UNION ALL \n SELECT 'PENDING MANIFEST CREATION' AS \"status\", count(*) FROM release_goods rg\n WHERE rg.\"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.\"status\" = 'DONE'\n AND rg.\"manifest_id\" ISNULL\n AND rg.\"type\" = 'b2c'\n AND rg.\"updated_at\" >= (CURRENT_DATE - 30)\n UNION ALL\n SELECT 'DRAFT' AS \"status\", count(*) FROM draft_release_goods drg \n WHERE drg.\"domain_id\" = $1\n AND drg.\"bizplace_id\" IN (${bizplaceIds})\n AND drg.\"status\" = 'DRAFT'\n AND drg.\"type\" = 'b2c'\n ) AS src\n GROUP BY \"status\"\n ) src ON src.\"status\" = l.\"status\"\n `,\n [domain.id]\n )\n\n return orderStatus\n }\n}\n"]}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.releaseGoodsByStatusResolver = 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.releaseGoodsByStatusResolver = {
|
|
8
|
-
async releaseGoodsByStatus(_, 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.ReleaseGood).createQueryBuilder('rg');
|
|
26
|
-
(0, shell_1.buildQuery)(qb, params, context);
|
|
27
|
-
return qb
|
|
28
|
-
.select('rg.status', 'status')
|
|
29
|
-
.addSelect('COUNT(*) AS count')
|
|
30
|
-
.andWhere(`rg.bizplace_id IN (${bizplaceIds})`)
|
|
31
|
-
.groupBy('rg.status')
|
|
32
|
-
.getRawMany();
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=release-goods-by-status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"release-goods-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/release-goods-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAAwD;AACxD,iDAA4E;AAE/D,QAAA,4BAA4B,GAAG;IAC1C,KAAK,CAAC,oBAAoB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC5E,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,GAAoC,IAAA,qBAAa,EAAC,wBAAW,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAC/F,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 { ReleaseGood } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const releaseGoodsByStatusResolver = {\n async releaseGoodsByStatus(_: 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<ReleaseGood> = getRepository(ReleaseGood).createQueryBuilder('rg')\n buildQuery(qb, params, context)\n return qb\n .select('rg.status', 'status')\n .addSelect('COUNT(*) AS count')\n .andWhere(`rg.bizplace_id IN (${bizplaceIds})`)\n .groupBy('rg.status')\n .getRawMany()\n }\n}\n"]}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.unitInboundedOutboundedResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
|
-
exports.unitInboundedOutboundedResolver = {
|
|
6
|
-
async unitInboundedOutbounded(_, params, context) {
|
|
7
|
-
var _a, _b, _c;
|
|
8
|
-
const { domain, user, tx } = context.state;
|
|
9
|
-
const bizplaceId = ((_a = params.filters.find((filter) => filter.name === 'bizplace')) === null || _a === void 0 ? void 0 : _a.value) || 'ALL';
|
|
10
|
-
const fromDate = (_b = params.filters.find((filter) => filter.name === 'createdAt1')) === null || _b === void 0 ? void 0 : _b.value;
|
|
11
|
-
const toDate = (_c = params.filters.find((filter) => filter.name === 'createdAt2')) === null || _c === void 0 ? void 0 : _c.value;
|
|
12
|
-
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);
|
|
13
|
-
let bizplaceIds;
|
|
14
|
-
if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {
|
|
15
|
-
let bizplaces = bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await (0, biz_base_1.getPermittedBizplaceIds)(domain, user);
|
|
16
|
-
bizplaceIds = bizplaces
|
|
17
|
-
.map(bizplace => {
|
|
18
|
-
return "'" + (bizplace === null || bizplace === void 0 ? void 0 : bizplace.trim()) + "'";
|
|
19
|
-
})
|
|
20
|
-
.join(',');
|
|
21
|
-
}
|
|
22
|
-
else
|
|
23
|
-
throw new Error('invalid bizplaceId');
|
|
24
|
-
const orderStatus = await tx.query(`
|
|
25
|
-
WITH cte_unit ("status", "count", "type") AS (
|
|
26
|
-
SELECT 'INBOUNDED' AS status, 0 AS "count", 'inbound' AS "type"
|
|
27
|
-
UNION
|
|
28
|
-
SELECT 'OUTBOUNDED' AS status, 0 AS "count", 'outbound' AS "type"
|
|
29
|
-
) SELECT u."status", coalesce(src."count", u."count") AS "count", u."type"
|
|
30
|
-
FROM cte_unit u
|
|
31
|
-
LEFT JOIN (
|
|
32
|
-
SELECT "status", SUM("count") AS count, "type" FROM (
|
|
33
|
-
SELECT 'INBOUNDED' AS "status", SUM(coalesce(op.actual_pack_qty, op.pack_qty)) as "count", 'inbound' as "type" FROM order_products op
|
|
34
|
-
INNER JOIN arrival_notices an ON an.id = op.arrival_notice_id
|
|
35
|
-
WHERE an."status" in ('PUTTING_AWAY','DONE')
|
|
36
|
-
AND an."domain_id" = $1
|
|
37
|
-
AND an."bizplace_id" IN (${bizplaceIds})
|
|
38
|
-
AND an.created_at BETWEEN '${fromDate}' AND '${toDate}'
|
|
39
|
-
GROUP BY an."status"
|
|
40
|
-
UNION ALL
|
|
41
|
-
SELECT 'OUTBOUNDED' AS "status", SUM(coalesce(oi.release_qty , oi.picked_qty)) as "count", 'outbound' as "type" FROM order_inventories oi
|
|
42
|
-
INNER JOIN release_goods rg on rg.id = oi.release_good_id
|
|
43
|
-
WHERE rg."status" in ('DONE')
|
|
44
|
-
AND rg."domain_id" = $1
|
|
45
|
-
AND rg."bizplace_id" IN (${bizplaceIds})
|
|
46
|
-
AND rg.created_at BETWEEN '${fromDate}' AND '${toDate}'
|
|
47
|
-
GROUP BY rg."status"
|
|
48
|
-
) AS src
|
|
49
|
-
GROUP BY "status", "type"
|
|
50
|
-
) src ON src."status" = u."status"
|
|
51
|
-
order by "type", "status"
|
|
52
|
-
`, [domain.id]);
|
|
53
|
-
return orderStatus;
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=unit-inbounded-outbounded.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unit-inbounded-outbounded.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/unit-inbounded-outbounded.ts"],"names":[],"mappings":";;;AAGA,uDAAkE;AAGrD,QAAA,+BAA+B,GAAG;IAC7C,KAAK,CAAC,uBAAuB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAY;;QACnE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,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,QAAQ,GAAW,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,KAAK,CAAA;QAClG,MAAM,MAAM,GAAW,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,KAAK,CAAA;QAChG,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,WAAW,GAAwC,MAAM,EAAE,CAAC,KAAK,CACrE;;;;;;;;;;;;;uCAaiC,WAAW;yCACT,QAAQ,UAAU,MAAM;;;;;;;uCAO1B,WAAW;yCACT,QAAQ,UAAU,MAAM;;;;;;OAM1D,EACD,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAA;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;CACF,CAAA","sourcesContent":["import { getRepository, SelectQueryBuilder, EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { buildQuery, Domain, ListParam } from '@things-factory/shell'\n\nexport const unitInboundedOutboundedResolver = {\n async unitInboundedOutbounded(_: any, params: ListParam, context: any) {\n const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n const fromDate: string = params.filters.find((filter: any) => filter.name === 'createdAt1')?.value\n const toDate: string = params.filters.find((filter: any) => filter.name === 'createdAt2')?.value\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 orderStatus: { status: string; count: number }[] = await tx.query(\n `\n WITH cte_unit (\"status\", \"count\", \"type\") AS (\n SELECT 'INBOUNDED' AS status, 0 AS \"count\", 'inbound' AS \"type\"\n UNION\n SELECT 'OUTBOUNDED' AS status, 0 AS \"count\", 'outbound' AS \"type\"\n ) SELECT u.\"status\", coalesce(src.\"count\", u.\"count\") AS \"count\", u.\"type\"\n FROM cte_unit u\n LEFT JOIN (\n SELECT \"status\", SUM(\"count\") AS count, \"type\" FROM (\n SELECT 'INBOUNDED' AS \"status\", SUM(coalesce(op.actual_pack_qty, op.pack_qty)) as \"count\", 'inbound' as \"type\" FROM order_products op\n INNER JOIN arrival_notices an ON an.id = op.arrival_notice_id\n WHERE an.\"status\" in ('PUTTING_AWAY','DONE')\n AND an.\"domain_id\" = $1\n AND an.\"bizplace_id\" IN (${bizplaceIds})\n AND an.created_at BETWEEN '${fromDate}' AND '${toDate}'\n GROUP BY an.\"status\"\n UNION ALL\n SELECT 'OUTBOUNDED' AS \"status\", SUM(coalesce(oi.release_qty , oi.picked_qty)) as \"count\", 'outbound' as \"type\" FROM order_inventories oi\n INNER JOIN release_goods rg on rg.id = oi.release_good_id\n WHERE rg.\"status\" in ('DONE')\n AND rg.\"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.created_at BETWEEN '${fromDate}' AND '${toDate}'\n GROUP BY rg.\"status\"\n ) AS src\n GROUP BY \"status\", \"type\"\n ) src ON src.\"status\" = u.\"status\"\n order by \"type\", \"status\"\n `,\n [domain.id]\n )\n\n return orderStatus\n }\n}\n"]}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mutations = exports.queries = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const BoardSetting = tslib_1.__importStar(require("./board-setting"));
|
|
6
|
-
const CustomElccl = tslib_1.__importStar(require("./custom/elccl"));
|
|
7
|
-
const CustomKimeda = tslib_1.__importStar(require("./custom/kimeda"));
|
|
8
|
-
const Dashboard = tslib_1.__importStar(require("./dashboard"));
|
|
9
|
-
const Other = tslib_1.__importStar(require("./other"));
|
|
10
|
-
const OpaMenu = tslib_1.__importStar(require("./opa-menu"));
|
|
11
|
-
const Reports = tslib_1.__importStar(require("./reports"));
|
|
12
|
-
const InventoryComparison = tslib_1.__importStar(require("./inventory-comparison"));
|
|
13
|
-
const ShippingProviders = tslib_1.__importStar(require("./shipping-provider"));
|
|
14
|
-
const WarehouseInventoryAdjustment = tslib_1.__importStar(require("./warehouse-inventory-adjustment"));
|
|
15
|
-
exports.queries = [
|
|
16
|
-
BoardSetting.Query,
|
|
17
|
-
CustomElccl.Query,
|
|
18
|
-
CustomKimeda.Query,
|
|
19
|
-
Dashboard.Query,
|
|
20
|
-
InventoryComparison.Query,
|
|
21
|
-
OpaMenu.Query,
|
|
22
|
-
Other.Query,
|
|
23
|
-
Reports.Query,
|
|
24
|
-
ShippingProviders.Query
|
|
25
|
-
];
|
|
26
|
-
exports.mutations = [Other.Mutation, WarehouseInventoryAdjustment.Mutation];
|
|
27
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/graphql/resolvers/index.ts"],"names":[],"mappings":";;;;AAAA,sEAA+C;AAC/C,oEAA6C;AAC7C,sEAA+C;AAC/C,+DAAwC;AACxC,uDAAgC;AAChC,4DAAqC;AACrC,2DAAoC;AACpC,oFAA6D;AAC7D,+EAAwD;AACxD,uGAAgF;AAEnE,QAAA,OAAO,GAAG;IACrB,YAAY,CAAC,KAAK;IAClB,WAAW,CAAC,KAAK;IACjB,YAAY,CAAC,KAAK;IAClB,SAAS,CAAC,KAAK;IACf,mBAAmB,CAAC,KAAK;IACzB,OAAO,CAAC,KAAK;IACb,KAAK,CAAC,KAAK;IACX,OAAO,CAAC,KAAK;IACb,iBAAiB,CAAC,KAAK;CACxB,CAAA;AAEY,QAAA,SAAS,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAA","sourcesContent":["import * as BoardSetting from './board-setting'\nimport * as CustomElccl from './custom/elccl'\nimport * as CustomKimeda from './custom/kimeda'\nimport * as Dashboard from './dashboard'\nimport * as Other from './other'\nimport * as OpaMenu from './opa-menu'\nimport * as Reports from './reports'\nimport * as InventoryComparison from './inventory-comparison'\nimport * as ShippingProviders from './shipping-provider'\nimport * as WarehouseInventoryAdjustment from './warehouse-inventory-adjustment'\n\nexport const queries = [\n BoardSetting.Query,\n CustomElccl.Query,\n CustomKimeda.Query,\n Dashboard.Query,\n InventoryComparison.Query,\n OpaMenu.Query,\n Other.Query,\n Reports.Query,\n ShippingProviders.Query\n]\n\nexport const mutations = [Other.Mutation, WarehouseInventoryAdjustment.Mutation]\n"]}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Query = void 0;
|
|
4
|
-
const inventory_comparison_list_1 = require("./inventory-comparison-list");
|
|
5
|
-
exports.Query = Object.assign({}, inventory_comparison_list_1.inventoryComparisonList);
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory-comparison/index.ts"],"names":[],"mappings":";;;AAAA,2EAAqE;AAExD,QAAA,KAAK,qBACb,mDAAuB,EAC3B","sourcesContent":["import { inventoryComparisonList } from './inventory-comparison-list'\n\nexport const Query = {\n ...inventoryComparisonList\n}"]}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.inventoryComparisonList = void 0;
|
|
4
|
-
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
5
|
-
const elccl_inventory_history_summary_report_1 = require("../custom/elccl/elccl-inventory-history-summary-report");
|
|
6
|
-
exports.inventoryComparisonList = {
|
|
7
|
-
async inventoryComparisonList(_, params, context) {
|
|
8
|
-
try {
|
|
9
|
-
const { tx } = context.state;
|
|
10
|
-
let bizplaceFilter = params.filters.find(data => data.name === 'bizplace');
|
|
11
|
-
if (!bizplaceFilter) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
let toDateFilter = params.filters.find(data => data.name === 'toDate');
|
|
15
|
-
let toDateDate = new Date(toDateFilter.value);
|
|
16
|
-
let fromDate = toDateDate.setDate(toDateDate.getDate() - 1);
|
|
17
|
-
let fromDateISO = new Date(fromDate).toISOString();
|
|
18
|
-
let nonTallyFilter = params.filters.find(data => data.name === 'nonTally').value;
|
|
19
|
-
let productFilter = params.filters.find(data => data.name === 'product');
|
|
20
|
-
params.filters.push({
|
|
21
|
-
name: 'fromDate',
|
|
22
|
-
operator: 'eq',
|
|
23
|
-
value: fromDateISO
|
|
24
|
-
});
|
|
25
|
-
params.filters.push({ name: 'status', operator: 'notin', value: ['INTRANSIT', 'TERMINATED', 'DELETED'] }, { name: 'remainOnly', operator: 'eq', value: true }, { name: 'unlockOnly', operator: 'eq', value: true }, { name: 'created_at', operator: 'eq', value: toDateFilter.value }, { name: 'timezoneOffset', operator: 'eq', value: new Date().getTimezoneOffset() }, { name: 'expiration', operator: 'eq', value: false });
|
|
26
|
-
let productQueryFilter = ``;
|
|
27
|
-
if (productFilter) {
|
|
28
|
-
let products = productFilter.value
|
|
29
|
-
.toLowerCase()
|
|
30
|
-
.split(',')
|
|
31
|
-
.map(prod => {
|
|
32
|
-
return "'%" + prod.trim().replace(/'/g, "''") + "%'";
|
|
33
|
-
})
|
|
34
|
-
.join(',');
|
|
35
|
-
productQueryFilter =
|
|
36
|
-
productQueryFilter +
|
|
37
|
-
`
|
|
38
|
-
${nonTallyFilter ? 'and' : 'where'} (lower(summ.product_name) like any(array[${products}])
|
|
39
|
-
or lower(summ.product_sku) like any(array[${products}]))`;
|
|
40
|
-
}
|
|
41
|
-
await Promise.all([
|
|
42
|
-
(0, elccl_inventory_history_summary_report_1.inventoryHistorySummaryReportQuery)(_, params, context),
|
|
43
|
-
(0, warehouse_base_1.onhandInventories)(params.filters, params.pagination, params.sortings, [], context, false)
|
|
44
|
-
]);
|
|
45
|
-
await tx.query(`
|
|
46
|
-
create temp table tmp_inv_comp on commit drop as (
|
|
47
|
-
select summ."batch_id", summ.product_id, summ.product_name, summ.product_sku, summ.packing_type, summ.closing_qty, coalesce(oh.qty, 0) as "onhand_qty" from temp_inventory_summary summ
|
|
48
|
-
left join (
|
|
49
|
-
select "batch_id" as "batch_id", product_id, sum("qty") as qty from tmp_data group by "batch_id", product_id
|
|
50
|
-
) oh on oh.batch_id = summ.batch_id and oh.product_id = summ.product_id
|
|
51
|
-
${nonTallyFilter ? 'where coalesce(oh.qty, 0) <> summ.closing_qty' : ''}
|
|
52
|
-
${productQueryFilter}
|
|
53
|
-
);
|
|
54
|
-
`);
|
|
55
|
-
let sumData = await tx.query(`
|
|
56
|
-
select * from tmp_inv_comp
|
|
57
|
-
offset $1 limit $2
|
|
58
|
-
`, [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]);
|
|
59
|
-
const totalQuery = await tx.query(`select count(*) from tmp_inv_comp `);
|
|
60
|
-
const total = parseInt(totalQuery[0].count);
|
|
61
|
-
const items = sumData.map(item => {
|
|
62
|
-
return {
|
|
63
|
-
productName: item.product_name,
|
|
64
|
-
productSku: item.product_sku,
|
|
65
|
-
packingType: item.packing_type,
|
|
66
|
-
closingQty: item.closing_qty,
|
|
67
|
-
remainQty: item.onhand_qty,
|
|
68
|
-
batchId: item.batch_id
|
|
69
|
-
};
|
|
70
|
-
});
|
|
71
|
-
return { items, total };
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
throw error;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
//# sourceMappingURL=inventory-comparison-list.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inventory-comparison-list.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory-comparison/inventory-comparison-list.ts"],"names":[],"mappings":"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","sourcesContent":["import { ListParam } from '@things-factory/shell'\nimport { onhandInventories } from '@things-factory/warehouse-base'\n\nimport { inventoryHistorySummaryReportQuery } from '../custom/elccl/elccl-inventory-history-summary-report'\n\nexport const inventoryComparisonList = {\n async inventoryComparisonList(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n\n let bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n\n if (!bizplaceFilter) {\n return\n }\n\n let toDateFilter = params.filters.find(data => data.name === 'toDate')\n let toDateDate = new Date(toDateFilter.value)\n let fromDate = toDateDate.setDate(toDateDate.getDate() - 1)\n let fromDateISO = new Date(fromDate).toISOString()\n let nonTallyFilter = params.filters.find(data => data.name === 'nonTally').value\n let productFilter = params.filters.find(data => data.name === 'product')\n\n params.filters.push({\n name: 'fromDate',\n operator: 'eq',\n value: fromDateISO\n })\n\n params.filters.push(\n { name: 'status', operator: 'notin', value: ['INTRANSIT', 'TERMINATED', 'DELETED'] },\n { name: 'remainOnly', operator: 'eq', value: true },\n { name: 'unlockOnly', operator: 'eq', value: true },\n { name: 'created_at', operator: 'eq', value: toDateFilter.value },\n { name: 'timezoneOffset', operator: 'eq', value: new Date().getTimezoneOffset() },\n { name: 'expiration', operator: 'eq', value: false }\n )\n\n let productQueryFilter = ``\n\n if (productFilter) {\n let products = productFilter.value\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n\n productQueryFilter =\n productQueryFilter +\n `\n ${nonTallyFilter ? 'and' : 'where'} (lower(summ.product_name) like any(array[${products}])\n or lower(summ.product_sku) like any(array[${products}]))`\n }\n\n await Promise.all([\n inventoryHistorySummaryReportQuery(_, params, context),\n onhandInventories(params.filters, params.pagination, params.sortings, [], context, false)\n ])\n\n await tx.query(`\n create temp table tmp_inv_comp on commit drop as (\n select summ.\"batch_id\", summ.product_id, summ.product_name, summ.product_sku, summ.packing_type, summ.closing_qty, coalesce(oh.qty, 0) as \"onhand_qty\" from temp_inventory_summary summ \n left join (\t\n select \"batch_id\" as \"batch_id\", product_id, sum(\"qty\") as qty from tmp_data group by \"batch_id\", product_id\n ) oh on oh.batch_id = summ.batch_id and oh.product_id = summ.product_id\n ${nonTallyFilter ? 'where coalesce(oh.qty, 0) <> summ.closing_qty' : ''}\n ${productQueryFilter}\n );\n `)\n\n let sumData = await tx.query(\n `\n select * from tmp_inv_comp\n offset $1 limit $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n const totalQuery: number = await tx.query(`select count(*) from tmp_inv_comp `)\n\n const total = parseInt(totalQuery[0].count)\n\n const items: any[] = sumData.map(item => {\n return {\n productName: item.product_name,\n productSku: item.product_sku,\n packingType: item.packing_type,\n closingQty: item.closing_qty,\n remainQty: item.onhand_qty,\n batchId: item.batch_id\n }\n })\n\n return { items, total }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/opa-menu/index.ts"],"names":[],"mappings":";;;AAAA,2CAA8C;AAEjC,QAAA,KAAK,qBACb,4BAAgB,EACpB","sourcesContent":["import { opaMenusResolver } from './opa-menus'\n\nexport const Query = {\n ...opaMenusResolver\n}\n"]}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.opaMenusResolver = void 0;
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
|
-
const auth_base_1 = require("@things-factory/auth-base");
|
|
6
|
-
const menu_base_1 = require("@things-factory/menu-base");
|
|
7
|
-
const shell_1 = require("@things-factory/shell");
|
|
8
|
-
exports.opaMenusResolver = {
|
|
9
|
-
async opaMenus(_, _params, context) {
|
|
10
|
-
var _a, _b, _c, _d;
|
|
11
|
-
let menus = [];
|
|
12
|
-
if (((_b = (_a = context === null || context === void 0 ? void 0 : context.state) === null || _a === void 0 ? void 0 : _a.domain) === null || _b === void 0 ? void 0 : _b.id) && ((_d = (_c = context === null || context === void 0 ? void 0 : context.state) === null || _c === void 0 ? void 0 : _c.user) === null || _d === void 0 ? void 0 : _d.id)) {
|
|
13
|
-
try {
|
|
14
|
-
const qb = (0, shell_1.getRepository)(auth_base_1.User).createQueryBuilder('USER');
|
|
15
|
-
const user = await qb
|
|
16
|
-
.leftJoinAndSelect('USER.roles', 'ROLES')
|
|
17
|
-
.leftJoinAndSelect('ROLES.domain', 'ROLES_DOMAIN')
|
|
18
|
-
.where('USER.id = :userId', { userId: context.state.user.id })
|
|
19
|
-
.andWhere('ROLES_DOMAIN.id = :domainId', { domainId: context.state.domain.id })
|
|
20
|
-
.getOne();
|
|
21
|
-
// get menus which are non-restricted by any role.
|
|
22
|
-
menus.push(...(await getNonRestrictedMenus(context.state.domain)));
|
|
23
|
-
const userRoleIds = user.roles.map((role) => role.id);
|
|
24
|
-
let restrictedMenus = [];
|
|
25
|
-
if (userRoleIds === null || userRoleIds === void 0 ? void 0 : userRoleIds.length) {
|
|
26
|
-
// get menus which are restricted by role ()
|
|
27
|
-
restrictedMenus = [...(await getRestrictedMenus(userRoleIds, context.state.domain))];
|
|
28
|
-
}
|
|
29
|
-
const restrictedMenuIds = restrictedMenus.map((restrictedMenu) => restrictedMenu.id);
|
|
30
|
-
menus.forEach(menu => {
|
|
31
|
-
const idx = restrictedMenuIds.indexOf(menu.id);
|
|
32
|
-
if (idx !== -1) {
|
|
33
|
-
menu.children = Array.from(new Set([...restrictedMenus[idx].children, ...menu.children]));
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
return menus.filter((groupMenu) => { var _a; return (_a = groupMenu === null || groupMenu === void 0 ? void 0 : groupMenu.children) === null || _a === void 0 ? void 0 : _a.length; });
|
|
37
|
-
}
|
|
38
|
-
catch (e) {
|
|
39
|
-
throw e;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
async function getNonRestrictedMenus(domain) {
|
|
45
|
-
const menus = await (0, shell_1.getRepository)(menu_base_1.Menu).find({
|
|
46
|
-
where: { domain: { id: domain.id }, hiddenFlag: false, menuType: 'MENU' },
|
|
47
|
-
relations: ['parent', 'children', 'children.roles'],
|
|
48
|
-
order: { rank: 'ASC' }
|
|
49
|
-
});
|
|
50
|
-
menus.forEach(menu => {
|
|
51
|
-
menu.children = menu.children.filter(child => { var _a; return !((_a = child.roles) === null || _a === void 0 ? void 0 : _a.length); });
|
|
52
|
-
});
|
|
53
|
-
return menus;
|
|
54
|
-
}
|
|
55
|
-
async function getRestrictedMenus(roleIds, domain) {
|
|
56
|
-
const menus = await (0, shell_1.getRepository)(menu_base_1.Menu).find({
|
|
57
|
-
where: { domain: { id: domain.id }, hiddenFlag: false, menuType: 'MENU' },
|
|
58
|
-
relations: ['parent', 'children', 'children.roles'],
|
|
59
|
-
order: { rank: 'ASC' }
|
|
60
|
-
});
|
|
61
|
-
const userRoles = await (0, shell_1.getRepository)(auth_base_1.Role).find({ where: { domain: { id: domain.id }, id: (0, typeorm_1.In)(roleIds) } });
|
|
62
|
-
menus.forEach(menu => {
|
|
63
|
-
menu.children = menu.children.filter(child => {
|
|
64
|
-
var _a;
|
|
65
|
-
const childRoleIds = ((_a = child.roles) === null || _a === void 0 ? void 0 : _a.map(role => role.id)) || [];
|
|
66
|
-
return userRoles.find(role => childRoleIds.includes(role.id)) || false;
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
return menus;
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=opa-menus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opa-menus.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/opa-menu/opa-menus.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAEhD,yDAAsD;AACtD,yDAAgD;AAChD,iDAA6D;AAEhD,QAAA,gBAAgB,GAAG;IAC9B,KAAK,CAAC,QAAQ,CAAC,CAAM,EAAE,OAAY,EAAE,OAAwB;;QAC3D,IAAI,KAAK,GAAW,EAAE,CAAA;QACtB,IAAI,CAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,MAAM,0CAAE,EAAE,MAAI,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,IAAI,0CAAE,EAAE,CAAA,EAAE;YAC1D,IAAI;gBACF,MAAM,EAAE,GAA6B,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;gBACnF,MAAM,IAAI,GAAS,MAAM,EAAE;qBACxB,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC;qBACxC,iBAAiB,CAAC,cAAc,EAAE,cAAc,CAAC;qBACjD,KAAK,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;qBAC7D,QAAQ,CAAC,6BAA6B,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;qBAC9E,MAAM,EAAE,CAAA;gBAEX,kDAAkD;gBAClD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBAElE,MAAM,WAAW,GAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACrE,IAAI,eAAe,GAAW,EAAE,CAAA;gBAChC,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE;oBACvB,4CAA4C;oBAC5C,eAAe,GAAG,CAAC,GAAG,CAAC,MAAM,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;iBACrF;gBAED,MAAM,iBAAiB,GAAa,eAAe,CAAC,GAAG,CAAC,CAAC,cAAoB,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;gBACpG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAC9C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;wBACd,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;qBAC1F;gBACH,CAAC,CAAC,CAAA;gBAEF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,SAAe,EAAE,EAAE,WAAC,OAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,0CAAE,MAAM,CAAA,EAAA,CAAC,CAAA;aACtE;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,CAAC,CAAA;aACR;SACF;IACH,CAAC;CACF,CAAA;AAED,KAAK,UAAU,qBAAqB,CAAC,MAAc;IACjD,MAAM,KAAK,GAAW,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,IAAI,CAAC;QACnD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;QACzE,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,gBAAgB,CAAC;QACnD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;KACvB,CAAC,CAAA;IAEF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAC,OAAA,CAAC,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,MAAM,CAAA,CAAA,EAAA,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAiB,EAAE,MAAc;IACjE,MAAM,KAAK,GAAW,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,IAAI,CAAC;QACnD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;QACzE,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,gBAAgB,CAAC;QACnD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;KACvB,CAAC,CAAA;IACF,MAAM,SAAS,GAAW,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;IAEnH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;;YAC3C,MAAM,YAAY,GAAG,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAI,EAAE,CAAA;YAE5D,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAA;QACxE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACd,CAAC","sourcesContent":["import { In, SelectQueryBuilder } from 'typeorm'\n\nimport { Role, User } from '@things-factory/auth-base'\nimport { Menu } from '@things-factory/menu-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nexport const opaMenusResolver = {\n async opaMenus(_: any, _params: any, context: ResolverContext) {\n let menus: Menu[] = []\n if (context?.state?.domain?.id && context?.state?.user?.id) {\n try {\n const qb: SelectQueryBuilder<User> = getRepository(User).createQueryBuilder('USER')\n const user: User = await qb\n .leftJoinAndSelect('USER.roles', 'ROLES')\n .leftJoinAndSelect('ROLES.domain', 'ROLES_DOMAIN')\n .where('USER.id = :userId', { userId: context.state.user.id })\n .andWhere('ROLES_DOMAIN.id = :domainId', { domainId: context.state.domain.id })\n .getOne()\n\n // get menus which are non-restricted by any role.\n menus.push(...(await getNonRestrictedMenus(context.state.domain)))\n\n const userRoleIds: string[] = user.roles.map((role: Role) => role.id)\n let restrictedMenus: Menu[] = []\n if (userRoleIds?.length) {\n // get menus which are restricted by role ()\n restrictedMenus = [...(await getRestrictedMenus(userRoleIds, context.state.domain))]\n }\n\n const restrictedMenuIds: string[] = restrictedMenus.map((restrictedMenu: Menu) => restrictedMenu.id)\n menus.forEach(menu => {\n const idx = restrictedMenuIds.indexOf(menu.id)\n if (idx !== -1) {\n menu.children = Array.from(new Set([...restrictedMenus[idx].children, ...menu.children]))\n }\n })\n\n return menus.filter((groupMenu: Menu) => groupMenu?.children?.length)\n } catch (e) {\n throw e\n }\n }\n }\n}\n\nasync function getNonRestrictedMenus(domain: Domain): Promise<Menu[]> {\n const menus: Menu[] = await getRepository(Menu).find({\n where: { domain: { id: domain.id }, hiddenFlag: false, menuType: 'MENU' },\n relations: ['parent', 'children', 'children.roles'],\n order: { rank: 'ASC' }\n })\n\n menus.forEach(menu => {\n menu.children = menu.children.filter(child => !child.roles?.length)\n })\n\n return menus\n}\n\nasync function getRestrictedMenus(roleIds: string[], domain: Domain): Promise<Menu[]> {\n const menus: Menu[] = await getRepository(Menu).find({\n where: { domain: { id: domain.id }, hiddenFlag: false, menuType: 'MENU' },\n relations: ['parent', 'children', 'children.roles'],\n order: { rank: 'ASC' }\n })\n const userRoles: Role[] = await getRepository(Role).find({ where: { domain: { id: domain.id }, id: In(roleIds) } })\n\n menus.forEach(menu => {\n menu.children = menu.children.filter(child => {\n const childRoleIds = child.roles?.map(role => role.id) || []\n\n return userRoles.find(role => childRoleIds.includes(role.id)) || false\n })\n })\n\n return menus\n}\n"]}
|