@things-factory/sales-base 5.0.13 → 6.0.0-alpha.1

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 (330) hide show
  1. package/dist-server/constants/order.js +4 -1
  2. package/dist-server/constants/order.js.map +1 -1
  3. package/dist-server/constants/release-good.js +5 -1
  4. package/dist-server/constants/release-good.js.map +1 -1
  5. package/dist-server/controllers/ecommerce/ecommerce-controller.js +1 -1
  6. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
  7. package/dist-server/controllers/ecommerce/sellercraft-controller.js +102 -94
  8. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  9. package/dist-server/controllers/order-controller.js +7 -5
  10. package/dist-server/controllers/order-controller.js.map +1 -1
  11. package/dist-server/service/arrival-notice/arrival-notice-mutation.js +152 -65
  12. package/dist-server/service/arrival-notice/arrival-notice-mutation.js.map +1 -1
  13. package/dist-server/service/arrival-notice/arrival-notice-query.js +15 -16
  14. package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -1
  15. package/dist-server/service/arrival-notice/arrival-notice-types.js +1 -2
  16. package/dist-server/service/arrival-notice/arrival-notice-types.js.map +1 -1
  17. package/dist-server/service/arrival-notice/arrival-notice.js +7 -7
  18. package/dist-server/service/arrival-notice/arrival-notice.js.map +1 -1
  19. package/dist-server/service/claim/claim-mutation.js +15 -14
  20. package/dist-server/service/claim/claim-mutation.js.map +1 -1
  21. package/dist-server/service/claim/claim-query.js +8 -10
  22. package/dist-server/service/claim/claim-query.js.map +1 -1
  23. package/dist-server/service/claim/claim.js +7 -7
  24. package/dist-server/service/claim/claim.js.map +1 -1
  25. package/dist-server/service/claim-detail/claim-detail-mutation.js +9 -8
  26. package/dist-server/service/claim-detail/claim-detail-mutation.js.map +1 -1
  27. package/dist-server/service/claim-detail/claim-detail-query.js +9 -10
  28. package/dist-server/service/claim-detail/claim-detail-query.js.map +1 -1
  29. package/dist-server/service/claim-detail/claim-detail.js +3 -4
  30. package/dist-server/service/claim-detail/claim-detail.js.map +1 -1
  31. package/dist-server/service/claim-order/claim-order-mutation.js +9 -8
  32. package/dist-server/service/claim-order/claim-order-mutation.js.map +1 -1
  33. package/dist-server/service/claim-order/claim-order-query.js +9 -10
  34. package/dist-server/service/claim-order/claim-order-query.js.map +1 -1
  35. package/dist-server/service/claim-order/claim-order.js +3 -4
  36. package/dist-server/service/claim-order/claim-order.js.map +1 -1
  37. package/dist-server/service/collection-order/collection-order-mutation.js +15 -14
  38. package/dist-server/service/collection-order/collection-order-mutation.js.map +1 -1
  39. package/dist-server/service/collection-order/collection-order-query.js +14 -14
  40. package/dist-server/service/collection-order/collection-order-query.js.map +1 -1
  41. package/dist-server/service/collection-order/collection-order-types.js +4 -5
  42. package/dist-server/service/collection-order/collection-order-types.js.map +1 -1
  43. package/dist-server/service/collection-order/collection-order.js +7 -7
  44. package/dist-server/service/collection-order/collection-order.js.map +1 -1
  45. package/dist-server/service/delivery-order/delivery-order-mutation.js +138 -51
  46. package/dist-server/service/delivery-order/delivery-order-mutation.js.map +1 -1
  47. package/dist-server/service/delivery-order/delivery-order-query.js +51 -38
  48. package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -1
  49. package/dist-server/service/delivery-order/delivery-order-types.js +22 -3
  50. package/dist-server/service/delivery-order/delivery-order-types.js.map +1 -1
  51. package/dist-server/service/delivery-order/delivery-order.js +92 -7
  52. package/dist-server/service/delivery-order/delivery-order.js.map +1 -1
  53. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +157 -143
  54. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -1
  55. package/dist-server/service/draft-release-good/draft-release-good-query.js +54 -24
  56. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
  57. package/dist-server/service/draft-release-good/draft-release-good-type.js +3 -4
  58. package/dist-server/service/draft-release-good/draft-release-good-type.js.map +1 -1
  59. package/dist-server/service/draft-release-good/draft-release-good.js +11 -6
  60. package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -1
  61. package/dist-server/service/goods-receival-note/goods-receival-note-mutation.js +12 -11
  62. package/dist-server/service/goods-receival-note/goods-receival-note-mutation.js.map +1 -1
  63. package/dist-server/service/goods-receival-note/goods-receival-note-query.js +104 -12
  64. package/dist-server/service/goods-receival-note/goods-receival-note-query.js.map +1 -1
  65. package/dist-server/service/goods-receival-note/goods-receival-note-types.js +67 -4
  66. package/dist-server/service/goods-receival-note/goods-receival-note-types.js.map +1 -1
  67. package/dist-server/service/goods-receival-note/goods-receival-note.js +46 -5
  68. package/dist-server/service/goods-receival-note/goods-receival-note.js.map +1 -1
  69. package/dist-server/service/inventory-check/inventory-check-mutation.js +6 -6
  70. package/dist-server/service/inventory-check/inventory-check-mutation.js.map +1 -1
  71. package/dist-server/service/inventory-check/inventory-check-query.js +8 -10
  72. package/dist-server/service/inventory-check/inventory-check-query.js.map +1 -1
  73. package/dist-server/service/inventory-check/inventory-check.js +5 -5
  74. package/dist-server/service/inventory-check/inventory-check.js.map +1 -1
  75. package/dist-server/service/invoice/invoice-mutation.js +5 -5
  76. package/dist-server/service/invoice/invoice-mutation.js.map +1 -1
  77. package/dist-server/service/invoice/invoice-query.js +7 -9
  78. package/dist-server/service/invoice/invoice-query.js.map +1 -1
  79. package/dist-server/service/invoice/invoice-types.js +2 -3
  80. package/dist-server/service/invoice/invoice-types.js.map +1 -1
  81. package/dist-server/service/invoice/invoice.js +3 -4
  82. package/dist-server/service/invoice/invoice.js.map +1 -1
  83. package/dist-server/service/invoice-product/invoice-product-mutation.js +1 -1
  84. package/dist-server/service/invoice-product/invoice-product-mutation.js.map +1 -1
  85. package/dist-server/service/invoice-product/invoice-product-query.js +7 -9
  86. package/dist-server/service/invoice-product/invoice-product-query.js.map +1 -1
  87. package/dist-server/service/invoice-product/invoice-product.js +5 -5
  88. package/dist-server/service/invoice-product/invoice-product.js.map +1 -1
  89. package/dist-server/service/job-sheet/job-sheet-mutation.js +5 -5
  90. package/dist-server/service/job-sheet/job-sheet-mutation.js.map +1 -1
  91. package/dist-server/service/job-sheet/job-sheet-query.js +6 -8
  92. package/dist-server/service/job-sheet/job-sheet-query.js.map +1 -1
  93. package/dist-server/service/job-sheet/job-sheet.js +5 -5
  94. package/dist-server/service/job-sheet/job-sheet.js.map +1 -1
  95. package/dist-server/service/manifest/manifest-mutation.js +84 -4
  96. package/dist-server/service/manifest/manifest-mutation.js.map +1 -1
  97. package/dist-server/service/manifest/manifest-query.js +52 -19
  98. package/dist-server/service/manifest/manifest-query.js.map +1 -1
  99. package/dist-server/service/manifest/manifest-type.js +8 -0
  100. package/dist-server/service/manifest/manifest-type.js.map +1 -1
  101. package/dist-server/service/manifest/manifest.js +8 -4
  102. package/dist-server/service/manifest/manifest.js.map +1 -1
  103. package/dist-server/service/order-inventory/order-inventory-mutation.js +3 -3
  104. package/dist-server/service/order-inventory/order-inventory-mutation.js.map +1 -1
  105. package/dist-server/service/order-inventory/order-inventory-query.js +202 -221
  106. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  107. package/dist-server/service/order-inventory/order-inventory-types.js +15 -15
  108. package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
  109. package/dist-server/service/order-inventory/order-inventory.js +45 -15
  110. package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
  111. package/dist-server/service/order-product/order-product-mutation.js +2 -2
  112. package/dist-server/service/order-product/order-product-mutation.js.map +1 -1
  113. package/dist-server/service/order-product/order-product-query.js +44 -14
  114. package/dist-server/service/order-product/order-product-query.js.map +1 -1
  115. package/dist-server/service/order-product/order-product-types.js +18 -19
  116. package/dist-server/service/order-product/order-product-types.js.map +1 -1
  117. package/dist-server/service/order-product/order-product.js +14 -11
  118. package/dist-server/service/order-product/order-product.js.map +1 -1
  119. package/dist-server/service/order-tote/order-tote-mutation.js +2 -2
  120. package/dist-server/service/order-tote/order-tote-mutation.js.map +1 -1
  121. package/dist-server/service/order-tote/order-tote-query.js +13 -14
  122. package/dist-server/service/order-tote/order-tote-query.js.map +1 -1
  123. package/dist-server/service/order-tote/order-tote-types.js +4 -5
  124. package/dist-server/service/order-tote/order-tote-types.js.map +1 -1
  125. package/dist-server/service/order-tote/order-tote.js +6 -5
  126. package/dist-server/service/order-tote/order-tote.js.map +1 -1
  127. package/dist-server/service/order-tote-item/order-tote-item-mutation.js +2 -2
  128. package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +1 -1
  129. package/dist-server/service/order-tote-item/order-tote-item-query.js +7 -9
  130. package/dist-server/service/order-tote-item/order-tote-item-query.js.map +1 -1
  131. package/dist-server/service/order-tote-item/order-tote-item-types.js +5 -6
  132. package/dist-server/service/order-tote-item/order-tote-item-types.js.map +1 -1
  133. package/dist-server/service/order-tote-item/order-tote-item.js +2 -3
  134. package/dist-server/service/order-tote-item/order-tote-item.js.map +1 -1
  135. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js +2 -2
  136. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +1 -1
  137. package/dist-server/service/order-tote-seal/order-tote-seal-query.js +8 -10
  138. package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +1 -1
  139. package/dist-server/service/order-tote-seal/order-tote-seal-types.js +2 -3
  140. package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +1 -1
  141. package/dist-server/service/order-tote-seal/order-tote-seal.js +2 -3
  142. package/dist-server/service/order-tote-seal/order-tote-seal.js.map +1 -1
  143. package/dist-server/service/order-vas/order-vas-mutation.js +1 -1
  144. package/dist-server/service/order-vas/order-vas-mutation.js.map +1 -1
  145. package/dist-server/service/order-vas/order-vas-query.js +8 -10
  146. package/dist-server/service/order-vas/order-vas-query.js.map +1 -1
  147. package/dist-server/service/order-vas/order-vas-types.js +16 -17
  148. package/dist-server/service/order-vas/order-vas-types.js.map +1 -1
  149. package/dist-server/service/order-vas/order-vas.js +7 -7
  150. package/dist-server/service/order-vas/order-vas.js.map +1 -1
  151. package/dist-server/service/others/other-query.js +48 -30
  152. package/dist-server/service/others/other-query.js.map +1 -1
  153. package/dist-server/service/purchase-order/purchase-order-mutation.js +36 -34
  154. package/dist-server/service/purchase-order/purchase-order-mutation.js.map +1 -1
  155. package/dist-server/service/purchase-order/purchase-order-query.js +11 -12
  156. package/dist-server/service/purchase-order/purchase-order-query.js.map +1 -1
  157. package/dist-server/service/purchase-order/purchase-order-types.js +8 -9
  158. package/dist-server/service/purchase-order/purchase-order-types.js.map +1 -1
  159. package/dist-server/service/purchase-order/purchase-order.js +8 -8
  160. package/dist-server/service/purchase-order/purchase-order.js.map +1 -1
  161. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.js +1 -1
  162. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.js.map +1 -1
  163. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-query.js +9 -10
  164. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-query.js.map +1 -1
  165. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge.js +3 -4
  166. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge.js.map +1 -1
  167. package/dist-server/service/release-good/release-good-mutation.js +182 -94
  168. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  169. package/dist-server/service/release-good/release-good-query.js +251 -172
  170. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  171. package/dist-server/service/release-good/release-good-types.js +181 -9
  172. package/dist-server/service/release-good/release-good-types.js.map +1 -1
  173. package/dist-server/service/release-good/release-good.js +64 -13
  174. package/dist-server/service/release-good/release-good.js.map +1 -1
  175. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js +19 -14
  176. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js.map +1 -1
  177. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-query.js +8 -10
  178. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-query.js.map +1 -1
  179. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-types.js +6 -7
  180. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-types.js.map +1 -1
  181. package/dist-server/service/retail-replenishment-order/retail-replenishment-order.js +5 -5
  182. package/dist-server/service/retail-replenishment-order/retail-replenishment-order.js.map +1 -1
  183. package/dist-server/service/return-order/return-order-mutation.js +38 -27
  184. package/dist-server/service/return-order/return-order-mutation.js.map +1 -1
  185. package/dist-server/service/return-order/return-order-query.js +14 -16
  186. package/dist-server/service/return-order/return-order-query.js.map +1 -1
  187. package/dist-server/service/return-order/return-order-types.js +9 -9
  188. package/dist-server/service/return-order/return-order-types.js.map +1 -1
  189. package/dist-server/service/return-order/return-order.js +6 -6
  190. package/dist-server/service/return-order/return-order.js.map +1 -1
  191. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js +17 -13
  192. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js.map +1 -1
  193. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js +13 -14
  194. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js.map +1 -1
  195. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-type.js +9 -9
  196. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-type.js.map +1 -1
  197. package/dist-server/service/reverse-kitting-order/reverse-kitting-order.js +8 -8
  198. package/dist-server/service/reverse-kitting-order/reverse-kitting-order.js.map +1 -1
  199. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js +4 -4
  200. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js.map +1 -1
  201. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js +7 -9
  202. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js.map +1 -1
  203. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.js +4 -5
  204. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.js.map +1 -1
  205. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.js +7 -7
  206. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.js.map +1 -1
  207. package/dist-server/service/shipping-order/shipping-order-mutation.js +2 -2
  208. package/dist-server/service/shipping-order/shipping-order-mutation.js.map +1 -1
  209. package/dist-server/service/shipping-order/shipping-order-query.js +9 -10
  210. package/dist-server/service/shipping-order/shipping-order-query.js.map +1 -1
  211. package/dist-server/service/shipping-order/shipping-order-types.js +21 -1
  212. package/dist-server/service/shipping-order/shipping-order-types.js.map +1 -1
  213. package/dist-server/service/shipping-order/shipping-order.js +27 -7
  214. package/dist-server/service/shipping-order/shipping-order.js.map +1 -1
  215. package/dist-server/service/transfer-order/transfer-order-mutation.js +19 -14
  216. package/dist-server/service/transfer-order/transfer-order-mutation.js.map +1 -1
  217. package/dist-server/service/transfer-order/transfer-order-query.js +8 -10
  218. package/dist-server/service/transfer-order/transfer-order-query.js.map +1 -1
  219. package/dist-server/service/transfer-order/transfer-order-types.js +1 -2
  220. package/dist-server/service/transfer-order/transfer-order-types.js.map +1 -1
  221. package/dist-server/service/transfer-order/transfer-order.js +5 -5
  222. package/dist-server/service/transfer-order/transfer-order.js.map +1 -1
  223. package/dist-server/service/vas/vas-mutation.js +2 -2
  224. package/dist-server/service/vas/vas-mutation.js.map +1 -1
  225. package/dist-server/service/vas/vas-query.js +8 -10
  226. package/dist-server/service/vas/vas-query.js.map +1 -1
  227. package/dist-server/service/vas/vas.js +3 -4
  228. package/dist-server/service/vas/vas.js.map +1 -1
  229. package/dist-server/service/vas-order/vas-order-mutation.js +20 -15
  230. package/dist-server/service/vas-order/vas-order-mutation.js.map +1 -1
  231. package/dist-server/service/vas-order/vas-order-query.js +11 -12
  232. package/dist-server/service/vas-order/vas-order-query.js.map +1 -1
  233. package/dist-server/service/vas-order/vas-order.js +5 -5
  234. package/dist-server/service/vas-order/vas-order.js.map +1 -1
  235. package/dist-server/tsconfig.tsbuildinfo +1 -1
  236. package/dist-server/utils/datetime-util.js +49 -0
  237. package/dist-server/utils/datetime-util.js.map +1 -0
  238. package/dist-server/utils/index.js +1 -0
  239. package/dist-server/utils/index.js.map +1 -1
  240. package/dist-server/utils/inventory-util.js +89 -29
  241. package/dist-server/utils/inventory-util.js.map +1 -1
  242. package/package.json +13 -13
  243. package/server/constants/order.ts +4 -1
  244. package/server/constants/release-good.ts +6 -3
  245. package/server/controllers/ecommerce/ecommerce-controller.ts +1 -1
  246. package/server/controllers/ecommerce/sellercraft-controller.ts +124 -107
  247. package/server/controllers/order-controller.ts +7 -5
  248. package/server/service/arrival-notice/arrival-notice-mutation.ts +204 -91
  249. package/server/service/arrival-notice/arrival-notice-query.ts +17 -17
  250. package/server/service/claim/claim-mutation.ts +20 -14
  251. package/server/service/claim/claim-query.ts +10 -9
  252. package/server/service/claim-detail/claim-detail-mutation.ts +16 -10
  253. package/server/service/claim-detail/claim-detail-query.ts +13 -8
  254. package/server/service/claim-order/claim-order-mutation.ts +16 -10
  255. package/server/service/claim-order/claim-order-query.ts +10 -8
  256. package/server/service/collection-order/collection-order-mutation.ts +31 -32
  257. package/server/service/collection-order/collection-order-query.ts +18 -15
  258. package/server/service/delivery-order/delivery-order-mutation.ts +206 -73
  259. package/server/service/delivery-order/delivery-order-query.ts +90 -53
  260. package/server/service/delivery-order/delivery-order-types.ts +15 -0
  261. package/server/service/delivery-order/delivery-order.ts +68 -0
  262. package/server/service/draft-release-good/draft-release-good-mutation.ts +208 -183
  263. package/server/service/draft-release-good/draft-release-good-query.ts +81 -44
  264. package/server/service/draft-release-good/draft-release-good.ts +7 -3
  265. package/server/service/goods-receival-note/goods-receival-note-mutation.ts +23 -18
  266. package/server/service/goods-receival-note/goods-receival-note-query.ts +126 -15
  267. package/server/service/goods-receival-note/goods-receival-note-types.ts +48 -0
  268. package/server/service/goods-receival-note/goods-receival-note.ts +32 -0
  269. package/server/service/inventory-check/inventory-check-mutation.ts +24 -19
  270. package/server/service/inventory-check/inventory-check-query.ts +10 -9
  271. package/server/service/invoice/invoice-mutation.ts +14 -11
  272. package/server/service/invoice/invoice-query.ts +8 -9
  273. package/server/service/invoice-product/invoice-product-mutation.ts +4 -4
  274. package/server/service/invoice-product/invoice-product-query.ts +8 -9
  275. package/server/service/job-sheet/job-sheet-mutation.ts +12 -10
  276. package/server/service/job-sheet/job-sheet-query.ts +16 -11
  277. package/server/service/manifest/manifest-mutation.ts +93 -8
  278. package/server/service/manifest/manifest-query.ts +73 -23
  279. package/server/service/manifest/manifest-type.ts +6 -0
  280. package/server/service/manifest/manifest.ts +6 -2
  281. package/server/service/order-inventory/order-inventory-mutation.ts +13 -12
  282. package/server/service/order-inventory/order-inventory-query.ts +226 -253
  283. package/server/service/order-inventory/order-inventory.ts +26 -2
  284. package/server/service/order-product/order-product-mutation.ts +11 -10
  285. package/server/service/order-product/order-product-query.ts +55 -18
  286. package/server/service/order-product/order-product.ts +7 -0
  287. package/server/service/order-tote/order-tote-mutation.ts +10 -9
  288. package/server/service/order-tote/order-tote-query.ts +13 -15
  289. package/server/service/order-tote/order-tote.ts +13 -2
  290. package/server/service/order-tote-item/order-tote-item-mutation.ts +10 -9
  291. package/server/service/order-tote-item/order-tote-item-query.ts +12 -18
  292. package/server/service/order-tote-seal/order-tote-seal-mutation.ts +10 -9
  293. package/server/service/order-tote-seal/order-tote-seal-query.ts +10 -11
  294. package/server/service/order-vas/order-vas-mutation.ts +4 -5
  295. package/server/service/order-vas/order-vas-query.ts +10 -9
  296. package/server/service/others/other-query.ts +76 -54
  297. package/server/service/purchase-order/purchase-order-mutation.ts +46 -46
  298. package/server/service/purchase-order/purchase-order-query.ts +13 -11
  299. package/server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.ts +7 -7
  300. package/server/service/purchase-order-other-charge/purchase-order-other-charge-query.ts +14 -9
  301. package/server/service/release-good/release-good-mutation.ts +297 -134
  302. package/server/service/release-good/release-good-query.ts +268 -186
  303. package/server/service/release-good/release-good-types.ts +132 -4
  304. package/server/service/release-good/release-good.ts +55 -24
  305. package/server/service/retail-replenishment-order/retail-replenishment-order-mutation.ts +35 -29
  306. package/server/service/retail-replenishment-order/retail-replenishment-order-query.ts +13 -9
  307. package/server/service/retail-replenishment-order/retail-replenishment-order-types.ts +7 -5
  308. package/server/service/return-order/return-order-mutation.ts +82 -54
  309. package/server/service/return-order/return-order-query.ts +21 -19
  310. package/server/service/reverse-kitting-order/reverse-kitting-order-mutation.ts +38 -23
  311. package/server/service/reverse-kitting-order/reverse-kitting-order-query.ts +19 -16
  312. package/server/service/reverse-kitting-order/reverse-kitting-order.ts +2 -2
  313. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.ts +9 -9
  314. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.ts +7 -8
  315. package/server/service/shipping-order/shipping-order-mutation.ts +11 -11
  316. package/server/service/shipping-order/shipping-order-query.ts +13 -11
  317. package/server/service/shipping-order/shipping-order-types.ts +16 -1
  318. package/server/service/shipping-order/shipping-order.ts +18 -2
  319. package/server/service/transfer-order/transfer-order-mutation.ts +34 -25
  320. package/server/service/transfer-order/transfer-order-query.ts +11 -10
  321. package/server/service/vas/vas-mutation.ts +13 -15
  322. package/server/service/vas/vas-query.ts +12 -10
  323. package/server/service/vas-order/vas-order-mutation.ts +38 -28
  324. package/server/service/vas-order/vas-order-query.ts +15 -13
  325. package/server/utils/datetime-util.ts +54 -0
  326. package/server/utils/index.ts +1 -0
  327. package/server/utils/inventory-util.ts +128 -34
  328. package/translations/en.json +4 -0
  329. package/translations/ko.json +6 -2
  330. package/translations/ms.json +5 -1
