@things-factory/operato-hub 6.2.102 → 6.2.103

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