@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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/index.ts"],"names":[],"mappings":";;;AAAA,qGAA6F;AAC7F,mFAA4E;AAC5E,qFAA8E;AAC9E,iHAAwG;AACxG,qFAAsF;AACtF,6FAAqF;AAExE,QAAA,KAAK,2FACb,2EAAkC,GAClC,0DAA0B,GAC1B,4DAA2B,GAC3B,sFAAuC,GACvC,oEAAmC,GACnC,mEAA8B,EAClC","sourcesContent":["import { elcclInventoryHistorySummaryReport } from './elccl-inventory-history-summary-report'\nimport { elcclDailyCollectionReport } from './elccl-daily-collection-report'\nimport { elcclInventoryHistoryReport } from './elccl-inventory-history-report'\nimport { elcclInventoryHistoryPalletDetailReport } from './elccl-inventory-history-pallet-detail-report'\nimport { elcclOnhandInventoryCounterResolver } from './elccl-onhand-inventory-counter'\nimport { elcclDailyOrderInventoryReport } from './elccl-daily-order-inventory-report'\n\nexport const Query = {\n ...elcclInventoryHistorySummaryReport,\n ...elcclDailyCollectionReport,\n ...elcclInventoryHistoryReport,\n ...elcclInventoryHistoryPalletDetailReport,\n ...elcclOnhandInventoryCounterResolver,\n ...elcclDailyOrderInventoryReport\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/elccl/index.ts"],"names":[],"mappings":";;;AAAA,qGAA6F;AAC7F,mFAA4E;AAC5E,qFAA8E;AAC9E,iHAAwG;AACxG,qFAAsF;AACtF,6FAAqF;AAExE,QAAA,KAAK,GAAG,wFAChB,2EAAkC,GAClC,0DAA0B,GAC1B,4DAA2B,GAC3B,sFAAuC,GACvC,oEAAmC,GACnC,mEAA8B,CAC3B,CAAA","sourcesContent":["import { elcclInventoryHistorySummaryReport } from './elccl-inventory-history-summary-report'\nimport { elcclDailyCollectionReport } from './elccl-daily-collection-report'\nimport { elcclInventoryHistoryReport } from './elccl-inventory-history-report'\nimport { elcclInventoryHistoryPalletDetailReport } from './elccl-inventory-history-pallet-detail-report'\nimport { elcclOnhandInventoryCounterResolver } from './elccl-onhand-inventory-counter'\nimport { elcclDailyOrderInventoryReport } from './elccl-daily-order-inventory-report'\n\nexport const Query = {\n ...elcclInventoryHistorySummaryReport,\n ...elcclDailyCollectionReport,\n ...elcclInventoryHistoryReport,\n ...elcclInventoryHistoryPalletDetailReport,\n ...elcclOnhandInventoryCounterResolver,\n ...elcclDailyOrderInventoryReport\n} as any\n"]}
@@ -0,0 +1 @@
1
+ export declare const Query: any;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/kimeda/index.ts"],"names":[],"mappings":";;;AAAA,uFAAwF;AAE3E,QAAA,KAAK,qBACb,sEAAoC,EACxC","sourcesContent":["import { kimedaOnhandInventoryCounterResolver } from './kimeda-onhand-inventory-counter'\n\nexport const Query = {\n ...kimedaOnhandInventoryCounterResolver\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/kimeda/index.ts"],"names":[],"mappings":";;;AAAA,uFAAwF;AAE3E,QAAA,KAAK,GAAG,kBAChB,sEAAoC,CACjC,CAAA","sourcesContent":["import { kimedaOnhandInventoryCounterResolver } from './kimeda-onhand-inventory-counter'\n\nexport const Query = {\n ...kimedaOnhandInventoryCounterResolver\n} as any\n"]}
@@ -0,0 +1,4 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const kimedaOnhandInventoryCounterResolver: {
3
+ kimedaOnhandInventoryCounter(_: any, params: ListParam, context: ResolverContext): Promise<number>;
4
+ };
@@ -7,6 +7,7 @@ const warehouse_base_1 = require("@things-factory/warehouse-base");
7
7
  exports.kimedaOnhandInventoryCounterResolver = {
8
8
  async kimedaOnhandInventoryCounter(_, 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":"kimeda-onhand-inventory-counter.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.ts"],"names":[],"mappings":";;;AAAA,uDAAkE;AAClE,iDAAgE;AAChE,mEAA0D;AAE7C,QAAA,oCAAoC,GAAG;IAClD,KAAK,CAAC,4BAA4B,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QACpF,IAAI,SAAS,GAAG,MAAM,IAAA,kCAAuB,EAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvF,SAAS,GAAG,SAAS;aAClB,GAAG,CAAC,QAAQ,CAAC,EAAE;YACd,OAAO,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,CAAA;QACpC,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAa,EAAC,0BAAS,CAAC,CAAC,KAAK,CAAC;;;;;;;8BAO1B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;iCACpB,SAAS;;;;;;;;;8BASZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;iCACpB,SAAS;;;;KAIrC,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAEvC,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nexport const kimedaOnhandInventoryCounterResolver = {\n async kimedaOnhandInventoryCounter(_: any, params: ListParam, context: ResolverContext) {\n let bizplaces = await getPermittedBizplaceIds(context.state.domain, context.state.user)\n bizplaces = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace.trim() + \"'\"\n })\n .join(',')\n\n const result = await getRepository(Inventory).query(`\n select sum(qty) as total from (\n select l2.name, count(distinct i2.location_id) as qty, string_agg(i2.pallet_id, ', ')\n from inventories i2\n inner join locations l2 on i2.location_id = l2.id\n and i2.domain_id = l2.domain_id\n where i2.status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and i2.domain_id = '${context.state.domain.id}'\n and i2.bizplace_id in (${bizplaces})\n and l2.type = 'SHELF'\n group by l2.name\n union all\n select l2.name, count(i2.pallet_id) as qty, string_agg(i2.pallet_id, ', ')\n from inventories i2\n inner join locations l2 on i2.location_id = l2.id\n and i2.domain_id = l2.domain_id\n where i2.status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and i2.domain_id = '${context.state.domain.id}'\n and i2.bizplace_id in (${bizplaces})\n and l2.type = 'FLOOR'\n group by l2.name\n ) as foo\n `)\n\n const total = parseInt(result[0].total)\n\n return total\n }\n}\n"]}
1
+ {"version":3,"file":"kimeda-onhand-inventory-counter.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.ts"],"names":[],"mappings":";;;AAAA,uDAAkE;AAClE,iDAAgE;AAChE,mEAA0D;AAE7C,QAAA,oCAAoC,GAAG;IAClD,KAAK,CAAC,4BAA4B,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QACpF,IAAI,SAAS,GAAG,MAAM,IAAA,kCAAuB,EAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvF,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;;;;;;;8BAO1B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;iCACpB,SAAS;;;;;;;;;8BASZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;iCACpB,SAAS;;;;KAIrC,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAEvC,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nexport const kimedaOnhandInventoryCounterResolver = {\n async kimedaOnhandInventoryCounter(_: any, params: ListParam, context: ResolverContext) {\n let bizplaces = await getPermittedBizplaceIds(context.state.domain, context.state.user)\n //@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 l2.name, count(distinct i2.location_id) as qty, string_agg(i2.pallet_id, ', ')\n from inventories i2\n inner join locations l2 on i2.location_id = l2.id\n and i2.domain_id = l2.domain_id\n where i2.status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and i2.domain_id = '${context.state.domain.id}'\n and i2.bizplace_id in (${bizplaces})\n and l2.type = 'SHELF'\n group by l2.name\n union all\n select l2.name, count(i2.pallet_id) as qty, string_agg(i2.pallet_id, ', ')\n from inventories i2\n inner join locations l2 on i2.location_id = l2.id\n and i2.domain_id = l2.domain_id\n where i2.status not in ('INTRANSIT', 'TERMINATED', 'DELETED')\n and i2.domain_id = '${context.state.domain.id}'\n and i2.bizplace_id in (${bizplaces})\n and l2.type = 'FLOOR'\n group by l2.name\n ) as foo\n `)\n\n const total = parseInt(result[0].total)\n\n return total\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const arrivalNoticesByStatusResolver: {
3
+ arrivalNoticesByStatus(_: any, params: ListParam, context: ResolverContext): Promise<any[]>;
4
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"arrival-notices-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/arrival-notices-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAA0D;AAC1D,iDAA4E;AAE/D,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,sBAAsB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC9E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QACtC,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QAC5E,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;YAC/D,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;SACb;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,EAAE,GAAsC,IAAA,qBAAa,EAAC,0BAAa,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACnG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE;aACN,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC;aAC7B,SAAS,CAAC,mBAAmB,CAAC;aAC9B,QAAQ,CAAC,sBAAsB,WAAW,GAAG,CAAC;aAC9C,OAAO,CAAC,WAAW,CAAC;aACpB,UAAU,EAAE,CAAA;IACjB,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ArrivalNotice } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const arrivalNoticesByStatusResolver = {\n async arrivalNoticesByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n params.filters = params.filters.filter(filter => filter.name !== 'bizplace')\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n return qb\n .select('an.status', 'status')\n .addSelect('COUNT(*) AS count')\n .andWhere(`an.bizplace_id IN (${bizplaceIds})`)\n .groupBy('an.status')\n .getRawMany()\n }\n}\n"]}
1
+ {"version":3,"file":"arrival-notices-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/arrival-notices-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAA0D;AAC1D,iDAA4E;AAE/D,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,sBAAsB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC9E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QACtC,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QAC5E,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,EAAE,GAAsC,IAAA,qBAAa,EAAC,0BAAa,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACnG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE;aACN,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC;aAC7B,SAAS,CAAC,mBAAmB,CAAC;aAC9B,QAAQ,CAAC,sBAAsB,WAAW,GAAG,CAAC;aAC9C,OAAO,CAAC,WAAW,CAAC;aACpB,UAAU,EAAE,CAAA;IACjB,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ArrivalNotice } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const arrivalNoticesByStatusResolver = {\n async arrivalNoticesByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n params.filters = params.filters.filter(filter => filter.name !== 'bizplace')\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n return qb\n .select('an.status', 'status')\n .addSelect('COUNT(*) AS count')\n .andWhere(`an.bizplace_id IN (${bizplaceIds})`)\n .groupBy('an.status')\n .getRawMany()\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const collectionOrdersByStatusResolver: {
3
+ collectionOrdersByStatus(_: any, params: ListParam, context: ResolverContext): Promise<any[]>;
4
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"collection-orders-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/collection-orders-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAA4D;AAC5D,iDAA4E;AAE/D,QAAA,gCAAgC,GAAG;IAC9C,KAAK,CAAC,wBAAwB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAChF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE;YACrE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC;gBAClD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;SACH;QAED,MAAM,EAAE,GAAwC,IAAA,qBAAa,EAAC,4BAAe,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACvG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAA;IAC1G,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { CollectionOrder } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const collectionOrdersByStatusResolver = {\n async collectionOrdersByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n\n if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<CollectionOrder> = getRepository(CollectionOrder).createQueryBuilder('co')\n buildQuery(qb, params, context)\n return qb.select('co.status', 'status').addSelect('COUNT(*) AS count').groupBy('co.status').getRawMany()\n }\n}\n"]}
1
+ {"version":3,"file":"collection-orders-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/collection-orders-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAA4D;AAC5D,iDAA4E;AAE/D,QAAA,gCAAgC,GAAG;IAC9C,KAAK,CAAC,wBAAwB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAChF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC;gBAClD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,EAAE,GAAwC,IAAA,qBAAa,EAAC,4BAAe,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACvG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAA;IAC1G,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { CollectionOrder } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const collectionOrdersByStatusResolver = {\n async collectionOrdersByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n\n if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<CollectionOrder> = getRepository(CollectionOrder).createQueryBuilder('co')\n buildQuery(qb, params, context)\n return qb.select('co.status', 'status').addSelect('COUNT(*) AS count').groupBy('co.status').getRawMany()\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const deliveryOrdersByStatusResolver: {
3
+ deliveryOrdersByStatus(_: any, params: ListParam, context: ResolverContext): Promise<any[]>;
4
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"delivery-orders-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/delivery-orders-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAA0D;AAC1D,iDAA4E;AAE/D,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,sBAAsB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAC9E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE;YACrE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC;gBAClD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;SACH;QAED,MAAM,EAAE,GAAsC,IAAA,qBAAa,EAAC,0BAAa,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACnG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAA;IAC1G,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { DeliveryOrder } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const deliveryOrdersByStatusResolver = {\n async deliveryOrdersByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n\n if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<DeliveryOrder> = getRepository(DeliveryOrder).createQueryBuilder('do')\n buildQuery(qb, params, context)\n return qb.select('do.status', 'status').addSelect('COUNT(*) AS count').groupBy('do.status').getRawMany()\n }\n}\n"]}
1
+ {"version":3,"file":"delivery-orders-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/delivery-orders-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAA0D;AAC1D,iDAA4E;AAE/D,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,sBAAsB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAC9E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC;gBAClD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,EAAE,GAAsC,IAAA,qBAAa,EAAC,0BAAa,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACnG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAA;IAC1G,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { DeliveryOrder } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const deliveryOrdersByStatusResolver = {\n async deliveryOrdersByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n\n if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<DeliveryOrder> = getRepository(DeliveryOrder).createQueryBuilder('do')\n buildQuery(qb, params, context)\n return qb.select('do.status', 'status').addSelect('COUNT(*) AS count').groupBy('do.status').getRawMany()\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare const Query: any;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/index.ts"],"names":[],"mappings":";;;AAAA,2EAA4E;AAC5E,+EAAgF;AAChF,2EAA4E;AAC5E,yEAA2E;AAC3E,yEAA0E;AAC1E,uEAAwE;AACxE,2EAA6E;AAEhE,QAAA,KAAK,yGACb,0DAA8B,GAC9B,8DAAgC,GAChC,0DAA8B,GAC9B,sDAA4B,GAC5B,wDAA6B,GAC7B,yDAA8B,GAC9B,2DAA+B,EACnC","sourcesContent":["import { arrivalNoticesByStatusResolver } from './arrival-notices-by-status'\nimport { collectionOrdersByStatusResolver } from './collection-orders-by-status'\nimport { deliveryOrdersByStatusResolver } from './delivery-orders-by-status'\nimport { inventoryExpiryMonitorResolver } from './inventory-expiry-monitor'\nimport { outboundOrderByStatusResolver } from './outbound-order-by-status'\nimport { releaseGoodsByStatusResolver } from './release-goods-by-status'\nimport { unitInboundedOutboundedResolver } from './unit-inbounded-outbounded'\n\nexport const Query = {\n ...arrivalNoticesByStatusResolver,\n ...collectionOrdersByStatusResolver,\n ...deliveryOrdersByStatusResolver,\n ...releaseGoodsByStatusResolver,\n ...outboundOrderByStatusResolver,\n ...inventoryExpiryMonitorResolver,\n ...unitInboundedOutboundedResolver\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/index.ts"],"names":[],"mappings":";;;AAAA,2EAA4E;AAC5E,+EAAgF;AAChF,2EAA4E;AAC5E,yEAA2E;AAC3E,yEAA0E;AAC1E,uEAAwE;AACxE,2EAA6E;AAEhE,QAAA,KAAK,GAAG,sGAChB,0DAA8B,GAC9B,8DAAgC,GAChC,0DAA8B,GAC9B,sDAA4B,GAC5B,wDAA6B,GAC7B,yDAA8B,GAC9B,2DAA+B,CAC5B,CAAA","sourcesContent":["import { arrivalNoticesByStatusResolver } from './arrival-notices-by-status'\nimport { collectionOrdersByStatusResolver } from './collection-orders-by-status'\nimport { deliveryOrdersByStatusResolver } from './delivery-orders-by-status'\nimport { inventoryExpiryMonitorResolver } from './inventory-expiry-monitor'\nimport { outboundOrderByStatusResolver } from './outbound-order-by-status'\nimport { releaseGoodsByStatusResolver } from './release-goods-by-status'\nimport { unitInboundedOutboundedResolver } from './unit-inbounded-outbounded'\n\nexport const Query = {\n ...arrivalNoticesByStatusResolver,\n ...collectionOrdersByStatusResolver,\n ...deliveryOrdersByStatusResolver,\n ...releaseGoodsByStatusResolver,\n ...outboundOrderByStatusResolver,\n ...inventoryExpiryMonitorResolver,\n ...unitInboundedOutboundedResolver\n} as any\n"]}
@@ -0,0 +1,7 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const inventoryExpiryMonitorResolver: {
3
+ inventoryExpiryMonitor(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ quarantined: any;
5
+ inShelf: any;
6
+ }>;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"inventory-expiry-monitor.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/inventory-expiry-monitor.ts"],"names":[],"mappings":";;;;AAAA,uDAAkE;AAGrD,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,sBAAsB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC9E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;YAC/D,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;SACb;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,cAAc,GAMd,MAAM,EAAE,CAAC,KAAK,CAClB;;;;;;;;;;;;;gCAa0B,WAAW;;;KAGtC,EACC,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAA;QAED,OAAO;YACL,WAAW,EAAE,sBAAsB,CAAC,cAAc,EAAE,aAAa,CAAC;YAClE,OAAO,EAAE,sBAAsB,CAAC,cAAc,EAAE,UAAU,CAAC;SAC5D,CAAA;IACH,CAAC;CACF,CAAA;AAED,SAAS,sBAAsB,CAAC,cAAc,EAAE,QAAQ;IACtD,IAAI,UAAU,GAAQ,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAA;IAE1E,IAAI,UAAU;QAAE,OAAO,CAAC,CAAC,EAAoB,EAAE,EAAE;gBAAxB,EAAE,QAAQ,OAAU,EAAL,GAAG,sBAAlB,YAAoB,CAAF;YAAO,OAAA,GAAG,CAAA;SAAA,CAAC,CAAC,UAAU,CAAC,CAAA;;QAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;AACzD,CAAC","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const inventoryExpiryMonitorResolver = {\n async inventoryExpiryMonitor(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user, tx } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const expInventories: {\n location: string\n expired: number\n thirtyDays: number\n fortyFiveDays: number\n sixtyDays: number\n }[] = await tx.query(\n `\n SELECT \"location\", sum(\"expired\") AS \"expired\", sum(\"sixMonths\") AS \"sixMonths\", sum(\"nineMonths\") AS \"nineMonths\" FROM (\n SELECT \n CASE WHEN l.TYPE IN ('QUARANTINE','RESERVE') THEN 'QUARANTINED' ELSE 'IN SHELF' END AS \"location\",\n CASE WHEN i.expiration_date - now()::date <= 0 THEN 1 ELSE 0 END AS \"expired\",\n CASE WHEN i.expiration_date - now()::date > 0 AND i.expiration_date - now()::date <= 180 THEN 1 ELSE 0 END AS \"sixMonths\",\n CASE WHEN i.expiration_date - now()::date > 180 AND i.expiration_date - now()::date <= 270 THEN 1 ELSE 0 END AS \"nineMonths\"\n FROM inventories i\n INNER JOIN locations l ON i.location_id = l.id\n WHERE i.expiration_date - now()::date <= 270\n AND i.expiration_date NOTNULL\n AND i.status = 'STORED'\n AND i.domain_id = $1\n AND i.bizplace_id IN (${bizplaceIds})\n ) AS foo\n GROUP BY \"location\"\n `,\n [domain.id]\n )\n\n return {\n quarantined: getExpiryCountByStatus(expInventories, 'QUARANTINED'),\n inShelf: getExpiryCountByStatus(expInventories, 'IN SHELF')\n }\n }\n}\n\nfunction getExpiryCountByStatus(expInventories, location) {\n let matchedInv: any = expInventories.find(inv => inv.location == location)\n\n if (matchedInv) return (({ location, ...inv }) => inv)(matchedInv)\n else return { expired: 0, sixMonths: 0, nineMonths: 0 }\n}\n"]}
1
+ {"version":3,"file":"inventory-expiry-monitor.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/inventory-expiry-monitor.ts"],"names":[],"mappings":";;;;AAAA,uDAAkE;AAGrD,QAAA,8BAA8B,GAAG;IAC5C,KAAK,CAAC,sBAAsB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC9E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,cAAc,GAMd,MAAM,EAAE,CAAC,KAAK,CAClB;;;;;;;;;;;;;gCAa0B,WAAW;;;KAGtC,EACC,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAA;QAED,OAAO;YACL,WAAW,EAAE,sBAAsB,CAAC,cAAc,EAAE,aAAa,CAAC;YAClE,OAAO,EAAE,sBAAsB,CAAC,cAAc,EAAE,UAAU,CAAC;SAC5D,CAAA;IACH,CAAC;CACF,CAAA;AAED,SAAS,sBAAsB,CAAC,cAAc,EAAE,QAAQ;IACtD,IAAI,UAAU,GAAQ,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAA;IAE1E,IAAI,UAAU;QAAE,OAAO,CAAC,CAAC,EAAoB,EAAE,EAAE;gBAAxB,EAAE,QAAQ,OAAU,EAAL,GAAG,sBAAlB,YAAoB,CAAF;YAAO,OAAA,GAAG,CAAA;SAAA,CAAC,CAAC,UAAU,CAAC,CAAA;;QAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;AACzD,CAAC","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const inventoryExpiryMonitorResolver = {\n async inventoryExpiryMonitor(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user, tx } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const expInventories: {\n location: string\n expired: number\n thirtyDays: number\n fortyFiveDays: number\n sixtyDays: number\n }[] = await tx.query(\n `\n SELECT \"location\", sum(\"expired\") AS \"expired\", sum(\"sixMonths\") AS \"sixMonths\", sum(\"nineMonths\") AS \"nineMonths\" FROM (\n SELECT \n CASE WHEN l.TYPE IN ('QUARANTINE','RESERVE') THEN 'QUARANTINED' ELSE 'IN SHELF' END AS \"location\",\n CASE WHEN i.expiration_date - now()::date <= 0 THEN 1 ELSE 0 END AS \"expired\",\n CASE WHEN i.expiration_date - now()::date > 0 AND i.expiration_date - now()::date <= 180 THEN 1 ELSE 0 END AS \"sixMonths\",\n CASE WHEN i.expiration_date - now()::date > 180 AND i.expiration_date - now()::date <= 270 THEN 1 ELSE 0 END AS \"nineMonths\"\n FROM inventories i\n INNER JOIN locations l ON i.location_id = l.id\n WHERE i.expiration_date - now()::date <= 270\n AND i.expiration_date NOTNULL\n AND i.status = 'STORED'\n AND i.domain_id = $1\n AND i.bizplace_id IN (${bizplaceIds})\n ) AS foo\n GROUP BY \"location\"\n `,\n [domain.id]\n )\n\n return {\n quarantined: getExpiryCountByStatus(expInventories, 'QUARANTINED'),\n inShelf: getExpiryCountByStatus(expInventories, 'IN SHELF')\n }\n }\n}\n\nfunction getExpiryCountByStatus(expInventories, location) {\n let matchedInv: any = expInventories.find(inv => inv.location == location)\n\n if (matchedInv) return (({ location, ...inv }) => inv)(matchedInv)\n else return { expired: 0, sixMonths: 0, nineMonths: 0 }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const outboundOrderByStatusResolver: {
3
+ outboundOrderByStatus(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ status: string;
5
+ count: number;
6
+ }[]>;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"outbound-order-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/outbound-order-by-status.ts"],"names":[],"mappings":";;;AAAA,uDAAkE;AAGrD,QAAA,6BAA6B,GAAG;IAC3C,KAAK,CAAC,qBAAqB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC7E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;YAC/D,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;SACb;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,WAAW,GAAwC,MAAM,EAAE,CAAC,KAAK,CACrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAsCiC,WAAW;;;;;;;;;;;uCAWX,WAAW;;;;;;;;;;;qCAWb,WAAW;;;;oCAIZ,WAAW;;;;;;;oCAOX,WAAW;;;;;;;oCAOX,WAAW;;;;;;qCAMV,WAAW;;;;;;;;sCAQV,WAAW;;;;;;KAM5C,EACC,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAA;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;CACF,CAAA","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const outboundOrderByStatusResolver = {\n async outboundOrderByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user, tx } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const orderStatus: { status: string; count: number }[] = await tx.query(\n `\n WITH cte_list (\"status\", \"count\") AS (\n SELECT 'PICKING UNASSIGNED' AS status, 0 AS \"count\"\n UNION\n SELECT 'PICKING ASSIGNED' AS status, 0 AS \"count\"\n UNION\n SELECT 'BATCH PICKING ASSIGNED' AS status, 0 AS \"count\"\n UNION\n SELECT 'PACKING' AS status, 0 AS \"count\"\n UNION\n SELECT 'AWAITING DISPATCH' AS status, 0 AS \"count\"\n UNION\n SELECT 'OUT FROM WAREHOUSE' AS status, 0 AS \"count\"\n UNION\n SELECT 'PENDING MANIFEST CREATION' AS status, 0 AS \"count\"\n UNION\n SELECT 'DONE' AS status, 0 AS \"count\"\n UNION\n SELECT 'PENDING CANCEL' AS status, 0 AS \"count\"\n UNION\n SELECT 'CANCELLED' AS status, 0 AS \"count\"\n UNION\n SELECT 'OTHERS' AS status, 0 AS \"count\"\n UNION\n SELECT 'DRAFT' AS status, 0 AS \"count\"\n ) SELECT l.\"status\", coalesce(src.\"count\", l.\"count\") AS \"count\" \n FROM cte_list l\n LEFT JOIN (\n SELECT \"status\", SUM(\"count\") AS count FROM (\n SELECT \"status\", COUNT(*) AS \"count\" FROM (\n SELECT \n CASE WHEN \"status\" = 'DONE' AND rg.updated_at::date = CURRENT_DATE THEN 'DONE' \n WHEN \"status\" = 'PENDING_CANCEL' THEN 'PENDING CANCEL' \n WHEN \"status\" = 'CANCELLED' AND rg.updated_at::date = CURRENT_DATE THEN 'CANCELLED'\n WHEN \"status\" IN('PENDING_RECEIVE','PENDING_WORKSHEET') THEN 'PICKING UNASSIGNED'\n END AS \"status\" \n FROM release_goods rg\n WHERE \"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.\"status\" IN ('PENDING','PENDING_RECEIVE','PENDING_WORKSHEET','READY_TO_PICK','PICKING','READY_TO_PACK','PACKING','PENDING_CANCEL','CANCELLED','DONE')\n ) AS foo \n GROUP BY \"status\"\n UNION ALL \n SELECT \"status\", COUNT(*) AS \"count\" FROM (\n SELECT \n CASE WHEN \"dispatchment_status\" = 'DISPATCHED' AND rg.updated_at::date = CURRENT_DATE THEN 'OUT FROM WAREHOUSE' \n END AS \"status\" \n FROM release_goods rg\n WHERE \"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.\"dispatchment_status\" IN ('READY_TO_DISPATCH', 'DISPATCHED')\n AND rg.\"tracking_no\" NOTNULL\n AND rg.\"type\" = 'b2c'\n ) AS foo \n GROUP BY \"status\"\t\t\n UNION ALL \n SELECT 'AWAITING DISPATCH' AS \"status\", count(*) FROM manifests m \n INNER JOIN release_goods rg ON rg.manifest_id = m.id\n WHERE m.\"status\" in ('OPEN', 'IN_QUEUE') \n AND m.\"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n UNION ALL\n SELECT 'PICKING ASSIGNED' AS \"status\", count(*) FROM worksheets w \n WHERE w.\"domain_id\" = $1 \n AND w.\"bizplace_id\" IN (${bizplaceIds})\n AND w.\"type\" = 'PICKING' \n AND w.\"status\" IN ('DEACTIVATED','EXECUTING')\n GROUP BY w.\"status\"\n UNION ALL\n SELECT 'BATCH PICKING ASSIGNED' AS \"status\", count(*) FROM worksheets w \n WHERE w.\"domain_id\" = $1 \n AND w.\"bizplace_id\" IN (${bizplaceIds})\n AND w.\"type\" = 'BATCH_PICKING' \n AND w.\"status\" IN ('DEACTIVATED','EXECUTING')\n GROUP BY w.\"status\"\n UNION ALL\n SELECT 'PACKING' AS \"status\", count(*) FROM worksheets w \n WHERE w.\"domain_id\" = $1 AND w.\"type\" = 'PACKING' \n AND w.\"bizplace_id\" IN (${bizplaceIds})\n AND w.\"status\" IN ('DEACTIVATED','EXECUTING')\n GROUP BY w.\"status\"\n UNION ALL \n SELECT 'PENDING MANIFEST CREATION' AS \"status\", count(*) FROM release_goods rg\n WHERE rg.\"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.\"status\" = 'DONE'\n AND rg.\"manifest_id\" ISNULL\n AND rg.\"type\" = 'b2c'\n AND rg.\"updated_at\" >= (CURRENT_DATE - 30)\n UNION ALL\n SELECT 'DRAFT' AS \"status\", count(*) FROM draft_release_goods drg \n WHERE drg.\"domain_id\" = $1\n AND drg.\"bizplace_id\" IN (${bizplaceIds})\n AND drg.\"status\" = 'DRAFT'\n AND drg.\"type\" = 'b2c'\n ) AS src\n GROUP BY \"status\"\n ) src ON src.\"status\" = l.\"status\"\n `,\n [domain.id]\n )\n\n return orderStatus\n }\n}\n"]}
1
+ {"version":3,"file":"outbound-order-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/outbound-order-by-status.ts"],"names":[],"mappings":";;;AAAA,uDAAkE;AAGrD,QAAA,6BAA6B,GAAG;IAC3C,KAAK,CAAC,qBAAqB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC7E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,WAAW,GAAwC,MAAM,EAAE,CAAC,KAAK,CACrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAsCiC,WAAW;;;;;;;;;;;uCAWX,WAAW;;;;;;;;;;;qCAWb,WAAW;;;;oCAIZ,WAAW;;;;;;;oCAOX,WAAW;;;;;;;oCAOX,WAAW;;;;;;qCAMV,WAAW;;;;;;;;sCAQV,WAAW;;;;;;KAM5C,EACC,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAA;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;CACF,CAAA","sourcesContent":["import { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ListParam } from '@things-factory/shell'\n\nexport const outboundOrderByStatusResolver = {\n async outboundOrderByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user, tx } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const orderStatus: { status: string; count: number }[] = await tx.query(\n `\n WITH cte_list (\"status\", \"count\") AS (\n SELECT 'PICKING UNASSIGNED' AS status, 0 AS \"count\"\n UNION\n SELECT 'PICKING ASSIGNED' AS status, 0 AS \"count\"\n UNION\n SELECT 'BATCH PICKING ASSIGNED' AS status, 0 AS \"count\"\n UNION\n SELECT 'PACKING' AS status, 0 AS \"count\"\n UNION\n SELECT 'AWAITING DISPATCH' AS status, 0 AS \"count\"\n UNION\n SELECT 'OUT FROM WAREHOUSE' AS status, 0 AS \"count\"\n UNION\n SELECT 'PENDING MANIFEST CREATION' AS status, 0 AS \"count\"\n UNION\n SELECT 'DONE' AS status, 0 AS \"count\"\n UNION\n SELECT 'PENDING CANCEL' AS status, 0 AS \"count\"\n UNION\n SELECT 'CANCELLED' AS status, 0 AS \"count\"\n UNION\n SELECT 'OTHERS' AS status, 0 AS \"count\"\n UNION\n SELECT 'DRAFT' AS status, 0 AS \"count\"\n ) SELECT l.\"status\", coalesce(src.\"count\", l.\"count\") AS \"count\" \n FROM cte_list l\n LEFT JOIN (\n SELECT \"status\", SUM(\"count\") AS count FROM (\n SELECT \"status\", COUNT(*) AS \"count\" FROM (\n SELECT \n CASE WHEN \"status\" = 'DONE' AND rg.updated_at::date = CURRENT_DATE THEN 'DONE' \n WHEN \"status\" = 'PENDING_CANCEL' THEN 'PENDING CANCEL' \n WHEN \"status\" = 'CANCELLED' AND rg.updated_at::date = CURRENT_DATE THEN 'CANCELLED'\n WHEN \"status\" IN('PENDING_RECEIVE','PENDING_WORKSHEET') THEN 'PICKING UNASSIGNED'\n END AS \"status\" \n FROM release_goods rg\n WHERE \"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.\"status\" IN ('PENDING','PENDING_RECEIVE','PENDING_WORKSHEET','READY_TO_PICK','PICKING','READY_TO_PACK','PACKING','PENDING_CANCEL','CANCELLED','DONE')\n ) AS foo \n GROUP BY \"status\"\n UNION ALL \n SELECT \"status\", COUNT(*) AS \"count\" FROM (\n SELECT \n CASE WHEN \"dispatchment_status\" = 'DISPATCHED' AND rg.updated_at::date = CURRENT_DATE THEN 'OUT FROM WAREHOUSE' \n END AS \"status\" \n FROM release_goods rg\n WHERE \"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.\"dispatchment_status\" IN ('READY_TO_DISPATCH', 'DISPATCHED')\n AND rg.\"tracking_no\" NOTNULL\n AND rg.\"type\" = 'b2c'\n ) AS foo \n GROUP BY \"status\"\t\t\n UNION ALL \n SELECT 'AWAITING DISPATCH' AS \"status\", count(*) FROM manifests m \n INNER JOIN release_goods rg ON rg.manifest_id = m.id\n WHERE m.\"status\" in ('OPEN', 'IN_QUEUE') \n AND m.\"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n UNION ALL\n SELECT 'PICKING ASSIGNED' AS \"status\", count(*) FROM worksheets w \n WHERE w.\"domain_id\" = $1 \n AND w.\"bizplace_id\" IN (${bizplaceIds})\n AND w.\"type\" = 'PICKING' \n AND w.\"status\" IN ('DEACTIVATED','EXECUTING')\n GROUP BY w.\"status\"\n UNION ALL\n SELECT 'BATCH PICKING ASSIGNED' AS \"status\", count(*) FROM worksheets w \n WHERE w.\"domain_id\" = $1 \n AND w.\"bizplace_id\" IN (${bizplaceIds})\n AND w.\"type\" = 'BATCH_PICKING' \n AND w.\"status\" IN ('DEACTIVATED','EXECUTING')\n GROUP BY w.\"status\"\n UNION ALL\n SELECT 'PACKING' AS \"status\", count(*) FROM worksheets w \n WHERE w.\"domain_id\" = $1 AND w.\"type\" = 'PACKING' \n AND w.\"bizplace_id\" IN (${bizplaceIds})\n AND w.\"status\" IN ('DEACTIVATED','EXECUTING')\n GROUP BY w.\"status\"\n UNION ALL \n SELECT 'PENDING MANIFEST CREATION' AS \"status\", count(*) FROM release_goods rg\n WHERE rg.\"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.\"status\" = 'DONE'\n AND rg.\"manifest_id\" ISNULL\n AND rg.\"type\" = 'b2c'\n AND rg.\"updated_at\" >= (CURRENT_DATE - 30)\n UNION ALL\n SELECT 'DRAFT' AS \"status\", count(*) FROM draft_release_goods drg \n WHERE drg.\"domain_id\" = $1\n AND drg.\"bizplace_id\" IN (${bizplaceIds})\n AND drg.\"status\" = 'DRAFT'\n AND drg.\"type\" = 'b2c'\n ) AS src\n GROUP BY \"status\"\n ) src ON src.\"status\" = l.\"status\"\n `,\n [domain.id]\n )\n\n return orderStatus\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const releaseGoodsByStatusResolver: {
3
+ releaseGoodsByStatus(_: any, params: ListParam, context: ResolverContext): Promise<any[]>;
4
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"release-goods-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/release-goods-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAAwD;AACxD,iDAA4E;AAE/D,QAAA,4BAA4B,GAAG;IAC1C,KAAK,CAAC,oBAAoB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC5E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QACtC,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QAC5E,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;YAC/D,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;SACb;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,EAAE,GAAoC,IAAA,qBAAa,EAAC,wBAAW,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAC/F,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE;aACN,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC;aAC7B,SAAS,CAAC,mBAAmB,CAAC;aAC9B,QAAQ,CAAC,sBAAsB,WAAW,GAAG,CAAC;aAC9C,OAAO,CAAC,WAAW,CAAC;aACpB,UAAU,EAAE,CAAA;IACjB,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ReleaseGood } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const releaseGoodsByStatusResolver = {\n async releaseGoodsByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n params.filters = params.filters.filter(filter => filter.name !== 'bizplace')\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const qb: SelectQueryBuilder<ReleaseGood> = getRepository(ReleaseGood).createQueryBuilder('rg')\n buildQuery(qb, params, context)\n return qb\n .select('rg.status', 'status')\n .addSelect('COUNT(*) AS count')\n .andWhere(`rg.bizplace_id IN (${bizplaceIds})`)\n .groupBy('rg.status')\n .getRawMany()\n }\n}\n"]}
1
+ {"version":3,"file":"release-goods-by-status.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/release-goods-by-status.ts"],"names":[],"mappings":";;;AAEA,uDAAkE;AAClE,2DAAwD;AACxD,iDAA4E;AAE/D,QAAA,4BAA4B,GAAG;IAC1C,KAAK,CAAC,oBAAoB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC5E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QACtC,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QAC5E,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,EAAE,GAAoC,IAAA,qBAAa,EAAC,wBAAW,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAC/F,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE;aACN,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC;aAC7B,SAAS,CAAC,mBAAmB,CAAC;aAC9B,QAAQ,CAAC,sBAAsB,WAAW,GAAG,CAAC;aAC9C,OAAO,CAAC,WAAW,CAAC;aACpB,UAAU,EAAE,CAAA;IACjB,CAAC;CACF,CAAA","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ReleaseGood } from '@things-factory/sales-base'\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nexport const releaseGoodsByStatusResolver = {\n async releaseGoodsByStatus(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n params.filters = params.filters.filter(filter => filter.name !== 'bizplace')\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const qb: SelectQueryBuilder<ReleaseGood> = getRepository(ReleaseGood).createQueryBuilder('rg')\n buildQuery(qb, params, context)\n return qb\n .select('rg.status', 'status')\n .addSelect('COUNT(*) AS count')\n .andWhere(`rg.bizplace_id IN (${bizplaceIds})`)\n .groupBy('rg.status')\n .getRawMany()\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const unitInboundedOutboundedResolver: {
3
+ unitInboundedOutbounded(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ status: string;
5
+ count: number;
6
+ }[]>;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"unit-inbounded-outbounded.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/unit-inbounded-outbounded.ts"],"names":[],"mappings":";;;AAGA,uDAAkE;AAGrD,QAAA,+BAA+B,GAAG;IAC7C,KAAK,CAAC,uBAAuB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAY;;QACnE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,QAAQ,GAAW,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,KAAK,CAAA;QAClG,MAAM,MAAM,GAAW,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,KAAK,CAAA;QAChG,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;YAC/D,IAAI,SAAS,GACX,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChG,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;SACb;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,WAAW,GAAwC,MAAM,EAAE,CAAC,KAAK,CACrE;;;;;;;;;;;;;uCAaiC,WAAW;yCACT,QAAQ,UAAU,MAAM;;;;;;;uCAO1B,WAAW;yCACT,QAAQ,UAAU,MAAM;;;;;;OAM1D,EACD,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAA;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;CACF,CAAA","sourcesContent":["import { getRepository, SelectQueryBuilder, EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { buildQuery, Domain, ListParam } from '@things-factory/shell'\n\nexport const unitInboundedOutboundedResolver = {\n async unitInboundedOutbounded(_: any, params: ListParam, context: any) {\n const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n const fromDate: string = params.filters.find((filter: any) => filter.name === 'createdAt1')?.value\n const toDate: string = params.filters.find((filter: any) => filter.name === 'createdAt2')?.value\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] =\n bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const orderStatus: { status: string; count: number }[] = await tx.query(\n `\n WITH cte_unit (\"status\", \"count\", \"type\") AS (\n SELECT 'INBOUNDED' AS status, 0 AS \"count\", 'inbound' AS \"type\"\n UNION\n SELECT 'OUTBOUNDED' AS status, 0 AS \"count\", 'outbound' AS \"type\"\n ) SELECT u.\"status\", coalesce(src.\"count\", u.\"count\") AS \"count\", u.\"type\"\n FROM cte_unit u\n LEFT JOIN (\n SELECT \"status\", SUM(\"count\") AS count, \"type\" FROM (\n SELECT 'INBOUNDED' AS \"status\", SUM(coalesce(op.actual_pack_qty, op.pack_qty)) as \"count\", 'inbound' as \"type\" FROM order_products op\n INNER JOIN arrival_notices an ON an.id = op.arrival_notice_id\n WHERE an.\"status\" in ('PUTTING_AWAY','DONE')\n AND an.\"domain_id\" = $1\n AND an.\"bizplace_id\" IN (${bizplaceIds})\n AND an.created_at BETWEEN '${fromDate}' AND '${toDate}'\n GROUP BY an.\"status\"\n UNION ALL\n SELECT 'OUTBOUNDED' AS \"status\", SUM(coalesce(oi.release_qty , oi.picked_qty)) as \"count\", 'outbound' as \"type\" FROM order_inventories oi\n INNER JOIN release_goods rg on rg.id = oi.release_good_id\n WHERE rg.\"status\" in ('DONE')\n AND rg.\"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.created_at BETWEEN '${fromDate}' AND '${toDate}'\n GROUP BY rg.\"status\"\n ) AS src\n GROUP BY \"status\", \"type\"\n ) src ON src.\"status\" = u.\"status\"\n order by \"type\", \"status\"\n `,\n [domain.id]\n )\n\n return orderStatus\n }\n}\n"]}
1
+ {"version":3,"file":"unit-inbounded-outbounded.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/dashboard/unit-inbounded-outbounded.ts"],"names":[],"mappings":";;;AAGA,uDAAkE;AAGrD,QAAA,+BAA+B,GAAG;IAC7C,KAAK,CAAC,uBAAuB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;;QAC/E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,UAAU,GAAW,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,0CAAE,KAAK,KAAI,KAAK,CAAA;QAC3G,MAAM,QAAQ,GAAW,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,KAAK,CAAA;QAClG,MAAM,MAAM,GAAW,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,KAAK,CAAA;QAChG,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,wEAAwE,CAAC,CAAA;QAC/F,IAAI,WAAmB,CAAA;QAEvB,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,SAAS,GAAa,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACxH,WAAW,GAAG,SAAS;iBACpB,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACd,OAAO,GAAG,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,GAAG,GAAG,CAAA;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;;YAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE5C,MAAM,WAAW,GAAwC,MAAM,EAAE,CAAC,KAAK,CACrE;;;;;;;;;;;;;uCAaiC,WAAW;yCACT,QAAQ,UAAU,MAAM;;;;;;;uCAO1B,WAAW;yCACT,QAAQ,UAAU,MAAM;;;;;;OAM1D,EACD,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAA;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;CACF,CAAA","sourcesContent":["import { getRepository, SelectQueryBuilder, EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { buildQuery, Domain, ListParam } from '@things-factory/shell'\n\nexport const unitInboundedOutboundedResolver = {\n async unitInboundedOutbounded(_: any, params: ListParam, context: ResolverContext) {\n const { domain, user, tx } = context.state\n const bizplaceId: string = params.filters.find((filter: any) => filter.name === 'bizplace')?.value || 'ALL'\n const fromDate: string = params.filters.find((filter: any) => filter.name === 'createdAt1')?.value\n const toDate: string = params.filters.find((filter: any) => filter.name === 'createdAt2')?.value\n const v4 = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i)\n let bizplaceIds: string\n\n if (bizplaceId && (bizplaceId == 'ALL' || bizplaceId.match(v4))) {\n let bizplaces: string[] = bizplaceId && bizplaceId != 'ALL' ? [bizplaceId] : await getPermittedBizplaceIds(domain, user)\n bizplaceIds = bizplaces\n .map(bizplace => {\n return \"'\" + bizplace?.trim() + \"'\"\n })\n .join(',')\n } else throw new Error('invalid bizplaceId')\n\n const orderStatus: { status: string; count: number }[] = await tx.query(\n `\n WITH cte_unit (\"status\", \"count\", \"type\") AS (\n SELECT 'INBOUNDED' AS status, 0 AS \"count\", 'inbound' AS \"type\"\n UNION\n SELECT 'OUTBOUNDED' AS status, 0 AS \"count\", 'outbound' AS \"type\"\n ) SELECT u.\"status\", coalesce(src.\"count\", u.\"count\") AS \"count\", u.\"type\"\n FROM cte_unit u\n LEFT JOIN (\n SELECT \"status\", SUM(\"count\") AS count, \"type\" FROM (\n SELECT 'INBOUNDED' AS \"status\", SUM(coalesce(op.actual_pack_qty, op.pack_qty)) as \"count\", 'inbound' as \"type\" FROM order_products op\n INNER JOIN arrival_notices an ON an.id = op.arrival_notice_id\n WHERE an.\"status\" in ('PUTTING_AWAY','DONE')\n AND an.\"domain_id\" = $1\n AND an.\"bizplace_id\" IN (${bizplaceIds})\n AND an.created_at BETWEEN '${fromDate}' AND '${toDate}'\n GROUP BY an.\"status\"\n UNION ALL\n SELECT 'OUTBOUNDED' AS \"status\", SUM(coalesce(oi.release_qty , oi.picked_qty)) as \"count\", 'outbound' as \"type\" FROM order_inventories oi\n INNER JOIN release_goods rg on rg.id = oi.release_good_id\n WHERE rg.\"status\" in ('DONE')\n AND rg.\"domain_id\" = $1\n AND rg.\"bizplace_id\" IN (${bizplaceIds})\n AND rg.created_at BETWEEN '${fromDate}' AND '${toDate}'\n GROUP BY rg.\"status\"\n ) AS src\n GROUP BY \"status\", \"type\"\n ) src ON src.\"status\" = u.\"status\"\n order by \"type\", \"status\"\n `,\n [domain.id]\n )\n\n return orderStatus\n }\n}\n"]}
@@ -0,0 +1,15 @@
1
+ export declare const queries: any;
2
+ export declare const mutations: ({
3
+ addReleaseGoodProducts(_: any, { name, orderInventories, existingOrderInventories }: {
4
+ name: any;
5
+ orderInventories: any;
6
+ existingOrderInventories: any;
7
+ }, context: ResolverContext): Promise<void>;
8
+ } | {
9
+ warehouseInventoryAdjustment(_: any, { patches }: {
10
+ patches: any;
11
+ }, context: ResolverContext): Promise<{
12
+ items: import("@things-factory/warehouse-base").InventoryChange[];
13
+ total: number;
14
+ }>;
15
+ })[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/graphql/resolvers/index.ts"],"names":[],"mappings":";;;;AAAA,sEAA+C;AAC/C,oEAA6C;AAC7C,sEAA+C;AAC/C,+DAAwC;AACxC,uDAAgC;AAChC,4DAAqC;AACrC,2DAAoC;AACpC,oFAA6D;AAC7D,+EAAwD;AACxD,uGAAgF;AAEnE,QAAA,OAAO,GAAG;IACrB,YAAY,CAAC,KAAK;IAClB,WAAW,CAAC,KAAK;IACjB,YAAY,CAAC,KAAK;IAClB,SAAS,CAAC,KAAK;IACf,mBAAmB,CAAC,KAAK;IACzB,OAAO,CAAC,KAAK;IACb,KAAK,CAAC,KAAK;IACX,OAAO,CAAC,KAAK;IACb,iBAAiB,CAAC,KAAK;CACxB,CAAA;AAEY,QAAA,SAAS,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAA","sourcesContent":["import * as BoardSetting from './board-setting'\nimport * as CustomElccl from './custom/elccl'\nimport * as CustomKimeda from './custom/kimeda'\nimport * as Dashboard from './dashboard'\nimport * as Other from './other'\nimport * as OpaMenu from './opa-menu'\nimport * as Reports from './reports'\nimport * as InventoryComparison from './inventory-comparison'\nimport * as ShippingProviders from './shipping-provider'\nimport * as WarehouseInventoryAdjustment from './warehouse-inventory-adjustment'\n\nexport const queries = [\n BoardSetting.Query,\n CustomElccl.Query,\n CustomKimeda.Query,\n Dashboard.Query,\n InventoryComparison.Query,\n OpaMenu.Query,\n Other.Query,\n Reports.Query,\n ShippingProviders.Query\n]\n\nexport const mutations = [Other.Mutation, WarehouseInventoryAdjustment.Mutation]\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/graphql/resolvers/index.ts"],"names":[],"mappings":";;;;AAAA,sEAA+C;AAC/C,oEAA6C;AAC7C,sEAA+C;AAC/C,+DAAwC;AACxC,uDAAgC;AAChC,4DAAqC;AACrC,2DAAoC;AACpC,oFAA6D;AAC7D,+EAAwD;AACxD,uGAAgF;AAEnE,QAAA,OAAO,GAAG;IACrB,YAAY,CAAC,KAAK;IAClB,WAAW,CAAC,KAAK;IACjB,YAAY,CAAC,KAAK;IAClB,SAAS,CAAC,KAAK;IACf,mBAAmB,CAAC,KAAK;IACzB,OAAO,CAAC,KAAK;IACb,KAAK,CAAC,KAAK;IACX,OAAO,CAAC,KAAK;IACb,iBAAiB,CAAC,KAAK;CACjB,CAAA;AAEK,QAAA,SAAS,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAA","sourcesContent":["import * as BoardSetting from './board-setting'\nimport * as CustomElccl from './custom/elccl'\nimport * as CustomKimeda from './custom/kimeda'\nimport * as Dashboard from './dashboard'\nimport * as Other from './other'\nimport * as OpaMenu from './opa-menu'\nimport * as Reports from './reports'\nimport * as InventoryComparison from './inventory-comparison'\nimport * as ShippingProviders from './shipping-provider'\nimport * as WarehouseInventoryAdjustment from './warehouse-inventory-adjustment'\n\nexport const queries = [\n BoardSetting.Query,\n CustomElccl.Query,\n CustomKimeda.Query,\n Dashboard.Query,\n InventoryComparison.Query,\n OpaMenu.Query,\n Other.Query,\n Reports.Query,\n ShippingProviders.Query\n] as any\n\nexport const mutations = [Other.Mutation, WarehouseInventoryAdjustment.Mutation]\n"]}
@@ -0,0 +1 @@
1
+ export declare const Query: any;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory-comparison/index.ts"],"names":[],"mappings":";;;AAAA,2EAAqE;AAExD,QAAA,KAAK,qBACb,mDAAuB,EAC3B","sourcesContent":["import { inventoryComparisonList } from './inventory-comparison-list'\n\nexport const Query = {\n ...inventoryComparisonList\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory-comparison/index.ts"],"names":[],"mappings":";;;AAAA,2EAAqE;AAExD,QAAA,KAAK,GAAG,kBAChB,mDAAuB,CACpB,CAAA","sourcesContent":["import { inventoryComparisonList } from './inventory-comparison-list'\n\nexport const Query = {\n ...inventoryComparisonList\n} as any\n"]}
@@ -0,0 +1,7 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const inventoryComparisonList: {
3
+ inventoryComparisonList(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ items: any[];
5
+ total: number;
6
+ }>;
7
+ };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.inventoryComparisonList = void 0;
4
+ //@ts-ignore
4
5
  const warehouse_base_1 = require("@things-factory/warehouse-base");
5
6
  const elccl_inventory_history_summary_report_1 = require("../custom/elccl/elccl-inventory-history-summary-report");
6
7
  exports.inventoryComparisonList = {
@@ -1 +1 @@
1
- {"version":3,"file":"inventory-comparison-list.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory-comparison/inventory-comparison-list.ts"],"names":[],"mappings":"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","sourcesContent":["import { ListParam } from '@things-factory/shell'\nimport { onhandInventories } from '@things-factory/warehouse-base'\n\nimport { inventoryHistorySummaryReportQuery } from '../custom/elccl/elccl-inventory-history-summary-report'\n\nexport const inventoryComparisonList = {\n async inventoryComparisonList(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n\n let bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n\n if (!bizplaceFilter) {\n return\n }\n\n let toDateFilter = params.filters.find(data => data.name === 'toDate')\n let toDateDate = new Date(toDateFilter.value)\n let fromDate = toDateDate.setDate(toDateDate.getDate() - 1)\n let fromDateISO = new Date(fromDate).toISOString()\n let nonTallyFilter = params.filters.find(data => data.name === 'nonTally').value\n let productFilter = params.filters.find(data => data.name === 'product')\n\n params.filters.push({\n name: 'fromDate',\n operator: 'eq',\n value: fromDateISO\n })\n\n params.filters.push(\n { name: 'status', operator: 'notin', value: ['INTRANSIT', 'TERMINATED', 'DELETED'] },\n { name: 'remainOnly', operator: 'eq', value: true },\n { name: 'unlockOnly', operator: 'eq', value: true },\n { name: 'created_at', operator: 'eq', value: toDateFilter.value },\n { name: 'timezoneOffset', operator: 'eq', value: new Date().getTimezoneOffset() },\n { name: 'expiration', operator: 'eq', value: false }\n )\n\n let productQueryFilter = ``\n\n if (productFilter) {\n let products = productFilter.value\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n\n productQueryFilter =\n productQueryFilter +\n `\n ${nonTallyFilter ? 'and' : 'where'} (lower(summ.product_name) like any(array[${products}])\n or lower(summ.product_sku) like any(array[${products}]))`\n }\n\n await Promise.all([\n inventoryHistorySummaryReportQuery(_, params, context),\n onhandInventories(params.filters, params.pagination, params.sortings, [], context, false)\n ])\n\n await tx.query(`\n create temp table tmp_inv_comp on commit drop as (\n select summ.\"batch_id\", summ.product_id, summ.product_name, summ.product_sku, summ.packing_type, summ.closing_qty, coalesce(oh.qty, 0) as \"onhand_qty\" from temp_inventory_summary summ \n left join (\t\n select \"batch_id\" as \"batch_id\", product_id, sum(\"qty\") as qty from tmp_data group by \"batch_id\", product_id\n ) oh on oh.batch_id = summ.batch_id and oh.product_id = summ.product_id\n ${nonTallyFilter ? 'where coalesce(oh.qty, 0) <> summ.closing_qty' : ''}\n ${productQueryFilter}\n );\n `)\n\n let sumData = await tx.query(\n `\n select * from tmp_inv_comp\n offset $1 limit $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n const totalQuery: number = await tx.query(`select count(*) from tmp_inv_comp `)\n\n const total = parseInt(totalQuery[0].count)\n\n const items: any[] = sumData.map(item => {\n return {\n productName: item.product_name,\n productSku: item.product_sku,\n packingType: item.packing_type,\n closingQty: item.closing_qty,\n remainQty: item.onhand_qty,\n batchId: item.batch_id\n }\n })\n\n return { items, total }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"inventory-comparison-list.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/inventory-comparison/inventory-comparison-list.ts"],"names":[],"mappings":";;;AACA,YAAY;AACZ,mEAAkE;AAElE,mHAA2G;AAE9F,QAAA,uBAAuB,GAAG;IACrC,KAAK,CAAC,uBAAuB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAwB;QAC/E,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,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAM;YACR,CAAC;YAED,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YACtE,IAAI,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YAC7C,IAAI,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;YAC3D,IAAI,WAAW,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;YAClD,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,CAAA;YAChF,IAAI,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;YAExE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,WAAW;aACnB,CAAC,CAAA;YAEF,MAAM,CAAC,OAAO,CAAC,IAAI,CACjB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,EACpF,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EACnD,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EACnD,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,EACjE,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,EAAE,EACjF,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CACrD,CAAA;YAED,IAAI,kBAAkB,GAAG,EAAE,CAAA;YAE3B,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,QAAQ,GAAG,aAAa,CAAC,KAAK;qBAC/B,WAAW,EAAE;qBACb,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,IAAI,CAAC,EAAE;oBACV,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;gBACtD,CAAC,CAAC;qBACD,IAAI,CAAC,GAAG,CAAC,CAAA;gBAEZ,kBAAkB;oBAChB,kBAAkB;wBAClB;YACE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,6CAA6C,QAAQ;sDAC3C,QAAQ,KAAK,CAAA;YAC7D,CAAC;YAED,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAA,2EAAkC,EAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC;gBACtD,IAAA,kCAAiB,EAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC;aAC1F,CAAC,CAAA;YAEF,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;YAMT,cAAc,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,EAAE;YACrE,kBAAkB;;OAEvB,CAAC,CAAA;YAEF,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAC1B;;;OAGD,EACC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAClF,CAAA;YAED,MAAM,UAAU,GAAW,MAAM,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;YAE/E,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YAE3C,MAAM,KAAK,GAAU,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACtC,OAAO;oBACL,WAAW,EAAE,IAAI,CAAC,YAAY;oBAC9B,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,WAAW,EAAE,IAAI,CAAC,YAAY;oBAC9B,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;iBACvB,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA","sourcesContent":["import { ListParam } from '@things-factory/shell'\n//@ts-ignore\nimport { onhandInventories } from '@things-factory/warehouse-base'\n\nimport { inventoryHistorySummaryReportQuery } from '../custom/elccl/elccl-inventory-history-summary-report'\n\nexport const inventoryComparisonList = {\n async inventoryComparisonList(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n\n let bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n\n if (!bizplaceFilter) {\n return\n }\n\n let toDateFilter = params.filters.find(data => data.name === 'toDate')\n let toDateDate = new Date(toDateFilter.value)\n let fromDate = toDateDate.setDate(toDateDate.getDate() - 1)\n let fromDateISO = new Date(fromDate).toISOString()\n let nonTallyFilter = params.filters.find(data => data.name === 'nonTally').value\n let productFilter = params.filters.find(data => data.name === 'product')\n\n params.filters.push({\n name: 'fromDate',\n operator: 'eq',\n value: fromDateISO\n })\n\n params.filters.push(\n { name: 'status', operator: 'notin', value: ['INTRANSIT', 'TERMINATED', 'DELETED'] },\n { name: 'remainOnly', operator: 'eq', value: true },\n { name: 'unlockOnly', operator: 'eq', value: true },\n { name: 'created_at', operator: 'eq', value: toDateFilter.value },\n { name: 'timezoneOffset', operator: 'eq', value: new Date().getTimezoneOffset() },\n { name: 'expiration', operator: 'eq', value: false }\n )\n\n let productQueryFilter = ``\n\n if (productFilter) {\n let products = productFilter.value\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n\n productQueryFilter =\n productQueryFilter +\n `\n ${nonTallyFilter ? 'and' : 'where'} (lower(summ.product_name) like any(array[${products}])\n or lower(summ.product_sku) like any(array[${products}]))`\n }\n\n await Promise.all([\n inventoryHistorySummaryReportQuery(_, params, context),\n onhandInventories(params.filters, params.pagination, params.sortings, [], context, false)\n ])\n\n await tx.query(`\n create temp table tmp_inv_comp on commit drop as (\n select summ.\"batch_id\", summ.product_id, summ.product_name, summ.product_sku, summ.packing_type, summ.closing_qty, coalesce(oh.qty, 0) as \"onhand_qty\" from temp_inventory_summary summ \n left join (\t\n select \"batch_id\" as \"batch_id\", product_id, sum(\"qty\") as qty from tmp_data group by \"batch_id\", product_id\n ) oh on oh.batch_id = summ.batch_id and oh.product_id = summ.product_id\n ${nonTallyFilter ? 'where coalesce(oh.qty, 0) <> summ.closing_qty' : ''}\n ${productQueryFilter}\n );\n `)\n\n let sumData = await tx.query(\n `\n select * from tmp_inv_comp\n offset $1 limit $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n const totalQuery: number = await tx.query(`select count(*) from tmp_inv_comp `)\n\n const total = parseInt(totalQuery[0].count)\n\n const items: any[] = sumData.map(item => {\n return {\n productName: item.product_name,\n productSku: item.product_sku,\n packingType: item.packing_type,\n closingQty: item.closing_qty,\n remainQty: item.onhand_qty,\n batchId: item.batch_id\n }\n })\n\n return { items, total }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export declare const Query: {
2
+ opaMenus(_: any, _params: any, context: ResolverContext): Promise<import("@things-factory/menu-base").Menu[]>;
3
+ };
@@ -0,0 +1,4 @@
1
+ import { Menu } from '@things-factory/menu-base';
2
+ export declare const opaMenusResolver: {
3
+ opaMenus(_: any, _params: any, context: ResolverContext): Promise<Menu[]>;
4
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"opa-menus.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/opa-menu/opa-menus.ts"],"names":[],"mappings":"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","sourcesContent":["import { In, SelectQueryBuilder } from 'typeorm'\n\nimport { Role, User } from '@things-factory/auth-base'\nimport { Menu } from '@things-factory/menu-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nexport const opaMenusResolver = {\n async opaMenus(_: any, _params: any, context: ResolverContext) {\n let menus: Menu[] = []\n if (context?.state?.domain?.id && context?.state?.user?.id) {\n try {\n const qb: SelectQueryBuilder<User> = getRepository(User).createQueryBuilder('USER')\n const user: User = await qb\n .leftJoinAndSelect('USER.roles', 'ROLES')\n .leftJoinAndSelect('ROLES.domain', 'ROLES_DOMAIN')\n .where('USER.id = :userId', { userId: context.state.user.id })\n .andWhere('ROLES_DOMAIN.id = :domainId', { domainId: context.state.domain.id })\n .getOne()\n\n // get menus which are non-restricted by any role.\n menus.push(...(await getNonRestrictedMenus(context.state.domain)))\n\n const userRoleIds: string[] = user.roles.map((role: Role) => role.id)\n let restrictedMenus: Menu[] = []\n if (userRoleIds?.length) {\n // get menus which are restricted by role ()\n restrictedMenus = [...(await getRestrictedMenus(userRoleIds, context.state.domain))]\n }\n\n const restrictedMenuIds: string[] = restrictedMenus.map((restrictedMenu: Menu) => restrictedMenu.id)\n menus.forEach(menu => {\n const idx = restrictedMenuIds.indexOf(menu.id)\n if (idx !== -1) {\n menu.children = Array.from(new Set([...restrictedMenus[idx].children, ...menu.children]))\n }\n })\n\n return menus.filter((groupMenu: Menu) => groupMenu?.children?.length)\n } catch (e) {\n throw e\n }\n }\n }\n}\n\nasync function getNonRestrictedMenus(domain: Domain): Promise<Menu[]> {\n const menus: Menu[] = await getRepository(Menu).find({\n where: { domain: { id: domain.id }, hiddenFlag: false, menuType: 'MENU' },\n relations: ['parent', 'children', 'children.roles'],\n order: { rank: 'ASC' }\n })\n\n menus.forEach(menu => {\n menu.children = menu.children.filter(child => !child.roles?.length)\n })\n\n return menus\n}\n\nasync function getRestrictedMenus(roleIds: string[], domain: Domain): Promise<Menu[]> {\n const menus: Menu[] = await getRepository(Menu).find({\n where: { domain: { id: domain.id }, hiddenFlag: false, menuType: 'MENU' },\n relations: ['parent', 'children', 'children.roles'],\n order: { rank: 'ASC' }\n })\n const userRoles: Role[] = await getRepository(Role).find({ where: { domain: { id: domain.id }, id: In(roleIds) } })\n\n menus.forEach(menu => {\n menu.children = menu.children.filter(child => {\n const childRoleIds = child.roles?.map(role => role.id) || []\n\n return userRoles.find(role => childRoleIds.includes(role.id)) || false\n })\n })\n\n return menus\n}\n"]}
1
+ {"version":3,"file":"opa-menus.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/opa-menu/opa-menus.ts"],"names":[],"mappings":"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","sourcesContent":["import { In, SelectQueryBuilder } from 'typeorm'\n\nimport { Role, User } from '@things-factory/auth-base'\nimport { Menu } from '@things-factory/menu-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nexport const opaMenusResolver = {\n async opaMenus(_: any, _params: any, context: ResolverContext) {\n let menus: Menu[] = []\n if (context?.state?.domain?.id && context?.state?.user?.id) {\n try {\n const qb: SelectQueryBuilder<User> = getRepository(User).createQueryBuilder('USER')\n const user: User = await qb\n .leftJoinAndSelect('USER.roles', 'ROLES')\n .leftJoinAndSelect('ROLES.domain', 'ROLES_DOMAIN')\n .where('USER.id = :userId', { userId: context.state.user.id })\n .andWhere('ROLES_DOMAIN.id = :domainId', { domainId: context.state.domain.id })\n .getOne()\n\n // get menus which are non-restricted by any role.\n menus.push(...(await getNonRestrictedMenus(context.state.domain)))\n\n const userRoleIds: string[] = user.roles.map((role: Role) => role.id)\n let restrictedMenus: Menu[] = []\n if (userRoleIds?.length) {\n // get menus which are restricted by role ()\n restrictedMenus = [...(await getRestrictedMenus(userRoleIds, context.state.domain))]\n }\n\n const restrictedMenuIds: string[] = restrictedMenus.map((restrictedMenu: Menu) => restrictedMenu.id)\n menus.forEach(menu => {\n const idx = restrictedMenuIds.indexOf(menu.id)\n if (idx !== -1) {\n menu.children = Array.from(new Set([...restrictedMenus[idx].children, ...menu.children]))\n }\n })\n\n return menus.filter((groupMenu: Menu) => groupMenu?.children?.length)\n } catch (e) {\n throw e\n }\n }\n }\n}\n\nasync function getNonRestrictedMenus(domain: Domain): Promise<Menu[]> {\n const menus: Menu[] = await getRepository(Menu).find({\n where: { domain: { id: domain.id }, hiddenFlag: false, menuType: 'MENU' },\n relations: ['parent', 'children', 'children.roles'],\n order: { rank: 'ASC' }\n })\n\n menus.forEach(menu => {\n menu.children = menu.children.filter(child => !child.roles?.length)\n })\n\n return menus\n}\n\nasync function getRestrictedMenus(roleIds: string[], domain: Domain): Promise<Menu[]> {\n const menus: Menu[] = await getRepository(Menu).find({\n where: { domain: { id: domain.id }, hiddenFlag: false, menuType: 'MENU' },\n relations: ['parent', 'children', 'children.roles'],\n order: { rank: 'ASC' }\n })\n const userRoles: Role[] = await getRepository(Role).find({ where: { domain: { id: domain.id }, id: In(roleIds) } })\n\n menus.forEach(menu => {\n menu.children = menu.children.filter(child => {\n const childRoleIds = child.roles?.map(role => role.id) || []\n\n return userRoles.find(role => childRoleIds.includes(role.id)) || false\n })\n })\n\n return menus\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export declare const addReleaseGoodProducts: {
2
+ addReleaseGoodProducts(_: any, { name, orderInventories, existingOrderInventories }: {
3
+ name: any;
4
+ orderInventories: any;
5
+ existingOrderInventories: any;
6
+ }, context: ResolverContext): Promise<void>;
7
+ };
@@ -58,7 +58,9 @@ exports.addReleaseGoodProducts = {
58
58
  await tx.getRepository(warehouse_base_1.Inventory).save(foundInv);
59
59
  if (existingOrderInv) {
60
60
  // if found existing OrderInventory and worksheetDetail then qty, uomValue, and status are updated
61
- curOrderInv = Object.assign(Object.assign({}, existingOrderInv), { releaseQty: curOrderInv.releaseQty, releaseUomValue: curOrderInv.releaseUomValue, lockedUomValue: curOrderInv.lockedUomValue, status: sales_base_1.ORDER_INVENTORY_STATUS.CANCELLED });
61
+ curOrderInv = Object.assign(Object.assign({}, existingOrderInv), { releaseQty: curOrderInv.releaseQty, releaseUomValue: curOrderInv.releaseUomValue,
62
+ //@ts-ignore
63
+ lockedUomValue: curOrderInv.lockedUomValue, status: sales_base_1.ORDER_INVENTORY_STATUS.CANCELLED });
62
64
  let existingWorksheetDetail = await tx.getRepository(worksheet_base_1.WorksheetDetail).findOne({
63
65
  where: {
64
66
  worksheet: { id: pickingWorksheet.id },
@@ -72,13 +74,17 @@ exports.addReleaseGoodProducts = {
72
74
  }
73
75
  }
74
76
  else if (curOrderInv.releaseQty == existingOrderInv.pickedQty) {
75
- curOrderInv = Object.assign(Object.assign({}, existingOrderInv), { releaseQty: curOrderInv.releaseQty, releaseUomValue: curOrderInv.releaseUomValue, lockedUomValue: curOrderInv.lockedUomValue, status: sales_base_1.ORDER_INVENTORY_STATUS.PICKED });
77
+ curOrderInv = Object.assign(Object.assign({}, existingOrderInv), { releaseQty: curOrderInv.releaseQty, releaseUomValue: curOrderInv.releaseUomValue,
78
+ //@ts-ignore
79
+ lockedUomValue: curOrderInv.lockedUomValue, status: sales_base_1.ORDER_INVENTORY_STATUS.PICKED });
76
80
  let existingWorksheetDetail = await tx.getRepository(worksheet_base_1.WorksheetDetail).findOne({
77
81
  where: {
78
82
  targetInventory: { id: curOrderInv.id }
79
83
  }
80
84
  });
81
- existingWorksheetDetail = Object.assign(Object.assign({}, existingWorksheetDetail), { status: worksheet_base_1.WORKSHEET_STATUS.PICKED });
85
+ existingWorksheetDetail = Object.assign(Object.assign({}, existingWorksheetDetail), {
86
+ //@ts-ignore
87
+ status: worksheet_base_1.WORKSHEET_STATUS.PICKED });
82
88
  await tx.getRepository(worksheet_base_1.WorksheetDetail).save(existingWorksheetDetail);
83
89
  await tx.getRepository(sales_base_1.OrderInventory).save(curOrderInv);
84
90
  }
@@ -232,11 +238,13 @@ exports.addReleaseGoodProducts = {
232
238
  // this solution will remove ix_order-inventory_0 unique error
233
239
  // ** please revise this resolver in future. looks like there's few
234
240
  // things that can refactor
241
+ //@ts-ignore
235
242
  savedOrderInv.id = newOrderInv.id;
236
243
  }
237
244
  savedOrderInv = await tx.getRepository(sales_base_1.OrderInventory).save(savedOrderInv);
238
245
  if (!existingOrderInv && pickingWorksheet) {
239
246
  // if this is a new orderInventory and has existing worksheet then generate a new worksheet detail for it
247
+ //@ts-ignore
240
248
  await (0, worksheet_base_1.generatePickingWorksheetDetail)(tx, domain, user, pickingWorksheet, savedOrderInv);
241
249
  }
242
250
  }