@things-factory/operato-wms 7.0.0-alpha.9 → 7.0.0

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 (371) hide show
  1. package/_index.html +8 -3
  2. package/client/apptools/dashboard-tool.js +1 -1
  3. package/client/bootstrap.js +18 -9
  4. package/client/fetch-board-settings.js +1 -1
  5. package/client/fetch-location-sorting-rule.js +1 -1
  6. package/client/fetch-setting-value.js +1 -1
  7. package/client/pages/adjustment/transfer-inventory.js +5 -5
  8. package/client/pages/billing/claim-chit/claim-chit-detail.js +4 -4
  9. package/client/pages/billing/claim-chit/claim-chit-list.js +6 -6
  10. package/client/pages/billing/claim-chit/create-claim-chit.js +4 -4
  11. package/client/pages/billing/transport-summary-report.js +3 -3
  12. package/client/pages/bulk-operation/bulk-operation.js +12 -12
  13. package/client/pages/bulk-operation/validate-gan-popup.js +3 -3
  14. package/client/pages/bulk-operation/validate-ro-popup.js +4 -4
  15. package/client/pages/components/attachment-viewer.js +2 -2
  16. package/client/pages/components/image-viewer.js +2 -2
  17. package/client/pages/components/partner-selector.js +12 -13
  18. package/client/pages/components/popup-note.js +4 -4
  19. package/client/pages/components/popup-reusable-pallet.js +4 -4
  20. package/client/pages/components/select-inventory-popup.js +5 -5
  21. package/client/pages/components/select-product-popup.js +5 -5
  22. package/client/pages/components/vas-templates/vas-pallet-add-popup.js +4 -4
  23. package/client/pages/components/vas-templates/vas-relabel.js +2 -2
  24. package/client/pages/components/vas-templates/vas-repack-relabel.js +3 -3
  25. package/client/pages/components/vas-templates/vas-repack.js +2 -2
  26. package/client/pages/components/vas-templates/vas-repalletizing.js +2 -2
  27. package/client/pages/components/vas-templates/vas-template.js +1 -1
  28. package/client/pages/components/vas-templates/vas-unpack.js +2 -2
  29. package/client/pages/components/worksheet-information-popup.js +3 -3
  30. package/client/pages/constants/picking-strategy.js +1 -1
  31. package/client/pages/constants/vas-target-type.js +1 -1
  32. package/client/pages/constants/vas-template.js +1 -1
  33. package/client/pages/constants/worksheet.js +1 -1
  34. package/client/pages/inbound/adjust-pallet-qty.js +4 -4
  35. package/client/pages/inbound/carton-label-popup.js +9 -14
  36. package/client/pages/inbound/expiry-date-popup.js +2 -2
  37. package/client/pages/inbound/external-return-worksheet.js +3 -3
  38. package/client/pages/inbound/inbound-reusable-pallet.js +4 -4
  39. package/client/pages/inbound/inbound-worksheet.js +3 -3
  40. package/client/pages/inbound/pallet-label-popup.js +10 -12
  41. package/client/pages/inbound/palletizing-pallets-popup.js +4 -4
  42. package/client/pages/inbound/putaway-product.js +9 -10
  43. package/client/pages/inbound/putaway-same-carton-popup.js +4 -4
  44. package/client/pages/inbound/putaway-worksheet-generate-popup.js +6 -6
  45. package/client/pages/inbound/select-location-popup.js +5 -5
  46. package/client/pages/inbound/select-product-batch.js +4 -4
  47. package/client/pages/inbound/serial-number-list-popup.js +5 -5
  48. package/client/pages/inbound/undo-putaway-popup.js +4 -4
  49. package/client/pages/inbound/undo-unload-popup.js +4 -4
  50. package/client/pages/inbound/unload-product.js +4 -4
  51. package/client/pages/inbound/unloaded-inventories-popup.js +5 -5
  52. package/client/pages/inbound/vas-selector.js +5 -5
  53. package/client/pages/inbound/worksheet-putaway-return.js +4 -4
  54. package/client/pages/inbound/worksheet-putaway.js +4 -4
  55. package/client/pages/inbound/worksheet-unloading-return.js +4 -4
  56. package/client/pages/inbound/worksheet-unloading.js +3 -3
  57. package/client/pages/inventory/inventory-adjustment-approval.js +3 -3
  58. package/client/pages/inventory/inventory-adjustment.js +2 -2
  59. package/client/pages/inventory/inventory-by-product-detail.js +4 -4
  60. package/client/pages/inventory/inventory-by-product.js +3 -3
  61. package/client/pages/inventory/inventory-history-by-pallet.js +4 -4
  62. package/client/pages/inventory/inventory-history.js +3 -3
  63. package/client/pages/inventory/non-loaded-inventory.js +3 -3
  64. package/client/pages/inventory/onhand-inventory.js +2 -2
  65. package/client/pages/inventory/serial-number-list-popup.js +7 -7
  66. package/client/pages/inventory-check/check-inventory-popup.js +5 -5
  67. package/client/pages/inventory-check/create-cycle-count.js +4 -4
  68. package/client/pages/inventory-check/cycle-count-recheck-popup.js +5 -5
  69. package/client/pages/inventory-check/cycle-count-report.js +4 -4
  70. package/client/pages/inventory-check/inspecting-product.js +4 -4
  71. package/client/pages/inventory-check/inventory-check-list.js +3 -3
  72. package/client/pages/inventory-check/search-popup.js +6 -6
  73. package/client/pages/inventory-check/worksheet-cycle-count.js +4 -4
  74. package/client/pages/manifest/create-loading-manifest.js +4 -4
  75. package/client/pages/manifest/dispatcher-verification-popup.js +2 -2
  76. package/client/pages/manifest/loading-manifest-detail.js +4 -4
  77. package/client/pages/manifest/loading-manifest-list.js +3 -3
  78. package/client/pages/master/generate-location-list.js +10 -11
  79. package/client/pages/master/location-list.js +2 -2
  80. package/client/pages/master/pallet-list.js +2 -2
  81. package/client/pages/master/print-location-label.js +8 -8
  82. package/client/pages/master/product/product-detail-bizplace-setting-popup.js +3 -3
  83. package/client/pages/master/product/product-details-popup.js +4 -4
  84. package/client/pages/master/product/product-list.js +2 -2
  85. package/client/pages/master/tote-list.js +2 -2
  86. package/client/pages/master/transport-driver.js +2 -2
  87. package/client/pages/master/transport-vehicle.js +2 -2
  88. package/client/pages/master/warehouse-list.js +2 -2
  89. package/client/pages/master/worker-list.js +2 -2
  90. package/client/pages/order/arrival-notice/arrival-notice-detail.js +15 -19
  91. package/client/pages/order/arrival-notice/arrival-notice-list.js +3 -3
  92. package/client/pages/order/arrival-notice/arrival-notice-requests.js +3 -3
  93. package/client/pages/order/arrival-notice/assign-buffer-location.js +12 -13
  94. package/client/pages/order/arrival-notice/check-arrived-notice.js +12 -13
  95. package/client/pages/order/arrival-notice/create-arrival-notice.js +8 -9
  96. package/client/pages/order/arrival-notice/duplicate-arrival-notice.js +13 -14
  97. package/client/pages/order/arrival-notice/edit-product-popup.js +4 -4
  98. package/client/pages/order/arrival-notice/proceed-edit-product-popup.js +4 -4
  99. package/client/pages/order/arrival-notice/receive-arrival-notice.js +12 -13
  100. package/client/pages/order/arrival-notice/rejected-arrival-notice.js +12 -13
  101. package/client/pages/order/arrival-notice/view-product-changes-popup.js +4 -4
  102. package/client/pages/order/draft-release-good/draft-release-good-detail.js +7 -7
  103. package/client/pages/order/draft-release-good/draft-release-good-list.js +2 -2
  104. package/client/pages/order/goods-received-note/customer-grn-list.js +3 -3
  105. package/client/pages/order/goods-received-note/customer-received-note.js +1 -1
  106. package/client/pages/order/goods-received-note/received-note-detail.js +1 -1
  107. package/client/pages/order/goods-received-note/received-note-list.js +3 -3
  108. package/client/pages/order/release-order/b2b/b2b-order-list.js +1 -1
  109. package/client/pages/order/release-order/b2b/b2b-order-requests.js +2 -2
  110. package/client/pages/order/release-order/b2c/b2c-order-requests.js +1 -1
  111. package/client/pages/order/release-order/batch-generate-single-picking-worksheet-popup.js +5 -5
  112. package/client/pages/order/release-order/batch-picking-popup.js +4 -4
  113. package/client/pages/order/release-order/bulk-print-packing-list.js +4 -4
  114. package/client/pages/order/release-order/create-release-order.js +11 -12
  115. package/client/pages/order/release-order/receive-release-order-request.js +12 -13
  116. package/client/pages/order/release-order/rejected-release-order.js +12 -13
  117. package/client/pages/order/release-order/release-extra-product-popup.js +5 -5
  118. package/client/pages/order/release-order/release-order-detail.js +30 -32
  119. package/client/pages/order/return-order/check-return-order.js +12 -13
  120. package/client/pages/order/return-order/create-return-order.js +5 -5
  121. package/client/pages/order/return-order/receive-return-order-requests.js +12 -13
  122. package/client/pages/order/return-order/rejected-return-order.js +12 -13
  123. package/client/pages/order/return-order/return-order-assign-buffer-location.js +12 -13
  124. package/client/pages/order/return-order/return-order-detail.js +12 -13
  125. package/client/pages/order/return-order/return-order-inventory-popup.js +4 -4
  126. package/client/pages/order/return-order/return-order-list.js +3 -3
  127. package/client/pages/order/return-order/return-order-requests.js +3 -3
  128. package/client/pages/order/reverse-kitting-order/reverse-kitting-order-detail.js +4 -4
  129. package/client/pages/order/reverse-kitting-order/reverse-kitting-order-list.js +2 -2
  130. package/client/pages/order/reverse-kitting-order/reverse-kitting-pallet-label-popup.js +8 -5
  131. package/client/pages/order/transfer-order/receive-transfer-order-request.js +3 -3
  132. package/client/pages/order/transfer-order/rejected-transfer-order.js +4 -4
  133. package/client/pages/order/transfer-order/transfer-order-detail.js +4 -4
  134. package/client/pages/order/transfer-order/transfer-order-requests.js +3 -3
  135. package/client/pages/order/transport-order/contact-point-selector-popup.js +6 -6
  136. package/client/pages/order/transport-order/create-delivery-order.js +5 -5
  137. package/client/pages/order/transport-order/delivery-note-popup.js +11 -10
  138. package/client/pages/order/transport-order/delivery-order-list.js +3 -3
  139. package/client/pages/order/transport-order/print-delivery-note.js +1 -1
  140. package/client/pages/order/transport-order/transport-driver-popup.js +6 -6
  141. package/client/pages/order/transport-order/upload-delivery-note.js +7 -7
  142. package/client/pages/order/transport-order/view-delivery-note.js +1 -1
  143. package/client/pages/order/vas-order/create-vas-order.js +4 -4
  144. package/client/pages/order/vas-order/popup/target-product-selector-popup.js +5 -5
  145. package/client/pages/order/vas-order/popup/vas-create-batch-product-type-form.js +17 -19
  146. package/client/pages/order/vas-order/popup/vas-create-batch-type-form.js +4 -5
  147. package/client/pages/order/vas-order/popup/vas-create-etc-type-form.js +1 -1
  148. package/client/pages/order/vas-order/popup/vas-create-popup.js +38 -38
  149. package/client/pages/order/vas-order/popup/vas-create-product-type-form.js +6 -7
  150. package/client/pages/order/vas-order/receive-vas-order.js +4 -4
  151. package/client/pages/order/vas-order/vas-order-detail.js +4 -4
  152. package/client/pages/order/vas-order/vas-order-list.js +3 -3
  153. package/client/pages/order/vas-order/vas-order-requests.js +3 -3
  154. package/client/pages/outbound/generate-worksheet-popup.js +3 -3
  155. package/client/pages/outbound/inventory-assign-popup.js +5 -5
  156. package/client/pages/outbound/inventory-auto-assign-popup.js +4 -4
  157. package/client/pages/outbound/inventory-reassign-popup.js +5 -5
  158. package/client/pages/outbound/loading-product.js +4 -4
  159. package/client/pages/outbound/logistics-init/branch-logistics-popup.js +5 -5
  160. package/client/pages/outbound/logistics-init/logistics-init-popup.js +3 -3
  161. package/client/pages/outbound/logistics-init/pickup-logistics-popup.js +5 -5
  162. package/client/pages/outbound/merged-outbound-worksheet.js +2 -2
  163. package/client/pages/outbound/order-remark-popup.js +4 -4
  164. package/client/pages/outbound/outbound-reusable-pallet.js +4 -4
  165. package/client/pages/outbound/packing-product.js +7 -7
  166. package/client/pages/outbound/packing-worksheet-list.js +2 -2
  167. package/client/pages/outbound/picking-product.js +16 -18
  168. package/client/pages/outbound/picking-replacement-popup.js +6 -6
  169. package/client/pages/outbound/return-pallet-check-popup.js +4 -4
  170. package/client/pages/outbound/route-label-popup.js +5 -5
  171. package/client/pages/outbound/select-operator-popup.js +3 -3
  172. package/client/pages/outbound/serial-number-popup.js +5 -5
  173. package/client/pages/outbound/show-my-worksheet-list-popup.js +2 -2
  174. package/client/pages/outbound/show-ro-list-popup.js +5 -5
  175. package/client/pages/outbound/single-outbound-worksheet.js +2 -2
  176. package/client/pages/outbound/sorting-product.js +3 -3
  177. package/client/pages/outbound/tote-popup.js +5 -5
  178. package/client/pages/outbound/transport-vehicles-popup.js +6 -6
  179. package/client/pages/outbound/worksheet-batch-picking.js +4 -4
  180. package/client/pages/outbound/worksheet-loading.js +4 -4
  181. package/client/pages/outbound/worksheet-packing.js +4 -4
  182. package/client/pages/outbound/worksheet-picking.js +4 -4
  183. package/client/pages/outbound/worksheet-return.js +4 -4
  184. package/client/pages/outbound/worksheet-sorting.js +4 -4
  185. package/client/pages/report/costing-report.js +2 -2
  186. package/client/pages/report/custom-elccl/elccl-daily-collection-report.js +1 -1
  187. package/client/pages/report/custom-elccl/elccl-daily-order-inventory-report.js +1 -1
  188. package/client/pages/report/custom-elccl/elccl-delivery-order-summary.js +7 -7
  189. package/client/pages/report/custom-elccl/elccl-inventory-pallet-detail-report.js +1 -1
  190. package/client/pages/report/custom-elccl/elccl-inventory-report.js +1 -1
  191. package/client/pages/report/custom-elccl/elccl-inventory-summary-report.js +1 -1
  192. package/client/pages/report/inbound-order-details-report.js +2 -2
  193. package/client/pages/report/inbound-serial-number-report.js +2 -2
  194. package/client/pages/report/inventory-pallet-report.js +1 -1
  195. package/client/pages/report/inventory-pallet-storage-report.js +2 -2
  196. package/client/pages/report/inventory-report.js +1 -1
  197. package/client/pages/report/inventory-summary-report.js +2 -2
  198. package/client/pages/report/job-sheet-list.js +2 -2
  199. package/client/pages/report/job-sheet-popup.js +4 -4
  200. package/client/pages/report/job-sheet-report.js +1 -1
  201. package/client/pages/report/outbound-order-details-report.js +2 -2
  202. package/client/pages/report/outbound-serial-number-report.js +2 -2
  203. package/client/pages/report/product-label-report.js +1 -1
  204. package/client/pages/report/release-inventory-report.js +1 -1
  205. package/client/pages/report/volume-summary-report.js +2 -2
  206. package/client/pages/support/inventory-comparison.js +3 -3
  207. package/client/pages/system/location-sorting-rule.js +3 -3
  208. package/client/pages/vas/abstract-execute-vas.js +3 -3
  209. package/client/pages/vas/execute-pure-vas.js +2 -2
  210. package/client/pages/vas/execute-ref-vas.js +3 -3
  211. package/client/pages/vas/execute-vas.js +2 -2
  212. package/client/pages/vas/print-product-label.js +2 -2
  213. package/client/pages/vas/related-vas-list.js +5 -5
  214. package/client/pages/vas/reverse-kitting/execute-reverse-kitting.js +3 -3
  215. package/client/pages/vas/reverse-kitting/popup-combination-sets.js +6 -6
  216. package/client/pages/vas/reverse-kitting/popup-reverse-kitting-template.js +5 -5
  217. package/client/pages/vas/target-inventory-assignment-popup.js +6 -6
  218. package/client/pages/vas/vas-pallet-label-popup.js +5 -5
  219. package/client/pages/vas/vas-worksheet-list.js +7 -7
  220. package/client/pages/vas/worksheet-ref-vas.js +9 -9
  221. package/client/pages/vas/worksheet-vas.js +4 -4
  222. package/client/route.js +1 -1
  223. package/client/themes/app-theme.css +29 -31
  224. package/client/themes/auth-theme.css +7 -10
  225. package/client/themes/report-theme.css +3 -3
  226. package/config/config.development.js +0 -1
  227. package/config/config.production.js +2 -2
  228. package/dist-server/graphql/index.d.ts +6 -0
  229. package/dist-server/graphql/resolvers/board-setting/board-settings.d.ts +3 -0
  230. package/dist-server/graphql/resolvers/board-setting/board-settings.js.map +1 -1
  231. package/dist-server/graphql/resolvers/board-setting/index.d.ts +3 -0
  232. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.d.ts +4 -0
  233. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js.map +1 -1
  234. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.d.ts +7 -0
  235. package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js.map +1 -1
  236. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.d.ts +4 -0
  237. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js.map +1 -1
  238. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.d.ts +4 -0
  239. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js.map +1 -1
  240. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.d.ts +8 -0
  241. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +2 -2
  242. package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js.map +1 -1
  243. package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.d.ts +4 -0
  244. package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js +1 -0
  245. package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js.map +1 -1
  246. package/dist-server/graphql/resolvers/custom/elccl/index.d.ts +1 -0
  247. package/dist-server/graphql/resolvers/custom/elccl/index.js.map +1 -1
  248. package/dist-server/graphql/resolvers/custom/kimeda/index.d.ts +1 -0
  249. package/dist-server/graphql/resolvers/custom/kimeda/index.js.map +1 -1
  250. package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.d.ts +4 -0
  251. package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js +1 -0
  252. package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js.map +1 -1
  253. package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.d.ts +4 -0
  254. package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js.map +1 -1
  255. package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.d.ts +4 -0
  256. package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js.map +1 -1
  257. package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.d.ts +4 -0
  258. package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js.map +1 -1
  259. package/dist-server/graphql/resolvers/dashboard/index.d.ts +1 -0
  260. package/dist-server/graphql/resolvers/dashboard/index.js.map +1 -1
  261. package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.d.ts +7 -0
  262. package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js.map +1 -1
  263. package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.d.ts +7 -0
  264. package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js.map +1 -1
  265. package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.d.ts +4 -0
  266. package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js.map +1 -1
  267. package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.d.ts +7 -0
  268. package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js.map +1 -1
  269. package/dist-server/graphql/resolvers/index.d.ts +15 -0
  270. package/dist-server/graphql/resolvers/index.js.map +1 -1
  271. package/dist-server/graphql/resolvers/inventory-comparison/index.d.ts +1 -0
  272. package/dist-server/graphql/resolvers/inventory-comparison/index.js.map +1 -1
  273. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.d.ts +7 -0
  274. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js +1 -0
  275. package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js.map +1 -1
  276. package/dist-server/graphql/resolvers/opa-menu/index.d.ts +3 -0
  277. package/dist-server/graphql/resolvers/opa-menu/opa-menus.d.ts +4 -0
  278. package/dist-server/graphql/resolvers/opa-menu/opa-menus.js.map +1 -1
  279. package/dist-server/graphql/resolvers/other/add-release-good-products.d.ts +7 -0
  280. package/dist-server/graphql/resolvers/other/add-release-good-products.js +11 -3
  281. package/dist-server/graphql/resolvers/other/add-release-good-products.js.map +1 -1
  282. package/dist-server/graphql/resolvers/other/index.d.ts +13 -0
  283. package/dist-server/graphql/resolvers/other/page-settings.d.ts +6 -0
  284. package/dist-server/graphql/resolvers/other/page-settings.js +4 -9
  285. package/dist-server/graphql/resolvers/other/page-settings.js.map +1 -1
  286. package/dist-server/graphql/resolvers/reports/costing-report.d.ts +7 -0
  287. package/dist-server/graphql/resolvers/reports/costing-report.js.map +1 -1
  288. package/dist-server/graphql/resolvers/reports/inbound-order-details-report.d.ts +7 -0
  289. package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js.map +1 -1
  290. package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.d.ts +7 -0
  291. package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js.map +1 -1
  292. package/dist-server/graphql/resolvers/reports/index.d.ts +1 -0
  293. package/dist-server/graphql/resolvers/reports/index.js.map +1 -1
  294. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.d.ts +7 -0
  295. package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js.map +1 -1
  296. package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.d.ts +7 -0
  297. package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js.map +1 -1
  298. package/dist-server/graphql/resolvers/reports/product-label-report.d.ts +7 -0
  299. package/dist-server/graphql/resolvers/reports/product-label-report.js.map +1 -1
  300. package/dist-server/graphql/resolvers/reports/release-inventory-report.d.ts +7 -0
  301. package/dist-server/graphql/resolvers/reports/release-inventory-report.js.map +1 -1
  302. package/dist-server/graphql/resolvers/shipping-provider/index.d.ts +1 -0
  303. package/dist-server/graphql/resolvers/shipping-provider/index.js.map +1 -1
  304. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.d.ts +6 -0
  305. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +1 -1
  306. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/index.d.ts +8 -0
  307. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.d.ts +9 -0
  308. package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js.map +1 -1
  309. package/dist-server/graphql/types/board-setting/board-setting.d.ts +1 -0
  310. package/dist-server/graphql/types/board-setting/index.d.ts +2 -0
  311. package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report-list.d.ts +1 -0
  312. package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report.d.ts +1 -0
  313. package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report-list.d.ts +1 -0
  314. package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report.d.ts +1 -0
  315. package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.d.ts +1 -0
  316. package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report-list.d.ts +1 -0
  317. package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report.d.ts +1 -0
  318. package/dist-server/graphql/types/custom/elccl/elccl-pallet-detail-report.d.ts +1 -0
  319. package/dist-server/graphql/types/custom/elccl/index.d.ts +2 -0
  320. package/dist-server/graphql/types/custom/kimeda/index.d.ts +1 -0
  321. package/dist-server/graphql/types/dashboard/index.d.ts +2 -0
  322. package/dist-server/graphql/types/dashboard/inventory-expiry-counter.d.ts +1 -0
  323. package/dist-server/graphql/types/dashboard/inventory-expiry-status.d.ts +1 -0
  324. package/dist-server/graphql/types/dashboard/order-status-counter.d.ts +1 -0
  325. package/dist-server/graphql/types/index.d.ts +3 -0
  326. package/dist-server/graphql/types/inventory-comparison/index.d.ts +2 -0
  327. package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.d.ts +1 -0
  328. package/dist-server/graphql/types/inventory-comparison/inventory-comparison.d.ts +1 -0
  329. package/dist-server/graphql/types/opa-menu/index.d.ts +2 -0
  330. package/dist-server/graphql/types/opa-menu/opa-menu.d.ts +1 -0
  331. package/dist-server/graphql/types/other/index.d.ts +3 -0
  332. package/dist-server/graphql/types/other/page-setting.d.ts +4 -0
  333. package/dist-server/graphql/types/reports/costing-report-list.d.ts +1 -0
  334. package/dist-server/graphql/types/reports/costing-report.d.ts +1 -0
  335. package/dist-server/graphql/types/reports/inbound-order-details-report-list.d.ts +1 -0
  336. package/dist-server/graphql/types/reports/inbound-order-details-report.d.ts +1 -0
  337. package/dist-server/graphql/types/reports/inbound-serial-number-report-list.d.ts +1 -0
  338. package/dist-server/graphql/types/reports/inbound-serial-number-report.d.ts +1 -0
  339. package/dist-server/graphql/types/reports/index.d.ts +2 -0
  340. package/dist-server/graphql/types/reports/outbound-order-details-report-list.d.ts +1 -0
  341. package/dist-server/graphql/types/reports/outbound-order-details-report.d.ts +1 -0
  342. package/dist-server/graphql/types/reports/outbound-serial-number-report-list.d.ts +1 -0
  343. package/dist-server/graphql/types/reports/outbound-serial-number-report.d.ts +1 -0
  344. package/dist-server/graphql/types/reports/product-label-report-list.d.ts +1 -0
  345. package/dist-server/graphql/types/reports/product-label-report.d.ts +1 -0
  346. package/dist-server/graphql/types/reports/release-inventory-report-list.d.ts +1 -0
  347. package/dist-server/graphql/types/reports/release-inventory-report.d.ts +1 -0
  348. package/dist-server/graphql/types/shipping-provider/index.d.ts +2 -0
  349. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.d.ts +1 -0
  350. package/dist-server/graphql/types/shipping-provider/shipping-provider.d.ts +1 -0
  351. package/dist-server/graphql/types/warehouse-inventory-adjustment/index.d.ts +1 -0
  352. package/dist-server/index.d.ts +3 -0
  353. package/dist-server/migrations/1568858861188-SeedSetting.d.ts +5 -0
  354. package/dist-server/migrations/1568858861188-SeedSetting.js.map +1 -1
  355. package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.d.ts +5 -0
  356. package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js.map +1 -1
  357. package/dist-server/migrations/1623381200659-SeedStoringRule.d.ts +5 -0
  358. package/dist-server/migrations/1623381200659-SeedStoringRule.js.map +1 -1
  359. package/dist-server/migrations/index.d.ts +1 -0
  360. package/dist-server/opa-app-setting-constants.d.ts +9 -0
  361. package/dist-server/routes.d.ts +0 -0
  362. package/dist-server/tsconfig.tsbuildinfo +1 -1
  363. package/dist-server/utils/index.d.ts +1 -0
  364. package/dist-server/utils/report-query-util.d.ts +4 -0
  365. package/dist-server/utils/report-query-util.js +1 -2
  366. package/dist-server/utils/report-query-util.js.map +1 -1
  367. package/package.json +65 -65
  368. package/views/auth-page.html +5 -3
  369. package/views/public/home.html +6 -3
  370. package/client/themes/grist-theme.css +0 -200
  371. package/client/themes/layout-theme.css +0 -92
