@things-factory/sales-base 4.3.651 → 4.3.652

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 (430) hide show
  1. package/dist-server/constants/attachment-type.js +15 -0
  2. package/dist-server/constants/attachment-type.js.map +1 -0
  3. package/dist-server/constants/index.js +24 -0
  4. package/dist-server/constants/index.js.map +1 -0
  5. package/dist-server/constants/load-type.js +8 -0
  6. package/dist-server/constants/load-type.js.map +1 -0
  7. package/dist-server/constants/order.js +235 -0
  8. package/dist-server/constants/order.js.map +1 -0
  9. package/dist-server/constants/product-group-type.js +8 -0
  10. package/dist-server/constants/product-group-type.js.map +1 -0
  11. package/dist-server/constants/release-good.js +13 -0
  12. package/dist-server/constants/release-good.js.map +1 -0
  13. package/dist-server/constants/transfer-order-type.js +9 -0
  14. package/dist-server/constants/transfer-order-type.js.map +1 -0
  15. package/dist-server/constants/validation-error-code.js +7 -0
  16. package/dist-server/constants/validation-error-code.js.map +1 -0
  17. package/dist-server/constants/vas-target-type.js +26 -0
  18. package/dist-server/constants/vas-target-type.js.map +1 -0
  19. package/dist-server/controllers/ecommerce/ecommerce-controller.js +138 -0
  20. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -0
  21. package/dist-server/controllers/ecommerce/index.js +21 -0
  22. package/dist-server/controllers/ecommerce/index.js.map +1 -0
  23. package/dist-server/controllers/ecommerce/powrup-controller.js +690 -0
  24. package/dist-server/controllers/ecommerce/powrup-controller.js.map +1 -0
  25. package/dist-server/controllers/ecommerce/sellercraft-controller.js +148 -0
  26. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -0
  27. package/dist-server/controllers/ecommerce/webspert-controller.js +237 -0
  28. package/dist-server/controllers/ecommerce/webspert-controller.js.map +1 -0
  29. package/dist-server/controllers/index.js +19 -0
  30. package/dist-server/controllers/index.js.map +1 -0
  31. package/dist-server/controllers/order-controller.js +244 -0
  32. package/dist-server/controllers/order-controller.js.map +1 -0
  33. package/dist-server/errors/index.js +18 -0
  34. package/dist-server/errors/index.js.map +1 -0
  35. package/dist-server/errors/validation-error.js +41 -0
  36. package/dist-server/errors/validation-error.js.map +1 -0
  37. package/dist-server/index.js +30 -0
  38. package/dist-server/index.js.map +1 -0
  39. package/dist-server/migrations/index.js +12 -0
  40. package/dist-server/migrations/index.js.map +1 -0
  41. package/dist-server/service/arrival-notice/arrival-notice-mutation.js +1085 -0
  42. package/dist-server/service/arrival-notice/arrival-notice-mutation.js.map +1 -0
  43. package/dist-server/service/arrival-notice/arrival-notice-query.js +634 -0
  44. package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -0
  45. package/dist-server/service/arrival-notice/arrival-notice-types.js +443 -0
  46. package/dist-server/service/arrival-notice/arrival-notice-types.js.map +1 -0
  47. package/dist-server/service/arrival-notice/arrival-notice.js +259 -0
  48. package/dist-server/service/arrival-notice/arrival-notice.js.map +1 -0
  49. package/dist-server/service/arrival-notice/index.js +25 -0
  50. package/dist-server/service/arrival-notice/index.js.map +1 -0
  51. package/dist-server/service/claim/claim-mutation.js +243 -0
  52. package/dist-server/service/claim/claim-mutation.js.map +1 -0
  53. package/dist-server/service/claim/claim-query.js +165 -0
  54. package/dist-server/service/claim/claim-query.js.map +1 -0
  55. package/dist-server/service/claim/claim-types.js +191 -0
  56. package/dist-server/service/claim/claim-types.js.map +1 -0
  57. package/dist-server/service/claim/claim.js +176 -0
  58. package/dist-server/service/claim/claim.js.map +1 -0
  59. package/dist-server/service/claim/index.js +25 -0
  60. package/dist-server/service/claim/index.js.map +1 -0
  61. package/dist-server/service/claim-detail/claim-detail-mutation.js +110 -0
  62. package/dist-server/service/claim-detail/claim-detail-mutation.js.map +1 -0
  63. package/dist-server/service/claim-detail/claim-detail-query.js +90 -0
  64. package/dist-server/service/claim-detail/claim-detail-query.js.map +1 -0
  65. package/dist-server/service/claim-detail/claim-detail-types.js +81 -0
  66. package/dist-server/service/claim-detail/claim-detail-types.js.map +1 -0
  67. package/dist-server/service/claim-detail/claim-detail.js +102 -0
  68. package/dist-server/service/claim-detail/claim-detail.js.map +1 -0
  69. package/dist-server/service/claim-detail/index.js +25 -0
  70. package/dist-server/service/claim-detail/index.js.map +1 -0
  71. package/dist-server/service/claim-order/claim-order-mutation.js +110 -0
  72. package/dist-server/service/claim-order/claim-order-mutation.js.map +1 -0
  73. package/dist-server/service/claim-order/claim-order-query.js +86 -0
  74. package/dist-server/service/claim-order/claim-order-query.js.map +1 -0
  75. package/dist-server/service/claim-order/claim-order-types.js +65 -0
  76. package/dist-server/service/claim-order/claim-order-types.js.map +1 -0
  77. package/dist-server/service/claim-order/claim-order.js +104 -0
  78. package/dist-server/service/claim-order/claim-order.js.map +1 -0
  79. package/dist-server/service/claim-order/index.js +25 -0
  80. package/dist-server/service/claim-order/index.js.map +1 -0
  81. package/dist-server/service/collection-order/collection-order-mutation.js +241 -0
  82. package/dist-server/service/collection-order/collection-order-mutation.js.map +1 -0
  83. package/dist-server/service/collection-order/collection-order-query.js +125 -0
  84. package/dist-server/service/collection-order/collection-order-query.js.map +1 -0
  85. package/dist-server/service/collection-order/collection-order-types.js +241 -0
  86. package/dist-server/service/collection-order/collection-order-types.js.map +1 -0
  87. package/dist-server/service/collection-order/collection-order.js +183 -0
  88. package/dist-server/service/collection-order/collection-order.js.map +1 -0
  89. package/dist-server/service/collection-order/index.js +25 -0
  90. package/dist-server/service/collection-order/index.js.map +1 -0
  91. package/dist-server/service/delivery-order/delivery-order-mutation.js +746 -0
  92. package/dist-server/service/delivery-order/delivery-order-mutation.js.map +1 -0
  93. package/dist-server/service/delivery-order/delivery-order-query.js +570 -0
  94. package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -0
  95. package/dist-server/service/delivery-order/delivery-order-types.js +397 -0
  96. package/dist-server/service/delivery-order/delivery-order-types.js.map +1 -0
  97. package/dist-server/service/delivery-order/delivery-order.js +365 -0
  98. package/dist-server/service/delivery-order/delivery-order.js.map +1 -0
  99. package/dist-server/service/delivery-order/index.js +25 -0
  100. package/dist-server/service/delivery-order/index.js.map +1 -0
  101. package/dist-server/service/draft-release-good/draft-release-good-create.js +647 -0
  102. package/dist-server/service/draft-release-good/draft-release-good-create.js.map +1 -0
  103. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +486 -0
  104. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -0
  105. package/dist-server/service/draft-release-good/draft-release-good-query.js +366 -0
  106. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -0
  107. package/dist-server/service/draft-release-good/draft-release-good-type.js +424 -0
  108. package/dist-server/service/draft-release-good/draft-release-good-type.js.map +1 -0
  109. package/dist-server/service/draft-release-good/draft-release-good.js +444 -0
  110. package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -0
  111. package/dist-server/service/draft-release-good/index.js +29 -0
  112. package/dist-server/service/draft-release-good/index.js.map +1 -0
  113. package/dist-server/service/goods-receival-note/goods-receival-note-mutation.js +140 -0
  114. package/dist-server/service/goods-receival-note/goods-receival-note-mutation.js.map +1 -0
  115. package/dist-server/service/goods-receival-note/goods-receival-note-query.js +273 -0
  116. package/dist-server/service/goods-receival-note/goods-receival-note-query.js.map +1 -0
  117. package/dist-server/service/goods-receival-note/goods-receival-note-types.js +159 -0
  118. package/dist-server/service/goods-receival-note/goods-receival-note-types.js.map +1 -0
  119. package/dist-server/service/goods-receival-note/goods-receival-note.js +156 -0
  120. package/dist-server/service/goods-receival-note/goods-receival-note.js.map +1 -0
  121. package/dist-server/service/goods-receival-note/index.js +25 -0
  122. package/dist-server/service/goods-receival-note/index.js.map +1 -0
  123. package/dist-server/service/index.js +282 -0
  124. package/dist-server/service/index.js.map +1 -0
  125. package/dist-server/service/inventory-check/index.js +25 -0
  126. package/dist-server/service/inventory-check/index.js.map +1 -0
  127. package/dist-server/service/inventory-check/inventory-check-mutation.js +151 -0
  128. package/dist-server/service/inventory-check/inventory-check-mutation.js.map +1 -0
  129. package/dist-server/service/inventory-check/inventory-check-query.js +138 -0
  130. package/dist-server/service/inventory-check/inventory-check-query.js.map +1 -0
  131. package/dist-server/service/inventory-check/inventory-check-types.js +82 -0
  132. package/dist-server/service/inventory-check/inventory-check-types.js.map +1 -0
  133. package/dist-server/service/inventory-check/inventory-check.js +115 -0
  134. package/dist-server/service/inventory-check/inventory-check.js.map +1 -0
  135. package/dist-server/service/inventory-check-item/index.js +25 -0
  136. package/dist-server/service/inventory-check-item/index.js.map +1 -0
  137. package/dist-server/service/inventory-check-item/inventory-check-item-mutation.js +120 -0
  138. package/dist-server/service/inventory-check-item/inventory-check-item-mutation.js.map +1 -0
  139. package/dist-server/service/inventory-check-item/inventory-check-item-query.js +196 -0
  140. package/dist-server/service/inventory-check-item/inventory-check-item-query.js.map +1 -0
  141. package/dist-server/service/inventory-check-item/inventory-check-item-types.js +157 -0
  142. package/dist-server/service/inventory-check-item/inventory-check-item-types.js.map +1 -0
  143. package/dist-server/service/inventory-check-item/inventory-check-item.js +273 -0
  144. package/dist-server/service/inventory-check-item/inventory-check-item.js.map +1 -0
  145. package/dist-server/service/invoice/index.js +25 -0
  146. package/dist-server/service/invoice/index.js.map +1 -0
  147. package/dist-server/service/invoice/invoice-mutation.js +105 -0
  148. package/dist-server/service/invoice/invoice-mutation.js.map +1 -0
  149. package/dist-server/service/invoice/invoice-query.js +94 -0
  150. package/dist-server/service/invoice/invoice-query.js.map +1 -0
  151. package/dist-server/service/invoice/invoice-types.js +388 -0
  152. package/dist-server/service/invoice/invoice-types.js.map +1 -0
  153. package/dist-server/service/invoice/invoice.js +312 -0
  154. package/dist-server/service/invoice/invoice.js.map +1 -0
  155. package/dist-server/service/invoice-product/index.js +25 -0
  156. package/dist-server/service/invoice-product/index.js.map +1 -0
  157. package/dist-server/service/invoice-product/invoice-product-mutation.js +70 -0
  158. package/dist-server/service/invoice-product/invoice-product-mutation.js.map +1 -0
  159. package/dist-server/service/invoice-product/invoice-product-query.js +95 -0
  160. package/dist-server/service/invoice-product/invoice-product-query.js.map +1 -0
  161. package/dist-server/service/invoice-product/invoice-product-types.js +131 -0
  162. package/dist-server/service/invoice-product/invoice-product-types.js.map +1 -0
  163. package/dist-server/service/invoice-product/invoice-product.js +130 -0
  164. package/dist-server/service/invoice-product/invoice-product.js.map +1 -0
  165. package/dist-server/service/job-sheet/index.js +25 -0
  166. package/dist-server/service/job-sheet/index.js.map +1 -0
  167. package/dist-server/service/job-sheet/job-sheet-mutation.js +93 -0
  168. package/dist-server/service/job-sheet/job-sheet-mutation.js.map +1 -0
  169. package/dist-server/service/job-sheet/job-sheet-query.js +134 -0
  170. package/dist-server/service/job-sheet/job-sheet-query.js.map +1 -0
  171. package/dist-server/service/job-sheet/job-sheet-types.js +113 -0
  172. package/dist-server/service/job-sheet/job-sheet-types.js.map +1 -0
  173. package/dist-server/service/job-sheet/job-sheet.js +132 -0
  174. package/dist-server/service/job-sheet/job-sheet.js.map +1 -0
  175. package/dist-server/service/manifest/index.js +9 -0
  176. package/dist-server/service/manifest/index.js.map +1 -0
  177. package/dist-server/service/manifest/manifest-mutation.js +264 -0
  178. package/dist-server/service/manifest/manifest-mutation.js.map +1 -0
  179. package/dist-server/service/manifest/manifest-query.js +228 -0
  180. package/dist-server/service/manifest/manifest-query.js.map +1 -0
  181. package/dist-server/service/manifest/manifest-type.js +183 -0
  182. package/dist-server/service/manifest/manifest-type.js.map +1 -0
  183. package/dist-server/service/manifest/manifest.js +134 -0
  184. package/dist-server/service/manifest/manifest.js.map +1 -0
  185. package/dist-server/service/order-consignment/index.js +9 -0
  186. package/dist-server/service/order-consignment/index.js.map +1 -0
  187. package/dist-server/service/order-consignment/order-consignment-mutation.js +120 -0
  188. package/dist-server/service/order-consignment/order-consignment-mutation.js.map +1 -0
  189. package/dist-server/service/order-consignment/order-consignment-query.js +87 -0
  190. package/dist-server/service/order-consignment/order-consignment-query.js.map +1 -0
  191. package/dist-server/service/order-consignment/order-consignment-type.js +69 -0
  192. package/dist-server/service/order-consignment/order-consignment-type.js.map +1 -0
  193. package/dist-server/service/order-consignment/order-consignment.js +115 -0
  194. package/dist-server/service/order-consignment/order-consignment.js.map +1 -0
  195. package/dist-server/service/order-inventory/index.js +25 -0
  196. package/dist-server/service/order-inventory/index.js.map +1 -0
  197. package/dist-server/service/order-inventory/order-inventory-mutation.js +80 -0
  198. package/dist-server/service/order-inventory/order-inventory-mutation.js.map +1 -0
  199. package/dist-server/service/order-inventory/order-inventory-query.js +592 -0
  200. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -0
  201. package/dist-server/service/order-inventory/order-inventory-types.js +341 -0
  202. package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -0
  203. package/dist-server/service/order-inventory/order-inventory.js +785 -0
  204. package/dist-server/service/order-inventory/order-inventory.js.map +1 -0
  205. package/dist-server/service/order-package/index.js +9 -0
  206. package/dist-server/service/order-package/index.js.map +1 -0
  207. package/dist-server/service/order-package/order-package-mutation.js +120 -0
  208. package/dist-server/service/order-package/order-package-mutation.js.map +1 -0
  209. package/dist-server/service/order-package/order-package-query.js +142 -0
  210. package/dist-server/service/order-package/order-package-query.js.map +1 -0
  211. package/dist-server/service/order-package/order-package-types.js +113 -0
  212. package/dist-server/service/order-package/order-package-types.js.map +1 -0
  213. package/dist-server/service/order-package/order-package.js +229 -0
  214. package/dist-server/service/order-package/order-package.js.map +1 -0
  215. package/dist-server/service/order-package-item/index.js +9 -0
  216. package/dist-server/service/order-package-item/index.js.map +1 -0
  217. package/dist-server/service/order-package-item/order-package-item-mutation.js +120 -0
  218. package/dist-server/service/order-package-item/order-package-item-mutation.js.map +1 -0
  219. package/dist-server/service/order-package-item/order-package-item-query.js +127 -0
  220. package/dist-server/service/order-package-item/order-package-item-query.js.map +1 -0
  221. package/dist-server/service/order-package-item/order-package-item-types.js +99 -0
  222. package/dist-server/service/order-package-item/order-package-item-types.js.map +1 -0
  223. package/dist-server/service/order-package-item/order-package-item.js +162 -0
  224. package/dist-server/service/order-package-item/order-package-item.js.map +1 -0
  225. package/dist-server/service/order-product/index.js +25 -0
  226. package/dist-server/service/order-product/index.js.map +1 -0
  227. package/dist-server/service/order-product/order-product-mutation.js +74 -0
  228. package/dist-server/service/order-product/order-product-mutation.js.map +1 -0
  229. package/dist-server/service/order-product/order-product-query.js +125 -0
  230. package/dist-server/service/order-product/order-product-query.js.map +1 -0
  231. package/dist-server/service/order-product/order-product-types.js +489 -0
  232. package/dist-server/service/order-product/order-product-types.js.map +1 -0
  233. package/dist-server/service/order-product/order-product.js +559 -0
  234. package/dist-server/service/order-product/order-product.js.map +1 -0
  235. package/dist-server/service/order-tote/index.js +25 -0
  236. package/dist-server/service/order-tote/index.js.map +1 -0
  237. package/dist-server/service/order-tote/order-tote-mutation.js +56 -0
  238. package/dist-server/service/order-tote/order-tote-mutation.js.map +1 -0
  239. package/dist-server/service/order-tote/order-tote-query.js +123 -0
  240. package/dist-server/service/order-tote/order-tote-query.js.map +1 -0
  241. package/dist-server/service/order-tote/order-tote-types.js +79 -0
  242. package/dist-server/service/order-tote/order-tote-types.js.map +1 -0
  243. package/dist-server/service/order-tote/order-tote.js +92 -0
  244. package/dist-server/service/order-tote/order-tote.js.map +1 -0
  245. package/dist-server/service/order-tote-item/index.js +25 -0
  246. package/dist-server/service/order-tote-item/index.js.map +1 -0
  247. package/dist-server/service/order-tote-item/order-tote-item-mutation.js +56 -0
  248. package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +1 -0
  249. package/dist-server/service/order-tote-item/order-tote-item-query.js +100 -0
  250. package/dist-server/service/order-tote-item/order-tote-item-query.js.map +1 -0
  251. package/dist-server/service/order-tote-item/order-tote-item-types.js +91 -0
  252. package/dist-server/service/order-tote-item/order-tote-item-types.js.map +1 -0
  253. package/dist-server/service/order-tote-item/order-tote-item.js +118 -0
  254. package/dist-server/service/order-tote-item/order-tote-item.js.map +1 -0
  255. package/dist-server/service/order-tote-seal/index.js +25 -0
  256. package/dist-server/service/order-tote-seal/index.js.map +1 -0
  257. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js +56 -0
  258. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +1 -0
  259. package/dist-server/service/order-tote-seal/order-tote-seal-query.js +97 -0
  260. package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +1 -0
  261. package/dist-server/service/order-tote-seal/order-tote-seal-types.js +71 -0
  262. package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +1 -0
  263. package/dist-server/service/order-tote-seal/order-tote-seal.js +71 -0
  264. package/dist-server/service/order-tote-seal/order-tote-seal.js.map +1 -0
  265. package/dist-server/service/order-vas/index.js +25 -0
  266. package/dist-server/service/order-vas/index.js.map +1 -0
  267. package/dist-server/service/order-vas/order-vas-mutation.js +148 -0
  268. package/dist-server/service/order-vas/order-vas-mutation.js.map +1 -0
  269. package/dist-server/service/order-vas/order-vas-query.js +148 -0
  270. package/dist-server/service/order-vas/order-vas-query.js.map +1 -0
  271. package/dist-server/service/order-vas/order-vas-types.js +348 -0
  272. package/dist-server/service/order-vas/order-vas-types.js.map +1 -0
  273. package/dist-server/service/order-vas/order-vas.js +476 -0
  274. package/dist-server/service/order-vas/order-vas.js.map +1 -0
  275. package/dist-server/service/order-vas-item/index.js +9 -0
  276. package/dist-server/service/order-vas-item/index.js.map +1 -0
  277. package/dist-server/service/order-vas-item/order-vas-item-mutation.js +164 -0
  278. package/dist-server/service/order-vas-item/order-vas-item-mutation.js.map +1 -0
  279. package/dist-server/service/order-vas-item/order-vas-item-query.js +99 -0
  280. package/dist-server/service/order-vas-item/order-vas-item-query.js.map +1 -0
  281. package/dist-server/service/order-vas-item/order-vas-item-type.js +131 -0
  282. package/dist-server/service/order-vas-item/order-vas-item-type.js.map +1 -0
  283. package/dist-server/service/order-vas-item/order-vas-item.js +166 -0
  284. package/dist-server/service/order-vas-item/order-vas-item.js.map +1 -0
  285. package/dist-server/service/others/index.js +21 -0
  286. package/dist-server/service/others/index.js.map +1 -0
  287. package/dist-server/service/others/other-query.js +536 -0
  288. package/dist-server/service/others/other-query.js.map +1 -0
  289. package/dist-server/service/others/other-types.js +181 -0
  290. package/dist-server/service/others/other-types.js.map +1 -0
  291. package/dist-server/service/purchase-order/index.js +25 -0
  292. package/dist-server/service/purchase-order/index.js.map +1 -0
  293. package/dist-server/service/purchase-order/purchase-order-mutation.js +398 -0
  294. package/dist-server/service/purchase-order/purchase-order-mutation.js.map +1 -0
  295. package/dist-server/service/purchase-order/purchase-order-query.js +126 -0
  296. package/dist-server/service/purchase-order/purchase-order-query.js.map +1 -0
  297. package/dist-server/service/purchase-order/purchase-order-types.js +240 -0
  298. package/dist-server/service/purchase-order/purchase-order-types.js.map +1 -0
  299. package/dist-server/service/purchase-order/purchase-order.js +236 -0
  300. package/dist-server/service/purchase-order/purchase-order.js.map +1 -0
  301. package/dist-server/service/purchase-order-other-charge/index.js +25 -0
  302. package/dist-server/service/purchase-order-other-charge/index.js.map +1 -0
  303. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.js +56 -0
  304. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.js.map +1 -0
  305. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-query.js +87 -0
  306. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-query.js.map +1 -0
  307. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-types.js +77 -0
  308. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-types.js.map +1 -0
  309. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge.js +101 -0
  310. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge.js.map +1 -0
  311. package/dist-server/service/release-good/index.js +25 -0
  312. package/dist-server/service/release-good/index.js.map +1 -0
  313. package/dist-server/service/release-good/release-good-mutation.js +1598 -0
  314. package/dist-server/service/release-good/release-good-mutation.js.map +1 -0
  315. package/dist-server/service/release-good/release-good-query.js +1131 -0
  316. package/dist-server/service/release-good/release-good-query.js.map +1 -0
  317. package/dist-server/service/release-good/release-good-types.js +1043 -0
  318. package/dist-server/service/release-good/release-good-types.js.map +1 -0
  319. package/dist-server/service/release-good/release-good.js +817 -0
  320. package/dist-server/service/release-good/release-good.js.map +1 -0
  321. package/dist-server/service/release-good-logs/index.js +11 -0
  322. package/dist-server/service/release-good-logs/index.js.map +1 -0
  323. package/dist-server/service/release-good-logs/release-good-logs-mutation.js +126 -0
  324. package/dist-server/service/release-good-logs/release-good-logs-mutation.js.map +1 -0
  325. package/dist-server/service/release-good-logs/release-good-logs-query.js +71 -0
  326. package/dist-server/service/release-good-logs/release-good-logs-query.js.map +1 -0
  327. package/dist-server/service/release-good-logs/release-good-logs-type.js +65 -0
  328. package/dist-server/service/release-good-logs/release-good-logs-type.js.map +1 -0
  329. package/dist-server/service/release-good-logs/release-good-logs.js +96 -0
  330. package/dist-server/service/release-good-logs/release-good-logs.js.map +1 -0
  331. package/dist-server/service/replenishment/index.js +9 -0
  332. package/dist-server/service/replenishment/index.js.map +1 -0
  333. package/dist-server/service/replenishment/replenishment-mutation.js +234 -0
  334. package/dist-server/service/replenishment/replenishment-mutation.js.map +1 -0
  335. package/dist-server/service/replenishment/replenishment-query.js +185 -0
  336. package/dist-server/service/replenishment/replenishment-query.js.map +1 -0
  337. package/dist-server/service/replenishment/replenishment-type.js +119 -0
  338. package/dist-server/service/replenishment/replenishment-type.js.map +1 -0
  339. package/dist-server/service/replenishment/replenishment.js +114 -0
  340. package/dist-server/service/replenishment/replenishment.js.map +1 -0
  341. package/dist-server/service/retail-replenishment-order/index.js +25 -0
  342. package/dist-server/service/retail-replenishment-order/index.js.map +1 -0
  343. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js +314 -0
  344. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js.map +1 -0
  345. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-query.js +89 -0
  346. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-query.js.map +1 -0
  347. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-types.js +148 -0
  348. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-types.js.map +1 -0
  349. package/dist-server/service/retail-replenishment-order/retail-replenishment-order.js +141 -0
  350. package/dist-server/service/retail-replenishment-order/retail-replenishment-order.js.map +1 -0
  351. package/dist-server/service/return-order/index.js +25 -0
  352. package/dist-server/service/return-order/index.js.map +1 -0
  353. package/dist-server/service/return-order/return-order-mutation.js +451 -0
  354. package/dist-server/service/return-order/return-order-mutation.js.map +1 -0
  355. package/dist-server/service/return-order/return-order-query.js +243 -0
  356. package/dist-server/service/return-order/return-order-query.js.map +1 -0
  357. package/dist-server/service/return-order/return-order-types.js +274 -0
  358. package/dist-server/service/return-order/return-order-types.js.map +1 -0
  359. package/dist-server/service/return-order/return-order.js +159 -0
  360. package/dist-server/service/return-order/return-order.js.map +1 -0
  361. package/dist-server/service/reverse-kitting-order/index.js +25 -0
  362. package/dist-server/service/reverse-kitting-order/index.js.map +1 -0
  363. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js +407 -0
  364. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js.map +1 -0
  365. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js +222 -0
  366. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js.map +1 -0
  367. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-type.js +230 -0
  368. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-type.js.map +1 -0
  369. package/dist-server/service/reverse-kitting-order/reverse-kitting-order.js +145 -0
  370. package/dist-server/service/reverse-kitting-order/reverse-kitting-order.js.map +1 -0
  371. package/dist-server/service/reverse-kitting-order-inventory/index.js +25 -0
  372. package/dist-server/service/reverse-kitting-order-inventory/index.js.map +1 -0
  373. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js +130 -0
  374. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js.map +1 -0
  375. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js +87 -0
  376. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js.map +1 -0
  377. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.js +143 -0
  378. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.js.map +1 -0
  379. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.js +178 -0
  380. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.js.map +1 -0
  381. package/dist-server/service/shipping-order/index.js +25 -0
  382. package/dist-server/service/shipping-order/index.js.map +1 -0
  383. package/dist-server/service/shipping-order/shipping-order-mutation.js +78 -0
  384. package/dist-server/service/shipping-order/shipping-order-mutation.js.map +1 -0
  385. package/dist-server/service/shipping-order/shipping-order-query.js +96 -0
  386. package/dist-server/service/shipping-order/shipping-order-query.js.map +1 -0
  387. package/dist-server/service/shipping-order/shipping-order-types.js +137 -0
  388. package/dist-server/service/shipping-order/shipping-order-types.js.map +1 -0
  389. package/dist-server/service/shipping-order/shipping-order.js +165 -0
  390. package/dist-server/service/shipping-order/shipping-order.js.map +1 -0
  391. package/dist-server/service/transfer-order/index.js +25 -0
  392. package/dist-server/service/transfer-order/index.js.map +1 -0
  393. package/dist-server/service/transfer-order/transfer-order-mutation.js +252 -0
  394. package/dist-server/service/transfer-order/transfer-order-mutation.js.map +1 -0
  395. package/dist-server/service/transfer-order/transfer-order-query.js +104 -0
  396. package/dist-server/service/transfer-order/transfer-order-query.js.map +1 -0
  397. package/dist-server/service/transfer-order/transfer-order-types.js +148 -0
  398. package/dist-server/service/transfer-order/transfer-order-types.js.map +1 -0
  399. package/dist-server/service/transfer-order/transfer-order.js +146 -0
  400. package/dist-server/service/transfer-order/transfer-order.js.map +1 -0
  401. package/dist-server/service/vas/index.js +25 -0
  402. package/dist-server/service/vas/index.js.map +1 -0
  403. package/dist-server/service/vas/vas-mutation.js +562 -0
  404. package/dist-server/service/vas/vas-mutation.js.map +1 -0
  405. package/dist-server/service/vas/vas-query.js +114 -0
  406. package/dist-server/service/vas/vas-query.js.map +1 -0
  407. package/dist-server/service/vas/vas-types.js +113 -0
  408. package/dist-server/service/vas/vas-types.js.map +1 -0
  409. package/dist-server/service/vas/vas.js +114 -0
  410. package/dist-server/service/vas/vas.js.map +1 -0
  411. package/dist-server/service/vas-order/index.js +25 -0
  412. package/dist-server/service/vas-order/index.js.map +1 -0
  413. package/dist-server/service/vas-order/vas-order-mutation.js +241 -0
  414. package/dist-server/service/vas-order/vas-order-mutation.js.map +1 -0
  415. package/dist-server/service/vas-order/vas-order-query.js +151 -0
  416. package/dist-server/service/vas-order/vas-order-query.js.map +1 -0
  417. package/dist-server/service/vas-order/vas-order-types.js +83 -0
  418. package/dist-server/service/vas-order/vas-order-types.js.map +1 -0
  419. package/dist-server/service/vas-order/vas-order.js +104 -0
  420. package/dist-server/service/vas-order/vas-order.js.map +1 -0
  421. package/dist-server/utils/datetime-util.js +82 -0
  422. package/dist-server/utils/datetime-util.js.map +1 -0
  423. package/dist-server/utils/index.js +20 -0
  424. package/dist-server/utils/index.js.map +1 -0
  425. package/dist-server/utils/inventory-util.js +1098 -0
  426. package/dist-server/utils/inventory-util.js.map +1 -0
  427. package/dist-server/utils/order-no-generator.js +112 -0
  428. package/dist-server/utils/order-no-generator.js.map +1 -0
  429. package/package.json +8 -8
  430. package/server/service/vas/vas-mutation.ts +222 -225
