@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.
Files changed (186) hide show
  1. package/package.json +35 -35
  2. package/dist-server/graphql/index.js +0 -11
  3. package/dist-server/graphql/index.js.map +0 -1
  4. package/dist-server/graphql/resolvers/board-setting/board-settings.js +0 -76
  5. package/dist-server/graphql/resolvers/board-setting/board-settings.js.map +0 -1
  6. package/dist-server/graphql/resolvers/board-setting/index.js +0 -6
  7. package/dist-server/graphql/resolvers/board-setting/index.js.map +0 -1
  8. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js +0 -87
  9. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js.map +0 -1
  10. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js +0 -138
  11. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js.map +0 -1
  12. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js +0 -124
  13. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js.map +0 -1
  14. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js +0 -158
  15. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js.map +0 -1
  16. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +0 -90
  17. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js.map +0 -1
  18. package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js +0 -36
  19. package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js.map +0 -1
  20. package/dist-server/graphql/resolvers/custom/elccl/index.js +0 -11
  21. package/dist-server/graphql/resolvers/custom/elccl/index.js.map +0 -1
  22. package/dist-server/graphql/resolvers/custom/kimeda/index.js +0 -6
  23. package/dist-server/graphql/resolvers/custom/kimeda/index.js.map +0 -1
  24. package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js +0 -42
  25. package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js.map +0 -1
  26. package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js +0 -35
  27. package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js.map +0 -1
  28. package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js +0 -23
  29. package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js.map +0 -1
  30. package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js +0 -23
  31. package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js.map +0 -1
  32. package/dist-server/graphql/resolvers/dashboard/index.js +0 -12
  33. package/dist-server/graphql/resolvers/dashboard/index.js.map +0 -1
  34. package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js +0 -56
  35. package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js.map +0 -1
  36. package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js +0 -124
  37. package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js.map +0 -1
  38. package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js +0 -35
  39. package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js.map +0 -1
  40. package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js +0 -56
  41. package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js.map +0 -1
  42. package/dist-server/graphql/resolvers/index.js +0 -27
  43. package/dist-server/graphql/resolvers/index.js.map +0 -1
  44. package/dist-server/graphql/resolvers/inventory-comparison/index.js +0 -6
  45. package/dist-server/graphql/resolvers/inventory-comparison/index.js.map +0 -1
  46. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js +0 -78
  47. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js.map +0 -1
  48. package/dist-server/graphql/resolvers/opa-menu/index.js +0 -6
  49. package/dist-server/graphql/resolvers/opa-menu/index.js.map +0 -1
  50. package/dist-server/graphql/resolvers/opa-menu/opa-menus.js +0 -71
  51. package/dist-server/graphql/resolvers/opa-menu/opa-menus.js.map +0 -1
  52. package/dist-server/graphql/resolvers/other/add-release-good-products.js +0 -291
  53. package/dist-server/graphql/resolvers/other/add-release-good-products.js.map +0 -1
  54. package/dist-server/graphql/resolvers/other/index.js +0 -8
  55. package/dist-server/graphql/resolvers/other/index.js.map +0 -1
  56. package/dist-server/graphql/resolvers/other/page-settings.js +0 -87
  57. package/dist-server/graphql/resolvers/other/page-settings.js.map +0 -1
  58. package/dist-server/graphql/resolvers/reports/costing-report.js +0 -172
  59. package/dist-server/graphql/resolvers/reports/costing-report.js.map +0 -1
  60. package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js +0 -200
  61. package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js.map +0 -1
  62. package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js +0 -140
  63. package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js.map +0 -1
  64. package/dist-server/graphql/resolvers/reports/index.js +0 -12
  65. package/dist-server/graphql/resolvers/reports/index.js.map +0 -1
  66. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js +0 -232
  67. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js.map +0 -1
  68. package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js +0 -143
  69. package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js.map +0 -1
  70. package/dist-server/graphql/resolvers/reports/product-label-report.js +0 -57
  71. package/dist-server/graphql/resolvers/reports/product-label-report.js.map +0 -1
  72. package/dist-server/graphql/resolvers/reports/release-inventory-report.js +0 -180
  73. package/dist-server/graphql/resolvers/reports/release-inventory-report.js.map +0 -1
  74. package/dist-server/graphql/resolvers/shipping-provider/index.js +0 -6
  75. package/dist-server/graphql/resolvers/shipping-provider/index.js.map +0 -1
  76. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +0 -20
  77. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +0 -1
  78. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/index.js +0 -6
  79. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/index.js.map +0 -1
  80. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js +0 -65
  81. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js.map +0 -1
  82. package/dist-server/graphql/types/board-setting/board-setting.js +0 -14
  83. package/dist-server/graphql/types/board-setting/board-setting.js.map +0 -1
  84. package/dist-server/graphql/types/board-setting/index.js +0 -9
  85. package/dist-server/graphql/types/board-setting/index.js.map +0 -1
  86. package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report-list.js +0 -12
  87. package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report-list.js.map +0 -1
  88. package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report.js +0 -28
  89. package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report.js.map +0 -1
  90. package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report-list.js +0 -12
  91. package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report-list.js.map +0 -1
  92. package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report.js +0 -23
  93. package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report.js.map +0 -1
  94. package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.js +0 -20
  95. package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.js.map +0 -1
  96. package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report-list.js +0 -12
  97. package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report-list.js.map +0 -1
  98. package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report.js +0 -21
  99. package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report.js.map +0 -1
  100. package/dist-server/graphql/types/custom/elccl/elccl-pallet-detail-report.js +0 -20
  101. package/dist-server/graphql/types/custom/elccl/elccl-pallet-detail-report.js.map +0 -1
  102. package/dist-server/graphql/types/custom/elccl/index.js +0 -30
  103. package/dist-server/graphql/types/custom/elccl/index.js.map +0 -1
  104. package/dist-server/graphql/types/custom/kimeda/index.js +0 -7
  105. package/dist-server/graphql/types/custom/kimeda/index.js.map +0 -1
  106. package/dist-server/graphql/types/dashboard/index.js +0 -17
  107. package/dist-server/graphql/types/dashboard/index.js.map +0 -1
  108. package/dist-server/graphql/types/dashboard/inventory-expiry-counter.js +0 -13
  109. package/dist-server/graphql/types/dashboard/inventory-expiry-counter.js.map +0 -1
  110. package/dist-server/graphql/types/dashboard/inventory-expiry-status.js +0 -12
  111. package/dist-server/graphql/types/dashboard/inventory-expiry-status.js.map +0 -1
  112. package/dist-server/graphql/types/dashboard/order-status-counter.js +0 -12
  113. package/dist-server/graphql/types/dashboard/order-status-counter.js.map +0 -1
  114. package/dist-server/graphql/types/index.js +0 -40
  115. package/dist-server/graphql/types/index.js.map +0 -1
  116. package/dist-server/graphql/types/inventory-comparison/index.js +0 -13
  117. package/dist-server/graphql/types/inventory-comparison/index.js.map +0 -1
  118. package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js +0 -12
  119. package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js.map +0 -1
  120. package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js +0 -16
  121. package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js.map +0 -1
  122. package/dist-server/graphql/types/opa-menu/index.js +0 -9
  123. package/dist-server/graphql/types/opa-menu/index.js.map +0 -1
  124. package/dist-server/graphql/types/opa-menu/opa-menu.js +0 -43
  125. package/dist-server/graphql/types/opa-menu/opa-menu.js.map +0 -1
  126. package/dist-server/graphql/types/other/index.js +0 -19
  127. package/dist-server/graphql/types/other/index.js.map +0 -1
  128. package/dist-server/graphql/types/other/page-setting.js +0 -34
  129. package/dist-server/graphql/types/other/page-setting.js.map +0 -1
  130. package/dist-server/graphql/types/reports/costing-report-list.js +0 -12
  131. package/dist-server/graphql/types/reports/costing-report-list.js.map +0 -1
  132. package/dist-server/graphql/types/reports/costing-report.js +0 -17
  133. package/dist-server/graphql/types/reports/costing-report.js.map +0 -1
  134. package/dist-server/graphql/types/reports/inbound-order-details-report-list.js +0 -12
  135. package/dist-server/graphql/types/reports/inbound-order-details-report-list.js.map +0 -1
  136. package/dist-server/graphql/types/reports/inbound-order-details-report.js +0 -57
  137. package/dist-server/graphql/types/reports/inbound-order-details-report.js.map +0 -1
  138. package/dist-server/graphql/types/reports/inbound-serial-number-report-list.js +0 -12
  139. package/dist-server/graphql/types/reports/inbound-serial-number-report-list.js.map +0 -1
  140. package/dist-server/graphql/types/reports/inbound-serial-number-report.js +0 -21
  141. package/dist-server/graphql/types/reports/inbound-serial-number-report.js.map +0 -1
  142. package/dist-server/graphql/types/reports/index.js +0 -43
  143. package/dist-server/graphql/types/reports/index.js.map +0 -1
  144. package/dist-server/graphql/types/reports/outbound-order-details-report-list.js +0 -12
  145. package/dist-server/graphql/types/reports/outbound-order-details-report-list.js.map +0 -1
  146. package/dist-server/graphql/types/reports/outbound-order-details-report.js +0 -74
  147. package/dist-server/graphql/types/reports/outbound-order-details-report.js.map +0 -1
  148. package/dist-server/graphql/types/reports/outbound-serial-number-report-list.js +0 -12
  149. package/dist-server/graphql/types/reports/outbound-serial-number-report-list.js.map +0 -1
  150. package/dist-server/graphql/types/reports/outbound-serial-number-report.js +0 -23
  151. package/dist-server/graphql/types/reports/outbound-serial-number-report.js.map +0 -1
  152. package/dist-server/graphql/types/reports/product-label-report-list.js +0 -12
  153. package/dist-server/graphql/types/reports/product-label-report-list.js.map +0 -1
  154. package/dist-server/graphql/types/reports/product-label-report.js +0 -14
  155. package/dist-server/graphql/types/reports/product-label-report.js.map +0 -1
  156. package/dist-server/graphql/types/reports/release-inventory-report-list.js +0 -12
  157. package/dist-server/graphql/types/reports/release-inventory-report-list.js.map +0 -1
  158. package/dist-server/graphql/types/reports/release-inventory-report.js +0 -27
  159. package/dist-server/graphql/types/reports/release-inventory-report.js.map +0 -1
  160. package/dist-server/graphql/types/shipping-provider/index.js +0 -10
  161. package/dist-server/graphql/types/shipping-provider/index.js.map +0 -1
  162. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js +0 -11
  163. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js.map +0 -1
  164. package/dist-server/graphql/types/shipping-provider/shipping-provider.js +0 -11
  165. package/dist-server/graphql/types/shipping-provider/shipping-provider.js.map +0 -1
  166. package/dist-server/graphql/types/warehouse-inventory-adjustment/index.js +0 -9
  167. package/dist-server/graphql/types/warehouse-inventory-adjustment/index.js.map +0 -1
  168. package/dist-server/index.js +0 -7
  169. package/dist-server/index.js.map +0 -1
  170. package/dist-server/migrations/1568858861188-SeedSetting.js +0 -51
  171. package/dist-server/migrations/1568858861188-SeedSetting.js.map +0 -1
  172. package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js +0 -35
  173. package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js.map +0 -1
  174. package/dist-server/migrations/1623381200659-SeedStoringRule.js +0 -33
  175. package/dist-server/migrations/1623381200659-SeedStoringRule.js.map +0 -1
  176. package/dist-server/migrations/index.js +0 -12
  177. package/dist-server/migrations/index.js.map +0 -1
  178. package/dist-server/opa-app-setting-constants.js +0 -13
  179. package/dist-server/opa-app-setting-constants.js.map +0 -1
  180. package/dist-server/routes.js +0 -2
  181. package/dist-server/routes.js.map +0 -1
  182. package/dist-server/tsconfig.tsbuildinfo +0 -1
  183. package/dist-server/utils/index.js +0 -5
  184. package/dist-server/utils/index.js.map +0 -1
  185. package/dist-server/utils/report-query-util.js +0 -42
  186. 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,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Query = void 0;
4
- const opa_menus_1 = require("./opa-menus");
5
- exports.Query = Object.assign({}, opa_menus_1.opaMenusResolver);
6
- //# sourceMappingURL=index.js.map
@@ -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":"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","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"]}