@@ -4,20 +4,16 @@ body {
4
4
  --primary-color: rgb(var(--primary-color-rgb));
5
5
  --secondary-color-rgb: 58, 88, 119;
6
6
  --secondary-color: rgb(var(--secondary-color-rgb));
7
- --focus-color: var(--theme-white-color);
8
- --primary-background-color: var(--secondary-color);
7
+ --focus-color: var(--md-sys-color-on-primary);
8
+ --primary-background-color: var(--md-sys-color-secondary);
9
9
  --secondary-background-color: #283644;
10
- --main-section-background-color: #f4f7fb;
11
- --theme-white-color: #fff;
10
+ --md-sys-color-on-primary: #fff;
12
11
  --theme-black-color: rgba(0, 0, 0, 0.9);
13
12
 
14
- --focus-background-color: var(--primary-color);
13
+ --focus-background-color: var(--md-sys-color-primary);
15
14
  --primary-text-color: var(--theme-black-color);
16
15
  --secondary-text-color: #017e7f;
17
16
 
18
- --opacity-dark-color: rgba(0, 0, 0, 0.4);
19
- --opacity-light-color: rgba(255, 255, 255, 0.8);
20
-
21
17
  /* status color */
22
18
  --status-success-color: #35a24a;
23
19
  --status-warning-color: #ee8d03;
@@ -26,7 +22,7 @@ body {
26
22
 
27
23
  /* common style */
28
24
  --border-radius: 4px;
29
- --border-dark-color: 1px solid rgba(0, 0, 0, 0.15);
25
+ --border-dim-color: 1px solid rgba(0, 0, 0, 0.15);
30
26
  --border-light-color: 1px solid rgba(255, 255, 255, 0.3);
31
27
 
32
28
  --content-container-max-width: 1200px;
@@ -43,7 +39,7 @@ body {
43
39
  --padding-wide: var(--margin-wide);
44
40
 
45
41
  --scrollbar-thumb-color: rgba(57, 78, 100, 0.5);
46
- --scrollbar-thumb-hover-color: var(--primary-color);
42
+ --scrollbar-thumb-hover-color: var(--md-sys-color-primary);
47
43
 
48
44
  --fontsize-default: 14px;
49
45
  --fontsize-small: 13px;
@@ -55,7 +51,7 @@ body {
55
51
  /* title & description style */
56
52
  --title-margin: var(--margin-narrow) 0;
57
53
  --title-font: bold 24px var(--theme-font);
58
- --title-text-color: var(--secondary-color);
54
+ --title-text-color: var(--md-sys-color-secondary);
59
55
  --title-font-mobile: bold 20px var(--theme-font);
60
56
 
61
57
  --page-description-margin: var(--margin-narrow) 0 var(--margin-wide) 0;
@@ -65,79 +61,81 @@ body {
65
61
  --subtitle-padding: 12px 5px 3px 5px;
66
62
  --subtitle-font: bold 18px var(--theme-font);
67
63
  --subtitle-text-color: var(--secondary-text-color);
68
- --subtitle-border-bottom: 1px solid var(--primary-color);
64
+ --subtitle-border-bottom: 1px solid var(--md-sys-color-primary);
69
65
 
70
66
  /* icon style */
71
67
  --icon-tiny-size: 24px;
72
68
  --icon-default-size: 36px;
73
69
  --icon-big-size: 48px;
74
- --icon-default-color: var(--theme-white-color);
70
+ --icon-default-color: var(--md-sys-color-on-primary);
75
71
 
76
72
  /* material design component themes */
77
- --mdc-theme-on-primary: var(--theme-white-color);
73
+ --mdc-theme-on-primary: var(--md-sys-color-on-primary);
78
74
  --mdc-theme-primary: var(--secondary-text-color);
79
- --mdc-theme-on-secondary: var(--theme-white-color);
80
- --mdc-theme-secondary: var(--primary-color);
81
- --mdc-button-outline-color: var(--primary-color);
75
+ --mdc-theme-on-secondary: var(--md-sys-color-on-primary);
76
+ --mdc-theme-secondary: var(--md-sys-color-primary);
77
+ --mdc-button-outline-color: var(--md-sys-color-primary);
82
78
  --mdc-danger-button-primary-color: var(--status-danger-color);
83
79
  --mdc-danger-button-outline-color: var(--status-danger-color);
84
80
  --mdc-button-outline-width: 1px;
85
81
  --mdc-button-horizontal-padding: 16px;
86
- --mdc-text-field-fill-color: transparent
82
+
83
+ --md-fab-container-color: var(--md-sys-color-primary);
84
+ --md-fab-icon-color: var(--focus-color);
87
85
 
88
86
  /* button style */
89
87
  --button-background-color: #fafbfc;
90
- --button-background-focus-color: var(--primary-color);
91
- --button-border: var(--border-dark-color);
88
+ --button-background-focus-color: var(--md-sys-color-primary);
89
+ --button-border: var(--border-dim-color);
92
90
  --button-border-radius: var(--border-radius);
93
91
  --button-margin: var(--margin-default) var(--margin-default) var(--margin-default) 0;
94
- --button-padding: var(--padding-default);
95
- --button-color: var(--secondary-color);
96
- --button-font: normal 15px var(--theme-font);
92
+ --button-padding: calc(var(--padding-narrow) * 1.5) var(--padding-wide);
93
+ --button-color: var(--md-sys-color-secondary);
94
+ --button-font: 600 var(--fontsize-default) var(--theme-font);
97
95
  --button-text-transform: capitalize;
98
96
 
99
97
  --button-active-background-color: var(--status-success-color);
100
98
  --button-active-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.2);
101
99
  --button-activ-border: transparent;
102
- --button-active-color: var(--theme-white-color);
100
+ --button-active-color: var(--md-sys-color-on-primary);
103
101
  --button-active-font: bold 16px var(--theme-font);
104
102
 
105
103
  --button-primary-background-color: var(--secondary-text-color);
106
104
  --button-primary-active-background-color: var(--status-success-color);
107
105
  --button-primary-padding: var(--margin-default) var(--margin-wide);
108
- --button-primary-color: var(--theme-white-color);
106
+ --button-primary-color: var(--md-sys-color-on-primary);
109
107
  --button-primary-font: bold 16px var(--theme-font);
110
108
 
111
109
  --button-delete-background-color: var(--status-danger-color);
112
110
  --button-delete-active-background-color: var(--status-warning-color);
113
111
  --button-delete-padding: var(--margin-default) var(--margin-wide);
114
- --button-delete-color: var(--theme-white-color);
112
+ --button-delete-color: var(--md-sys-color-on-primary);
115
113
  --button-delete-font: bold 16px var(--theme-font);
116
114
 
117
115
  /* table style */
118
116
  --th-padding: var(--padding-default);
119
- --th-border-top: 2px solid var(--secondary-color);
117
+ --th-border-top: 2px solid var(--md-sys-color-secondary);
120
118
  --th-text-transform: capitalize;
121
119
  --th-font: bold var(--fontsize-small) var(--theme-font);
122
120
  --th-color: rgba(var(--secondary-color-rgb), 0.8);
123
121
 
124
- --tr-background-color: var(--theme-white-color);
122
+ --tr-background-color: var(--md-sys-color-surface-variant);
125
123
  --tr-background-odd-color: rgba(255, 255, 255, 0.4);
126
124
  --tr-background-hover-color: #e1f5fe;
127
125
  --td-border-line: 1px solid rgba(0, 0, 0, 0.05);
128
126
  --td-border-bottom: 1px solid rgba(0, 0, 0, 0.09);
129
127
  --td-padding: var(--padding-default);
130
128
  --td-font: normal 13px var(--theme-font);
131
- --td-color: var(--secondary-color);
129
+ --td-color: var(--md-sys-color-secondary);
132
130
 
133
131
  --label-cell-background-color: #f6f6f6; /* th or td common background color */
134
132
 
135
133
  /* form style */
136
134
  --label-font: normal var(--fontsize-default) var(--theme-font);
137
- --label-color: var(--secondary-color);
135
+ --label-color: var(--md-sys-color-on-surface);
138
136
  --label-text-transform: capitalize;
139
137
  --input-margin: var(--margin-narrow) 0;
140
- --input-padding: var(--padding-default);
138
+ --input-padding: 6px 2px;
141
139
  --input-min-width: 200px;
142
140
  --input-font: normal var(--fontsize-default) var(--theme-font);
143
141
  --input-hint-font: normal var(--fontsize-small) var(--theme-font);
@@ -1,22 +1,19 @@
1
1
  body {
2
2
  /* login page style*/
3
- --auth-background: var(--primary-color);
4
3
  --auth-brand-name: bold 20px var(--theme-font);
5
4
  --auth-brand-name-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1);
6
5
  --auth-brand-welcome-msg: normal 12px var(--theme-font);
7
6
 
8
- --auth-title-color: var(--theme-white-color);
9
7
  --auth-title-font: bold 32px var(--theme-font);
10
- --auth-description-color: var(--secondary-text-color);
11
8
  --auth-description-font: normal 12px var(--theme-font);
12
9
  --auth-description-padding: 5px 5px 15px 5px;
13
10
 
14
11
  --auth-input-font: normal 18px/24px var(--theme-font);
15
- --auth-input-border: 1px solid var(--opacity-dark-color);
16
- --auth-input-border-light: 1px solid var(--opacity-light-color);
17
- --auth-input-color: var(--theme-white-color);
12
+ --auth-input-border: 1px solid rgba(0, 0, 0, 0.4);
13
+ --auth-input-border-light: 1px solid rgba(255, 255, 255, 0.8);
14
+ --auth-input-color: var(--md-sys-color-on-primary);
18
15
 
19
- --auth-button-background-color: var(--theme-white-color);
16
+ --auth-button-background-color: var(--md-sys-color-surface-variant);
20
17
  --auth-button-background-focus-color: var(--status-success-color);
21
18
  --auth-button-font: bold 20px var(--theme-font);
22
19
  --auth-button-padding: 9px 12px 7px 12px;
@@ -42,11 +39,11 @@ body {
42
39
  --auth-special-page-padding: 250px 0 100px 0;
43
40
 
44
41
  /* domain select page style*/
45
- --checkin-background-color: var(--main-section-background-color);
42
+ --checkin-background-color: var(--md-sys-color-background);
46
43
  --checkin-header-height: 45px;
47
- --checkin-header-background-color: var(--primary-color);
44
+ --checkin-header-background-color: var(--md-sys-color-primary);
48
45
  --checkin-header-title-font: bold 19px var(--theme-font);
49
- --checkin-header-title-color: var(--theme-white-color);
46
+ --checkin-header-title-color: var(--md-sys-color-on-primary);
50
47
  --checkin-wrap-max-width: 500px;
51
48
  --checkin-wrap-padding: var(--padding-wide);
52
49
  }
@@ -1,10 +1,10 @@
1
1
  body {
2
- --report-background-color: var(--main-section-background-color);
2
+ --report-background-color: var(--md-sys-color-background);
3
3
  --report-padding: 15px;
4
4
  --report-title-margin: 0 0 0 10px;
5
5
  --report-title-border: none;
6
- --report-title-color: var(--secondary-color);
7
- --report-title-icon-color: var(--primary-color);
6
+ --report-title-color: var(--md-sys-color-secondary);
7
+ --report-title-icon-color: var(--md-sys-color-primary);
8
8
  --report-title-icon-margin: 0 3px 2px 0;
9
9
  --report-title-icon-size: 14px;
10
10
  --report-title-with-grid-padding: 0;
@@ -2,7 +2,6 @@ module.exports = {
2
2
  licenseKey:
3
3
  '5eyJQcm9kdWN0IjoiT3BlcmF0byBCb2FyZCIsIkxpY2Vuc2UgVHlwZSI6IkV2YWx1YXRpb24iLCJQdXJjaGFzZSBEYXRlIjoiMjAyMy4xMC4yMSIsIkV4cGlyYXRpb24gRGF0ZSI6IjIwMjQuMDEuMjEiLCJIb3N0IEFkZHJlc3MiOiJVTkxJTUlURUQiLCJNYXggVGFyZ2V0IENvdW50IjowLCJNYXggRG9tYWluIENvdW50IjowLCJQZXJtaXNzaW9ucyBGb3IgQm9hcmQgVXNhZ2UiOiJWaWV3ZXIsIE1vZGVsbGVyIiwiUGVybWlzc2lvbnMgRm9yIFRhaWxvciBUb29sIjoiUnVubmVyIiwiS2V5IjoiQXhncUdBeE5Nd29DS1JveEt3RUFTUmd1SUQ0RkRDNDVEVmtxSGdBRUloZ2FKaVpUSXdvV1FnOHZIZ3dNRWhjR0RCb0VGaG9XSmhZakNnd0VEd29FT0JZNEdnOEFCRFFJS0NZbE1RZ0pHRHdIR2k0UkZUTXFIQWtxRmdzckFRQkpId2toU3hzWVFBOGlJemdZRlNVZkVpc0NHUlFKR2dwTER3a2lCdzBTT0FZUUdTSXhHaFltRmlNSkdVa2JDU01NSWlRbkZCVThJd2dvSmlVcENpNFVBaDhjTGdJVktDSUxBUVViQ0NVQUpUWVlDaFljRkF3SUZCMDFHd2dXRlI0VEd4RUlSeFlhSEVzT0x4NDVKaVVlRlFJcE16RXJBUUJYSUI0WUlBOEpEUUlkSnpNVENTa0VGQ3NrSVZZSUNpMENId2tGRGlNakloQUlLaDRURXhFaFdnc0tLVWNGR0RJaURSTWpCaEUvTHdjUkJCNUhGZ2tVT2c0dkh3QWdTU0lLQVNrU0xob1JKbE1qSERGSURob2VDZzBuRmhnWk93OElIeUlaV1FvS0Nrd0ZMd2dORFU0ZkJoQS9MeGdySXgxSUN3b1dTQVVJTWhRTkVqTVNHVHdIQ0I4RkdWVUtEQXhMSHcxRUxBPT0ifQ==88034',
4
4
  port: 4000,
5
- protocol: 'http',
6
5
  domainType: 'warehouse',
7
6
  useVirtualHostBasedDomain: false,
8
7
  subdomainOffset: 2,
@@ -1,6 +1,6 @@
1
1
  module.exports = {
2
- licenseKey: '5eyJQcm9kdWN0IjoiT3BlcmF0by10b29scyIsIkxpY2Vuc2UgVHlwZSI6IkV2YWx1YXRpb24iLCJQdXJjaGFzZSBEYXRlIjoiMjAyMi4wOS4wMiIsIkV4cGlyYXRpb24gRGF0ZSI6IjIwMjIuMDkuMzAiLCJIb3N0IEFkZHJlc3MiOiIxOTIuMTY4LjEuMjE5IiwiTWF4IFRhcmdldCBDb3VudCI6IjIwIiwiTWF4IERvbWFpbiBDb3VudCI6IjEiLCJQZXJtaXNzaW9ucyBGb3IgQm9hcmQgVXNhZ2UiOiJWaWV3ZXIsIE1vZGVsbGVyIiwiUGVybWlzc2lvbnMgRm9yIFRhaWxvciBUb29sIjoiUnVubmVyLCBTdHVkaW8iLCJLZXkiOiJBeGdxR0F4Tk13b0NLUm94S3dFQVNSZ3VJRDRGREM0NURWazdNUUFFTHhJUkVDWlRJd29XUWc4dkhnd01FaGNHREJvRUZob1dKaFlqQ2d3RUR3b0VPQlk0R2c4QUJEUUlLQ1lsTVFnSkdEd0hHaTRSRlRNcUhBa3FGZ3NyQVFCSkh3a2hTeHNJUUE0Z016Z1dGVHNmRWlzQ0dSUUpHZ3BMRHdraUJ3MFNPQVlRR1NJeEdoWW1GaU1KR1VrYkNTc01JaVFCRkJWTUp3Z29KaVVwQ2k0VUFoOGNMZ0lWS0NJTEFRVWJDQ1VBSmxnZERSbEhHdzBiTlNOS0p4UVZQQ01zS3dBSVNSZ0tIQVlmR3lJQkRFMElDd0lWSmgwU05obFZDQjRaQ0I4Skt3NG1TUXNJRGlraUxTc2tIVllLQ2h4Q0JnZ3lKUTBURmhRQ0ZSOHJLd0VxU1NBZUdDTU9DU29MRGpnZUdRRXBMeFFSRUMwbkNpNFpPUmNNT3dFTVRSc0dEQ29hQnhvM0dra2RDQmdwQndvZU5oVTRJeElaRnpjVkdpSVpVd29hREVzZkNBTUFHaWNXR0FBcEJCa1JOd05XQ2cwVk9SWU1PeEFtSmhvSEFTa1FGUkVBTFRVS0x5bEZId2tGQUJwT0ZoUUFQeElZS0NZdE5BZ1pERDBIQ2p3QUNURXZKQT09In0=91827',
3
- protocol: 'https',
2
+ licenseKey:
3
+ '5eyJQcm9kdWN0IjoiT3BlcmF0by10b29scyIsIkxpY2Vuc2UgVHlwZSI6IkV2YWx1YXRpb24iLCJQdXJjaGFzZSBEYXRlIjoiMjAyMi4wOS4wMiIsIkV4cGlyYXRpb24gRGF0ZSI6IjIwMjIuMDkuMzAiLCJIb3N0IEFkZHJlc3MiOiIxOTIuMTY4LjEuMjE5IiwiTWF4IFRhcmdldCBDb3VudCI6IjIwIiwiTWF4IERvbWFpbiBDb3VudCI6IjEiLCJQZXJtaXNzaW9ucyBGb3IgQm9hcmQgVXNhZ2UiOiJWaWV3ZXIsIE1vZGVsbGVyIiwiUGVybWlzc2lvbnMgRm9yIFRhaWxvciBUb29sIjoiUnVubmVyLCBTdHVkaW8iLCJLZXkiOiJBeGdxR0F4Tk13b0NLUm94S3dFQVNSZ3VJRDRGREM0NURWazdNUUFFTHhJUkVDWlRJd29XUWc4dkhnd01FaGNHREJvRUZob1dKaFlqQ2d3RUR3b0VPQlk0R2c4QUJEUUlLQ1lsTVFnSkdEd0hHaTRSRlRNcUhBa3FGZ3NyQVFCSkh3a2hTeHNJUUE0Z016Z1dGVHNmRWlzQ0dSUUpHZ3BMRHdraUJ3MFNPQVlRR1NJeEdoWW1GaU1KR1VrYkNTc01JaVFCRkJWTUp3Z29KaVVwQ2k0VUFoOGNMZ0lWS0NJTEFRVWJDQ1VBSmxnZERSbEhHdzBiTlNOS0p4UVZQQ01zS3dBSVNSZ0tIQVlmR3lJQkRFMElDd0lWSmgwU05obFZDQjRaQ0I4Skt3NG1TUXNJRGlraUxTc2tIVllLQ2h4Q0JnZ3lKUTBURmhRQ0ZSOHJLd0VxU1NBZUdDTU9DU29MRGpnZUdRRXBMeFFSRUMwbkNpNFpPUmNNT3dFTVRSc0dEQ29hQnhvM0dra2RDQmdwQndvZU5oVTRJeElaRnpjVkdpSVpVd29hREVzZkNBTUFHaWNXR0FBcEJCa1JOd05XQ2cwVk9SWU1PeEFtSmhvSEFTa1FGUkVBTFRVS0x5bEZId2tGQUJwT0ZoUUFQeElZS0NZdE5BZ1pERDBIQ2p3QUNURXZKQT09In0=91827',
4
4
  domainType: 'warehouse',
5
5
  useVirtualHostBasedDomain: true,
6
6
  accessTokenCookieKey: 'access_token.wms',
@@ -0,0 +1,6 @@
1
+ import * as typeDefs from './types';
2
+ import * as resolvers from './resolvers';
3
+ export declare const schema: {
4
+ typeDefs: typeof typeDefs;
5
+ resolvers: typeof resolvers;
6
+ };
@@ -0,0 +1,3 @@
1
+ export declare const boardSettingsResolver: {
2
+ boardSettings(_: any, params: any, context: ResolverContext): Promise<any[]>;
3
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"board-settings.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/board-setting/board-settings.ts"],"names":[],"mappings":";;;AAAA,yDAAgD;AAChD,iEAAqD;AACrD,+DAAsD;AACtD,iDAAqD;AAErD,kFAU2C;AAE9B,QAAA,qBAAqB,GAAG;IACnC,KAAK,CAAC,aAAa,CAAC,CAAM,EAAE,MAAW,EAAE,OAAwB;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC;;6FAEqF;QACrF,MAAM,IAAI,GAAS,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC;aACzC,kBAAkB,CAAC,MAAM,CAAC;aAC1B,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC;aACxC,iBAAiB,CAAC,cAAc,EAAE,cAAc,CAAC;aACjD,KAAK,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;aAC7D,QAAQ,CAAC,6BAA6B,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;aAChE,MAAM,EAAE,CAAA;QAEX,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;QAC3E,oFAAoF;QAEpF,MAAM,UAAU,GAAG,GAAG,iDAAqB,IAAI,QAAQ,EAAE,CAAA;QACzD,+EAA+E;QAE/E,MAAM,YAAY,GAAG,IAAA,qBAAa,EAAC,sBAAO,CAAC,CAAC,kBAAkB,EAAE,CAAA;QAChE,MAAM,KAAK,GAAG;YACZ,sDAA0B;YAC1B,qDAAyB;YACzB,oDAAwB;YACxB,6DAAiC;YACjC,UAAU;YACV,oDAAwB;YACxB,uDAA2B;YAC3B,mDAAuB;YACvB,kDAAsB;SACvB,CAAA;QAED,IAAI,EAAE,GAAG,YAAY;YACnB,uEAAuE;aACtE,SAAS,CAAC,qBAAK,EAAE,OAAO,EAAE,4CAA4C,CAAC;YACxE,yDAAyD;aACxD,MAAM,CAAC;YACN,kBAAkB;YAClB,sBAAsB;YACtB,wBAAwB;YACxB,qBAAqB;YACrB,yBAAyB;YACzB,uCAAuC;YACvC,mCAAmC;SACpC,CAAC;aACD,KAAK,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;QAE5E,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM;YAAE,EAAE,CAAC,QAAQ,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAEhF,IAAI,gBAAgB,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAA;QAE5C,OAAO,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACzC,IAAI,OAAO,GAAQ;gBACjB,KAAK,EAAE,EAAE;aACV,CAAA;YAED,KAAK,IAAI,GAAG,IAAI,YAAY,EAAE;gBAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;oBACzB,IAAI,SAAS,GAAG,GAAG,CAAA;oBACnB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;oBAC5C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;iBAC7C;qBAAM;oBACL,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;iBACjC;aACF;YAED,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,iDAAqB,CAAC,IAAI,CAAC,EAAE;gBACpD,OAAO,CAAC,IAAI,GAAG,iDAAqB,CAAA;aACrC;YAED,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Board } from '@things-factory/board-service'\nimport { Setting } from '@things-factory/setting-base'\nimport { getRepository } from '@things-factory/shell'\n\nimport {\n CARTON_LABEL_SETTING_KEY,\n HOME_DASHBOARD_PREFIX,\n INTENALIZED_AWB_SETTING_KEY,\n LOCATION_LABEL_SETTING_KEY,\n PALLET_LABEL_SETTING_KEY,\n PRODUCT_LABEL_SETTING_KEY,\n REUSABLE_PALLET_LABEL_SETTING_KEY,\n ROUTE_LABEL_SETTING_KEY,\n TOTE_LABEL_SETTING_KEY\n} from '../../../opa-app-setting-constants'\n\nexport const boardSettingsResolver = {\n async boardSettings(_: any, params: any, context: ResolverContext) {\n const { domain } = context.state\n\n /***********************************************************************************\n * Temporary solution for dashboard user type\n ***********************************************************************************/\n const user: User = await getRepository(User)\n .createQueryBuilder('USER')\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: domain.id })\n .getOne()\n\n const userType = user.roles.filter(role => role.description)[0].description\n /**********************************************************************************/\n\n const HOME_BOARD = `${HOME_DASHBOARD_PREFIX}:${userType}`\n // const HOME_BOARD = `${HOME_DASHBOARD_PREFIX}:${context.state.user.userType}`\n\n const queryBuilder = getRepository(Setting).createQueryBuilder()\n const names = [\n LOCATION_LABEL_SETTING_KEY,\n PRODUCT_LABEL_SETTING_KEY,\n PALLET_LABEL_SETTING_KEY,\n REUSABLE_PALLET_LABEL_SETTING_KEY,\n HOME_BOARD,\n CARTON_LABEL_SETTING_KEY,\n INTENALIZED_AWB_SETTING_KEY,\n ROUTE_LABEL_SETTING_KEY,\n TOTE_LABEL_SETTING_KEY\n ]\n\n var qb = queryBuilder\n // .innerJoin(Board, 'Board', 'Board.id = CAST(Setting.value AS uuid)')\n .innerJoin(Board, 'Board', 'Setting.value = CAST(Board.id AS char(36))')\n // .innerJoin(Board, 'Board', 'Board.id = Setting.value')\n .select([\n 'Setting.id as id',\n 'Setting.name as name',\n 'Setting.value as value',\n 'Board.id as boardId',\n 'Board.name as boardName',\n 'Board.description as boardDescription',\n 'Board.thumbnail as boardThumbnail'\n ])\n .where('Setting.domain_id = :domain', { domain: context.state.domain.id })\n\n if (names && names.length) qb.andWhere('Setting.name IN (:...names)', { names })\n\n var boardSettingList = await qb.getRawMany()\n\n return boardSettingList.map(boardSetting => {\n var setting: any = {\n board: {}\n }\n\n for (let key in boardSetting) {\n if (key.includes('board')) {\n let originKey = key\n key = key.replace('board', '').toLowerCase()\n setting.board[key] = boardSetting[originKey]\n } else {\n setting[key] = boardSetting[key]\n }\n }\n\n if (setting.name.indexOf(HOME_DASHBOARD_PREFIX) == 0) {\n setting.name = HOME_DASHBOARD_PREFIX\n }\n\n return setting\n })\n }\n}\n"]}
1
+ {"version":3,"file":"board-settings.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/board-setting/board-settings.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Board } from '@things-factory/board-service'\nimport { Setting } from '@things-factory/setting-base'\nimport { getRepository } from '@things-factory/shell'\n\nimport {\n CARTON_LABEL_SETTING_KEY,\n HOME_DASHBOARD_PREFIX,\n INTENALIZED_AWB_SETTING_KEY,\n LOCATION_LABEL_SETTING_KEY,\n PALLET_LABEL_SETTING_KEY,\n PRODUCT_LABEL_SETTING_KEY,\n REUSABLE_PALLET_LABEL_SETTING_KEY,\n ROUTE_LABEL_SETTING_KEY,\n TOTE_LABEL_SETTING_KEY\n} from '../../../opa-app-setting-constants'\n\nexport const boardSettingsResolver = {\n async boardSettings(_: any, params: any, context: ResolverContext) {\n const { domain } = context.state\n\n /***********************************************************************************\n * Temporary solution for dashboard user type\n ***********************************************************************************/\n const user: User = await getRepository(User)\n .createQueryBuilder('USER')\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: domain.id })\n .getOne()\n\n const userType = user.roles.filter(role => role.description)[0].description\n /**********************************************************************************/\n\n const HOME_BOARD = `${HOME_DASHBOARD_PREFIX}:${userType}`\n // const HOME_BOARD = `${HOME_DASHBOARD_PREFIX}:${context.state.user.userType}`\n\n const queryBuilder = getRepository(Setting).createQueryBuilder()\n const names = [\n LOCATION_LABEL_SETTING_KEY,\n PRODUCT_LABEL_SETTING_KEY,\n PALLET_LABEL_SETTING_KEY,\n REUSABLE_PALLET_LABEL_SETTING_KEY,\n HOME_BOARD,\n CARTON_LABEL_SETTING_KEY,\n INTENALIZED_AWB_SETTING_KEY,\n ROUTE_LABEL_SETTING_KEY,\n TOTE_LABEL_SETTING_KEY\n ]\n\n var qb = queryBuilder\n // .innerJoin(Board, 'Board', 'Board.id = CAST(Setting.value AS uuid)')\n .innerJoin(Board, 'Board', 'Setting.value = CAST(Board.id AS char(36))')\n // .innerJoin(Board, 'Board', 'Board.id = Setting.value')\n .select([\n 'Setting.id as id',\n 'Setting.name as name',\n 'Setting.value as value',\n 'Board.id as boardId',\n 'Board.name as boardName',\n 'Board.description as boardDescription',\n 'Board.thumbnail as boardThumbnail'\n ])\n .where('Setting.domain_id = :domain', { domain: context.state.domain.id })\n\n if (names && names.length) qb.andWhere('Setting.name IN (:...names)', { names })\n\n var boardSettingList = await qb.getRawMany()\n\n return boardSettingList.map(boardSetting => {\n var setting: any = {\n board: {}\n }\n\n for (let key in boardSetting) {\n if (key.includes('board')) {\n let originKey = key\n key = key.replace('board', '').toLowerCase()\n setting.board[key] = boardSetting[originKey]\n } else {\n setting[key] = boardSetting[key]\n }\n }\n\n if (setting.name.indexOf(HOME_DASHBOARD_PREFIX) == 0) {\n setting.name = HOME_DASHBOARD_PREFIX\n }\n\n return setting\n })\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export declare const Query: {
2
+ boardSettings(_: any, params: any, context: ResolverContext): Promise<any[]>;
3
+ };
@@ -0,0 +1,4 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const elcclDailyCollectionReport: {
3
+ elcclDailyCollectionReport(_: any, params: ListParam, context: ResolverContext): Promise<any>;
4
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"elccl-daily-collection-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,iDAAgE;AAEnD,QAAA,0BAA0B,GAAG;IACxC,KAAK,CAAC,0BAA0B,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAClF,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAE5B,IAAI,aAAa,GAAG,EAAE,CAAA;YACtB,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE;gBACpE,MAAM,QAAQ,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;oBACjE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK;iBAChE,CAAC,CAAA;gBACF,aAAa,GAAG,wBAAwB,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAA;aAC7D;YAED,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YACpE,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAChE,IAAI,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAA;YAC9E,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,GAAG,UAAU,CAAA;YAEvF,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;gBAAE,MAAM,eAAe,CAAA;YAE/C,IAAI,kBAAkB,GAAG,EAAE,CAAA;YAC3B,IAAI,aAAa,EAAE;gBACjB,kBAAkB;oBAChB,0CAA0C;wBAC1C,aAAa,CAAC,KAAK;6BAChB,KAAK,CAAC,GAAG,CAAC;6BACV,GAAG,CAAC,EAAE,CAAC,EAAE;4BACR,OAAO,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;wBACpD,CAAC,CAAC;6BACD,IAAI,CAAC,GAAG,CAAC;wBACZ,IAAI,CAAA;aACP;YAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B;;;;;;;;;;;;;;;YAeI,aAAa;;;;;;;;;;;;;;;;;;;;;;cAsBX,kBAAkB;;;;;;SAMvB,EACD,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAClE,CAAA;YAED,IAAI,KAAK,GAAG,MAAa,CAAA;YAEzB,OAAO,KAAK,CAAA;SACb;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\n\nexport const elcclDailyCollectionReport = {\n async elcclDailyCollectionReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n\n let bizplaceQuery = ''\n if (params.filters.find((filter: any) => filter.name === 'bizplace')) {\n const bizplace: Bizplace = await getRepository(Bizplace).findOneBy({\n id: params.filters.find(data => data.name === 'bizplace').value\n })\n bizplaceQuery = \"AND rg.bizplace_id = '\" + bizplace.id + \"'\"\n }\n\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let arrivalNotice = params.filters.find(data => data.name === 'arrivalNotice')\n let tzoffset = params.filters.find(data => data.name === 'tzoffset').value + ' seconds'\n\n if (!fromDate || !toDate) throw 'Invalid input'\n\n let arrivalNoticeQuery = ''\n if (arrivalNotice) {\n arrivalNoticeQuery =\n 'AND arrival_notice_name ILIKE ANY(ARRAY[' +\n arrivalNotice.value\n .split(',')\n .map(an => {\n return \"'%\" + an.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',') +\n '])'\n }\n\n const result = await tx.query(\n `\n with src as (\n select ar.name as release_good_name, COALESCE(ar.name, 'MIGRATE') as arrival_notice_name, bz.name as bizplace_name, \n ws.ended_at::date, delord.own_collection, delord.name as delivery_order_name, inv.pallet_id, inv.batch_id\n from release_goods rg\n inner join bizplaces bz on bz.id = rg.bizplace_id\n inner join worksheets ws on ws.release_good_id = rg.id and ws.type = 'LOADING'\n inner join order_inventories oi on oi.release_good_id = rg.id\n inner join inventories inv on inv.id = oi.inventory_id\n inner join delivery_orders delord on delord.id = oi.delivery_order_id \n left join order_inventories inbound_oi on inbound_oi.inventory_id = inv.id and inbound_oi.type = 'ARRIVAL_NOTICE'\n left join arrival_notices ar on ar.id = inbound_oi.arrival_notice_id\n where rg.domain_id = $1\n and ws.ended_at >= $2::timestamp + $4::interval\n and ws.ended_at <= $3::timestamp + $4::interval\n ${bizplaceQuery}\n )\n select bizplace_name, arrival_notice_name, ended_at, batch_id, \n trim(trailing ', ' from self_collect) as self_collect, trim(trailing ', ' from delivery) as delivery,\n trim(trailing ', ' from self_collect_summary) as self_collect_summary, trim(trailing ', ' from delivery_summary) as delivery_summary,\n total_self_collect, total_delivery\n from(\n select bizplace_name, arrival_notice_name, ended_at, batch_id,\n string_agg(self_collect, '') as self_collect,\n string_agg(delivery, '') delivery,\n string_agg(self_collect_summary, '') as self_collect_summary,\n string_agg(delivery_summary, '') delivery_summary,\n COUNT(case when own_collection = true then 1 end) as total_self_collect,\n COUNT(case when own_collection = false then 1 end) as total_delivery\n from (\n select arrival_notice_name, delivery_order_name, bizplace_name, ended_at::varchar, own_collection, batch_id,\n case when own_collection = 'true' then concat(delivery_order_name, ' (', string_agg(pallet_id, ', ' ORDER BY pallet_id), '), ') else '' end as self_collect,\n case when own_collection = 'false' then concat(delivery_order_name, ' (', string_agg(pallet_id, ', ' ORDER BY pallet_id), '), ') else '' end as delivery,\n case when own_collection = 'true' then concat(delivery_order_name, ' (', count(*), '), ') else '' end as self_collect_summary,\n case when own_collection = 'false' then concat(delivery_order_name, ' (', count(*), '), ') else '' end as delivery_summary\n from src\n where 1 = 1\n ${arrivalNoticeQuery}\n group by bizplace_name, arrival_notice_name, ended_at, delivery_order_name, own_collection, batch_id\n ) src\n group by bizplace_name, arrival_notice_name, ended_at, batch_id\n order by bizplace_name, ended_at, arrival_notice_name\n ) src\n `,\n [context.state.domain.id, fromDate.value, toDate.value, tzoffset]\n )\n\n let items = result as any\n\n return items\n } catch (error) {\n throw error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"elccl-daily-collection-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,iDAAgE;AAEnD,QAAA,0BAA0B,GAAG;IACxC,KAAK,CAAC,0BAA0B,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAClF,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAE5B,IAAI,aAAa,GAAG,EAAE,CAAA;YACtB,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;gBACrE,MAAM,QAAQ,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;oBACjE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK;iBAChE,CAAC,CAAA;gBACF,aAAa,GAAG,wBAAwB,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAA;YAC9D,CAAC;YAED,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YACpE,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAChE,IAAI,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAA;YAC9E,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,GAAG,UAAU,CAAA;YAEvF,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;gBAAE,MAAM,eAAe,CAAA;YAE/C,IAAI,kBAAkB,GAAG,EAAE,CAAA;YAC3B,IAAI,aAAa,EAAE,CAAC;gBAClB,kBAAkB;oBAChB,0CAA0C;wBAC1C,aAAa,CAAC,KAAK;6BAChB,KAAK,CAAC,GAAG,CAAC;6BACV,GAAG,CAAC,EAAE,CAAC,EAAE;4BACR,OAAO,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;wBACpD,CAAC,CAAC;6BACD,IAAI,CAAC,GAAG,CAAC;wBACZ,IAAI,CAAA;YACR,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B;;;;;;;;;;;;;;;YAeI,aAAa;;;;;;;;;;;;;;;;;;;;;;cAsBX,kBAAkB;;;;;;SAMvB,EACD,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAClE,CAAA;YAED,IAAI,KAAK,GAAG,MAAa,CAAA;YAEzB,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\n\nexport const elcclDailyCollectionReport = {\n async elcclDailyCollectionReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n\n let bizplaceQuery = ''\n if (params.filters.find((filter: any) => filter.name === 'bizplace')) {\n const bizplace: Bizplace = await getRepository(Bizplace).findOneBy({\n id: params.filters.find(data => data.name === 'bizplace').value\n })\n bizplaceQuery = \"AND rg.bizplace_id = '\" + bizplace.id + \"'\"\n }\n\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let arrivalNotice = params.filters.find(data => data.name === 'arrivalNotice')\n let tzoffset = params.filters.find(data => data.name === 'tzoffset').value + ' seconds'\n\n if (!fromDate || !toDate) throw 'Invalid input'\n\n let arrivalNoticeQuery = ''\n if (arrivalNotice) {\n arrivalNoticeQuery =\n 'AND arrival_notice_name ILIKE ANY(ARRAY[' +\n arrivalNotice.value\n .split(',')\n .map(an => {\n return \"'%\" + an.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',') +\n '])'\n }\n\n const result = await tx.query(\n `\n with src as (\n select ar.name as release_good_name, COALESCE(ar.name, 'MIGRATE') as arrival_notice_name, bz.name as bizplace_name, \n ws.ended_at::date, delord.own_collection, delord.name as delivery_order_name, inv.pallet_id, inv.batch_id\n from release_goods rg\n inner join bizplaces bz on bz.id = rg.bizplace_id\n inner join worksheets ws on ws.release_good_id = rg.id and ws.type = 'LOADING'\n inner join order_inventories oi on oi.release_good_id = rg.id\n inner join inventories inv on inv.id = oi.inventory_id\n inner join delivery_orders delord on delord.id = oi.delivery_order_id \n left join order_inventories inbound_oi on inbound_oi.inventory_id = inv.id and inbound_oi.type = 'ARRIVAL_NOTICE'\n left join arrival_notices ar on ar.id = inbound_oi.arrival_notice_id\n where rg.domain_id = $1\n and ws.ended_at >= $2::timestamp + $4::interval\n and ws.ended_at <= $3::timestamp + $4::interval\n ${bizplaceQuery}\n )\n select bizplace_name, arrival_notice_name, ended_at, batch_id, \n trim(trailing ', ' from self_collect) as self_collect, trim(trailing ', ' from delivery) as delivery,\n trim(trailing ', ' from self_collect_summary) as self_collect_summary, trim(trailing ', ' from delivery_summary) as delivery_summary,\n total_self_collect, total_delivery\n from(\n select bizplace_name, arrival_notice_name, ended_at, batch_id,\n string_agg(self_collect, '') as self_collect,\n string_agg(delivery, '') delivery,\n string_agg(self_collect_summary, '') as self_collect_summary,\n string_agg(delivery_summary, '') delivery_summary,\n COUNT(case when own_collection = true then 1 end) as total_self_collect,\n COUNT(case when own_collection = false then 1 end) as total_delivery\n from (\n select arrival_notice_name, delivery_order_name, bizplace_name, ended_at::varchar, own_collection, batch_id,\n case when own_collection = 'true' then concat(delivery_order_name, ' (', string_agg(pallet_id, ', ' ORDER BY pallet_id), '), ') else '' end as self_collect,\n case when own_collection = 'false' then concat(delivery_order_name, ' (', string_agg(pallet_id, ', ' ORDER BY pallet_id), '), ') else '' end as delivery,\n case when own_collection = 'true' then concat(delivery_order_name, ' (', count(*), '), ') else '' end as self_collect_summary,\n case when own_collection = 'false' then concat(delivery_order_name, ' (', count(*), '), ') else '' end as delivery_summary\n from src\n where 1 = 1\n ${arrivalNoticeQuery}\n group by bizplace_name, arrival_notice_name, ended_at, delivery_order_name, own_collection, batch_id\n ) src\n group by bizplace_name, arrival_notice_name, ended_at, batch_id\n order by bizplace_name, ended_at, arrival_notice_name\n ) src\n `,\n [context.state.domain.id, fromDate.value, toDate.value, tzoffset]\n )\n\n let items = result as any\n\n return items\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const elcclDailyOrderInventoryReport: {
3
+ elcclDailyOrderInventoryReport(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ items: any;
5
+ total: any;
6
+ }>;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"elccl-daily-order-inventory-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAGtC,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,8BAA8B,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QACtF,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAE5B,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YAE1E,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;YAC5E,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,GAAG,UAAU,CAAA;YAEvF,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK;gBAAE,MAAM,eAAe,CAAA;YAEpD,MAAM,QAAQ,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;gBACpE,EAAE,EAAE,cAAc,CAAC,KAAK;aACzB,CAAC,CAAA;YAEF,MAAM,EAAE,CAAC,KAAK,CACZ;;;;;;;;;;;;;;;;;;;;;;SAsBC,EACD,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CACxD,CAAA;YAED,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;;;;OAad,CAAC,CAAA;YAEF,MAAM,MAAM,GAAQ,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;8CAUK,KAAK,4CAA4C,KAAK;;;4BAGxE,KAAK;;;;;;wCAMO,KAAK;;;4BAGjB,KAAK;;;;wCAIO,KAAK;;;;;;;;;;;;;2CAaF,KAAK;;;;;;;;;;;yCAWP,KAAK;;;;;;OAMvC,CAAC,CAAA;YAEF,EAAE,CAAC,KAAK,CAAC;;OAER,CAAC,CAAA;YAEF,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO;oBACL,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,QAAQ,EAAE,QAAQ;oBAClB,eAAe,EAAE,GAAG,CAAC,iBAAiB;oBACtC,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,kBAAkB,EAAE,GAAG,CAAC,oBAAoB;oBAC5C,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,kBAAkB,EAAE,GAAG,CAAC,oBAAoB;oBAC5C,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,OAAO,EAAE,GAAG,CAAC,SAAS;oBACtB,OAAO,EAAE,GAAG,CAAC,QAAQ;oBACrB,UAAU,EAAE,GAAG,CAAC,YAAY;oBAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,kBAAkB,EAAE,GAAG,CAAC,oBAAoB;iBAC7C,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAA;SACtC;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const elcclDailyOrderInventoryReport = {\n async elcclDailyOrderInventoryReport(_: 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 let month = params.filters.find(data => data.name === 'month').value + '-01'\n let tzoffset = params.filters.find(data => data.name === 'tzoffset').value + ' seconds'\n\n if (!bizplaceFilter || !month) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await tx.query(\n `\n create temp table temp_invHistory as (\n select rih.pallet_id, rih.seq, \n coalesce(grn.name, do2.name, rih.order_no) as order_no , rih.order_ref_no , an.delivery_order_no as do_ref_no, \n rih.bizplace_id, rih.ref_order_id, \n coalesce(grn.created_at, rg.created_at, rih.created_at) as created_at, \n CASE WHEN rih.transaction_type = 'PICKING' THEN COALESCE(-oi.release_qty,rih.qty) ELSE rih.qty END AS qty,\n inv.packing_type, inv.reusable_pallet_id, rih.transaction_type, \n case when rih.status = 'TERMINATED' then rih.status else 'STORED' end as status,\n (case when lag(case when rih.status = 'TERMINATED' then 0 else 1 end) over (partition by rih.pallet_id order by rih.seq) = (case when rih.status = 'TERMINATED' then 0 else 1 end) \n then 0 else 1 end) as startflag\n from reduced_inventory_histories rih\n inner join inventories inv on inv.domain_id =rih.domain_id and inv.pallet_id =rih.pallet_id \n left join arrival_notices an on an.id = rih.ref_order_id::uuid and an.domain_id =rih.domain_id \n left join goods_receival_notes grn on grn.arrival_notice_id = an.id\n left join release_goods rg on rg.id = rih.ref_order_id::uuid and rg.domain_id =rih.domain_id \n left join order_inventories oi on oi.release_good_id = rih.ref_order_id::uuid and oi.inventory_id = inv.id\n left join delivery_orders do2 on do2.id = oi.delivery_order_id\n where ((rih.transaction_type <> 'PUTAWAY' and rih.transaction_type <> 'ADJUSTMENT' and rih.transaction_type <> 'RELOCATE') or rih.qty <> 0)\n and rih.domain_id =$1 and rih.bizplace_id = $2\n and coalesce(grn.created_at, rg.created_at, rih.created_at) < $3::timestamp + '1 month' + $4::interval\n )\n `,\n [context.state.domain.id, bizplace.id, month, tzoffset]\n )\n\n await tx.query(`\n create temp table temp_invByPallet as (\n select grp.*, ivh.order_no, ivh.order_ref_no, ivh.do_ref_no from (\n select pallet_id, packing_type, min(created_at) as started_at, max(created_at) as ended_at, min(seq) as min_seq, max(seq) as max_seq, status from (\n select startData.*, sum(startflag) over (partition by pallet_id order by seq) as grp from (\n select * from temp_invHistory s\n ) startData\n ) endData\n group by pallet_id, grp, status, packing_type\n order by pallet_id, min_seq\n ) grp\n inner join temp_invHistory ivh on ivh.pallet_id = grp.pallet_id and ivh.seq = grp.min_seq \n )\n `)\n\n const result: any = await tx.query(` \n select monthDays.created_at, order_no, order_ref_no, do_ref_no,\n coalesce(carton,0) as carton, \n coalesce(bag,0) as bag, \n coalesce(basket,0) as basket, \n coalesce(pallet,0) as pallet,\n sum(carton_running_total + carton) over (order by monthDays.created_at, src.rn) as carton_running_total, \n sum(bag_running_total + bag) over (order by monthDays.created_at, src.rn) as bag_running_total, \n sum(basket_running_total + basket) over (order by monthDays.created_at, src.rn) as basket_running_total, \n sum(pallet_running_total + pallet) over (order by monthDays.created_at, src.rn) as pallet_running_total\n from (select generate_series((date '${month}')::timestamp, date_trunc('month',(date '${month}')::timestamp) + '1 month' - '1 day'::interval, interval '1 day')::date as created_at) monthDays\n left join (\n select 0 as rn, loose.*, pallet.pallet, pallet.pallet_running_total from (\n select (date '${month}')::timestamp as created_at, 'NA' as order_no, 'NA' as order_ref_no, 'NA' as do_ref_no, \n 0 as carton, 0 as bag, 0 as basket,\n coalesce(sum(case when packing_type = 'CARTON' then qty else 0 end),0) as carton_running_total, \n coalesce(sum(case when packing_type = 'BAG' then qty else 0 end),0) as bag_running_total, \n coalesce(sum(case when packing_type = 'BASKET' then qty else 0 end),0) as basket_running_total\n from temp_invHistory\n where created_at < (date '${month}')::timestamp and qty <> 0\n ) loose\n left join (\n select (date '${month}')::timestamp as created_at,\n 0 as pallet,\n coalesce(sum(case when status = 'STORED' then 1 else -1 end),0) as pallet_running_total\n from temp_invByPallet ivp\n where started_at < (date '${month}')::timestamp\n ) pallet on pallet.created_at = loose.created_at\n union\n select row_number() over (order by loose.created_at) as rn,\n loose.*, pallet.pallet, pallet.pallet_running_total from (\n select MIN(created_at) as created_at, order_no, order_ref_no, do_ref_no,\n sum(case when packing_type = 'CARTON' then qty else 0 end) as carton, \n sum(case when packing_type = 'BAG' then qty else 0 end) as bag, \n sum(case when packing_type = 'BASKET' then qty else 0 end) as basket,\n 0 as carton_running_total, 0 as bag_running_total, 0 as basket_running_total\n from \n (\n SELECT pallet_id, packing_type, created_at, order_no, order_ref_no, do_ref_no, min(qty) AS qty FROM temp_invHistory \n where created_at >= (date '${month}')::timestamp and qty <> 0\n group by pallet_id, packing_type, created_at, order_no, order_ref_no, do_ref_no\n order by pallet_id, created_at, order_no, order_ref_no, do_ref_no\n ) foo\n group by created_at, order_no, order_ref_no, do_ref_no\n ) loose\n left join (\n select MIN(started_at) as created_at, order_no, order_ref_no, do_ref_no,\n sum(case when status = 'STORED' then 1 else -1 end) as pallet, \n 0 as pallet_running_total\n from temp_invByPallet ivp\n where started_at >= (date '${month}')::timestamp\n group by started_at::date, order_no, order_ref_no, do_ref_no\n ) pallet on pallet.created_at::date = loose.created_at::date and pallet.order_no = loose.order_no\n order by rn\n ) as src on src.created_at::date = monthDays.created_at::date \n order by monthDays.created_at, src.rn\n `)\n\n tx.query(`\n drop table temp_invHistory, temp_invByPallet\n `)\n\n let items = result.map(itm => {\n return {\n bag: itm.bag,\n bizplace: bizplace,\n bagRunningTotal: itm.bag_running_total,\n basket: itm.basket,\n basketRunningTotal: itm.basket_running_total,\n carton: itm.carton,\n cartonRunningTotal: itm.carton_running_total,\n createdAt: itm.created_at,\n doRefNo: itm.do_ref_no,\n orderNo: itm.order_no,\n orderRefNo: itm.order_ref_no,\n pallet: itm.pallet,\n palletRunningTotal: itm.pallet_running_total\n }\n })\n\n return { items, total: items.length }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"elccl-daily-order-inventory-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAGtC,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,8BAA8B,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QACtF,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAE5B,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YAE1E,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;YAC5E,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,GAAG,UAAU,CAAA;YAEvF,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK;gBAAE,MAAM,eAAe,CAAA;YAEpD,MAAM,QAAQ,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;gBACpE,EAAE,EAAE,cAAc,CAAC,KAAK;aACzB,CAAC,CAAA;YAEF,MAAM,EAAE,CAAC,KAAK,CACZ;;;;;;;;;;;;;;;;;;;;;;SAsBC,EACD,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CACxD,CAAA;YAED,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;;;;OAad,CAAC,CAAA;YAEF,MAAM,MAAM,GAAQ,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;8CAUK,KAAK,4CAA4C,KAAK;;;4BAGxE,KAAK;;;;;;wCAMO,KAAK;;;4BAGjB,KAAK;;;;wCAIO,KAAK;;;;;;;;;;;;;2CAaF,KAAK;;;;;;;;;;;yCAWP,KAAK;;;;;;OAMvC,CAAC,CAAA;YAEF,EAAE,CAAC,KAAK,CAAC;;OAER,CAAC,CAAA;YAEF,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO;oBACL,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,QAAQ,EAAE,QAAQ;oBAClB,eAAe,EAAE,GAAG,CAAC,iBAAiB;oBACtC,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,kBAAkB,EAAE,GAAG,CAAC,oBAAoB;oBAC5C,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,kBAAkB,EAAE,GAAG,CAAC,oBAAoB;oBAC5C,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,OAAO,EAAE,GAAG,CAAC,SAAS;oBACtB,OAAO,EAAE,GAAG,CAAC,QAAQ;oBACrB,UAAU,EAAE,GAAG,CAAC,YAAY;oBAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,kBAAkB,EAAE,GAAG,CAAC,oBAAoB;iBAC7C,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAA;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const elcclDailyOrderInventoryReport = {\n async elcclDailyOrderInventoryReport(_: 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 let month = params.filters.find(data => data.name === 'month').value + '-01'\n let tzoffset = params.filters.find(data => data.name === 'tzoffset').value + ' seconds'\n\n if (!bizplaceFilter || !month) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await tx.query(\n `\n create temp table temp_invHistory as (\n select rih.pallet_id, rih.seq, \n coalesce(grn.name, do2.name, rih.order_no) as order_no , rih.order_ref_no , an.delivery_order_no as do_ref_no, \n rih.bizplace_id, rih.ref_order_id, \n coalesce(grn.created_at, rg.created_at, rih.created_at) as created_at, \n CASE WHEN rih.transaction_type = 'PICKING' THEN COALESCE(-oi.release_qty,rih.qty) ELSE rih.qty END AS qty,\n inv.packing_type, inv.reusable_pallet_id, rih.transaction_type, \n case when rih.status = 'TERMINATED' then rih.status else 'STORED' end as status,\n (case when lag(case when rih.status = 'TERMINATED' then 0 else 1 end) over (partition by rih.pallet_id order by rih.seq) = (case when rih.status = 'TERMINATED' then 0 else 1 end) \n then 0 else 1 end) as startflag\n from reduced_inventory_histories rih\n inner join inventories inv on inv.domain_id =rih.domain_id and inv.pallet_id =rih.pallet_id \n left join arrival_notices an on an.id = rih.ref_order_id::uuid and an.domain_id =rih.domain_id \n left join goods_receival_notes grn on grn.arrival_notice_id = an.id\n left join release_goods rg on rg.id = rih.ref_order_id::uuid and rg.domain_id =rih.domain_id \n left join order_inventories oi on oi.release_good_id = rih.ref_order_id::uuid and oi.inventory_id = inv.id\n left join delivery_orders do2 on do2.id = oi.delivery_order_id\n where ((rih.transaction_type <> 'PUTAWAY' and rih.transaction_type <> 'ADJUSTMENT' and rih.transaction_type <> 'RELOCATE') or rih.qty <> 0)\n and rih.domain_id =$1 and rih.bizplace_id = $2\n and coalesce(grn.created_at, rg.created_at, rih.created_at) < $3::timestamp + '1 month' + $4::interval\n )\n `,\n [context.state.domain.id, bizplace.id, month, tzoffset]\n )\n\n await tx.query(`\n create temp table temp_invByPallet as (\n select grp.*, ivh.order_no, ivh.order_ref_no, ivh.do_ref_no from (\n select pallet_id, packing_type, min(created_at) as started_at, max(created_at) as ended_at, min(seq) as min_seq, max(seq) as max_seq, status from (\n select startData.*, sum(startflag) over (partition by pallet_id order by seq) as grp from (\n select * from temp_invHistory s\n ) startData\n ) endData\n group by pallet_id, grp, status, packing_type\n order by pallet_id, min_seq\n ) grp\n inner join temp_invHistory ivh on ivh.pallet_id = grp.pallet_id and ivh.seq = grp.min_seq \n )\n `)\n\n const result: any = await tx.query(` \n select monthDays.created_at, order_no, order_ref_no, do_ref_no,\n coalesce(carton,0) as carton, \n coalesce(bag,0) as bag, \n coalesce(basket,0) as basket, \n coalesce(pallet,0) as pallet,\n sum(carton_running_total + carton) over (order by monthDays.created_at, src.rn) as carton_running_total, \n sum(bag_running_total + bag) over (order by monthDays.created_at, src.rn) as bag_running_total, \n sum(basket_running_total + basket) over (order by monthDays.created_at, src.rn) as basket_running_total, \n sum(pallet_running_total + pallet) over (order by monthDays.created_at, src.rn) as pallet_running_total\n from (select generate_series((date '${month}')::timestamp, date_trunc('month',(date '${month}')::timestamp) + '1 month' - '1 day'::interval, interval '1 day')::date as created_at) monthDays\n left join (\n select 0 as rn, loose.*, pallet.pallet, pallet.pallet_running_total from (\n select (date '${month}')::timestamp as created_at, 'NA' as order_no, 'NA' as order_ref_no, 'NA' as do_ref_no, \n 0 as carton, 0 as bag, 0 as basket,\n coalesce(sum(case when packing_type = 'CARTON' then qty else 0 end),0) as carton_running_total, \n coalesce(sum(case when packing_type = 'BAG' then qty else 0 end),0) as bag_running_total, \n coalesce(sum(case when packing_type = 'BASKET' then qty else 0 end),0) as basket_running_total\n from temp_invHistory\n where created_at < (date '${month}')::timestamp and qty <> 0\n ) loose\n left join (\n select (date '${month}')::timestamp as created_at,\n 0 as pallet,\n coalesce(sum(case when status = 'STORED' then 1 else -1 end),0) as pallet_running_total\n from temp_invByPallet ivp\n where started_at < (date '${month}')::timestamp\n ) pallet on pallet.created_at = loose.created_at\n union\n select row_number() over (order by loose.created_at) as rn,\n loose.*, pallet.pallet, pallet.pallet_running_total from (\n select MIN(created_at) as created_at, order_no, order_ref_no, do_ref_no,\n sum(case when packing_type = 'CARTON' then qty else 0 end) as carton, \n sum(case when packing_type = 'BAG' then qty else 0 end) as bag, \n sum(case when packing_type = 'BASKET' then qty else 0 end) as basket,\n 0 as carton_running_total, 0 as bag_running_total, 0 as basket_running_total\n from \n (\n SELECT pallet_id, packing_type, created_at, order_no, order_ref_no, do_ref_no, min(qty) AS qty FROM temp_invHistory \n where created_at >= (date '${month}')::timestamp and qty <> 0\n group by pallet_id, packing_type, created_at, order_no, order_ref_no, do_ref_no\n order by pallet_id, created_at, order_no, order_ref_no, do_ref_no\n ) foo\n group by created_at, order_no, order_ref_no, do_ref_no\n ) loose\n left join (\n select MIN(started_at) as created_at, order_no, order_ref_no, do_ref_no,\n sum(case when status = 'STORED' then 1 else -1 end) as pallet, \n 0 as pallet_running_total\n from temp_invByPallet ivp\n where started_at >= (date '${month}')::timestamp\n group by started_at::date, order_no, order_ref_no, do_ref_no\n ) pallet on pallet.created_at::date = loose.created_at::date and pallet.order_no = loose.order_no\n order by rn\n ) as src on src.created_at::date = monthDays.created_at::date \n order by monthDays.created_at, src.rn\n `)\n\n tx.query(`\n drop table temp_invHistory, temp_invByPallet\n `)\n\n let items = result.map(itm => {\n return {\n bag: itm.bag,\n bizplace: bizplace,\n bagRunningTotal: itm.bag_running_total,\n basket: itm.basket,\n basketRunningTotal: itm.basket_running_total,\n carton: itm.carton,\n cartonRunningTotal: itm.carton_running_total,\n createdAt: itm.created_at,\n doRefNo: itm.do_ref_no,\n orderNo: itm.order_no,\n orderRefNo: itm.order_ref_no,\n pallet: itm.pallet,\n palletRunningTotal: itm.pallet_running_total\n }\n })\n\n return { items, total: items.length }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const elcclInventoryHistoryPalletDetailReport: {
3
+ elcclInventoryHistoryPalletDetailReport(_: any, params: ListParam, context: ResolverContext): Promise<any>;
4
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"elccl-inventory-history-pallet-detail-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,iDAAgE;AAEnD,QAAA,uCAAuC,GAAG;IACrD,KAAK,CAAC,uCAAuC,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAC/F,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAE5B,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YAE1E,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YACpE,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAEhE,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;gBAAE,MAAM,eAAe,CAAA;YAElE,IAAI,aAAa,GAAG,EAAE,CAAA;YACtB,IAAI,cAAc,EAAE;gBAClB,MAAM,QAAQ,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;oBACjE,EAAE,EAAE,cAAc,CAAC,KAAK;iBACzB,CAAC,CAAA;gBAEF,IAAI,QAAQ,EAAE;oBACZ,aAAa,GAAG,wBAAwB,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAA;iBAC7D;qBAAM;oBACL,MAAM,eAAe,CAAA;iBACtB;aACF;YAED,MAAM,EAAE,CAAC,KAAK,CACZ;;;;;;;;;;;;;;;;;YAiBI,aAAa;;UAEf,EACF,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAC1B,CAAA;YAED,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;;;;;OAcd,CAAC,CAAA;YAEF,MAAM,MAAM,GAAQ,MAAM,EAAE,CAAC,KAAK,CAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCD,EACC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAC/B,CAAA;YAED,MAAM,EAAE,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAA;YAEjE,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5B,OAAO;oBACL,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE;oBACtC,QAAQ,EAAE,IAAI,CAAC,SAAS;oBACxB,OAAO,EAAE,IAAI,CAAC,QAAQ;oBACtB,cAAc,EAAE,IAAI,CAAC,eAAe;oBACpC,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,cAAc,EAAE,IAAI,CAAC,eAAe;oBACpC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;oBACzC,aAAa,EAAE,IAAI,CAAC,cAAc;iBACnC,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,KAAK,CAAA;SACb;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\n\nexport const elcclInventoryHistoryPalletDetailReport = {\n async elcclInventoryHistoryPalletDetailReport(_: 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 let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n let bizplaceQuery = ''\n if (bizplaceFilter) {\n const bizplace: Bizplace = await getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n if (bizplace) {\n bizplaceQuery = \"AND i2.bizplace_id = '\" + bizplace.id + \"'\"\n } else {\n throw 'Invalid input'\n }\n }\n\n await tx.query(\n `\n CREATE TEMP TABLE invHistory as (\n select COALESCE(js.name, ar.name, 'NEW') as job_sheet,\n COALESCE(js.container_size, '') as container_size,\n i2.batch_id,\n bzp.name as bizplace_name,\n coalesce(plt.name, i2.pallet_id) as pallet_id, ih.seq, ih.status, ih.transaction_type, i2.product_id, \n ih.id as inventory_history_id, ih.packing_type, ih.qty, ih.opening_qty,\n ih.uom_value, ih.opening_uom_value, ih.created_at\n from inventories i2 \n inner join reduced_inventory_histories ih on ih.pallet_id = i2.pallet_id and ih.domain_id = $1\n inner join bizplaces bzp on bzp.id = ih.bizplace_id\n left join order_inventories oi on oi.inventory_id = i2.id and oi.arrival_notice_id is not null\n left join arrival_notices ar on ar.id = oi.arrival_notice_id\n left join job_sheets js on js.arrival_notice_ref_no = ar.name\n left join pallets plt on plt.id = i2.reusable_pallet_id\n where i2.domain_id = $1\n ${bizplaceQuery}\n and i2.ref_inventory_id is null\n )`,\n [context.state.domain.id]\n )\n\n await tx.query(`\n CREATE TEMP TABLE inventoryHistoryMovement AS (\n select bizplace_name, container_size, pallet_id, seq, status, transaction_type, batch_id,\n inventory_history_id, packing_type, qty, opening_qty, uom_value, opening_uom_value, created_at, job_sheet from (\n select row_number() over(partition by job_sheet, pallet_id order by created_at asc) as rn, * from invHistory where \n status = 'STORED' and (transaction_type = 'NEW' or transaction_type = 'CANCEL_ORDER' or transaction_type = 'RETURN' or transaction_type = 'PUTAWAY')\n )as invIn where rn = 1\n union all\n select bizplace_name, container_size, pallet_id, seq, status, transaction_type, batch_id,\n inventory_history_id, packing_type, qty, opening_qty, uom_value, opening_uom_value, created_at, job_sheet from (\n select row_number() over(partition by job_sheet, pallet_id order by created_at desc) as rn, * from invHistory ih1\n where (ih1.status = 'TERMINATED')\n ) as invOut where rn = 1 and invOut.transaction_type <> 'RETURN'\n );\n `)\n\n const result: any = await tx.query(\n ` \n with inventoryHistoriesByPallet as (\n select invHistory.bizplace_name, invHistory.container_size, invHistory.job_sheet, invHistory.batch_id,\n SUM(case when invHistory.created_at < $1 then \n case when invHistory.status = 'STORED' then 1 else -1 end\n else 0 end) as opening_balance,\n SUM(case when invHistory.created_at >= $1 \n and invHistory.created_at <= $2 then \n case when invHistory.status = 'STORED' then 1 else 0 end\n else 0 end) as in_balance,\n SUM(case when invHistory.created_at >= $1 \n and invHistory.created_at <= $2 then \n case when invHistory.status = 'TERMINATED' then 1 else 0 end\n else 0 end) as out_balance\n from(\n select * from inventoryHistoryMovement\n ) as invHistory group by bizplace_name, container_size, job_sheet, batch_id\n )\n select invh.*, invh.opening_balance + invh.in_balance - invh.out_balance as closing_balance \n , (\n select json_agg(json_build_object('created_at', created_at, 'in_balance', in_balance, 'out_balance', out_balance)) as jsonData from \n (\n select bizplace_name, batch_id, job_sheet, created_at::date,\n SUM(case when status = 'STORED' then 1 else 0 end) as in_balance,\n SUM(case when status = 'TERMINATED' then 1 else 0 end) as out_balance\n from inventoryHistoryMovement\n where created_at >= $1 and \n created_at <= $2 and \n bizplace_name = invh.bizplace_name and\n batch_id = invh.batch_id and job_sheet = invh.job_sheet\n group by bizplace_name, batch_id, job_sheet, created_at::date\n order by created_at\n ) \n as t\n )::varchar as json_date_movement\n from inventoryHistoriesByPallet invh\n where (invh.opening_balance > 0\n or invh.in_balance > 0\n or invh.out_balance > 0)\n order by invh.bizplace_name, invh.batch_id;\n `,\n [fromDate.value, toDate.value]\n )\n\n await tx.query(`drop table inventoryHistoryMovement, invHistory`)\n\n let items = result.map(item => {\n return {\n bizplace: { name: item.bizplace_name },\n jobSheet: item.job_sheet,\n batchId: item.batch_id,\n openingBalance: item.opening_balance,\n inBalance: item.in_balance,\n outBalance: item.out_balance,\n closingBalance: item.closing_balance,\n jsonDateMovement: item.json_date_movement,\n containerSize: item.container_size\n }\n })\n\n return items\n } catch (error) {\n throw error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"elccl-inventory-history-pallet-detail-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,iDAAgE;AAEnD,QAAA,uCAAuC,GAAG;IACrD,KAAK,CAAC,uCAAuC,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAC/F,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAE5B,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YAE1E,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YACpE,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAEhE,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;gBAAE,MAAM,eAAe,CAAA;YAElE,IAAI,aAAa,GAAG,EAAE,CAAA;YACtB,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,QAAQ,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;oBACjE,EAAE,EAAE,cAAc,CAAC,KAAK;iBACzB,CAAC,CAAA;gBAEF,IAAI,QAAQ,EAAE,CAAC;oBACb,aAAa,GAAG,wBAAwB,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAA;gBAC9D,CAAC;qBAAM,CAAC;oBACN,MAAM,eAAe,CAAA;gBACvB,CAAC;YACH,CAAC;YAED,MAAM,EAAE,CAAC,KAAK,CACZ;;;;;;;;;;;;;;;;;YAiBI,aAAa;;UAEf,EACF,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAC1B,CAAA;YAED,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;;;;;OAcd,CAAC,CAAA;YAEF,MAAM,MAAM,GAAQ,MAAM,EAAE,CAAC,KAAK,CAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCD,EACC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAC/B,CAAA;YAED,MAAM,EAAE,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAA;YAEjE,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5B,OAAO;oBACL,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE;oBACtC,QAAQ,EAAE,IAAI,CAAC,SAAS;oBACxB,OAAO,EAAE,IAAI,CAAC,QAAQ;oBACtB,cAAc,EAAE,IAAI,CAAC,eAAe;oBACpC,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,cAAc,EAAE,IAAI,CAAC,eAAe;oBACpC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;oBACzC,aAAa,EAAE,IAAI,CAAC,cAAc;iBACnC,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\n\nexport const elcclInventoryHistoryPalletDetailReport = {\n async elcclInventoryHistoryPalletDetailReport(_: 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 let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n let bizplaceQuery = ''\n if (bizplaceFilter) {\n const bizplace: Bizplace = await getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n if (bizplace) {\n bizplaceQuery = \"AND i2.bizplace_id = '\" + bizplace.id + \"'\"\n } else {\n throw 'Invalid input'\n }\n }\n\n await tx.query(\n `\n CREATE TEMP TABLE invHistory as (\n select COALESCE(js.name, ar.name, 'NEW') as job_sheet,\n COALESCE(js.container_size, '') as container_size,\n i2.batch_id,\n bzp.name as bizplace_name,\n coalesce(plt.name, i2.pallet_id) as pallet_id, ih.seq, ih.status, ih.transaction_type, i2.product_id, \n ih.id as inventory_history_id, ih.packing_type, ih.qty, ih.opening_qty,\n ih.uom_value, ih.opening_uom_value, ih.created_at\n from inventories i2 \n inner join reduced_inventory_histories ih on ih.pallet_id = i2.pallet_id and ih.domain_id = $1\n inner join bizplaces bzp on bzp.id = ih.bizplace_id\n left join order_inventories oi on oi.inventory_id = i2.id and oi.arrival_notice_id is not null\n left join arrival_notices ar on ar.id = oi.arrival_notice_id\n left join job_sheets js on js.arrival_notice_ref_no = ar.name\n left join pallets plt on plt.id = i2.reusable_pallet_id\n where i2.domain_id = $1\n ${bizplaceQuery}\n and i2.ref_inventory_id is null\n )`,\n [context.state.domain.id]\n )\n\n await tx.query(`\n CREATE TEMP TABLE inventoryHistoryMovement AS (\n select bizplace_name, container_size, pallet_id, seq, status, transaction_type, batch_id,\n inventory_history_id, packing_type, qty, opening_qty, uom_value, opening_uom_value, created_at, job_sheet from (\n select row_number() over(partition by job_sheet, pallet_id order by created_at asc) as rn, * from invHistory where \n status = 'STORED' and (transaction_type = 'NEW' or transaction_type = 'CANCEL_ORDER' or transaction_type = 'RETURN' or transaction_type = 'PUTAWAY')\n )as invIn where rn = 1\n union all\n select bizplace_name, container_size, pallet_id, seq, status, transaction_type, batch_id,\n inventory_history_id, packing_type, qty, opening_qty, uom_value, opening_uom_value, created_at, job_sheet from (\n select row_number() over(partition by job_sheet, pallet_id order by created_at desc) as rn, * from invHistory ih1\n where (ih1.status = 'TERMINATED')\n ) as invOut where rn = 1 and invOut.transaction_type <> 'RETURN'\n );\n `)\n\n const result: any = await tx.query(\n ` \n with inventoryHistoriesByPallet as (\n select invHistory.bizplace_name, invHistory.container_size, invHistory.job_sheet, invHistory.batch_id,\n SUM(case when invHistory.created_at < $1 then \n case when invHistory.status = 'STORED' then 1 else -1 end\n else 0 end) as opening_balance,\n SUM(case when invHistory.created_at >= $1 \n and invHistory.created_at <= $2 then \n case when invHistory.status = 'STORED' then 1 else 0 end\n else 0 end) as in_balance,\n SUM(case when invHistory.created_at >= $1 \n and invHistory.created_at <= $2 then \n case when invHistory.status = 'TERMINATED' then 1 else 0 end\n else 0 end) as out_balance\n from(\n select * from inventoryHistoryMovement\n ) as invHistory group by bizplace_name, container_size, job_sheet, batch_id\n )\n select invh.*, invh.opening_balance + invh.in_balance - invh.out_balance as closing_balance \n , (\n select json_agg(json_build_object('created_at', created_at, 'in_balance', in_balance, 'out_balance', out_balance)) as jsonData from \n (\n select bizplace_name, batch_id, job_sheet, created_at::date,\n SUM(case when status = 'STORED' then 1 else 0 end) as in_balance,\n SUM(case when status = 'TERMINATED' then 1 else 0 end) as out_balance\n from inventoryHistoryMovement\n where created_at >= $1 and \n created_at <= $2 and \n bizplace_name = invh.bizplace_name and\n batch_id = invh.batch_id and job_sheet = invh.job_sheet\n group by bizplace_name, batch_id, job_sheet, created_at::date\n order by created_at\n ) \n as t\n )::varchar as json_date_movement\n from inventoryHistoriesByPallet invh\n where (invh.opening_balance > 0\n or invh.in_balance > 0\n or invh.out_balance > 0)\n order by invh.bizplace_name, invh.batch_id;\n `,\n [fromDate.value, toDate.value]\n )\n\n await tx.query(`drop table inventoryHistoryMovement, invHistory`)\n\n let items = result.map(item => {\n return {\n bizplace: { name: item.bizplace_name },\n jobSheet: item.job_sheet,\n batchId: item.batch_id,\n openingBalance: item.opening_balance,\n inBalance: item.in_balance,\n outBalance: item.out_balance,\n closingBalance: item.closing_balance,\n jsonDateMovement: item.json_date_movement,\n containerSize: item.container_size\n }\n })\n\n return items\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const elcclInventoryHistoryReport: {
3
+ elcclInventoryHistoryReport(_: any, params: ListParam, context: ResolverContext): Promise<any>;
4
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"elccl-inventory-history-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const elcclInventoryHistoryReport = {\n async elcclInventoryHistoryReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n // const convertedParams = convertListParams(params)\n const { tx } = context.state\n\n let bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let batchNo = params.filters.find(data => data.name === 'batch_no')\n let product = params.filters.find(data => data.name === 'product')\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n let batchNoQuery = ''\n if (batchNo) {\n batchNoQuery =\n 'AND Lower(invh.batch_id) LIKE ANY(ARRAY[' +\n batchNo.value\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',') +\n '])'\n }\n\n let productQuery = ''\n if (product) {\n let productValue = product.value\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n productQuery = `AND (\n Lower(prd.name) LIKE ANY(ARRAY[${productValue}])\n OR Lower(prd.sku) LIKE ANY(ARRAY[${productValue}])\n OR Lower(prd.description) LIKE ANY(ARRAY[${productValue}])\n )`\n }\n\n await tx.query(\n `\n create temp table temp_data_src AS\n (\n SELECT prd.sku AS product_sku, prd.name AS product_name, prd.description AS product_description, trim(invh.batch_id) as batch_id, invh.product_id,\n invh.packing_type, invh.bizplace_id, invh.domain_id,\n invh.ref_order_id, invh.order_no, invh.order_ref_no, invh.transaction_type, invh.created_at,\n invh.qty, invh.opening_qty, invh.uom_value, invh.opening_uom_value\n FROM reduced_inventory_histories invh\n INNER JOIN products prd ON prd.id = invh.product_id\n WHERE invh.domain_id = $1\n AND invh.bizplace_id = $2\n AND invh.created_at <= $3\n ${batchNoQuery}\n ${productQuery}\n ) \n `,\n [context.state.domain.id, bizplace.id, toDate.value]\n )\n\n await tx.query(\n `\n create temp table temp_inv_history as (\n SELECT src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, \n src.bizplace_id, src.domain_id,\n SUM(COALESCE(invh.qty,0)) AS qty,\n 0 AS opening_qty,\n SUM(COALESCE(invh.uom_value,0)) AS uom_value,\n 0 AS opening_uom_value,\n 'Opening Balance' AS order_name,\n '-' AS ref_no,\n 0 AS rn,\n $1 AS created_at\n FROM (\n SELECT src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id, \n src.domain_id\n FROM temp_data_src src\n GROUP BY src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id, \n src.domain_id\n ) AS src \n LEFT JOIN inventory_histories invh ON src.batch_id = trim(invh.batch_id) AND \n src.product_id = invh.product_id AND \n src.packing_type = invh.packing_type AND \n src.bizplace_id = invh.bizplace_id AND \n src.domain_id = invh.domain_id AND\n invh.created_at < $1::timestamp AND\n invh.transaction_type IN ('NEW', 'ADJUSTMENT', 'UNLOADING', 'PICKING', 'LOADING', 'UNDO_UNLOADING', 'CANCEL_ORDER', 'RETURN')\n GROUP BY src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id, \n src.domain_id\n UNION ALL\n SELECT product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id, \n domain_id, sum(qty) as qty, sum(opening_qty) as opening_qty, sum(uom_value) as uom_value, sum(opening_uom_value) as opening_uom_value, order_name, ref_no, rn, MIN(created_at) as created_at\n FROM (\n SELECT invh.product_sku, invh.product_name, invh.product_description, invh.batch_id, invh.product_id, invh.packing_type, invh.bizplace_id, \n invh.domain_id,\n invh.qty, invh.opening_qty,\tinvh.uom_value, invh.opening_uom_value,\n CASE WHEN invh.transaction_type = 'ADJUSTMENT' THEN 'ADJUSTMENT'\n WHEN invh.transaction_type = 'NEW' THEN 'NEW'\n ELSE COALESCE(order_no, '-') END AS order_name,\n CASE WHEN invh.transaction_type = 'ADJUSTMENT' THEN 'ADJUSTMENT' \n WHEN invh.transaction_type = 'NEW' THEN 'NEW'\n ELSE COALESCE(order_ref_no, '-') END AS ref_no,\n 1 AS rn, invh.created_at\n FROM temp_data_src invh\n LEFT JOIN arrival_notices arrNo ON cast(arrNo.id AS VARCHAR) = invh.ref_order_id AND (invh.transaction_type = 'UNLOADING' OR \n invh.transaction_type = 'UNDO_UNLOADING')\n LEFT JOIN worksheets wks ON cast(wks.id AS VARCHAR) = invh.ref_order_id AND invh.transaction_type = 'PICKING'\n LEFT JOIN release_goods rel ON cast(rel.id AS VARCHAR) = cast(wks.release_good_id AS VARCHAR) AND \n invh.transaction_type = 'PICKING'\n WHERE (invh.qty <> 0 OR invh.uom_value <> 0)\n AND invh.created_at BETWEEN $1::timestamp AND $2::timestamp\n ) AS inv_movement \n GROUP BY product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id, \n domain_id, order_name, ref_no, rn\n )`,\n [fromDate.value, toDate.value]\n )\n\n const result: any = await tx.query(\n ` \n select product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id, \n domain_id, qty, opening_qty, uom_value, opening_uom_value, order_name, ref_no, created_at::date\n from temp_inv_history invh where\n exists (\n select * from (\n select batch_id, product_name, packing_type, sum(qty) as totalQty, count(*) as totalRow from temp_inv_history ih2 group by batch_id, product_name, packing_type\n ) src where src.batch_id = invh.batch_id and src.product_name = invh.product_name and src.packing_type = invh.packing_type and (src.totalRow > 1 or src.totalQty <> 0)\n )\n ORDER BY invh.batch_id asc, invh.product_name asc, invh.product_description asc, invh.packing_type asc, invh.rn asc, invh.created_at asc\n `\n )\n\n tx.query(\n `\n drop table temp_data_src, temp_inv_history\n `\n )\n\n let items = result.map(itm => {\n return {\n batchId: itm.batch_id,\n packingType: itm.packing_type,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description\n },\n refNo: itm.ref_no,\n qty: itm.qty,\n uomValue: itm.uom_value,\n openingQty: itm.opening_qty,\n openingUomValue: itm.opening_uom_value,\n orderNo: itm.order_name,\n createdAt: itm.created_at\n }\n })\n\n return items\n } catch (error) {\n throw error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"elccl-inventory-history-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const elcclInventoryHistoryReport = {\n async elcclInventoryHistoryReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n // const convertedParams = convertListParams(params)\n const { tx } = context.state\n\n let bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let batchNo = params.filters.find(data => data.name === 'batch_no')\n let product = params.filters.find(data => data.name === 'product')\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n let batchNoQuery = ''\n if (batchNo) {\n batchNoQuery =\n 'AND Lower(invh.batch_id) LIKE ANY(ARRAY[' +\n batchNo.value\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',') +\n '])'\n }\n\n let productQuery = ''\n if (product) {\n let productValue = product.value\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n productQuery = `AND (\n Lower(prd.name) LIKE ANY(ARRAY[${productValue}])\n OR Lower(prd.sku) LIKE ANY(ARRAY[${productValue}])\n OR Lower(prd.description) LIKE ANY(ARRAY[${productValue}])\n )`\n }\n\n await tx.query(\n `\n create temp table temp_data_src AS\n (\n SELECT prd.sku AS product_sku, prd.name AS product_name, prd.description AS product_description, trim(invh.batch_id) as batch_id, invh.product_id,\n invh.packing_type, invh.bizplace_id, invh.domain_id,\n invh.ref_order_id, invh.order_no, invh.order_ref_no, invh.transaction_type, invh.created_at,\n invh.qty, invh.opening_qty, invh.uom_value, invh.opening_uom_value\n FROM reduced_inventory_histories invh\n INNER JOIN products prd ON prd.id = invh.product_id\n WHERE invh.domain_id = $1\n AND invh.bizplace_id = $2\n AND invh.created_at <= $3\n ${batchNoQuery}\n ${productQuery}\n ) \n `,\n [context.state.domain.id, bizplace.id, toDate.value]\n )\n\n await tx.query(\n `\n create temp table temp_inv_history as (\n SELECT src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, \n src.bizplace_id, src.domain_id,\n SUM(COALESCE(invh.qty,0)) AS qty,\n 0 AS opening_qty,\n SUM(COALESCE(invh.uom_value,0)) AS uom_value,\n 0 AS opening_uom_value,\n 'Opening Balance' AS order_name,\n '-' AS ref_no,\n 0 AS rn,\n $1 AS created_at\n FROM (\n SELECT src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id, \n src.domain_id\n FROM temp_data_src src\n GROUP BY src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id, \n src.domain_id\n ) AS src \n LEFT JOIN inventory_histories invh ON src.batch_id = trim(invh.batch_id) AND \n src.product_id = invh.product_id AND \n src.packing_type = invh.packing_type AND \n src.bizplace_id = invh.bizplace_id AND \n src.domain_id = invh.domain_id AND\n invh.created_at < $1::timestamp AND\n invh.transaction_type IN ('NEW', 'ADJUSTMENT', 'UNLOADING', 'PICKING', 'LOADING', 'UNDO_UNLOADING', 'CANCEL_ORDER', 'RETURN')\n GROUP BY src.product_sku, src.product_name, src.product_description, src.batch_id, src.product_id, src.packing_type, src.bizplace_id, \n src.domain_id\n UNION ALL\n SELECT product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id, \n domain_id, sum(qty) as qty, sum(opening_qty) as opening_qty, sum(uom_value) as uom_value, sum(opening_uom_value) as opening_uom_value, order_name, ref_no, rn, MIN(created_at) as created_at\n FROM (\n SELECT invh.product_sku, invh.product_name, invh.product_description, invh.batch_id, invh.product_id, invh.packing_type, invh.bizplace_id, \n invh.domain_id,\n invh.qty, invh.opening_qty,\tinvh.uom_value, invh.opening_uom_value,\n CASE WHEN invh.transaction_type = 'ADJUSTMENT' THEN 'ADJUSTMENT'\n WHEN invh.transaction_type = 'NEW' THEN 'NEW'\n ELSE COALESCE(order_no, '-') END AS order_name,\n CASE WHEN invh.transaction_type = 'ADJUSTMENT' THEN 'ADJUSTMENT' \n WHEN invh.transaction_type = 'NEW' THEN 'NEW'\n ELSE COALESCE(order_ref_no, '-') END AS ref_no,\n 1 AS rn, invh.created_at\n FROM temp_data_src invh\n LEFT JOIN arrival_notices arrNo ON cast(arrNo.id AS VARCHAR) = invh.ref_order_id AND (invh.transaction_type = 'UNLOADING' OR \n invh.transaction_type = 'UNDO_UNLOADING')\n LEFT JOIN worksheets wks ON cast(wks.id AS VARCHAR) = invh.ref_order_id AND invh.transaction_type = 'PICKING'\n LEFT JOIN release_goods rel ON cast(rel.id AS VARCHAR) = cast(wks.release_good_id AS VARCHAR) AND \n invh.transaction_type = 'PICKING'\n WHERE (invh.qty <> 0 OR invh.uom_value <> 0)\n AND invh.created_at BETWEEN $1::timestamp AND $2::timestamp\n ) AS inv_movement \n GROUP BY product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id, \n domain_id, order_name, ref_no, rn\n )`,\n [fromDate.value, toDate.value]\n )\n\n const result: any = await tx.query(\n ` \n select product_sku, product_name, product_description, batch_id, product_id, packing_type, bizplace_id, \n domain_id, qty, opening_qty, uom_value, opening_uom_value, order_name, ref_no, created_at::date\n from temp_inv_history invh where\n exists (\n select * from (\n select batch_id, product_name, packing_type, sum(qty) as totalQty, count(*) as totalRow from temp_inv_history ih2 group by batch_id, product_name, packing_type\n ) src where src.batch_id = invh.batch_id and src.product_name = invh.product_name and src.packing_type = invh.packing_type and (src.totalRow > 1 or src.totalQty <> 0)\n )\n ORDER BY invh.batch_id asc, invh.product_name asc, invh.product_description asc, invh.packing_type asc, invh.rn asc, invh.created_at asc\n `\n )\n\n tx.query(\n `\n drop table temp_data_src, temp_inv_history\n `\n )\n\n let items = result.map(itm => {\n return {\n batchId: itm.batch_id,\n packingType: itm.packing_type,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description\n },\n refNo: itm.ref_no,\n qty: itm.qty,\n uomValue: itm.uom_value,\n openingQty: itm.opening_qty,\n openingUomValue: itm.opening_uom_value,\n orderNo: itm.order_name,\n createdAt: itm.created_at\n }\n })\n\n return items\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const elcclInventoryHistorySummaryReport: {
3
+ elcclInventoryHistorySummaryReport(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ items: any;
5
+ total: any;
6
+ }>;
7
+ };
8
+ export declare function inventoryHistorySummaryReportQuery(_: any, params: ListParam, context: ResolverContext): Promise<void>;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.inventoryHistorySummaryReportQuery = exports.elcclInventoryHistorySummaryReport = void 0;
3
+ exports.elcclInventoryHistorySummaryReport = void 0;
4
+ exports.inventoryHistorySummaryReportQuery = inventoryHistorySummaryReportQuery;
4
5
  const biz_base_1 = require("@things-factory/biz-base");
5
6
  const shell_1 = require("@things-factory/shell");
6
7
  exports.elcclInventoryHistorySummaryReport = {
@@ -86,5 +87,4 @@ async function inventoryHistorySummaryReportQuery(_, params, context) {
86
87
  throw error;
87
88
  }
88
89
  }
89
- exports.inventoryHistorySummaryReportQuery = inventoryHistorySummaryReportQuery;
90
90
  //# sourceMappingURL=elccl-inventory-history-summary-report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"elccl-inventory-history-summary-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\n\nexport const elcclInventoryHistorySummaryReport = {\n async elcclInventoryHistorySummaryReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n\n await inventoryHistorySummaryReportQuery(_, params, context)\n\n const total: any = await tx.query(`select count(*) from temp_inventory_summary`)\n\n const result: any = await tx.query(\n ` \n select * from temp_inventory_summary ORDER BY initial_date OFFSET $1 LIMIT $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n let items = result.map(itm => {\n return {\n ...itm,\n batchId: itm.batch_id,\n packingType: itm.packing_type,\n openingQty: itm.opening_qty,\n adjustmentQty: itm.adjustment_qty,\n closingQty: itm.closing_qty,\n totalInQty: itm.total_in_qty,\n totalOutQty: itm.total_out_qty,\n totalReturnQty: itm.total_return_qty,\n initialQty: itm.initial_qty,\n initialDate: itm.initial_date,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description\n }\n }\n })\n\n return { items, total: total[0].count }\n } catch (error) {\n throw error\n }\n }\n}\n\nexport async function inventoryHistorySummaryReportQuery(\n _: any,\n params: ListParam,\n context: ResolverContext\n): Promise<void> {\n try {\n const { tx } = context.state\n\n let balanceOnlyFilter = params.filters.find(data => data.name === 'balanceOnly')\n\n let bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n let balanceOnlyQuery = ''\n if (balanceOnlyFilter && balanceOnlyFilter.value) {\n balanceOnlyQuery = 'and (opening_qty + adjustment_qty + total_in_qty + total_out_qty + total_return_qty) > 0 '\n }\n\n await tx.query(\n `\n create temp table temp_inv_history on commit drop as (\n select i2.pallet_id, ih.product_id::uuid, ih.packing_type, ih.batch_id,\n ih.id as inventory_history_id, ih.seq, ih.status, ih.transaction_type, ih.qty, ih.opening_qty, ih.created_at,\n ih.ref_order_id::uuid as ref_order_id\n from inventories i2\n inner join reduced_inventory_histories ih on ih.pallet_id = i2.pallet_id and ih.domain_id = i2.domain_id\n where\n i2.domain_id = $1\n and i2.bizplace_id = $2\n and ih.created_at <= $3\n )\n `,\n [context.state.domain.id, bizplace.id, toDate.value]\n )\n\n await tx.query(\n `\n create temp table temp_inventory_summary on commit drop as (\n select src.*,\n opening_qty + adjustment_qty + total_in_qty + total_out_qty + total_return_qty as closing_qty,\n prd.name as product_name, prd.sku as product_sku, prd.description as product_description \n from (\n select ih.batch_id, ih.packing_type,\n min(ih.created_at) as initial_date,\n sum(case when (ih.transaction_type = 'UNLOADING' or ih.transaction_type = 'NEW') and rtn.id is null then qty else 0 end) as initial_qty,\n sum(case when ih.created_at > $1 and ih.transaction_type = 'ADJUSTMENT' then ih.qty else 0 end) as adjustment_qty,\n sum(case when ih.created_at < $1 then ih.qty else 0 end) as opening_qty,\n sum(case when ih.created_at > $1 then case when ih.qty > 0 and ih.transaction_type <> 'ADJUSTMENT' and ih.transaction_type <> 'RETURN' and rtn.id is null then ih.qty else 0 end else 0 end) as total_in_qty,\n sum(case when ih.created_at > $1 then case when (ih.qty < 0 and ih.transaction_type <> 'ADJUSTMENT') or ih.transaction_type = 'RETURN' then ih.qty else 0 end else 0 end) as total_out_qty,\n ih.product_id,\n sum(case when rtn.id is not null and ih.transaction_type <> 'ADJUSTMENT' and ih.created_at > $1 then qty else 0 end) as total_return_qty\n from temp_inv_history ih\n left join return_orders rtn on rtn.id = ih.ref_order_id\n group by ih.batch_id, ih.product_id, ih.packing_type\n order by batch_id\n ) src\n inner join products prd on prd.id = src.product_id\n where (opening_qty > 0 or total_in_qty > 0 or adjustment_qty > 0)\n ${balanceOnlyQuery}\n )\n `,\n [fromDate.value]\n )\n } catch (error) {\n throw error\n }\n}\n"]}
1
+ {"version":3,"file":"elccl-inventory-history-summary-report.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\n\nexport const elcclInventoryHistorySummaryReport = {\n async elcclInventoryHistorySummaryReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n\n await inventoryHistorySummaryReportQuery(_, params, context)\n\n const total: any = await tx.query(`select count(*) from temp_inventory_summary`)\n\n const result: any = await tx.query(\n ` \n select * from temp_inventory_summary ORDER BY initial_date OFFSET $1 LIMIT $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n let items = result.map(itm => {\n return {\n ...itm,\n batchId: itm.batch_id,\n packingType: itm.packing_type,\n openingQty: itm.opening_qty,\n adjustmentQty: itm.adjustment_qty,\n closingQty: itm.closing_qty,\n totalInQty: itm.total_in_qty,\n totalOutQty: itm.total_out_qty,\n totalReturnQty: itm.total_return_qty,\n initialQty: itm.initial_qty,\n initialDate: itm.initial_date,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description\n }\n }\n })\n\n return { items, total: total[0].count }\n } catch (error) {\n throw error\n }\n }\n}\n\nexport async function inventoryHistorySummaryReportQuery(\n _: any,\n params: ListParam,\n context: ResolverContext\n): Promise<void> {\n try {\n const { tx } = context.state\n\n let balanceOnlyFilter = params.filters.find(data => data.name === 'balanceOnly')\n\n let bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n let balanceOnlyQuery = ''\n if (balanceOnlyFilter && balanceOnlyFilter.value) {\n balanceOnlyQuery = 'and (opening_qty + adjustment_qty + total_in_qty + total_out_qty + total_return_qty) > 0 '\n }\n\n await tx.query(\n `\n create temp table temp_inv_history on commit drop as (\n select i2.pallet_id, ih.product_id::uuid, ih.packing_type, ih.batch_id,\n ih.id as inventory_history_id, ih.seq, ih.status, ih.transaction_type, ih.qty, ih.opening_qty, ih.created_at,\n ih.ref_order_id::uuid as ref_order_id\n from inventories i2\n inner join reduced_inventory_histories ih on ih.pallet_id = i2.pallet_id and ih.domain_id = i2.domain_id\n where\n i2.domain_id = $1\n and i2.bizplace_id = $2\n and ih.created_at <= $3\n )\n `,\n [context.state.domain.id, bizplace.id, toDate.value]\n )\n\n await tx.query(\n `\n create temp table temp_inventory_summary on commit drop as (\n select src.*,\n opening_qty + adjustment_qty + total_in_qty + total_out_qty + total_return_qty as closing_qty,\n prd.name as product_name, prd.sku as product_sku, prd.description as product_description \n from (\n select ih.batch_id, ih.packing_type,\n min(ih.created_at) as initial_date,\n sum(case when (ih.transaction_type = 'UNLOADING' or ih.transaction_type = 'NEW') and rtn.id is null then qty else 0 end) as initial_qty,\n sum(case when ih.created_at > $1 and ih.transaction_type = 'ADJUSTMENT' then ih.qty else 0 end) as adjustment_qty,\n sum(case when ih.created_at < $1 then ih.qty else 0 end) as opening_qty,\n sum(case when ih.created_at > $1 then case when ih.qty > 0 and ih.transaction_type <> 'ADJUSTMENT' and ih.transaction_type <> 'RETURN' and rtn.id is null then ih.qty else 0 end else 0 end) as total_in_qty,\n sum(case when ih.created_at > $1 then case when (ih.qty < 0 and ih.transaction_type <> 'ADJUSTMENT') or ih.transaction_type = 'RETURN' then ih.qty else 0 end else 0 end) as total_out_qty,\n ih.product_id,\n sum(case when rtn.id is not null and ih.transaction_type <> 'ADJUSTMENT' and ih.created_at > $1 then qty else 0 end) as total_return_qty\n from temp_inv_history ih\n left join return_orders rtn on rtn.id = ih.ref_order_id\n group by ih.batch_id, ih.product_id, ih.packing_type\n order by batch_id\n ) src\n inner join products prd on prd.id = src.product_id\n where (opening_qty > 0 or total_in_qty > 0 or adjustment_qty > 0)\n ${balanceOnlyQuery}\n )\n `,\n [fromDate.value]\n )\n } catch (error) {\n throw error\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const elcclOnhandInventoryCounterResolver: {
3
+ elcclOnhandInventoryCounter(_: any, params: ListParam, context: ResolverContext): Promise<number>;
4
+ };
@@ -7,6 +7,7 @@ const warehouse_base_1 = require("@things-factory/warehouse-base");
7
7
  exports.elcclOnhandInventoryCounterResolver = {
8
8
  async elcclOnhandInventoryCounter(_, params, context) {
9
9
  let bizplaces = await (0, biz_base_1.getPermittedBizplaceIds)(context.state.domain, context.state.user);
10
+ //@ts-ignore
10
11
  bizplaces = bizplaces
11
12
  .map(bizplace => {
12
13
  return "'" + bizplace.trim() + "'";
@@ -1 +1 @@
1
- {"version":3,"file":"elccl-onhand-inventory-counter.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.ts"],"names":[],"mappings":";;;AAAA,uDAAkE;AAClE,iDAAgE;AAChE,mEAA0D;AAE7C,QAAA,mCAAmC,GAAG;IACjD,KAAK,CAAC,2BAA2B,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QACnF,IAAI,SAAS,GAAG,MAAM,IAAA,kCAAuB,EAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvF,SAAS,GAAG,SAAS;aAClB,GAAG,CAAC,QAAQ,CAAC,EAAE;YACd,OAAO,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,CAAA;QACpC,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAa,EAAC,0BAAS,CAAC,CAAC,KAAK,CAAC;;;;;gCAKxB,SAAS;6BACZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;;;;;gCAMpB,SAAS;6BACZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;;KAG/C,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAEvC,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nexport const elcclOnhandInventoryCounterResolver = {\n async elcclOnhandInventoryCounter(_: any, params: ListParam, context: ResolverContext) {\n let bizplaces = await getPermittedBizplaceIds(context.state.domain, context.state.user)\n bizplaces = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace.trim() + \"'\"\n })\n .join(',')\n\n const result = await getRepository(Inventory).query(`\n select sum(qty) as total from (\n select count(pallet_id) as qty from inventories i2\n where status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and reusable_pallet_id is null\n and bizplace_id in (${bizplaces})\n and domain_id = '${context.state.domain.id}'\n union all\n select count(distinct ref_order_id) as qty from inventories i2\n where status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and reusable_pallet_id notnull\n and ref_order_id notnull\n and bizplace_id in (${bizplaces})\n and domain_id = '${context.state.domain.id}'\n group by reusable_pallet_id\n ) as foo\n `)\n\n const total = parseInt(result[0].total)\n\n return total\n }\n}\n"]}
1
+ {"version":3,"file":"elccl-onhand-inventory-counter.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.ts"],"names":[],"mappings":";;;AAAA,uDAAkE;AAClE,iDAAgE;AAChE,mEAA0D;AAE7C,QAAA,mCAAmC,GAAG;IACjD,KAAK,CAAC,2BAA2B,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QACnF,IAAI,SAAS,GAAG,MAAM,IAAA,kCAAuB,EAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvF,YAAY;QACZ,SAAS,GAAG,SAAS;aAClB,GAAG,CAAC,QAAQ,CAAC,EAAE;YACd,OAAO,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,CAAA;QACpC,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAa,EAAC,0BAAS,CAAC,CAAC,KAAK,CAAC;;;;;gCAKxB,SAAS;6BACZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;;;;;gCAMpB,SAAS;6BACZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;;KAG/C,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAEvC,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nexport const elcclOnhandInventoryCounterResolver = {\n async elcclOnhandInventoryCounter(_: any, params: ListParam, context: ResolverContext) {\n let bizplaces = await getPermittedBizplaceIds(context.state.domain, context.state.user)\n //@ts-ignore\n bizplaces = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace.trim() + \"'\"\n })\n .join(',')\n\n const result = await getRepository(Inventory).query(`\n select sum(qty) as total from (\n select count(pallet_id) as qty from inventories i2\n where status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and reusable_pallet_id is null\n and bizplace_id in (${bizplaces})\n and domain_id = '${context.state.domain.id}'\n union all\n select count(distinct ref_order_id) as qty from inventories i2\n where status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and reusable_pallet_id notnull\n and ref_order_id notnull\n and bizplace_id in (${bizplaces})\n and domain_id = '${context.state.domain.id}'\n group by reusable_pallet_id\n ) as foo\n `)\n\n const total = parseInt(result[0].total)\n\n return total\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare const Query: any;