@@ -0,0 +1,1131 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var _a, _b, _c;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.bulkReleaseGoodsAvailableItemsFunction = exports.ReleaseGoodQuery = void 0;
17
+ const type_graphql_1 = require("type-graphql");
18
+ const typeorm_1 = require("typeorm");
19
+ const attachment_base_1 = require("@things-factory/attachment-base");
20
+ const auth_base_1 = require("@things-factory/auth-base");
21
+ const biz_base_1 = require("@things-factory/biz-base");
22
+ const env_1 = require("@things-factory/env");
23
+ const shell_1 = require("@things-factory/shell");
24
+ const warehouse_base_1 = require("@things-factory/warehouse-base");
25
+ const constants_1 = require("../../constants");
26
+ const datetime_util_1 = require("../../utils/datetime-util");
27
+ const order_inventory_1 = require("../order-inventory/order-inventory");
28
+ const order_package_1 = require("../order-package/order-package");
29
+ const release_good_1 = require("./release-good");
30
+ const release_good_types_1 = require("./release-good-types");
31
+ let ReleaseGoodQuery = class ReleaseGoodQuery {
32
+ async releaseGoods(context, params) {
33
+ try {
34
+ const { domain, user } = context.state;
35
+ if (!params.filters.find((filter) => filter.name === 'bizplace')) {
36
+ params.filters.push({
37
+ name: 'bizplaceId',
38
+ operator: 'in',
39
+ value: await (0, biz_base_1.getPermittedBizplaceIds)(domain, user),
40
+ relation: false
41
+ });
42
+ }
43
+ const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate');
44
+ if (fromDateParamIdx >= 0) {
45
+ let fromDateVal = new Date(params.filters[fromDateParamIdx].value);
46
+ params.filters.splice(fromDateParamIdx, 1);
47
+ params.filters.push({
48
+ name: 'createdAt',
49
+ operator: 'gte',
50
+ value: fromDateVal.toISOString(),
51
+ relation: false
52
+ });
53
+ }
54
+ const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate');
55
+ if (toDateParamIdx >= 0) {
56
+ let toDateVal = new Date(params.filters[toDateParamIdx].value);
57
+ params.filters.splice(toDateParamIdx, 1);
58
+ params.filters.push({
59
+ name: 'createdAt',
60
+ operator: 'lt',
61
+ value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
62
+ relation: false
63
+ });
64
+ }
65
+ const qb = (0, typeorm_1.getRepository)(release_good_1.ReleaseGood).createQueryBuilder('rg');
66
+ (0, shell_1.buildQuery)(qb, params, context);
67
+ let items;
68
+ let total;
69
+ qb.addSelect('COALESCE("cc".rank, 99999)', 'rank');
70
+ qb.leftJoinAndSelect('rg.domain', 'domain');
71
+ qb.leftJoinAndSelect('rg.bizplace', 'bizplace');
72
+ qb.leftJoinAndSelect('rg.orderInventories', 'oi');
73
+ qb.leftJoinAndSelect('rg.orderProducts', 'op');
74
+ qb.leftJoinAndSelect('oi.inventory', 'inv');
75
+ qb.leftJoinAndSelect('oi.product', 'prod');
76
+ qb.leftJoinAndSelect('rg.arrivalNotice', 'an');
77
+ qb.leftJoinAndSelect('rg.creator', 'creator');
78
+ qb.leftJoinAndSelect('rg.updater', 'updater');
79
+ qb.leftJoin(subQuery => {
80
+ return subQuery
81
+ .select(`ccd.rank`, 'rank')
82
+ .addSelect(`ccd.name`, 'status')
83
+ .from(`common_code_details`, 'ccd')
84
+ .innerJoin(`ccd.commonCode`, 'cc')
85
+ .where(`ccd.domain_id = :domainId`, { domainId: domain.id })
86
+ .andWhere(`cc.name = 'RO_LIST_STATUS'`);
87
+ }, 'cc', 'cc.status = rg.status');
88
+ const arrChildSortData = ['bizplace'];
89
+ const sort = (params.sortings || []).reduce((acc, sort) => (Object.assign(Object.assign({}, acc), { [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'rg.' + sort.name]: sort.desc
90
+ ? 'DESC'
91
+ : 'ASC' })), !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {});
92
+ qb.orderBy(sort);
93
+ let [itemsRes, totalRes] = await qb.getManyAndCount();
94
+ items = itemsRes;
95
+ total = totalRes;
96
+ return { items, total };
97
+ }
98
+ catch (error) {
99
+ throw error;
100
+ }
101
+ }
102
+ async releaseGood(context, name, trackingNo) {
103
+ const { domain, user } = context.state;
104
+ if (name) {
105
+ return await (0, typeorm_1.getRepository)(release_good_1.ReleaseGood).findOne({
106
+ where: {
107
+ domain,
108
+ name,
109
+ bizplace: (0, typeorm_1.In)(await (0, biz_base_1.getPermittedBizplaceIds)(domain, user))
110
+ },
111
+ relations: [
112
+ 'domain',
113
+ 'bizplace',
114
+ 'shippingOrder',
115
+ 'arrivalNotice',
116
+ 'orderInventories',
117
+ 'orderInventories.product',
118
+ 'orderInventories.inventory',
119
+ 'orderInventories.inventory.product',
120
+ 'orderInventories.inventory.product.productDetails',
121
+ 'orderVass',
122
+ 'orderVass.vas',
123
+ 'creator',
124
+ 'updater'
125
+ ]
126
+ });
127
+ }
128
+ else if (trackingNo) {
129
+ let releaseGood = await (0, typeorm_1.getRepository)(release_good_1.ReleaseGood).findOne({
130
+ where: {
131
+ domain,
132
+ trackingNo,
133
+ bizplace: (0, typeorm_1.In)(await (0, biz_base_1.getPermittedBizplaceIds)(domain, user))
134
+ },
135
+ relations: ['bizplace']
136
+ });
137
+ if (!releaseGood) {
138
+ throw new Error('Tracking No not found in any orders');
139
+ }
140
+ else {
141
+ return releaseGood;
142
+ }
143
+ }
144
+ }
145
+ async releaseGoodDetail(context, refNo, name) {
146
+ try {
147
+ const { domain, tx } = context.state;
148
+ let param;
149
+ if (name)
150
+ param = { domain, name };
151
+ else
152
+ param = { domain, refNo };
153
+ const releaseGood = await tx.getRepository(release_good_1.ReleaseGood).findOne({
154
+ where: Object.assign({}, param),
155
+ relations: [
156
+ 'domain',
157
+ 'bizplace',
158
+ 'draftReleaseGood',
159
+ 'shippingOrder',
160
+ 'arrivalNotice',
161
+ 'orderProducts',
162
+ 'orderProducts.product',
163
+ 'orderProducts.productDetail',
164
+ 'orderProducts.productBundle',
165
+ 'orderPackages',
166
+ 'orderVass',
167
+ 'orderVass.vas',
168
+ 'orderVass.newProduct',
169
+ 'orderVass.newProductDetail',
170
+ 'orderVass.adjustedNewProduct',
171
+ 'orderVass.adjustedNewProductDetail',
172
+ 'orderVass.product',
173
+ 'orderVass.productDetail',
174
+ 'orderVass.adjustedProduct',
175
+ 'orderVass.adjustedProductDetail',
176
+ 'orderVass.inventory',
177
+ 'orderVass.orderVasItems',
178
+ 'orderVass.orderVasItems.vas',
179
+ 'creator',
180
+ 'updater'
181
+ ]
182
+ });
183
+ if (releaseGood) {
184
+ let oiQb = tx
185
+ .getRepository(order_inventory_1.OrderInventory)
186
+ .createQueryBuilder('oi')
187
+ .leftJoinAndSelect('oi.inventory', 'inventory')
188
+ .leftJoinAndSelect('oi.product', 'product')
189
+ .leftJoinAndSelect('oi.productDetail', 'productDetail')
190
+ .leftJoinAndSelect('oi.orderProduct', 'orderProduct')
191
+ .leftJoinAndSelect('orderProduct.productBundle', 'productBundle')
192
+ .leftJoinAndSelect('inventory.location', 'location')
193
+ .where('oi.domain_id = :domainId', { domainId: domain.id })
194
+ .andWhere('oi.release_good_id = :releaseGoodId', { releaseGoodId: releaseGood.id })
195
+ .andWhere('oi.status NOT IN (:...orderInventoryStatus)', {
196
+ orderInventoryStatus: [constants_1.ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, constants_1.ORDER_INVENTORY_STATUS.REPLACED]
197
+ })
198
+ .orderBy('product.sku', 'ASC');
199
+ let orderInventories = await oiQb.getMany();
200
+ const shippingOrder = releaseGood.shippingOrder;
201
+ const foundAttachments = await tx.getRepository(attachment_base_1.Attachment).find({
202
+ where: {
203
+ domain,
204
+ refBy: releaseGood.id,
205
+ category: constants_1.ATTACHMENT_TYPE.DELIVERY_ORDER
206
+ }
207
+ });
208
+ const foundInvoiceAttachments = await tx.getRepository(attachment_base_1.Attachment).findOne({
209
+ where: {
210
+ domain,
211
+ refBy: releaseGood.id,
212
+ category: constants_1.ATTACHMENT_TYPE.INVOICE
213
+ }
214
+ });
215
+ const foundAwbAttachments = await tx.getRepository(attachment_base_1.Attachment).findOne({
216
+ where: {
217
+ domain,
218
+ refBy: releaseGood.id,
219
+ category: constants_1.ATTACHMENT_TYPE.AWB
220
+ }
221
+ });
222
+ let invInfos = await Promise.all(orderInventories.map(async (orderInv) => {
223
+ var _a, _b;
224
+ if ((_a = orderInv === null || orderInv === void 0 ? void 0 : orderInv.inventory) === null || _a === void 0 ? void 0 : _a.id) {
225
+ const inventory = orderInv.inventory;
226
+ return {
227
+ id: inventory.id,
228
+ name: inventory.name,
229
+ batchId: inventory.batchId,
230
+ batchIdRef: inventory.batchIdRef,
231
+ palletId: inventory.palletId,
232
+ product: orderInv.product,
233
+ productDetail: orderInv.productDetail,
234
+ productIdRef: orderInv.product.id,
235
+ productName: `${orderInv.product.name} (${orderInv.product.description})`,
236
+ packingType: orderInv.packingType,
237
+ packingSize: orderInv.packingSize,
238
+ orderProduct: orderInv.orderProduct,
239
+ productBundle: ((_b = orderInv.orderProduct) === null || _b === void 0 ? void 0 : _b.productBundle) || '',
240
+ location: inventory.location,
241
+ qty: inventory.qty,
242
+ lockedQty: inventory.lockedQty,
243
+ lockedUomValue: inventory.lockedUomValue,
244
+ uom: inventory.uom,
245
+ uomValue: inventory.uomValue,
246
+ invStatus: inventory.status,
247
+ releaseQty: orderInv.releaseQty,
248
+ releaseUomValue: orderInv.releaseUomValue || 0,
249
+ status: orderInv.status,
250
+ refWorksheetId: orderInv.refWorksheetId
251
+ };
252
+ }
253
+ }));
254
+ const result = Object.assign(Object.assign({}, releaseGood), { orderProducts: releaseGood.orderProducts.map(op => (Object.assign(Object.assign({}, op), { releaseUomValue: op.releaseUomValue || 0 }))), attachment: foundAttachments, invoiceAttachment: foundInvoiceAttachments, awbAttachment: foundAwbAttachments, shippingOrderInfo: {
255
+ containerNo: (shippingOrder === null || shippingOrder === void 0 ? void 0 : shippingOrder.containerNo) || '',
256
+ containerSize: (shippingOrder === null || shippingOrder === void 0 ? void 0 : shippingOrder.containerSize) || '',
257
+ containerLeavingDate: (shippingOrder === null || shippingOrder === void 0 ? void 0 : shippingOrder.containerLeavingDate) || '',
258
+ containerArrivalDate: (shippingOrder === null || shippingOrder === void 0 ? void 0 : shippingOrder.containerArrivalDate) || '',
259
+ containerClosureDate: (shippingOrder === null || shippingOrder === void 0 ? void 0 : shippingOrder.containerClosureDate) || '',
260
+ shipName: (shippingOrder === null || shippingOrder === void 0 ? void 0 : shippingOrder.shipName) || '',
261
+ remark: (shippingOrder === null || shippingOrder === void 0 ? void 0 : shippingOrder.remark) || '',
262
+ remindContainerDeparture: (shippingOrder === null || shippingOrder === void 0 ? void 0 : shippingOrder.remindContainerDeparture) || null
263
+ }, inventoryInfos: invInfos });
264
+ return result;
265
+ }
266
+ }
267
+ catch (error) {
268
+ env_1.logger.error(`release-good-query[releaseGoodDetail]: ${error}`);
269
+ throw new Error(error);
270
+ }
271
+ }
272
+ async releaseGoodRequests(context, params) {
273
+ var _a, _b, _c;
274
+ try {
275
+ console.time('t1');
276
+ const { domain, user } = context.state;
277
+ const statusFilter = params.filters.some(e => e.name === 'status');
278
+ const vasStatusFilter = params.filters.find(e => e.name === 'vasStatus');
279
+ const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId');
280
+ const noOfItemsFilter = params.filters.find(param => param.name === 'noOfItems');
281
+ const transporterFilter = params.filters.find(param => param.name === 'transporter');
282
+ const skuFilter = params.filters.find(param => param.name === 'sku');
283
+ const routeId = params.filters.find(param => param.name === 'routeId');
284
+ const orderRemarkFilter = params.filters.find(param => param.name === 'orderRemark');
285
+ const manifestedFilter = params.filters.find(param => param.name === 'manifested');
286
+ const orderInfoFilter = params.filters.find(param => param.name === 'name');
287
+ const typeFilter = (_a = params.filters.find(param => param.name === 'type')) === null || _a === void 0 ? void 0 : _a.value;
288
+ const lmdFilter = params.filters.find(param => param.name === 'lmdOption');
289
+ const priorityDeliveryFilter = params.filters.find(param => param.name === 'priorityDelivery');
290
+ const platformCodeFilter = params.filters.find(param => param.name === 'platformCode');
291
+ const hasVas = params.filters.find(param => param.name === 'hasVas');
292
+ //remove vas from params
293
+ if (hasVas) {
294
+ const vasIdx = params.filters.findIndex(param => param.name === 'hasVas');
295
+ params.filters.splice(vasIdx, 1);
296
+ }
297
+ if (vasStatusFilter) {
298
+ const vasStatusIdx = params.filters.findIndex(param => param.name === 'vasStatus');
299
+ params.filters.splice(vasStatusIdx, 1);
300
+ }
301
+ if (await (0, auth_base_1.checkUserBelongsDomain)(domain, user)) {
302
+ if (!statusFilter && !params.filters.some(e => e.name === 'name')) {
303
+ params.filters.push({
304
+ name: 'status',
305
+ operator: 'notin',
306
+ value: [constants_1.ORDER_STATUS.PENDING, constants_1.ORDER_STATUS.EDITING, ''],
307
+ relation: false
308
+ });
309
+ }
310
+ }
311
+ if (!bizplaceFilter) {
312
+ params.filters.push({
313
+ name: 'bizplaceId',
314
+ operator: 'in',
315
+ value: await (0, biz_base_1.getPermittedBizplaceIds)(domain, user),
316
+ relation: false
317
+ });
318
+ }
319
+ if (transporterFilter) {
320
+ params.filters = params.filters.filter(param => param.name !== 'transporter');
321
+ }
322
+ if (platformCodeFilter) {
323
+ params.filters = params.filters.filter(param => param.name !== 'platformCode');
324
+ }
325
+ if (skuFilter) {
326
+ params.filters = params.filters.filter(param => param.name !== 'sku');
327
+ }
328
+ if (orderInfoFilter) {
329
+ params.filters = params.filters.filter(param => param.name !== 'name');
330
+ }
331
+ if (routeId) {
332
+ if (routeId.value == true) {
333
+ params.filters.find(param => param.name === 'routeId').value = 'null';
334
+ }
335
+ else {
336
+ params.filters.find(param => param.name === 'routeId').operator = 'is_null';
337
+ params.filters.find(param => param.name === 'routeId').value = null;
338
+ }
339
+ }
340
+ if (orderRemarkFilter) {
341
+ const orderRemarkIdx = params.filters.findIndex(param => param.name === 'orderRemark');
342
+ if (orderRemarkFilter.value == true) {
343
+ params.filters.splice(orderRemarkIdx, 1);
344
+ params.filters.push({
345
+ name: 'remark',
346
+ operator: 'is_not_null',
347
+ value: null,
348
+ relation: false
349
+ });
350
+ }
351
+ else {
352
+ params.filters.splice(orderRemarkIdx, 1);
353
+ params.filters.push({
354
+ name: 'remark',
355
+ operator: 'is_null',
356
+ value: null,
357
+ relation: false
358
+ });
359
+ }
360
+ }
361
+ if (manifestedFilter) {
362
+ const manifestedIdx = params.filters.findIndex(param => param.name === 'manifested');
363
+ if (manifestedFilter.value == true) {
364
+ params.filters.splice(manifestedIdx, 1);
365
+ params.filters.push({
366
+ name: 'manifestId',
367
+ operator: 'is_not_null',
368
+ value: null,
369
+ relation: false
370
+ });
371
+ }
372
+ else {
373
+ params.filters.splice(manifestedIdx, 1);
374
+ params.filters.push({
375
+ name: 'manifestId',
376
+ operator: 'is_null',
377
+ value: null,
378
+ relation: false
379
+ });
380
+ }
381
+ }
382
+ if (lmdFilter) {
383
+ const lmdIdx = params.filters.findIndex(param => param.name === 'lmdOption');
384
+ if (lmdFilter.value == true) {
385
+ params.filters.splice(lmdIdx, 1);
386
+ params.filters.push({
387
+ name: 'lmdOption',
388
+ operator: 'eq',
389
+ value: true,
390
+ relation: false
391
+ });
392
+ }
393
+ else {
394
+ params.filters.splice(lmdIdx, 1);
395
+ params.filters.push({
396
+ name: 'lmdOption',
397
+ operator: 'eq',
398
+ value: false,
399
+ relation: false
400
+ });
401
+ }
402
+ }
403
+ if (priorityDeliveryFilter) {
404
+ const priorityDeliveryIdx = params.filters.findIndex(param => param.name === 'priorityDelivery');
405
+ if (priorityDeliveryFilter.value == true) {
406
+ params.filters.splice(priorityDeliveryIdx, 1);
407
+ params.filters.push({
408
+ name: 'priorityDelivery',
409
+ operator: 'eq',
410
+ value: true,
411
+ relation: false
412
+ });
413
+ }
414
+ else {
415
+ params.filters.splice(priorityDeliveryIdx, 1);
416
+ params.filters.push({
417
+ name: 'priorityDelivery',
418
+ operator: 'eq',
419
+ value: false,
420
+ relation: false
421
+ });
422
+ }
423
+ }
424
+ const isReleaseDateSearch = params.filters.find(param => param.name === 'isReleaseDateSearch');
425
+ const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate');
426
+ if (fromDateParamIdx >= 0) {
427
+ let fromDateVal = new Date(params.filters[fromDateParamIdx].value);
428
+ let releaseDateFrom = (_b = params.filters.find(param => param.name === 'fromDate')) === null || _b === void 0 ? void 0 : _b.value;
429
+ params.filters.splice(fromDateParamIdx, 1);
430
+ params.filters.push({
431
+ name: typeFilter == 'b2c' || isReleaseDateSearch.value ? 'releaseDate' : 'createdAt',
432
+ operator: 'gte',
433
+ value: typeFilter == 'b2c' || isReleaseDateSearch.value ? releaseDateFrom : fromDateVal.toISOString(),
434
+ relation: false
435
+ });
436
+ }
437
+ const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate');
438
+ if (toDateParamIdx >= 0) {
439
+ let toDateVal = new Date(params.filters[toDateParamIdx].value);
440
+ let releaseDateTo = (_c = params.filters.find(param => param.name === 'toDate')) === null || _c === void 0 ? void 0 : _c.value;
441
+ params.filters.splice(toDateParamIdx, 1);
442
+ params.filters.push({
443
+ name: typeFilter == 'b2c' || isReleaseDateSearch.value ? 'releaseDate' : 'createdAt',
444
+ operator: typeFilter == 'b2c' || isReleaseDateSearch.value ? 'lte' : 'lt',
445
+ value: typeFilter == 'b2c' || isReleaseDateSearch.value
446
+ ? releaseDateTo
447
+ : new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
448
+ relation: false
449
+ });
450
+ }
451
+ if (!!isReleaseDateSearch)
452
+ params.filters.splice(params.filters.findIndex(param => param.name == 'isReleaseDateSearch'), 1);
453
+ if (noOfItemsFilter && noOfItemsFilter.value == 1) {
454
+ params.filters.find(param => param.name === 'noOfItems').operator = 'eq';
455
+ }
456
+ const qb = (0, typeorm_1.getRepository)(release_good_1.ReleaseGood).createQueryBuilder('rg');
457
+ (0, shell_1.buildQuery)(qb, params, context);
458
+ qb.addSelect('COALESCE("cc".rank, 99999)', 'rank');
459
+ qb.leftJoinAndSelect('rg.domain', 'domain');
460
+ qb.leftJoinAndSelect('rg.bizplace', 'bizplace');
461
+ qb.leftJoinAndSelect('rg.arrivalNotice', 'an');
462
+ qb.leftJoinAndSelect('rg.sortedBy', 'sorter');
463
+ qb.leftJoinAndSelect('rg.creator', 'creator');
464
+ qb.leftJoinAndSelect('rg.updater', 'updater');
465
+ qb.leftJoinAndSelect('rg.acceptedBy', 'acceptedBy');
466
+ qb.leftJoinAndSelect('rg.draftReleaseGood', 'draftReleaseGood');
467
+ qb.leftJoinAndSelect('rg.lastMileDelivery', 'lmd');
468
+ qb.leftJoinAndSelect('rg.deliverTo', 'deliverTo');
469
+ qb.leftJoinAndSelect('rg.orderVass', 'ov');
470
+ qb.leftJoin(subQuery => {
471
+ return subQuery
472
+ .select(`ccd.rank`, 'rank')
473
+ .addSelect(`ccd.name`, 'status')
474
+ .from(`common_code_details`, 'ccd')
475
+ .innerJoin(`ccd.commonCode`, 'cc')
476
+ .where(`ccd.domain_id = :domainId`, { domainId: domain.id })
477
+ .andWhere(`cc.name = 'RO_REQUESTS_STATUS'`);
478
+ }, 'cc', 'cc.status = rg.status');
479
+ if (hasVas) {
480
+ if (hasVas.value == true) {
481
+ qb.andWhere(`ov.release_good_id notnull`);
482
+ }
483
+ else if (hasVas.value == false && !vasStatusFilter) {
484
+ qb.andWhere(`ov.release_good_id is null`);
485
+ }
486
+ }
487
+ if (vasStatusFilter) {
488
+ if (vasStatusFilter.value === constants_1.ORDER_VAS_STATUS.PENDING_APPROVE) {
489
+ qb.andWhere(`ov.status = :vasStatus`, { vasStatus: vasStatusFilter.value });
490
+ }
491
+ else {
492
+ qb.andWhere(`
493
+ ov.status = :vasStatus
494
+ AND rg.id not IN (
495
+ SELECT
496
+ rg2.id
497
+ FROM
498
+ release_goods rg2
499
+ LEFT JOIN order_vass ov2 on ov2.release_good_id = rg2.id
500
+ WHERE ov2.status = 'PENDING_APPROVE'
501
+ )`, { vasStatus: vasStatusFilter.value });
502
+ }
503
+ }
504
+ if (transporterFilter) {
505
+ qb.andWhere(`exists (select id from order_packages op where
506
+ op.release_good_id = rg.id
507
+ and op.transporter ilike :transporter)`, { transporter: transporterFilter.value });
508
+ }
509
+ if (platformCodeFilter) {
510
+ qb.andWhere(`
511
+ rg.platform_code = :platformCode`, { platformCode: platformCodeFilter.value });
512
+ }
513
+ if (skuFilter) {
514
+ let removeSymbol = skuFilter.value
515
+ .split('')
516
+ .filter(res => res !== '%')
517
+ .join('');
518
+ let products = removeSymbol
519
+ .toLowerCase()
520
+ .split(',')
521
+ .map(prod => {
522
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'";
523
+ })
524
+ .join(',');
525
+ qb.andWhere(`
526
+ exists (
527
+ select oi.id from order_inventories oi
528
+ inner join products p on oi.product_id = p.id
529
+ where oi.release_good_id = rg.id
530
+ and (lower(p.sku) like any(array[${products}])
531
+ or lower(p.brand_sku) like any(array[${products}])
532
+ or lower(p.name) like any(array[${products}])
533
+ or lower(p.description) like any(array[${products}]))
534
+ )
535
+ `);
536
+ }
537
+ if (orderInfoFilter) {
538
+ let removeSymbol = orderInfoFilter.value
539
+ .split('')
540
+ .filter(res => res !== '%')
541
+ .join('');
542
+ let orderInfos = removeSymbol
543
+ .toLowerCase()
544
+ .split(',')
545
+ .map(prod => {
546
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'";
547
+ })
548
+ .join(',');
549
+ qb.andWhere(`(
550
+ lower(rg.name) like any(array[${orderInfos}])
551
+ or lower(rg.ref_no) like any(array[${orderInfos}])
552
+ or lower(rg.ref_no_2) like any(array[${orderInfos}])
553
+ or lower(rg.ref_no_3) like any(array[${orderInfos}])
554
+ or lower(draftReleaseGood.name) like any(array[${orderInfos}])
555
+ )`);
556
+ }
557
+ const arrChildSortData = ['bizplace', 'creator'];
558
+ const sort = (params.sortings || []).reduce((acc, sort) => (Object.assign(Object.assign({}, acc), { [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'rg.' + sort.name]: sort.desc
559
+ ? 'DESC'
560
+ : 'ASC' })), params.sortings.length < 1 ? { rank: 'ASC', 'rg.createdAt': 'DESC' } : {});
561
+ qb.orderBy(sort);
562
+ let [items, total] = await qb.getManyAndCount();
563
+ items = await Promise.all(items
564
+ .filter(item => {
565
+ return item.domainId === domain.id;
566
+ })
567
+ .map(async (item) => {
568
+ const orderPackages = await (0, typeorm_1.getRepository)(order_package_1.OrderPackage).find({
569
+ where: { releaseGood: item, domain, bizplace: item.bizplace }
570
+ });
571
+ let newPlatformCode;
572
+ if (item.platformCode) {
573
+ if (item.platformCode == 'LZD') {
574
+ newPlatformCode = 'Lazada';
575
+ }
576
+ else if (item.platformCode == 'SHP') {
577
+ newPlatformCode = 'Shopee';
578
+ }
579
+ else if (item.platformCode == 'TTK') {
580
+ newPlatformCode = 'Tiktok';
581
+ }
582
+ else if (item.platformCode == 'SPF') {
583
+ newPlatformCode = 'Shopify';
584
+ }
585
+ }
586
+ if (item.lastMileDelivery &&
587
+ item.lastMileDelivery.isTms &&
588
+ item.lastMileDelivery.platform === 'VERSA_FLEET') {
589
+ item.refNo2 = item.vehicleNo ? item.vehicleNo : item.refNo2;
590
+ }
591
+ return Object.assign(Object.assign({}, item), { platformCode: newPlatformCode ? newPlatformCode : item.platformCode, transporter: (orderPackages === null || orderPackages === void 0 ? void 0 : orderPackages.length)
592
+ ? [
593
+ ...new Set(orderPackages.map(op => {
594
+ return op.transporter;
595
+ }))
596
+ ].join(', ')
597
+ : null, orderRemark: (item === null || item === void 0 ? void 0 : item.remark) ? true : false });
598
+ }));
599
+ console.timeEnd('t1');
600
+ return { items, total };
601
+ }
602
+ catch (error) {
603
+ env_1.logger.error(`release-good-query[releaseGoodRequests]: ${error}`);
604
+ throw error;
605
+ }
606
+ }
607
+ async releasableInventories(context, filters, pagination, sortings) {
608
+ const myBizplace = await (0, biz_base_1.getMyBizplace)(context.state.domain, context.state.user);
609
+ const INV_ALIAS = 'INV';
610
+ const PROD_ALIAS = 'PROD';
611
+ const GAN_ALIAS = 'GAN';
612
+ const conditions = filters;
613
+ let { batchId = null, containerNo = null, product = [], packingType = null, inventory = [] } = getConditionValues(conditions);
614
+ const SELECT = `
615
+ SELECT
616
+ ${INV_ALIAS}.batch_id,
617
+ ${INV_ALIAS}.packing_type,
618
+ (SUM(COALESCE(${INV_ALIAS}.qty, 0)) - SUM(COALESCE(${INV_ALIAS}.locked_qty, 0))) as remain_qty,
619
+ (SUM(COALESCE(${INV_ALIAS}.uomValue, 0)) - SUM(COALESCE(${INV_ALIAS}.locked_uom_value, 0))) as remain_uom_value,
620
+ ${PROD_ALIAS}.id as product_id,
621
+ ${PROD_ALIAS}.name as product_name,
622
+ ${GAN_ALIAS}.container_no
623
+ `;
624
+ const FROM = `
625
+ FROM
626
+ inventories ${INV_ALIAS}
627
+ LEFT JOIN
628
+ products ${PROD_ALIAS}
629
+ ON
630
+ ${PROD_ALIAS}.id = ${INV_ALIAS}.product_id
631
+ LEFT JOIN
632
+ arrival_notices ${GAN_ALIAS}
633
+ ON
634
+ ${GAN_ALIAS}.id = CAST(${INV_ALIAS}.ref_order_id as uuid)
635
+ `;
636
+ const WHERE = `
637
+ WHERE
638
+ ${INV_ALIAS}.status = 'STORED'
639
+ AND ${INV_ALIAS}.qty > 0
640
+ AND ${INV_ALIAS}.bizplace_id = '${myBizplace.id}'
641
+ ${batchId ? `AND LOWER(${INV_ALIAS}.batch_id) LIKE '%${batchId.toLowerCase()}%'` : ''}
642
+ ${packingType ? `AND LOWER(${INV_ALIAS}.packing_type) LIKE '%${packingType.toLowerCase()}%'` : ''}
643
+ ${containerNo ? `AND LOWER(${GAN_ALIAS}.container_no) LIKE '%${containerNo.toLowerCase()}%'` : ''}
644
+ ${(product === null || product === void 0 ? void 0 : product.length) > 0 && product[0]
645
+ ? `AND ${PROD_ALIAS}.id IN (${product.map((id) => `'${id}'`).join(', ')})`
646
+ : product[0] === null
647
+ ? `AND ${PROD_ALIAS}.id isnull`
648
+ : ''}
649
+ ${(inventory === null || inventory === void 0 ? void 0 : inventory.length) > 0
650
+ ? `
651
+ AND (${INV_ALIAS}.batch_id, ${PROD_ALIAS}.id) ${filters.find((filter) => filter.name === 'inventory')
652
+ .operator} (
653
+ ${inventory
654
+ .map((inv) => `('${inv.batchId}', '${inv.productId}')`)
655
+ .join(', ')}
656
+ )
657
+ `
658
+ : ''}
659
+ `;
660
+ // ${product?.length > 0 ? `AND ${PROD_ALIAS}.id IN (${product.map((id: string) => id ? `'${id}'` : null).join(', ')})` : ''}
661
+ const GROUP_BY = `
662
+ GROUP BY
663
+ ${INV_ALIAS}.batch_id,
664
+ ${INV_ALIAS}.packing_type,
665
+ ${GAN_ALIAS}.container_no,
666
+ ${PROD_ALIAS}.id
667
+ `;
668
+ const OFFSET_LIMIT = `
669
+ OFFSET ${pagination.limit * (pagination.page - 1)}
670
+ LIMIT ${pagination.limit}
671
+ `;
672
+ const invRepo = (0, typeorm_1.getRepository)(warehouse_base_1.Inventory);
673
+ let items = await invRepo.query(`
674
+ ${SELECT} ${FROM} ${WHERE} ${GROUP_BY} ${OFFSET_LIMIT}
675
+ `);
676
+ items = items.map((item) => {
677
+ return {
678
+ batchId: item.batch_id,
679
+ packingType: item.packing_type,
680
+ remainQty: item.remain_qty,
681
+ remainUomValue: item.remain_uom_value,
682
+ productName: item.product_name,
683
+ product: {
684
+ id: item.product_id,
685
+ name: item.product_name
686
+ },
687
+ containerNo: item.container_no
688
+ };
689
+ });
690
+ const results = await invRepo.query(`
691
+ SELECT max(cnt.cnt) as total FROM (
692
+ SELECT (ROW_NUMBER() OVER()) as cnt ${FROM} ${WHERE} ${GROUP_BY}
693
+ ) as cnt
694
+ `);
695
+ return {
696
+ items,
697
+ total: Number(results[0].total)
698
+ };
699
+ }
700
+ async bulkReleaseGoodsAvailableItems(context, rawReleaseGoods, bizplaceId) {
701
+ const { tx } = context.state;
702
+ const availableItems = await bulkReleaseGoodsAvailableItemsFunction(rawReleaseGoods, bizplaceId, context, tx);
703
+ return availableItems;
704
+ }
705
+ async domain(releaseGood) {
706
+ return await (0, typeorm_1.getRepository)(shell_1.Domain).findOne(releaseGood.domainId);
707
+ }
708
+ async creator(releaseGood) {
709
+ return await (0, typeorm_1.getRepository)(auth_base_1.User).findOne(releaseGood.creatorId);
710
+ }
711
+ async updater(releaseGood) {
712
+ return await (0, typeorm_1.getRepository)(auth_base_1.User).findOne(releaseGood.updaterId);
713
+ }
714
+ };
715
+ __decorate([
716
+ (0, type_graphql_1.Directive)('@privilege(category: "order_customer", privilege: "query")'),
717
+ (0, type_graphql_1.Query)(returns => release_good_types_1.ReleaseGoodList),
718
+ __param(0, (0, type_graphql_1.Ctx)()),
719
+ __param(1, (0, type_graphql_1.Args)()),
720
+ __metadata("design:type", Function),
721
+ __metadata("design:paramtypes", [Object, typeof (_a = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _a : Object]),
722
+ __metadata("design:returntype", Promise)
723
+ ], ReleaseGoodQuery.prototype, "releaseGoods", null);
724
+ __decorate([
725
+ (0, type_graphql_1.Directive)('@privilege(category: "order", privilege: "query")'),
726
+ (0, type_graphql_1.Query)(returns => release_good_1.ReleaseGood),
727
+ __param(0, (0, type_graphql_1.Ctx)()),
728
+ __param(1, (0, type_graphql_1.Arg)('name', { nullable: true })),
729
+ __param(2, (0, type_graphql_1.Arg)('trackingNo', { nullable: true })),
730
+ __metadata("design:type", Function),
731
+ __metadata("design:paramtypes", [Object, String, String]),
732
+ __metadata("design:returntype", Promise)
733
+ ], ReleaseGoodQuery.prototype, "releaseGood", null);
734
+ __decorate([
735
+ (0, type_graphql_1.Directive)('@privilege(category: "order", privilege: "query")'),
736
+ (0, type_graphql_1.Directive)('@transaction'),
737
+ (0, type_graphql_1.Query)(returns => release_good_1.ReleaseGood),
738
+ __param(0, (0, type_graphql_1.Ctx)()),
739
+ __param(1, (0, type_graphql_1.Arg)('refNo', { nullable: true })),
740
+ __param(2, (0, type_graphql_1.Arg)('name', { nullable: true })),
741
+ __metadata("design:type", Function),
742
+ __metadata("design:paramtypes", [Object, String, String]),
743
+ __metadata("design:returntype", Promise)
744
+ ], ReleaseGoodQuery.prototype, "releaseGoodDetail", null);
745
+ __decorate([
746
+ (0, type_graphql_1.Directive)('@privilege(category: "order_warehouse", privilege: "query")'),
747
+ (0, type_graphql_1.Query)(returns => release_good_types_1.ReleaseGoodList),
748
+ __param(0, (0, type_graphql_1.Ctx)()),
749
+ __param(1, (0, type_graphql_1.Args)()),
750
+ __metadata("design:type", Function),
751
+ __metadata("design:paramtypes", [Object, typeof (_b = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _b : Object]),
752
+ __metadata("design:returntype", Promise)
753
+ ], ReleaseGoodQuery.prototype, "releaseGoodRequests", null);
754
+ __decorate([
755
+ (0, type_graphql_1.Directive)('@privilege(category: "order", privilege: "query")'),
756
+ (0, type_graphql_1.Query)(returns => release_good_types_1.ReleasableInventoryList),
757
+ __param(0, (0, type_graphql_1.Ctx)()),
758
+ __param(1, (0, type_graphql_1.Arg)('filters', type => [shell_1.Filter], { nullable: true })),
759
+ __param(2, (0, type_graphql_1.Arg)('pagination', type => shell_1.Pagination, { nullable: true })),
760
+ __param(3, (0, type_graphql_1.Arg)('sortings', type => [shell_1.Sorting], { nullable: true })),
761
+ __metadata("design:type", Function),
762
+ __metadata("design:paramtypes", [Object, Array, typeof (_c = typeof shell_1.Pagination !== "undefined" && shell_1.Pagination) === "function" ? _c : Object, Array]),
763
+ __metadata("design:returntype", Promise)
764
+ ], ReleaseGoodQuery.prototype, "releasableInventories", null);
765
+ __decorate([
766
+ (0, type_graphql_1.Directive)('@transaction'),
767
+ (0, type_graphql_1.Query)(returns => [release_good_1.ReleaseGood]),
768
+ __param(0, (0, type_graphql_1.Ctx)()),
769
+ __param(1, (0, type_graphql_1.Arg)('rawReleaseGoods', type => [release_good_types_1.NewReleaseGood], { nullable: true })),
770
+ __param(2, (0, type_graphql_1.Arg)('bizplaceId', type => String)),
771
+ __metadata("design:type", Function),
772
+ __metadata("design:paramtypes", [Object, Array, String]),
773
+ __metadata("design:returntype", Promise)
774
+ ], ReleaseGoodQuery.prototype, "bulkReleaseGoodsAvailableItems", null);
775
+ __decorate([
776
+ (0, type_graphql_1.FieldResolver)(type => shell_1.Domain),
777
+ __param(0, (0, type_graphql_1.Root)()),
778
+ __metadata("design:type", Function),
779
+ __metadata("design:paramtypes", [release_good_1.ReleaseGood]),
780
+ __metadata("design:returntype", Promise)
781
+ ], ReleaseGoodQuery.prototype, "domain", null);
782
+ __decorate([
783
+ (0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
784
+ __param(0, (0, type_graphql_1.Root)()),
785
+ __metadata("design:type", Function),
786
+ __metadata("design:paramtypes", [release_good_1.ReleaseGood]),
787
+ __metadata("design:returntype", Promise)
788
+ ], ReleaseGoodQuery.prototype, "creator", null);
789
+ __decorate([
790
+ (0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
791
+ __param(0, (0, type_graphql_1.Root)()),
792
+ __metadata("design:type", Function),
793
+ __metadata("design:paramtypes", [release_good_1.ReleaseGood]),
794
+ __metadata("design:returntype", Promise)
795
+ ], ReleaseGoodQuery.prototype, "updater", null);
796
+ ReleaseGoodQuery = __decorate([
797
+ (0, type_graphql_1.Resolver)(release_good_1.ReleaseGood)
798
+ ], ReleaseGoodQuery);
799
+ exports.ReleaseGoodQuery = ReleaseGoodQuery;
800
+ async function prepOITempTable(domain, tx) {
801
+ await tx.query(`
802
+ CREATE TEMP TABLE oi ON COMMIT DROP AS (
803
+ SELECT
804
+ SUM(oi.release_qty) as release_qty,
805
+ SUM(oi.release_uom_value) as release_uom_value,
806
+ oi.batch_id,
807
+ p.id as product_id,
808
+ oi.packing_type
809
+ FROM
810
+ order_inventories oi
811
+ LEFT JOIN
812
+ products p
813
+ ON
814
+ oi.product_id = p.id
815
+ WHERE
816
+ oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')
817
+ AND oi.batch_id NOTNULL
818
+ AND oi.product_id NOTNULL
819
+ AND oi.packing_type NOTNULL
820
+ AND oi.inventory_id IS NULL
821
+ AND oi.domain_id = $1
822
+ GROUP BY
823
+ oi.product_id,
824
+ oi.batch_id,
825
+ oi.packing_type,
826
+ p.id
827
+ )`, [domain.id]);
828
+ }
829
+ async function getAvailableAmount(roBizId, productIdRef, batchId, packingType, tx) {
830
+ const result = await tx.getRepository(warehouse_base_1.Inventory).query(`
831
+ SELECT
832
+ SUM(COALESCE(i.qty, 0)) - SUM(COALESCE(i.locked_qty, 0)) - MAX(COALESCE(oi.release_qty, 0)) as "qty",
833
+ SUM(COALESCE(i.uom_value, 0)) - SUM(COALESCE(i.locked_uom_value, 0)) - MAX(COALESCE(oi.release_uom_value, 0)) as "uom_value",
834
+ uom
835
+ FROM
836
+ inventories i
837
+ LEFT JOIN products p on i.product_id = p.id
838
+ LEFT JOIN oi on i.batch_id = oi.batch_id
839
+ AND p.id = oi.product_id
840
+ AND i.packing_type = oi.packing_type
841
+ WHERE
842
+ i.bizplace_id = '${roBizId}'
843
+ AND i.status = 'STORED'
844
+ AND i.batch_id = '${batchId}'
845
+ AND p.id = '${productIdRef}'
846
+ AND i.packing_type = '${packingType}'
847
+ GROUP BY
848
+ i.batch_id,
849
+ p.id,
850
+ i.packing_type,
851
+ i.uom
852
+ `);
853
+ let qty = 0;
854
+ let uomValue = 0;
855
+ let uom = '';
856
+ if (result === null || result === void 0 ? void 0 : result.length) {
857
+ qty = result[0].qty;
858
+ uomValue = result[0].uom_value;
859
+ uom = result[0].uom;
860
+ }
861
+ return { qty, uomValue, uom };
862
+ }
863
+ async function dropOITempTable(domain, tx) {
864
+ await tx.query(`DROP TABLE oi`);
865
+ }
866
+ async function bulkReleaseGoodsAvailableItemsFunction(rawReleaseGoods, bizplaceId, context, tx) {
867
+ const { domain } = context.state;
868
+ const companyBizplaceId = await (0, biz_base_1.getCompanyBizplace)(null, null, bizplaceId);
869
+ if (!rawReleaseGoods)
870
+ return;
871
+ const json_oi = JSON.stringify(rawReleaseGoods.map(raw => {
872
+ return {
873
+ sku: raw.sku,
874
+ packing_type: raw.packingType,
875
+ packing_size: raw.packingSize,
876
+ uom: raw.uom,
877
+ releaseQty: raw.releaseQty,
878
+ release_qty: raw.releaseQty
879
+ };
880
+ }));
881
+ await tx.query(`
882
+ CREATE TEMP TABLE raw_release_goods(
883
+ product_id VARCHAR(50),
884
+ product_detail_id VARCHAR(50),
885
+ sku VARCHAR(150),
886
+ product_info VARCHAR(250),
887
+ packing_type VARCHAR(50),
888
+ packing_size FLOAT,
889
+ uom VARCHAR(10),
890
+ release_qty NUMERIC(15,3)
891
+ );
892
+ `);
893
+ await tx.query(`
894
+ INSERT INTO raw_release_goods
895
+ SELECT p.id AS product_id,
896
+ pd.id AS product_detail_id,
897
+ js.sku,
898
+ CASE WHEN p.description NOT IN (NULL, '', '-') THEN CONCAT(p.name, '(', p.description, ')')
899
+ ELSE p.name END AS product_info,
900
+ pd.packing_type,
901
+ pd.packing_size,
902
+ pd.uom
903
+ FROM JSON_POPULATE_RECORDSET(NULL::raw_release_goods, $1) js
904
+ LEFT JOIN products p ON LOWER(js.sku) = LOWER(p.sku) AND p.bizplace_id = $2
905
+ LEFT JOIN product_details pd ON p.id = pd.product_id and pd.deleted_at ISNULL
906
+ AND CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL AND js.uom NOTNULL
907
+ THEN LOWER(pd.packing_type) = LOWER(js.packing_type) AND pd.packing_size = js.packing_size AND LOWER(pd.uom) = LOWER(js.uom)
908
+ WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL AND js.uom ISNULL
909
+ THEN LOWER(pd.packing_type) = LOWER(js.packing_type) AND pd.packing_size = js.packing_size AND pd.is_default IS TRUE
910
+ WHEN js.packing_type ISNULL AND js.packing_size ISNULL AND js.uom NOTNULL
911
+ THEN LOWER(pd.uom) = LOWER(js.uom) AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE
912
+ END;
913
+ `, [json_oi, companyBizplaceId.id]);
914
+ const useDetailedQuery = rawReleaseGoods.some(raw => raw.batchId || raw.cartonId || raw.expirationDate);
915
+ let availableItems = await tx.query(`
916
+ WITH inv AS (
917
+ SELECT i.product_id, foo.product_detail_id, foo.sku, foo.product_info, i.packing_type, i.packing_size, i.uom,
918
+ ${useDetailedQuery ? ' i.batch_id, i.carton_id, i.expiration_date,' : ''}
919
+ SUM(i.qty - COALESCE(i.locked_qty, 0)) - COALESCE(
920
+ (
921
+ SELECT SUM(oi.release_qty) FROM order_inventories oi
922
+ WHERE oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')
923
+ AND oi.inventory_id IS null
924
+ AND oi.product_id = i.product_id::uuid
925
+ AND oi.packing_type = i.packing_type
926
+ AND oi.uom = i.uom
927
+ AND oi.domain_id = $1
928
+ AND oi.bizplace_id = $2
929
+ ), 0) as "remain_qty",
930
+ SUM(i.uom_value - COALESCE(i.locked_uom_value, 0)) - COALESCE(
931
+ (
932
+ SELECT SUM(oi.release_uom_value) FROM order_inventories oi
933
+ WHERE oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')
934
+ AND oi.inventory_id IS null
935
+ AND oi.product_id = i.product_id::uuid
936
+ AND oi.packing_type = i.packing_type
937
+ AND oi.uom = i.uom
938
+ AND oi.domain_id = $1
939
+ AND oi.bizplace_id = $2
940
+ ), 0) as "remain_uom_value",
941
+ p.is_inventory_decimal
942
+ FROM inventories i
943
+ INNER JOIN locations l ON i.location_id = l.id
944
+ LEFT JOIN products p ON i.product_id = p.id
945
+ INNER JOIN (
946
+ SELECT rrg.product_id, rrg.product_detail_id, rrg.sku, rrg.product_info, rrg.packing_type, rrg.packing_size, rrg.uom
947
+ FROM raw_release_goods rrg
948
+ GROUP BY rrg.product_id, rrg.product_detail_id, rrg.sku, rrg.product_info, rrg.packing_type, rrg.packing_size, rrg.uom
949
+ ) AS foo
950
+ ON i.product_id = foo.product_id::uuid
951
+ AND i.packing_type = foo.packing_type
952
+ AND i.packing_size = foo.packing_size
953
+ AND i.uom = foo.uom
954
+ AND i.domain_id = $1
955
+ AND i.bizplace_id = $2
956
+ WHERE l.type NOT IN ($3, $4)
957
+ AND i.obsolete = false
958
+ AND i.transfer_qty <= 0
959
+ AND i.transfer_uom_value <= 0
960
+ GROUP BY i.product_id, foo.product_detail_id, foo.sku, foo.product_info, i.packing_type, i.packing_size, i.uom, p.is_inventory_decimal
961
+ ${useDetailedQuery ? ', i.batch_id, i.carton_id, i.expiration_date' : ''}
962
+ ORDER BY foo.sku, remain_qty DESC
963
+ ) SELECT * FROM inv WHERE remain_qty > 0
964
+ `, [domain.id, bizplaceId, warehouse_base_1.LOCATION_TYPE.QUARANTINE, warehouse_base_1.LOCATION_TYPE.RESERVE]);
965
+ await tx.query(`DROP TABLE raw_release_goods`);
966
+ availableItems = availableItems.map(item => {
967
+ const mappedItem = {
968
+ productId: item.product_id,
969
+ productDetailId: item.product_detail_id,
970
+ productInfo: item.product_info,
971
+ sku: item.sku,
972
+ packingType: item.packing_type,
973
+ packingSize: Number(item.packing_size || 0),
974
+ uom: item.uom,
975
+ remainQty: item.remain_qty,
976
+ remainUomValue: item.remain_uom_value,
977
+ batchId: item.batch_id ? item.batch_id : null,
978
+ cartonId: item.carton_id ? item.carton_id : null,
979
+ expirationDate: item.expiration_date ? _getStdDateStr(new Date(item.expiration_date)) : null,
980
+ isInventoryDecimal: item.is_inventory_decimal === true
981
+ };
982
+ return mappedItem;
983
+ });
984
+ return _extractData(rawReleaseGoods, availableItems);
985
+ }
986
+ exports.bulkReleaseGoodsAvailableItemsFunction = bulkReleaseGoodsAvailableItemsFunction;
987
+ function _extractData(rawData, validatedData) {
988
+ return rawData.map(raw => {
989
+ var _a, _b;
990
+ let errMsg;
991
+ let comparison = ['packingType', 'packingSize', 'uom'];
992
+ let data = validatedData;
993
+ raw.releaseDate = raw.releaseDate ? (0, datetime_util_1.convertExcelDateToISO)(raw.releaseDate) : null;
994
+ raw.expirationDate = raw.expirationDate ? (0, datetime_util_1.convertExcelDateToISO)(raw.expirationDate) : null;
995
+ if (raw.batchId) {
996
+ data = data.filter(val => val.batchId === raw.batchId);
997
+ comparison.push('batchId');
998
+ if (!data.length)
999
+ errMsg = errMsg ? errMsg : 'batch no not matched';
1000
+ }
1001
+ if (raw.cartonId) {
1002
+ data = data.filter(val => val.cartonId === raw.cartonId);
1003
+ comparison.push('cartonId');
1004
+ if (!data.length)
1005
+ errMsg = errMsg ? errMsg : 'carton id not matched';
1006
+ }
1007
+ if (raw.expirationDate) {
1008
+ data = data.filter(val => val.expirationDate === raw.expirationDate);
1009
+ comparison.push('expirationDate');
1010
+ if (!data.length)
1011
+ errMsg = errMsg ? errMsg : 'expiration date not matched';
1012
+ }
1013
+ const idx = data.findIndex(val => {
1014
+ let a = {}, b = {};
1015
+ comparison.forEach(cc => {
1016
+ if (raw[cc]) {
1017
+ a[cc] = raw[cc];
1018
+ b[cc] = val[cc];
1019
+ }
1020
+ });
1021
+ a = JSON.stringify(Object.fromEntries(Object.entries(a).sort()));
1022
+ b = JSON.stringify(Object.fromEntries(Object.entries(b).sort()));
1023
+ return val.sku.toLowerCase() == raw.sku.toLowerCase() && a === b;
1024
+ });
1025
+ let releaseUomValue = 0;
1026
+ // if sku is matched, assign qty and product id
1027
+ if (idx >= 0) {
1028
+ // assign qty to rawData as much as possible
1029
+ releaseUomValue = (Math.round((((_a = data[idx]) === null || _a === void 0 ? void 0 : _a.remainUomValue) / ((_b = data[idx]) === null || _b === void 0 ? void 0 : _b.remainQty)) * 1000) / 1000) * raw.releaseQty;
1030
+ raw.assignedQty =
1031
+ Math.round((data[idx].remainQty >= raw.releaseQty
1032
+ ? raw.releaseQty > 0
1033
+ ? raw.releaseQty
1034
+ : 0
1035
+ : data[idx].remainQty) * 1000) / 1000;
1036
+ raw.assignedUomValue =
1037
+ Math.round((data[idx].remainUomValue >= releaseUomValue
1038
+ ? releaseUomValue > 0
1039
+ ? releaseUomValue
1040
+ : 0
1041
+ : data[idx].remainUomValue) * 1000) / 1000;
1042
+ // deduct qty & uomValue from validateData
1043
+ data[idx].remainQty -= raw.assignedQty;
1044
+ data[idx].remainUomValue -= raw.assignedUomValue;
1045
+ raw.productId = data[idx].productId;
1046
+ raw.productDetailId = data[idx].productDetailId;
1047
+ raw.productInfo = data[idx].productInfo;
1048
+ raw.packingType = data[idx].packingType;
1049
+ raw.packingSize = data[idx].packingSize;
1050
+ raw.uom = data[idx].uom;
1051
+ raw.isInventoryDecimal = data[idx].isInventoryDecimal === true;
1052
+ }
1053
+ else {
1054
+ raw.assignedQty = 0;
1055
+ raw.assignedUomValue = 0;
1056
+ raw.productId = null;
1057
+ }
1058
+ const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
1059
+ return Object.assign(Object.assign({}, raw), { releaseUomValue, errorMsg: (() => {
1060
+ const errors = [];
1061
+ if (errMsg) {
1062
+ errors.push(errMsg);
1063
+ }
1064
+ if (!raw.productId || !raw.productDetailId) {
1065
+ errors.push('inventory or product not found');
1066
+ }
1067
+ if (raw.releaseQty <= 0) {
1068
+ errors.push('invalid release qty');
1069
+ }
1070
+ if (raw.releaseQty % 1 !== 0 && raw.isInventoryDecimal !== true) {
1071
+ errors.push('decimal quantities are not allowed for this product');
1072
+ }
1073
+ if (raw.assignedQty < raw.releaseQty) {
1074
+ errors.push('insufficient stock');
1075
+ }
1076
+ if (!dateRegex.test(raw.releaseDate)) {
1077
+ errors.push('invalid release date format. please use dd/mm/yyyy');
1078
+ }
1079
+ if (raw.releaseDate === '') {
1080
+ errors.push('release date is empty');
1081
+ }
1082
+ if (raw.releaseDate < _getStdDateStr(new Date())) {
1083
+ errors.push('backdate is not allowed');
1084
+ }
1085
+ if (!raw.refNo || raw.refNo === '') {
1086
+ errors.push('ref no is empty');
1087
+ }
1088
+ if ((raw === null || raw === void 0 ? void 0 : raw.type) === 'b2c') {
1089
+ if (!raw.attentionTo)
1090
+ errors.push('attention to is empty');
1091
+ if (!raw.postalCode)
1092
+ errors.push('postal code is empty');
1093
+ if (!raw.country)
1094
+ errors.push('country is empty');
1095
+ if (!raw.deliveryAddress1)
1096
+ errors.push('delivery address 1 is empty');
1097
+ if (!raw.city)
1098
+ errors.push('city is empty');
1099
+ if (!raw.phone1)
1100
+ errors.push('contact is empty');
1101
+ if (!raw.state)
1102
+ errors.push('state is empty');
1103
+ if ((raw.codOption && !raw.paidAmount) || raw.paidAmount < 0 || raw.paidAmount == null) {
1104
+ errors.push('invalid paid amount');
1105
+ }
1106
+ if ((raw === null || raw === void 0 ? void 0 : raw.expirationDate) != null && !dateRegex.test(raw === null || raw === void 0 ? void 0 : raw.expirationDate)) {
1107
+ errors.push('invalid expiration date format. please use dd/mm/yyyy');
1108
+ }
1109
+ if (raw.airwayBill && raw.lmdOption === true) {
1110
+ errors.push('kindly remove AWB as LMD is marked as true');
1111
+ }
1112
+ }
1113
+ return errors.length > 0 ? errors.join(', ') : ''; // Combine all errors into a single string
1114
+ })() });
1115
+ });
1116
+ }
1117
+ function getConditionValues(conditions) {
1118
+ return conditions.reduce((condition, cond) => {
1119
+ condition = Object.assign(Object.assign({}, condition), { [cond.name]: cond.value });
1120
+ return condition;
1121
+ }, {});
1122
+ }
1123
+ function _getStdDateStr(date) {
1124
+ if (isNaN(date.getFullYear()))
1125
+ return '';
1126
+ else {
1127
+ date.setHours(date.getHours() + 8);
1128
+ return date.toISOString().split('T')[0];
1129
+ }
1130
+ }
1131
+ //# sourceMappingURL=release-good-query.js.map