@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":"add-release-good-products.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/other/add-release-good-products.ts"],"names":[],"mappings":"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","sourcesContent":["import { In, Not } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct,\n ReleaseGood\n} from '@things-factory/sales-base'\nimport { Inventory } from '@things-factory/warehouse-base'\nimport {\n generatePickingWorksheetDetail,\n Worksheet,\n WORKSHEET_STATUS,\n WORKSHEET_TYPE,\n WorksheetDetail\n} from '@things-factory/worksheet-base'\n\nexport const addReleaseGoodProducts = {\n async addReleaseGoodProducts(_: any, { name, orderInventories, existingOrderInventories }, context: ResolverContext) {\n try {\n const { tx, user, domain } = context.state\n\n let releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({\n where: { domain: { id: domain.id }, name: name },\n relations: ['bizplace', 'orderProducts']\n })\n\n const bizplace: Bizplace = releaseGood.bizplace\n\n let pickingWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { releaseGood, type: WORKSHEET_TYPE.PICKING }\n })\n\n let loadingWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { releaseGood, type: WORKSHEET_TYPE.LOADING }\n })\n\n if (existingOrderInventories) {\n for (let oi of existingOrderInventories) {\n // map input to OrderInventory Object\n let curOrderInv: OrderInventory = Object.assign({}, oi)\n curOrderInv.domain = domain\n curOrderInv.bizplace = bizplace\n curOrderInv.releaseGood = releaseGood\n curOrderInv.product = await tx.getRepository(Product).findOneBy({ id: oi.product.id })\n\n let existingOrderInv: OrderInventory\n\n if (curOrderInv?.inventory?.id) {\n const foundInv: Inventory = await tx.getRepository(Inventory).findOneBy({ id: curOrderInv.inventory.id })\n curOrderInv.inventory = foundInv\n\n existingOrderInv = await tx.getRepository(OrderInventory).findOne({\n where: {\n releaseGood,\n product: curOrderInv.product,\n batchId: curOrderInv.batchId,\n packingType: curOrderInv.packingType,\n inventory: foundInv\n }\n })\n\n if (foundInv && foundInv.lockedQty == 0) {\n foundInv.qty += Number(existingOrderInv.releaseQty)\n foundInv.uomValue += Number(existingOrderInv.releaseUomValue)\n foundInv.lockedQty = Number(existingOrderInv.releaseQty)\n foundInv.lockedUomValue = Number(existingOrderInv.releaseUomValue)\n }\n\n if (curOrderInv.releaseQty < existingOrderInv.pickedQty) {\n throw new Error(`${curOrderInv.inventory.palletId} has already picked ${existingOrderInv.pickedQty}`)\n }\n\n if (curOrderInv.releaseQty === 0) {\n foundInv.lockedQty = Number(foundInv.lockedQty) - Number(existingOrderInv.releaseQty)\n foundInv.lockedUomValue = Number(foundInv.lockedUomValue) - Number(existingOrderInv.releaseUomValue)\n\n await tx.getRepository(Inventory).save(foundInv)\n\n if (existingOrderInv) {\n // if found existing OrderInventory and worksheetDetail then qty, uomValue, and status are updated\n curOrderInv = {\n ...existingOrderInv,\n releaseQty: curOrderInv.releaseQty,\n releaseUomValue: curOrderInv.releaseUomValue,\n lockedUomValue: curOrderInv.lockedUomValue,\n status: ORDER_INVENTORY_STATUS.CANCELLED\n }\n\n let existingWorksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n worksheet: { id: pickingWorksheet.id },\n type: WORKSHEET_TYPE.PICKING,\n targetInventory: { id: curOrderInv.id }\n }\n })\n\n existingWorksheetDetail = {\n ...existingWorksheetDetail,\n status: WORKSHEET_STATUS.CANCELLED\n }\n await tx.getRepository(WorksheetDetail).save(existingWorksheetDetail)\n await tx.getRepository(OrderInventory).save(curOrderInv)\n }\n } else if (curOrderInv.releaseQty == existingOrderInv.pickedQty) {\n curOrderInv = {\n ...existingOrderInv,\n releaseQty: curOrderInv.releaseQty,\n releaseUomValue: curOrderInv.releaseUomValue,\n lockedUomValue: curOrderInv.lockedUomValue,\n status: ORDER_INVENTORY_STATUS.PICKED\n }\n\n let existingWorksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n targetInventory: { id: curOrderInv.id }\n }\n })\n\n existingWorksheetDetail = {\n ...existingWorksheetDetail,\n status: WORKSHEET_STATUS.PICKED\n }\n\n await tx.getRepository(WorksheetDetail).save(existingWorksheetDetail)\n await tx.getRepository(OrderInventory).save(curOrderInv)\n } else {\n foundInv.updater = user\n foundInv.lockedQty =\n foundInv.lockedQty - Number(existingOrderInv.releaseQty) + Number(curOrderInv.releaseQty)\n foundInv.lockedUomValue =\n foundInv.lockedUomValue - Number(existingOrderInv.releaseUomValue) + Number(curOrderInv.releaseUomValue)\n\n await tx.getRepository(Inventory).save(foundInv)\n\n if (existingOrderInv) {\n // if found existing OrderInventory and worksheetDetail then qty, uomValue, and status are updated\n curOrderInv = {\n ...existingOrderInv,\n releaseQty: curOrderInv.releaseQty,\n releaseUomValue: curOrderInv.releaseUomValue,\n status: ORDER_INVENTORY_STATUS.PICKING\n }\n\n let existingWorksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n worksheet: { id: pickingWorksheet.id },\n type: WORKSHEET_TYPE.PICKING,\n targetInventory: { id: existingOrderInv.id }\n }\n })\n\n if (existingWorksheetDetail) {\n if (curOrderInv.releaseQty != existingOrderInv.releaseQty) {\n existingWorksheetDetail = {\n ...existingWorksheetDetail,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n\n await tx.getRepository(WorksheetDetail).save(existingWorksheetDetail)\n }\n }\n\n await tx.getRepository(OrderInventory).save(curOrderInv)\n }\n }\n\n if (pickingWorksheet) {\n // if has picking worksheet, status will be deactivated to prevent any action from warehouse operator until office admin has confirmation\n pickingWorksheet = {\n ...pickingWorksheet,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n await tx.getRepository(Worksheet).save(pickingWorksheet)\n }\n\n if (loadingWorksheet) {\n // if has loading worksheet, status will be deactivated to prevent any action from warehouse operator until office admin has confirmation\n loadingWorksheet = {\n ...loadingWorksheet,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n\n await tx.getRepository(Worksheet).save(loadingWorksheet)\n }\n }\n }\n }\n\n if (orderInventories) {\n for (let oi of orderInventories) {\n // map input to OrderInventory Object\n let newOrderInv: OrderInventory = Object.assign({}, oi)\n newOrderInv.domain = domain\n newOrderInv.bizplace = bizplace\n newOrderInv.batchId = oi.batchId\n newOrderInv.packingType = oi.packingType\n newOrderInv.status = pickingWorksheet ? ORDER_INVENTORY_STATUS.PICKING : ORDER_INVENTORY_STATUS.PENDING\n newOrderInv.name = OrderNoGenerator.orderInventory()\n newOrderInv.releaseGood = releaseGood\n newOrderInv.product = await tx.getRepository(Product).findOneBy({ id: oi.product.id })\n newOrderInv.creator = user\n newOrderInv.updater = user\n\n let existingOrderInv: OrderInventory\n\n let existingOrderProduct: OrderProduct = await tx.getRepository(OrderProduct).findOne({\n where: {\n domain: { id: domain.id },\n releaseGood: { id: releaseGood.id },\n batchId: oi.batchId,\n packingType: oi.packingType,\n product: { id: newOrderInv.product.id }\n }\n })\n\n // check if it is release by inventory (has inventory value) or product\n if (newOrderInv.inventory?.id) {\n // if release by inventory, then quantity and uomValue values are updated\n const foundInv: Inventory = await tx.getRepository(Inventory).findOneBy({ id: newOrderInv.inventory.id })\n newOrderInv.inventory = foundInv\n newOrderInv.uom = oi?.uom || foundInv.uom\n newOrderInv.batchIdRef = oi?.batchIdRef || foundInv.batchIdRef\n\n // check for existing released OrderInventory specifying product, batchId, packingType, and inventory\n existingOrderInv = await tx.getRepository(OrderInventory).findOne({\n where: {\n releaseGood: { id: releaseGood.id },\n product: { id: newOrderInv.product.id },\n batchId: newOrderInv.batchId,\n packingType: newOrderInv.packingType,\n inventory: { id: foundInv.id }\n }\n })\n\n foundInv.lockedQty = Number(foundInv.lockedQty) + newOrderInv.releaseQty\n foundInv.lockedUomValue = Number(foundInv.lockedUomValue) + newOrderInv.releaseUomValue\n foundInv.updater = user\n\n let newOrderProduct: OrderProduct = Object.assign(new OrderProduct(), newOrderInv)\n newOrderProduct = {\n ...newOrderProduct,\n packQty: 0,\n actualPackQty: 0,\n palletQty: 0,\n actualPalletQty: 0,\n status: ORDER_PRODUCT_STATUS.ASSIGNED\n }\n\n if (!existingOrderProduct) newOrderProduct = await tx.getRepository(OrderProduct).save(newOrderProduct)\n\n newOrderInv.orderProduct = existingOrderProduct ? existingOrderProduct : newOrderProduct\n\n await tx.getRepository(Inventory).save(foundInv)\n } else {\n // check for existing released OrderInventory specifying product, batchId and packingType\n existingOrderInv = await tx.getRepository(OrderInventory).findOne({\n where: {\n releaseGood: { id: releaseGood.id },\n product: { id: newOrderInv.product.id },\n batchId: newOrderInv.batchId,\n packingType: newOrderInv.packingType\n }\n })\n }\n\n if (existingOrderInv) {\n // if found existing OrderInventory and worksheetDetail then qty, uomValue, and status are updated\n newOrderInv = {\n ...existingOrderInv,\n releaseQty:\n existingOrderInv.status === ORDER_INVENTORY_STATUS.REPLACED\n ? newOrderInv.releaseQty\n : existingOrderInv.releaseQty + newOrderInv.releaseQty,\n releaseUomValue: ORDER_INVENTORY_STATUS.REPLACED\n ? newOrderInv.releaseUomValue\n : existingOrderInv.releaseUomValue + newOrderInv.releaseUomValue,\n status:\n existingOrderInv.status === ORDER_INVENTORY_STATUS.CANCELLED\n ? pickingWorksheet\n ? ORDER_INVENTORY_STATUS.PICKING\n : ORDER_INVENTORY_STATUS.PENDING\n : existingOrderInv.status\n }\n\n let existingWorksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n worksheet: { id: pickingWorksheet.id },\n type: WORKSHEET_TYPE.PICKING,\n targetInventory: { id: existingOrderInv.id }\n }\n })\n\n if (existingWorksheetDetail) {\n existingWorksheetDetail = {\n ...existingWorksheetDetail,\n targetProduct: newOrderInv.orderProduct,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n\n await tx.getRepository(WorksheetDetail).save(existingWorksheetDetail)\n }\n }\n\n if (pickingWorksheet) {\n // if has picking worksheet, status will be deactivated to prevent any action from warehouse operator until office admin has confirmation\n pickingWorksheet = {\n ...pickingWorksheet,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n\n let savedOrderInv: OrderInventory = new OrderInventory()\n savedOrderInv.name = newOrderInv.name\n savedOrderInv.type = newOrderInv.type\n savedOrderInv.releaseQty = newOrderInv.releaseQty\n savedOrderInv.releaseUomValue = newOrderInv.releaseUomValue\n savedOrderInv.batchId = newOrderInv.batchId\n savedOrderInv.batchIdRef = newOrderInv.batchIdRef\n savedOrderInv.packingType = newOrderInv.packingType\n savedOrderInv.uom = newOrderInv.uom\n savedOrderInv.product = newOrderInv.product\n savedOrderInv.inventory = newOrderInv.inventory\n savedOrderInv.status = newOrderInv.status\n savedOrderInv.releaseGood = newOrderInv.releaseGood\n savedOrderInv.orderProduct = newOrderInv.orderProduct\n savedOrderInv.bizplace = newOrderInv.bizplace\n savedOrderInv.domain = domain\n savedOrderInv.creator = user\n savedOrderInv.updater = user\n\n if (newOrderInv?.id) {\n // newOrderInv will have id if it was updated from existingOrderInv\n // this solution will remove ix_order-inventory_0 unique error\n // ** please revise this resolver in future. looks like there's few\n // things that can refactor\n savedOrderInv.id = newOrderInv.id\n }\n\n savedOrderInv = await tx.getRepository(OrderInventory).save(savedOrderInv)\n\n if (!existingOrderInv && pickingWorksheet) {\n // if this is a new orderInventory and has existing worksheet then generate a new worksheet detail for it\n await generatePickingWorksheetDetail(tx, domain, user, pickingWorksheet, savedOrderInv)\n }\n }\n }\n\n await tx.getRepository(Worksheet).save(pickingWorksheet)\n }\n\n if (loadingWorksheet) {\n // if has loading worksheet, status will be deactivated to prevent any action from warehouse operator until office admin has confirmation\n loadingWorksheet = {\n ...loadingWorksheet,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n\n await tx.getRepository(Worksheet).save(loadingWorksheet)\n }\n\n // Update Order Product Release Qty\n let rgOrderProducts: OrderProduct[] = await tx\n .getRepository(OrderProduct)\n .find({ where: { domain: { id: domain.id }, releaseGood: { id: releaseGood.id } } })\n\n await Promise.all(\n rgOrderProducts.map(async op => {\n const orderInventories: OrderInventory[] = await tx.getRepository(OrderInventory).find({\n where: {\n domain: { id: domain.id },\n releaseGood: { id: releaseGood.id },\n orderProduct: { id: op.id },\n status: Not(\n In([\n ORDER_INVENTORY_STATUS.TERMINATED,\n ORDER_INVENTORY_STATUS.CANCELLED,\n ORDER_INVENTORY_STATUS.PENDING_CANCEL\n ])\n )\n }\n })\n\n let totalReleaseQty: number = orderInventories.reduce((total, currentValue) => {\n total += currentValue.releaseQty\n return total\n }, 0)\n\n let totalReleaseUomValue: number = orderInventories.reduce((total, currentValue) => {\n total += currentValue.releaseUomValue\n return total\n }, 0)\n\n let updateOPInfo: any = {\n releaseQty: totalReleaseQty,\n releaseUomValue: totalReleaseUomValue\n }\n\n if (totalReleaseQty <= 0) {\n updateOPInfo.status = ORDER_PRODUCT_STATUS.TERMINATED\n }\n\n await tx.getRepository(OrderProduct).update({ id: op.id }, updateOPInfo)\n })\n )\n } catch (error) {\n throw error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"add-release-good-products.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/other/add-release-good-products.ts"],"names":[],"mappings":"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","sourcesContent":["import { In, Not } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct,\n ReleaseGood\n} from '@things-factory/sales-base'\nimport { Inventory } from '@things-factory/warehouse-base'\nimport {\n generatePickingWorksheetDetail,\n Worksheet,\n WORKSHEET_STATUS,\n WORKSHEET_TYPE,\n WorksheetDetail\n} from '@things-factory/worksheet-base'\n\nexport const addReleaseGoodProducts = {\n async addReleaseGoodProducts(_: any, { name, orderInventories, existingOrderInventories }, context: ResolverContext) {\n try {\n const { tx, user, domain } = context.state\n\n let releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({\n where: { domain: { id: domain.id }, name: name },\n relations: ['bizplace', 'orderProducts']\n })\n\n const bizplace: Bizplace = releaseGood.bizplace\n\n let pickingWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { releaseGood, type: WORKSHEET_TYPE.PICKING }\n })\n\n let loadingWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { releaseGood, type: WORKSHEET_TYPE.LOADING }\n })\n\n if (existingOrderInventories) {\n for (let oi of existingOrderInventories) {\n // map input to OrderInventory Object\n let curOrderInv: OrderInventory = Object.assign({}, oi)\n curOrderInv.domain = domain\n curOrderInv.bizplace = bizplace\n curOrderInv.releaseGood = releaseGood\n curOrderInv.product = await tx.getRepository(Product).findOneBy({ id: oi.product.id })\n\n let existingOrderInv: OrderInventory\n\n if (curOrderInv?.inventory?.id) {\n const foundInv: Inventory = await tx.getRepository(Inventory).findOneBy({ id: curOrderInv.inventory.id })\n curOrderInv.inventory = foundInv\n\n existingOrderInv = await tx.getRepository(OrderInventory).findOne({\n where: {\n releaseGood,\n product: curOrderInv.product,\n batchId: curOrderInv.batchId,\n packingType: curOrderInv.packingType,\n inventory: foundInv\n }\n })\n\n if (foundInv && foundInv.lockedQty == 0) {\n foundInv.qty += Number(existingOrderInv.releaseQty)\n foundInv.uomValue += Number(existingOrderInv.releaseUomValue)\n foundInv.lockedQty = Number(existingOrderInv.releaseQty)\n foundInv.lockedUomValue = Number(existingOrderInv.releaseUomValue)\n }\n\n if (curOrderInv.releaseQty < existingOrderInv.pickedQty) {\n throw new Error(`${curOrderInv.inventory.palletId} has already picked ${existingOrderInv.pickedQty}`)\n }\n\n if (curOrderInv.releaseQty === 0) {\n foundInv.lockedQty = Number(foundInv.lockedQty) - Number(existingOrderInv.releaseQty)\n foundInv.lockedUomValue = Number(foundInv.lockedUomValue) - Number(existingOrderInv.releaseUomValue)\n\n await tx.getRepository(Inventory).save(foundInv)\n\n if (existingOrderInv) {\n // if found existing OrderInventory and worksheetDetail then qty, uomValue, and status are updated\n curOrderInv = {\n ...existingOrderInv,\n releaseQty: curOrderInv.releaseQty,\n releaseUomValue: curOrderInv.releaseUomValue,\n //@ts-ignore\n lockedUomValue: curOrderInv.lockedUomValue,\n status: ORDER_INVENTORY_STATUS.CANCELLED\n }\n\n let existingWorksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n worksheet: { id: pickingWorksheet.id },\n type: WORKSHEET_TYPE.PICKING,\n targetInventory: { id: curOrderInv.id }\n }\n })\n\n existingWorksheetDetail = {\n ...existingWorksheetDetail,\n status: WORKSHEET_STATUS.CANCELLED\n }\n await tx.getRepository(WorksheetDetail).save(existingWorksheetDetail)\n await tx.getRepository(OrderInventory).save(curOrderInv)\n }\n } else if (curOrderInv.releaseQty == existingOrderInv.pickedQty) {\n curOrderInv = {\n ...existingOrderInv,\n releaseQty: curOrderInv.releaseQty,\n releaseUomValue: curOrderInv.releaseUomValue,\n //@ts-ignore\n lockedUomValue: curOrderInv.lockedUomValue,\n status: ORDER_INVENTORY_STATUS.PICKED\n }\n\n let existingWorksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n targetInventory: { id: curOrderInv.id }\n }\n })\n\n existingWorksheetDetail = {\n ...existingWorksheetDetail,\n //@ts-ignore\n status: WORKSHEET_STATUS.PICKED\n }\n\n await tx.getRepository(WorksheetDetail).save(existingWorksheetDetail)\n await tx.getRepository(OrderInventory).save(curOrderInv)\n } else {\n foundInv.updater = user\n foundInv.lockedQty =\n foundInv.lockedQty - Number(existingOrderInv.releaseQty) + Number(curOrderInv.releaseQty)\n foundInv.lockedUomValue =\n foundInv.lockedUomValue - Number(existingOrderInv.releaseUomValue) + Number(curOrderInv.releaseUomValue)\n\n await tx.getRepository(Inventory).save(foundInv)\n\n if (existingOrderInv) {\n // if found existing OrderInventory and worksheetDetail then qty, uomValue, and status are updated\n curOrderInv = {\n ...existingOrderInv,\n releaseQty: curOrderInv.releaseQty,\n releaseUomValue: curOrderInv.releaseUomValue,\n status: ORDER_INVENTORY_STATUS.PICKING\n }\n\n let existingWorksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n worksheet: { id: pickingWorksheet.id },\n type: WORKSHEET_TYPE.PICKING,\n targetInventory: { id: existingOrderInv.id }\n }\n })\n\n if (existingWorksheetDetail) {\n if (curOrderInv.releaseQty != existingOrderInv.releaseQty) {\n existingWorksheetDetail = {\n ...existingWorksheetDetail,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n\n await tx.getRepository(WorksheetDetail).save(existingWorksheetDetail)\n }\n }\n\n await tx.getRepository(OrderInventory).save(curOrderInv)\n }\n }\n\n if (pickingWorksheet) {\n // if has picking worksheet, status will be deactivated to prevent any action from warehouse operator until office admin has confirmation\n pickingWorksheet = {\n ...pickingWorksheet,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n await tx.getRepository(Worksheet).save(pickingWorksheet)\n }\n\n if (loadingWorksheet) {\n // if has loading worksheet, status will be deactivated to prevent any action from warehouse operator until office admin has confirmation\n loadingWorksheet = {\n ...loadingWorksheet,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n\n await tx.getRepository(Worksheet).save(loadingWorksheet)\n }\n }\n }\n }\n\n if (orderInventories) {\n for (let oi of orderInventories) {\n // map input to OrderInventory Object\n let newOrderInv: OrderInventory = Object.assign({}, oi)\n newOrderInv.domain = domain\n newOrderInv.bizplace = bizplace\n newOrderInv.batchId = oi.batchId\n newOrderInv.packingType = oi.packingType\n newOrderInv.status = pickingWorksheet ? ORDER_INVENTORY_STATUS.PICKING : ORDER_INVENTORY_STATUS.PENDING\n newOrderInv.name = OrderNoGenerator.orderInventory()\n newOrderInv.releaseGood = releaseGood\n newOrderInv.product = await tx.getRepository(Product).findOneBy({ id: oi.product.id })\n newOrderInv.creator = user\n newOrderInv.updater = user\n\n let existingOrderInv: OrderInventory\n\n let existingOrderProduct: OrderProduct = await tx.getRepository(OrderProduct).findOne({\n where: {\n domain: { id: domain.id },\n releaseGood: { id: releaseGood.id },\n batchId: oi.batchId,\n packingType: oi.packingType,\n product: { id: newOrderInv.product.id }\n }\n })\n\n // check if it is release by inventory (has inventory value) or product\n if (newOrderInv.inventory?.id) {\n // if release by inventory, then quantity and uomValue values are updated\n const foundInv: Inventory = await tx.getRepository(Inventory).findOneBy({ id: newOrderInv.inventory.id })\n newOrderInv.inventory = foundInv\n newOrderInv.uom = oi?.uom || foundInv.uom\n newOrderInv.batchIdRef = oi?.batchIdRef || foundInv.batchIdRef\n\n // check for existing released OrderInventory specifying product, batchId, packingType, and inventory\n existingOrderInv = await tx.getRepository(OrderInventory).findOne({\n where: {\n releaseGood: { id: releaseGood.id },\n product: { id: newOrderInv.product.id },\n batchId: newOrderInv.batchId,\n packingType: newOrderInv.packingType,\n inventory: { id: foundInv.id }\n }\n })\n\n foundInv.lockedQty = Number(foundInv.lockedQty) + newOrderInv.releaseQty\n foundInv.lockedUomValue = Number(foundInv.lockedUomValue) + newOrderInv.releaseUomValue\n foundInv.updater = user\n\n let newOrderProduct: OrderProduct = Object.assign(new OrderProduct(), newOrderInv)\n newOrderProduct = {\n ...newOrderProduct,\n packQty: 0,\n actualPackQty: 0,\n palletQty: 0,\n actualPalletQty: 0,\n status: ORDER_PRODUCT_STATUS.ASSIGNED\n }\n\n if (!existingOrderProduct) newOrderProduct = await tx.getRepository(OrderProduct).save(newOrderProduct)\n\n newOrderInv.orderProduct = existingOrderProduct ? existingOrderProduct : newOrderProduct\n\n await tx.getRepository(Inventory).save(foundInv)\n } else {\n // check for existing released OrderInventory specifying product, batchId and packingType\n existingOrderInv = await tx.getRepository(OrderInventory).findOne({\n where: {\n releaseGood: { id: releaseGood.id },\n product: { id: newOrderInv.product.id },\n batchId: newOrderInv.batchId,\n packingType: newOrderInv.packingType\n }\n })\n }\n\n if (existingOrderInv) {\n // if found existing OrderInventory and worksheetDetail then qty, uomValue, and status are updated\n newOrderInv = {\n ...existingOrderInv,\n releaseQty:\n existingOrderInv.status === ORDER_INVENTORY_STATUS.REPLACED\n ? newOrderInv.releaseQty\n : existingOrderInv.releaseQty + newOrderInv.releaseQty,\n releaseUomValue: ORDER_INVENTORY_STATUS.REPLACED\n ? newOrderInv.releaseUomValue\n : existingOrderInv.releaseUomValue + newOrderInv.releaseUomValue,\n status:\n existingOrderInv.status === ORDER_INVENTORY_STATUS.CANCELLED\n ? pickingWorksheet\n ? ORDER_INVENTORY_STATUS.PICKING\n : ORDER_INVENTORY_STATUS.PENDING\n : existingOrderInv.status\n }\n\n let existingWorksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n worksheet: { id: pickingWorksheet.id },\n type: WORKSHEET_TYPE.PICKING,\n targetInventory: { id: existingOrderInv.id }\n }\n })\n\n if (existingWorksheetDetail) {\n existingWorksheetDetail = {\n ...existingWorksheetDetail,\n targetProduct: newOrderInv.orderProduct,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n\n await tx.getRepository(WorksheetDetail).save(existingWorksheetDetail)\n }\n }\n\n if (pickingWorksheet) {\n // if has picking worksheet, status will be deactivated to prevent any action from warehouse operator until office admin has confirmation\n pickingWorksheet = {\n ...pickingWorksheet,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n\n let savedOrderInv: OrderInventory = new OrderInventory()\n savedOrderInv.name = newOrderInv.name\n savedOrderInv.type = newOrderInv.type\n savedOrderInv.releaseQty = newOrderInv.releaseQty\n savedOrderInv.releaseUomValue = newOrderInv.releaseUomValue\n savedOrderInv.batchId = newOrderInv.batchId\n savedOrderInv.batchIdRef = newOrderInv.batchIdRef\n savedOrderInv.packingType = newOrderInv.packingType\n savedOrderInv.uom = newOrderInv.uom\n savedOrderInv.product = newOrderInv.product\n savedOrderInv.inventory = newOrderInv.inventory\n savedOrderInv.status = newOrderInv.status\n savedOrderInv.releaseGood = newOrderInv.releaseGood\n savedOrderInv.orderProduct = newOrderInv.orderProduct\n savedOrderInv.bizplace = newOrderInv.bizplace\n savedOrderInv.domain = domain\n savedOrderInv.creator = user\n savedOrderInv.updater = user\n\n if (newOrderInv?.id) {\n // newOrderInv will have id if it was updated from existingOrderInv\n // this solution will remove ix_order-inventory_0 unique error\n // ** please revise this resolver in future. looks like there's few\n // things that can refactor\n //@ts-ignore\n savedOrderInv.id = newOrderInv.id\n }\n\n savedOrderInv = await tx.getRepository(OrderInventory).save(savedOrderInv)\n\n if (!existingOrderInv && pickingWorksheet) {\n // if this is a new orderInventory and has existing worksheet then generate a new worksheet detail for it\n //@ts-ignore\n await generatePickingWorksheetDetail(tx, domain, user, pickingWorksheet, savedOrderInv)\n }\n }\n }\n\n await tx.getRepository(Worksheet).save(pickingWorksheet)\n }\n\n if (loadingWorksheet) {\n // if has loading worksheet, status will be deactivated to prevent any action from warehouse operator until office admin has confirmation\n loadingWorksheet = {\n ...loadingWorksheet,\n status: WORKSHEET_STATUS.DEACTIVATED\n }\n\n await tx.getRepository(Worksheet).save(loadingWorksheet)\n }\n\n // Update Order Product Release Qty\n let rgOrderProducts: OrderProduct[] = await tx\n .getRepository(OrderProduct)\n .find({ where: { domain: { id: domain.id }, releaseGood: { id: releaseGood.id } } })\n\n await Promise.all(\n rgOrderProducts.map(async op => {\n const orderInventories: OrderInventory[] = await tx.getRepository(OrderInventory).find({\n where: {\n domain: { id: domain.id },\n releaseGood: { id: releaseGood.id },\n orderProduct: { id: op.id },\n status: Not(\n In([\n ORDER_INVENTORY_STATUS.TERMINATED,\n ORDER_INVENTORY_STATUS.CANCELLED,\n ORDER_INVENTORY_STATUS.PENDING_CANCEL\n ])\n )\n }\n })\n\n let totalReleaseQty: number = orderInventories.reduce((total, currentValue) => {\n total += currentValue.releaseQty\n return total\n }, 0)\n\n let totalReleaseUomValue: number = orderInventories.reduce((total, currentValue) => {\n total += currentValue.releaseUomValue\n return total\n }, 0)\n\n let updateOPInfo: any = {\n releaseQty: totalReleaseQty,\n releaseUomValue: totalReleaseUomValue\n }\n\n if (totalReleaseQty <= 0) {\n updateOPInfo.status = ORDER_PRODUCT_STATUS.TERMINATED\n }\n\n await tx.getRepository(OrderProduct).update({ id: op.id }, updateOPInfo)\n })\n )\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ export declare const Query: {
2
+ pageSettings(_: any, { codes, partners }: {
3
+ codes: any;
4
+ partners: any;
5
+ }, context: ResolverContext): Promise<any[]>;
6
+ };
7
+ export declare const Mutation: {
8
+ addReleaseGoodProducts(_: any, { name, orderInventories, existingOrderInventories }: {
9
+ name: any;
10
+ orderInventories: any;
11
+ existingOrderInventories: any;
12
+ }, context: ResolverContext): Promise<void>;
13
+ };
@@ -0,0 +1,6 @@
1
+ export declare const pageSettings: {
2
+ pageSettings(_: any, { codes, partners }: {
3
+ codes: any;
4
+ partners: any;
5
+ }, context: ResolverContext): Promise<any[]>;
6
+ };
@@ -26,12 +26,7 @@ exports.pageSettings = {
26
26
  async function queryCommonCode(codes, domain, tx, context) {
27
27
  const codeQb = tx.getRepository(code_base_1.CommonCode).createQueryBuilder('cc');
28
28
  (0, shell_1.buildQuery)(codeQb, { filters: codes }, context);
29
- codes = (await codeQb
30
- .leftJoinAndSelect('cc.details', 'ccdet')
31
- .orderBy('cc.name')
32
- .addOrderBy('ccdet.rank')
33
- .addOrderBy('ccdet.name')
34
- .getMany()).map((cc) => {
29
+ codes = (await codeQb.leftJoinAndSelect('cc.details', 'ccdet').orderBy('cc.name').addOrderBy('ccdet.rank').addOrderBy('ccdet.name').getMany()).map((cc) => {
35
30
  return {
36
31
  id: cc.id,
37
32
  name: cc.name,
@@ -72,13 +67,13 @@ async function queryPartners(partners, domain, tx, context) {
72
67
  else {
73
68
  convertedParams.where.id = (0, typeorm_1.In)(partnersBizplaceIds);
74
69
  }
75
- partners = ((await tx.getRepository(biz_base_1.Bizplace).find(Object.assign(Object.assign({}, convertedParams), { relations: ['domain', 'company', 'users', 'creator', 'updater'] }))).map((biz) => {
70
+ partners = (await tx.getRepository(biz_base_1.Bizplace).find(Object.assign(Object.assign({}, convertedParams), { relations: ['domain', 'company', 'users', 'creator', 'updater'] }))).map((biz) => {
76
71
  return {
77
72
  id: biz.id,
78
73
  name: biz.name,
79
- description: biz.description,
74
+ description: biz.description
80
75
  };
81
- }));
76
+ });
82
77
  return {
83
78
  type: 'partner',
84
79
  details: partners
@@ -1 +1 @@
1
- {"version":3,"file":"page-settings.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/other/page-settings.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository, EntityManager, In } from 'typeorm'\n\nimport { Sequence, SEQUENCE_TYPE } from '@things-factory/id-rule-base'\nimport { buildQuery, Domain, ListParam, convertListParams } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport {\n getMyBizplace,\n getPartnerBizplaceIds,\n getPartnersBizplaces,\n getPartnersCompanyBizplaces,\n getPermittedBizplaceIds,\n Bizplace\n} from '@things-factory/biz-base'\n\nimport { CommonCode as CommonCodeEntity, CommonCodeDetail as CommonCodeDetailEntity } from '@things-factory/code-base'\n\nexport const pageSettings = {\n async pageSettings(_: any, { codes, partners }, context: any) {\n const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state\n try {\n let promiseTask = []\n if (codes) {\n promiseTask.push(queryCommonCode(codes, domain, tx, context))\n }\n\n if (partners) {\n promiseTask.push(queryPartners(partners, domain, tx, context))\n }\n\n return await Promise.all(promiseTask)\n } catch (error) {\n throw error\n }\n }\n}\n\nasync function queryCommonCode(codes, domain, tx, context) {\n const codeQb = tx.getRepository(CommonCodeEntity).createQueryBuilder('cc')\n buildQuery(codeQb, { filters: codes }, context)\n\n codes = (await codeQb\n .leftJoinAndSelect('cc.details', 'ccdet')\n .orderBy('cc.name')\n .addOrderBy('ccdet.rank')\n .addOrderBy('ccdet.name')\n .getMany()).map((cc: CommonCodeEntity) => {\n return {\n id: cc.id,\n name: cc.name,\n description: cc.description,\n settingDetails: cc.details.map(det => {\n return {\n id: det.id,\n name: det.name,\n description: det.description,\n rank: det.rank\n }\n })\n }\n })\n\n return {\n type: 'code',\n details: codes\n }\n}\n\nasync function queryPartners(partners, domain, tx, context) {\n let partnersBizplaceIds = []\n let bizplaceIndex: any = partners.filters?.findIndex(x => x.name === 'bizplace')\n if (bizplaceIndex && bizplaceIndex > -1) {\n partnersBizplaceIds = partners.filters\n .filter(x => x.name === 'bizplace')\n .map(item => {\n return item.value\n })\n partners.filters.splice(bizplaceIndex, 1)\n }\n\n const convertedParams = convertListParams({ filters: partners })\n\n if (!(partnersBizplaceIds.length > 0)) {\n const partnersBizplaces: Bizplace[] = await getPartnersBizplaces(context.state.domain, context.state.user)\n partnersBizplaceIds = partnersBizplaces.map((bizplace: Bizplace) => bizplace.id || null)\n convertedParams.where.id = In(partnersBizplaceIds)\n } else {\n convertedParams.where.id = In(partnersBizplaceIds)\n }\n\n partners = ((await tx.getRepository(Bizplace).find({\n ...convertedParams,\n relations: ['domain', 'company', 'users', 'creator', 'updater']\n })).map((biz: Bizplace) => {\n return {\n id: biz.id,\n name: biz.name,\n description: biz.description,\n }\n }))\n\n return {\n type: 'partner',\n details: partners\n }\n}"]}
1
+ {"version":3,"file":"page-settings.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/other/page-settings.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository, EntityManager, In } from 'typeorm'\n\nimport { Sequence, SEQUENCE_TYPE } from '@things-factory/id-rule-base'\nimport { buildQuery, Domain, ListParam, convertListParams } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { getMyBizplace, getPartnerBizplaceIds, getPartnersBizplaces, getPartnersCompanyBizplaces, getPermittedBizplaceIds, Bizplace } from '@things-factory/biz-base'\n\nimport { CommonCode as CommonCodeEntity, CommonCodeDetail as CommonCodeDetailEntity } from '@things-factory/code-base'\n\nexport const pageSettings = {\n async pageSettings(_: any, { codes, partners }, context: ResolverContext) {\n const { domain, user, tx } = context.state\n try {\n let promiseTask = []\n if (codes) {\n promiseTask.push(queryCommonCode(codes, domain, tx, context))\n }\n\n if (partners) {\n promiseTask.push(queryPartners(partners, domain, tx, context))\n }\n\n return await Promise.all(promiseTask)\n } catch (error) {\n throw error\n }\n }\n}\n\nasync function queryCommonCode(codes, domain, tx, context) {\n const codeQb = tx.getRepository(CommonCodeEntity).createQueryBuilder('cc')\n buildQuery(codeQb, { filters: codes }, context)\n\n codes = (await codeQb.leftJoinAndSelect('cc.details', 'ccdet').orderBy('cc.name').addOrderBy('ccdet.rank').addOrderBy('ccdet.name').getMany()).map(\n (cc: CommonCodeEntity) => {\n return {\n id: cc.id,\n name: cc.name,\n description: cc.description,\n settingDetails: cc.details.map(det => {\n return {\n id: det.id,\n name: det.name,\n description: det.description,\n rank: det.rank\n }\n })\n }\n }\n )\n\n return {\n type: 'code',\n details: codes\n }\n}\n\nasync function queryPartners(partners, domain, tx, context) {\n let partnersBizplaceIds = []\n let bizplaceIndex: any = partners.filters?.findIndex(x => x.name === 'bizplace')\n if (bizplaceIndex && bizplaceIndex > -1) {\n partnersBizplaceIds = partners.filters\n .filter(x => x.name === 'bizplace')\n .map(item => {\n return item.value\n })\n partners.filters.splice(bizplaceIndex, 1)\n }\n\n const convertedParams = convertListParams({ filters: partners })\n\n if (!(partnersBizplaceIds.length > 0)) {\n const partnersBizplaces: Bizplace[] = await getPartnersBizplaces(context.state.domain, context.state.user)\n partnersBizplaceIds = partnersBizplaces.map((bizplace: Bizplace) => bizplace.id || null)\n convertedParams.where.id = In(partnersBizplaceIds)\n } else {\n convertedParams.where.id = In(partnersBizplaceIds)\n }\n\n partners = (\n await tx.getRepository(Bizplace).find({\n ...convertedParams,\n relations: ['domain', 'company', 'users', 'creator', 'updater']\n })\n ).map((biz: Bizplace) => {\n return {\n id: biz.id,\n name: biz.name,\n description: biz.description\n }\n })\n\n return {\n type: 'partner',\n details: partners\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const costingReport: {
3
+ costingReport(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ items: any;
5
+ total: any;
6
+ }>;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"costing-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/costing-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Filter, ListParam } from '@things-factory/shell'\n\nimport { rawProductsQuery } from '../../../utils'\n\nexport const costingReport = {\n async costingReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n let bizplaceFilter: Filter = { name: '', operator: '', value: '' }\n let userFilter = params.filters.find(data => data.name === 'user')\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n\n if (userFilter) {\n const user = (await tx.getRepository(User).findOne({\n where: { id: userFilter.value },\n relations: ['bizplaces']\n })) as User & { bizplaces: Bizplace[] }\n\n const bizplace: Bizplace = user.bizplaces[0]\n\n if (!bizplace) throw 'Invalid input'\n\n bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }\n } else {\n bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n }\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await rawProductsQuery(tx, params, bizplace)\n\n await tx.query(\n `\n create temp table tmp_outbound_ord on commit drop as (\n select p.sku, rih.domain_id, rih.bizplace_id, rih.product_id, rih.packing_type, rih.packing_size, coalesce(rih.uom, pd.uom, pd2.uom) as uom, \n sum(rih.qty) as total_picked_qty, sum(rih.uom_value) as total_picked_uom_value\n from reduced_inventory_histories rih \n inner join inventories inv on inv.domain_id = rih.domain_id and inv.pallet_id = rih.pallet_id\n left join product_details pd on pd.product_id = rih.product_id and pd.packing_type = rih.packing_type and pd.packing_size = rih.packing_size\n left join product_details pd2 on pd2.product_id = rih.product_id and pd2.is_default = true\n left join products p on p.id = rih.product_id \n where rih.domain_id = $1\n and inv.bizplace_id = $2\n and rih.created_at >= $3 and rih.created_at <= $4\n and rih.transaction_type = 'PICKING'\n group by p.sku, rih.domain_id, rih.bizplace_id, rih.product_id, rih.packing_type, rih.packing_size, coalesce(rih.uom, pd.uom, pd2.uom)\n );\n `,\n [context.state.domain.id, bizplace.id, fromDate.value, toDate.value]\n )\n\n await tx.query(\n `\n create temp table tmp_stored_inv on commit drop as (\n select src2.sku, src2.domain_id, src2.bizplace_id, src2.pallet_id, src2.product_id, src2.packing_type, src2.packing_size, src2.uom, \n to_char(src2.created_at, 'YYYY-MM') as created_year_month, sum(closing_qty) as closing_qty from (\n select distinct on (rih.pallet_id) p.sku, rih.domain_id, rih.bizplace_id, rih.pallet_id, rih.product_id, rih.packing_type, rih.packing_size, \n coalesce(rih.uom, pd.uom, pd2.uom) as uom, \n rih.created_at, rih.transaction_type, rih.status, rih.opening_qty + rih.qty as closing_qty\n from reduced_inventory_histories rih \n inner join inventories i on i.domain_id = rih.domain_id and i.pallet_id = rih.pallet_id \n left join product_details pd on pd.product_id = rih.product_id and pd.packing_type = rih.packing_type and pd.packing_size = rih.packing_size\n left join product_details pd2 on pd2.product_id = rih.product_id and pd2.is_default = true\n left join products p on p.id = rih.product_id \n where rih.domain_id = $1 \n and i.bizplace_id = $2 \n and rih.created_at <= $3\n order by rih.pallet_id, rih.seq desc\n ) src2 where src2.status <> 'TERMINATED'\n and exists (\n select * from tmp_outbound_ord outboundOrd\n where outboundOrd.domain_id = src2.domain_id\n and outboundOrd.bizplace_id = src2.bizplace_id \n and outboundOrd.product_id = src2.product_id \n and outboundOrd.packing_type = src2.packing_type\n and outboundOrd.packing_size = src2.packing_size\n and outboundOrd.uom = src2.uom\n )\n group by src2.sku, src2.domain_id, src2.bizplace_id, src2.pallet_id, src2.product_id, src2.packing_type, src2.packing_size, src2.uom, to_char(src2.created_at, 'YYYY-MM')\n );\n `,\n [context.state.domain.id, bizplace.id, toDate.value]\n )\n\n await tx.query(\n `\n create temp table temp_costing_report on commit drop as (\n WITH RECURSIVE cte_forwarded_cost as (\n select src.domain_id, src.bizplace_id, src.product_id, src.packing_type, src.packing_size, src.uom, TO_DATE(src.created_year_month,'YYYY-MM')::timestamp as running_year_month,\n sum(src.qty) as qty, sum(src.total_cost)/ sum(src.qty) as monthly_avg_cost, \n coalesce(sum(src.qty)) as closing_qty from (\n select distinct on (pallet_id) \n ih.domain_id, ih.bizplace_id, ih.pallet_id, ih.unit_cost, (ih.unit_cost * (ih.opening_qty + ih.qty)) as total_cost, ih.status, ih.transaction_type, ih.product_id, ih.packing_type, ih.packing_size, coalesce(ih.uom, pd.uom) as uom, \n ih.created_at, to_char(ih.created_at, 'YYYY-MM') as created_year_month,\n ih.opening_qty, \n ih.qty as transaction_qty, \n ih.opening_qty + ih.qty as qty, \n ih.opening_uom_value, \n ih.uom_value as transaction_uom_value, \n ih.opening_uom_value + ih.uom_value as uom_value\n from reduced_inventory_histories ih \n inner join inventories i on i.domain_id = ih.domain_id and i.pallet_id = ih.pallet_id \n left join product_details pd on pd.product_id = ih.product_id and pd.packing_type = ih.packing_type and pd.packing_size = ih.packing_size\n where ih.domain_id = $1 \n and i.bizplace_id = $2 \n and ih.created_at <= $3 and ih.unit_cost is not null\n and exists (\n select * from tmp_outbound_ord outboundOrd\n where outboundOrd.domain_id = ih.domain_id\n and outboundOrd.bizplace_id = ih.bizplace_id \n and outboundOrd.product_id = ih.product_id \n and outboundOrd.packing_type = ih.packing_type\n and outboundOrd.packing_size = ih.packing_size\n and outboundOrd.uom = ih.uom\n )\n order by ih.pallet_id, ih.seq\n ) src\n group by src.domain_id, src.bizplace_id, src.product_id, src.packing_type, src.packing_size, src.uom, src.created_year_month\n union all\n select dt1.domain_id, dt1.bizplace_id, dt1.product_id, dt1.packing_type, dt1.packing_size, dt1.uom, \n dt1.running_year_month + interval '1 month' as running_year_month, dt1.qty, dt1.monthly_avg_cost, dt1.closing_qty \n from cte_forwarded_cost dt1\n where dt1.running_year_month + interval '1 month' < $3\n ) select fc.*, -outboundord.total_picked_qty as \"qty\", -outboundord.total_picked_uom_value as \"uom_value\", (-outboundord.total_picked_qty * fc.weighted_avg_unit_cost) as \"total_cost\" from (\n select p.sku as \"product_sku\", p.\"name\" as \"product_name\", p.description as \"product_description\", p.\"type\" as \"product_type\",\n fc.domain_id, fc.bizplace_id, fc.product_id, fc.packing_type, fc.packing_size, fc.uom, fc.running_year_month,\n ROUND(cast(sum(fc.monthly_avg_cost * fc.closing_qty) / sum(fc.qty) as numeric),2) as \"weighted_avg_unit_cost\" \n from cte_forwarded_cost fc\n left join products p on p.id = fc.product_id \n where running_year_month = to_date(to_char($3::date, 'YYYY-MM'),'YYYY-MM')::timestamp\n group by p.sku, p.\"name\", p.description, p.\"type\", fc.domain_id, fc.bizplace_id, fc.product_id, fc.packing_type, fc.packing_size, fc.uom, fc.running_year_month\n ) fc \n left join tmp_outbound_ord outboundord on outboundord.domain_id = fc.domain_id\n and outboundord.bizplace_id = fc.bizplace_id \n and outboundord.product_id = fc.product_id \n and outboundord.packing_type = fc.packing_type\n and outboundord.packing_size = fc.packing_size\n and outboundord.uom = fc.uom\n );\n `,\n [context.state.domain.id, bizplace.id, toDate.value]\n )\n\n const total: any = await tx.query(`\n select count(*) from temp_costing_report\n `)\n\n const result: any = await tx.query(\n `\n select * from temp_costing_report\n offset $1 limit $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n let items = result.map(itm => {\n let data = {\n bizplace: {\n description: bizplace.description,\n name: bizplace.name\n },\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description,\n type: itm.product_type\n },\n qty: itm.qty,\n uom: itm.uom,\n uomValue: itm.uom_value,\n weightedAvgUnitCost: itm.weighted_avg_unit_cost,\n totalCost: itm.total_cost\n }\n\n return data\n })\n\n return {\n items,\n total: total[0].count\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"costing-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/costing-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Filter, ListParam } from '@things-factory/shell'\n\nimport { rawProductsQuery } from '../../../utils'\n\nexport const costingReport = {\n async costingReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n let bizplaceFilter: Filter = { name: '', operator: '', value: '' }\n let userFilter = params.filters.find(data => data.name === 'user')\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n\n if (userFilter) {\n const user = (await tx.getRepository(User).findOne({\n where: { id: userFilter.value },\n relations: ['bizplaces']\n })) as User & { bizplaces: Bizplace[] }\n\n const bizplace: Bizplace = user.bizplaces[0]\n\n if (!bizplace) throw 'Invalid input'\n\n bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }\n } else {\n bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n }\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await rawProductsQuery(tx, params, bizplace)\n\n await tx.query(\n `\n create temp table tmp_outbound_ord on commit drop as (\n select p.sku, rih.domain_id, rih.bizplace_id, rih.product_id, rih.packing_type, rih.packing_size, coalesce(rih.uom, pd.uom, pd2.uom) as uom, \n sum(rih.qty) as total_picked_qty, sum(rih.uom_value) as total_picked_uom_value\n from reduced_inventory_histories rih \n inner join inventories inv on inv.domain_id = rih.domain_id and inv.pallet_id = rih.pallet_id\n left join product_details pd on pd.product_id = rih.product_id and pd.packing_type = rih.packing_type and pd.packing_size = rih.packing_size\n left join product_details pd2 on pd2.product_id = rih.product_id and pd2.is_default = true\n left join products p on p.id = rih.product_id \n where rih.domain_id = $1\n and inv.bizplace_id = $2\n and rih.created_at >= $3 and rih.created_at <= $4\n and rih.transaction_type = 'PICKING'\n group by p.sku, rih.domain_id, rih.bizplace_id, rih.product_id, rih.packing_type, rih.packing_size, coalesce(rih.uom, pd.uom, pd2.uom)\n );\n `,\n [context.state.domain.id, bizplace.id, fromDate.value, toDate.value]\n )\n\n await tx.query(\n `\n create temp table tmp_stored_inv on commit drop as (\n select src2.sku, src2.domain_id, src2.bizplace_id, src2.pallet_id, src2.product_id, src2.packing_type, src2.packing_size, src2.uom, \n to_char(src2.created_at, 'YYYY-MM') as created_year_month, sum(closing_qty) as closing_qty from (\n select distinct on (rih.pallet_id) p.sku, rih.domain_id, rih.bizplace_id, rih.pallet_id, rih.product_id, rih.packing_type, rih.packing_size, \n coalesce(rih.uom, pd.uom, pd2.uom) as uom, \n rih.created_at, rih.transaction_type, rih.status, rih.opening_qty + rih.qty as closing_qty\n from reduced_inventory_histories rih \n inner join inventories i on i.domain_id = rih.domain_id and i.pallet_id = rih.pallet_id \n left join product_details pd on pd.product_id = rih.product_id and pd.packing_type = rih.packing_type and pd.packing_size = rih.packing_size\n left join product_details pd2 on pd2.product_id = rih.product_id and pd2.is_default = true\n left join products p on p.id = rih.product_id \n where rih.domain_id = $1 \n and i.bizplace_id = $2 \n and rih.created_at <= $3\n order by rih.pallet_id, rih.seq desc\n ) src2 where src2.status <> 'TERMINATED'\n and exists (\n select * from tmp_outbound_ord outboundOrd\n where outboundOrd.domain_id = src2.domain_id\n and outboundOrd.bizplace_id = src2.bizplace_id \n and outboundOrd.product_id = src2.product_id \n and outboundOrd.packing_type = src2.packing_type\n and outboundOrd.packing_size = src2.packing_size\n and outboundOrd.uom = src2.uom\n )\n group by src2.sku, src2.domain_id, src2.bizplace_id, src2.pallet_id, src2.product_id, src2.packing_type, src2.packing_size, src2.uom, to_char(src2.created_at, 'YYYY-MM')\n );\n `,\n [context.state.domain.id, bizplace.id, toDate.value]\n )\n\n await tx.query(\n `\n create temp table temp_costing_report on commit drop as (\n WITH RECURSIVE cte_forwarded_cost as (\n select src.domain_id, src.bizplace_id, src.product_id, src.packing_type, src.packing_size, src.uom, TO_DATE(src.created_year_month,'YYYY-MM')::timestamp as running_year_month,\n sum(src.qty) as qty, sum(src.total_cost)/ sum(src.qty) as monthly_avg_cost, \n coalesce(sum(src.qty)) as closing_qty from (\n select distinct on (pallet_id) \n ih.domain_id, ih.bizplace_id, ih.pallet_id, ih.unit_cost, (ih.unit_cost * (ih.opening_qty + ih.qty)) as total_cost, ih.status, ih.transaction_type, ih.product_id, ih.packing_type, ih.packing_size, coalesce(ih.uom, pd.uom) as uom, \n ih.created_at, to_char(ih.created_at, 'YYYY-MM') as created_year_month,\n ih.opening_qty, \n ih.qty as transaction_qty, \n ih.opening_qty + ih.qty as qty, \n ih.opening_uom_value, \n ih.uom_value as transaction_uom_value, \n ih.opening_uom_value + ih.uom_value as uom_value\n from reduced_inventory_histories ih \n inner join inventories i on i.domain_id = ih.domain_id and i.pallet_id = ih.pallet_id \n left join product_details pd on pd.product_id = ih.product_id and pd.packing_type = ih.packing_type and pd.packing_size = ih.packing_size\n where ih.domain_id = $1 \n and i.bizplace_id = $2 \n and ih.created_at <= $3 and ih.unit_cost is not null\n and exists (\n select * from tmp_outbound_ord outboundOrd\n where outboundOrd.domain_id = ih.domain_id\n and outboundOrd.bizplace_id = ih.bizplace_id \n and outboundOrd.product_id = ih.product_id \n and outboundOrd.packing_type = ih.packing_type\n and outboundOrd.packing_size = ih.packing_size\n and outboundOrd.uom = ih.uom\n )\n order by ih.pallet_id, ih.seq\n ) src\n group by src.domain_id, src.bizplace_id, src.product_id, src.packing_type, src.packing_size, src.uom, src.created_year_month\n union all\n select dt1.domain_id, dt1.bizplace_id, dt1.product_id, dt1.packing_type, dt1.packing_size, dt1.uom, \n dt1.running_year_month + interval '1 month' as running_year_month, dt1.qty, dt1.monthly_avg_cost, dt1.closing_qty \n from cte_forwarded_cost dt1\n where dt1.running_year_month + interval '1 month' < $3\n ) select fc.*, -outboundord.total_picked_qty as \"qty\", -outboundord.total_picked_uom_value as \"uom_value\", (-outboundord.total_picked_qty * fc.weighted_avg_unit_cost) as \"total_cost\" from (\n select p.sku as \"product_sku\", p.\"name\" as \"product_name\", p.description as \"product_description\", p.\"type\" as \"product_type\",\n fc.domain_id, fc.bizplace_id, fc.product_id, fc.packing_type, fc.packing_size, fc.uom, fc.running_year_month,\n ROUND(cast(sum(fc.monthly_avg_cost * fc.closing_qty) / sum(fc.qty) as numeric),2) as \"weighted_avg_unit_cost\" \n from cte_forwarded_cost fc\n left join products p on p.id = fc.product_id \n where running_year_month = to_date(to_char($3::date, 'YYYY-MM'),'YYYY-MM')::timestamp\n group by p.sku, p.\"name\", p.description, p.\"type\", fc.domain_id, fc.bizplace_id, fc.product_id, fc.packing_type, fc.packing_size, fc.uom, fc.running_year_month\n ) fc \n left join tmp_outbound_ord outboundord on outboundord.domain_id = fc.domain_id\n and outboundord.bizplace_id = fc.bizplace_id \n and outboundord.product_id = fc.product_id \n and outboundord.packing_type = fc.packing_type\n and outboundord.packing_size = fc.packing_size\n and outboundord.uom = fc.uom\n );\n `,\n [context.state.domain.id, bizplace.id, toDate.value]\n )\n\n const total: any = await tx.query(`\n select count(*) from temp_costing_report\n `)\n\n const result: any = await tx.query(\n `\n select * from temp_costing_report\n offset $1 limit $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n let items = result.map(itm => {\n let data = {\n bizplace: {\n description: bizplace.description,\n name: bizplace.name\n },\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description,\n type: itm.product_type\n },\n qty: itm.qty,\n uom: itm.uom,\n uomValue: itm.uom_value,\n weightedAvgUnitCost: itm.weighted_avg_unit_cost,\n totalCost: itm.total_cost\n }\n\n return data\n })\n\n return {\n items,\n total: total[0].count\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const inboundOrderDetailsReport: {
3
+ inboundOrderDetailsReport(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ items: any;
5
+ total: any;
6
+ }>;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"inbound-order-details-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/inbound-order-details-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Filter, ListParam } from '@things-factory/shell'\n\nimport { rawProductsQuery } from '../../../utils'\n\nexport const inboundOrderDetailsReport = {\n async inboundOrderDetailsReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n let bizplaceFilter: Filter = { name: '', operator: '', value: '' }\n let userFilter = params.filters.find(data => data.name === 'user')\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let ganNo = params.filters.find(data => data.name === 'ganNo')\n let grnNo = params.filters.find(data => data.name === 'grnNo')\n let poNo = params.filters.find(data => data.name === 'poNo')\n let doNo = params.filters.find(data => data.name === 'doNo')\n\n if (userFilter) {\n const user = (await tx.getRepository(User).findOne({\n where: { id: userFilter.value },\n relations: ['bizplaces']\n })) as User & { bizplaces: Bizplace[] }\n\n const bizplace: Bizplace = user.bizplaces[0]\n\n if (!bizplace) throw 'Invalid input'\n\n bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }\n } else {\n bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n }\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await rawProductsQuery(tx, params, bizplace)\n\n let extraQueryFilters = ''\n if (ganNo) {\n extraQueryFilters = `${extraQueryFilters} and gan_no like '%${ganNo.value}%' `\n }\n if (grnNo) {\n extraQueryFilters = `${extraQueryFilters} and grn_no like '%${grnNo.value}%' `\n }\n if (poNo) {\n extraQueryFilters = `${extraQueryFilters} and purchase_order_name like '%${poNo.value}%' `\n }\n if (doNo) {\n extraQueryFilters = `${extraQueryFilters} and delivery_order_no like '%${doNo.value}%' `\n }\n\n await tx.query(\n `\n create temp table temp_inbound_order_report on commit drop as (\n select * from (\n select b2.id as \"bizplace_id\", b2.name as \"bizplace_name\", b2.description as \"bizplace_description\", \n grn.name as \"grn_no\", \n an.name as \"gan_no\", an.ref_no as \"ref_no_1\", an.ref_no_2 as \"ref_no_2\", an.ref_no_3 as \"ref_no_3\",\n an.loose_item, an.import_cargo, an.container_no, an.container_size, an.own_transport, \n u.name as \"accepted_by\", an.accepted_at,\n an.created_at as \"order_created_at\",\n w.started_at as \"unload_start\", w.ended_at as \"unload_complete\",\n w2.started_at as \"putaway_start\", w2.ended_at as \"putaway_complete\",\n an.delivery_order_no,\n cp.id as \"supplier_id\",\n cp.company_name as \"supplier_name\",\n po.id as \"purchase_order_id\",\n po.name as \"purchase_order_name\",\n row_number() over(partition by an.name order by an.name, p.sku, ih.batch_id) as \"order_line_item\",\n p.id as \"product_id\", p.sku as \"product_sku\", p.name as \"product_name\", p.description as \"product_description\", p.type as \"product_type\",\n ih.packing_type as \"pack_type\", op.packing_size as \"pack_size\",\n ih.qty, ih.uom_value, ih.uom, ih.pallet_id, ih.carton_id, ih.batch_id, ih.batch_id_ref,\n i.expiration_date, i.manufacture_date,\n ih.unit_cost,\n ih.created_at as \"unloaded_at\",u2.name as \"unloaded_by\", \n ih2.created_at as \"putaway_at\", u3.name as \"putaway_by\",\n coalesce((select volume from product_details pd where pd.product_id = i.product_id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_volume,\n coalesce((select nett_weight from product_details pd where pd.product_id = i.product_id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_nett_weight,\n coalesce((select gross_weight from product_details pd where pd.product_id = i.product_id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_gross_weight,\n coalesce((select weight_unit from product_details pd where pd.product_id = i.product_id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n order by created_at desc\n fetch first 1 rows only),'') as weight_unit\n from (\n select * from arrival_notices \n where domain_id = $1 and bizplace_id = $2 and status ='DONE'\n and created_at >= $3 and created_at <= $4) an \n left join goods_receival_notes grn on grn.arrival_notice_id = an.id\n left join purchase_orders po on po.id = an.purchase_order_id \n left join contact_points cp on cp.id = po.supplier_id\n inner join bizplaces b2 on b2.id = an.bizplace_id \n left join users u on u.id = an.accepted_by_id \n inner join order_inventories oi on oi.arrival_notice_id = an.id\n inner join inventories i on i.id = oi.inventory_id\n left join worksheets w on w.arrival_notice_id = an.id and w.\"type\" ='UNLOADING'\n inner join reduced_inventory_histories ih on ih.inventory_id = oi.inventory_id and ih.transaction_type ='UNLOADING' and ih.ref_order_id = an.id::varchar\n left join users u2 on u2.id = ih.creator_id\n left join worksheets w2 on w2.arrival_notice_id = an.id and w2.\"type\" ='PUTAWAY'\n inner join reduced_inventory_histories ih2 on ih2.inventory_id = oi.inventory_id and ih2.transaction_type ='PUTAWAY' and ih2.ref_order_id = an.id::varchar\n left join users u3 on u3.id = ih2.creator_id\n inner join temp_products p on p.id = ih.product_id \n inner join order_products op on op.arrival_notice_id = an.id and op.actual_pack_qty is not null and op.product_id = ih.product_id and \n op.batch_id = ih.batch_id and op.packing_type = ih.packing_type\n order by an.name, p.sku, ih.batch_id\n ) src\n where 1=1\n ${extraQueryFilters}\n )\n `,\n [context.state.domain.id, bizplace.id, fromDate.value, toDate.value]\n )\n\n const total: any = await tx.query(`\n select count(*) from temp_inbound_order_report\n `)\n\n const result: any = await tx.query(\n `\n select *, \n round((qty * unit_volume)::numeric ,4) as total_volume, \n round((qty * unit_nett_weight)::numeric ,4) as total_unit_nett_weight, \n round((qty * unit_gross_weight)::numeric ,4) as total_unit_gross_weight \n from temp_inbound_order_report\n offset $1 limit $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n let items = result.map(itm => {\n let data = {\n bizplace: {\n description: itm.bizplace_description,\n name: itm.bizplace_name\n },\n grnNo: itm.grn_no,\n ganNo: itm.gan_no,\n deliveryOrderNo: itm.delivery_order_no,\n refNo1: itm.ref_no_1,\n refNo2: itm.ref_no_2,\n refNo3: itm.ref_no_3,\n looseItem: itm.loose_item,\n importCargo: itm.import_cargo,\n containerNo: itm.container_no,\n containerSize: itm.container_size,\n ownTransport: itm.own_transport,\n acceptedBy: itm.accepted_by,\n acceptedAt: itm.accepted_at,\n orderCreatedAt: itm.order_created_at,\n unloadStart: itm.unload_start,\n unloadComplete: itm.unload_complete,\n putawayStart: itm.putaway_start,\n putawayComplete: itm.putaway_complete,\n orderLineItem: itm.order_line_item,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description,\n type: itm.product_type\n },\n purchaseOrderId: itm.purchase_order_id,\n purchaseOrderNo: itm.purchase_order_name,\n packType: itm.pack_type,\n packSize: itm.pack_size,\n qty: itm.qty,\n uomValue: itm.uom_value,\n uom: itm.uom,\n unitVolume: itm.unit_volume,\n unitCost: itm.unit_cost,\n totalVolume: itm.total_volume,\n unitNettWeight: itm.unit_nett_weight,\n totalUnitNettWeight: itm.total_unit_nett_weight,\n unitGrossWeight: itm.unit_gross_weight,\n totalUnitGrossWeight: itm.total_unit_gross_weight,\n weightUnit: itm.weight_unit,\n palletId: itm.pallet_id,\n cartonId: itm.carton_id,\n batchId: itm.batch_id,\n batchIdRef: itm.batch_id_ref,\n expirationDate: itm.expiration_date,\n manufactureDate: itm.manufacture_date,\n unloadedAt: itm.unloaded_at,\n unloadedBy: itm.unloaded_by,\n putawayAt: itm.putaway_at,\n putawayBy: itm.putaway_by\n }\n\n if (itm.supplier_id) {\n data['supplier'] = {\n id: itm.supplier_id,\n name: itm.supplier_name\n }\n }\n\n return data\n })\n\n return {\n items,\n total: total[0].count\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"inbound-order-details-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/inbound-order-details-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Filter, ListParam } from '@things-factory/shell'\n\nimport { rawProductsQuery } from '../../../utils'\n\nexport const inboundOrderDetailsReport = {\n async inboundOrderDetailsReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n let bizplaceFilter: Filter = { name: '', operator: '', value: '' }\n let userFilter = params.filters.find(data => data.name === 'user')\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let ganNo = params.filters.find(data => data.name === 'ganNo')\n let grnNo = params.filters.find(data => data.name === 'grnNo')\n let poNo = params.filters.find(data => data.name === 'poNo')\n let doNo = params.filters.find(data => data.name === 'doNo')\n\n if (userFilter) {\n const user = (await tx.getRepository(User).findOne({\n where: { id: userFilter.value },\n relations: ['bizplaces']\n })) as User & { bizplaces: Bizplace[] }\n\n const bizplace: Bizplace = user.bizplaces[0]\n\n if (!bizplace) throw 'Invalid input'\n\n bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }\n } else {\n bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n }\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await rawProductsQuery(tx, params, bizplace)\n\n let extraQueryFilters = ''\n if (ganNo) {\n extraQueryFilters = `${extraQueryFilters} and gan_no like '%${ganNo.value}%' `\n }\n if (grnNo) {\n extraQueryFilters = `${extraQueryFilters} and grn_no like '%${grnNo.value}%' `\n }\n if (poNo) {\n extraQueryFilters = `${extraQueryFilters} and purchase_order_name like '%${poNo.value}%' `\n }\n if (doNo) {\n extraQueryFilters = `${extraQueryFilters} and delivery_order_no like '%${doNo.value}%' `\n }\n\n await tx.query(\n `\n create temp table temp_inbound_order_report on commit drop as (\n select * from (\n select b2.id as \"bizplace_id\", b2.name as \"bizplace_name\", b2.description as \"bizplace_description\", \n grn.name as \"grn_no\", \n an.name as \"gan_no\", an.ref_no as \"ref_no_1\", an.ref_no_2 as \"ref_no_2\", an.ref_no_3 as \"ref_no_3\",\n an.loose_item, an.import_cargo, an.container_no, an.container_size, an.own_transport, \n u.name as \"accepted_by\", an.accepted_at,\n an.created_at as \"order_created_at\",\n w.started_at as \"unload_start\", w.ended_at as \"unload_complete\",\n w2.started_at as \"putaway_start\", w2.ended_at as \"putaway_complete\",\n an.delivery_order_no,\n cp.id as \"supplier_id\",\n cp.company_name as \"supplier_name\",\n po.id as \"purchase_order_id\",\n po.name as \"purchase_order_name\",\n row_number() over(partition by an.name order by an.name, p.sku, ih.batch_id) as \"order_line_item\",\n p.id as \"product_id\", p.sku as \"product_sku\", p.name as \"product_name\", p.description as \"product_description\", p.type as \"product_type\",\n ih.packing_type as \"pack_type\", op.packing_size as \"pack_size\",\n ih.qty, ih.uom_value, ih.uom, ih.pallet_id, ih.carton_id, ih.batch_id, ih.batch_id_ref,\n i.expiration_date, i.manufacture_date,\n ih.unit_cost,\n ih.created_at as \"unloaded_at\",u2.name as \"unloaded_by\", \n ih2.created_at as \"putaway_at\", u3.name as \"putaway_by\",\n coalesce((select volume from product_details pd where pd.product_id = i.product_id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_volume,\n coalesce((select nett_weight from product_details pd where pd.product_id = i.product_id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_nett_weight,\n coalesce((select gross_weight from product_details pd where pd.product_id = i.product_id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_gross_weight,\n coalesce((select weight_unit from product_details pd where pd.product_id = i.product_id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n order by created_at desc\n fetch first 1 rows only),'') as weight_unit\n from (\n select * from arrival_notices \n where domain_id = $1 and bizplace_id = $2 and status ='DONE'\n and created_at >= $3 and created_at <= $4) an \n left join goods_receival_notes grn on grn.arrival_notice_id = an.id\n left join purchase_orders po on po.id = an.purchase_order_id \n left join contact_points cp on cp.id = po.supplier_id\n inner join bizplaces b2 on b2.id = an.bizplace_id \n left join users u on u.id = an.accepted_by_id \n inner join order_inventories oi on oi.arrival_notice_id = an.id\n inner join inventories i on i.id = oi.inventory_id\n left join worksheets w on w.arrival_notice_id = an.id and w.\"type\" ='UNLOADING'\n inner join reduced_inventory_histories ih on ih.inventory_id = oi.inventory_id and ih.transaction_type ='UNLOADING' and ih.ref_order_id = an.id::varchar\n left join users u2 on u2.id = ih.creator_id\n left join worksheets w2 on w2.arrival_notice_id = an.id and w2.\"type\" ='PUTAWAY'\n inner join reduced_inventory_histories ih2 on ih2.inventory_id = oi.inventory_id and ih2.transaction_type ='PUTAWAY' and ih2.ref_order_id = an.id::varchar\n left join users u3 on u3.id = ih2.creator_id\n inner join temp_products p on p.id = ih.product_id \n inner join order_products op on op.arrival_notice_id = an.id and op.actual_pack_qty is not null and op.product_id = ih.product_id and \n op.batch_id = ih.batch_id and op.packing_type = ih.packing_type\n order by an.name, p.sku, ih.batch_id\n ) src\n where 1=1\n ${extraQueryFilters}\n )\n `,\n [context.state.domain.id, bizplace.id, fromDate.value, toDate.value]\n )\n\n const total: any = await tx.query(`\n select count(*) from temp_inbound_order_report\n `)\n\n const result: any = await tx.query(\n `\n select *, \n round((qty * unit_volume)::numeric ,4) as total_volume, \n round((qty * unit_nett_weight)::numeric ,4) as total_unit_nett_weight, \n round((qty * unit_gross_weight)::numeric ,4) as total_unit_gross_weight \n from temp_inbound_order_report\n offset $1 limit $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n let items = result.map(itm => {\n let data = {\n bizplace: {\n description: itm.bizplace_description,\n name: itm.bizplace_name\n },\n grnNo: itm.grn_no,\n ganNo: itm.gan_no,\n deliveryOrderNo: itm.delivery_order_no,\n refNo1: itm.ref_no_1,\n refNo2: itm.ref_no_2,\n refNo3: itm.ref_no_3,\n looseItem: itm.loose_item,\n importCargo: itm.import_cargo,\n containerNo: itm.container_no,\n containerSize: itm.container_size,\n ownTransport: itm.own_transport,\n acceptedBy: itm.accepted_by,\n acceptedAt: itm.accepted_at,\n orderCreatedAt: itm.order_created_at,\n unloadStart: itm.unload_start,\n unloadComplete: itm.unload_complete,\n putawayStart: itm.putaway_start,\n putawayComplete: itm.putaway_complete,\n orderLineItem: itm.order_line_item,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description,\n type: itm.product_type\n },\n purchaseOrderId: itm.purchase_order_id,\n purchaseOrderNo: itm.purchase_order_name,\n packType: itm.pack_type,\n packSize: itm.pack_size,\n qty: itm.qty,\n uomValue: itm.uom_value,\n uom: itm.uom,\n unitVolume: itm.unit_volume,\n unitCost: itm.unit_cost,\n totalVolume: itm.total_volume,\n unitNettWeight: itm.unit_nett_weight,\n totalUnitNettWeight: itm.total_unit_nett_weight,\n unitGrossWeight: itm.unit_gross_weight,\n totalUnitGrossWeight: itm.total_unit_gross_weight,\n weightUnit: itm.weight_unit,\n palletId: itm.pallet_id,\n cartonId: itm.carton_id,\n batchId: itm.batch_id,\n batchIdRef: itm.batch_id_ref,\n expirationDate: itm.expiration_date,\n manufactureDate: itm.manufacture_date,\n unloadedAt: itm.unloaded_at,\n unloadedBy: itm.unloaded_by,\n putawayAt: itm.putaway_at,\n putawayBy: itm.putaway_by\n }\n\n if (itm.supplier_id) {\n data['supplier'] = {\n id: itm.supplier_id,\n name: itm.supplier_name\n }\n }\n\n return data\n })\n\n return {\n items,\n total: total[0].count\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const inboundSerialNumberReport: {
3
+ inboundSerialNumberReport(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ items: any;
5
+ total: any;
6
+ }>;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"inbound-serial-number-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/inbound-serial-number-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Filter, ListParam } from '@things-factory/shell'\n\nimport { rawProductsQuery } from '../../../utils'\n\nexport const inboundSerialNumberReport = {\n async inboundSerialNumberReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n let bizplaceFilter: Filter = { name: '', operator: '', value: '' }\n let userFilter = params.filters.find(data => data.name === 'user')\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let orderNo = params.filters.find(data => data.name === 'orderNo')\n let ref = params.filters.find(data => data.name === 'ref')\n let palletId = params.filters.find(data => data.name === 'palletId')\n let cartonId = params.filters.find(data => data.name === 'cartonId')\n let serialNumber = params.filters.find(data => data.name === 'serialNumber')\n\n if (userFilter) {\n const user = (await tx.getRepository(User).findOne({\n where: { id: userFilter.value },\n relations: ['bizplaces']\n })) as User & { bizplaces: Bizplace[] }\n\n const bizplace: Bizplace = user.bizplaces[0]\n\n if (!bizplace) throw 'Invalid input'\n\n bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }\n } else {\n bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n }\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await rawProductsQuery(tx, params, bizplace)\n\n let extraQueryFilters = ''\n if (orderNo) {\n extraQueryFilters = `${extraQueryFilters} and order_no like '%${orderNo.value}%' `\n }\n if (palletId) {\n extraQueryFilters = `${extraQueryFilters} and pallet_id like '%${palletId.value}%' `\n }\n if (cartonId) {\n extraQueryFilters = `${extraQueryFilters} and carton_id like '%${cartonId.value}%' `\n }\n if (serialNumber) {\n extraQueryFilters = `${extraQueryFilters} and serial_number like '%${serialNumber.value}%' `\n }\n\n let refNoQueryFilter = ''\n if (ref) {\n let refValue = ref.value\n .toLowerCase()\n .split(',')\n .map(ref => {\n return \"'%\" + ref.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n refNoQueryFilter = `AND (\n Lower(an.ref_no) LIKE ANY(ARRAY[${refValue}])\n OR Lower(an.ref_no_2) LIKE ANY(ARRAY[${refValue}])\n OR Lower(an.ref_no_3) LIKE ANY(ARRAY[${refValue}])\n )`\n }\n\n await tx.query(\n `\n create temp table temp_inbound_serial_number_report on commit drop as (\n select * from ( \n select \n row_number() over(partition by an.\"name\" order by coalesce(w.started_at, ii.created_at), p.sku ) as \"no\",\n case when \"source\" = 'ADJUSTMENT' then 'adjustment' else an.\"name\" end as \"order_no\",\n i.pallet_id, i.carton_id,an.ref_no, an.ref_no_2, an.ref_no_3,\n p.id as \"product_id\", p.sku as \"product_sku\", p.brand_sku as \"product_brand_sku\",\n p.name as \"product_name\", p.description as \"product_description\", p.\"type\" as \"product_type\",\n coalesce(pd.volume, '0') as \"product_volume\", \n ii.serial_number, \n coalesce(w.started_at,ii.created_at) as \"etd\"\n from inventory_items ii \n inner join inventories i on i.id = ii.inventory_id \n inner join temp_products p on p.id = i.product_id\n left join product_details pd on pd.product_id = p.id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n left join arrival_notices an on an.id = ii.inbound_order_id::uuid\n left join worksheets w on w.arrival_notice_id = an.id and w.type = 'UNLOADING'\n where \n i.domain_id = $1 and i.bizplace_id = $2\n and coalesce(w.started_at, ii.created_at) between $3 and $4\n ${refNoQueryFilter}\n order by coalesce(w.started_at, ii.created_at), p.sku\n ) src\n where 1=1\n ${extraQueryFilters}\n )\n `,\n [context.state.domain.id, bizplace.id, fromDate.value, toDate.value]\n )\n\n const total: any = await tx.query(`\n select count(*) from temp_inbound_serial_number_report\n `)\n\n const result: any = await tx.query(\n `\n select *\n from temp_inbound_serial_number_report\n offset $1 limit $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n let items = result.map(itm => {\n let data = {\n no: itm.no,\n bizplace: {\n description: bizplace.description,\n name: bizplace.name\n },\n palletId: itm.pallet_id,\n cartonId: itm.carton_id,\n orderNo: itm.order_no,\n refNo1: itm.ref_no,\n refNo2: itm.ref_no_2,\n refNo3: itm.ref_no_3,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n brandSku: itm.product_brand_sku,\n name: itm.product_name,\n description: itm.product_description,\n type: itm.product_type,\n volume: itm.product_volume\n },\n serialNumber: itm.serial_number,\n etd: itm.etd\n }\n\n return data\n })\n\n return {\n items,\n total: total[0].count\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"inbound-serial-number-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/inbound-serial-number-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Filter, ListParam } from '@things-factory/shell'\n\nimport { rawProductsQuery } from '../../../utils'\n\nexport const inboundSerialNumberReport = {\n async inboundSerialNumberReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n let bizplaceFilter: Filter = { name: '', operator: '', value: '' }\n let userFilter = params.filters.find(data => data.name === 'user')\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let orderNo = params.filters.find(data => data.name === 'orderNo')\n let ref = params.filters.find(data => data.name === 'ref')\n let palletId = params.filters.find(data => data.name === 'palletId')\n let cartonId = params.filters.find(data => data.name === 'cartonId')\n let serialNumber = params.filters.find(data => data.name === 'serialNumber')\n\n if (userFilter) {\n const user = (await tx.getRepository(User).findOne({\n where: { id: userFilter.value },\n relations: ['bizplaces']\n })) as User & { bizplaces: Bizplace[] }\n\n const bizplace: Bizplace = user.bizplaces[0]\n\n if (!bizplace) throw 'Invalid input'\n\n bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }\n } else {\n bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n }\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await rawProductsQuery(tx, params, bizplace)\n\n let extraQueryFilters = ''\n if (orderNo) {\n extraQueryFilters = `${extraQueryFilters} and order_no like '%${orderNo.value}%' `\n }\n if (palletId) {\n extraQueryFilters = `${extraQueryFilters} and pallet_id like '%${palletId.value}%' `\n }\n if (cartonId) {\n extraQueryFilters = `${extraQueryFilters} and carton_id like '%${cartonId.value}%' `\n }\n if (serialNumber) {\n extraQueryFilters = `${extraQueryFilters} and serial_number like '%${serialNumber.value}%' `\n }\n\n let refNoQueryFilter = ''\n if (ref) {\n let refValue = ref.value\n .toLowerCase()\n .split(',')\n .map(ref => {\n return \"'%\" + ref.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n refNoQueryFilter = `AND (\n Lower(an.ref_no) LIKE ANY(ARRAY[${refValue}])\n OR Lower(an.ref_no_2) LIKE ANY(ARRAY[${refValue}])\n OR Lower(an.ref_no_3) LIKE ANY(ARRAY[${refValue}])\n )`\n }\n\n await tx.query(\n `\n create temp table temp_inbound_serial_number_report on commit drop as (\n select * from ( \n select \n row_number() over(partition by an.\"name\" order by coalesce(w.started_at, ii.created_at), p.sku ) as \"no\",\n case when \"source\" = 'ADJUSTMENT' then 'adjustment' else an.\"name\" end as \"order_no\",\n i.pallet_id, i.carton_id,an.ref_no, an.ref_no_2, an.ref_no_3,\n p.id as \"product_id\", p.sku as \"product_sku\", p.brand_sku as \"product_brand_sku\",\n p.name as \"product_name\", p.description as \"product_description\", p.\"type\" as \"product_type\",\n coalesce(pd.volume, '0') as \"product_volume\", \n ii.serial_number, \n coalesce(w.started_at,ii.created_at) as \"etd\"\n from inventory_items ii \n inner join inventories i on i.id = ii.inventory_id \n inner join temp_products p on p.id = i.product_id\n left join product_details pd on pd.product_id = p.id and pd.packing_type = i.packing_type and pd.packing_size = i.packing_size \n left join arrival_notices an on an.id = ii.inbound_order_id::uuid\n left join worksheets w on w.arrival_notice_id = an.id and w.type = 'UNLOADING'\n where \n i.domain_id = $1 and i.bizplace_id = $2\n and coalesce(w.started_at, ii.created_at) between $3 and $4\n ${refNoQueryFilter}\n order by coalesce(w.started_at, ii.created_at), p.sku\n ) src\n where 1=1\n ${extraQueryFilters}\n )\n `,\n [context.state.domain.id, bizplace.id, fromDate.value, toDate.value]\n )\n\n const total: any = await tx.query(`\n select count(*) from temp_inbound_serial_number_report\n `)\n\n const result: any = await tx.query(\n `\n select *\n from temp_inbound_serial_number_report\n offset $1 limit $2\n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n let items = result.map(itm => {\n let data = {\n no: itm.no,\n bizplace: {\n description: bizplace.description,\n name: bizplace.name\n },\n palletId: itm.pallet_id,\n cartonId: itm.carton_id,\n orderNo: itm.order_no,\n refNo1: itm.ref_no,\n refNo2: itm.ref_no_2,\n refNo3: itm.ref_no_3,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n brandSku: itm.product_brand_sku,\n name: itm.product_name,\n description: itm.product_description,\n type: itm.product_type,\n volume: itm.product_volume\n },\n serialNumber: itm.serial_number,\n etd: itm.etd\n }\n\n return data\n })\n\n return {\n items,\n total: total[0].count\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare const Query: any;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/index.ts"],"names":[],"mappings":";;;AAAA,iFAA0E;AAC1E,mFAA4E;AAE5E,qDAAgD;AAChD,iFAA0E;AAC1E,mFAA4E;AAC5E,iEAA2D;AAC3D,yEAAmE;AAEtD,QAAA,KAAK,yGACb,wDAAyB,GACzB,0DAA0B,GAC1B,8BAAa,GACb,wDAAyB,GACzB,0DAA0B,GAC1B,yCAAkB,GAClB,iDAAsB,EAC1B","sourcesContent":["import { inboundSerialNumberReport } from './inbound-serial-number-report'\nimport { outboundSerialNumberReport } from './outbound-serial-number-report'\n\nimport { costingReport } from './costing-report'\nimport { inboundOrderDetailsReport } from './inbound-order-details-report'\nimport { outboundOrderDetailsReport } from './outbound-order-details-report'\nimport { productLabelReport } from './product-label-report'\nimport { releaseInventoryReport } from './release-inventory-report'\n\nexport const Query = {\n ...inboundSerialNumberReport,\n ...outboundSerialNumberReport,\n ...costingReport,\n ...inboundOrderDetailsReport,\n ...outboundOrderDetailsReport,\n ...productLabelReport,\n ...releaseInventoryReport\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/index.ts"],"names":[],"mappings":";;;AAAA,iFAA0E;AAC1E,mFAA4E;AAE5E,qDAAgD;AAChD,iFAA0E;AAC1E,mFAA4E;AAC5E,iEAA2D;AAC3D,yEAAmE;AAEtD,QAAA,KAAK,GAAG,sGAChB,wDAAyB,GACzB,0DAA0B,GAC1B,8BAAa,GACb,wDAAyB,GACzB,0DAA0B,GAC1B,yCAAkB,GAClB,iDAAsB,CACnB,CAAA","sourcesContent":["import { inboundSerialNumberReport } from './inbound-serial-number-report'\nimport { outboundSerialNumberReport } from './outbound-serial-number-report'\n\nimport { costingReport } from './costing-report'\nimport { inboundOrderDetailsReport } from './inbound-order-details-report'\nimport { outboundOrderDetailsReport } from './outbound-order-details-report'\nimport { productLabelReport } from './product-label-report'\nimport { releaseInventoryReport } from './release-inventory-report'\n\nexport const Query = {\n ...inboundSerialNumberReport,\n ...outboundSerialNumberReport,\n ...costingReport,\n ...inboundOrderDetailsReport,\n ...outboundOrderDetailsReport,\n ...productLabelReport,\n ...releaseInventoryReport\n} as any\n"]}
@@ -0,0 +1,7 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const outboundOrderDetailsReport: {
3
+ outboundOrderDetailsReport(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ items: any;
5
+ total: any;
6
+ }>;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"outbound-order-details-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/outbound-order-details-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Filter, ListParam } from '@things-factory/shell'\n\nimport { rawProductsQuery } from '../../../utils'\n\nexport const outboundOrderDetailsReport = {\n async outboundOrderDetailsReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n let bizplaceFilter: Filter = { name: '', operator: '', value: '' }\n let userFilter = params.filters.find(data => data.name === 'user')\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let roNo = params.filters.find(data => data.name === 'roNo')\n let doNo = params.filters.find(data => data.name === 'doNo')\n let status = params.filters.find(data => data.name === 'status')\n\n if (userFilter) {\n const user = (await tx.getRepository(User).findOne({\n where: { id: userFilter.value },\n relations: ['bizplaces']\n })) as User & { bizplaces: Bizplace[] }\n\n const bizplace: Bizplace = user.bizplaces[0]\n\n if (!bizplace) throw 'Invalid input'\n\n bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }\n } else {\n bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n }\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await rawProductsQuery(tx, params, bizplace)\n\n let extraQueryFilters = ''\n if (roNo) {\n extraQueryFilters = `${extraQueryFilters} and ro_no like '%${roNo.value}%' `\n }\n if (doNo) {\n extraQueryFilters = `${extraQueryFilters} and delivery_order_no like '%${doNo.value}%' `\n }\n\n console.time('temp')\n await tx.query(\n `\n create temp table temp_outbound_order_report on commit drop as (\n select * from (\n select oi.id,\n oi.release_qty AS \"release_qty\", oi.picked_at, oi.picked_by, oi.packed_at, oi.packed_by, oi.loaded_at, oi.loaded_by,\n oi.release_qty as \"qty\", oi.release_uom_value as \"uom_value\", oi.return_to_location_qty, oi.return_to_location_uom_value,\n coalesce(do2.other_driver, td.name) as driver_name, \n coalesce(do2.truck_no, tv.name, rg.truck_no) as vehicle_no,\n do2.name AS \"delivery_order_no\", do2.delivery_date AS \"delivery_order_delivery_date\", do2.\"to\", do2.contact_point_ref_id, do2.pallet_qty,\n coalesce(do2.delivery_date_time, do2.delivery_date::timestamp, ms.dispatched_at, null) as \"dispatched_at\",\n rg.bizplace_id, $5 AS \"bizplace_name\", $6 AS \"bizplace_description\", \n coalesce( concat(do2.delivery_address_1, do2.delivery_address_2, do2.delivery_address_3, do2.delivery_address_4, do2.delivery_address_5, do2.postal_code, do2.country), concat(rg.delivery_address_1, rg.delivery_address_2, rg.delivery_address_3, rg.delivery_address_4, rg.delivery_address_5, rg.postal_code, rg.country)) as delivery_address,\n so.container_no, so.container_size,\n rg.export_option, rg.name AS \"ro_no\", rg.\"type\" as \"ro_type\", rg.ref_no AS \"ref_no_1\", rg.ref_no_2 AS \"ref_no_2\", rg.ref_no_3 AS \"ref_no_3\", rg.status as \"ro_status\", \n u1.name as \"order_created_by\", rg.created_at AS \"order_created_at\",\n rg.accepted_at, u4.name as accepted_by, rg.checked_remark_by, rg.checked_remark_at, coalesce(do2.own_collection, rg.own_transport) AS own_transport,\n p.id as \"product_id\", p.sku as \"product_sku\", p.name AS \"product_name\", p.description AS \"product_description\", p.type as \"product_type\",\n i.packing_type as \"pack_type\", i.packing_size as \"pack_size\", \n i.uom, i.unit_cost,\n i.id as inventory_id, i.pallet_id, i.carton_id, i.batch_id, i.batch_id_ref, i.expiration_date, i.manufacture_date,\n coalesce(ms.name,'') as manifest_no, coalesce(rg.manifested_at, ms.created_at) as manifested_at, coalesce(u6.name, u5.name) as manifested_by\n from release_goods rg\n left join users u1 on u1.id = rg.creator_id \n inner join order_inventories oi on rg.id = oi.release_good_id\n left join shipping_orders so on so.id = rg.shipping_order_id \n left join users u4 on u4.id = rg.accepted_by_id \n left join manifests ms on ms.id = rg.manifest_id\n left join users u5 on u5.id = ms.creator_id\n left join users u6 on u6.id = rg.manifested_by_id\n inner join inventories i on i.id = oi.inventory_id \n inner join temp_products p on p.id = oi.product_id\n left join delivery_orders do2 on do2.id = oi.delivery_order_id \n left join transport_drivers td ON td.id = do2.transport_driver_id \n left join transport_vehicles tv on tv.id = do2.transport_vehicle_id\n where rg.bizplace_id = $2 and rg.domain_id = $1\n and rg.created_at >= $3 and rg.created_at <= $4\n and oi.status <> 'REPLACED'\n ${status ? `and rg.status = '${status.value}' ` : ``}\n ) src\n where 1=1\n ${extraQueryFilters}\n )\n `,\n [context.state.domain.id, bizplace.id, fromDate.value, toDate.value, bizplace.name, bizplace.description]\n )\n\n console.timeEnd('temp')\n const total: any = await tx.query(`\n select count(*) from temp_outbound_order_report\n `)\n\n await tx.query(\n `\n create temp table temp_outbound_order_worksheet on commit drop as ( \n select oi.id, w.started_at, w.ended_at, w.type from temp_outbound_order_report oi \n inner join worksheet_details wd on wd.target_inventory_id = oi.id\n inner join worksheets w on w.id = wd.worksheet_id\n )\n `\n )\n\n console.time('result')\n const result: any = await tx.query(\n `\n select *, \n round((qty * unit_volume)::numeric ,4) as total_volume, \n round((qty * unit_nett_weight)::numeric ,4) as total_unit_nett_weight, \n round((qty * unit_gross_weight)::numeric ,4) as total_unit_gross_weight\n from (\n select oi.*,\n wpick.started_at as picking_start, wpick.ended_at as picking_complete,\n wpack.started_at as packing_start, wpack.ended_at as packing_complete,\n wsort.started_at as sorting_start, wsort.ended_at as sorting_complete,\n wload.started_at as loading_start, wload.ended_at as loading_complete,\n coalesce(delivery_address, concat(cp.address, cp.address_2)) as \"delivery_address\",\n coalesce((select volume from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_volume,\n coalesce((select nett_weight from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_nett_weight,\n coalesce((select gross_weight from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_gross_weight,\n coalesce((select weight_unit from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),'') as weight_unit,\n coalesce((select unit_cost from reduced_inventory_histories rih where \n rih.ref_order_id::uuid = oi.id and \n rih.inventory_id::uuid = oi.inventory_id and\n rih.transaction_type = 'PICKING'\n order by created_at desc\n fetch first 1 rows only), oi.unit_cost, 0) as unit_cost\n from temp_outbound_order_report oi\n left join contact_points cp on cp.id = oi.contact_point_ref_id\n left join temp_outbound_order_worksheet wpick on wpick.id = oi.id \n and (wpick.type= 'PICKING' OR wpick.type = 'BATCH_PICKING') \n left join temp_outbound_order_worksheet wpack on wpack.id = oi.id \n and wpack.type= 'PACKING'\n left join temp_outbound_order_worksheet wsort on wsort.id = oi.id \n and wsort.type= 'SORTING'\n left join temp_outbound_order_worksheet wload on wload.id = oi.id \n and wload.type= 'LOADING' \n order by oi.ro_no, oi.product_sku\n offset $1 limit $2\n ) src \n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n console.timeEnd('result')\n\n let items = result.map(itm => {\n return {\n bizplace: {\n id: itm.bizplace_id,\n name: itm.bizplace_name,\n description: itm.bizplace_description\n },\n doNo: itm.delivery_order_no,\n doDeliveryDate: itm.delivery_order_delivery_date,\n dispatchedAt: itm.dispatched_at,\n deliveryAddress: itm.delivery_address,\n manifestNo: itm.manifest_no,\n roNo: itm.ro_no,\n roType: itm.ro_type,\n status: itm.ro_status,\n refNo1: itm.ref_no_1,\n refNo3: itm.ref_no_3,\n refNo2: itm.ref_no_2,\n acceptedBy: itm.accepted_by,\n acceptedAt: itm.accepted_at,\n orderCreatedBy: itm.order_created_by,\n orderCreatedAt: itm.order_created_at,\n pickingStart: itm.picking_start,\n pickingComplete: itm.picking_complete,\n packingStart: itm.packing_start,\n packingComplete: itm.packing_complete,\n sortingStart: itm.sorting_start,\n sortingComplete: itm.sorting_complete,\n loadingStart: itm.loading_start,\n loadingComplete: itm.loading_complete,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description,\n type: itm.product_type\n },\n packType: itm.pack_type,\n packSize: itm.pack_size,\n qty: Math.abs(itm.qty),\n uomValue: Math.abs(itm.uom_value),\n uom: itm.uom,\n unitCost: itm.unit_cost,\n returnToLocationQty: itm.return_to_location_qty,\n returnToLocationUomValue: itm.return_to_location_uom_value,\n unitVolume: itm.unit_volume,\n totalVolume: itm.total_volume,\n unitNettWeight: itm.unit_nett_weight,\n totalUnitNettWeight: itm.total_unit_nett_weight,\n unitGrossWeight: itm.unit_gross_weight,\n totalUnitGrossWeight: itm.total_unit_gross_weight,\n weightUnit: itm.weight_unit,\n palletId: itm.pallet_id,\n cartonId: itm.carton_id,\n batchId: itm.batch_id,\n batchIdRef: itm.batch_id_ref,\n expirationDate: itm.expiration_date,\n manufactureDate: itm.manufacture_date,\n pickedAt: itm.picked_at,\n pickedBy: itm.picked_by,\n packedAt: itm.packed_at,\n packedBy: itm.packed_by,\n checkedRemarkBy: itm.checked_remark_by,\n checkedRemarkAt: itm.checked_remark_at,\n loadedAt: itm.loaded_at,\n loadedBy: itm.loaded_by,\n manifestedAt: itm.manifested_at,\n manifestedBy: itm.manifested_by,\n exportOption: itm.export_option,\n containerNo: itm.container_no,\n containerSize: itm.container_size,\n palletQty: itm.pallet_qty,\n transportOption: itm.own_transport ? 'Own Transport' : 'Warehouse Transport',\n vehicleNo: itm.vehicle_no,\n driverName: itm.driver_name\n }\n })\n\n return {\n items,\n total: total[0].count\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"outbound-order-details-report.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/reports/outbound-order-details-report.ts"],"names":[],"mappings":"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","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Filter, ListParam } from '@things-factory/shell'\n\nimport { rawProductsQuery } from '../../../utils'\n\nexport const outboundOrderDetailsReport = {\n async outboundOrderDetailsReport(_: any, params: ListParam, context: ResolverContext) {\n try {\n const { tx } = context.state\n let bizplaceFilter: Filter = { name: '', operator: '', value: '' }\n let userFilter = params.filters.find(data => data.name === 'user')\n let fromDate = params.filters.find(data => data.name === 'fromDate')\n let toDate = params.filters.find(data => data.name === 'toDate')\n let roNo = params.filters.find(data => data.name === 'roNo')\n let doNo = params.filters.find(data => data.name === 'doNo')\n let status = params.filters.find(data => data.name === 'status')\n\n if (userFilter) {\n const user = (await tx.getRepository(User).findOne({\n where: { id: userFilter.value },\n relations: ['bizplaces']\n })) as User & { bizplaces: Bizplace[] }\n\n const bizplace: Bizplace = user.bizplaces[0]\n\n if (!bizplace) throw 'Invalid input'\n\n bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }\n } else {\n bizplaceFilter = params.filters.find(data => data.name === 'bizplace')\n }\n\n if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({\n id: bizplaceFilter.value\n })\n\n await rawProductsQuery(tx, params, bizplace)\n\n let extraQueryFilters = ''\n if (roNo) {\n extraQueryFilters = `${extraQueryFilters} and ro_no like '%${roNo.value}%' `\n }\n if (doNo) {\n extraQueryFilters = `${extraQueryFilters} and delivery_order_no like '%${doNo.value}%' `\n }\n\n console.time('temp')\n await tx.query(\n `\n create temp table temp_outbound_order_report on commit drop as (\n select * from (\n select oi.id,\n oi.release_qty AS \"release_qty\", oi.picked_at, oi.picked_by, oi.packed_at, oi.packed_by, oi.loaded_at, oi.loaded_by,\n oi.release_qty as \"qty\", oi.release_uom_value as \"uom_value\", oi.return_to_location_qty, oi.return_to_location_uom_value,\n coalesce(do2.other_driver, td.name) as driver_name, \n coalesce(do2.truck_no, tv.name, rg.truck_no) as vehicle_no,\n do2.name AS \"delivery_order_no\", do2.delivery_date AS \"delivery_order_delivery_date\", do2.\"to\", do2.contact_point_ref_id, do2.pallet_qty,\n coalesce(do2.delivery_date_time, do2.delivery_date::timestamp, ms.dispatched_at, null) as \"dispatched_at\",\n rg.bizplace_id, $5 AS \"bizplace_name\", $6 AS \"bizplace_description\", \n coalesce( concat(do2.delivery_address_1, do2.delivery_address_2, do2.delivery_address_3, do2.delivery_address_4, do2.delivery_address_5, do2.postal_code, do2.country), concat(rg.delivery_address_1, rg.delivery_address_2, rg.delivery_address_3, rg.delivery_address_4, rg.delivery_address_5, rg.postal_code, rg.country)) as delivery_address,\n so.container_no, so.container_size,\n rg.export_option, rg.name AS \"ro_no\", rg.\"type\" as \"ro_type\", rg.ref_no AS \"ref_no_1\", rg.ref_no_2 AS \"ref_no_2\", rg.ref_no_3 AS \"ref_no_3\", rg.status as \"ro_status\", \n u1.name as \"order_created_by\", rg.created_at AS \"order_created_at\",\n rg.accepted_at, u4.name as accepted_by, rg.checked_remark_by, rg.checked_remark_at, coalesce(do2.own_collection, rg.own_transport) AS own_transport,\n p.id as \"product_id\", p.sku as \"product_sku\", p.name AS \"product_name\", p.description AS \"product_description\", p.type as \"product_type\",\n i.packing_type as \"pack_type\", i.packing_size as \"pack_size\", \n i.uom, i.unit_cost,\n i.id as inventory_id, i.pallet_id, i.carton_id, i.batch_id, i.batch_id_ref, i.expiration_date, i.manufacture_date,\n coalesce(ms.name,'') as manifest_no, coalesce(rg.manifested_at, ms.created_at) as manifested_at, coalesce(u6.name, u5.name) as manifested_by\n from release_goods rg\n left join users u1 on u1.id = rg.creator_id \n inner join order_inventories oi on rg.id = oi.release_good_id\n left join shipping_orders so on so.id = rg.shipping_order_id \n left join users u4 on u4.id = rg.accepted_by_id \n left join manifests ms on ms.id = rg.manifest_id\n left join users u5 on u5.id = ms.creator_id\n left join users u6 on u6.id = rg.manifested_by_id\n inner join inventories i on i.id = oi.inventory_id \n inner join temp_products p on p.id = oi.product_id\n left join delivery_orders do2 on do2.id = oi.delivery_order_id \n left join transport_drivers td ON td.id = do2.transport_driver_id \n left join transport_vehicles tv on tv.id = do2.transport_vehicle_id\n where rg.bizplace_id = $2 and rg.domain_id = $1\n and rg.created_at >= $3 and rg.created_at <= $4\n and oi.status <> 'REPLACED'\n ${status ? `and rg.status = '${status.value}' ` : ``}\n ) src\n where 1=1\n ${extraQueryFilters}\n )\n `,\n [context.state.domain.id, bizplace.id, fromDate.value, toDate.value, bizplace.name, bizplace.description]\n )\n\n console.timeEnd('temp')\n const total: any = await tx.query(`\n select count(*) from temp_outbound_order_report\n `)\n\n await tx.query(\n `\n create temp table temp_outbound_order_worksheet on commit drop as ( \n select oi.id, w.started_at, w.ended_at, w.type from temp_outbound_order_report oi \n inner join worksheet_details wd on wd.target_inventory_id = oi.id\n inner join worksheets w on w.id = wd.worksheet_id\n )\n `\n )\n\n console.time('result')\n const result: any = await tx.query(\n `\n select *, \n round((qty * unit_volume)::numeric ,4) as total_volume, \n round((qty * unit_nett_weight)::numeric ,4) as total_unit_nett_weight, \n round((qty * unit_gross_weight)::numeric ,4) as total_unit_gross_weight\n from (\n select oi.*,\n wpick.started_at as picking_start, wpick.ended_at as picking_complete,\n wpack.started_at as packing_start, wpack.ended_at as packing_complete,\n wsort.started_at as sorting_start, wsort.ended_at as sorting_complete,\n wload.started_at as loading_start, wload.ended_at as loading_complete,\n coalesce(delivery_address, concat(cp.address, cp.address_2)) as \"delivery_address\",\n coalesce((select volume from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_volume,\n coalesce((select nett_weight from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_nett_weight,\n coalesce((select gross_weight from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),0) as unit_gross_weight,\n coalesce((select weight_unit from product_details pd where pd.product_id = oi.product_id and pd.packing_type = oi.pack_type and pd.packing_size = oi.pack_size \n order by created_at desc\n fetch first 1 rows only),'') as weight_unit,\n coalesce((select unit_cost from reduced_inventory_histories rih where \n rih.ref_order_id::uuid = oi.id and \n rih.inventory_id::uuid = oi.inventory_id and\n rih.transaction_type = 'PICKING'\n order by created_at desc\n fetch first 1 rows only), oi.unit_cost, 0) as unit_cost\n from temp_outbound_order_report oi\n left join contact_points cp on cp.id = oi.contact_point_ref_id\n left join temp_outbound_order_worksheet wpick on wpick.id = oi.id \n and (wpick.type= 'PICKING' OR wpick.type = 'BATCH_PICKING') \n left join temp_outbound_order_worksheet wpack on wpack.id = oi.id \n and wpack.type= 'PACKING'\n left join temp_outbound_order_worksheet wsort on wsort.id = oi.id \n and wsort.type= 'SORTING'\n left join temp_outbound_order_worksheet wload on wload.id = oi.id \n and wload.type= 'LOADING' \n order by oi.ro_no, oi.product_sku\n offset $1 limit $2\n ) src \n `,\n [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]\n )\n\n console.timeEnd('result')\n\n let items = result.map(itm => {\n return {\n bizplace: {\n id: itm.bizplace_id,\n name: itm.bizplace_name,\n description: itm.bizplace_description\n },\n doNo: itm.delivery_order_no,\n doDeliveryDate: itm.delivery_order_delivery_date,\n dispatchedAt: itm.dispatched_at,\n deliveryAddress: itm.delivery_address,\n manifestNo: itm.manifest_no,\n roNo: itm.ro_no,\n roType: itm.ro_type,\n status: itm.ro_status,\n refNo1: itm.ref_no_1,\n refNo3: itm.ref_no_3,\n refNo2: itm.ref_no_2,\n acceptedBy: itm.accepted_by,\n acceptedAt: itm.accepted_at,\n orderCreatedBy: itm.order_created_by,\n orderCreatedAt: itm.order_created_at,\n pickingStart: itm.picking_start,\n pickingComplete: itm.picking_complete,\n packingStart: itm.packing_start,\n packingComplete: itm.packing_complete,\n sortingStart: itm.sorting_start,\n sortingComplete: itm.sorting_complete,\n loadingStart: itm.loading_start,\n loadingComplete: itm.loading_complete,\n product: {\n id: itm.product_id,\n sku: itm.product_sku,\n name: itm.product_name,\n description: itm.product_description,\n type: itm.product_type\n },\n packType: itm.pack_type,\n packSize: itm.pack_size,\n qty: Math.abs(itm.qty),\n uomValue: Math.abs(itm.uom_value),\n uom: itm.uom,\n unitCost: itm.unit_cost,\n returnToLocationQty: itm.return_to_location_qty,\n returnToLocationUomValue: itm.return_to_location_uom_value,\n unitVolume: itm.unit_volume,\n totalVolume: itm.total_volume,\n unitNettWeight: itm.unit_nett_weight,\n totalUnitNettWeight: itm.total_unit_nett_weight,\n unitGrossWeight: itm.unit_gross_weight,\n totalUnitGrossWeight: itm.total_unit_gross_weight,\n weightUnit: itm.weight_unit,\n palletId: itm.pallet_id,\n cartonId: itm.carton_id,\n batchId: itm.batch_id,\n batchIdRef: itm.batch_id_ref,\n expirationDate: itm.expiration_date,\n manufactureDate: itm.manufacture_date,\n pickedAt: itm.picked_at,\n pickedBy: itm.picked_by,\n packedAt: itm.packed_at,\n packedBy: itm.packed_by,\n checkedRemarkBy: itm.checked_remark_by,\n checkedRemarkAt: itm.checked_remark_at,\n loadedAt: itm.loaded_at,\n loadedBy: itm.loaded_by,\n manifestedAt: itm.manifested_at,\n manifestedBy: itm.manifested_by,\n exportOption: itm.export_option,\n containerNo: itm.container_no,\n containerSize: itm.container_size,\n palletQty: itm.pallet_qty,\n transportOption: itm.own_transport ? 'Own Transport' : 'Warehouse Transport',\n vehicleNo: itm.vehicle_no,\n driverName: itm.driver_name\n }\n })\n\n return {\n items,\n total: total[0].count\n }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { ListParam } from '@things-factory/shell';
2
+ export declare const outboundSerialNumberReport: {
3
+ outboundSerialNumberReport(_: any, params: ListParam, context: ResolverContext): Promise<{
4
+ items: any;
5
+ total: any;
6
+ }>;
7
+ };