@things-factory/operato-hub 4.3.82 → 4.3.83

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 (336) hide show
  1. package/dist-server/middlewares/business-middleware.js +1 -4
  2. package/dist-server/middlewares/business-middleware.js.map +1 -1
  3. package/dist-server/middlewares/store-middleware.js.map +1 -1
  4. package/dist-server/routers/api/index.js +1 -0
  5. package/dist-server/routers/api/index.js.map +1 -1
  6. package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js +2 -3
  7. package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js.map +1 -1
  8. package/dist-server/routers/api/restful-apis/unstable/add-inbound-order.js +2 -5
  9. package/dist-server/routers/api/restful-apis/unstable/add-inbound-order.js.map +1 -1
  10. package/dist-server/routers/api/restful-apis/unstable/add-release-order.js +2 -4
  11. package/dist-server/routers/api/restful-apis/unstable/add-release-order.js.map +1 -1
  12. package/dist-server/routers/api/restful-apis/v1/add-contact-point.js +64 -0
  13. package/dist-server/routers/api/restful-apis/v1/add-contact-point.js.map +1 -0
  14. package/dist-server/routers/api/restful-apis/v1/add-draft-release-order.js +171 -0
  15. package/dist-server/routers/api/restful-apis/v1/add-draft-release-order.js.map +1 -0
  16. package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js +213 -0
  17. package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js.map +1 -0
  18. package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js +144 -0
  19. package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js.map +1 -0
  20. package/dist-server/routers/api/restful-apis/v1/add-products.js +88 -0
  21. package/dist-server/routers/api/restful-apis/v1/add-products.js.map +1 -0
  22. package/dist-server/routers/api/restful-apis/v1/add-release-order.js +774 -0
  23. package/dist-server/routers/api/restful-apis/v1/add-release-order.js.map +1 -0
  24. package/dist-server/routers/api/restful-apis/v1/bizplace.js +45 -0
  25. package/dist-server/routers/api/restful-apis/v1/bizplace.js.map +1 -0
  26. package/dist-server/routers/api/restful-apis/v1/cancel-marketplace-order.js +63 -0
  27. package/dist-server/routers/api/restful-apis/v1/cancel-marketplace-order.js.map +1 -0
  28. package/dist-server/routers/api/restful-apis/v1/cancel-release-order.js +66 -0
  29. package/dist-server/routers/api/restful-apis/v1/cancel-release-order.js.map +1 -0
  30. package/dist-server/routers/api/restful-apis/v1/get-contact-point-list.js +103 -0
  31. package/dist-server/routers/api/restful-apis/v1/get-contact-point-list.js.map +1 -0
  32. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-detail.js +47 -0
  33. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-detail.js.map +1 -0
  34. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-list.js +124 -0
  35. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-list.js.map +1 -0
  36. package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js +164 -0
  37. package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js.map +1 -0
  38. package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js +120 -0
  39. package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js.map +1 -0
  40. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-detail.js +115 -0
  41. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-detail.js.map +1 -0
  42. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-list.js +125 -0
  43. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-list.js.map +1 -0
  44. package/dist-server/routers/api/restful-apis/v1/get-inventory-overall-product-group.js +88 -0
  45. package/dist-server/routers/api/restful-apis/v1/get-inventory-overall-product-group.js.map +1 -0
  46. package/dist-server/routers/api/restful-apis/v1/get-inventory-product-group.js +101 -0
  47. package/dist-server/routers/api/restful-apis/v1/get-inventory-product-group.js.map +1 -0
  48. package/dist-server/routers/api/restful-apis/v1/get-marketplace-order-shipping-list.js +146 -0
  49. package/dist-server/routers/api/restful-apis/v1/get-marketplace-order-shipping-list.js.map +1 -0
  50. package/dist-server/routers/api/restful-apis/v1/get-marketplace-store-list.js +79 -0
  51. package/dist-server/routers/api/restful-apis/v1/get-marketplace-store-list.js.map +1 -0
  52. package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js +110 -0
  53. package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js.map +1 -0
  54. package/dist-server/routers/api/restful-apis/v1/get-partners.js +23 -0
  55. package/dist-server/routers/api/restful-apis/v1/get-partners.js.map +1 -0
  56. package/dist-server/routers/api/restful-apis/v1/get-products.js +210 -0
  57. package/dist-server/routers/api/restful-apis/v1/get-products.js.map +1 -0
  58. package/dist-server/routers/api/restful-apis/v1/get-release-order-detail.js +122 -0
  59. package/dist-server/routers/api/restful-apis/v1/get-release-order-detail.js.map +1 -0
  60. package/dist-server/routers/api/restful-apis/v1/get-release-order-list.js +191 -0
  61. package/dist-server/routers/api/restful-apis/v1/get-release-order-list.js.map +1 -0
  62. package/dist-server/routers/api/restful-apis/v1/get-warehouses.js +20 -0
  63. package/dist-server/routers/api/restful-apis/v1/get-warehouses.js.map +1 -0
  64. package/dist-server/routers/api/restful-apis/v1/index.js +31 -2
  65. package/dist-server/routers/api/restful-apis/v1/index.js.map +1 -1
  66. package/dist-server/routers/api/restful-apis/v1/reject-inbound-order.js +35 -0
  67. package/dist-server/routers/api/restful-apis/v1/reject-inbound-order.js.map +1 -0
  68. package/dist-server/routers/api/restful-apis/v1/set-marketplace-order-delivered.js +45 -0
  69. package/dist-server/routers/api/restful-apis/v1/set-marketplace-order-delivered.js.map +1 -0
  70. package/dist-server/routers/api/restful-apis/v1/set-marketplace-order-failed-delivery.js +45 -0
  71. package/dist-server/routers/api/restful-apis/v1/set-marketplace-order-failed-delivery.js.map +1 -0
  72. package/dist-server/routers/api/restful-apis/v1/update-marketplace-order.js +93 -0
  73. package/dist-server/routers/api/restful-apis/v1/update-marketplace-order.js.map +1 -0
  74. package/dist-server/routers/api/restful-apis/v1/update-marketplace-shipping-order.js +85 -0
  75. package/dist-server/routers/api/restful-apis/v1/update-marketplace-shipping-order.js.map +1 -0
  76. package/dist-server/routers/api/restful-apis/v1/update-release-order-details.js +82 -0
  77. package/dist-server/routers/api/restful-apis/v1/update-release-order-details.js.map +1 -0
  78. package/dist-server/routers/api/restful-apis/v2/add-contact-point.js +64 -0
  79. package/dist-server/routers/api/restful-apis/v2/add-contact-point.js.map +1 -0
  80. package/dist-server/routers/api/restful-apis/v2/add-draft-release-order.js +171 -0
  81. package/dist-server/routers/api/restful-apis/v2/add-draft-release-order.js.map +1 -0
  82. package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js +213 -0
  83. package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js.map +1 -0
  84. package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js +144 -0
  85. package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js.map +1 -0
  86. package/dist-server/routers/api/restful-apis/v2/add-products.js +88 -0
  87. package/dist-server/routers/api/restful-apis/v2/add-products.js.map +1 -0
  88. package/dist-server/routers/api/restful-apis/v2/add-release-order.js +774 -0
  89. package/dist-server/routers/api/restful-apis/v2/add-release-order.js.map +1 -0
  90. package/dist-server/routers/api/restful-apis/v2/bizplace.js +45 -0
  91. package/dist-server/routers/api/restful-apis/v2/bizplace.js.map +1 -0
  92. package/dist-server/routers/api/restful-apis/v2/cancel-marketplace-order.js +63 -0
  93. package/dist-server/routers/api/restful-apis/v2/cancel-marketplace-order.js.map +1 -0
  94. package/dist-server/routers/api/restful-apis/v2/cancel-release-order.js +66 -0
  95. package/dist-server/routers/api/restful-apis/v2/cancel-release-order.js.map +1 -0
  96. package/dist-server/routers/api/restful-apis/v2/get-contact-point-list.js +103 -0
  97. package/dist-server/routers/api/restful-apis/v2/get-contact-point-list.js.map +1 -0
  98. package/dist-server/routers/api/restful-apis/v2/get-delivery-order-detail.js +47 -0
  99. package/dist-server/routers/api/restful-apis/v2/get-delivery-order-detail.js.map +1 -0
  100. package/dist-server/routers/api/restful-apis/v2/get-delivery-order-list.js +124 -0
  101. package/dist-server/routers/api/restful-apis/v2/get-delivery-order-list.js.map +1 -0
  102. package/dist-server/routers/api/restful-apis/v2/get-delivery-orders.js +164 -0
  103. package/dist-server/routers/api/restful-apis/v2/get-delivery-orders.js.map +1 -0
  104. package/dist-server/routers/api/restful-apis/v2/get-goods-received-notes.js +120 -0
  105. package/dist-server/routers/api/restful-apis/v2/get-goods-received-notes.js.map +1 -0
  106. package/dist-server/routers/api/restful-apis/v2/get-inbound-order-detail.js +115 -0
  107. package/dist-server/routers/api/restful-apis/v2/get-inbound-order-detail.js.map +1 -0
  108. package/dist-server/routers/api/restful-apis/v2/get-inbound-order-list.js +125 -0
  109. package/dist-server/routers/api/restful-apis/v2/get-inbound-order-list.js.map +1 -0
  110. package/dist-server/routers/api/restful-apis/v2/get-inventory-overall-product-group.js +88 -0
  111. package/dist-server/routers/api/restful-apis/v2/get-inventory-overall-product-group.js.map +1 -0
  112. package/dist-server/routers/api/restful-apis/v2/get-inventory-product-group.js +101 -0
  113. package/dist-server/routers/api/restful-apis/v2/get-inventory-product-group.js.map +1 -0
  114. package/dist-server/routers/api/restful-apis/v2/get-marketplace-order-shipping-list.js +146 -0
  115. package/dist-server/routers/api/restful-apis/v2/get-marketplace-order-shipping-list.js.map +1 -0
  116. package/dist-server/routers/api/restful-apis/v2/get-marketplace-store-list.js +79 -0
  117. package/dist-server/routers/api/restful-apis/v2/get-marketplace-store-list.js.map +1 -0
  118. package/dist-server/routers/api/restful-apis/v2/get-onhand-inventories.js +110 -0
  119. package/dist-server/routers/api/restful-apis/v2/get-onhand-inventories.js.map +1 -0
  120. package/dist-server/routers/api/restful-apis/v2/get-partners.js +23 -0
  121. package/dist-server/routers/api/restful-apis/v2/get-partners.js.map +1 -0
  122. package/dist-server/routers/api/restful-apis/v2/get-products.js +210 -0
  123. package/dist-server/routers/api/restful-apis/v2/get-products.js.map +1 -0
  124. package/dist-server/routers/api/restful-apis/v2/get-release-order-detail.js +122 -0
  125. package/dist-server/routers/api/restful-apis/v2/get-release-order-detail.js.map +1 -0
  126. package/dist-server/routers/api/restful-apis/v2/get-release-order-list.js +191 -0
  127. package/dist-server/routers/api/restful-apis/v2/get-release-order-list.js.map +1 -0
  128. package/dist-server/routers/api/restful-apis/v2/get-warehouses.js +20 -0
  129. package/dist-server/routers/api/restful-apis/v2/get-warehouses.js.map +1 -0
  130. package/dist-server/routers/api/restful-apis/v2/index.js +34 -0
  131. package/dist-server/routers/api/restful-apis/v2/index.js.map +1 -0
  132. package/dist-server/routers/api/restful-apis/v2/reject-inbound-order.js +35 -0
  133. package/dist-server/routers/api/restful-apis/v2/reject-inbound-order.js.map +1 -0
  134. package/dist-server/routers/api/restful-apis/v2/set-marketplace-order-delivered.js +45 -0
  135. package/dist-server/routers/api/restful-apis/v2/set-marketplace-order-delivered.js.map +1 -0
  136. package/dist-server/routers/api/restful-apis/v2/set-marketplace-order-failed-delivery.js +45 -0
  137. package/dist-server/routers/api/restful-apis/v2/set-marketplace-order-failed-delivery.js.map +1 -0
  138. package/dist-server/routers/api/restful-apis/v2/update-marketplace-order.js +93 -0
  139. package/dist-server/routers/api/restful-apis/v2/update-marketplace-order.js.map +1 -0
  140. package/dist-server/routers/api/restful-apis/v2/update-marketplace-shipping-order.js +85 -0
  141. package/dist-server/routers/api/restful-apis/v2/update-marketplace-shipping-order.js.map +1 -0
  142. package/dist-server/routers/api/restful-apis/v2/update-release-order-details.js +82 -0
  143. package/dist-server/routers/api/restful-apis/v2/update-release-order-details.js.map +1 -0
  144. package/openapi/v1/contact-point.yaml +90 -253
  145. package/openapi/v1/ecommerce.yaml +549 -0
  146. package/openapi/v1/inbound.yaml +316 -646
  147. package/openapi/v1/inventory.yaml +231 -0
  148. package/openapi/v1/outbound.yaml +580 -1303
  149. package/openapi/v1/product.yaml +194 -514
  150. package/openapi/v1.yaml +7 -39
  151. package/package.json +54 -54
  152. package/server/middlewares/business-middleware.ts +1 -5
  153. package/server/middlewares/store-middleware.ts +0 -1
  154. package/server/routers/api/index.ts +1 -0
  155. package/server/routers/api/restful-apis/unstable/add-draft-release-order.ts +2 -3
  156. package/server/routers/api/restful-apis/unstable/add-inbound-order.ts +2 -5
  157. package/server/routers/api/restful-apis/unstable/add-release-order.ts +2 -4
  158. package/server/routers/api/restful-apis/v1/add-contact-point.ts +77 -0
  159. package/server/routers/api/restful-apis/v1/add-draft-release-order.ts +196 -0
  160. package/server/routers/api/restful-apis/v1/add-inbound-order.ts +242 -0
  161. package/server/routers/api/restful-apis/v1/add-marketplace-order.ts +172 -0
  162. package/server/routers/api/restful-apis/v1/add-products.ts +112 -0
  163. package/server/routers/api/restful-apis/v1/add-release-order.ts +967 -0
  164. package/server/routers/api/restful-apis/v1/bizplace.ts +45 -0
  165. package/server/routers/api/restful-apis/v1/cancel-marketplace-order.ts +81 -0
  166. package/server/routers/api/restful-apis/v1/cancel-release-order.ts +91 -0
  167. package/server/routers/api/restful-apis/v1/get-contact-point-list.ts +110 -0
  168. package/server/routers/api/restful-apis/v1/get-delivery-order-detail.ts +46 -0
  169. package/server/routers/api/restful-apis/v1/get-delivery-order-list.ts +121 -0
  170. package/server/routers/api/restful-apis/v1/get-delivery-orders.ts +178 -0
  171. package/server/routers/api/restful-apis/v1/get-goods-received-notes.ts +134 -0
  172. package/server/routers/api/restful-apis/v1/get-inbound-order-detail.ts +128 -0
  173. package/server/routers/api/restful-apis/v1/get-inbound-order-list.ts +126 -0
  174. package/server/routers/api/restful-apis/v1/get-inventory-overall-product-group.ts +99 -0
  175. package/server/routers/api/restful-apis/v1/get-inventory-product-group.ts +112 -0
  176. package/server/routers/api/restful-apis/v1/get-marketplace-order-shipping-list.ts +156 -0
  177. package/server/routers/api/restful-apis/v1/get-marketplace-store-list.ts +81 -0
  178. package/server/routers/api/restful-apis/v1/get-onhand-inventories.ts +125 -0
  179. package/server/routers/api/restful-apis/v1/get-partners.ts +24 -0
  180. package/server/routers/api/restful-apis/v1/get-products.ts +216 -0
  181. package/server/routers/api/restful-apis/v1/get-release-order-detail.ts +134 -0
  182. package/server/routers/api/restful-apis/v1/get-release-order-list.ts +198 -0
  183. package/server/routers/api/restful-apis/v1/get-warehouses.ts +18 -0
  184. package/server/routers/api/restful-apis/v1/index.ts +31 -2
  185. package/server/routers/api/restful-apis/v1/reject-inbound-order.ts +46 -0
  186. package/server/routers/api/restful-apis/v1/set-marketplace-order-delivered.ts +60 -0
  187. package/server/routers/api/restful-apis/v1/set-marketplace-order-failed-delivery.ts +60 -0
  188. package/server/routers/api/restful-apis/v1/update-marketplace-order.ts +111 -0
  189. package/server/routers/api/restful-apis/v1/update-marketplace-shipping-order.ts +104 -0
  190. package/server/routers/api/restful-apis/v1/update-release-order-details.ts +94 -0
  191. package/server/routers/api/restful-apis/v2/add-contact-point.ts +77 -0
  192. package/server/routers/api/restful-apis/v2/add-draft-release-order.ts +196 -0
  193. package/server/routers/api/restful-apis/v2/add-inbound-order.ts +242 -0
  194. package/server/routers/api/restful-apis/v2/add-marketplace-order.ts +172 -0
  195. package/server/routers/api/restful-apis/v2/add-products.ts +112 -0
  196. package/server/routers/api/restful-apis/v2/add-release-order.ts +967 -0
  197. package/server/routers/api/restful-apis/v2/bizplace.ts +45 -0
  198. package/server/routers/api/restful-apis/v2/cancel-marketplace-order.ts +81 -0
  199. package/server/routers/api/restful-apis/v2/cancel-release-order.ts +91 -0
  200. package/server/routers/api/restful-apis/v2/get-contact-point-list.ts +110 -0
  201. package/server/routers/api/restful-apis/v2/get-delivery-order-detail.ts +46 -0
  202. package/server/routers/api/restful-apis/v2/get-delivery-order-list.ts +121 -0
  203. package/server/routers/api/restful-apis/v2/get-delivery-orders.ts +178 -0
  204. package/server/routers/api/restful-apis/v2/get-goods-received-notes.ts +134 -0
  205. package/server/routers/api/restful-apis/v2/get-inbound-order-detail.ts +128 -0
  206. package/server/routers/api/restful-apis/v2/get-inbound-order-list.ts +126 -0
  207. package/server/routers/api/restful-apis/v2/get-inventory-overall-product-group.ts +99 -0
  208. package/server/routers/api/restful-apis/v2/get-inventory-product-group.ts +112 -0
  209. package/server/routers/api/restful-apis/v2/get-marketplace-order-shipping-list.ts +156 -0
  210. package/server/routers/api/restful-apis/v2/get-marketplace-store-list.ts +81 -0
  211. package/server/routers/api/restful-apis/v2/get-onhand-inventories.ts +125 -0
  212. package/server/routers/api/restful-apis/v2/get-partners.ts +24 -0
  213. package/server/routers/api/restful-apis/v2/get-products.ts +216 -0
  214. package/server/routers/api/restful-apis/v2/get-release-order-detail.ts +134 -0
  215. package/server/routers/api/restful-apis/v2/get-release-order-list.ts +198 -0
  216. package/server/routers/api/restful-apis/v2/get-warehouses.ts +18 -0
  217. package/server/routers/api/restful-apis/v2/index.ts +31 -0
  218. package/server/routers/api/restful-apis/v2/reject-inbound-order.ts +46 -0
  219. package/server/routers/api/restful-apis/v2/set-marketplace-order-delivered.ts +60 -0
  220. package/server/routers/api/restful-apis/v2/set-marketplace-order-failed-delivery.ts +60 -0
  221. package/server/routers/api/restful-apis/v2/update-marketplace-order.ts +111 -0
  222. package/server/routers/api/restful-apis/v2/update-marketplace-shipping-order.ts +104 -0
  223. package/server/routers/api/restful-apis/v2/update-release-order-details.ts +94 -0
  224. package/dist-server/routers/api/restful-apis/v1/company/add-contact-points.js +0 -85
  225. package/dist-server/routers/api/restful-apis/v1/company/add-contact-points.js.map +0 -1
  226. package/dist-server/routers/api/restful-apis/v1/company/add-marketplace-order.js +0 -193
  227. package/dist-server/routers/api/restful-apis/v1/company/add-marketplace-order.js.map +0 -1
  228. package/dist-server/routers/api/restful-apis/v1/company/add-product.js +0 -50
  229. package/dist-server/routers/api/restful-apis/v1/company/add-product.js.map +0 -1
  230. package/dist-server/routers/api/restful-apis/v1/company/cancel-marketplace-order.js +0 -90
  231. package/dist-server/routers/api/restful-apis/v1/company/cancel-marketplace-order.js.map +0 -1
  232. package/dist-server/routers/api/restful-apis/v1/company/get-bizplace-list.js +0 -49
  233. package/dist-server/routers/api/restful-apis/v1/company/get-bizplace-list.js.map +0 -1
  234. package/dist-server/routers/api/restful-apis/v1/company/get-contact-point-list.js +0 -62
  235. package/dist-server/routers/api/restful-apis/v1/company/get-contact-point-list.js.map +0 -1
  236. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-order-shipping-list.js +0 -108
  237. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-order-shipping-list.js.map +0 -1
  238. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-store-list.js +0 -51
  239. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-store-list.js.map +0 -1
  240. package/dist-server/routers/api/restful-apis/v1/company/get-partner-list.js +0 -88
  241. package/dist-server/routers/api/restful-apis/v1/company/get-partner-list.js.map +0 -1
  242. package/dist-server/routers/api/restful-apis/v1/company/get-product-list.js +0 -98
  243. package/dist-server/routers/api/restful-apis/v1/company/get-product-list.js.map +0 -1
  244. package/dist-server/routers/api/restful-apis/v1/company/index.js +0 -15
  245. package/dist-server/routers/api/restful-apis/v1/company/index.js.map +0 -1
  246. package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-order-delivered.js +0 -61
  247. package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-order-delivered.js.map +0 -1
  248. package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-shipping-order.js +0 -44
  249. package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-shipping-order.js.map +0 -1
  250. package/dist-server/routers/api/restful-apis/v1/middlewares/business-middleware.js +0 -29
  251. package/dist-server/routers/api/restful-apis/v1/middlewares/business-middleware.js.map +0 -1
  252. package/dist-server/routers/api/restful-apis/v1/middlewares/index.js +0 -40
  253. package/dist-server/routers/api/restful-apis/v1/middlewares/index.js.map +0 -1
  254. package/dist-server/routers/api/restful-apis/v1/middlewares/logging-middleware.js +0 -23
  255. package/dist-server/routers/api/restful-apis/v1/middlewares/logging-middleware.js.map +0 -1
  256. package/dist-server/routers/api/restful-apis/v1/middlewares/store-middleware.js +0 -32
  257. package/dist-server/routers/api/restful-apis/v1/middlewares/store-middleware.js.map +0 -1
  258. package/dist-server/routers/api/restful-apis/v1/middlewares/validation-middleware.js +0 -71
  259. package/dist-server/routers/api/restful-apis/v1/middlewares/validation-middleware.js.map +0 -1
  260. package/dist-server/routers/api/restful-apis/v1/middlewares/warehouse-middleware.js +0 -31
  261. package/dist-server/routers/api/restful-apis/v1/middlewares/warehouse-middleware.js.map +0 -1
  262. package/dist-server/routers/api/restful-apis/v1/utils/error-util.js +0 -71
  263. package/dist-server/routers/api/restful-apis/v1/utils/error-util.js.map +0 -1
  264. package/dist-server/routers/api/restful-apis/v1/utils/params.js +0 -360
  265. package/dist-server/routers/api/restful-apis/v1/utils/params.js.map +0 -1
  266. package/dist-server/routers/api/restful-apis/v1/utils/validate-util.js +0 -57
  267. package/dist-server/routers/api/restful-apis/v1/utils/validate-util.js.map +0 -1
  268. package/dist-server/routers/api/restful-apis/v1/warehouse/add-inbound-order.js +0 -277
  269. package/dist-server/routers/api/restful-apis/v1/warehouse/add-inbound-order.js.map +0 -1
  270. package/dist-server/routers/api/restful-apis/v1/warehouse/add-release-order.js +0 -810
  271. package/dist-server/routers/api/restful-apis/v1/warehouse/add-release-order.js.map +0 -1
  272. package/dist-server/routers/api/restful-apis/v1/warehouse/cancel-inbound-order.js +0 -197
  273. package/dist-server/routers/api/restful-apis/v1/warehouse/cancel-inbound-order.js.map +0 -1
  274. package/dist-server/routers/api/restful-apis/v1/warehouse/cancel-release-order.js +0 -182
  275. package/dist-server/routers/api/restful-apis/v1/warehouse/cancel-release-order.js.map +0 -1
  276. package/dist-server/routers/api/restful-apis/v1/warehouse/get-delivery-order-list.js +0 -138
  277. package/dist-server/routers/api/restful-apis/v1/warehouse/get-delivery-order-list.js.map +0 -1
  278. package/dist-server/routers/api/restful-apis/v1/warehouse/get-goods-received-note-list.js +0 -98
  279. package/dist-server/routers/api/restful-apis/v1/warehouse/get-goods-received-note-list.js.map +0 -1
  280. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.js +0 -78
  281. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.js.map +0 -1
  282. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.js +0 -94
  283. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.js.map +0 -1
  284. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inventory-product-group-list.js +0 -243
  285. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inventory-product-group-list.js.map +0 -1
  286. package/dist-server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.js +0 -94
  287. package/dist-server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.js.map +0 -1
  288. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-details.js +0 -94
  289. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-details.js.map +0 -1
  290. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-list.js +0 -110
  291. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-list.js.map +0 -1
  292. package/dist-server/routers/api/restful-apis/v1/warehouse/index.js +0 -15
  293. package/dist-server/routers/api/restful-apis/v1/warehouse/index.js.map +0 -1
  294. package/dist-server/routers/api/restful-apis/v1/warehouse/update-release-order-details.js +0 -62
  295. package/dist-server/routers/api/restful-apis/v1/warehouse/update-release-order-details.js.map +0 -1
  296. package/openapi/v1/Inventory.yaml +0 -261
  297. package/openapi/v1/authetication.yaml +0 -108
  298. package/openapi/v1/bizplace.yaml +0 -72
  299. package/openapi/v1/marketplace.yaml +0 -834
  300. package/openapi/v1/partner.yaml +0 -80
  301. package/server/routers/api/restful-apis/v1/company/add-contact-points.ts +0 -84
  302. package/server/routers/api/restful-apis/v1/company/add-marketplace-order.ts +0 -223
  303. package/server/routers/api/restful-apis/v1/company/add-product.ts +0 -68
  304. package/server/routers/api/restful-apis/v1/company/cancel-marketplace-order.ts +0 -94
  305. package/server/routers/api/restful-apis/v1/company/get-bizplace-list.ts +0 -55
  306. package/server/routers/api/restful-apis/v1/company/get-contact-point-list.ts +0 -67
  307. package/server/routers/api/restful-apis/v1/company/get-marketplace-order-shipping-list.ts +0 -115
  308. package/server/routers/api/restful-apis/v1/company/get-marketplace-store-list.ts +0 -57
  309. package/server/routers/api/restful-apis/v1/company/get-partner-list.ts +0 -95
  310. package/server/routers/api/restful-apis/v1/company/get-product-list.ts +0 -103
  311. package/server/routers/api/restful-apis/v1/company/index.ts +0 -12
  312. package/server/routers/api/restful-apis/v1/company/update-marketplace-order-delivered.ts +0 -66
  313. package/server/routers/api/restful-apis/v1/company/update-marketplace-shipping-order.ts +0 -55
  314. package/server/routers/api/restful-apis/v1/middlewares/business-middleware.ts +0 -31
  315. package/server/routers/api/restful-apis/v1/middlewares/index.ts +0 -26
  316. package/server/routers/api/restful-apis/v1/middlewares/logging-middleware.ts +0 -24
  317. package/server/routers/api/restful-apis/v1/middlewares/store-middleware.ts +0 -34
  318. package/server/routers/api/restful-apis/v1/middlewares/validation-middleware.ts +0 -70
  319. package/server/routers/api/restful-apis/v1/middlewares/warehouse-middleware.ts +0 -31
  320. package/server/routers/api/restful-apis/v1/utils/error-util.ts +0 -70
  321. package/server/routers/api/restful-apis/v1/utils/params.ts +0 -360
  322. package/server/routers/api/restful-apis/v1/utils/validate-util.ts +0 -49
  323. package/server/routers/api/restful-apis/v1/warehouse/add-inbound-order.ts +0 -361
  324. package/server/routers/api/restful-apis/v1/warehouse/add-release-order.ts +0 -1000
  325. package/server/routers/api/restful-apis/v1/warehouse/cancel-inbound-order.ts +0 -261
  326. package/server/routers/api/restful-apis/v1/warehouse/cancel-release-order.ts +0 -252
  327. package/server/routers/api/restful-apis/v1/warehouse/get-delivery-order-list.ts +0 -141
  328. package/server/routers/api/restful-apis/v1/warehouse/get-goods-received-note-list.ts +0 -106
  329. package/server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.ts +0 -74
  330. package/server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.ts +0 -96
  331. package/server/routers/api/restful-apis/v1/warehouse/get-inventory-product-group-list.ts +0 -293
  332. package/server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.ts +0 -96
  333. package/server/routers/api/restful-apis/v1/warehouse/get-release-order-details.ts +0 -97
  334. package/server/routers/api/restful-apis/v1/warehouse/get-release-order-list.ts +0 -113
  335. package/server/routers/api/restful-apis/v1/warehouse/index.ts +0 -12
  336. package/server/routers/api/restful-apis/v1/warehouse/update-release-order-details.ts +0 -86
