@things-factory/operato-hub 4.3.122 → 4.3.125

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 (313) hide show
  1. package/config.development.js +1 -1
  2. package/dist-server/routers/api/index.js +0 -1
  3. package/dist-server/routers/api/index.js.map +1 -1
  4. package/dist-server/routers/api/restful-apis/v1/company/add-contact-points.js +105 -0
  5. package/dist-server/routers/api/restful-apis/v1/company/add-contact-points.js.map +1 -0
  6. package/dist-server/routers/api/restful-apis/v1/company/add-marketplace-order.js +197 -0
  7. package/dist-server/routers/api/restful-apis/v1/company/add-marketplace-order.js.map +1 -0
  8. package/dist-server/routers/api/restful-apis/v1/company/add-products.js +79 -0
  9. package/dist-server/routers/api/restful-apis/v1/company/add-products.js.map +1 -0
  10. package/dist-server/routers/api/restful-apis/v1/company/cancel-marketplace-order.js +90 -0
  11. package/dist-server/routers/api/restful-apis/v1/company/cancel-marketplace-order.js.map +1 -0
  12. package/dist-server/routers/api/restful-apis/v1/company/get-bizplace-list.js +49 -0
  13. package/dist-server/routers/api/restful-apis/v1/company/get-bizplace-list.js.map +1 -0
  14. package/dist-server/routers/api/restful-apis/v1/company/get-contact-point-list.js +62 -0
  15. package/dist-server/routers/api/restful-apis/v1/company/get-contact-point-list.js.map +1 -0
  16. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-order-shipping-list.js +98 -0
  17. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-order-shipping-list.js.map +1 -0
  18. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-store-list.js +51 -0
  19. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-store-list.js.map +1 -0
  20. package/dist-server/routers/api/restful-apis/v1/company/get-partner-list.js +88 -0
  21. package/dist-server/routers/api/restful-apis/v1/company/get-partner-list.js.map +1 -0
  22. package/dist-server/routers/api/restful-apis/v1/company/get-product-list.js +98 -0
  23. package/dist-server/routers/api/restful-apis/v1/company/get-product-list.js.map +1 -0
  24. package/dist-server/routers/api/restful-apis/v1/company/index.js +15 -0
  25. package/dist-server/routers/api/restful-apis/v1/company/index.js.map +1 -0
  26. package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-order-delivered.js +62 -0
  27. package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-order-delivered.js.map +1 -0
  28. package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-shipping-order.js +40 -0
  29. package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-shipping-order.js.map +1 -0
  30. package/dist-server/routers/api/restful-apis/v1/index.js +2 -31
  31. package/dist-server/routers/api/restful-apis/v1/index.js.map +1 -1
  32. package/dist-server/routers/api/restful-apis/v1/middlewares/business-middleware.js +70 -0
  33. package/dist-server/routers/api/restful-apis/v1/middlewares/business-middleware.js.map +1 -0
  34. package/dist-server/routers/api/restful-apis/v1/middlewares/index.js +40 -0
  35. package/dist-server/routers/api/restful-apis/v1/middlewares/index.js.map +1 -0
  36. package/dist-server/routers/api/restful-apis/v1/middlewares/logging-middleware.js +23 -0
  37. package/dist-server/routers/api/restful-apis/v1/middlewares/logging-middleware.js.map +1 -0
  38. package/dist-server/routers/api/restful-apis/v1/middlewares/store-middleware.js +32 -0
  39. package/dist-server/routers/api/restful-apis/v1/middlewares/store-middleware.js.map +1 -0
  40. package/dist-server/routers/api/restful-apis/v1/middlewares/validation-middleware.js +118 -0
  41. package/dist-server/routers/api/restful-apis/v1/middlewares/validation-middleware.js.map +1 -0
  42. package/dist-server/routers/api/restful-apis/v1/middlewares/warehouse-middleware.js +31 -0
  43. package/dist-server/routers/api/restful-apis/v1/middlewares/warehouse-middleware.js.map +1 -0
  44. package/dist-server/routers/api/restful-apis/v1/utils/error-util.js +71 -0
  45. package/dist-server/routers/api/restful-apis/v1/utils/error-util.js.map +1 -0
  46. package/dist-server/routers/api/restful-apis/v1/utils/params.js +562 -0
  47. package/dist-server/routers/api/restful-apis/v1/utils/params.js.map +1 -0
  48. package/dist-server/routers/api/restful-apis/v1/utils/validate-util.js +66 -0
  49. package/dist-server/routers/api/restful-apis/v1/utils/validate-util.js.map +1 -0
  50. package/dist-server/routers/api/restful-apis/v1/warehouse/add-inbound-order.js +236 -0
  51. package/dist-server/routers/api/restful-apis/v1/warehouse/add-inbound-order.js.map +1 -0
  52. package/dist-server/routers/api/restful-apis/v1/warehouse/add-release-order.js +795 -0
  53. package/dist-server/routers/api/restful-apis/v1/warehouse/add-release-order.js.map +1 -0
  54. package/dist-server/routers/api/restful-apis/v1/warehouse/cancel-inbound-order.js +199 -0
  55. package/dist-server/routers/api/restful-apis/v1/warehouse/cancel-inbound-order.js.map +1 -0
  56. package/dist-server/routers/api/restful-apis/v1/warehouse/cancel-release-order.js +192 -0
  57. package/dist-server/routers/api/restful-apis/v1/warehouse/cancel-release-order.js.map +1 -0
  58. package/dist-server/routers/api/restful-apis/v1/warehouse/get-delivery-order-list.js +138 -0
  59. package/dist-server/routers/api/restful-apis/v1/warehouse/get-delivery-order-list.js.map +1 -0
  60. package/dist-server/routers/api/restful-apis/v1/warehouse/get-goods-received-note-list.js +97 -0
  61. package/dist-server/routers/api/restful-apis/v1/warehouse/get-goods-received-note-list.js.map +1 -0
  62. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.js +81 -0
  63. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.js.map +1 -0
  64. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.js +94 -0
  65. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.js.map +1 -0
  66. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inventory-product-group-list.js +87 -0
  67. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inventory-product-group-list.js.map +1 -0
  68. package/dist-server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.js +85 -0
  69. package/dist-server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.js.map +1 -0
  70. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-details.js +96 -0
  71. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-details.js.map +1 -0
  72. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-list.js +110 -0
  73. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-list.js.map +1 -0
  74. package/dist-server/routers/api/restful-apis/v1/warehouse/index.js +16 -0
  75. package/dist-server/routers/api/restful-apis/v1/warehouse/index.js.map +1 -0
  76. package/dist-server/routers/api/restful-apis/v1/warehouse/update-release-order-details.js +71 -0
  77. package/dist-server/routers/api/restful-apis/v1/warehouse/update-release-order-details.js.map +1 -0
  78. package/openapi/v1/inbound.yaml +5 -5
  79. package/openapi/v1/inventory.yaml +6 -0
  80. package/package.json +24 -24
  81. package/server/routers/api/index.ts +0 -1
  82. package/server/routers/api/restful-apis/v1/company/add-contact-points.ts +111 -0
  83. package/server/routers/api/restful-apis/v1/company/add-marketplace-order.ts +234 -0
  84. package/server/routers/api/restful-apis/v1/company/add-products.ts +106 -0
  85. package/server/routers/api/restful-apis/v1/company/cancel-marketplace-order.ts +94 -0
  86. package/server/routers/api/restful-apis/v1/company/get-bizplace-list.ts +55 -0
  87. package/server/routers/api/restful-apis/v1/company/get-contact-point-list.ts +67 -0
  88. package/server/routers/api/restful-apis/v1/company/get-marketplace-order-shipping-list.ts +100 -0
  89. package/server/routers/api/restful-apis/v1/company/get-marketplace-store-list.ts +57 -0
  90. package/server/routers/api/restful-apis/v1/company/get-partner-list.ts +95 -0
  91. package/server/routers/api/restful-apis/v1/company/get-product-list.ts +103 -0
  92. package/server/routers/api/restful-apis/v1/company/index.ts +12 -0
  93. package/server/routers/api/restful-apis/v1/company/update-marketplace-order-delivered.ts +66 -0
  94. package/server/routers/api/restful-apis/v1/company/update-marketplace-shipping-order.ts +51 -0
  95. package/server/routers/api/restful-apis/v1/index.ts +2 -31
  96. package/server/routers/api/restful-apis/v1/middlewares/business-middleware.ts +72 -0
  97. package/server/routers/api/restful-apis/v1/middlewares/index.ts +26 -0
  98. package/server/routers/api/restful-apis/v1/middlewares/logging-middleware.ts +24 -0
  99. package/server/routers/api/restful-apis/v1/middlewares/store-middleware.ts +34 -0
  100. package/server/routers/api/restful-apis/v1/middlewares/validation-middleware.ts +116 -0
  101. package/server/routers/api/restful-apis/v1/middlewares/warehouse-middleware.ts +31 -0
  102. package/server/routers/api/restful-apis/v1/utils/error-util.ts +70 -0
  103. package/server/routers/api/restful-apis/v1/utils/params.ts +562 -0
  104. package/server/routers/api/restful-apis/v1/utils/validate-util.ts +59 -0
  105. package/server/routers/api/restful-apis/v1/warehouse/add-inbound-order.ts +324 -0
  106. package/server/routers/api/restful-apis/v1/warehouse/add-release-order.ts +976 -0
  107. package/server/routers/api/restful-apis/v1/warehouse/cancel-inbound-order.ts +262 -0
  108. package/server/routers/api/restful-apis/v1/warehouse/cancel-release-order.ts +275 -0
  109. package/server/routers/api/restful-apis/v1/warehouse/get-delivery-order-list.ts +141 -0
  110. package/server/routers/api/restful-apis/v1/warehouse/get-goods-received-note-list.ts +105 -0
  111. package/server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.ts +83 -0
  112. package/server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.ts +96 -0
  113. package/server/routers/api/restful-apis/v1/warehouse/get-inventory-product-group-list.ts +112 -0
  114. package/server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.ts +90 -0
  115. package/server/routers/api/restful-apis/v1/warehouse/get-release-order-details.ts +99 -0
  116. package/server/routers/api/restful-apis/v1/warehouse/get-release-order-list.ts +113 -0
  117. package/server/routers/api/restful-apis/v1/warehouse/index.ts +13 -0
  118. package/server/routers/api/restful-apis/v1/warehouse/update-release-order-details.ts +96 -0
  119. package/dist-server/routers/api/restful-apis/v1/add-contact-point.js +0 -64
  120. package/dist-server/routers/api/restful-apis/v1/add-contact-point.js.map +0 -1
  121. package/dist-server/routers/api/restful-apis/v1/add-draft-release-order.js +0 -171
  122. package/dist-server/routers/api/restful-apis/v1/add-draft-release-order.js.map +0 -1
  123. package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js +0 -213
  124. package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js.map +0 -1
  125. package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js +0 -144
  126. package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js.map +0 -1
  127. package/dist-server/routers/api/restful-apis/v1/add-products.js +0 -88
  128. package/dist-server/routers/api/restful-apis/v1/add-products.js.map +0 -1
  129. package/dist-server/routers/api/restful-apis/v1/add-release-order.js +0 -774
  130. package/dist-server/routers/api/restful-apis/v1/add-release-order.js.map +0 -1
  131. package/dist-server/routers/api/restful-apis/v1/bizplace.js +0 -45
  132. package/dist-server/routers/api/restful-apis/v1/bizplace.js.map +0 -1
  133. package/dist-server/routers/api/restful-apis/v1/cancel-marketplace-order.js +0 -63
  134. package/dist-server/routers/api/restful-apis/v1/cancel-marketplace-order.js.map +0 -1
  135. package/dist-server/routers/api/restful-apis/v1/cancel-release-order.js +0 -66
  136. package/dist-server/routers/api/restful-apis/v1/cancel-release-order.js.map +0 -1
  137. package/dist-server/routers/api/restful-apis/v1/get-contact-point-list.js +0 -103
  138. package/dist-server/routers/api/restful-apis/v1/get-contact-point-list.js.map +0 -1
  139. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-detail.js +0 -47
  140. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-detail.js.map +0 -1
  141. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-list.js +0 -124
  142. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-list.js.map +0 -1
  143. package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js +0 -164
  144. package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js.map +0 -1
  145. package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js +0 -120
  146. package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js.map +0 -1
  147. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-detail.js +0 -115
  148. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-detail.js.map +0 -1
  149. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-list.js +0 -125
  150. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-list.js.map +0 -1
  151. package/dist-server/routers/api/restful-apis/v1/get-inventory-overall-product-group.js +0 -88
  152. package/dist-server/routers/api/restful-apis/v1/get-inventory-overall-product-group.js.map +0 -1
  153. package/dist-server/routers/api/restful-apis/v1/get-inventory-product-group.js +0 -101
  154. package/dist-server/routers/api/restful-apis/v1/get-inventory-product-group.js.map +0 -1
  155. package/dist-server/routers/api/restful-apis/v1/get-marketplace-order-shipping-list.js +0 -146
  156. package/dist-server/routers/api/restful-apis/v1/get-marketplace-order-shipping-list.js.map +0 -1
  157. package/dist-server/routers/api/restful-apis/v1/get-marketplace-store-list.js +0 -79
  158. package/dist-server/routers/api/restful-apis/v1/get-marketplace-store-list.js.map +0 -1
  159. package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js +0 -110
  160. package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js.map +0 -1
  161. package/dist-server/routers/api/restful-apis/v1/get-partners.js +0 -23
  162. package/dist-server/routers/api/restful-apis/v1/get-partners.js.map +0 -1
  163. package/dist-server/routers/api/restful-apis/v1/get-products.js +0 -210
  164. package/dist-server/routers/api/restful-apis/v1/get-products.js.map +0 -1
  165. package/dist-server/routers/api/restful-apis/v1/get-release-order-detail.js +0 -122
  166. package/dist-server/routers/api/restful-apis/v1/get-release-order-detail.js.map +0 -1
  167. package/dist-server/routers/api/restful-apis/v1/get-release-order-list.js +0 -191
  168. package/dist-server/routers/api/restful-apis/v1/get-release-order-list.js.map +0 -1
  169. package/dist-server/routers/api/restful-apis/v1/get-warehouses.js +0 -20
  170. package/dist-server/routers/api/restful-apis/v1/get-warehouses.js.map +0 -1
  171. package/dist-server/routers/api/restful-apis/v1/reject-inbound-order.js +0 -35
  172. package/dist-server/routers/api/restful-apis/v1/reject-inbound-order.js.map +0 -1
  173. package/dist-server/routers/api/restful-apis/v1/set-marketplace-order-delivered.js +0 -45
  174. package/dist-server/routers/api/restful-apis/v1/set-marketplace-order-delivered.js.map +0 -1
  175. package/dist-server/routers/api/restful-apis/v1/set-marketplace-order-failed-delivery.js +0 -45
  176. package/dist-server/routers/api/restful-apis/v1/set-marketplace-order-failed-delivery.js.map +0 -1
  177. package/dist-server/routers/api/restful-apis/v1/update-marketplace-order.js +0 -93
  178. package/dist-server/routers/api/restful-apis/v1/update-marketplace-order.js.map +0 -1
  179. package/dist-server/routers/api/restful-apis/v1/update-marketplace-shipping-order.js +0 -85
  180. package/dist-server/routers/api/restful-apis/v1/update-marketplace-shipping-order.js.map +0 -1
  181. package/dist-server/routers/api/restful-apis/v1/update-release-order-details.js +0 -82
  182. package/dist-server/routers/api/restful-apis/v1/update-release-order-details.js.map +0 -1
  183. package/dist-server/routers/api/restful-apis/v2/add-contact-point.js +0 -64
  184. package/dist-server/routers/api/restful-apis/v2/add-contact-point.js.map +0 -1
  185. package/dist-server/routers/api/restful-apis/v2/add-draft-release-order.js +0 -171
  186. package/dist-server/routers/api/restful-apis/v2/add-draft-release-order.js.map +0 -1
  187. package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js +0 -213
  188. package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js.map +0 -1
  189. package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js +0 -144
  190. package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js.map +0 -1
  191. package/dist-server/routers/api/restful-apis/v2/add-products.js +0 -88
  192. package/dist-server/routers/api/restful-apis/v2/add-products.js.map +0 -1
  193. package/dist-server/routers/api/restful-apis/v2/add-release-order.js +0 -774
  194. package/dist-server/routers/api/restful-apis/v2/add-release-order.js.map +0 -1
  195. package/dist-server/routers/api/restful-apis/v2/bizplace.js +0 -45
  196. package/dist-server/routers/api/restful-apis/v2/bizplace.js.map +0 -1
  197. package/dist-server/routers/api/restful-apis/v2/cancel-marketplace-order.js +0 -63
  198. package/dist-server/routers/api/restful-apis/v2/cancel-marketplace-order.js.map +0 -1
  199. package/dist-server/routers/api/restful-apis/v2/cancel-release-order.js +0 -66
  200. package/dist-server/routers/api/restful-apis/v2/cancel-release-order.js.map +0 -1
  201. package/dist-server/routers/api/restful-apis/v2/get-contact-point-list.js +0 -103
  202. package/dist-server/routers/api/restful-apis/v2/get-contact-point-list.js.map +0 -1
  203. package/dist-server/routers/api/restful-apis/v2/get-delivery-order-detail.js +0 -47
  204. package/dist-server/routers/api/restful-apis/v2/get-delivery-order-detail.js.map +0 -1
  205. package/dist-server/routers/api/restful-apis/v2/get-delivery-order-list.js +0 -124
  206. package/dist-server/routers/api/restful-apis/v2/get-delivery-order-list.js.map +0 -1
  207. package/dist-server/routers/api/restful-apis/v2/get-delivery-orders.js +0 -164
  208. package/dist-server/routers/api/restful-apis/v2/get-delivery-orders.js.map +0 -1
  209. package/dist-server/routers/api/restful-apis/v2/get-goods-received-notes.js +0 -120
  210. package/dist-server/routers/api/restful-apis/v2/get-goods-received-notes.js.map +0 -1
  211. package/dist-server/routers/api/restful-apis/v2/get-inbound-order-detail.js +0 -115
  212. package/dist-server/routers/api/restful-apis/v2/get-inbound-order-detail.js.map +0 -1
  213. package/dist-server/routers/api/restful-apis/v2/get-inbound-order-list.js +0 -125
  214. package/dist-server/routers/api/restful-apis/v2/get-inbound-order-list.js.map +0 -1
  215. package/dist-server/routers/api/restful-apis/v2/get-inventory-overall-product-group.js +0 -88
  216. package/dist-server/routers/api/restful-apis/v2/get-inventory-overall-product-group.js.map +0 -1
  217. package/dist-server/routers/api/restful-apis/v2/get-inventory-product-group.js +0 -101
  218. package/dist-server/routers/api/restful-apis/v2/get-inventory-product-group.js.map +0 -1
  219. package/dist-server/routers/api/restful-apis/v2/get-marketplace-order-shipping-list.js +0 -146
  220. package/dist-server/routers/api/restful-apis/v2/get-marketplace-order-shipping-list.js.map +0 -1
  221. package/dist-server/routers/api/restful-apis/v2/get-marketplace-store-list.js +0 -79
  222. package/dist-server/routers/api/restful-apis/v2/get-marketplace-store-list.js.map +0 -1
  223. package/dist-server/routers/api/restful-apis/v2/get-onhand-inventories.js +0 -110
  224. package/dist-server/routers/api/restful-apis/v2/get-onhand-inventories.js.map +0 -1
  225. package/dist-server/routers/api/restful-apis/v2/get-partners.js +0 -23
  226. package/dist-server/routers/api/restful-apis/v2/get-partners.js.map +0 -1
  227. package/dist-server/routers/api/restful-apis/v2/get-products.js +0 -210
  228. package/dist-server/routers/api/restful-apis/v2/get-products.js.map +0 -1
  229. package/dist-server/routers/api/restful-apis/v2/get-release-order-detail.js +0 -122
  230. package/dist-server/routers/api/restful-apis/v2/get-release-order-detail.js.map +0 -1
  231. package/dist-server/routers/api/restful-apis/v2/get-release-order-list.js +0 -191
  232. package/dist-server/routers/api/restful-apis/v2/get-release-order-list.js.map +0 -1
  233. package/dist-server/routers/api/restful-apis/v2/get-warehouses.js +0 -20
  234. package/dist-server/routers/api/restful-apis/v2/get-warehouses.js.map +0 -1
  235. package/dist-server/routers/api/restful-apis/v2/index.js +0 -34
  236. package/dist-server/routers/api/restful-apis/v2/index.js.map +0 -1
  237. package/dist-server/routers/api/restful-apis/v2/reject-inbound-order.js +0 -35
  238. package/dist-server/routers/api/restful-apis/v2/reject-inbound-order.js.map +0 -1
  239. package/dist-server/routers/api/restful-apis/v2/set-marketplace-order-delivered.js +0 -45
  240. package/dist-server/routers/api/restful-apis/v2/set-marketplace-order-delivered.js.map +0 -1
  241. package/dist-server/routers/api/restful-apis/v2/set-marketplace-order-failed-delivery.js +0 -45
  242. package/dist-server/routers/api/restful-apis/v2/set-marketplace-order-failed-delivery.js.map +0 -1
  243. package/dist-server/routers/api/restful-apis/v2/update-marketplace-order.js +0 -93
  244. package/dist-server/routers/api/restful-apis/v2/update-marketplace-order.js.map +0 -1
  245. package/dist-server/routers/api/restful-apis/v2/update-marketplace-shipping-order.js +0 -85
  246. package/dist-server/routers/api/restful-apis/v2/update-marketplace-shipping-order.js.map +0 -1
  247. package/dist-server/routers/api/restful-apis/v2/update-release-order-details.js +0 -82
  248. package/dist-server/routers/api/restful-apis/v2/update-release-order-details.js.map +0 -1
  249. package/server/routers/api/restful-apis/v1/add-contact-point.ts +0 -77
  250. package/server/routers/api/restful-apis/v1/add-draft-release-order.ts +0 -196
  251. package/server/routers/api/restful-apis/v1/add-inbound-order.ts +0 -242
  252. package/server/routers/api/restful-apis/v1/add-marketplace-order.ts +0 -172
  253. package/server/routers/api/restful-apis/v1/add-products.ts +0 -112
  254. package/server/routers/api/restful-apis/v1/add-release-order.ts +0 -967
  255. package/server/routers/api/restful-apis/v1/bizplace.ts +0 -45
  256. package/server/routers/api/restful-apis/v1/cancel-marketplace-order.ts +0 -81
  257. package/server/routers/api/restful-apis/v1/cancel-release-order.ts +0 -91
  258. package/server/routers/api/restful-apis/v1/get-contact-point-list.ts +0 -110
  259. package/server/routers/api/restful-apis/v1/get-delivery-order-detail.ts +0 -46
  260. package/server/routers/api/restful-apis/v1/get-delivery-order-list.ts +0 -121
  261. package/server/routers/api/restful-apis/v1/get-delivery-orders.ts +0 -178
  262. package/server/routers/api/restful-apis/v1/get-goods-received-notes.ts +0 -134
  263. package/server/routers/api/restful-apis/v1/get-inbound-order-detail.ts +0 -128
  264. package/server/routers/api/restful-apis/v1/get-inbound-order-list.ts +0 -126
  265. package/server/routers/api/restful-apis/v1/get-inventory-overall-product-group.ts +0 -99
  266. package/server/routers/api/restful-apis/v1/get-inventory-product-group.ts +0 -112
  267. package/server/routers/api/restful-apis/v1/get-marketplace-order-shipping-list.ts +0 -156
  268. package/server/routers/api/restful-apis/v1/get-marketplace-store-list.ts +0 -81
  269. package/server/routers/api/restful-apis/v1/get-onhand-inventories.ts +0 -125
  270. package/server/routers/api/restful-apis/v1/get-partners.ts +0 -24
  271. package/server/routers/api/restful-apis/v1/get-products.ts +0 -216
  272. package/server/routers/api/restful-apis/v1/get-release-order-detail.ts +0 -134
  273. package/server/routers/api/restful-apis/v1/get-release-order-list.ts +0 -198
  274. package/server/routers/api/restful-apis/v1/get-warehouses.ts +0 -18
  275. package/server/routers/api/restful-apis/v1/reject-inbound-order.ts +0 -46
  276. package/server/routers/api/restful-apis/v1/set-marketplace-order-delivered.ts +0 -60
  277. package/server/routers/api/restful-apis/v1/set-marketplace-order-failed-delivery.ts +0 -60
  278. package/server/routers/api/restful-apis/v1/update-marketplace-order.ts +0 -111
  279. package/server/routers/api/restful-apis/v1/update-marketplace-shipping-order.ts +0 -104
  280. package/server/routers/api/restful-apis/v1/update-release-order-details.ts +0 -94
  281. package/server/routers/api/restful-apis/v2/add-contact-point.ts +0 -77
  282. package/server/routers/api/restful-apis/v2/add-draft-release-order.ts +0 -196
  283. package/server/routers/api/restful-apis/v2/add-inbound-order.ts +0 -242
  284. package/server/routers/api/restful-apis/v2/add-marketplace-order.ts +0 -172
  285. package/server/routers/api/restful-apis/v2/add-products.ts +0 -112
  286. package/server/routers/api/restful-apis/v2/add-release-order.ts +0 -967
  287. package/server/routers/api/restful-apis/v2/bizplace.ts +0 -45
  288. package/server/routers/api/restful-apis/v2/cancel-marketplace-order.ts +0 -81
  289. package/server/routers/api/restful-apis/v2/cancel-release-order.ts +0 -91
  290. package/server/routers/api/restful-apis/v2/get-contact-point-list.ts +0 -110
  291. package/server/routers/api/restful-apis/v2/get-delivery-order-detail.ts +0 -46
  292. package/server/routers/api/restful-apis/v2/get-delivery-order-list.ts +0 -121
  293. package/server/routers/api/restful-apis/v2/get-delivery-orders.ts +0 -178
  294. package/server/routers/api/restful-apis/v2/get-goods-received-notes.ts +0 -134
  295. package/server/routers/api/restful-apis/v2/get-inbound-order-detail.ts +0 -128
  296. package/server/routers/api/restful-apis/v2/get-inbound-order-list.ts +0 -126
  297. package/server/routers/api/restful-apis/v2/get-inventory-overall-product-group.ts +0 -99
  298. package/server/routers/api/restful-apis/v2/get-inventory-product-group.ts +0 -112
  299. package/server/routers/api/restful-apis/v2/get-marketplace-order-shipping-list.ts +0 -156
  300. package/server/routers/api/restful-apis/v2/get-marketplace-store-list.ts +0 -81
  301. package/server/routers/api/restful-apis/v2/get-onhand-inventories.ts +0 -125
  302. package/server/routers/api/restful-apis/v2/get-partners.ts +0 -24
  303. package/server/routers/api/restful-apis/v2/get-products.ts +0 -216
  304. package/server/routers/api/restful-apis/v2/get-release-order-detail.ts +0 -134
  305. package/server/routers/api/restful-apis/v2/get-release-order-list.ts +0 -198
  306. package/server/routers/api/restful-apis/v2/get-warehouses.ts +0 -18
  307. package/server/routers/api/restful-apis/v2/index.ts +0 -31
  308. package/server/routers/api/restful-apis/v2/reject-inbound-order.ts +0 -46
  309. package/server/routers/api/restful-apis/v2/set-marketplace-order-delivered.ts +0 -60
  310. package/server/routers/api/restful-apis/v2/set-marketplace-order-failed-delivery.ts +0 -60
  311. package/server/routers/api/restful-apis/v2/update-marketplace-order.ts +0 -111
  312. package/server/routers/api/restful-apis/v2/update-marketplace-shipping-order.ts +0 -104
  313. package/server/routers/api/restful-apis/v2/update-release-order-details.ts +0 -94
