@things-factory/operato-wms 6.2.101 → 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 +4 -4
  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,232 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.outboundOrderDetailsReport = void 0;
4
- const auth_base_1 = require("@things-factory/auth-base");
5
- const biz_base_1 = require("@things-factory/biz-base");
6
- const utils_1 = require("../../../utils");
7
- exports.outboundOrderDetailsReport = {
8
- async outboundOrderDetailsReport(_, params, context) {
9
- try {
10
- const { tx } = context.state;
11
- let bizplaceFilter = { name: '', operator: '', value: '' };
12
- let userFilter = params.filters.find(data => data.name === 'user');
13
- let fromDate = params.filters.find(data => data.name === 'fromDate');
14
- let toDate = params.filters.find(data => data.name === 'toDate');
15
- let roNo = params.filters.find(data => data.name === 'roNo');
16
- let doNo = params.filters.find(data => data.name === 'doNo');
17
- let status = params.filters.find(data => data.name === 'status');
18
- if (userFilter) {
19
- const user = (await tx.getRepository(auth_base_1.User).findOne({
20
- where: { id: userFilter.value },
21
- relations: ['bizplaces']
22
- }));
23
- const bizplace = user.bizplaces[0];
24
- if (!bizplace)
25
- throw 'Invalid input';
26
- bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id };
27
- }
28
- else {
29
- bizplaceFilter = params.filters.find(data => data.name === 'bizplace');
30
- }
31
- if (!bizplaceFilter || !fromDate || !toDate)
32
- throw 'Invalid input';
33
- const bizplace = await tx.getRepository(biz_base_1.Bizplace).findOneBy({
34
- id: bizplaceFilter.value
35
- });
36
- await (0, utils_1.rawProductsQuery)(tx, params, bizplace);
37
- let extraQueryFilters = '';
38
- if (roNo) {
39
- extraQueryFilters = `${extraQueryFilters} and ro_no like '%${roNo.value}%' `;
40
- }
41
- if (doNo) {
42
- extraQueryFilters = `${extraQueryFilters} and delivery_order_no like '%${doNo.value}%' `;
43
- }
44
- console.time('temp');
45
- await tx.query(`
46
- create temp table temp_outbound_order_report on commit drop as (
47
- select * from (
48
- select oi.id,
49
- oi.release_qty AS "release_qty", oi.picked_at, oi.picked_by, oi.packed_at, oi.packed_by, oi.loaded_at, oi.loaded_by,
50
- oi.release_qty as "qty", oi.release_uom_value as "uom_value", oi.return_to_location_qty, oi.return_to_location_uom_value,
51
- coalesce(do2.other_driver, td.name) as driver_name,
52
- coalesce(do2.truck_no, tv.name, rg.truck_no) as vehicle_no,
53
- do2.name AS "delivery_order_no", do2.delivery_date AS "delivery_order_delivery_date", do2."to", do2.contact_point_ref_id, do2.pallet_qty,
54
- coalesce(do2.delivery_date_time, do2.delivery_date::timestamp, ms.dispatched_at, null) as "dispatched_at",
55
- rg.bizplace_id, $5 AS "bizplace_name", $6 AS "bizplace_description",
56
- coalesce( concat(do2.delivery_address_1, do2.delivery_address_2, do2.delivery_address_3, do2.delivery_address_4, do2.delivery_address_5, do2.postal_code, do2.country), concat(rg.delivery_address_1, rg.delivery_address_2, rg.delivery_address_3, rg.delivery_address_4, rg.delivery_address_5, rg.postal_code, rg.country)) as delivery_address,
57
- so.container_no, so.container_size,
58
- rg.export_option, rg.name AS "ro_no", rg."type" as "ro_type", rg.ref_no AS "ref_no_1", rg.ref_no_2 AS "ref_no_2", rg.ref_no_3 AS "ref_no_3", rg.status as "ro_status",
59
- u1.name as "order_created_by", rg.created_at AS "order_created_at",
60
- rg.accepted_at, u4.name as accepted_by, rg.checked_remark_by, rg.checked_remark_at, coalesce(do2.own_collection, rg.own_transport) AS own_transport,
61
- p.id as "product_id", p.sku as "product_sku", p.name AS "product_name", p.description AS "product_description", p.type as "product_type",
62
- i.packing_type as "pack_type", i.packing_size as "pack_size",
63
- i.uom, i.unit_cost,
64
- i.id as inventory_id, i.pallet_id, i.carton_id, i.batch_id, i.batch_id_ref, i.expiration_date, i.manufacture_date,
65
- coalesce(ms.name,'') as manifest_no, coalesce(rg.manifested_at, ms.created_at) as manifested_at, coalesce(u6.name, u5.name) as manifested_by
66
- from release_goods rg
67
- left join users u1 on u1.id = rg.creator_id
68
- inner join order_inventories oi on rg.id = oi.release_good_id
69
- left join shipping_orders so on so.id = rg.shipping_order_id
70
- left join users u4 on u4.id = rg.accepted_by_id
71
- left join manifests ms on ms.id = rg.manifest_id
72
- left join users u5 on u5.id = ms.creator_id
73
- left join users u6 on u6.id = rg.manifested_by_id
74
- inner join inventories i on i.id = oi.inventory_id
75
- inner join temp_products p on p.id = oi.product_id
76
- left join delivery_orders do2 on do2.id = oi.delivery_order_id
77
- left join transport_drivers td ON td.id = do2.transport_driver_id
78
- left join transport_vehicles tv on tv.id = do2.transport_vehicle_id
79
- where rg.bizplace_id = $2 and rg.domain_id = $1
80
- and rg.created_at >= $3 and rg.created_at <= $4
81
- and oi.status <> 'REPLACED'
82
- ${status ? `and rg.status = '${status.value}' ` : ``}
83
- ) src
84
- where 1=1
85
- ${extraQueryFilters}
86
- )
87
- `, [context.state.domain.id, bizplace.id, fromDate.value, toDate.value, bizplace.name, bizplace.description]);
88
- console.timeEnd('temp');
89
- const total = await tx.query(`
90
- select count(*) from temp_outbound_order_report
91
- `);
92
- await tx.query(`
93
- create temp table temp_outbound_order_worksheet on commit drop as (
94
- select oi.id, w.started_at, w.ended_at, w.type from temp_outbound_order_report oi
95
- inner join worksheet_details wd on wd.target_inventory_id = oi.id
96
- inner join worksheets w on w.id = wd.worksheet_id
97
- )
98
- `);
99
- console.time('result');
100
- const result = await tx.query(`
101
- select *,
102
- round((qty * unit_volume)::numeric ,4) as total_volume,
103
- round((qty * unit_nett_weight)::numeric ,4) as total_unit_nett_weight,
104
- round((qty * unit_gross_weight)::numeric ,4) as total_unit_gross_weight
105
- from (
106
- select oi.*,
107
- wpick.started_at as picking_start, wpick.ended_at as picking_complete,
108
- wpack.started_at as packing_start, wpack.ended_at as packing_complete,
109
- wsort.started_at as sorting_start, wsort.ended_at as sorting_complete,
110
- wload.started_at as loading_start, wload.ended_at as loading_complete,
111
- coalesce(delivery_address, concat(cp.address, cp.address_2)) as "delivery_address",
112
- coalesce((select volume from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size
113
- order by created_at desc
114
- fetch first 1 rows only),0) as unit_volume,
115
- coalesce((select nett_weight from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size
116
- order by created_at desc
117
- fetch first 1 rows only),0) as unit_nett_weight,
118
- coalesce((select gross_weight from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size
119
- order by created_at desc
120
- fetch first 1 rows only),0) as unit_gross_weight,
121
- coalesce((select weight_unit from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size
122
- order by created_at desc
123
- fetch first 1 rows only),'') as weight_unit,
124
- coalesce((select unit_cost from reduced_inventory_histories rih where
125
- rih.ref_order_id::uuid = oi.id and
126
- rih.inventory_id::uuid = oi.inventory_id and
127
- rih.transaction_type = 'PICKING'
128
- order by created_at desc
129
- fetch first 1 rows only), oi.unit_cost, 0) as unit_cost
130
- from temp_outbound_order_report oi
131
- left join contact_points cp on cp.id = oi.contact_point_ref_id
132
- left join temp_outbound_order_worksheet wpick on wpick.id = oi.id
133
- and (wpick.type= 'PICKING' OR wpick.type = 'BATCH_PICKING')
134
- left join temp_outbound_order_worksheet wpack on wpack.id = oi.id
135
- and wpack.type= 'PACKING'
136
- left join temp_outbound_order_worksheet wsort on wsort.id = oi.id
137
- and wsort.type= 'SORTING'
138
- left join temp_outbound_order_worksheet wload on wload.id = oi.id
139
- and wload.type= 'LOADING'
140
- order by oi.ro_no, oi.product_sku
141
- offset $1 limit $2
142
- ) src
143
- `, [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]);
144
- console.timeEnd('result');
145
- let items = result.map(itm => {
146
- return {
147
- bizplace: {
148
- id: itm.bizplace_id,
149
- name: itm.bizplace_name,
150
- description: itm.bizplace_description
151
- },
152
- doNo: itm.delivery_order_no,
153
- doDeliveryDate: itm.delivery_order_delivery_date,
154
- dispatchedAt: itm.dispatched_at,
155
- deliveryAddress: itm.delivery_address,
156
- manifestNo: itm.manifest_no,
157
- roNo: itm.ro_no,
158
- roType: itm.ro_type,
159
- status: itm.ro_status,
160
- refNo1: itm.ref_no_1,
161
- refNo3: itm.ref_no_3,
162
- refNo2: itm.ref_no_2,
163
- acceptedBy: itm.accepted_by,
164
- acceptedAt: itm.accepted_at,
165
- orderCreatedBy: itm.order_created_by,
166
- orderCreatedAt: itm.order_created_at,
167
- pickingStart: itm.picking_start,
168
- pickingComplete: itm.picking_complete,
169
- packingStart: itm.packing_start,
170
- packingComplete: itm.packing_complete,
171
- sortingStart: itm.sorting_start,
172
- sortingComplete: itm.sorting_complete,
173
- loadingStart: itm.loading_start,
174
- loadingComplete: itm.loading_complete,
175
- product: {
176
- id: itm.product_id,
177
- sku: itm.product_sku,
178
- name: itm.product_name,
179
- description: itm.product_description,
180
- type: itm.product_type
181
- },
182
- packType: itm.pack_type,
183
- packSize: itm.pack_size,
184
- qty: Math.abs(itm.qty),
185
- uomValue: Math.abs(itm.uom_value),
186
- uom: itm.uom,
187
- unitCost: itm.unit_cost,
188
- returnToLocationQty: itm.return_to_location_qty,
189
- returnToLocationUomValue: itm.return_to_location_uom_value,
190
- unitVolume: itm.unit_volume,
191
- totalVolume: itm.total_volume,
192
- unitNettWeight: itm.unit_nett_weight,
193
- totalUnitNettWeight: itm.total_unit_nett_weight,
194
- unitGrossWeight: itm.unit_gross_weight,
195
- totalUnitGrossWeight: itm.total_unit_gross_weight,
196
- weightUnit: itm.weight_unit,
197
- palletId: itm.pallet_id,
198
- cartonId: itm.carton_id,
199
- batchId: itm.batch_id,
200
- batchIdRef: itm.batch_id_ref,
201
- expirationDate: itm.expiration_date,
202
- manufactureDate: itm.manufacture_date,
203
- pickedAt: itm.picked_at,
204
- pickedBy: itm.picked_by,
205
- packedAt: itm.packed_at,
206
- packedBy: itm.packed_by,
207
- checkedRemarkBy: itm.checked_remark_by,
208
- checkedRemarkAt: itm.checked_remark_at,
209
- loadedAt: itm.loaded_at,
210
- loadedBy: itm.loaded_by,
211
- manifestedAt: itm.manifested_at,
212
- manifestedBy: itm.manifested_by,
213
- exportOption: itm.export_option,
214
- containerNo: itm.container_no,
215
- containerSize: itm.container_size,
216
- palletQty: itm.pallet_qty,
217
- transportOption: itm.own_transport ? 'Own Transport' : 'Warehouse Transport',
218
- vehicleNo: itm.vehicle_no,
219
- driverName: itm.driver_name
220
- };
221
- });
222
- return {
223
- items,
224
- total: total[0].count
225
- };
226
- }
227
- catch (error) {
228
- throw error;
229
- }
230
- }
231
- };
232
- //# sourceMappingURL=outbound-order-details-report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"outbound-order-details-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/outbound-order-details-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Filter, ListParam } from '@things-factory/shell'\n\nimport { rawProductsQuery } from '../../../utils'\n\nexport const outboundOrderDetailsReport = {\n async outboundOrderDetailsReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n let bizplaceFilter: Filter = { name: '', operator: '', value: '' }\n let userFilter = params.filters.find(data => data.name === 'user')\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let roNo = params.filters.find(data => data.name === 'roNo')\n let doNo = params.filters.find(data => data.name === 'doNo')\n let status = params.filters.find(data => data.name === 'status')\n\n if (userFilter) {\n const user = (await tx.getRepository(User).findOne({\n where: { id: userFilter.value },\n relations: ['bizplaces']\n })) as User & { bizplaces: Bizplace[] }\n\n const bizplace: Bizplace = user.bizplaces[0]\n\n if (!bizplace) throw 'Invalid input'\n\n bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }\n } else {\n bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n }\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await rawProductsQuery(tx, params, bizplace)\n\n let extraQueryFilters = ''\n if (roNo) {\n extraQueryFilters = `${extraQueryFilters} and ro_no like '%${roNo.value}%' `\n }\n if (doNo) {\n extraQueryFilters = `${extraQueryFilters} and delivery_order_no like '%${doNo.value}%' `\n }\n\n console.time('temp')\n await tx.query(\n `\n create temp table temp_outbound_order_report on commit drop as (\n select * from (\n select oi.id,\n oi.release_qty AS \"release_qty\", oi.picked_at, oi.picked_by, oi.packed_at, oi.packed_by, oi.loaded_at, oi.loaded_by,\n oi.release_qty as \"qty\", oi.release_uom_value as \"uom_value\", oi.return_to_location_qty, oi.return_to_location_uom_value,\n coalesce(do2.other_driver, td.name) as driver_name, \n coalesce(do2.truck_no, tv.name, rg.truck_no) as vehicle_no,\n do2.name AS \"delivery_order_no\", do2.delivery_date AS \"delivery_order_delivery_date\", do2.\"to\", do2.contact_point_ref_id, do2.pallet_qty,\n coalesce(do2.delivery_date_time, do2.delivery_date::timestamp, ms.dispatched_at, null) as \"dispatched_at\",\n rg.bizplace_id, $5 AS \"bizplace_name\", $6 AS \"bizplace_description\", \n coalesce( concat(do2.delivery_address_1, do2.delivery_address_2, do2.delivery_address_3, do2.delivery_address_4, do2.delivery_address_5, do2.postal_code, do2.country), concat(rg.delivery_address_1, rg.delivery_address_2, rg.delivery_address_3, rg.delivery_address_4, rg.delivery_address_5, rg.postal_code, rg.country)) as delivery_address,\n so.container_no, so.container_size,\n rg.export_option, rg.name AS \"ro_no\", rg.\"type\" as \"ro_type\", rg.ref_no AS \"ref_no_1\", rg.ref_no_2 AS \"ref_no_2\", rg.ref_no_3 AS \"ref_no_3\", rg.status as \"ro_status\", \n u1.name as \"order_created_by\", rg.created_at AS \"order_created_at\",\n rg.accepted_at, u4.name as accepted_by, rg.checked_remark_by, rg.checked_remark_at, coalesce(do2.own_collection, rg.own_transport) AS own_transport,\n p.id as \"product_id\", p.sku as \"product_sku\", p.name AS \"product_name\", p.description AS \"product_description\", p.type as \"product_type\",\n i.packing_type as \"pack_type\", i.packing_size as \"pack_size\", \n i.uom, i.unit_cost,\n i.id as inventory_id, i.pallet_id, i.carton_id, i.batch_id, i.batch_id_ref, i.expiration_date, i.manufacture_date,\n coalesce(ms.name,'') as manifest_no, coalesce(rg.manifested_at, ms.created_at) as manifested_at, coalesce(u6.name, u5.name) as manifested_by\n from release_goods rg\n left join users u1 on u1.id = rg.creator_id \n inner join order_inventories oi on rg.id = oi.release_good_id\n left join shipping_orders so on so.id = rg.shipping_order_id \n left join users u4 on u4.id = rg.accepted_by_id \n left join manifests ms on ms.id = rg.manifest_id\n left join users u5 on u5.id = ms.creator_id\n left join users u6 on u6.id = rg.manifested_by_id\n inner join inventories i on i.id = oi.inventory_id \n inner join temp_products p on p.id = oi.product_id\n left join delivery_orders do2 on do2.id = oi.delivery_order_id \n left join transport_drivers td ON td.id = do2.transport_driver_id \n left join transport_vehicles tv on tv.id = do2.transport_vehicle_id\n where rg.bizplace_id = $2 and rg.domain_id = $1\n and rg.created_at >= $3 and rg.created_at <= $4\n and oi.status <> 'REPLACED'\n ${status ? `and rg.status = '${status.value}' ` : ``}\n ) src\n where 1=1\n ${extraQueryFilters}\n )\n `,\n [context.state.domain.id, bizplace.id, fromDate.value, toDate.value, bizplace.name, bizplace.description]\n )\n\n console.timeEnd('temp')\n const total: any = await tx.query(`\n select count(*) from temp_outbound_order_report\n `)\n\n await tx.query(\n `\n create temp table temp_outbound_order_worksheet on commit drop as ( \n select oi.id, w.started_at, w.ended_at, w.type from temp_outbound_order_report oi \n inner join worksheet_details wd on wd.target_inventory_id = oi.id\n inner join worksheets w on w.id = wd.worksheet_id\n )\n `\n )\n\n console.time('result')\n const result: any = await tx.query(\n `\n select *, \n round((qty * unit_volume)::numeric ,4) as total_volume, \n round((qty * unit_nett_weight)::numeric ,4) as total_unit_nett_weight, \n round((qty * unit_gross_weight)::numeric ,4) as total_unit_gross_weight\n from (\n select oi.*,\n wpick.started_at as picking_start, wpick.ended_at as picking_complete,\n wpack.started_at as packing_start, wpack.ended_at as packing_complete,\n wsort.started_at as sorting_start, wsort.ended_at as sorting_complete,\n wload.started_at as loading_start, wload.ended_at as loading_complete,\n coalesce(delivery_address, concat(cp.address, cp.address_2)) as \"delivery_address\",\n coalesce((select volume from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_volume,\n coalesce((select nett_weight from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_nett_weight,\n coalesce((select gross_weight from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_gross_weight,\n coalesce((select weight_unit from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),'') as weight_unit,\n coalesce((select unit_cost from reduced_inventory_histories rih where \n rih.ref_order_id::uuid = oi.id and \n rih.inventory_id::uuid = oi.inventory_id and\n rih.transaction_type = 'PICKING'\n order by created_at desc\n fetch first 1 rows only), oi.unit_cost, 0) as unit_cost\n from temp_outbound_order_report oi\n left join contact_points cp on cp.id = oi.contact_point_ref_id\n left join temp_outbound_order_worksheet wpick on wpick.id = oi.id \n and (wpick.type= 'PICKING' OR wpick.type = 'BATCH_PICKING') \n left join temp_outbound_order_worksheet wpack on wpack.id = oi.id \n and wpack.type= 'PACKING'\n left join temp_outbound_order_worksheet wsort on wsort.id = oi.id \n and wsort.type= 'SORTING'\n left join temp_outbound_order_worksheet wload on wload.id = oi.id \n and wload.type= 'LOADING' \n order by oi.ro_no, oi.product_sku\n offset $1 limit $2\n ) src \n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n console.timeEnd('result')\n\n let items = result.map(itm => {\n return {\n bizplace: {\n id: itm.bizplace_id,\n name: itm.bizplace_name,\n description: itm.bizplace_description\n },\n doNo: itm.delivery_order_no,\n doDeliveryDate: itm.delivery_order_delivery_date,\n dispatchedAt: itm.dispatched_at,\n deliveryAddress: itm.delivery_address,\n manifestNo: itm.manifest_no,\n roNo: itm.ro_no,\n roType: itm.ro_type,\n status: itm.ro_status,\n refNo1: itm.ref_no_1,\n refNo3: itm.ref_no_3,\n refNo2: itm.ref_no_2,\n acceptedBy: itm.accepted_by,\n acceptedAt: itm.accepted_at,\n orderCreatedBy: itm.order_created_by,\n orderCreatedAt: itm.order_created_at,\n pickingStart: itm.picking_start,\n pickingComplete: itm.picking_complete,\n packingStart: itm.packing_start,\n packingComplete: itm.packing_complete,\n sortingStart: itm.sorting_start,\n sortingComplete: itm.sorting_complete,\n loadingStart: itm.loading_start,\n loadingComplete: itm.loading_complete,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description,\n type: itm.product_type\n },\n packType: itm.pack_type,\n packSize: itm.pack_size,\n qty: Math.abs(itm.qty),\n uomValue: Math.abs(itm.uom_value),\n uom: itm.uom,\n unitCost: itm.unit_cost,\n returnToLocationQty: itm.return_to_location_qty,\n returnToLocationUomValue: itm.return_to_location_uom_value,\n unitVolume: itm.unit_volume,\n totalVolume: itm.total_volume,\n unitNettWeight: itm.unit_nett_weight,\n totalUnitNettWeight: itm.total_unit_nett_weight,\n unitGrossWeight: itm.unit_gross_weight,\n totalUnitGrossWeight: itm.total_unit_gross_weight,\n weightUnit: itm.weight_unit,\n palletId: itm.pallet_id,\n cartonId: itm.carton_id,\n batchId: itm.batch_id,\n batchIdRef: itm.batch_id_ref,\n expirationDate: itm.expiration_date,\n manufactureDate: itm.manufacture_date,\n pickedAt: itm.picked_at,\n pickedBy: itm.picked_by,\n packedAt: itm.packed_at,\n packedBy: itm.packed_by,\n checkedRemarkBy: itm.checked_remark_by,\n checkedRemarkAt: itm.checked_remark_at,\n loadedAt: itm.loaded_at,\n loadedBy: itm.loaded_by,\n manifestedAt: itm.manifested_at,\n manifestedBy: itm.manifested_by,\n exportOption: itm.export_option,\n containerNo: itm.container_no,\n containerSize: itm.container_size,\n palletQty: itm.pallet_qty,\n transportOption: itm.own_transport ? 'Own Transport' : 'Warehouse Transport',\n vehicleNo: itm.vehicle_no,\n driverName: itm.driver_name\n }\n })\n\n return {\n items,\n total: total[0].count\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -1,143 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.outboundSerialNumberReport = void 0;
4
- const auth_base_1 = require("@things-factory/auth-base");
5
- const biz_base_1 = require("@things-factory/biz-base");
6
- const utils_1 = require("../../../utils");
7
- exports.outboundSerialNumberReport = {
8
- async outboundSerialNumberReport(_, params, context) {
9
- try {
10
- const { tx } = context.state;
11
- let bizplaceFilter = { name: '', operator: '', value: '' };
12
- let userFilter = params.filters.find(data => data.name === 'user');
13
- let fromDate = params.filters.find(data => data.name === 'fromDate');
14
- let toDate = params.filters.find(data => data.name === 'toDate');
15
- let orderNo = params.filters.find(data => data.name === 'orderNo');
16
- let ref = params.filters.find(data => data.name === 'ref');
17
- let palletId = params.filters.find(data => data.name === 'palletId');
18
- let cartonId = params.filters.find(data => data.name === 'cartonId');
19
- let serialNumber = params.filters.find(data => data.name === 'serialNumber');
20
- if (userFilter) {
21
- const user = (await tx.getRepository(auth_base_1.User).findOne({
22
- where: { id: userFilter.value },
23
- relations: ['bizplaces']
24
- }));
25
- const bizplace = user.bizplaces[0];
26
- if (!bizplace)
27
- throw 'Invalid input';
28
- bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id };
29
- }
30
- else {
31
- bizplaceFilter = params.filters.find(data => data.name === 'bizplace');
32
- }
33
- if (!bizplaceFilter || !fromDate || !toDate)
34
- throw 'Invalid input';
35
- const bizplace = await tx.getRepository(biz_base_1.Bizplace).findOneBy({
36
- id: bizplaceFilter.value
37
- });
38
- await (0, utils_1.rawProductsQuery)(tx, params, bizplace);
39
- let extraQueryFilters = '';
40
- if (orderNo) {
41
- extraQueryFilters = `${extraQueryFilters} and order_no like '%${orderNo.value}%' `;
42
- }
43
- if (palletId) {
44
- extraQueryFilters = `${extraQueryFilters} and pallet_id like '%${palletId.value}%' `;
45
- }
46
- if (cartonId) {
47
- extraQueryFilters = `${extraQueryFilters} and carton_id like '%${cartonId.value}%' `;
48
- }
49
- if (serialNumber) {
50
- extraQueryFilters = `${extraQueryFilters} and serial_number like '%${serialNumber.value}%' `;
51
- }
52
- let refNoQueryFilter = '';
53
- if (ref) {
54
- let refValue = ref.value
55
- .toLowerCase()
56
- .split(',')
57
- .map(ref => {
58
- return "'%" + ref.trim().replace(/'/g, "''") + "%'";
59
- })
60
- .join(',');
61
- refNoQueryFilter = `AND (
62
- Lower(rg.ref_no) LIKE ANY(ARRAY[${refValue}])
63
- OR Lower(rg.ref_no_2) LIKE ANY(ARRAY[${refValue}])
64
- OR Lower(rg.ref_no_3) LIKE ANY(ARRAY[${refValue}])
65
- )`;
66
- }
67
- await tx.query(`
68
- create temp table temp_outbound_serial_number_report on commit drop as (
69
- select * from (
70
- select
71
- row_number() over(partition by rg."name" order by coalesce(w.started_at, ii.created_at), p.sku ) as "no",
72
- rg."name" as "order_no", concat_ws(', ',rg.delivery_address_1,rg.delivery_address_2,rg.delivery_address_3,rg.delivery_address_4,rg.delivery_address_5,rg.postal_code,rg.city,rg.state) as "full_delivery_address",
73
- rg."attention_to" as "attention_to",
74
- i.pallet_id, i.carton_id, rg.ref_no, rg.ref_no_2, rg.ref_no_3,
75
- p.id as "product_id", p.sku as "product_sku", p.brand_sku as "product_brand_sku",
76
- p.name as "product_name", p.description as "product_description", p."type" as "product_type",
77
- coalesce(pd.volume, '0') as "product_volume",
78
- ii.serial_number,
79
- coalesce(w.started_at,ii.created_at) as "etd"
80
- from inventory_items ii
81
- inner join inventories i on i.id = ii.inventory_id
82
- inner join temp_products p on p.id = i.product_id
83
- left join product_details pd on pd.product_id = p.id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size
84
- inner join release_goods rg on rg.id = ii.outbound_order_id::uuid
85
- left join worksheets w on w.arrival_notice_id = rg.id and w.type = 'PICKING'
86
- where
87
- i.domain_id = $1 and i.bizplace_id = $2
88
- and coalesce(w.started_at, ii.created_at) between $3 and $4
89
- ${refNoQueryFilter}
90
- order by coalesce(w.started_at, ii.created_at), p.sku
91
- ) src
92
- where 1=1
93
- ${extraQueryFilters}
94
- )
95
- `, [context.state.domain.id, bizplace.id, fromDate.value, toDate.value]);
96
- const total = await tx.query(`
97
- select count(*) from temp_outbound_serial_number_report
98
- `);
99
- const result = await tx.query(`
100
- select *
101
- from temp_outbound_serial_number_report
102
- offset $1 limit $2
103
- `, [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]);
104
- let items = result.map(itm => {
105
- let data = {
106
- no: itm.no,
107
- bizplace: {
108
- description: bizplace.description,
109
- name: bizplace.name
110
- },
111
- fullDeliveryAddress: itm.full_delivery_address,
112
- attentionTo: itm.attention_to,
113
- palletId: itm.pallet_id,
114
- cartonId: itm.carton_id,
115
- orderNo: itm.order_no,
116
- refNo1: itm.ref_no,
117
- refNo2: itm.ref_no_2,
118
- refNo3: itm.ref_no_3,
119
- product: {
120
- id: itm.product_id,
121
- sku: itm.product_sku,
122
- brandSku: itm.product_brand_sku,
123
- name: itm.product_name,
124
- description: itm.product_description,
125
- type: itm.product_type,
126
- volume: itm.product_volume
127
- },
128
- serialNumber: itm.serial_number,
129
- etd: itm.etd
130
- };
131
- return data;
132
- });
133
- return {
134
- items,
135
- total: total[0].count
136
- };
137
- }
138
- catch (error) {
139
- throw error;
140
- }
141
- }
142
- };
143
- //# sourceMappingURL=outbound-serial-number-report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"outbound-serial-number-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/outbound-serial-number-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Filter, ListParam } from '@things-factory/shell'\n\nimport { rawProductsQuery } from '../../../utils'\n\nexport const outboundSerialNumberReport = {\n async outboundSerialNumberReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n let bizplaceFilter: Filter = { name: '', operator: '', value: '' }\n let userFilter = params.filters.find(data => data.name === 'user')\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let orderNo = params.filters.find(data => data.name === 'orderNo')\n let ref = params.filters.find(data => data.name === 'ref')\n let palletId = params.filters.find(data => data.name === 'palletId')\n let cartonId = params.filters.find(data => data.name === 'cartonId')\n let serialNumber = params.filters.find(data => data.name === 'serialNumber')\n\n if (userFilter) {\n const user = (await tx.getRepository(User).findOne({\n where: { id: userFilter.value },\n relations: ['bizplaces']\n })) as User & { bizplaces: Bizplace[] }\n\n const bizplace: Bizplace = user.bizplaces[0]\n\n if (!bizplace) throw 'Invalid input'\n\n bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }\n } else {\n bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n }\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await rawProductsQuery(tx, params, bizplace)\n\n let extraQueryFilters = ''\n if (orderNo) {\n extraQueryFilters = `${extraQueryFilters} and order_no like '%${orderNo.value}%' `\n }\n if (palletId) {\n extraQueryFilters = `${extraQueryFilters} and pallet_id like '%${palletId.value}%' `\n }\n if (cartonId) {\n extraQueryFilters = `${extraQueryFilters} and carton_id like '%${cartonId.value}%' `\n }\n if (serialNumber) {\n extraQueryFilters = `${extraQueryFilters} and serial_number like '%${serialNumber.value}%' `\n }\n\n let refNoQueryFilter = ''\n if (ref) {\n let refValue = ref.value\n .toLowerCase()\n .split(',')\n .map(ref => {\n return \"'%\" + ref.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n refNoQueryFilter = `AND (\n Lower(rg.ref_no) LIKE ANY(ARRAY[${refValue}])\n OR Lower(rg.ref_no_2) LIKE ANY(ARRAY[${refValue}])\n OR Lower(rg.ref_no_3) LIKE ANY(ARRAY[${refValue}])\n )`\n }\n\n await tx.query(\n `\n create temp table temp_outbound_serial_number_report on commit drop as (\n select * from ( \n select \n row_number() over(partition by rg.\"name\" order by coalesce(w.started_at, ii.created_at), p.sku ) as \"no\",\n rg.\"name\" as \"order_no\", concat_ws(', ',rg.delivery_address_1,rg.delivery_address_2,rg.delivery_address_3,rg.delivery_address_4,rg.delivery_address_5,rg.postal_code,rg.city,rg.state) as \"full_delivery_address\",\n rg.\"attention_to\" as \"attention_to\",\n i.pallet_id, i.carton_id, rg.ref_no, rg.ref_no_2, rg.ref_no_3,\n p.id as \"product_id\", p.sku as \"product_sku\", p.brand_sku as \"product_brand_sku\",\n p.name as \"product_name\", p.description as \"product_description\", p.\"type\" as \"product_type\",\n coalesce(pd.volume, '0') as \"product_volume\", \n ii.serial_number, \n coalesce(w.started_at,ii.created_at) as \"etd\"\n from inventory_items ii \n inner join inventories i on i.id = ii.inventory_id \n inner join temp_products p on p.id = i.product_id\n left join product_details pd on pd.product_id = p.id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n inner join release_goods rg on rg.id = ii.outbound_order_id::uuid\n left join worksheets w on w.arrival_notice_id = rg.id and w.type = 'PICKING'\n where \n i.domain_id = $1 and i.bizplace_id = $2\n and coalesce(w.started_at, ii.created_at) between $3 and $4\n ${refNoQueryFilter}\n order by coalesce(w.started_at, ii.created_at), p.sku\n ) src\n where 1=1\n ${extraQueryFilters}\n )\n `,\n [context.state.domain.id, bizplace.id, fromDate.value, toDate.value]\n )\n\n const total: any = await tx.query(`\n select count(*) from temp_outbound_serial_number_report\n `)\n\n const result: any = await tx.query(\n `\n select *\n from temp_outbound_serial_number_report\n offset $1 limit $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n let items = result.map(itm => {\n let data = {\n no: itm.no,\n bizplace: {\n description: bizplace.description,\n name: bizplace.name\n },\n fullDeliveryAddress: itm.full_delivery_address,\n attentionTo: itm.attention_to,\n palletId: itm.pallet_id,\n cartonId: itm.carton_id,\n orderNo: itm.order_no,\n refNo1: itm.ref_no,\n refNo2: itm.ref_no_2,\n refNo3: itm.ref_no_3,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n brandSku: itm.product_brand_sku,\n name: itm.product_name,\n description: itm.product_description,\n type: itm.product_type,\n volume: itm.product_volume\n },\n serialNumber: itm.serial_number,\n etd: itm.etd\n }\n\n return data\n })\n\n return {\n items,\n total: total[0].count\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.productLabelReport = void 0;
4
- const id_rule_base_1 = require("@things-factory/id-rule-base");
5
- const shell_1 = require("@things-factory/shell");
6
- exports.productLabelReport = {
7
- async productLabelReport(_, params, context) {
8
- var _a;
9
- try {
10
- const { domain } = context.state;
11
- // const { domain } = context.state
12
- const bizplaceId = params.filters.find(data => data.name === 'bizplace').value;
13
- const type = (_a = params.filters.find(data => data.name === 'type')) === null || _a === void 0 ? void 0 : _a.value;
14
- const fromDate = params.filters.find(data => data.name === 'fromDate').value;
15
- const toDate = params.filters.find(data => data.name === 'toDate').value;
16
- if (!bizplaceId || !fromDate || !toDate)
17
- throw new Error('Invalid input');
18
- const items = await (0, shell_1.getRepository)(id_rule_base_1.Sequence).query(`
19
- SELECT "date", "type", "count", "bizplace_id" FROM (
20
- SELECT
21
- "sq"."pattern"::JSONB ->> 'type' AS "type",
22
- "sq"."pattern"::JSONB ->> 'date' AS "date",
23
- "sq"."pattern"::JSONB ->> 'bizplaceId' AS "bizplace_id",
24
- "sq"."seq" AS "count"
25
- FROM "sequences" "sq" WHERE "sq"."type" = '${id_rule_base_1.SEQUENCE_TYPE.PRODUCT_LABEL_COUNTER}'
26
- AND "sq"."domain_id" = '${domain.id}'
27
- ) AS foo
28
- WHERE "bizplace_id" = '${bizplaceId}'
29
- ${type ? `AND "type" ilike '%${type}%'` : ''}
30
- AND "date"::date BETWEEN '${fromDate}' AND '${toDate}'
31
- ORDER BY type ASC, date ASC
32
- `);
33
- // @farishelmi any usage for this function? If no please remove.
34
- /*
35
- need to transform into queryBuilder form
36
- const qb: SelectQueryBuilder<Sequence> = tx
37
- .getRepository(Sequence)
38
- .createQueryBuilder('sq')
39
- .select(`"sq"."pattern"::JSONB ->> 'type'`, 'type')
40
- .addSelect(`"sq"."pattern"::JSONB ->> 'date'`, 'date')
41
- .addSelect(`"sq"."pattern"::JSONB ->> 'bizplaceId'`, 'bizplace_id')
42
- .addSelect(`"sq"."seq"`, 'count')
43
- .where('"sq"."type" = :sequenceType', { sequenceType: SEQUENCE_TYPE.PRODUCT_LABEL_COUNTER })
44
- .andWhere(`"sq"."pattern"::JSONB ->> 'bizplaceId' = :bizplaceId`, { bizplaceId })
45
- .andWhere(`"sq"."domain_id" = :domainId`, { domainId: domain.id })
46
- */
47
- return {
48
- items,
49
- total: 0
50
- };
51
- }
52
- catch (error) {
53
- throw error;
54
- }
55
- }
56
- };
57
- //# sourceMappingURL=product-label-report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"product-label-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/product-label-report.ts"],"names":[],"mappings":";;;AAAA,+DAAsE;AACtE,iDAAgE;AAEnD,QAAA,kBAAkB,GAAG;IAChC,KAAK,CAAC,kBAAkB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC1E,IAAI;YACF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAChC,mCAAmC;YACnC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,CAAA;YAC9E,MAAM,IAAI,GAAG,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,0CAAE,KAAK,CAAA;YACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,CAAA;YAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAA;YAExE,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;YAEzE,MAAM,KAAK,GAAG,MAAM,IAAA,qBAAa,EAAC,uBAAQ,CAAC,CAAC,KAAK,CAAC;;;;;;;uDAOD,4BAAa,CAAC,qBAAqB;oCACtD,MAAM,CAAC,EAAE;;iCAEZ,UAAU;UACjC,IAAI,CAAC,CAAC,CAAC,sBAAsB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;oCAChB,QAAQ,UAAU,MAAM;;OAErD,CAAC,CAAA;YAEF,gEAAgE;YAChE;;;;;;;;;;;;cAYE;YAEF,OAAO;gBACL,KAAK;gBACL,KAAK,EAAE,CAAC;aACT,CAAA;SACF;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Sequence, SEQUENCE_TYPE } from '@things-factory/id-rule-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\n\nexport const productLabelReport = {\n async productLabelReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { domain } = context.state\n // const { domain } = context.state\n const bizplaceId = params.filters.find(data => data.name === 'bizplace').value\n const type = params.filters.find(data => data.name === 'type')?.value\n const fromDate = params.filters.find(data => data.name === 'fromDate').value\n const toDate = params.filters.find(data => data.name === 'toDate').value\n\n if (!bizplaceId || !fromDate || !toDate) throw new Error('Invalid input')\n\n const items = await getRepository(Sequence).query(`\n SELECT \"date\", \"type\", \"count\", \"bizplace_id\" FROM (\n SELECT\n \"sq\".\"pattern\"::JSONB ->> 'type' AS \"type\",\n \"sq\".\"pattern\"::JSONB ->> 'date' AS \"date\",\n \"sq\".\"pattern\"::JSONB ->> 'bizplaceId' AS \"bizplace_id\",\n \"sq\".\"seq\" AS \"count\"\n FROM \"sequences\" \"sq\" WHERE \"sq\".\"type\" = '${SEQUENCE_TYPE.PRODUCT_LABEL_COUNTER}'\n AND \"sq\".\"domain_id\" = '${domain.id}'\n ) AS foo\n WHERE \"bizplace_id\" = '${bizplaceId}'\n ${type ? `AND \"type\" ilike '%${type}%'` : ''}\n AND \"date\"::date BETWEEN '${fromDate}' AND '${toDate}'\n ORDER BY type ASC, date ASC\n `)\n\n // @farishelmi any usage for this function? If no please remove.\n /* \n need to transform into queryBuilder form\n const qb: SelectQueryBuilder<Sequence> = tx\n .getRepository(Sequence)\n .createQueryBuilder('sq')\n .select(`\"sq\".\"pattern\"::JSONB ->> 'type'`, 'type')\n .addSelect(`\"sq\".\"pattern\"::JSONB ->> 'date'`, 'date')\n .addSelect(`\"sq\".\"pattern\"::JSONB ->> 'bizplaceId'`, 'bizplace_id')\n .addSelect(`\"sq\".\"seq\"`, 'count')\n .where('\"sq\".\"type\" = :sequenceType', { sequenceType: SEQUENCE_TYPE.PRODUCT_LABEL_COUNTER })\n .andWhere(`\"sq\".\"pattern\"::JSONB ->> 'bizplaceId' = :bizplaceId`, { bizplaceId })\n .andWhere(`\"sq\".\"domain_id\" = :domainId`, { domainId: domain.id }) \n */\n\n return {\n items,\n total: 0\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}