@@ -0,0 +1,967 @@
1
+ import gql from 'graphql-tag'
2
+ import { EntityManager, getConnection, SelectQueryBuilder } from 'typeorm'
3
+
4
+ import { restfulApiRouter as router } from '@things-factory/api'
5
+ import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
6
+ import { createPayloadLog, PayloadType } from '@things-factory/integration-base'
7
+ import { Product, ProductBundle, ProductDetail } from '@things-factory/product-base'
8
+ import { ORDER_TYPES, OrderInventory } from '@things-factory/sales-base'
9
+ import { Setting } from '@things-factory/setting-base'
10
+ import { Inventory, INVENTORY_STATUS, LOCATION_TYPE } from '@things-factory/warehouse-base'
11
+ import { WorksheetDetail } from '@things-factory/worksheet-base'
12
+
13
+ import { businessMiddleware } from '../../../../middlewares/business-middleware'
14
+ import { warehouseMiddleware } from '../../../../middlewares/warehouse-middleware'
15
+
16
+ const debug = require('debug')('things-factory:operato-hub:restful-api:unstable:add-release-order')
17
+ const apiVersion = 'v2'
18
+
19
+ router.post(
20
+ `/${apiVersion}/warehouse/:warehouseId/add-release-order`,
21
+ businessMiddleware,
22
+ warehouseMiddleware,
23
+ async (context, next) => {
24
+ return await getConnection().transaction(async (tx: EntityManager) => {
25
+ const { client, domain } = context.state
26
+ const { warehouseId: customerBizplaceId } = context.params
27
+ const { t } = context
28
+ const bodyReq = context.request.body
29
+ try {
30
+ if (!customerBizplaceId) context.throw(404, t('error.warehouse id not found'))
31
+
32
+ if (typeof bodyReq === undefined || !Object.keys(bodyReq)?.length) {
33
+ context.throw(400, t('error.invalid body request format'))
34
+ }
35
+ debug('post:/add-release-order request.body', bodyReq)
36
+ await checkMandatoryKey(context, bodyReq)
37
+
38
+ const isAutoAssign: Boolean = bodyReq.hasOwnProperty('isAutoAssign') ? bodyReq.isAutoAssign : true
39
+ const requiredDraft: Boolean = bodyReq.hasOwnProperty('requiredDraft') ? bodyReq.requiredDraft : true
40
+
41
+ // get customer company's bizplace
42
+ const custCompanyBizplace: Bizplace = await getCompanyBizplace(null, null, customerBizplaceId, tx)
43
+ const customerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
44
+ where: { id: customerBizplaceId }
45
+ })
46
+
47
+ let locationSortingRules = []
48
+ const inventoryAssignmentSetting: Setting = await tx.getRepository(Setting).findOne({
49
+ where: { domain, name: 'rule-for-inventory-assignment' }
50
+ })
51
+
52
+ if (inventoryAssignmentSetting) {
53
+ let locationSetting = JSON.parse(inventoryAssignmentSetting.value)
54
+ for (const key in locationSetting) {
55
+ locationSortingRules.push({ name: key, desc: locationSetting[key] == 'ASC' ? false : true })
56
+ }
57
+ } else {
58
+ const pickingProductSetting: Setting = await tx.getRepository(Setting).findOne({
59
+ where: { domain, name: 'rule-for-picking-product' }
60
+ })
61
+ if (pickingProductSetting) {
62
+ let locationSetting = JSON.parse(pickingProductSetting.value)
63
+ for (const key in locationSetting) {
64
+ locationSortingRules.push({ name: key, desc: locationSetting[key] == 'ASC' ? false : true })
65
+ }
66
+ }
67
+ }
68
+
69
+ const orderInventories: OrderInventory[] = bodyReq.orderInventories
70
+ let newOrderInventories: OrderInventory[] = []
71
+ let bundleInfo: any[] = []
72
+
73
+ await Promise.all(
74
+ orderInventories.map(async orderInventory => {
75
+ const sku: string = orderInventory.product?.sku
76
+ const refCode: string = orderInventory.product?.refCode
77
+ const packingType: string = orderInventory.packingType
78
+
79
+ const qb: SelectQueryBuilder<ProductDetail> = tx
80
+ .getRepository(ProductDetail)
81
+ .createQueryBuilder('PD')
82
+ .innerJoinAndSelect('PD.product', 'PROD')
83
+ .where('PROD.bizplace_id = :bizplaceId', { bizplaceId: custCompanyBizplace.id })
84
+
85
+ if (!sku && !refCode) {
86
+ context.throw(404, t('error.sku or refCode not found'))
87
+ }
88
+
89
+ if (refCode) {
90
+ qb.andWhere('PD.ref_code = :refCode', { refCode })
91
+ }
92
+
93
+ if (sku) {
94
+ qb.andWhere('PROD.sku = :sku', { sku })
95
+ }
96
+
97
+ if (packingType) {
98
+ qb.andWhere('PD.packing_type = :packingType', { packingType })
99
+ }
100
+
101
+ if (!packingType && !refCode) {
102
+ qb.andWhere('PD.is_default = :isDefault', { isDefault: true })
103
+ }
104
+
105
+ const productDetail: ProductDetail = await qb.getOne()
106
+
107
+ if (productDetail) {
108
+ let newOrderInventory: OrderInventory = Object.assign({}, orderInventory)
109
+
110
+ newOrderInventory.product.sku = productDetail.product.sku
111
+ newOrderInventory.product = productDetail.product
112
+ newOrderInventory.packingType = productDetail.packingType
113
+ newOrderInventory.uomValue = productDetail.uomValue
114
+ newOrderInventories.push(newOrderInventory)
115
+ }
116
+
117
+ if (!productDetail) {
118
+ const qb: SelectQueryBuilder<ProductDetail> = tx
119
+ .getRepository(ProductBundle)
120
+ .createQueryBuilder('PB')
121
+ .innerJoinAndSelect('PB.productBundleSettings', 'PBS')
122
+ .innerJoinAndSelect('PBS.productDetail', 'PBD')
123
+ .innerJoinAndSelect('PBD.product', 'PROD')
124
+ .where('PB.bizplace_id = :bizplaceId', { bizplaceId: custCompanyBizplace.id })
125
+
126
+ if (!sku && !refCode) {
127
+ context.throw(404, t('error.sku or refCode not found'))
128
+ }
129
+
130
+ if (refCode) {
131
+ qb.andWhere('PB.ref_code = :refCode', { refCode })
132
+ }
133
+
134
+ if (sku) {
135
+ qb.andWhere('PB.sku = :sku', { sku })
136
+ }
137
+
138
+ if (packingType) {
139
+ qb.andWhere('PB.packing_type = :packingType', { packingType })
140
+ }
141
+
142
+ const foundProductBundle: ProductBundle = await qb.getOne()
143
+
144
+ if (foundProductBundle) {
145
+ bundleInfo.push({
146
+ productBundleId: foundProductBundle.id,
147
+ sku: foundProductBundle.sku,
148
+ releaseQty: orderInventory.releaseQty
149
+ })
150
+ const bundleProductSettings: any[] = foundProductBundle.productBundleSettings
151
+ bundleProductSettings.map(bundleProductSetting => {
152
+ const productDetailBundle: ProductDetail = bundleProductSetting.productDetail
153
+
154
+ let newOrderInventory: OrderInventory = Object.assign({}, orderInventory)
155
+ newOrderInventory.product.sku = productDetailBundle.product.sku
156
+ newOrderInventory.packingType = productDetailBundle.packingType
157
+ newOrderInventory.uomValue = productDetailBundle.uomValue
158
+ newOrderInventory.releaseQty = orderInventory.releaseQty * bundleProductSetting.bundleQty
159
+ newOrderInventory.product = productDetailBundle.product
160
+ newOrderInventories.push(newOrderInventory)
161
+ })
162
+ } else {
163
+ if (sku && refCode) {
164
+ context.throw(404, t(`error.sku ${sku} and refCode ${refCode} not exist in product / bundle master`))
165
+ }
166
+
167
+ if (sku) {
168
+ context.throw(404, t(`error.sku ${sku} not exist in product / bundle master`))
169
+ }
170
+
171
+ if (refCode) {
172
+ context.throw(404, t(`error.refCode ${refCode} not exist in product / bundle master`))
173
+ }
174
+ }
175
+ }
176
+ })
177
+ )
178
+
179
+ let finalOrderInventories: OrderInventory[] = []
180
+
181
+ // Case 1. Every order inventories has specified batch id
182
+ if (newOrderInventories.every((orderInventory: OrderInventory) => orderInventory.batchId)) {
183
+ finalOrderInventories = await Promise.all(
184
+ newOrderInventories.map(async (orderInventory: OrderInventory) => {
185
+ let filters: any = [
186
+ {
187
+ name: 'batchId',
188
+ operator: 'eq',
189
+ value: orderInventory.batchId
190
+ },
191
+ {
192
+ name: 'productName',
193
+ operator: 'eq',
194
+ value: orderInventory.product.sku
195
+ },
196
+ {
197
+ name: 'bizplace',
198
+ operator: 'in',
199
+ value: [customerBizplaceId]
200
+ }
201
+ ]
202
+
203
+ let sortings: any = []
204
+
205
+ switch (orderInventory.product.pickingStrategy) {
206
+ case 'FIFO':
207
+ sortings.push({ name: 'created_at', desc: false })
208
+ break
209
+
210
+ case 'LIFO':
211
+ sortings.push({ name: 'created_at', desc: true })
212
+ break
213
+
214
+ case 'FEFO':
215
+ sortings.push({ name: 'expiration_date', desc: false }, { name: 'created_at', desc: false })
216
+ break
217
+
218
+ case 'FMFO':
219
+ sortings.push({ name: 'manufacture_date', desc: false }, { name: 'created_at', desc: false })
220
+ break
221
+ }
222
+
223
+ // 2. get all inventory data according to SKU and batchId
224
+ const response = await client.query({
225
+ query: gql`
226
+ query inventoriesByPallet(
227
+ $filters: [Filter]
228
+ $sortings: [Sorting]
229
+ $locationSortingRules: [Sorting]
230
+ ) {
231
+ inventoriesByPallet(
232
+ filters: $filters
233
+ sortings: $sortings
234
+ locationSortingRules: $locationSortingRules
235
+ ) {
236
+ items {
237
+ product {
238
+ id
239
+ name
240
+ description
241
+ }
242
+ batchId
243
+ packingType
244
+ remainQty
245
+ remainUomValue
246
+ }
247
+ total
248
+ }
249
+ }
250
+ `,
251
+ variables: { filters, sortings, locationSortingRules },
252
+ context: {
253
+ ...context,
254
+ state: {
255
+ ...context.state,
256
+ bizplace: customerBizplace,
257
+ domain
258
+ }
259
+ }
260
+ } as any)
261
+
262
+ if (!response.errors) {
263
+ const items = response.data.inventoriesByPallet.items || []
264
+ if (requiredDraft) {
265
+ if (!items?.length) {
266
+ context.body = {
267
+ result: await createDraftOrder(
268
+ client,
269
+ customerBizplace,
270
+ bodyReq,
271
+ bundleInfo,
272
+ domain,
273
+ context,
274
+ orderInventories,
275
+ tx
276
+ )
277
+ }
278
+ return
279
+ }
280
+ }
281
+
282
+ items.forEach(async item => {
283
+ if (requiredDraft) {
284
+ if (orderInventory.releaseQty > item.remainQty || orderInventory.releaseQty <= 0) {
285
+ context.body = {
286
+ result: await createDraftOrder(
287
+ client,
288
+ customerBizplace,
289
+ bodyReq,
290
+ bundleInfo,
291
+ domain,
292
+ context,
293
+ orderInventories,
294
+ tx
295
+ )
296
+ }
297
+ return
298
+ }
299
+ }
300
+
301
+ // 3. add more information to orderInventory
302
+ orderInventory.product.id = item.product.id
303
+ orderInventory.packingType = item.packingType
304
+ orderInventory.batchId = item.batchId
305
+ orderInventory.type = ORDER_TYPES.RELEASE_OF_GOODS
306
+ orderInventory.releaseUomValue = orderInventory.releaseQty * orderInventory.uomValue
307
+ orderInventory.uom = item.uom
308
+ })
309
+
310
+ return orderInventory
311
+ } else {
312
+ if (requiredDraft) {
313
+ context.body = {
314
+ result: await createDraftOrder(
315
+ client,
316
+ customerBizplace,
317
+ bodyReq,
318
+ bundleInfo,
319
+ domain,
320
+ context,
321
+ orderInventories,
322
+ tx
323
+ )
324
+ }
325
+ return
326
+ }
327
+ }
328
+ })
329
+ )
330
+ } else {
331
+ // Case 2. Some of order inventories doesn't have specified batch id
332
+ // MMS order doesn't have batch ID field.
333
+ // To cover this case first result of found inventory will be a target of RO
334
+
335
+ // To combine items from different bundles
336
+ newOrderInventories = combineItems(newOrderInventories)
337
+
338
+ for (let i: number = 0; i < newOrderInventories.length; i++) {
339
+ const orderInventory: OrderInventory = newOrderInventories[i]
340
+ const { product, packingType }: { product: Product; packingType: string } = orderInventory
341
+ const pickingStrategy: string = product.pickingStrategy
342
+
343
+ if (isAutoAssign) {
344
+ let qb: SelectQueryBuilder<Inventory> = tx.getRepository(Inventory).createQueryBuilder('iv')
345
+ qb.leftJoinAndSelect('iv.location', 'loc')
346
+ .andWhere('"iv"."domain_id" = :domainId')
347
+ .andWhere('"iv"."bizplace_id" = :bizplaceId')
348
+ .andWhere('"iv"."packing_type" = :packingType')
349
+ .andWhere('"iv"."product_id" = :productId')
350
+ .andWhere('"iv"."status" = :status')
351
+ .andWhere('"loc"."type" NOT IN (:...locationTypes)')
352
+ .setParameters({
353
+ domainId: domain.id,
354
+ bizplaceId: customerBizplace.id,
355
+ packingType: packingType,
356
+ productId: product.id,
357
+ status: INVENTORY_STATUS.STORED,
358
+ locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]
359
+ })
360
+
361
+ switch (pickingStrategy) {
362
+ case 'FIFO':
363
+ qb.orderBy('"iv"."created_at"', 'ASC')
364
+ if (locationSortingRules?.length > 0) {
365
+ locationSortingRules.forEach((rule: { name: string; desc: boolean }, idx: number) => {
366
+ qb.addOrderBy(`loc.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
367
+ })
368
+ }
369
+ break
370
+
371
+ case 'LIFO':
372
+ qb.orderBy('"iv"."created_at"', 'DESC')
373
+ if (locationSortingRules?.length > 0) {
374
+ locationSortingRules.forEach((rule: { name: string; desc: boolean }, idx: number) => {
375
+ qb.addOrderBy(`loc.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
376
+ })
377
+ }
378
+ break
379
+
380
+ case 'FEFO':
381
+ qb.orderBy('"iv"."expiration_date"', 'ASC')
382
+ qb.orderBy('"iv"."created_at"', 'ASC')
383
+ if (locationSortingRules?.length > 0) {
384
+ locationSortingRules.forEach((rule: { name: string; desc: boolean }, idx: number) => {
385
+ qb.addOrderBy(`loc.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
386
+ })
387
+ }
388
+ break
389
+
390
+ case 'FMFO':
391
+ qb.orderBy('"iv"."manufacture_date"', 'ASC')
392
+ qb.orderBy('"iv"."created_at"', 'ASC')
393
+ if (locationSortingRules?.length > 0) {
394
+ locationSortingRules.forEach((rule: { name: string; desc: boolean }, idx: number) => {
395
+ qb.addOrderBy(`loc.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
396
+ })
397
+ }
398
+ break
399
+
400
+ case 'LOCATION':
401
+ if (locationSortingRules?.length > 0) {
402
+ locationSortingRules.forEach((rule: { name: string; desc: boolean }, idx: number) => {
403
+ idx === 0
404
+ ? qb.orderBy(`loc.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
405
+ : qb.addOrderBy(`loc.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
406
+ })
407
+ } else {
408
+ qb.orderBy('"loc"."name"', 'DESC')
409
+ }
410
+ break
411
+ }
412
+
413
+ let inventories: Inventory[] = await qb.getMany()
414
+ if (requiredDraft) {
415
+ if (!inventories?.length) {
416
+ context.body = {
417
+ result: await createDraftOrder(
418
+ client,
419
+ customerBizplace,
420
+ bodyReq,
421
+ bundleInfo,
422
+ domain,
423
+ context,
424
+ orderInventories,
425
+ tx
426
+ )
427
+ }
428
+ return
429
+ }
430
+ }
431
+ inventories = inventories
432
+ .map(inventory => {
433
+ return {
434
+ ...inventory,
435
+ remainQty: inventory.qty - inventory.lockedQty,
436
+ remainUomValue: inventory.uomValue - inventory.lockedUomValue
437
+ }
438
+ })
439
+ .filter(inventory => inventory.remainQty > 0)
440
+
441
+ let targetInventories: WorksheetDetail[]
442
+ try {
443
+ targetInventories = _composeTargetInventories(context, product, orderInventory, inventories)
444
+ } catch (e) {
445
+ if (requiredDraft) {
446
+ context.body = {
447
+ result: await createDraftOrder(
448
+ client,
449
+ customerBizplace,
450
+ bodyReq,
451
+ bundleInfo,
452
+ domain,
453
+ context,
454
+ orderInventories,
455
+ tx
456
+ )
457
+ }
458
+ return
459
+ } else {
460
+ targetInventories = _composeTargetInventories(context, product, orderInventory, inventories)
461
+ }
462
+ }
463
+ if (!targetInventories?.length) {
464
+ context.throw(404, t(`error.no inventories found`))
465
+ }
466
+ targetInventories.map(item => {
467
+ finalOrderInventories.push(item.targetInventory)
468
+ })
469
+ } else {
470
+ let filters: any = [
471
+ {
472
+ name: 'productName',
473
+ operator: 'eq',
474
+ value: orderInventory.product.sku
475
+ },
476
+ {
477
+ name: 'bizplace_id',
478
+ operator: 'eq',
479
+ value: customerBizplaceId
480
+ }
481
+ ]
482
+
483
+ // 2. get all inventory data according to SKU and batchId
484
+ const response = await client.query({
485
+ query: gql`
486
+ query inventoryProductGroup($filters: [Filter]) {
487
+ inventoryProductGroup(filters: $filters) {
488
+ items {
489
+ productId
490
+ productSKU
491
+ productName
492
+ batchId
493
+ packingType
494
+ remainQty
495
+ remainUomValue
496
+ }
497
+ total
498
+ }
499
+ }
500
+ `,
501
+ variables: { filters },
502
+ context: {
503
+ ...context,
504
+ state: {
505
+ ...context.state,
506
+ bizplace: customerBizplace,
507
+ domain
508
+ }
509
+ }
510
+ } as any)
511
+
512
+ if (!response.errors) {
513
+ const items = response.data.inventoryProductGroup.items || []
514
+ if (requiredDraft) {
515
+ if (!items?.length) {
516
+ context.body = {
517
+ result: await createDraftOrder(
518
+ client,
519
+ customerBizplace,
520
+ bodyReq,
521
+ bundleInfo,
522
+ domain,
523
+ context,
524
+ orderInventories,
525
+ tx
526
+ )
527
+ }
528
+ return
529
+ }
530
+ }
531
+
532
+ items.forEach(async item => {
533
+ if (requiredDraft) {
534
+ if (orderInventory.releaseQty > item.remainQty || orderInventory.releaseQty <= 0) {
535
+ context.body = {
536
+ result: await createDraftOrder(
537
+ client,
538
+ customerBizplace,
539
+ bodyReq,
540
+ bundleInfo,
541
+ domain,
542
+ context,
543
+ orderInventories,
544
+ tx
545
+ )
546
+ }
547
+ return
548
+ }
549
+ }
550
+
551
+ // 3. add more information to orderInventory
552
+ orderInventory.product = { id: item.productId }
553
+ orderInventory.packingType = item.packingType
554
+ orderInventory.batchId = item.batchId
555
+ orderInventory.type = ORDER_TYPES.RELEASE_OF_GOODS
556
+ orderInventory.releaseUomValue = orderInventory.releaseQty * orderInventory.uomValue
557
+ orderInventory.uom = item.uom
558
+ })
559
+
560
+ delete orderInventory.uomValue
561
+ finalOrderInventories.push(orderInventory)
562
+ } else {
563
+ if (requiredDraft) {
564
+ context.body = {
565
+ result: await createDraftOrder(
566
+ client,
567
+ customerBizplace,
568
+ bodyReq,
569
+ bundleInfo,
570
+ domain,
571
+ context,
572
+ orderInventories,
573
+ tx
574
+ )
575
+ }
576
+ return
577
+ }
578
+ }
579
+ }
580
+ }
581
+ }
582
+
583
+ context.body = {
584
+ result: (
585
+ await client.mutate({
586
+ mutation: gql`
587
+ mutation addReleaseGood(
588
+ $releaseGood: NewReleaseGood
589
+ $shippingOrder: ShippingOrderPatch
590
+ $file: Upload
591
+ ) {
592
+ addReleaseGood(releaseGood: $releaseGood, shippingOrder: $shippingOrder, file: $file) {
593
+ id
594
+ name
595
+ refNo
596
+ status
597
+ truckNo
598
+ ownTransport
599
+ crossDocking
600
+ marketplaceOrderStatus
601
+ billingAddress
602
+ deliveryAddress1
603
+ deliveryAddress2
604
+ deliveryAddress3
605
+ deliveryAddress4
606
+ deliveryAddress5
607
+ attentionTo
608
+ attentionCompany
609
+ city
610
+ state
611
+ postalCode
612
+ country
613
+ phone1
614
+ phone2
615
+ email
616
+ transporter
617
+ trackingNo
618
+ airwayBill
619
+ invoice
620
+ type
621
+ storeName
622
+ storeId
623
+ routeId
624
+ stopId
625
+ arrivalNotice {
626
+ name
627
+ }
628
+ exportOption
629
+ releaseDate
630
+ collectionOrderNo
631
+ bizplace {
632
+ name
633
+ }
634
+ orderInventories {
635
+ product {
636
+ sku
637
+ name
638
+ description
639
+ }
640
+ batchId
641
+ packingType
642
+ packingSize
643
+ releaseQty
644
+ releaseUomValue
645
+ }
646
+ orderVass {
647
+ vas {
648
+ name
649
+ operationGuide
650
+ operationGuideType
651
+ }
652
+ set
653
+ targetType
654
+ targetBatchId
655
+ targetProduct {
656
+ name
657
+ description
658
+ }
659
+ packingType
660
+ qty
661
+ uomValue
662
+ otherTarget
663
+ description
664
+ remark
665
+ status
666
+ operationGuide
667
+ }
668
+ }
669
+ }
670
+ `,
671
+ variables: {
672
+ releaseGood: {
673
+ customerBizplaceId: customerBizplace.id,
674
+ courierOption: bodyReq.courierOption,
675
+ collectionOrderNo: bodyReq.collectionOrderNo,
676
+ exportOption: bodyReq.exportOption,
677
+ orderInventories: finalOrderInventories,
678
+ ownTransport: bodyReq.ownTransport,
679
+ packingOption: bodyReq.packingOption,
680
+ refNo: bodyReq.refNo,
681
+ refNo2: bodyReq?.refNo2,
682
+ releaseDate: bodyReq.releaseDate,
683
+ type: bodyReq.type,
684
+ marketplaceOrderStatus: bodyReq?.marketplaceOrderStatus,
685
+ remark: bodyReq?.remark || null,
686
+ billingAddress: bodyReq?.billTo?.billingAddress || null,
687
+ deliveryAddress1: bodyReq?.deliverTo?.deliveryAddress1 || null,
688
+ deliveryAddress2: bodyReq?.deliverTo?.deliveryAddress2 || null,
689
+ deliveryAddress3: bodyReq?.deliverTo?.deliveryAddress3 || null,
690
+ deliveryAddress4: bodyReq?.deliverTo?.deliveryAddress4 || null,
691
+ deliveryAddress5: bodyReq?.deliverTo?.deliveryAddress5 || null,
692
+ attentionTo: bodyReq?.deliverTo?.attentionTo || null,
693
+ attentionCompany: bodyReq?.deliverTo?.attentionCompany || null,
694
+ city: bodyReq?.deliverTo?.city || null,
695
+ state: bodyReq?.deliverTo?.state || null,
696
+ postalCode: bodyReq?.deliverTo?.postalCode || null,
697
+ country: bodyReq?.deliverTo?.country || null,
698
+ phone1: bodyReq?.deliverTo?.phone1 || null,
699
+ phone2: bodyReq?.deliverTo?.phone2 || null,
700
+ email: bodyReq?.deliverTo?.email || null,
701
+ transporter: bodyReq?.transporter,
702
+ trackingNo: bodyReq?.trackingNo,
703
+ airwayBill: bodyReq?.airwayBill,
704
+ invoice: bodyReq?.invoice,
705
+ bundleInfo: JSON.stringify(bundleInfo),
706
+ storeName: bodyReq?.storeName,
707
+ storeId: bodyReq?.storeId,
708
+ routeId: bodyReq?.routeId,
709
+ stopId: bodyReq?.stopId
710
+ }
711
+ },
712
+ context: {
713
+ ...context,
714
+ hasUpload: true,
715
+ state: {
716
+ ...context.state,
717
+ customerBizplace,
718
+ domain,
719
+ type: 'api'
720
+ }
721
+ }
722
+ } as any)
723
+ ).data
724
+ }
725
+
726
+ createPayloadLog(
727
+ customerBizplaceId,
728
+ `/${apiVersion}/warehouse/:warehouseId/add-release-order`,
729
+ bodyReq,
730
+ context.body,
731
+ context,
732
+ PayloadType.INGESTION,
733
+ 'hub-api'
734
+ )
735
+ } catch (error) {
736
+ createPayloadLog(
737
+ customerBizplaceId,
738
+ `/${apiVersion}/warehouse/:warehouseId/add-release-order`,
739
+ bodyReq,
740
+ error,
741
+ context,
742
+ PayloadType.INGESTION,
743
+ 'hub-api'
744
+ )
745
+ throw error
746
+ }
747
+ })
748
+ }
749
+ )
750
+
751
+ export async function checkMandatoryKey(context, params) {
752
+ let noparams = ['releaseDate', 'exportOption'].filter(param => !(param in params))
753
+
754
+ if ('ownTransport' in params) {
755
+ if (params.ownTransport == true) {
756
+ if (!params.hasOwnProperty('collectionOrderNo')) {
757
+ noparams.push('collectionOrderNo')
758
+ }
759
+ }
760
+ } else {
761
+ noparams.push('ownTransport')
762
+ }
763
+
764
+ if ('exportOption' in params) {
765
+ if (params.exportOption === true) {
766
+ if (
767
+ params.exportOption.filter(
768
+ record =>
769
+ !record.containerNo || !record.containerArrivalDate || !record.containerLeavingDate || !record.shipName
770
+ ).length
771
+ ) {
772
+ noparams.push('exportOption')
773
+ }
774
+ }
775
+ }
776
+
777
+ if ('orderInventories' in params) {
778
+ params.orderInventories.forEach((param, key) => {
779
+ let noSubParams = []
780
+
781
+ if (!param?.releaseQty) noSubParams.push('releaseQty')
782
+
783
+ if (!param?.product) noSubParams.push('product')
784
+
785
+ if (noSubParams?.length)
786
+ context.throw(400, context.t('error.required param x not found', { x: `${noSubParams.join(', ')}` }))
787
+ })
788
+ } else {
789
+ noparams.push('orderInventories')
790
+ }
791
+
792
+ if (noparams?.length) {
793
+ context.throw(400, context.t('error.required param x not found', { x: `${noparams.join(', ')}` }))
794
+ }
795
+
796
+ return params
797
+ }
798
+
799
+ export function _composeTargetInventories(context, product, record, inventories) {
800
+ const { t } = context
801
+ let leftReleaseQty = record.releaseQty
802
+ let leftReleaseUomValue = record.releaseUomValue
803
+ let compReleaseQty = 0
804
+ let compReleaseUomValue = 0
805
+ let totalInventoryQty: number = 0
806
+
807
+ inventories.map(inventory => {
808
+ totalInventoryQty += inventory.remainQty
809
+ })
810
+
811
+ if (totalInventoryQty < record.releaseQty) {
812
+ context.throw(404, t(`error.invalid release qty for ${product?.sku}`)) //
813
+ }
814
+
815
+ let targetInventories = []
816
+ let idx = 0
817
+ while (compReleaseQty < record.releaseQty) {
818
+ const inv = inventories[idx]
819
+
820
+ if (inv.remainQty > leftReleaseQty) {
821
+ compReleaseQty += leftReleaseQty
822
+ compReleaseUomValue += leftReleaseUomValue
823
+
824
+ targetInventories.push({
825
+ targetInventory: {
826
+ inventory: { id: inv.id },
827
+ packingType: inv.packingType,
828
+ batchId: inv.batchId,
829
+ releaseQty: leftReleaseQty,
830
+ releaseUomValue: leftReleaseQty * record.uomValue,
831
+ uom: inv.uom,
832
+ product: { id: product.id },
833
+ type: ORDER_TYPES.RELEASE_OF_GOODS
834
+ }
835
+ })
836
+ } else {
837
+ compReleaseQty += inv.remainQty
838
+ compReleaseUomValue += inv.remainUomValue
839
+ leftReleaseQty -= inv.remainQty
840
+ leftReleaseUomValue -= inv.remainUomValue
841
+
842
+ targetInventories.push({
843
+ targetInventory: {
844
+ inventory: { id: inv.id },
845
+ packingType: inv.packingType,
846
+ batchId: inv.batchId,
847
+ releaseQty: inv.remainQty,
848
+ releaseUomValue: inv.remainUomValue,
849
+ uom: inv.uom,
850
+ product: { id: product.id },
851
+ type: ORDER_TYPES.RELEASE_OF_GOODS
852
+ }
853
+ })
854
+ }
855
+
856
+ idx++
857
+ }
858
+
859
+ return targetInventories
860
+ }
861
+
862
+ function combineItems(inventoryList) {
863
+ let mappedList = []
864
+
865
+ inventoryList.map(e => {
866
+ let item = mappedList.find(i => i.product.id === e.product.id)
867
+ if (item) {
868
+ mappedList = mappedList.filter(m => m != item)
869
+ item.releaseQty += e.releaseQty
870
+ mappedList.push(item)
871
+ } else {
872
+ mappedList.push(e)
873
+ }
874
+ })
875
+
876
+ return mappedList
877
+ }
878
+
879
+ async function createDraftOrder(client, customerBizplace, bodyReq, bundleInfo, domain, context, orderInventories, tx) {
880
+ return (
881
+ await client.mutate({
882
+ mutation: gql`
883
+ mutation upsertDraftReleaseGood(
884
+ $draftReleaseGood: DraftReleaseGoodPatch!
885
+ $orderProducts: [OrderProductPatch!]!
886
+ ) {
887
+ upsertDraftReleaseGood(draftReleaseGood: $draftReleaseGood, orderProducts: $orderProducts) {
888
+ id
889
+ name
890
+ refNo
891
+ refNo2
892
+ status
893
+ truckNo
894
+ ownTransport
895
+ marketplaceOrderStatus
896
+ billingAddress
897
+ deliveryAddress1
898
+ deliveryAddress2
899
+ deliveryAddress3
900
+ deliveryAddress4
901
+ deliveryAddress5
902
+ attentionTo
903
+ attentionCompany
904
+ city
905
+ state
906
+ postalCode
907
+ country
908
+ phone1
909
+ phone2
910
+ email
911
+ type
912
+ exportOption
913
+ releaseDate
914
+ collectionOrderNo
915
+ bizplace {
916
+ name
917
+ }
918
+ }
919
+ }
920
+ `,
921
+ variables: {
922
+ draftReleaseGood: {
923
+ bizplace: {
924
+ id: customerBizplace.id
925
+ },
926
+ courierOption: bodyReq.courierOption,
927
+ collectionOrderNo: bodyReq.collectionOrderNo,
928
+ exportOption: bodyReq.exportOption,
929
+ ownTransport: bodyReq.ownTransport,
930
+ packingOption: bodyReq.packingOption,
931
+ refNo: bodyReq.refNo,
932
+ refNo2: bodyReq?.refNo2,
933
+ releaseDate: bodyReq.releaseDate,
934
+ type: bodyReq.type,
935
+ marketplaceOrderStatus: bodyReq?.marketplaceOrderStatus,
936
+ remark: bodyReq?.remark || null,
937
+ billingAddress: bodyReq?.billTo?.billingAddress || null,
938
+ deliveryAddress1: bodyReq?.deliverTo?.deliveryAddress1 || null,
939
+ deliveryAddress2: bodyReq?.deliverTo?.deliveryAddress2 || null,
940
+ deliveryAddress3: bodyReq?.deliverTo?.deliveryAddress3 || null,
941
+ deliveryAddress4: bodyReq?.deliverTo?.deliveryAddress4 || null,
942
+ deliveryAddress5: bodyReq?.deliverTo?.deliveryAddress5 || null,
943
+ attentionTo: bodyReq?.deliverTo?.attentionTo || null,
944
+ attentionCompany: bodyReq?.deliverTo?.attentionCompany || null,
945
+ city: bodyReq?.deliverTo?.city || null,
946
+ state: bodyReq?.deliverTo?.state || null,
947
+ postalCode: bodyReq?.deliverTo?.postalCode || null,
948
+ country: bodyReq?.deliverTo?.country || null,
949
+ phone1: bodyReq?.deliverTo?.phone1 || null,
950
+ phone2: bodyReq?.deliverTo?.phone2 || null,
951
+ email: bodyReq?.deliverTo?.email || null
952
+ },
953
+ orderProducts: orderInventories
954
+ },
955
+ context: {
956
+ ...context,
957
+ hasUpload: true,
958
+ state: {
959
+ ...context.state,
960
+ customerBizplace,
961
+ domain,
962
+ type: 'api'
963
+ }
964
+ }
965
+ } as any)
966
+ ).data
967
+ }