@@ -46,7 +46,8 @@ exports.DISPATCHMENT_STATUS = {
46
46
  };
47
47
  exports.MANIFEST_STATUS = {
48
48
  OPEN: 'OPEN',
49
- CLOSED: 'CLOSED'
49
+ CLOSED: 'CLOSED',
50
+ IN_QUEUE: 'IN_QUEUE'
50
51
  };
51
52
  exports.ORDER_INVENTORY_TYPE = {
52
53
  RELEASE_OF_GOODS: 'RELEASE_OF_GOODS',
@@ -70,6 +71,7 @@ exports.ORDER_PRODUCT_STATUS = {
70
71
  READY_TO_UNLOAD: 'READY_TO_UNLOAD',
71
72
  PENDING_APPROVAL: 'PENDING_APPROVAL',
72
73
  PENDING_ASSIGN: 'PENDING_ASSIGN',
74
+ PENDING_WORKSHEET: 'PENDING_WORKSHEET',
73
75
  READY_TO_PICK: 'READY_TO_PICK',
74
76
  PICKING: 'PICKING',
75
77
  UNLOADING: 'UNLOADING',
@@ -85,6 +87,7 @@ exports.ORDER_PRODUCT_STATUS = {
85
87
  NOT_RECEIVED: 'NOT_RECEIVED'
86
88
  };
87
89
  exports.ORDER_INVENTORY_STATUS = {
90
+ ASSIGNED: 'ASSIGNED',
88
91
  ARRIVED: 'ARRIVED',
89
92
  INTRANSIT: 'INTRANSIT',
90
93
  PENDING: 'PENDING',
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"","sources":["../../server/constants/order.ts"],"names":[],"mappings":"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","sourcesContent":["export const ORDER_STATUS = {\n DRAFT: 'DRAFT',\n PENDING: 'PENDING',\n APPROVED: 'APPROVED',\n EDITING: 'EDITING',\n PENDING_RECEIVE: 'PENDING_RECEIVE',\n PENDING_CANCEL: 'PENDING_CANCEL',\n PENDING_APPROVAL: 'PENDING_APPROVAL',\n PENDING_WORKSHEET: 'PENDING_WORKSHEET',\n CANCELLED: 'CANCELLED',\n INTRANSIT: 'INTRANSIT',\n COLLECTING: 'COLLECTING',\n DELIVERING: 'DELIVERING',\n READY_TO_DISPATCH: 'READY_TO_DISPATCH',\n READY_TO_EXECUTE: 'READY_TO_EXECUTE',\n ARRIVED: 'ARRIVED',\n READY_TO_UNLOAD: 'READY_TO_UNLOAD',\n READY_TO_LOAD: 'READY_TO_LOAD',\n READY_TO_PACK: 'READY_TO_PACK',\n READY_TO_SORT: 'READY_TO_SORT',\n READY_TO_PICK: 'READY_TO_PICK',\n READY_TO_PUTAWAY: 'READY_TO_PUTAWAY',\n PUTTING_AWAY: 'PUTTING_AWAY',\n PACKING: 'PACKING',\n PICKING: 'PICKING',\n LOADING: 'LOADING',\n PROCESSING: 'PROCESSING',\n EXECUTING: 'EXECUTING',\n PARTIAL_RETURN: 'PARTIAL_RETURN',\n DONE: 'DONE',\n PENDING_REVIEW: 'PENDING_REVIEW',\n INPROCESS: 'INPROCESS',\n SORTING: 'SORTING',\n INSPECTING: 'INSPECTING',\n REJECTED: 'REJECTED',\n SHIPPING: 'SHIPPING',\n RECEIVED: 'RECEIVED',\n PARTIAL_RECEIVED: 'PARTIAL_RECEIVED'\n}\n\nexport const DISPATCHMENT_STATUS = {\n READY_TO_DISPATCH: 'READY_TO_DISPATCH',\n DISPATCHED: 'DISPATCHED'\n}\n\nexport const MANIFEST_STATUS = {\n OPEN: 'OPEN',\n CLOSED: 'CLOSED'\n}\n\nexport const ORDER_INVENTORY_TYPE = {\n RELEASE_OF_GOODS: 'RELEASE_OF_GOODS',\n ARRIVAL_NOTICE: 'ARRIVAL_NOTICE',\n DELIVERY: 'DELIVERY',\n RETURN_ORDER: 'RETURN_ORDER'\n}\n\nexport const ORDER_PRODUCT_STATUS = {\n ASSIGNED: 'ASSIGNED',\n ADDED: 'ADDED',\n EDITED: 'EDITED',\n READY_TO_APPROVED: 'READY_TO_APPROVED',\n APPROVED: 'APPROVED',\n PENDING: 'PENDING',\n PENDING_RECEIVE: 'PENDING_RECEIVE',\n REJECTED: 'REJECTED',\n INTRANSIT: 'INTRANSIT',\n ARRIVED: 'ARRIVED',\n READY_TO_COLLECT: 'READY_TO_COLLECT',\n READY_TO_DELIVER: 'READY_TO_DELIVER',\n READY_TO_UNLOAD: 'READY_TO_UNLOAD',\n PENDING_APPROVAL: 'PENDING_APPROVAL',\n PENDING_ASSIGN: 'PENDING_ASSIGN',\n READY_TO_PICK: 'READY_TO_PICK',\n PICKING: 'PICKING',\n UNLOADING: 'UNLOADING',\n PARTIALLY_UNLOADED: 'PARTIALLY_UNLOADED',\n UNLOADED: 'UNLOADED',\n COLLECTED: 'COLLECTED',\n DELIVERED: 'DELIVERED',\n PUTTING_AWAY: 'PUTTING_AWAY',\n STORED: 'STORED',\n INSPECTED: 'INSPECTED',\n TERMINATED: 'TERMINATED',\n RECEIVED: 'RECEIVED',\n NOT_RECEIVED: 'NOT_RECEIVED'\n}\n\nexport const ORDER_INVENTORY_STATUS = {\n ARRIVED: 'ARRIVED',\n INTRANSIT: 'INTRANSIT',\n PENDING: 'PENDING',\n PENDING_RECEIVE: 'PENDING_RECEIVE',\n PENDING_CANCEL: 'PENDING_CANCEL',\n PENDING_WORKSHEET: 'PENDING_WORKSHEET',\n PENDING_REVERSE: 'PENDING_REVERSE',\n CANCELLED: 'CANCELLED',\n PENDING_SPLIT: 'PENDING_SPLIT',\n COMPLETE_SPLIT: 'COMPLETE_SPLIT',\n READY_TO_DISPATCH: 'READY_TO_DISPATCH',\n READY_TO_PICK: 'READY_TO_PICK',\n READY_TO_PACK: 'READY_TO_PACK',\n READY_TO_SORT: 'READY_TO_SORT',\n SORTING: 'SORTING',\n READY_TO_RETURN: 'READY_TO_RETURN',\n PACKING: 'PACKING',\n PICKING: 'PICKING',\n LOADING: 'LOADING',\n INSPECTING: 'INSPECTING',\n INSPECTED: 'INSPECTED',\n PICKED: 'PICKED',\n PACKED: 'PACKED',\n SORTED: 'SORTED',\n LOADED: 'LOADED',\n NOT_TALLY: 'NOT_TALLY',\n RELOCATED: 'RELOCATED',\n ADDED: 'ADDED',\n MISSING: 'MISSING',\n EXTRA: 'EXTRA',\n REJECTED: 'REJECTED',\n RELEASED: 'RELEASED',\n REPLACED: 'REPLACED',\n DELIVERING: 'DELIVERING',\n RETURNING: 'RETURNING',\n TERMINATED: 'TERMINATED',\n DONE: 'DONE',\n RECEIVED: 'RECEIVED',\n NOT_RECEIVED: 'NOT_RECEIVED'\n}\n\nexport const ORDER_VAS_STATUS = {\n PENDING: 'PENDING',\n PENDING_RECEIVE: 'PENDING_RECEIVE',\n PENDING_CANCEL: 'PENDING_CANCEL',\n CANCELLED: 'CANCELLED',\n REJECTED: 'REJECTED',\n INTRANSIT: 'INTRANSIT',\n ARRIVED: 'ARRIVED',\n READY_TO_PROCESS: 'READY_TO_PROCESS',\n PROCESSING: 'PROCESSING',\n COMPLETED: 'COMPLETED',\n TERMINATED: 'TERMINATED'\n}\n\nexport const ORDER_TYPES = {\n ARRIVAL_NOTICE: 'ARRIVAL_NOTICE',\n SHIPPING: 'SHIPPING_ORDER',\n DELIVERY: 'DELIVERY',\n COLLECTION: 'COLLECTION',\n RELEASE_OF_GOODS: 'RELEASE_OF_GOODS',\n DRAFT_RELEASE_GOODS: 'DRAFT_RELEASE_GOODS',\n VAS_ORDER: 'VAS_ORDER',\n CYCLE_COUNT: 'CYCLE_COUNT',\n STOCK_TAKE: 'STOCK_TAKE',\n TRANSFER_ORDER: 'TRANSFER_ORDER'\n}\n\nexport const GRN_STATUS = {\n READY_TO_SEND: 'READY_TO_SEND',\n PENDING_RECEIVE: 'PENDING_RECEIVE',\n SENT: 'SENT',\n RECEIVED: 'RECEIVED'\n}\n\nexport const ORDER_NUMBER_SETTING_KEY = {\n GAN_NUMBER_RULE: 'gan-number-rule',\n PO_NUMBER_RULE: 'po-number-rule',\n GRN_NUMBER_RULE: 'grn-number-rule',\n RO_NUMBER_RULE: 'ro-number-rule',\n DO_NUMBER_RULE: 'do-number-rule',\n RR_NUMBER_RULE: 'rr-number-rule',\n TO_NUMBER_RULE: 'to-number-rule',\n DRO_NUMBER_RULE: 'dro-number-rule'\n}\n\nexport const ORDER_NUMBER_RULE_TYPE = {\n GAN_NUMBER: 'gan_number',\n PO_NUMBER: 'po_number',\n GRN_NUMBER: 'grn_number',\n RO_NUMBER: 'ro_number',\n DO_NUMBER: 'do_number',\n RR_NUMBER: 'rr_number',\n TO_NUMBER: 'to_number',\n DRO_NUMBER: 'dro_number'\n}\n\nexport const PURCHASE_ORDER_STATUS = {\n DRAFT: 'DRAFT',\n PENDING: 'PENDING',\n APPROVED: 'APPROVED',\n REJECTED: 'REJECTED',\n COMPLETED: 'COMPLETED'\n}\n\nexport const DRAFT_RELEASE_ORDER_STATUS = {\n DRAFT: 'DRAFT',\n INSUFFICIENT: 'INSUFFICIENT',\n SUBMITTED: 'SUBMITTED',\n CANCELLED: 'CANCELLED'\n}\n"]}
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../server/constants/order.ts"],"names":[],"mappings":"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","sourcesContent":["export const ORDER_STATUS = {\n DRAFT: 'DRAFT',\n PENDING: 'PENDING',\n APPROVED: 'APPROVED',\n EDITING: 'EDITING',\n PENDING_RECEIVE: 'PENDING_RECEIVE',\n PENDING_CANCEL: 'PENDING_CANCEL',\n PENDING_APPROVAL: 'PENDING_APPROVAL',\n PENDING_WORKSHEET: 'PENDING_WORKSHEET',\n CANCELLED: 'CANCELLED',\n INTRANSIT: 'INTRANSIT',\n COLLECTING: 'COLLECTING',\n DELIVERING: 'DELIVERING',\n READY_TO_DISPATCH: 'READY_TO_DISPATCH',\n READY_TO_EXECUTE: 'READY_TO_EXECUTE',\n ARRIVED: 'ARRIVED',\n READY_TO_UNLOAD: 'READY_TO_UNLOAD',\n READY_TO_LOAD: 'READY_TO_LOAD',\n READY_TO_PACK: 'READY_TO_PACK',\n READY_TO_SORT: 'READY_TO_SORT',\n READY_TO_PICK: 'READY_TO_PICK',\n READY_TO_PUTAWAY: 'READY_TO_PUTAWAY',\n PUTTING_AWAY: 'PUTTING_AWAY',\n PACKING: 'PACKING',\n PICKING: 'PICKING',\n LOADING: 'LOADING',\n PROCESSING: 'PROCESSING',\n EXECUTING: 'EXECUTING',\n PARTIAL_RETURN: 'PARTIAL_RETURN',\n DONE: 'DONE',\n PENDING_REVIEW: 'PENDING_REVIEW',\n INPROCESS: 'INPROCESS',\n SORTING: 'SORTING',\n INSPECTING: 'INSPECTING',\n REJECTED: 'REJECTED',\n SHIPPING: 'SHIPPING',\n RECEIVED: 'RECEIVED',\n PARTIAL_RECEIVED: 'PARTIAL_RECEIVED'\n}\n\nexport const DISPATCHMENT_STATUS = {\n READY_TO_DISPATCH: 'READY_TO_DISPATCH',\n DISPATCHED: 'DISPATCHED'\n}\n\nexport const MANIFEST_STATUS = {\n OPEN: 'OPEN',\n CLOSED: 'CLOSED',\n IN_QUEUE: 'IN_QUEUE'\n}\n\nexport const ORDER_INVENTORY_TYPE = {\n RELEASE_OF_GOODS: 'RELEASE_OF_GOODS',\n ARRIVAL_NOTICE: 'ARRIVAL_NOTICE',\n DELIVERY: 'DELIVERY',\n RETURN_ORDER: 'RETURN_ORDER'\n}\n\nexport const ORDER_PRODUCT_STATUS = {\n ASSIGNED: 'ASSIGNED',\n ADDED: 'ADDED',\n EDITED: 'EDITED',\n READY_TO_APPROVED: 'READY_TO_APPROVED',\n APPROVED: 'APPROVED',\n PENDING: 'PENDING',\n PENDING_RECEIVE: 'PENDING_RECEIVE',\n REJECTED: 'REJECTED',\n INTRANSIT: 'INTRANSIT',\n ARRIVED: 'ARRIVED',\n READY_TO_COLLECT: 'READY_TO_COLLECT',\n READY_TO_DELIVER: 'READY_TO_DELIVER',\n READY_TO_UNLOAD: 'READY_TO_UNLOAD',\n PENDING_APPROVAL: 'PENDING_APPROVAL',\n PENDING_ASSIGN: 'PENDING_ASSIGN',\n PENDING_WORKSHEET: 'PENDING_WORKSHEET',\n READY_TO_PICK: 'READY_TO_PICK',\n PICKING: 'PICKING',\n UNLOADING: 'UNLOADING',\n PARTIALLY_UNLOADED: 'PARTIALLY_UNLOADED',\n UNLOADED: 'UNLOADED',\n COLLECTED: 'COLLECTED',\n DELIVERED: 'DELIVERED',\n PUTTING_AWAY: 'PUTTING_AWAY',\n STORED: 'STORED',\n INSPECTED: 'INSPECTED',\n TERMINATED: 'TERMINATED',\n RECEIVED: 'RECEIVED',\n NOT_RECEIVED: 'NOT_RECEIVED'\n}\n\nexport const ORDER_INVENTORY_STATUS = {\n ASSIGNED: 'ASSIGNED',\n ARRIVED: 'ARRIVED',\n INTRANSIT: 'INTRANSIT',\n PENDING: 'PENDING',\n PENDING_RECEIVE: 'PENDING_RECEIVE',\n PENDING_CANCEL: 'PENDING_CANCEL',\n PENDING_WORKSHEET: 'PENDING_WORKSHEET',\n PENDING_REVERSE: 'PENDING_REVERSE',\n CANCELLED: 'CANCELLED',\n PENDING_SPLIT: 'PENDING_SPLIT',\n COMPLETE_SPLIT: 'COMPLETE_SPLIT',\n READY_TO_DISPATCH: 'READY_TO_DISPATCH',\n READY_TO_PICK: 'READY_TO_PICK',\n READY_TO_PACK: 'READY_TO_PACK',\n READY_TO_SORT: 'READY_TO_SORT',\n SORTING: 'SORTING',\n READY_TO_RETURN: 'READY_TO_RETURN',\n PACKING: 'PACKING',\n PICKING: 'PICKING',\n LOADING: 'LOADING',\n INSPECTING: 'INSPECTING',\n INSPECTED: 'INSPECTED',\n PICKED: 'PICKED',\n PACKED: 'PACKED',\n SORTED: 'SORTED',\n LOADED: 'LOADED',\n NOT_TALLY: 'NOT_TALLY',\n RELOCATED: 'RELOCATED',\n ADDED: 'ADDED',\n MISSING: 'MISSING',\n EXTRA: 'EXTRA',\n REJECTED: 'REJECTED',\n RELEASED: 'RELEASED',\n REPLACED: 'REPLACED',\n DELIVERING: 'DELIVERING',\n RETURNING: 'RETURNING',\n TERMINATED: 'TERMINATED',\n DONE: 'DONE',\n RECEIVED: 'RECEIVED',\n NOT_RECEIVED: 'NOT_RECEIVED'\n}\n\nexport const ORDER_VAS_STATUS = {\n PENDING: 'PENDING',\n PENDING_RECEIVE: 'PENDING_RECEIVE',\n PENDING_CANCEL: 'PENDING_CANCEL',\n CANCELLED: 'CANCELLED',\n REJECTED: 'REJECTED',\n INTRANSIT: 'INTRANSIT',\n ARRIVED: 'ARRIVED',\n READY_TO_PROCESS: 'READY_TO_PROCESS',\n PROCESSING: 'PROCESSING',\n COMPLETED: 'COMPLETED',\n TERMINATED: 'TERMINATED'\n}\n\nexport const ORDER_TYPES = {\n ARRIVAL_NOTICE: 'ARRIVAL_NOTICE',\n SHIPPING: 'SHIPPING_ORDER',\n DELIVERY: 'DELIVERY',\n COLLECTION: 'COLLECTION',\n RELEASE_OF_GOODS: 'RELEASE_OF_GOODS',\n DRAFT_RELEASE_GOODS: 'DRAFT_RELEASE_GOODS',\n VAS_ORDER: 'VAS_ORDER',\n CYCLE_COUNT: 'CYCLE_COUNT',\n STOCK_TAKE: 'STOCK_TAKE',\n TRANSFER_ORDER: 'TRANSFER_ORDER'\n}\n\nexport const GRN_STATUS = {\n READY_TO_SEND: 'READY_TO_SEND',\n PENDING_RECEIVE: 'PENDING_RECEIVE',\n SENT: 'SENT',\n RECEIVED: 'RECEIVED'\n}\n\nexport const ORDER_NUMBER_SETTING_KEY = {\n GAN_NUMBER_RULE: 'gan-number-rule',\n PO_NUMBER_RULE: 'po-number-rule',\n GRN_NUMBER_RULE: 'grn-number-rule',\n RO_NUMBER_RULE: 'ro-number-rule',\n DO_NUMBER_RULE: 'do-number-rule',\n RR_NUMBER_RULE: 'rr-number-rule',\n TO_NUMBER_RULE: 'to-number-rule',\n DRO_NUMBER_RULE: 'dro-number-rule'\n}\n\nexport const ORDER_NUMBER_RULE_TYPE = {\n GAN_NUMBER: 'gan_number',\n PO_NUMBER: 'po_number',\n GRN_NUMBER: 'grn_number',\n RO_NUMBER: 'ro_number',\n DO_NUMBER: 'do_number',\n RR_NUMBER: 'rr_number',\n TO_NUMBER: 'to_number',\n DRO_NUMBER: 'dro_number'\n}\n\nexport const PURCHASE_ORDER_STATUS = {\n DRAFT: 'DRAFT',\n PENDING: 'PENDING',\n APPROVED: 'APPROVED',\n REJECTED: 'REJECTED',\n COMPLETED: 'COMPLETED'\n}\n\nexport const DRAFT_RELEASE_ORDER_STATUS = {\n DRAFT: 'DRAFT',\n INSUFFICIENT: 'INSUFFICIENT',\n SUBMITTED: 'SUBMITTED',\n CANCELLED: 'CANCELLED'\n}\n"]}
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReleaseOrderType = void 0;
3
+ exports.ORDER_METHOD = exports.ReleaseOrderType = void 0;
4
4
  var ReleaseOrderType;
5
5
  (function (ReleaseOrderType) {
6
6
  ReleaseOrderType["B2B"] = "b2b";
7
7
  ReleaseOrderType["B2C"] = "b2c";
8
8
  })(ReleaseOrderType = exports.ReleaseOrderType || (exports.ReleaseOrderType = {}));
9
+ exports.ORDER_METHOD = {
10
+ SELECT_BY_PRODUCT: 'SELECT_BY_PRODUCT',
11
+ SELECT_BY_PALLET: 'SELECT_BY_PALLET'
12
+ };
9
13
  //# sourceMappingURL=release-good.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"release-good.js","sourceRoot":"","sources":["../../server/constants/release-good.ts"],"names":[],"mappings":";;;AAEA,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,+BAAW,CAAA;AACf,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B","sourcesContent":["\n\nexport enum ReleaseOrderType {\n B2B = 'b2b',\n B2C = 'b2c'\n}"]}
1
+ {"version":3,"file":"release-good.js","sourceRoot":"","sources":["../../server/constants/release-good.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,+BAAW,CAAA;AACf,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B;AAEY,QAAA,YAAY,GAAG;IACxB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;CACvC,CAAA","sourcesContent":["export enum ReleaseOrderType {\n B2B = 'b2b',\n B2C = 'b2c'\n}\n\nexport const ORDER_METHOD = {\n SELECT_BY_PRODUCT: 'SELECT_BY_PRODUCT',\n SELECT_BY_PALLET: 'SELECT_BY_PALLET'\n}\n"]}
@@ -10,7 +10,7 @@ class EcommerceController extends order_controller_1.OrderController {
10
10
  async updateProductVariationStock(marketplaceStores, productIds, companyDomain) {
11
11
  var _a;
12
12
  const inventoryProducts = await Promise.all(productIds.map(async (productId) => {
13
- const product = await this.trxMgr.getRepository(product_base_1.Product).findOne(productId);
13
+ const product = await this.trxMgr.getRepository(product_base_1.Product).findOneBy({ id: productId });
14
14
  let qb = await this.trxMgr.getRepository(warehouse_base_1.Inventory).createQueryBuilder('inv');
15
15
  qb.leftJoinAndSelect('inv.location', 'loc')
16
16
  .andWhere('"inv"."domain_id" = :domainId')
@@ -1 +1 @@
1
- {"version":3,"file":"ecommerce-controller.js","sourceRoot":"","sources":["../../../server/controllers/ecommerce/ecommerce-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { MarketplaceSetting, MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'\nimport { MarketplaceProductVariation } from '@things-factory/marketplace-base'\nimport { Product } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, INVENTORY_STATUS, LOCATION_TYPE } from '@things-factory/warehouse-base'\n\nimport { OrderController } from '../order-controller'\n\nexport class EcommerceController extends OrderController {\n async updateProductVariationStock(\n marketplaceStores: MarketplaceStore[],\n productIds: string[],\n companyDomain: Domain\n ): Promise<void> {\n const inventoryProducts: any[] = await Promise.all(\n productIds.map(async productId => {\n const product: Product = await this.trxMgr.getRepository(Product).findOne(productId)\n let qb = await this.trxMgr.getRepository(Inventory).createQueryBuilder('inv')\n qb.leftJoinAndSelect('inv.location', 'loc')\n .andWhere('\"inv\".\"domain_id\" = :domainId')\n .andWhere('\"inv\".\"product_id\" = :productId')\n .andWhere('\"inv\".\"status\" != :status')\n .andWhere('\"loc\".\"type\" NOT IN (:...locationTypes)')\n .setParameters({\n domainId: this.domain.id,\n productId: product.id,\n status: INVENTORY_STATUS.TERMINATED,\n locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]\n })\n\n let inventories: Inventory[] = await qb.getMany()\n\n inventories = inventories.filter(\n inventory =>\n inventory?.location.type !== LOCATION_TYPE.QUARANTINE || inventory?.location.type !== LOCATION_TYPE.RESERVE\n )\n\n const inventoryQty: number = inventories.reduce((total, currentValue) => {\n total += currentValue.qty\n return total\n }, 0)\n\n const inventoryLockedQty: number = inventories.reduce((total, currentValue) => {\n total += currentValue.lockedQty\n return total\n }, 0)\n\n return { sku: product.sku, name: product.name, qty: inventoryQty - inventoryLockedQty }\n })\n )\n\n for (var i = 0; i < marketplaceStores.length; i++) {\n const marketplaceStore = marketplaceStores[i]\n\n // get marketplace setting based on marketplace connection\n const marketplaceSetting: MarketplaceSetting = await this.trxMgr.getRepository(MarketplaceSetting).findOne({\n where: { marketplaceStore, category: 'stock_allocation' }\n })\n\n for (var j = 0; j < inventoryProducts.length; j++) {\n const inventoryProduct = inventoryProducts[j]\n const marketplaceProductVariations: MarketplaceProductVariation[] = await this.trxMgr\n .getRepository(MarketplaceProductVariation)\n .find({\n where: { domain: companyDomain, sku: inventoryProduct.sku },\n relations: ['marketplaceProduct', 'marketplaceProduct.marketplaceStore']\n })\n\n let storeProductVariations: MarketplaceProductVariation[] = marketplaceProductVariations.filter(\n productVariation => productVariation.marketplaceProduct.marketplaceStore.id === marketplaceStore.id\n )\n\n let percentageValue: number = 100\n if (storeProductVariations) {\n for (let k = 0; k < storeProductVariations.length; k++) {\n let storeProductVariation: MarketplaceProductVariation = storeProductVariations[k]\n if (marketplaceSetting) {\n percentageValue = parseInt(marketplaceSetting.value)\n }\n\n let remainQty: number = Math.floor(\n (inventoryProduct.qty - storeProductVariation.reserveQty) * (percentageValue / 100)\n )\n if (remainQty < 0) remainQty = 0\n\n let productVariationLocationId = storeProductVariation?.locationId\n let adjustQty: number = remainQty\n\n if (marketplaceStore.platform === 'shopify') {\n let locationIds: any[] = JSON.parse(productVariationLocationId)\n adjustQty = adjustQty - storeProductVariation.qty\n if (locationIds[0]?.location_id) productVariationLocationId = locationIds[0].location_id\n }\n\n let validMarketplaceDistributors: any[] = []\n if (marketplaceStore.marketplaceDistributors) {\n validMarketplaceDistributors = marketplaceStore.marketplaceDistributors.filter(\n distributor => distributor.status === 'ACTIVE'\n )\n }\n\n await StoreAPI.updateStoreProductVariationStock(marketplaceStore, [\n {\n itemId: storeProductVariation.marketplaceProduct.itemId,\n variationId: storeProductVariation.variationId,\n variationSku: storeProductVariation.variationSku,\n qty: adjustQty,\n locationId: productVariationLocationId,\n inventoryItemId: storeProductVariation.inventoryItemId,\n distributors: validMarketplaceDistributors\n }\n ])\n\n storeProductVariation.qty = remainQty\n storeProductVariation.updater = this.user\n await this.trxMgr.getRepository(MarketplaceProductVariation).save(storeProductVariation)\n }\n }\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ecommerce-controller.js","sourceRoot":"","sources":["../../../server/controllers/ecommerce/ecommerce-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { MarketplaceSetting, MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'\nimport { MarketplaceProductVariation } from '@things-factory/marketplace-base'\nimport { Product } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, INVENTORY_STATUS, LOCATION_TYPE } from '@things-factory/warehouse-base'\n\nimport { OrderController } from '../order-controller'\n\nexport class EcommerceController extends OrderController {\n async updateProductVariationStock(\n marketplaceStores: MarketplaceStore[],\n productIds: string[],\n companyDomain: Domain\n ): Promise<void> {\n const inventoryProducts: any[] = await Promise.all(\n productIds.map(async productId => {\n const product: Product = await this.trxMgr.getRepository(Product).findOneBy({ id: productId })\n let qb = await this.trxMgr.getRepository(Inventory).createQueryBuilder('inv')\n qb.leftJoinAndSelect('inv.location', 'loc')\n .andWhere('\"inv\".\"domain_id\" = :domainId')\n .andWhere('\"inv\".\"product_id\" = :productId')\n .andWhere('\"inv\".\"status\" != :status')\n .andWhere('\"loc\".\"type\" NOT IN (:...locationTypes)')\n .setParameters({\n domainId: this.domain.id,\n productId: product.id,\n status: INVENTORY_STATUS.TERMINATED,\n locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]\n })\n\n let inventories: Inventory[] = await qb.getMany()\n\n inventories = inventories.filter(\n inventory =>\n inventory?.location.type !== LOCATION_TYPE.QUARANTINE || inventory?.location.type !== LOCATION_TYPE.RESERVE\n )\n\n const inventoryQty: number = inventories.reduce((total, currentValue) => {\n total += currentValue.qty\n return total\n }, 0)\n\n const inventoryLockedQty: number = inventories.reduce((total, currentValue) => {\n total += currentValue.lockedQty\n return total\n }, 0)\n\n return { sku: product.sku, name: product.name, qty: inventoryQty - inventoryLockedQty }\n })\n )\n\n for (var i = 0; i < marketplaceStores.length; i++) {\n const marketplaceStore = marketplaceStores[i]\n\n // get marketplace setting based on marketplace connection\n const marketplaceSetting: MarketplaceSetting = await this.trxMgr.getRepository(MarketplaceSetting).findOne({\n where: { marketplaceStore, category: 'stock_allocation' }\n })\n\n for (var j = 0; j < inventoryProducts.length; j++) {\n const inventoryProduct = inventoryProducts[j]\n const marketplaceProductVariations: MarketplaceProductVariation[] = await this.trxMgr\n .getRepository(MarketplaceProductVariation)\n .find({\n where: { domain: companyDomain, sku: inventoryProduct.sku },\n relations: ['marketplaceProduct', 'marketplaceProduct.marketplaceStore']\n })\n\n let storeProductVariations: MarketplaceProductVariation[] = marketplaceProductVariations.filter(\n productVariation => productVariation.marketplaceProduct.marketplaceStore.id === marketplaceStore.id\n )\n\n let percentageValue: number = 100\n if (storeProductVariations) {\n for (let k = 0; k < storeProductVariations.length; k++) {\n let storeProductVariation: MarketplaceProductVariation = storeProductVariations[k]\n if (marketplaceSetting) {\n percentageValue = parseInt(marketplaceSetting.value)\n }\n\n let remainQty: number = Math.floor(\n (inventoryProduct.qty - storeProductVariation.reserveQty) * (percentageValue / 100)\n )\n if (remainQty < 0) remainQty = 0\n\n let productVariationLocationId = storeProductVariation?.locationId\n let adjustQty: number = remainQty\n\n if (marketplaceStore.platform === 'shopify') {\n let locationIds: any[] = JSON.parse(productVariationLocationId)\n adjustQty = adjustQty - storeProductVariation.qty\n if (locationIds[0]?.location_id) productVariationLocationId = locationIds[0].location_id\n }\n\n let validMarketplaceDistributors: any[] = []\n if (marketplaceStore.marketplaceDistributors) {\n validMarketplaceDistributors = marketplaceStore.marketplaceDistributors.filter(\n distributor => distributor.status === 'ACTIVE'\n )\n }\n\n await StoreAPI.updateStoreProductVariationStock(marketplaceStore, [\n {\n itemId: storeProductVariation.marketplaceProduct.itemId,\n variationId: storeProductVariation.variationId,\n variationSku: storeProductVariation.variationSku,\n qty: adjustQty,\n locationId: productVariationLocationId,\n inventoryItemId: storeProductVariation.inventoryItemId,\n distributors: validMarketplaceDistributors\n }\n ])\n\n storeProductVariation.qty = remainQty\n storeProductVariation.updater = this.user\n await this.trxMgr.getRepository(MarketplaceProductVariation).save(storeProductVariation)\n }\n }\n }\n }\n }\n}\n"]}
@@ -11,109 +11,117 @@ const release_good_1 = require("../../service/release-good/release-good");
11
11
  const order_controller_1 = require("../order-controller");
12
12
  class SellercraftController extends order_controller_1.OrderController {
13
13
  async packOrder(sellercraft, releaseGood) {
14
- const orderProducts = releaseGood.orderProducts;
15
- let sellercraftOPs = [];
16
- sellercraftOPs = orderProducts.map(orderProduct => {
17
- const product = orderProduct.product;
18
- return {
19
- sku: product.sku,
20
- releaseQty: orderProduct.releaseQty,
21
- uom: 'EA'
14
+ let sellercraftSetting = sellercraft.sellercraftSetting;
15
+ let disablePackOrder = (sellercraftSetting === null || sellercraftSetting === void 0 ? void 0 : sellercraftSetting.disablePackOrder) && (sellercraftSetting === null || sellercraftSetting === void 0 ? void 0 : sellercraftSetting.disablePackOrder) == 1 ? true : false;
16
+ if (!disablePackOrder) {
17
+ const orderProducts = releaseGood.orderProducts;
18
+ let sellercraftOPs = [];
19
+ sellercraftOPs = orderProducts.map(orderProduct => {
20
+ const product = orderProduct.product;
21
+ return {
22
+ sku: product.sku,
23
+ releaseQty: orderProduct.releaseQty,
24
+ uom: 'EA'
25
+ };
26
+ });
27
+ const orderInformation = {
28
+ accountId: sellercraft.accountId,
29
+ orderId: releaseGood.refNo2,
30
+ sellercraftOPs
22
31
  };
23
- });
24
- const orderInformation = {
25
- accountId: sellercraft.accountId,
26
- orderId: releaseGood.refNo2,
27
- sellercraftOPs
28
- };
29
- const packageId = await integration_sellercraft_1.SellercraftAPI.packMarketplaceOrder(sellercraft, Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } } }));
30
- releaseGood.packageId = packageId;
31
- releaseGood.updater = this.user;
32
+ const packageId = await integration_sellercraft_1.SellercraftAPI.packMarketplaceOrder(sellercraft, Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } } }));
33
+ releaseGood.packageId = packageId;
34
+ releaseGood.updater = this.user;
35
+ }
32
36
  return releaseGood;
33
37
  }
34
38
  async updateSellercraftStock(sellercraft, orderProducts, type) {
35
- for (var i = 0; i < orderProducts.length; i++) {
36
- const orderProduct = orderProducts[i];
37
- const product = orderProduct.product;
38
- const pendingAssignOPs = await this.trxMgr.getRepository(order_product_1.OrderProduct).find({
39
- where: {
40
- domain: this.domain,
41
- bizplace: orderProduct.bizplace,
42
- product,
43
- status: constants_1.ORDER_PRODUCT_STATUS.PENDING_ASSIGN
39
+ let sellercraftSetting = sellercraft.sellercraftSetting;
40
+ let disableUpdateStock = (sellercraftSetting === null || sellercraftSetting === void 0 ? void 0 : sellercraftSetting.disableUpdateStock) && (sellercraftSetting === null || sellercraftSetting === void 0 ? void 0 : sellercraftSetting.disableUpdateStock) == 1 ? true : false;
41
+ if (!disableUpdateStock) {
42
+ for (var i = 0; i < orderProducts.length; i++) {
43
+ const orderProduct = orderProducts[i];
44
+ const product = orderProduct.product;
45
+ const pendingAssignOPs = await this.trxMgr.getRepository(order_product_1.OrderProduct).find({
46
+ where: {
47
+ domain: this.domain,
48
+ bizplace: orderProduct.bizplace,
49
+ product,
50
+ status: constants_1.ORDER_PRODUCT_STATUS.PENDING_ASSIGN
51
+ }
52
+ });
53
+ const productDetails = product.productDetails;
54
+ let totalUnassignReleaseQty = 0;
55
+ if (pendingAssignOPs === null || pendingAssignOPs === void 0 ? void 0 : pendingAssignOPs.length) {
56
+ totalUnassignReleaseQty = pendingAssignOPs.reduce((total, currentValue) => {
57
+ total += currentValue.releaseQty;
58
+ return total;
59
+ }, 0);
44
60
  }
45
- });
46
- const productDetails = product.productDetails;
47
- let totalUnassignReleaseQty = 0;
48
- if (pendingAssignOPs === null || pendingAssignOPs === void 0 ? void 0 : pendingAssignOPs.length) {
49
- totalUnassignReleaseQty = pendingAssignOPs.reduce((total, currentValue) => {
50
- total += currentValue.releaseQty;
61
+ let qb = await this.trxMgr.getRepository(warehouse_base_1.Inventory).createQueryBuilder('inv');
62
+ qb.leftJoinAndSelect('inv.location', 'loc')
63
+ .andWhere('"inv"."domain_id" = :domainId')
64
+ .andWhere('"inv"."product_id" = :productId')
65
+ .andWhere('"inv"."bizplace_id" = :bizplaceId')
66
+ .andWhere('"inv"."status" = :status')
67
+ .andWhere('"loc"."type" NOT IN (:...locationTypes)')
68
+ .setParameters({
69
+ domainId: this.domain.id,
70
+ productId: product.id,
71
+ bizplaceId: orderProduct.bizplace.id,
72
+ status: warehouse_base_1.INVENTORY_STATUS.STORED,
73
+ locationTypes: [warehouse_base_1.LOCATION_TYPE.QUARANTINE, warehouse_base_1.LOCATION_TYPE.RESERVE]
74
+ });
75
+ let inventories = await qb.getMany();
76
+ let defaultProductDetail;
77
+ const sellercraftInvs = await Promise.all(inventories.map(async (inventory) => {
78
+ const inventoryPackingType = inventory.packingType;
79
+ defaultProductDetail = product.productDetails.find(productDetail => productDetail.isDefault);
80
+ let packingSize = 1;
81
+ if (inventoryPackingType !== defaultProductDetail.packingType) {
82
+ const unmatchingProductDetail = product.productDetails.find(productDetail => productDetail.packingType === inventoryPackingType);
83
+ packingSize = await this.getChildPackingSize(productDetails, defaultProductDetail, unmatchingProductDetail);
84
+ if (packingSize == 0)
85
+ packingSize = 1;
86
+ }
87
+ return { totalQty: inventory.qty * packingSize, totalLockedQty: inventory.lockedQty * packingSize };
88
+ }));
89
+ let inventoryTotalQty = sellercraftInvs.reduce((total, currentValue) => {
90
+ total += currentValue.totalQty;
51
91
  return total;
52
92
  }, 0);
53
- }
54
- let qb = await this.trxMgr.getRepository(warehouse_base_1.Inventory).createQueryBuilder('inv');
55
- qb.leftJoinAndSelect('inv.location', 'loc')
56
- .andWhere('"inv"."domain_id" = :domainId')
57
- .andWhere('"inv"."product_id" = :productId')
58
- .andWhere('"inv"."bizplace_id" = :bizplaceId')
59
- .andWhere('"inv"."status" != :status')
60
- .andWhere('"loc"."type" NOT IN (:...locationTypes)')
61
- .setParameters({
62
- domainId: this.domain.id,
63
- productId: product.id,
64
- bizplaceId: orderProduct.bizplace.id,
65
- status: warehouse_base_1.INVENTORY_STATUS.TERMINATED,
66
- locationTypes: [warehouse_base_1.LOCATION_TYPE.QUARANTINE, warehouse_base_1.LOCATION_TYPE.RESERVE]
67
- });
68
- let inventories = await qb.getMany();
69
- let defaultProductDetail;
70
- const sellercraftInvs = await Promise.all(inventories.map(async (inventory) => {
71
- const inventoryPackingType = inventory.packingType;
72
- defaultProductDetail = product.productDetails.find(productDetail => productDetail.isDefault);
73
- let packingSize = 1;
74
- if (inventoryPackingType !== defaultProductDetail.packingType) {
75
- const unmatchingProductDetail = product.productDetails.find(productDetail => productDetail.packingType === inventoryPackingType);
76
- packingSize = await this.getChildPackingSize(productDetails, defaultProductDetail, unmatchingProductDetail);
77
- if (packingSize == 0)
78
- packingSize = 1;
93
+ let inventoryTotalLockedQty = sellercraftInvs.reduce((total, currentValue) => {
94
+ total += currentValue.totalLockedQty;
95
+ return total;
96
+ }, 0);
97
+ switch (type) {
98
+ case 'CONFIRM_ORDER':
99
+ inventoryTotalQty -= totalUnassignReleaseQty;
100
+ break;
79
101
  }
80
- return { totalQty: inventory.qty * packingSize, totalLockedQty: inventory.lockedQty * packingSize };
81
- }));
82
- let inventoryTotalQty = sellercraftInvs.reduce((total, currentValue) => {
83
- total += currentValue.totalQty;
84
- return total;
85
- }, 0);
86
- let inventoryTotalLockedQty = sellercraftInvs.reduce((total, currentValue) => {
87
- total += currentValue.totalLockedQty;
88
- return total;
89
- }, 0);
90
- switch (type) {
91
- case 'CONFIRM_ORDER':
92
- inventoryTotalQty -= totalUnassignReleaseQty;
93
- break;
94
- }
95
- const sellercraftInv = [
96
- {
97
- sku: product.sku,
98
- gtin: defaultProductDetail.gtin,
99
- stock: {
100
- quantity_total: inventoryTotalQty,
101
- quantity_reserved: inventoryTotalLockedQty,
102
- unit_of_measure: 'EA'
103
- },
104
- package_weight_gm: defaultProductDetail.nettWeight < 1 ? 1 : defaultProductDetail.nettWeight,
105
- package_dimensions: {
106
- length_mm: defaultProductDetail.depth < 1 ? 1 : defaultProductDetail.depth,
107
- width_mm: defaultProductDetail.width < 1 ? 1 : defaultProductDetail.width,
108
- height_mm: defaultProductDetail.height < 1 ? 1 : defaultProductDetail.height
102
+ const sellercraftInv = [
103
+ {
104
+ sku: product.sku,
105
+ gtin: defaultProductDetail.gtin,
106
+ stock: {
107
+ quantity_total: inventoryTotalQty,
108
+ quantity_reserved: inventoryTotalLockedQty,
109
+ unit_of_measure: 'EA'
110
+ },
111
+ package_weight_gm: defaultProductDetail.nettWeight < 1 ? 1 : defaultProductDetail.nettWeight,
112
+ package_dimensions: {
113
+ length_mm: defaultProductDetail.depth < 1 ? 1 : defaultProductDetail.depth,
114
+ width_mm: defaultProductDetail.width < 1 ? 1 : defaultProductDetail.width,
115
+ height_mm: defaultProductDetail.height < 1 ? 1 : defaultProductDetail.height
116
+ }
109
117
  }
110
- }
111
- ];
112
- await integration_sellercraft_1.SellercraftAPI.updateProduct(sellercraft, {
113
- context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } },
114
- accountId: sellercraft.accountId,
115
- sellercraftInv
116
- });
118
+ ];
119
+ await integration_sellercraft_1.SellercraftAPI.updateProduct(sellercraft, {
120
+ context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } },
121
+ accountId: sellercraft.accountId,
122
+ sellercraftInv
123
+ });
124
+ }
117
125
  }
118
126
  }
119
127
  async checkExistingReleaseGood(sellercraft, releaseGood) {
@@ -1 +1 @@
1
- {"version":3,"file":"sellercraft-controller.js","sourceRoot":"","sources":["../../../server/controllers/ecommerce/sellercraft-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { Sellercraft, SellercraftAPI } from '@things-factory/integration-sellercraft'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, INVENTORY_STATUS, LOCATION_TYPE } from '@things-factory/warehouse-base'\n\nimport { ORDER_PRODUCT_STATUS } from '../../constants'\nimport { OrderProduct } from '../../service/order-product/order-product'\nimport { ReleaseGood } from '../../service/release-good/release-good'\nimport { OrderController } from '../order-controller'\n\nexport class SellercraftController extends OrderController {\n async packOrder(sellercraft: Sellercraft, releaseGood: ReleaseGood): Promise<ReleaseGood> {\n const orderProducts: OrderProduct[] = releaseGood.orderProducts\n let sellercraftOPs: any[] = []\n\n sellercraftOPs = orderProducts.map(orderProduct => {\n const product: Product = orderProduct.product\n\n return {\n sku: product.sku,\n releaseQty: orderProduct.releaseQty,\n uom: 'EA'\n }\n })\n\n const orderInformation: any = {\n accountId: sellercraft.accountId,\n orderId: releaseGood.refNo2,\n sellercraftOPs\n }\n const packageId: string = await SellercraftAPI.packMarketplaceOrder(sellercraft, {\n ...orderInformation,\n context: { state: { domain: this?.domain, user: this?.user } }\n })\n\n releaseGood.packageId = packageId\n releaseGood.updater = this.user\n return releaseGood\n }\n\n async updateSellercraftStock(sellercraft: Sellercraft, orderProducts: OrderProduct[], type: string): Promise<void> {\n for (var i = 0; i < orderProducts.length; i++) {\n const orderProduct: OrderProduct = orderProducts[i]\n\n const product: Product = orderProduct.product\n const pendingAssignOPs: OrderProduct[] = await this.trxMgr.getRepository(OrderProduct).find({\n where: {\n domain: this.domain,\n bizplace: orderProduct.bizplace,\n product,\n status: ORDER_PRODUCT_STATUS.PENDING_ASSIGN\n }\n })\n\n const productDetails: ProductDetail[] = product.productDetails\n\n let totalUnassignReleaseQty: number = 0\n if (pendingAssignOPs?.length) {\n totalUnassignReleaseQty = pendingAssignOPs.reduce((total, currentValue) => {\n total += currentValue.releaseQty\n return total\n }, 0)\n }\n\n let qb = await this.trxMgr.getRepository(Inventory).createQueryBuilder('inv')\n qb.leftJoinAndSelect('inv.location', 'loc')\n .andWhere('\"inv\".\"domain_id\" = :domainId')\n .andWhere('\"inv\".\"product_id\" = :productId')\n .andWhere('\"inv\".\"bizplace_id\" = :bizplaceId')\n .andWhere('\"inv\".\"status\" != :status')\n .andWhere('\"loc\".\"type\" NOT IN (:...locationTypes)')\n .setParameters({\n domainId: this.domain.id,\n productId: product.id,\n bizplaceId: orderProduct.bizplace.id,\n status: INVENTORY_STATUS.TERMINATED,\n locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]\n })\n\n let inventories: Inventory[] = await qb.getMany()\n\n let defaultProductDetail: ProductDetail\n const sellercraftInvs: any[] = await Promise.all(\n inventories.map(async (inventory: Inventory) => {\n const inventoryPackingType: string = inventory.packingType\n defaultProductDetail = product.productDetails.find(productDetail => productDetail.isDefault)\n\n let packingSize: number = 1\n if (inventoryPackingType !== defaultProductDetail.packingType) {\n const unmatchingProductDetail: ProductDetail = product.productDetails.find(\n productDetail => productDetail.packingType === inventoryPackingType\n )\n\n packingSize = await this.getChildPackingSize(productDetails, defaultProductDetail, unmatchingProductDetail)\n if (packingSize == 0) packingSize = 1\n }\n\n return { totalQty: inventory.qty * packingSize, totalLockedQty: inventory.lockedQty * packingSize }\n })\n )\n\n let inventoryTotalQty: number = sellercraftInvs.reduce((total, currentValue) => {\n total += currentValue.totalQty\n return total\n }, 0)\n\n let inventoryTotalLockedQty: number = sellercraftInvs.reduce((total, currentValue) => {\n total += currentValue.totalLockedQty\n return total\n }, 0)\n\n switch (type) {\n case 'CONFIRM_ORDER':\n inventoryTotalQty -= totalUnassignReleaseQty\n break\n }\n\n const sellercraftInv: any[] = [\n {\n sku: product.sku,\n gtin: defaultProductDetail.gtin,\n stock: {\n quantity_total: inventoryTotalQty,\n quantity_reserved: inventoryTotalLockedQty,\n unit_of_measure: 'EA'\n },\n package_weight_gm: defaultProductDetail.nettWeight < 1 ? 1 : defaultProductDetail.nettWeight,\n package_dimensions: {\n length_mm: defaultProductDetail.depth < 1 ? 1 : defaultProductDetail.depth,\n width_mm: defaultProductDetail.width < 1 ? 1 : defaultProductDetail.width,\n height_mm: defaultProductDetail.height < 1 ? 1 : defaultProductDetail.height\n }\n }\n ]\n\n await SellercraftAPI.updateProduct(sellercraft, {\n context: { state: { domain: this?.domain, user: this?.user } },\n accountId: sellercraft.accountId,\n sellercraftInv\n })\n }\n }\n\n async checkExistingReleaseGood(sellercraft: Sellercraft, releaseGood: ReleaseGood): Promise<void> {\n const { refNo, refNo2 } = releaseGood\n\n const sellercraftDomain: Domain = await this.trxMgr.getRepository(Domain).findOne({\n where: { id: sellercraft.domainId }\n })\n\n const customerBizplace: Bizplace = await this.trxMgr.getRepository(Bizplace).findOne({\n where: { domain: sellercraftDomain }\n })\n\n const foundReleaseGood: ReleaseGood = await this.trxMgr.getRepository(ReleaseGood).findOne({\n where: { bizplace: customerBizplace, refNo, refNo2 }\n })\n\n if (foundReleaseGood)\n throw new Error(\n 'Existing release order found, kindly use update release order API if you tend to update the order information'\n )\n }\n}\n"]}
1
+ {"version":3,"file":"sellercraft-controller.js","sourceRoot":"","sources":["../../../server/controllers/ecommerce/sellercraft-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { Sellercraft, SellercraftAPI } from '@things-factory/integration-sellercraft'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, INVENTORY_STATUS, LOCATION_TYPE } from '@things-factory/warehouse-base'\n\nimport { ORDER_PRODUCT_STATUS } from '../../constants'\nimport { OrderProduct } from '../../service/order-product/order-product'\nimport { ReleaseGood } from '../../service/release-good/release-good'\nimport { OrderController } from '../order-controller'\n\nexport class SellercraftController extends OrderController {\n async packOrder(sellercraft: Sellercraft, releaseGood: ReleaseGood): Promise<ReleaseGood> {\n let sellercraftSetting: any = sellercraft.sellercraftSetting\n let disablePackOrder: boolean =\n sellercraftSetting?.disablePackOrder && sellercraftSetting?.disablePackOrder == 1 ? true : false\n\n if (!disablePackOrder) {\n const orderProducts: OrderProduct[] = releaseGood.orderProducts\n let sellercraftOPs: any[] = []\n\n sellercraftOPs = orderProducts.map(orderProduct => {\n const product: Product = orderProduct.product\n\n return {\n sku: product.sku,\n releaseQty: orderProduct.releaseQty,\n uom: 'EA'\n }\n })\n\n const orderInformation: any = {\n accountId: sellercraft.accountId,\n orderId: releaseGood.refNo2,\n sellercraftOPs\n }\n const packageId: string = await SellercraftAPI.packMarketplaceOrder(sellercraft, {\n ...orderInformation,\n context: { state: { domain: this?.domain, user: this?.user } }\n })\n\n releaseGood.packageId = packageId\n releaseGood.updater = this.user\n }\n\n return releaseGood\n }\n\n async updateSellercraftStock(sellercraft: Sellercraft, orderProducts: OrderProduct[], type: string): Promise<void> {\n let sellercraftSetting: any = sellercraft.sellercraftSetting\n let disableUpdateStock: boolean =\n sellercraftSetting?.disableUpdateStock && sellercraftSetting?.disableUpdateStock == 1 ? true : false\n\n if (!disableUpdateStock) {\n for (var i = 0; i < orderProducts.length; i++) {\n const orderProduct: OrderProduct = orderProducts[i]\n\n const product: Product = orderProduct.product\n const pendingAssignOPs: OrderProduct[] = await this.trxMgr.getRepository(OrderProduct).find({\n where: {\n domain: this.domain,\n bizplace: orderProduct.bizplace,\n product,\n status: ORDER_PRODUCT_STATUS.PENDING_ASSIGN\n }\n })\n\n const productDetails: ProductDetail[] = product.productDetails\n\n let totalUnassignReleaseQty: number = 0\n if (pendingAssignOPs?.length) {\n totalUnassignReleaseQty = pendingAssignOPs.reduce((total, currentValue) => {\n total += currentValue.releaseQty\n return total\n }, 0)\n }\n\n let qb = await this.trxMgr.getRepository(Inventory).createQueryBuilder('inv')\n qb.leftJoinAndSelect('inv.location', 'loc')\n .andWhere('\"inv\".\"domain_id\" = :domainId')\n .andWhere('\"inv\".\"product_id\" = :productId')\n .andWhere('\"inv\".\"bizplace_id\" = :bizplaceId')\n .andWhere('\"inv\".\"status\" = :status')\n .andWhere('\"loc\".\"type\" NOT IN (:...locationTypes)')\n .setParameters({\n domainId: this.domain.id,\n productId: product.id,\n bizplaceId: orderProduct.bizplace.id,\n status: INVENTORY_STATUS.STORED,\n locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]\n })\n\n let inventories: Inventory[] = await qb.getMany()\n\n let defaultProductDetail: ProductDetail\n const sellercraftInvs: any[] = await Promise.all(\n inventories.map(async (inventory: Inventory) => {\n const inventoryPackingType: string = inventory.packingType\n defaultProductDetail = product.productDetails.find(productDetail => productDetail.isDefault)\n\n let packingSize: number = 1\n if (inventoryPackingType !== defaultProductDetail.packingType) {\n const unmatchingProductDetail: ProductDetail = product.productDetails.find(\n productDetail => productDetail.packingType === inventoryPackingType\n )\n\n packingSize = await this.getChildPackingSize(\n productDetails,\n defaultProductDetail,\n unmatchingProductDetail\n )\n if (packingSize == 0) packingSize = 1\n }\n\n return { totalQty: inventory.qty * packingSize, totalLockedQty: inventory.lockedQty * packingSize }\n })\n )\n\n let inventoryTotalQty: number = sellercraftInvs.reduce((total, currentValue) => {\n total += currentValue.totalQty\n return total\n }, 0)\n\n let inventoryTotalLockedQty: number = sellercraftInvs.reduce((total, currentValue) => {\n total += currentValue.totalLockedQty\n return total\n }, 0)\n\n switch (type) {\n case 'CONFIRM_ORDER':\n inventoryTotalQty -= totalUnassignReleaseQty\n break\n }\n\n const sellercraftInv: any[] = [\n {\n sku: product.sku,\n gtin: defaultProductDetail.gtin,\n stock: {\n quantity_total: inventoryTotalQty,\n quantity_reserved: inventoryTotalLockedQty,\n unit_of_measure: 'EA'\n },\n package_weight_gm: defaultProductDetail.nettWeight < 1 ? 1 : defaultProductDetail.nettWeight,\n package_dimensions: {\n length_mm: defaultProductDetail.depth < 1 ? 1 : defaultProductDetail.depth,\n width_mm: defaultProductDetail.width < 1 ? 1 : defaultProductDetail.width,\n height_mm: defaultProductDetail.height < 1 ? 1 : defaultProductDetail.height\n }\n }\n ]\n\n await SellercraftAPI.updateProduct(sellercraft, {\n context: { state: { domain: this?.domain, user: this?.user } },\n accountId: sellercraft.accountId,\n sellercraftInv\n })\n }\n }\n }\n\n async checkExistingReleaseGood(sellercraft: Sellercraft, releaseGood: ReleaseGood): Promise<void> {\n const { refNo, refNo2 } = releaseGood\n\n const sellercraftDomain: Domain = await this.trxMgr.getRepository(Domain).findOne({\n where: { id: sellercraft.domainId }\n })\n\n const customerBizplace: Bizplace = await this.trxMgr.getRepository(Bizplace).findOne({\n where: { domain: sellercraftDomain }\n })\n\n const foundReleaseGood: ReleaseGood = await this.trxMgr.getRepository(ReleaseGood).findOne({\n where: { bizplace: customerBizplace, refNo, refNo2 }\n })\n\n if (foundReleaseGood)\n throw new Error(\n 'Existing release order found, kindly use update release order API if you tend to update the order information'\n )\n }\n}\n"]}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OrderController = exports.OrderTargetFields = exports.ReferenceOrderFields = void 0;
4
4
  const auth_base_1 = require("@things-factory/auth-base");
5
5
  const biz_base_1 = require("@things-factory/biz-base");
6
- const notification_1 = require("@things-factory/notification");
7
6
  const warehouse_base_1 = require("@things-factory/warehouse-base");
8
7
  const service_1 = require("../service");
9
8
  var ReferenceOrderFields;
@@ -125,10 +124,13 @@ class OrderController {
125
124
  */
126
125
  async notifyToUsers(users, message) {
127
126
  const receivers = users.map(user => user.id);
128
- await (0, notification_1.sendNotification)({
129
- receivers,
130
- message
131
- });
127
+ /**
128
+ * @notes Temporary off sendNotification due to suspect of causing wms down
129
+ */
130
+ // await sendNotification({
131
+ // receivers,
132
+ // message
133
+ // })
132
134
  }
133
135
  /**
134
136
  * @summary Notify to office admin
@@ -1 +1 @@
1
- {"version":3,"file":"order-controller.js","sourceRoot":"","sources":["../../server/controllers/order-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, EntitySchema, FindOneOptions } from 'typeorm'\n\nimport { Role, User } from '@things-factory/auth-base'\nimport { Bizplace, getDomainUsers } from '@things-factory/biz-base'\nimport { sendNotification } from '@things-factory/notification'\nimport { ProductDetail } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport {\n ArrivalNotice,\n DeliveryOrder,\n InventoryCheck,\n OrderInventory,\n OrderProduct,\n OrderVas,\n ReleaseGood,\n ReturnOrder,\n VasOrder\n} from '../service'\n\nexport type ReferenceOrderType = ArrivalNotice | ReleaseGood | VasOrder | InventoryCheck | DeliveryOrder | ReturnOrder\nexport type OrderTargetTypes = OrderProduct | OrderInventory | OrderVas\n\nexport enum ReferenceOrderFields {\n ArrivalNotice = 'arrivalNotice',\n ReleaseGood = 'releaseGood',\n VasOrder = 'vasOrder',\n InventoryCheck = 'inventoryCheck',\n ReturnOrder = 'returnOrder'\n}\n\nexport enum OrderTargetFields {\n OrderProduct = 'targetProduct',\n OrderInventory = 'targetInventory',\n OrderVas = 'targetVas'\n}\n\nexport interface BasicInterface {\n domain: Domain\n user: User\n}\n\nexport type NotificationMsgInterface = {\n title: string\n body: string\n url: string\n data: any\n}\n\nexport class OrderController {\n public readonly ERROR_MSG = {\n FIND: {\n NO_RESULT: (condition: any) => `There's no results matched with condition ${condition}`,\n NO_CHILD_RESULT: (condition: any) => `There's no child result matched with condition ${condition}`,\n NOT_MATCH: (source: any, target: any) => `Unable to find matching ${target} using ${source}`\n },\n CREATE: {\n ID_EXISTS: 'Target has ID already',\n EMPTY_CREATOR: 'Cannot create without creator',\n EMPTY_UPDATER: 'Cannot create without updater'\n },\n UPDATE: {\n ID_NOT_EXISTS: `Target doesn't have ID`,\n EMPTY_UPDATER: 'Cannot update without updater'\n },\n VALIDITY: {\n UNEXPECTED_FIELD_VALUE: (field: string, expectedValue: any, actualValue: any) =>\n `Expected ${field} value is ${expectedValue} but got ${actualValue}`,\n DUPLICATED: (field: string, value: any) => `There is duplicated ${field} value (${value})`,\n CANT_PROCEED_STEP_BY: (step: string, reason: string) => `Can't proceed to ${step} it because ${reason}`\n }\n }\n\n private readonly ROLE_NAMES: Record<string, string> = {\n OFFICE_ADMIN: 'Office Admin'\n }\n\n protected trxMgr: EntityManager\n protected domain: Domain\n protected user: User\n\n constructor(trxMgr: EntityManager, domain: Domain, user: User) {\n this.trxMgr = trxMgr\n this.domain = domain\n this.user = user\n }\n\n private getRefOrderField(refOrder: ReferenceOrderType): string {\n if (refOrder instanceof ArrivalNotice) {\n return ReferenceOrderFields.ArrivalNotice\n } else if (refOrder instanceof ReleaseGood) {\n return ReferenceOrderFields.ReleaseGood\n } else if (refOrder instanceof VasOrder) {\n return ReferenceOrderFields.VasOrder\n } else if (refOrder instanceof InventoryCheck) {\n return ReferenceOrderFields.InventoryCheck\n } else if (refOrder instanceof ReturnOrder) {\n return ReferenceOrderFields.ReturnOrder\n } else {\n throw new Error(\n this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('refOrder', 'One of reference order type', refOrder)\n )\n }\n }\n\n private getOrderTargetField(orderTarget: OrderTargetTypes): string {\n if (orderTarget instanceof OrderProduct) {\n return OrderTargetFields.OrderProduct\n } else if (orderTarget instanceof OrderInventory) {\n return OrderTargetFields.OrderInventory\n } else if (orderTarget instanceof OrderVas) {\n return OrderTargetFields.OrderVas\n } else {\n this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('orderTarget', 'One of order target type', orderTarget)\n }\n }\n\n /**\n * @summary Find reference order (ArrivalNotice, ReleaseGood, VasOrder, etc...)\n * @description\n * Find and return reference order with its relations based on passed condition & reltaions\n */\n async findRefOrder(\n entitySchema: EntitySchema,\n condition: Partial<ReferenceOrderType>,\n relations?: string[]\n ): Promise<ReferenceOrderType> {\n condition = this.tidyConditions(condition)\n let findOption: FindOneOptions = { where: condition }\n if (relations?.length > 0) findOption.relations = relations\n\n const refOrder: ReferenceOrderType = await this.trxMgr.getRepository(entitySchema).findOne(findOption)\n if (!refOrder) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(findOption))\n\n return refOrder\n }\n\n /**\n * @summary Valitiy checker\n * @description It will try to check whether passed record has same properties with passed conditions\n * Basically it will check equality of value\n * If you want to check advanced validation you can pass function to customize the logic of validation\n * Passed function will be call with actual value of record as parameter\n */\n checkRecordValidity(record: Record<string, any>, conditions: Record<string, any>): void {\n for (let field in conditions) {\n let isValid: boolean = false\n if (typeof conditions[field] === 'function') {\n isValid = conditions[field](record[field])\n } else {\n isValid = conditions[field] === record[field]\n }\n\n if (!isValid)\n throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE(field, conditions[field], record[field]))\n }\n }\n\n /**\n * @summary Notify to passed users\n * @description Passed notification message will be sent to passed users\n */\n async notifyToUsers(users: User[], message: NotificationMsgInterface): Promise<void> {\n const receivers: any[] = users.map(user => user.id)\n await sendNotification({\n receivers,\n message\n })\n }\n\n /**\n * @summary Notify to office admin\n * @description Passed notification message will be sent to office admin of current domain\n * default role name is defiend as ROLE_NAME.OFFICE_ADMIn by default\n * You can change role name by passing roleName as parameter\n */\n async notifyToOfficeAdmin(message: NotificationMsgInterface, roleName?: string): Promise<void> {\n const users: User[] = await this.trxMgr\n .getRepository('users_roles')\n .createQueryBuilder('ur')\n .select('ur.users_id', 'id')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .select('role.id')\n .from(Role, 'role')\n .where('role.name = :roleName', { roleName: roleName || this.ROLE_NAMES.OFFICE_ADMIN })\n .andWhere('role.domain_id = :domainId', { domainId: this.domain.id })\n .getQuery()\n return 'ur.roles_id IN ' + subQuery\n })\n .getRawMany()\n\n this.notifyToUsers(users, message)\n }\n\n /**\n * @summary Notify to customer of passed bizplace\n * @description Passed notification message will be sent to customer of passed bizplace\n */\n async notifyToCustomer(bizplace: Bizplace, message: NotificationMsgInterface): Promise<void> {\n const users: any[] = await getDomainUsers(bizplace, this.trxMgr)\n\n this.notifyToUsers(users, message)\n }\n\n async createInventory(inventory: Partial<Inventory> | Partial<Inventory>[]): Promise<Inventory | Inventory[]> {\n inventory = this.setStamp(inventory)\n return await this.trxMgr.getRepository(Inventory).save(inventory)\n }\n\n /**\n * @summary Update inventory record\n * @description It will update inventory after set a stamp (domain, updater)\n * The special point of this function is that this changes won't generate inventory history\n * If you want to generate inventory history automatically you would better to use transactionInventory function\n */\n async updateInventory(inventory: Partial<Inventory> | Partial<Inventory>[]): Promise<Inventory | Inventory[]> {\n if (!inventory.id) throw new Error(this.ERROR_MSG.UPDATE.ID_NOT_EXISTS)\n inventory = this.setStamp(inventory)\n return await this.trxMgr.getRepository(Inventory).save(inventory)\n }\n\n async getChildPackingSize(\n productDetails: ProductDetail[],\n defaultProductDetail: ProductDetail,\n unmatchingProductDetail: ProductDetail\n ): Promise<number> {\n let hasChildRelation: boolean = Boolean(unmatchingProductDetail?.childProductDetail)\n let hasMatchingChild: boolean\n let packingSize: number = 1\n let currentChildProductDetail: ProductDetail\n\n if (hasChildRelation) {\n currentChildProductDetail = productDetails.find(\n (productDetail: ProductDetail) => productDetail.id === unmatchingProductDetail.childProductDetail.id\n )\n\n if (!currentChildProductDetail) {\n throw new Error(this.ERROR_MSG.FIND.NOT_MATCH('packing type', `GTIN (${unmatchingProductDetail.gtin})`))\n }\n\n hasMatchingChild = Boolean(defaultProductDetail.id === currentChildProductDetail.id)\n if (hasMatchingChild) {\n packingSize = unmatchingProductDetail.packingSize\n } else {\n packingSize = unmatchingProductDetail.packingSize * packingSize\n }\n } else {\n throw new Error(this.ERROR_MSG.FIND.NO_CHILD_RESULT(`${unmatchingProductDetail.gtin}`))\n }\n\n while (hasChildRelation && !hasMatchingChild) {\n if (hasMatchingChild) {\n packingSize = currentChildProductDetail.packingSize * packingSize // 12 x 10\n } else if (!hasMatchingChild && hasChildRelation) {\n packingSize = currentChildProductDetail.packingSize * packingSize // 12 x 10\n currentChildProductDetail = productDetails.find(\n (productDetail: ProductDetail) => productDetail.id === currentChildProductDetail.childProductDetail.id\n )\n\n hasChildRelation = Boolean(currentChildProductDetail?.childProductDetail)\n hasMatchingChild = Boolean(defaultProductDetail.id === currentChildProductDetail.id)\n } else if (!hasChildRelation && !hasMatchingChild) {\n throw new Error(this.ERROR_MSG.FIND.NO_RESULT(unmatchingProductDetail.gtin))\n }\n }\n\n return packingSize\n }\n\n /**\n * @summary set common stamp like domain, creator, updater\n * @description Set common stamp to passed record\n * If it doesn't have id it will handle it as creating one\n * If it has id it will handle it as updating one\n */\n setStamp(record: Record<string, any>): Record<string, any> {\n if (!record.domain) record.domain = this.domain\n if (!record.id && !record.creator) record.creator = this.user\n if (!record.updater) record.updater = this.user\n\n return record\n }\n\n tidyConditions(record: Record<string, any>): Record<string, any> {\n Object.keys(record).forEach((key: string) => {\n if (record[key] === null || record[key] instanceof Date || Array.isArray(record[key])) delete record[key]\n })\n\n return record\n }\n}\n"]}
1
+ {"version":3,"file":"order-controller.js","sourceRoot":"","sources":["../../server/controllers/order-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, EntitySchema, FindOneOptions } from 'typeorm'\n\nimport { Role, User } from '@things-factory/auth-base'\nimport { Bizplace, getDomainUsers } from '@things-factory/biz-base'\nimport { ProductDetail } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport {\n ArrivalNotice,\n DeliveryOrder,\n InventoryCheck,\n OrderInventory,\n OrderProduct,\n OrderVas,\n ReleaseGood,\n ReturnOrder,\n VasOrder\n} from '../service'\n\nexport type ReferenceOrderType = ArrivalNotice | ReleaseGood | VasOrder | InventoryCheck | DeliveryOrder | ReturnOrder\nexport type OrderTargetTypes = OrderProduct | OrderInventory | OrderVas\n\nexport enum ReferenceOrderFields {\n ArrivalNotice = 'arrivalNotice',\n ReleaseGood = 'releaseGood',\n VasOrder = 'vasOrder',\n InventoryCheck = 'inventoryCheck',\n ReturnOrder = 'returnOrder'\n}\n\nexport enum OrderTargetFields {\n OrderProduct = 'targetProduct',\n OrderInventory = 'targetInventory',\n OrderVas = 'targetVas'\n}\n\nexport interface BasicInterface {\n domain: Domain\n user: User\n}\n\nexport type NotificationMsgInterface = {\n title: string\n body: string\n url: string\n data: any\n}\n\nexport class OrderController {\n public readonly ERROR_MSG = {\n FIND: {\n NO_RESULT: (condition: any) => `There's no results matched with condition ${condition}`,\n NO_CHILD_RESULT: (condition: any) => `There's no child result matched with condition ${condition}`,\n NOT_MATCH: (source: any, target: any) => `Unable to find matching ${target} using ${source}`\n },\n CREATE: {\n ID_EXISTS: 'Target has ID already',\n EMPTY_CREATOR: 'Cannot create without creator',\n EMPTY_UPDATER: 'Cannot create without updater'\n },\n UPDATE: {\n ID_NOT_EXISTS: `Target doesn't have ID`,\n EMPTY_UPDATER: 'Cannot update without updater'\n },\n VALIDITY: {\n UNEXPECTED_FIELD_VALUE: (field: string, expectedValue: any, actualValue: any) =>\n `Expected ${field} value is ${expectedValue} but got ${actualValue}`,\n DUPLICATED: (field: string, value: any) => `There is duplicated ${field} value (${value})`,\n CANT_PROCEED_STEP_BY: (step: string, reason: string) => `Can't proceed to ${step} it because ${reason}`\n }\n }\n\n private readonly ROLE_NAMES: Record<string, string> = {\n OFFICE_ADMIN: 'Office Admin'\n }\n\n protected trxMgr: EntityManager\n protected domain: Domain\n protected user: User\n\n constructor(trxMgr: EntityManager, domain: Domain, user: User) {\n this.trxMgr = trxMgr\n this.domain = domain\n this.user = user\n }\n\n private getRefOrderField(refOrder: ReferenceOrderType): string {\n if (refOrder instanceof ArrivalNotice) {\n return ReferenceOrderFields.ArrivalNotice\n } else if (refOrder instanceof ReleaseGood) {\n return ReferenceOrderFields.ReleaseGood\n } else if (refOrder instanceof VasOrder) {\n return ReferenceOrderFields.VasOrder\n } else if (refOrder instanceof InventoryCheck) {\n return ReferenceOrderFields.InventoryCheck\n } else if (refOrder instanceof ReturnOrder) {\n return ReferenceOrderFields.ReturnOrder\n } else {\n throw new Error(\n this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('refOrder', 'One of reference order type', refOrder)\n )\n }\n }\n\n private getOrderTargetField(orderTarget: OrderTargetTypes): string {\n if (orderTarget instanceof OrderProduct) {\n return OrderTargetFields.OrderProduct\n } else if (orderTarget instanceof OrderInventory) {\n return OrderTargetFields.OrderInventory\n } else if (orderTarget instanceof OrderVas) {\n return OrderTargetFields.OrderVas\n } else {\n this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('orderTarget', 'One of order target type', orderTarget)\n }\n }\n\n /**\n * @summary Find reference order (ArrivalNotice, ReleaseGood, VasOrder, etc...)\n * @description\n * Find and return reference order with its relations based on passed condition & reltaions\n */\n async findRefOrder(\n entitySchema: EntitySchema,\n condition: Partial<ReferenceOrderType>,\n relations?: string[]\n ): Promise<ReferenceOrderType> {\n condition = this.tidyConditions(condition)\n let findOption: FindOneOptions = { where: condition }\n if (relations?.length > 0) findOption.relations = relations\n\n const refOrder: ReferenceOrderType = await this.trxMgr.getRepository(entitySchema).findOne(findOption)\n if (!refOrder) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(findOption))\n\n return refOrder\n }\n\n /**\n * @summary Valitiy checker\n * @description It will try to check whether passed record has same properties with passed conditions\n * Basically it will check equality of value\n * If you want to check advanced validation you can pass function to customize the logic of validation\n * Passed function will be call with actual value of record as parameter\n */\n checkRecordValidity(record: Record<string, any>, conditions: Record<string, any>): void {\n for (let field in conditions) {\n let isValid: boolean = false\n if (typeof conditions[field] === 'function') {\n isValid = conditions[field](record[field])\n } else {\n isValid = conditions[field] === record[field]\n }\n\n if (!isValid)\n throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE(field, conditions[field], record[field]))\n }\n }\n\n /**\n * @summary Notify to passed users\n * @description Passed notification message will be sent to passed users\n */\n async notifyToUsers(users: User[], message: NotificationMsgInterface): Promise<void> {\n const receivers: any[] = users.map(user => user.id)\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n // await sendNotification({\n // receivers,\n // message\n // })\n }\n\n /**\n * @summary Notify to office admin\n * @description Passed notification message will be sent to office admin of current domain\n * default role name is defiend as ROLE_NAME.OFFICE_ADMIn by default\n * You can change role name by passing roleName as parameter\n */\n async notifyToOfficeAdmin(message: NotificationMsgInterface, roleName?: string): Promise<void> {\n const users: User[] = await this.trxMgr\n .getRepository('users_roles')\n .createQueryBuilder('ur')\n .select('ur.users_id', 'id')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .select('role.id')\n .from(Role, 'role')\n .where('role.name = :roleName', { roleName: roleName || this.ROLE_NAMES.OFFICE_ADMIN })\n .andWhere('role.domain_id = :domainId', { domainId: this.domain.id })\n .getQuery()\n return 'ur.roles_id IN ' + subQuery\n })\n .getRawMany()\n\n this.notifyToUsers(users, message)\n }\n\n /**\n * @summary Notify to customer of passed bizplace\n * @description Passed notification message will be sent to customer of passed bizplace\n */\n async notifyToCustomer(bizplace: Bizplace, message: NotificationMsgInterface): Promise<void> {\n const users: any[] = await getDomainUsers(bizplace, this.trxMgr)\n\n this.notifyToUsers(users, message)\n }\n\n async createInventory(inventory: Partial<Inventory> | Partial<Inventory>[]): Promise<Inventory | Inventory[]> {\n inventory = this.setStamp(inventory)\n return await this.trxMgr.getRepository(Inventory).save(inventory)\n }\n\n /**\n * @summary Update inventory record\n * @description It will update inventory after set a stamp (domain, updater)\n * The special point of this function is that this changes won't generate inventory history\n * If you want to generate inventory history automatically you would better to use transactionInventory function\n */\n async updateInventory(inventory: Partial<Inventory> | Partial<Inventory>[]): Promise<Inventory | Inventory[]> {\n if (!inventory.id) throw new Error(this.ERROR_MSG.UPDATE.ID_NOT_EXISTS)\n inventory = this.setStamp(inventory)\n return await this.trxMgr.getRepository(Inventory).save(inventory)\n }\n\n async getChildPackingSize(\n productDetails: ProductDetail[],\n defaultProductDetail: ProductDetail,\n unmatchingProductDetail: ProductDetail\n ): Promise<number> {\n let hasChildRelation: boolean = Boolean(unmatchingProductDetail?.childProductDetail)\n let hasMatchingChild: boolean\n let packingSize: number = 1\n let currentChildProductDetail: ProductDetail\n\n if (hasChildRelation) {\n currentChildProductDetail = productDetails.find(\n (productDetail: ProductDetail) => productDetail.id === unmatchingProductDetail.childProductDetail.id\n )\n\n if (!currentChildProductDetail) {\n throw new Error(this.ERROR_MSG.FIND.NOT_MATCH('packing type', `GTIN (${unmatchingProductDetail.gtin})`))\n }\n\n hasMatchingChild = Boolean(defaultProductDetail.id === currentChildProductDetail.id)\n if (hasMatchingChild) {\n packingSize = unmatchingProductDetail.packingSize\n } else {\n packingSize = unmatchingProductDetail.packingSize * packingSize\n }\n } else {\n throw new Error(this.ERROR_MSG.FIND.NO_CHILD_RESULT(`${unmatchingProductDetail.gtin}`))\n }\n\n while (hasChildRelation && !hasMatchingChild) {\n if (hasMatchingChild) {\n packingSize = currentChildProductDetail.packingSize * packingSize // 12 x 10\n } else if (!hasMatchingChild && hasChildRelation) {\n packingSize = currentChildProductDetail.packingSize * packingSize // 12 x 10\n currentChildProductDetail = productDetails.find(\n (productDetail: ProductDetail) => productDetail.id === currentChildProductDetail.childProductDetail.id\n )\n\n hasChildRelation = Boolean(currentChildProductDetail?.childProductDetail)\n hasMatchingChild = Boolean(defaultProductDetail.id === currentChildProductDetail.id)\n } else if (!hasChildRelation && !hasMatchingChild) {\n throw new Error(this.ERROR_MSG.FIND.NO_RESULT(unmatchingProductDetail.gtin))\n }\n }\n\n return packingSize\n }\n\n /**\n * @summary set common stamp like domain, creator, updater\n * @description Set common stamp to passed record\n * If it doesn't have id it will handle it as creating one\n * If it has id it will handle it as updating one\n */\n setStamp(record: Record<string, any>): Record<string, any> {\n if (!record.domain) record.domain = this.domain\n if (!record.id && !record.creator) record.creator = this.user\n if (!record.updater) record.updater = this.user\n\n return record\n }\n\n tidyConditions(record: Record<string, any>): Record<string, any> {\n Object.keys(record).forEach((key: string) => {\n if (record[key] === null || record[key] instanceof Date || Array.isArray(record[key])) delete record[key]\n })\n\n return record\n }\n}\n"]}