@@ -0,0 +1,795 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const typeorm_1 = require("typeorm");
4
+ const uuid_1 = require("uuid");
5
+ const api_1 = require("@things-factory/api");
6
+ const biz_base_1 = require("@things-factory/biz-base");
7
+ const id_rule_base_1 = require("@things-factory/id-rule-base");
8
+ const integration_sellercraft_1 = require("@things-factory/integration-sellercraft");
9
+ const marketplace_base_1 = require("@things-factory/marketplace-base");
10
+ const product_base_1 = require("@things-factory/product-base");
11
+ const sales_base_1 = require("@things-factory/sales-base");
12
+ const setting_base_1 = require("@things-factory/setting-base");
13
+ const warehouse_base_1 = require("@things-factory/warehouse-base");
14
+ const geography_1 = require("@things-factory/geography");
15
+ const middlewares_1 = require("../middlewares");
16
+ const error_util_1 = require("../utils/error-util");
17
+ const debug = require('debug')('things-factory:operato-hub:restful-api:unstable:add-release-order');
18
+ const apiVersion = 'v1';
19
+ api_1.restfulApiRouter.post(`/${apiVersion}/warehouse/add-release-order`, middlewares_1.businessMiddleware, middlewares_1.validationMiddleware, middlewares_1.loggingMiddleware, async (context, next) => {
20
+ return await (0, typeorm_1.getConnection)().transaction(async (tx) => {
21
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
22
+ const { client, domain, user, application } = context.state;
23
+ const { bizplaceId: customerBizplaceId } = context.request.body.data;
24
+ const { t } = context;
25
+ const bodyReq = context.request.body.data;
26
+ const requiredDraft = bodyReq.hasOwnProperty('requiredDraft') ? bodyReq.requiredDraft : true;
27
+ let releaseGood;
28
+ let massagedData = { orderProducts: [], combinedItems: [] };
29
+ // const isAutoAssign: Boolean = bodyReq.hasOwnProperty('isAutoAssign') ? bodyReq.isAutoAssign : true
30
+ try {
31
+ if (!customerBizplaceId)
32
+ throw new error_util_1.ApiError('E04', 'warehouse id not found');
33
+ if (typeof bodyReq === undefined || !((_a = Object.keys(bodyReq)) === null || _a === void 0 ? void 0 : _a.length)) {
34
+ throw new error_util_1.ApiError('E01', 'invalid body request format');
35
+ }
36
+ debug('post:/add-release-order request.body', bodyReq);
37
+ // get customer company's bizplace
38
+ const custCompanyBizplace = await (0, biz_base_1.getCompanyBizplace)(null, null, customerBizplaceId, tx);
39
+ const customerBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
40
+ where: { id: customerBizplaceId },
41
+ relations: ['domain']
42
+ });
43
+ // conditional validation
44
+ if (bodyReq.ownTransport && !bodyReq.collectionOrderNo)
45
+ throw new error_util_1.ApiError('E03', 'collectionOrderNo');
46
+ if (bodyReq.exportOption && !bodyReq.shippingOrder)
47
+ throw new error_util_1.ApiError('E03', 'shippingOrder');
48
+ if (bodyReq.exportOption && !bodyReq.ownTransport)
49
+ throw new error_util_1.ApiError('E01', 'ownTransport');
50
+ bodyReq.exportOption;
51
+ releaseGood = {
52
+ domain,
53
+ bizplace: customerBizplace,
54
+ companyBizplace: custCompanyBizplace,
55
+ courierOption: bodyReq.courierOption,
56
+ collectionOrderNo: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.collectionOrderNo,
57
+ exportOption: bodyReq.exportOption,
58
+ ownTransport: bodyReq.ownTransport,
59
+ packingOption: bodyReq.packingOption,
60
+ refNo: bodyReq.refNo,
61
+ refNo2: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.refNo2,
62
+ refNo3: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.refNo3,
63
+ releaseDate: bodyReq.releaseDate,
64
+ type: bodyReq.type,
65
+ marketplaceOrderStatus: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.marketplaceOrderStatus,
66
+ remark: (bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.remark) || null,
67
+ billingAddress: ((_b = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.billTo) === null || _b === void 0 ? void 0 : _b.billingAddress) || null,
68
+ deliveryAddress1: ((_c = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _c === void 0 ? void 0 : _c.deliveryAddress1) || null,
69
+ deliveryAddress2: ((_d = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _d === void 0 ? void 0 : _d.deliveryAddress2) || null,
70
+ deliveryAddress3: ((_e = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _e === void 0 ? void 0 : _e.deliveryAddress3) || null,
71
+ deliveryAddress4: ((_f = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _f === void 0 ? void 0 : _f.deliveryAddress4) || null,
72
+ deliveryAddress5: ((_g = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _g === void 0 ? void 0 : _g.deliveryAddress5) || null,
73
+ attentionTo: ((_h = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _h === void 0 ? void 0 : _h.attentionTo) || null,
74
+ attentionCompany: ((_j = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _j === void 0 ? void 0 : _j.attentionCompany) || null,
75
+ city: ((_k = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _k === void 0 ? void 0 : _k.city) || null,
76
+ state: ((_l = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _l === void 0 ? void 0 : _l.state) || null,
77
+ postalCode: ((_m = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _m === void 0 ? void 0 : _m.postalCode) || null,
78
+ country: ((_o = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _o === void 0 ? void 0 : _o.country) || null,
79
+ phone1: ((_p = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _p === void 0 ? void 0 : _p.phone1) || null,
80
+ phone2: ((_q = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _q === void 0 ? void 0 : _q.phone2) || null,
81
+ email: ((_r = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.deliverTo) === null || _r === void 0 ? void 0 : _r.email) || null,
82
+ transporter: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.transporter,
83
+ trackingNo: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.trackingNo,
84
+ airwayBill: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.airwayBill,
85
+ invoice: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.invoice,
86
+ packageId: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.packageId,
87
+ storeName: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.storeName,
88
+ storeId: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.storeId,
89
+ routeId: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.routeId,
90
+ stopId: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.stopId,
91
+ source: application === null || application === void 0 ? void 0 : application.type,
92
+ platformCode: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.platformCode,
93
+ platformCountry: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.platformCountry,
94
+ platformName: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.platformName,
95
+ discountAmount: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.discountAmount,
96
+ taxAmount: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.taxAmount,
97
+ shippingFee: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.shippingFee,
98
+ shippingOrder: {
99
+ shipName: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.shippingOrder.shipName,
100
+ containerNo: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.shippingOrder.containerNo,
101
+ loadType: (_s = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.shippingOrder) === null || _s === void 0 ? void 0 : _s.loadType,
102
+ from: (_t = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.shippingOrder) === null || _t === void 0 ? void 0 : _t.from,
103
+ to: (_u = bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.shippingOrder) === null || _u === void 0 ? void 0 : _u.to,
104
+ containerArrivalDate: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.shippingOrder.containerArrivalDate,
105
+ containerLeavingDate: bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.shippingOrder.containerLeavingDate
106
+ }
107
+ };
108
+ // check existing order
109
+ await checkExistingOrder(releaseGood, customerBizplace, bodyReq === null || bodyReq === void 0 ? void 0 : bodyReq.checkDuplicationValidation, context, tx);
110
+ // massage data
111
+ massagedData = await massageOrderItems(releaseGood, bodyReq.orderInventories, context);
112
+ // validation
113
+ await Promise.all(massagedData.combinedItems.map(async (item) => {
114
+ let itemList = await tx.query(`
115
+ select wboi.* from warehouse_bizplace_onhand_inventories wboi
116
+ where wboi."domainId"= $1 and
117
+ wboi."bizplaceId" = $2 and
118
+ wboi."groupType" = 'SINGLE' and
119
+ wboi."productId" = $3 and
120
+ wboi."packingType" = $4 and
121
+ wboi."packingSize" = $5 and
122
+ wboi."uom" = $6 and
123
+ wboi."remainQty" >= $7 and
124
+ wboi."remainUomValue" >= $8
125
+ `, [
126
+ domain.id,
127
+ customerBizplace.id,
128
+ item.product.id,
129
+ item.packingType,
130
+ item.packingSize,
131
+ item.uom,
132
+ item.releaseQty,
133
+ item.releaseUomValue
134
+ ]);
135
+ if (itemList.length <= 0) {
136
+ throw new error_util_1.ApiError('E01', 'INSUFFICIENT_STOCK');
137
+ }
138
+ console.log();
139
+ }));
140
+ // assignment
141
+ // console.time('assign')
142
+ let assignedOrderProducts = await assignToInventory(massagedData.orderProducts, customerBizplace, context, tx);
143
+ // console.timeEnd('assign')
144
+ // create order
145
+ // console.time('save')
146
+ let result = await createReleaseGood(releaseGood, assignedOrderProducts, customerBizplace, context, tx);
147
+ // console.timeEnd('save')
148
+ let data = {
149
+ id: result.id,
150
+ roNo: result.name,
151
+ refNo: result.refNo,
152
+ refNo2: result.refNo2,
153
+ refNo3: result.refNo3,
154
+ status: result.status,
155
+ truckNo: result.truckNo,
156
+ ownTransport: result.ownTransport,
157
+ crossDocking: result.crossDocking,
158
+ marketplaceOrderStatus: result.marketplaceOrderStatus,
159
+ billingAddress: result.billingAddress,
160
+ deliveryAddress1: result.deliveryAddress1,
161
+ deliveryAddress2: result.deliveryAddress2,
162
+ deliveryAddress3: result.deliveryAddress3,
163
+ deliveryAddress4: result.deliveryAddress4,
164
+ deliveryAddress5: result.deliveryAddress5,
165
+ attentionTo: result.attentionTo,
166
+ attentionCompany: result.attentionCompany,
167
+ city: result.city,
168
+ state: result.state,
169
+ postalCode: result.postalCode,
170
+ country: result.country,
171
+ phone1: result.phone1,
172
+ phone2: result.phone2,
173
+ email: result.email,
174
+ transporter: result.transporter,
175
+ trackingNo: result.trackingNo,
176
+ airwayBill: result.airwayBill,
177
+ invoice: result.invoice,
178
+ type: result.type,
179
+ packageId: result.packageId,
180
+ storeName: result.storeName,
181
+ storeId: result.storeId,
182
+ routeId: result.routeId,
183
+ stopId: result.stopId,
184
+ exportOption: result.exportOption,
185
+ releaseDate: result.releaseDate,
186
+ collectionOrderNo: result.collectionOrderNo,
187
+ platformCode: result === null || result === void 0 ? void 0 : result.platformCode,
188
+ platformCountry: result === null || result === void 0 ? void 0 : result.platformCountry,
189
+ platformName: result === null || result === void 0 ? void 0 : result.platformName,
190
+ discountAmount: result === null || result === void 0 ? void 0 : result.discountAmount,
191
+ taxAmount: result === null || result === void 0 ? void 0 : result.taxAmount,
192
+ shippingFee: result === null || result === void 0 ? void 0 : result.shippingFee,
193
+ bizplace: { name: result.bizplace.name },
194
+ domain: { name: result.domain.name },
195
+ orderInventories: result.orderInventories
196
+ };
197
+ // return body
198
+ context.body = { result: { data } };
199
+ }
200
+ catch (error) {
201
+ if (error.details) {
202
+ if (error.details == 'INSUFFICIENT_STOCK' && requiredDraft) {
203
+ const result = await createDraftOrder(releaseGood, massagedData.orderProducts, context);
204
+ let data = {
205
+ id: result.id,
206
+ name: result.name,
207
+ refNo: result.refNo,
208
+ refNo2: result.refNo2,
209
+ refNo3: result.refNo3,
210
+ status: result.status,
211
+ truckNo: result.truckNo,
212
+ ownTransport: result.ownTransport,
213
+ marketplaceOrderStatus: result.marketplaceOrderStatus,
214
+ billingAddress: result.billingAddress,
215
+ deliveryAddress1: result.deliveryAddress1,
216
+ deliveryAddress2: result.deliveryAddress2,
217
+ deliveryAddress3: result.deliveryAddress3,
218
+ deliveryAddress4: result.deliveryAddress4,
219
+ deliveryAddress5: result.deliveryAddress5,
220
+ attentionTo: result.attentionTo,
221
+ attentionCompany: result.attentionCompany,
222
+ city: result.city,
223
+ state: result.state,
224
+ postalCode: result.postalCode,
225
+ country: result.country,
226
+ phone1: result.phone1,
227
+ phone2: result.phone2,
228
+ email: result.email,
229
+ type: result.type,
230
+ packageId: result.packageId,
231
+ exportOption: result.exportOption,
232
+ releaseDate: result.releaseDate,
233
+ collectionOrderNo: result.collectionOrderNo,
234
+ platformCode: result === null || result === void 0 ? void 0 : result.platformCode,
235
+ platformCountry: result === null || result === void 0 ? void 0 : result.platformCountry,
236
+ platformName: result === null || result === void 0 ? void 0 : result.platformName,
237
+ discountAmount: result === null || result === void 0 ? void 0 : result.discountAmount,
238
+ taxAmount: result === null || result === void 0 ? void 0 : result.taxAmount,
239
+ shippingFee: result === null || result === void 0 ? void 0 : result.shippingFee,
240
+ bizplace: { name: result.bizplace.name },
241
+ domain: { name: result.domain.name }
242
+ };
243
+ context.body = { result: { data } };
244
+ }
245
+ else {
246
+ if (error instanceof error_util_1.ApiError)
247
+ (0, error_util_1.ApiErrorHandler)(context, error);
248
+ else
249
+ (0, error_util_1.throwInternalServerError)(context, error);
250
+ }
251
+ }
252
+ else {
253
+ if (error instanceof error_util_1.ApiError)
254
+ (0, error_util_1.ApiErrorHandler)(context, error);
255
+ else
256
+ (0, error_util_1.throwInternalServerError)(context, error);
257
+ }
258
+ }
259
+ });
260
+ });
261
+ async function checkExistingOrder(releaseGood, bizplace, checkDuplicationValidation = true, context, tx) {
262
+ const { domain, user } = context.state;
263
+ const refNo = releaseGood.refNo;
264
+ const refNo2 = releaseGood.refNo2;
265
+ const refNo3 = releaseGood.refNo3;
266
+ if (checkDuplicationValidation) {
267
+ const foundDraftReleaseGood = await tx.getRepository(sales_base_1.DraftReleaseGood).findOne({
268
+ where: {
269
+ domain,
270
+ refNo: refNo || null,
271
+ refNo2: refNo2 || null,
272
+ refNo3: refNo3 || null,
273
+ status: (0, typeorm_1.Not)((0, typeorm_1.In)([sales_base_1.DRAFT_RELEASE_ORDER_STATUS.CANCELLED]))
274
+ }
275
+ });
276
+ if (foundDraftReleaseGood) {
277
+ throw new error_util_1.ApiError('E05', `existing draft release order found: ${foundDraftReleaseGood.name}`);
278
+ }
279
+ const sellercraft = await tx.getRepository(integration_sellercraft_1.Sellercraft).findOne({ domain: bizplace.domain });
280
+ if (sellercraft) {
281
+ const sellercraftCtrl = new sales_base_1.SellercraftController(tx, bizplace.domain, user);
282
+ await sellercraftCtrl.checkExistingReleaseGood(sellercraft, releaseGood);
283
+ }
284
+ else {
285
+ const foundReleaseGood = await tx.getRepository(sales_base_1.ReleaseGood).findOne({
286
+ where: {
287
+ domain: domain,
288
+ refNo,
289
+ status: (0, typeorm_1.Not)((0, typeorm_1.In)([sales_base_1.ORDER_STATUS.CANCELLED, sales_base_1.ORDER_STATUS.PENDING_CANCEL]))
290
+ },
291
+ relations: ['bizplace', 'bizplace.domain', 'bizplace.company', 'bizplace.company.domain']
292
+ });
293
+ if (foundReleaseGood) {
294
+ const customerCompanyDomain = foundReleaseGood.bizplace.company.domain;
295
+ const marketplaceOrder = await tx.getRepository(marketplace_base_1.MarketplaceOrder).findOne({
296
+ where: { orderNo: refNo, domain: customerCompanyDomain }
297
+ });
298
+ // Need to restructure the validation
299
+ if (marketplaceOrder === null || marketplaceOrder === void 0 ? void 0 : marketplaceOrder.isSplitted) {
300
+ const refNo2 = releaseGood.refNo2;
301
+ const foundSplittedReleaseGood = await tx.getRepository(sales_base_1.ReleaseGood).findOne({
302
+ where: {
303
+ domain,
304
+ refNo2,
305
+ status: (0, typeorm_1.Not)((0, typeorm_1.In)([sales_base_1.ORDER_STATUS.CANCELLED, sales_base_1.ORDER_STATUS.PENDING_CANCEL]))
306
+ },
307
+ relations: ['bizplace', 'bizplace.domain', 'bizplace.company', 'bizplace.company.domain']
308
+ });
309
+ if (foundSplittedReleaseGood)
310
+ throw new error_util_1.ApiError('E05', `existing release order found: ${foundSplittedReleaseGood.name}`);
311
+ }
312
+ else {
313
+ throw new error_util_1.ApiError('E05', `existing release order found: ${foundReleaseGood.name}`);
314
+ }
315
+ }
316
+ }
317
+ }
318
+ }
319
+ async function createDraftOrder(releaseGood, orderProducts, context) {
320
+ return await (0, typeorm_1.getConnection)().transaction(async (tx) => {
321
+ return await (0, sales_base_1.createDraftReleaseGoodFunction)(null, releaseGood, orderProducts, null, [], context, tx);
322
+ });
323
+ }
324
+ async function createReleaseGood(releaseGood, orderProducts, bizplace, context, tx) {
325
+ const { domain, user } = context.state;
326
+ const settingRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(setting_base_1.Setting)) || (0, typeorm_1.getRepository)(setting_base_1.Setting);
327
+ const geoCountryRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(geography_1.GeoCountry)) || (0, typeorm_1.getRepository)(geography_1.GeoCountry);
328
+ if (orderProducts.length <= 0) {
329
+ throw new error_util_1.ApiError('E04', `no order items found: ${JSON.stringify(releaseGood)}`);
330
+ }
331
+ let newReleaseGood = new sales_base_1.ReleaseGood();
332
+ // find RO number rule setting
333
+ const roNoSetting = await settingRepo.findOne({
334
+ where: {
335
+ domain,
336
+ name: sales_base_1.ORDER_NUMBER_SETTING_KEY.RO_NUMBER_RULE
337
+ }
338
+ });
339
+ let shippingOrder;
340
+ if (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.shippingOrder) {
341
+ shippingOrder = await tx.getRepository(sales_base_1.ShippingOrder).save({
342
+ name: sales_base_1.OrderNoGenerator.shippingOrder(),
343
+ shipName: releaseGood.shippingOrder.shipName,
344
+ containerNo: releaseGood.shippingOrder.containerNo,
345
+ loadType: releaseGood.shippingOrder.loadType,
346
+ from: releaseGood.shippingOrder.from,
347
+ to: releaseGood.shippingOrder.to,
348
+ containerArrivalDate: releaseGood.shippingOrder.containerArrivalDate,
349
+ containerLeavingDate: releaseGood.shippingOrder.containerLeavingDate,
350
+ status: sales_base_1.ORDER_STATUS.PENDING,
351
+ creator: user,
352
+ updater: user
353
+ });
354
+ }
355
+ // standardise country
356
+ let deliveryCountry = (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.country) ? await geoCountryRepo.findOne({
357
+ where: [{ name: (0, typeorm_1.ILike)(releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.country) }, { description: (0, typeorm_1.ILike)(releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.country) }]
358
+ }) : null;
359
+ let platformCountry = (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.platformCountry) ? await geoCountryRepo.findOne({
360
+ where: [{ name: (0, typeorm_1.ILike)(releaseGood.platformCountry) }, { description: (0, typeorm_1.ILike)(releaseGood.platformCountry) }]
361
+ }) : null;
362
+ newReleaseGood = {
363
+ name: roNoSetting
364
+ ? await (0, id_rule_base_1.generateId)({ domain, type: sales_base_1.ORDER_NUMBER_RULE_TYPE.RO_NUMBER, seed: {} })
365
+ : sales_base_1.OrderNoGenerator.releaseGood(),
366
+ domain: domain,
367
+ bizplace: bizplace,
368
+ collectionOrderNo: releaseGood.collectionOrderNo,
369
+ courierOption: releaseGood.courierOption,
370
+ exportOption: releaseGood.exportOption,
371
+ ownTransport: releaseGood.ownTransport,
372
+ packingOption: releaseGood.packingOption,
373
+ marketplaceOrderStatus: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.marketplaceOrderStatus) || null,
374
+ billingAddress: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.billingAddress) || null,
375
+ deliveryAddress1: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress1) || null,
376
+ deliveryAddress2: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress2) || null,
377
+ deliveryAddress3: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress3) || null,
378
+ deliveryAddress4: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress4) || null,
379
+ deliveryAddress5: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.deliveryAddress5) || null,
380
+ attentionTo: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.attentionTo) || null,
381
+ attentionCompany: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.attentionCompany) || null,
382
+ city: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.city) || null,
383
+ state: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.state) || null,
384
+ postalCode: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.postalCode) || null,
385
+ country: (deliveryCountry === null || deliveryCountry === void 0 ? void 0 : deliveryCountry.description) || (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.country) || null,
386
+ phone1: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.phone1) || null,
387
+ phone2: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.phone2) || null,
388
+ email: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.email) || null,
389
+ transporter: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.transporter,
390
+ trackingNo: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.trackingNo,
391
+ airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill,
392
+ invoice: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.invoice,
393
+ refNo: releaseGood.refNo,
394
+ refNo2: releaseGood.refNo2 || null,
395
+ refNo3: releaseGood.refNo3 || null,
396
+ remark: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.remark) || null,
397
+ releaseDate: releaseGood.releaseDate,
398
+ truckNo: releaseGood.truckNo,
399
+ type: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.type) ? releaseGood.type : 'b2b',
400
+ status: sales_base_1.ORDER_STATUS.PENDING_WORKSHEET,
401
+ storeName: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.storeName,
402
+ storeId: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.storeId,
403
+ routeId: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.routeId,
404
+ stopId: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.stopId,
405
+ packageId: (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.packageId) || null,
406
+ noOfItems: orderProducts.length,
407
+ source: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.source,
408
+ platformCode: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.platformCode,
409
+ platformCountry: (platformCountry === null || platformCountry === void 0 ? void 0 : platformCountry.description) || (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.platformCountry) || null,
410
+ platformName: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.platformName,
411
+ discountAmount: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.discountAmount,
412
+ taxAmount: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.taxAmount,
413
+ shippingFee: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.shippingFee,
414
+ creator: user,
415
+ updater: user,
416
+ acceptedBy: user,
417
+ acceptedAt: new Date(),
418
+ shippingOrder: shippingOrder ? shippingOrder : null
419
+ };
420
+ let resultReleaseGood = await tx.getRepository(sales_base_1.ReleaseGood).save(newReleaseGood);
421
+ let combinedOrderInventories = [];
422
+ let savedOrderProducts = await Promise.all(orderProducts.map(async (orderProduct) => {
423
+ let orderInventories = orderProduct.orderInventories;
424
+ orderProduct = Object.assign(new sales_base_1.OrderProduct(), Object.assign(Object.assign({}, orderProduct), { name: (0, uuid_1.v4)(), domain: domain, bizplace: bizplace, releaseGood: resultReleaseGood, type: sales_base_1.ORDER_TYPES.RELEASE_OF_GOODS, status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED }));
425
+ let result = await tx.getRepository(sales_base_1.OrderProduct).save(orderProduct);
426
+ for (let oiIdx = 0; oiIdx < orderInventories.length; oiIdx++) {
427
+ let orderInventory = Object.assign(new sales_base_1.OrderInventory(), Object.assign(Object.assign({}, orderInventories[oiIdx]), { name: (0, uuid_1.v4)(), domain: domain, bizplace: bizplace, releaseGood: resultReleaseGood, type: sales_base_1.ORDER_TYPES.RELEASE_OF_GOODS, status: sales_base_1.ORDER_INVENTORY_STATUS.PENDING_WORKSHEET }));
428
+ await tx.getRepository(sales_base_1.OrderInventory).save(orderInventory);
429
+ combinedOrderInventories.push({
430
+ product: { name: orderInventory.product.name, sku: orderInventory.product.sku },
431
+ batchId: orderInventory.batchId,
432
+ packingType: orderInventory.packingType,
433
+ packingSize: orderInventory.packingSize,
434
+ releaseQty: orderInventory.releaseQty,
435
+ releaseUomValue: orderInventory.releaseUomValue
436
+ });
437
+ }
438
+ return result;
439
+ }));
440
+ newReleaseGood.orderProducts = savedOrderProducts;
441
+ newReleaseGood.orderInventories = combinedOrderInventories;
442
+ return newReleaseGood;
443
+ }
444
+ async function massageOrderItems(releaseGood, inputOrderProducts, context) {
445
+ const { t } = context;
446
+ let orderProducts = [];
447
+ //combine any repeated skus
448
+ inputOrderProducts = inputOrderProducts.reduce((acc, itm, idx) => {
449
+ let { sku, refCode } = itm.product;
450
+ let { packingType, packingSize, batchId, releaseQty, sellingPrice, paidAmount } = itm;
451
+ if (!sku && !refCode) {
452
+ throw new error_util_1.ApiError('E01', 'sku or refCode not found');
453
+ }
454
+ if (releaseQty <= 0) {
455
+ throw new error_util_1.ApiError('E01', 'negative stock request');
456
+ }
457
+ if (releaseQty % 1 !== 0)
458
+ throw new error_util_1.ApiError('E01', `releaseQty is not an integer: ${releaseQty}`);
459
+ let existingIndex = acc.findIndex(itm => (itm === null || itm === void 0 ? void 0 : itm.sku) == (sku === null || sku === void 0 ? void 0 : sku.trim()) &&
460
+ (itm === null || itm === void 0 ? void 0 : itm.refCode) == (refCode === null || refCode === void 0 ? void 0 : refCode.trim()) &&
461
+ (itm === null || itm === void 0 ? void 0 : itm.packingType) == (packingType === null || packingType === void 0 ? void 0 : packingType.trim()) &&
462
+ (itm === null || itm === void 0 ? void 0 : itm.packingSize) == packingSize);
463
+ if (existingIndex >= 0 && releaseQty > 0) {
464
+ acc[existingIndex].releaseQty = acc[existingIndex].releaseQty + releaseQty;
465
+ }
466
+ else {
467
+ acc.push({
468
+ sku: sku === null || sku === void 0 ? void 0 : sku.trim(),
469
+ refCode: refCode === null || refCode === void 0 ? void 0 : refCode.trim(),
470
+ packingType: packingType === null || packingType === void 0 ? void 0 : packingType.trim(),
471
+ packingSize: packingSize,
472
+ releaseQty: releaseQty,
473
+ sellingPrice: sellingPrice,
474
+ paidAmount: paidAmount
475
+ });
476
+ }
477
+ return acc;
478
+ }, []);
479
+ //find customer sku in system
480
+ await Promise.all(inputOrderProducts.map(async (inputOrderItem) => {
481
+ const sku = inputOrderItem.sku;
482
+ const refCode = inputOrderItem.refCode;
483
+ const packingType = inputOrderItem.packingType;
484
+ const packingSize = inputOrderItem.packingSize;
485
+ const qb = (0, typeorm_1.getRepository)(product_base_1.ProductDetail)
486
+ .createQueryBuilder('PD')
487
+ .innerJoinAndSelect('PD.product', 'PROD')
488
+ .where('PROD.bizplace_id = :bizplaceId', { bizplaceId: releaseGood.companyBizplace.id });
489
+ if (!sku && !refCode) {
490
+ throw new error_util_1.ApiError('E04', t('sku or refCode not found'));
491
+ }
492
+ if (refCode) {
493
+ qb.andWhere('PD.ref_code = :refCode', { refCode });
494
+ }
495
+ if (sku) {
496
+ qb.andWhere('PROD.sku = :sku', { sku });
497
+ }
498
+ if (packingType) {
499
+ qb.andWhere('PD.packing_type = :packingType', { packingType });
500
+ }
501
+ if ((!packingType && !refCode) || !packingSize) {
502
+ qb.andWhere('PD.is_default = :isDefault', { isDefault: true });
503
+ }
504
+ const productDetail = await qb.getOne();
505
+ // order Product based on product detail
506
+ if (productDetail) {
507
+ let newOrderProduct = Object.assign({}, inputOrderItem);
508
+ newOrderProduct = Object.assign(Object.assign({}, newOrderProduct), { product: productDetail.product, productDetail: productDetail, packingType: productDetail.packingType, packingSize: packingSize || productDetail.packingSize, uom: productDetail.uom, uomValue: productDetail.uomValue, refCode: inputOrderItem.refCode, releaseQty: inputOrderItem.releaseQty, releaseUomValue: inputOrderItem.releaseQty * (productDetail.uomValue || 1), packQty: 0, actualPackQty: 0, palletQty: 0, actualPalletQty: 0, type: 'RELEASE_OF_GOODS', status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED, batchId: '-' });
509
+ newOrderProduct.orderInventories = [
510
+ Object.assign(Object.assign({}, newOrderProduct), { packQty: 0, actualPackQty: 0, palletQty: 0, actualPalletQty: 0, type: 'RELEASE_OF_GOODS', status: sales_base_1.ORDER_INVENTORY_STATUS.PENDING_WORKSHEET })
511
+ ];
512
+ orderProducts.push(newOrderProduct);
513
+ }
514
+ if (!productDetail) {
515
+ const qb = (0, typeorm_1.getRepository)(product_base_1.ProductBundle)
516
+ .createQueryBuilder('PB')
517
+ .innerJoinAndSelect('PB.productBundleSettings', 'PBS')
518
+ .innerJoinAndSelect('PBS.productDetail', 'PBD')
519
+ .innerJoinAndSelect('PBD.product', 'PROD')
520
+ .where('PB.bizplace_id = :bizplaceId', { bizplaceId: releaseGood.companyBizplace.id });
521
+ if (!sku && !refCode) {
522
+ throw new error_util_1.ApiError('E04', 'sku or refCode not found');
523
+ }
524
+ if (refCode) {
525
+ qb.andWhere('PB.ref_code = :refCode', { refCode });
526
+ }
527
+ if (sku) {
528
+ qb.andWhere('PB.sku = :sku', { sku });
529
+ }
530
+ if (packingType) {
531
+ qb.andWhere('PB.packing_type = :packingType', { packingType });
532
+ }
533
+ const foundProductBundle = await qb.getOne();
534
+ if (foundProductBundle) {
535
+ let orderProduct = {
536
+ productBundle: foundProductBundle,
537
+ refCode,
538
+ packingType: foundProductBundle.packingType,
539
+ packingSize: packingSize || 1,
540
+ uom: inputOrderItem === null || inputOrderItem === void 0 ? void 0 : inputOrderItem.uom,
541
+ releaseQty: inputOrderItem.releaseQty,
542
+ releaseUomValue: inputOrderItem.releaseQty,
543
+ packQty: 0,
544
+ actualPackQty: 0,
545
+ palletQty: 0,
546
+ actualPalletQty: 0,
547
+ orderInventories: [],
548
+ type: 'RELEASE_OF_GOODS',
549
+ status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED,
550
+ batchId: '-'
551
+ };
552
+ const bundleProductSettings = foundProductBundle.productBundleSettings;
553
+ bundleProductSettings.map(bundleProductSetting => {
554
+ const productDetailBundle = bundleProductSetting.productDetail;
555
+ let newOrderInventory = {
556
+ product: productDetailBundle.product,
557
+ productDetail: productDetailBundle,
558
+ sku: productDetailBundle.product.sku,
559
+ packingType: productDetailBundle.packingType,
560
+ packingSize: productDetailBundle.packingSize,
561
+ uom: productDetailBundle.uom,
562
+ packQty: 0,
563
+ actualPackQty: 0,
564
+ palletQty: 0,
565
+ actualPalletQty: 0,
566
+ releaseQty: inputOrderItem.releaseQty * bundleProductSetting.bundleQty,
567
+ releaseUomValue: inputOrderItem.releaseQty *
568
+ bundleProductSetting.bundleQty *
569
+ (productDetailBundle.uomValue <= 0 ? 1 : productDetailBundle.uomValue),
570
+ type: 'RELEASE_OF_GOODS',
571
+ status: sales_base_1.ORDER_INVENTORY_STATUS.PENDING_WORKSHEET
572
+ };
573
+ orderProduct.orderInventories.push(newOrderInventory);
574
+ });
575
+ orderProducts.push(orderProduct);
576
+ }
577
+ else {
578
+ if (sku && refCode) {
579
+ throw new error_util_1.ApiError('E04', t(`error.sku ${sku} and refCode ${refCode} not exist in product / bundle master`));
580
+ }
581
+ if (sku) {
582
+ throw new error_util_1.ApiError('E04', t(`error.sku ${sku} not exist in product / bundle master`));
583
+ }
584
+ if (refCode) {
585
+ throw new error_util_1.ApiError('E04', t(`error.refCode ${refCode} not exist in product / bundle master`));
586
+ }
587
+ }
588
+ }
589
+ }));
590
+ //combine any repeated skus
591
+ let combinedItems = orderProducts.reduce((acc, op, idx) => {
592
+ let oi = (op === null || op === void 0 ? void 0 : op.orderInventories) || [];
593
+ oi.forEach(itm => {
594
+ let { sku, refCode } = itm.product;
595
+ let { packingType, packingSize, batchId, releaseQty, product, productDetail, uom } = itm;
596
+ if (!sku && !refCode) {
597
+ throw new error_util_1.ApiError('E04', t('error.sku or refCode not found'));
598
+ }
599
+ let existingIndex = acc.findIndex(itm => (itm === null || itm === void 0 ? void 0 : itm.sku) == (sku === null || sku === void 0 ? void 0 : sku.trim()) &&
600
+ (itm === null || itm === void 0 ? void 0 : itm.refCode) == (refCode === null || refCode === void 0 ? void 0 : refCode.trim()) &&
601
+ (itm === null || itm === void 0 ? void 0 : itm.packingType) == (packingType === null || packingType === void 0 ? void 0 : packingType.trim()) &&
602
+ (itm === null || itm === void 0 ? void 0 : itm.packingSize) == packingSize &&
603
+ (itm === null || itm === void 0 ? void 0 : itm.batchId) == (batchId === null || batchId === void 0 ? void 0 : batchId.trim()) &&
604
+ (itm === null || itm === void 0 ? void 0 : itm.uom) == (uom === null || uom === void 0 ? void 0 : uom.trim()));
605
+ if (existingIndex >= 0 && releaseQty > 0) {
606
+ acc[existingIndex].releaseQty = acc[existingIndex].releaseQty + releaseQty;
607
+ acc[existingIndex].releaseUomValue =
608
+ acc[existingIndex].releaseUomValue + releaseQty * (productDetail.uomValue <= 0 ? 1 : productDetail.uomValue);
609
+ }
610
+ else {
611
+ let updateObj = {
612
+ sku: sku === null || sku === void 0 ? void 0 : sku.trim(),
613
+ packingType: packingType === null || packingType === void 0 ? void 0 : packingType.trim(),
614
+ packingSize: packingSize,
615
+ uom: uom === null || uom === void 0 ? void 0 : uom.trim(),
616
+ releaseQty: releaseQty,
617
+ releaseUomValue: releaseQty * (productDetail.uomValue <= 0 ? 1 : productDetail.uomValue),
618
+ product,
619
+ productDetail
620
+ };
621
+ if (refCode)
622
+ updateObj['refCode'] = refCode.trim();
623
+ updateObj['batchId'] = batchId ? batchId === null || batchId === void 0 ? void 0 : batchId.trim() : '-';
624
+ acc.push(updateObj);
625
+ }
626
+ });
627
+ return acc;
628
+ }, []);
629
+ return { orderProducts, combinedItems };
630
+ }
631
+ async function assignToInventory(orderProducts, customerBizplace, context, tx) {
632
+ const { client, domain, user } = context.state;
633
+ for (let opIdx = 0; opIdx < orderProducts.length; opIdx++) {
634
+ let orderProduct = orderProducts[opIdx];
635
+ let assignedOrderInventories = [];
636
+ const pickingProductSetting = await tx.getRepository(setting_base_1.Setting).findOne({
637
+ where: { domain, name: 'rule-for-picking-product' }
638
+ });
639
+ for (let oiIdx = 0; oiIdx < orderProducts[opIdx].orderInventories.length; oiIdx++) {
640
+ const orderInventory = orderProduct.orderInventories[oiIdx];
641
+ let sortings = [];
642
+ switch (orderInventory.product.pickingStrategy) {
643
+ case 'LIFO':
644
+ sortings.push({ name: 'iv.created_at', desc: true });
645
+ if (pickingProductSetting === null || pickingProductSetting === void 0 ? void 0 : pickingProductSetting.value) {
646
+ for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {
647
+ sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false });
648
+ }
649
+ }
650
+ else {
651
+ sortings.push({ name: 'loc.name', desc: false }, { name: 'iv.created_at', desc: false });
652
+ }
653
+ break;
654
+ case 'FEFO':
655
+ sortings.push({ name: 'iv.expiration_date', desc: false }, { name: 'iv.created_at', desc: false });
656
+ if (pickingProductSetting === null || pickingProductSetting === void 0 ? void 0 : pickingProductSetting.value) {
657
+ for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {
658
+ sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false });
659
+ }
660
+ }
661
+ else {
662
+ sortings.push({ name: 'loc.name', desc: false }, { name: 'iv.created_at', desc: false });
663
+ }
664
+ break;
665
+ case 'FMFO':
666
+ sortings.push({ name: 'iv.manufacture_date', desc: false }, { name: 'iv.created_at', desc: false });
667
+ if (pickingProductSetting === null || pickingProductSetting === void 0 ? void 0 : pickingProductSetting.value) {
668
+ for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {
669
+ sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false });
670
+ }
671
+ }
672
+ else {
673
+ sortings.push({ name: 'loc.name', desc: false }, { name: 'iv.created_at', desc: false });
674
+ }
675
+ break;
676
+ case 'LOCATION':
677
+ if (pickingProductSetting === null || pickingProductSetting === void 0 ? void 0 : pickingProductSetting.value) {
678
+ for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {
679
+ sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false });
680
+ }
681
+ }
682
+ else {
683
+ sortings.push({ name: 'loc.name', desc: false }, { name: 'iv.created_at', desc: false });
684
+ }
685
+ break;
686
+ //Every other case includes 'FIFO' will be applicable for this case
687
+ default:
688
+ sortings.push({ name: 'iv.created_at', desc: false });
689
+ if (pickingProductSetting === null || pickingProductSetting === void 0 ? void 0 : pickingProductSetting.value) {
690
+ for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {
691
+ sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false });
692
+ }
693
+ }
694
+ else {
695
+ sortings.push({ name: 'loc.name', desc: false });
696
+ sortings.push({ name: 'iv.pallet_id', desc: false });
697
+ }
698
+ break;
699
+ }
700
+ let queryFilters = [];
701
+ let queryStrings = queryFilters.reduce((acc, itm, idx, arr) => {
702
+ acc.values.push(itm.filters);
703
+ switch (itm === null || itm === void 0 ? void 0 : itm.operator) {
704
+ case 'notin':
705
+ case 'in':
706
+ acc.query.push(`${itm.query} ${itm.operator == 'notin' ? 'NOT IN' : 'IN'} (${itm.filtes
707
+ .map((itm, idx) => {
708
+ return `$${acc.values.length + 1}`;
709
+ })
710
+ .join(',')})`);
711
+ break;
712
+ default:
713
+ acc.query.push(`${itm.query} ${(itm === null || itm === void 0 ? void 0 : itm.operator) ? itm.operator : '='} $${acc.values.length + 1}`);
714
+ break;
715
+ }
716
+ acc.query.push(`${itm.query} ${(itm === null || itm === void 0 ? void 0 : itm.operator) ? itm.operator : '='} $${acc.values.length + 1}`);
717
+ }, {
718
+ query: [],
719
+ values: []
720
+ });
721
+ let sortQuery = sortings
722
+ .map(itm => {
723
+ return `${itm.name} ${itm.desc ? 'DESC' : 'ASC'}`;
724
+ })
725
+ .join(`,`);
726
+ let updatedInventories = await tx.getRepository(warehouse_base_1.Inventory).query(`
727
+ update inventories tgt set locked_qty = coalesce(locked_qty,0) + src.reserve_qty,
728
+ locked_uom_value = coalesce(locked_uom_value,0) + src.reserve_uom_value,
729
+ updated_at = NOW(),
730
+ updater_id = $1
731
+ from (
732
+ select "id", "pallet_id","carton_id", "batch_id", "batch_id_ref", "unit", "uom", "packing_type", "packing_size", "manufacture_year",
733
+ "reserve_qty", (("uom_value"/"qty") * "reserve_qty") as "reserve_uom_value" from (
734
+ select "sort_seq", "id", "pallet_id", "batch_id", "batch_id_ref", "unit", "uom", "packing_type", "packing_size", "manufacture_year", "carton_id", "uom_value", "locked_uom_value", "qty", "locked_qty", "created_at",
735
+ "release_qty", "release_uom_value", lock_amount,
736
+ case when "lock_amount" < 0 then "available_qty" else "available_qty" - "lock_amount" end as "reserve_qty"
737
+ from (
738
+ select *,
739
+ qty - locked_qty as available_qty,
740
+ sum(qty - locked_qty - release_qty) over (order by sort_seq asc rows between unbounded preceding and current row) as lock_amount
741
+ from (
742
+ SELECT 0 as sort_seq, null as id, null as pallet_id, null as batch_id, null as batch_id_ref,
743
+ null as unit, '${orderInventory.uom}' as uom, '${orderInventory.packingType}' as packing_type, '${orderInventory.packingSize}' as packing_size,
744
+ null as manufacture_year, null as carton_id, 0 as uom_value, 0 as locked_uom_value, 0 as qty, 0 as locked_qty, null as created_at,
745
+ '${orderInventory.releaseQty}' as release_qty, '${orderInventory.releaseUomValue}' as release_uom_value
746
+ UNION
747
+ (
748
+ SELECT ROW_NUMBER() OVER(PARTITION BY iv.domain_id ORDER BY ${sortQuery}) as sort_seq,
749
+ iv.id, iv.pallet_id, iv.batch_id, iv.batch_id_ref,
750
+ iv.unit, iv.uom, iv.packing_type, iv.packing_size,
751
+ iv.manufacture_year, iv.carton_id, iv.uom_value,
752
+ coalesce(iv.locked_uom_value,0) as locked_uom_value, iv.qty, coalesce(iv.locked_qty,0) as locked_qty, iv.created_at,
753
+ 0 as release_qty, 0 as release_uom_value
754
+ FROM "inventories" "iv"
755
+ INNER JOIN "locations" "loc" ON "loc"."id"="iv"."location_id"
756
+ WHERE case when coalesce("iv"."locked_qty",0) < 0 then 0 else ("iv"."qty" - coalesce("iv"."locked_qty",0)) end > 0 AND
757
+ "iv"."domain_id" = $2 AND "iv"."bizplace_id" = $3 AND "iv"."packing_type" = $4 AND "iv"."packing_size" = $5 AND "iv"."product_id" = $6 AND "iv"."status" = $7 AND "loc"."type" NOT IN ($8, $9)
758
+ ${queryStrings.query.length > 0 ? `AND ${queryStrings.join(' AND ')}` : ''}
759
+ ORDER BY ${sortQuery}
760
+ )
761
+ ) dt1
762
+ ) dt2 where case when "lock_amount" < 0 then "available_qty" else "available_qty" - "lock_amount" end > 0
763
+ ) dt3 where sort_seq > 0
764
+ ) src where src.id = tgt.id
765
+ returning
766
+ tgt."id", tgt."qty", tgt."pallet_id", tgt."carton_id", tgt."batch_id", tgt."batch_id_ref", tgt."unit",
767
+ tgt."uom", tgt."packing_type", tgt."packing_size", tgt."manufacture_year",
768
+ tgt."locked_qty", tgt."uom_value", tgt."locked_uom_value", src."reserve_qty", src."reserve_uom_value";`, [
769
+ user.id,
770
+ domain.id,
771
+ customerBizplace.id,
772
+ orderInventory.packingType,
773
+ orderInventory.packingSize,
774
+ orderInventory.product.id,
775
+ warehouse_base_1.INVENTORY_STATUS.STORED,
776
+ warehouse_base_1.LOCATION_TYPE.QUARANTINE,
777
+ warehouse_base_1.LOCATION_TYPE.RESERVE,
778
+ ...queryStrings.values
779
+ ]);
780
+ let totalAssigned = updatedInventories[0].reduce((acc, inv) => {
781
+ return acc + inv.reserve_qty;
782
+ }, 0);
783
+ if (orderInventory.releaseQty != totalAssigned) {
784
+ throw new error_util_1.ApiError('E01', 'INSUFFICIENT_STOCK');
785
+ }
786
+ updatedInventories[0].forEach(inv => {
787
+ let oi = Object.assign(Object.assign({}, orderInventory), { inventory: { id: inv.id }, uom: inv.uom, packingType: inv.packing_type, batchId: inv.batch_id, releaseQty: inv.reserve_qty, releaseUomValue: inv.reserve_uom_value, pickedQty: 0, packedQty: 0, type: sales_base_1.ORDER_TYPES.RELEASE_OF_GOODS, status: sales_base_1.ORDER_INVENTORY_STATUS.PENDING_WORKSHEET, domain: { id: domain.id }, bizplace: { id: customerBizplace.id } });
788
+ assignedOrderInventories.push(oi);
789
+ });
790
+ }
791
+ orderProducts[opIdx].orderInventories = assignedOrderInventories;
792
+ }
793
+ return orderProducts;
794
+ }
795
+ //# sourceMappingURL=add-release-order.js.map