@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
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a, _b, _c;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.OtherQuery = void 0;
5
4
  const tslib_1 = require("tslib");
@@ -23,7 +22,8 @@ let OtherQuery = class OtherQuery {
23
22
  foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId);
24
23
  if (foundPermittedBizplace) {
25
24
  if (!((_a = foundPermittedBizplace.company) === null || _a === void 0 ? void 0 : _a.id)) {
26
- foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(foundPermittedBizplace.id, {
25
+ foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
26
+ where: { id: foundPermittedBizplace.id },
27
27
  relations: ['company', 'company.domain']
28
28
  });
29
29
  }
@@ -48,7 +48,8 @@ let OtherQuery = class OtherQuery {
48
48
  foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId);
49
49
  if (foundPermittedBizplace) {
50
50
  if (!((_a = foundPermittedBizplace.company) === null || _a === void 0 ? void 0 : _a.id)) {
51
- foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(foundPermittedBizplace.id, {
51
+ foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
52
+ where: { id: foundPermittedBizplace.id },
52
53
  relations: ['company', 'company.domain']
53
54
  });
54
55
  }
@@ -73,7 +74,8 @@ let OtherQuery = class OtherQuery {
73
74
  foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId);
74
75
  if (foundPermittedBizplace) {
75
76
  if (!((_a = foundPermittedBizplace.company) === null || _a === void 0 ? void 0 : _a.id)) {
76
- foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(foundPermittedBizplace.id, {
77
+ foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
78
+ where: { id: foundPermittedBizplace.id },
77
79
  relations: ['company', 'company.domain']
78
80
  });
79
81
  }
@@ -103,7 +105,8 @@ let OtherQuery = class OtherQuery {
103
105
  foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId);
104
106
  if (foundPermittedBizplace) {
105
107
  if (!((_a = foundPermittedBizplace.company) === null || _a === void 0 ? void 0 : _a.id)) {
106
- foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(foundPermittedBizplace.id, {
108
+ foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
109
+ where: { id: foundPermittedBizplace.id },
107
110
  relations: ['company', 'company.domain']
108
111
  });
109
112
  }
@@ -135,36 +138,49 @@ let OtherQuery = class OtherQuery {
135
138
  filters: [...filters]
136
139
  };
137
140
  const { items, total } = await utils_1.InventoryUtil.bizplaceInventoryProductGroup(bizplaces, params, context, tx);
138
- let packageUomValue = total > 0 ? items[0].remainUomValue / items[0].remainQty : null;
141
+ // Filter to find for item with enough remain qty
142
+ const availableItems = items.filter(item => item.remainQty >= orderInventory.releaseQty);
143
+ let availableItem;
144
+ if (availableItems.length > 0) {
145
+ availableItem = availableItems[0];
146
+ }
147
+ let packageUomValue = availableItem ? availableItem.remainUomValue / availableItem.remainQty : null;
139
148
  const newOrderInventory = {
140
- product: total > 0 ? { id: items[0].productId, sku: items[0].productSKU, name: items[0].productName } : { id: null },
141
- inventory: total > 0
142
- ? Object.assign(Object.assign({}, items[0]), { remainQty: total > 0 ? items[0].remainQty : null, remainUomValue: total > 0 ? items[0].remainUomValue : null, remainUomValueWithUom: total > 0 ? items[0].remainUomValueWithUom : '' }) : null,
143
- productId: total > 0 ? items[0].productId : null,
144
- productSKU: total > 0 ? items[0].productSKU : orderInventory.productSKU,
145
- productName: total > 0 ? items[0].productName : null,
146
- uom: total > 0 ? items[0].uom : null,
147
- remainQty: total > 0 ? items[0].remainQty : null,
148
- remainUomValue: total > 0 ? items[0].remainUomValue : null,
149
- remainUomValueWithUom: total > 0 ? items[0].remainUomValueWithUom : '',
150
- batchId: total > 0 ? items[0].batchId : null,
151
- batchIdRef: total > 0 ? items[0].batchIdRef : null,
152
- packingType: total > 0 ? items[0].packingType : orderInventory.packingType,
153
- packingSize: total > 0 ? items[0].packingSize : 1,
149
+ product: availableItem
150
+ ? {
151
+ id: availableItem.productId,
152
+ sku: availableItem.productSKU,
153
+ name: availableItem.productName
154
+ }
155
+ : { id: null },
156
+ inventory: availableItem
157
+ ? Object.assign(Object.assign({}, availableItem), { remainQty: availableItem ? availableItem.remainQty : null, remainUomValue: availableItem ? availableItem.remainUomValue : null, remainUomValueWithUom: availableItem ? availableItem.remainUomValueWithUom : '' }) : null,
158
+ productId: availableItem ? availableItem.productId : null,
159
+ productSKU: availableItem ? availableItem.productSKU : orderInventory.productSKU,
160
+ productName: availableItem ? availableItem.productName : null,
161
+ uom: availableItem ? availableItem.uom : null,
162
+ remainQty: availableItem ? availableItem.remainQty : null,
163
+ remainUomValue: availableItem ? availableItem.remainUomValue : null,
164
+ remainUomValueWithUom: availableItem ? availableItem.remainUomValueWithUom : '',
165
+ batchId: availableItem ? availableItem.batchId : null,
166
+ batchIdRef: availableItem ? availableItem.batchIdRef : null,
167
+ packingType: availableItem ? availableItem.packingType : orderInventory.packingType,
168
+ packingSize: availableItem ? availableItem.packingSize : 1,
154
169
  releaseQty: orderInventory.releaseQty
155
170
  ? Number.isInteger(orderInventory.releaseQty)
156
171
  ? orderInventory.releaseQty
157
172
  : null
158
173
  : null,
159
- releaseUomValue: total > 0
174
+ releaseUomValue: availableItem
160
175
  ? Number.isInteger(orderInventory.releaseQty)
161
176
  ? parseFloat((orderInventory.releaseQty * packageUomValue).toFixed(2))
162
177
  : null
163
178
  : null,
164
- groupType: total > 0 ? items[0].groupType : null,
165
- isError: total <= 0 ? true : false
179
+ groupType: availableItem ? availableItem.groupType : null,
180
+ isError: !availableItem ? true : false
166
181
  };
167
182
  newOrderInventories.push(newOrderInventory);
183
+ // end loop
168
184
  }
169
185
  try {
170
186
  await utils_1.InventoryUtil.validateWarehousePartnersProductsQuantity(domain, partnerBizplace, newOrderInventories, context, tx);
@@ -203,7 +219,8 @@ let OtherQuery = class OtherQuery {
203
219
  foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId);
204
220
  if (foundPermittedBizplace) {
205
221
  if (!((_a = foundPermittedBizplace.company) === null || _a === void 0 ? void 0 : _a.id)) {
206
- foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(foundPermittedBizplace.id, {
222
+ foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
223
+ where: { id: foundPermittedBizplace.id },
207
224
  relations: ['domain', 'company', 'company.domain']
208
225
  });
209
226
  }
@@ -216,7 +233,7 @@ let OtherQuery = class OtherQuery {
216
233
  bizplaces.push(bizplace);
217
234
  let strictProduct = false;
218
235
  const strictProductSelectionSetting = await tx.getRepository(setting_base_1.Setting).findOne({
219
- where: { domain, category: 'id-rule', name: 'strict-product-selection' }
236
+ where: { domain: { id: domain.id }, category: 'id-rule', name: 'strict-product-selection' }
220
237
  });
221
238
  if (strictProductSelectionSetting)
222
239
  strictProduct = strictProductSelectionSetting.value;
@@ -292,7 +309,8 @@ let OtherQuery = class OtherQuery {
292
309
  foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId);
293
310
  if (foundPermittedBizplace) {
294
311
  if (!((_a = foundPermittedBizplace.company) === null || _a === void 0 ? void 0 : _a.id)) {
295
- foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(foundPermittedBizplace.id, {
312
+ foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
313
+ where: { id: foundPermittedBizplace.id },
296
314
  relations: ['domain', 'company', 'company.domain']
297
315
  });
298
316
  }
@@ -305,7 +323,7 @@ let OtherQuery = class OtherQuery {
305
323
  bizplaces.push(bizplace);
306
324
  let strictProduct = false;
307
325
  const strictProductSelectionSetting = await tx.getRepository(setting_base_1.Setting).findOne({
308
- where: { domain, category: 'id-rule', name: 'strict-product-selection' }
326
+ where: { domain: { id: domain.id }, category: 'id-rule', name: 'strict-product-selection' }
309
327
  });
310
328
  if (strictProductSelectionSetting)
311
329
  strictProduct = strictProductSelectionSetting.value;
@@ -378,7 +396,7 @@ tslib_1.__decorate([
378
396
  tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
379
397
  tslib_1.__param(1, (0, type_graphql_1.Args)()),
380
398
  tslib_1.__metadata("design:type", Function),
381
- tslib_1.__metadata("design:paramtypes", [Object, typeof (_a = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _a : Object]),
399
+ tslib_1.__metadata("design:paramtypes", [Object, shell_1.ListParam]),
382
400
  tslib_1.__metadata("design:returntype", Promise)
383
401
  ], OtherQuery.prototype, "allBizplaceProductInventory", null);
384
402
  tslib_1.__decorate([
@@ -388,7 +406,7 @@ tslib_1.__decorate([
388
406
  tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
389
407
  tslib_1.__param(1, (0, type_graphql_1.Args)()),
390
408
  tslib_1.__metadata("design:type", Function),
391
- tslib_1.__metadata("design:paramtypes", [Object, typeof (_b = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _b : Object]),
409
+ tslib_1.__metadata("design:paramtypes", [Object, shell_1.ListParam]),
392
410
  tslib_1.__metadata("design:returntype", Promise)
393
411
  ], OtherQuery.prototype, "inventoryProductGroup", null);
394
412
  tslib_1.__decorate([
@@ -397,7 +415,7 @@ tslib_1.__decorate([
397
415
  tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
398
416
  tslib_1.__param(1, (0, type_graphql_1.Args)()),
399
417
  tslib_1.__metadata("design:type", Function),
400
- tslib_1.__metadata("design:paramtypes", [Object, typeof (_c = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _c : Object]),
418
+ tslib_1.__metadata("design:paramtypes", [Object, shell_1.ListParam]),
401
419
  tslib_1.__metadata("design:returntype", Promise)
402
420
  ], OtherQuery.prototype, "inventoryProductGroupOpenAPI", null);
403
421
  tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"other-query.js","sourceRoot":"","sources":["../../../server/service/others/other-query.ts"],"names":[],"mappings":"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","sourcesContent":["import orderBy from 'lodash/orderBy'\nimport { Arg, Args, Ctx, Directive, Query, Resolver } from 'type-graphql'\nimport { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, getPermittedBizplaces } from '@things-factory/biz-base'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { PartnerSetting, Setting } from '@things-factory/setting-base'\nimport { Domain, ListParam } from '@things-factory/shell'\n\nimport {\n InventoryProductGroup,\n InventoryProductGroupList,\n NewOrderInventory,\n NewOrderProduct,\n OrderInventory,\n OrderProduct\n} from '../'\nimport { InventoryUtil } from '../../utils'\n\n@Resolver()\nexport class OtherQuery {\n @Directive('@privilege(category: \"inventory\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async allBizplaceProductInventory(\n @Ctx() context: any,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne(foundPermittedBizplace.id, {\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.bizplaceProductInventory(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async inventoryProductGroup(@Ctx() context: any, @Args() params: ListParam): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne(foundPermittedBizplace.id, {\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.bizplaceInventoryProductGroup(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async inventoryProductGroupOpenAPI(\n @Ctx() context: any,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne(foundPermittedBizplace.id, {\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.inventoryProductGroupOpenAPI(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [OrderInventory])\n async bulkUploadValidateWarehousePartnersProductsQuantity(\n @Ctx() context: any,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderInventories', type => [NewOrderInventory], { nullable: true }) orderInventories?: NewOrderInventory[]\n ): Promise<OrderInventory[]> {\n const { domain, user, tx, bizplace } = context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n const partnerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({\n where: {\n id: partnerBizplaceId\n },\n relations: ['company', 'company.domain']\n })\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne(foundPermittedBizplace.id, {\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let newOrderInventories: any[] = []\n\n for (var i = 0; i < orderInventories.length; i++) {\n const orderInventory: any = orderInventories[i]\n\n let filters: any[] = [\n {\n name: 'productName',\n operator: 'eq',\n value: orderInventory.productSKU\n }\n ]\n\n if (orderInventory?.packingType != null) {\n filters.push({\n name: 'packingType',\n operator: 'eq',\n value: orderInventory.packingType\n })\n }\n\n const params: any = {\n filters: [...filters]\n }\n\n const { items, total } = await InventoryUtil.bizplaceInventoryProductGroup(bizplaces, params, context, tx)\n\n let packageUomValue = total > 0 ? items[0].remainUomValue / items[0].remainQty : null\n\n const newOrderInventory: any = {\n product:\n total > 0 ? { id: items[0].productId, sku: items[0].productSKU, name: items[0].productName } : { id: null },\n inventory:\n total > 0\n ? {\n ...items[0],\n remainQty: total > 0 ? items[0].remainQty : null,\n remainUomValue: total > 0 ? items[0].remainUomValue : null,\n remainUomValueWithUom: total > 0 ? items[0].remainUomValueWithUom : ''\n }\n : null,\n productId: total > 0 ? items[0].productId : null,\n productSKU: total > 0 ? items[0].productSKU : orderInventory.productSKU,\n productName: total > 0 ? items[0].productName : null,\n uom: total > 0 ? items[0].uom : null,\n remainQty: total > 0 ? items[0].remainQty : null,\n remainUomValue: total > 0 ? items[0].remainUomValue : null,\n remainUomValueWithUom: total > 0 ? items[0].remainUomValueWithUom : '',\n batchId: total > 0 ? items[0].batchId : null,\n batchIdRef: total > 0 ? items[0].batchIdRef : null,\n packingType: total > 0 ? items[0].packingType : orderInventory.packingType,\n packingSize: total > 0 ? items[0].packingSize : 1,\n releaseQty: orderInventory.releaseQty\n ? Number.isInteger(orderInventory.releaseQty)\n ? orderInventory.releaseQty\n : null\n : null,\n releaseUomValue:\n total > 0\n ? Number.isInteger(orderInventory.releaseQty)\n ? parseFloat((orderInventory.releaseQty * packageUomValue).toFixed(2))\n : null\n : null,\n groupType: total > 0 ? items[0].groupType : null,\n isError: total <= 0 ? true : false\n }\n\n newOrderInventories.push(newOrderInventory)\n }\n\n try {\n await InventoryUtil.validateWarehousePartnersProductsQuantity(\n domain,\n partnerBizplace,\n newOrderInventories,\n context,\n tx\n )\n } catch (e) {\n const errorData = JSON.parse(e.detail.data)\n\n errorData.forEach(dt => {\n let idx = newOrderInventories.findIndex(\n x =>\n x.product?.id && x.product.id == dt.productId && x.batchId == dt.batchId && x.packingType == dt.packingType\n )\n\n if (idx >= 0) {\n newOrderInventories[idx].remainQty = dt.availableQty\n newOrderInventories[idx].remainUomValue = dt.availableUomValue\n newOrderInventories[idx].isError =\n dt.availableQty == null\n ? newOrderInventories[idx].releaseQty > 0\n : newOrderInventories[idx].releaseQty > dt.availableQty\n newOrderInventories[idx].remainUomValueWithUom =\n dt.availableUomValue == null ? '' : `${dt.availableUomValue} ${dt.uom}`\n if (newOrderInventories[idx].inventory != null) {\n newOrderInventories[idx].inventory.remainQty = dt.availableQty\n newOrderInventories[idx].inventory.remainUomValue = dt.availableUomValue\n newOrderInventories[idx].inventory.remainUomValueWithUom = `${dt.availableUomValue} ${dt.uom}` || ''\n }\n }\n })\n }\n\n return orderBy(newOrderInventories, ['isError'], ['desc'])\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [InventoryProductGroup])\n async bulkUploadValidateOrderProducts(\n @Ctx() context: any,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderProducts', type => [NewOrderProduct], { nullable: true }) orderProducts: NewOrderProduct[]\n ): Promise<OrderProduct[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace: Bizplace } =\n context.state\n\n const productDetailRepo = tx.getRepository(ProductDetail)\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne(foundPermittedBizplace.id, {\n relations: ['domain', 'company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let strictProduct: boolean = false\n\n const strictProductSelectionSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain, category: 'id-rule', name: 'strict-product-selection' }\n })\n\n if (strictProductSelectionSetting) strictProduct = strictProductSelectionSetting.value\n\n const partnerStrictProductSelectionSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: strictProductSelectionSetting, domain, partnerDomain: foundPermittedBizplace?.domain }\n })\n\n if (partnerStrictProductSelectionSetting) strictProduct = partnerStrictProductSelectionSetting.value\n\n let newOrderProducts: any[] = []\n\n for (var i = 0; i < orderProducts.length; i++) {\n const orderProduct = orderProducts[i]\n const productSKU: string = orderProduct.productSKU\n const foundProduct: Product = await tx.getRepository(Product).findOne({\n where: {\n sku: productSKU,\n bizplace: companyBizplace\n }\n })\n\n let newOrderProduct: any\n\n if (foundProduct) {\n let productDetail: ProductDetail\n const hasConditions: boolean = Boolean(\n (orderProduct?.packingType && orderProduct?.packingType.trim() != '') ||\n (orderProduct?.uom && orderProduct?.uom.trim() != '')\n )\n let productDetailCondition: any = { product: foundProduct }\n\n if (hasConditions) {\n if (orderProduct?.packingType && orderProduct.packingType.trim() != '')\n productDetailCondition.packingType = orderProduct.packingType.trim()\n\n if (orderProduct?.uom && orderProduct.uom.trim() != '') productDetailCondition.uom = orderProduct.uom.trim()\n } else {\n productDetailCondition.isDefault = true\n }\n\n productDetail = await productDetailRepo.findOne({\n where: productDetailCondition\n })\n\n const uomValue: number =\n strictProduct == true\n ? productDetail?.uomValue\n ? productDetail.uomValue\n : null\n : orderProduct?.uomValue\n ? orderProduct.uomValue\n : productDetail.uomValue\n\n newOrderProduct = {\n ...orderProduct,\n packingType: orderProduct?.packingType ? orderProduct.packingType : productDetail.packingType,\n packingSize: productDetail?.packingSize ? productDetail.packingSize : null,\n uom: productDetail?.uom ? productDetail.uom : null,\n uomValue: uomValue,\n productName: `${foundProduct.name}(${foundProduct.description}(${foundProduct.sku}))`,\n productBrand: foundProduct?.brand ? foundProduct.brand : null,\n isError: productDetail ? false : true,\n product: {\n id: foundProduct.id,\n name: foundProduct.name,\n sku: foundProduct.sku,\n type: foundProduct.type,\n brand: foundProduct.brand,\n primaryUnit: productDetail?.uom ? productDetail.uom : null,\n primaryValue: productDetail?.uomValue ? productDetail.uomValue : null\n },\n totalUomValue:\n orderProduct.packQty > 0\n ? uomValue\n ? `${(orderProduct.packQty * uomValue).toFixed(2)} ${productDetail.uom}`\n : null\n : null\n }\n } else {\n newOrderProduct = {\n ...orderProduct,\n productName: orderProduct.productSKU,\n isError: true\n }\n }\n\n newOrderProducts.push(newOrderProduct)\n }\n\n return newOrderProducts\n }\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [InventoryProductGroup])\n async bulkUploadValidatePoOrderProducts(\n @Ctx() context: any,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderProducts', type => [NewOrderProduct], { nullable: true }) orderProducts: NewOrderProduct[]\n ): Promise<OrderProduct[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace: Bizplace } =\n context.state\n\n const productDetailRepo = tx.getRepository(ProductDetail)\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne(foundPermittedBizplace.id, {\n relations: ['domain', 'company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let strictProduct: boolean = false\n\n const strictProductSelectionSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain, category: 'id-rule', name: 'strict-product-selection' }\n })\n\n if (strictProductSelectionSetting) strictProduct = strictProductSelectionSetting.value\n\n const partnerStrictProductSelectionSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: strictProductSelectionSetting, domain, partnerDomain: foundPermittedBizplace?.domain }\n })\n\n if (partnerStrictProductSelectionSetting) strictProduct = partnerStrictProductSelectionSetting.value\n\n let newOrderProducts: any[] = []\n\n for (var i = 0; i < orderProducts.length; i++) {\n const orderProduct = orderProducts[i]\n const productSKU: string = orderProduct.productSKU\n const foundProduct: Product = await tx.getRepository(Product).findOne({\n where: {\n sku: productSKU,\n bizplace: companyBizplace\n }\n })\n\n let newOrderProduct: any\n\n if (foundProduct) {\n let productDetail: ProductDetail\n const hasConditions: boolean = Boolean(\n (orderProduct?.packingType && orderProduct?.packingType.trim() != '') ||\n (orderProduct?.uom && orderProduct?.uom.trim() != '')\n )\n let productDetailCondition: any = { product: foundProduct }\n\n if (hasConditions) {\n if (orderProduct?.packingType && orderProduct.packingType.trim() != '')\n productDetailCondition.packingType = orderProduct.packingType.trim()\n\n if (orderProduct?.uom && orderProduct.uom.trim() != '') productDetailCondition.uom = orderProduct.uom.trim()\n } else {\n productDetailCondition.isDefault = true\n }\n\n productDetail = await productDetailRepo.findOne({\n where: productDetailCondition\n })\n\n const uomValue: number =\n strictProduct == true\n ? productDetail?.uomValue\n ? productDetail.uomValue\n : null\n : orderProduct?.uomValue\n ? orderProduct.uomValue\n : productDetail.uomValue\n\n newOrderProduct = {\n ...orderProduct,\n packingType: orderProduct?.packingType ? orderProduct.packingType : productDetail.packingType,\n packingSize: productDetail?.packingSize ? productDetail.packingSize : null,\n uom: productDetail?.uom ? productDetail.uom : null,\n uomValue: uomValue,\n productName: `${foundProduct.name}(${foundProduct.description}(${foundProduct.sku}))`,\n productBrand: foundProduct?.brand ? foundProduct.brand : null,\n isError: productDetail ? false : true,\n product: {\n id: foundProduct.id,\n name: foundProduct.name,\n sku: foundProduct.sku,\n type: foundProduct.type,\n brand: foundProduct.brand,\n primaryUnit: productDetail?.uom ? productDetail.uom : null,\n primaryValue: productDetail?.uomValue ? productDetail.uomValue : null\n },\n totalUomValue:\n orderProduct.packQty > 0\n ? uomValue\n ? `${(orderProduct.packQty * uomValue).toFixed(2)} ${productDetail.uom}`\n : null\n : null\n }\n } else {\n newOrderProduct = {\n ...orderProduct,\n productName: orderProduct.productSKU,\n isError: true\n }\n }\n\n newOrderProducts.push(newOrderProduct)\n }\n\n return newOrderProducts\n }\n}\n"]}
1
+ {"version":3,"file":"other-query.js","sourceRoot":"","sources":["../../../server/service/others/other-query.ts"],"names":[],"mappings":"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","sourcesContent":["import orderBy from 'lodash/orderBy'\nimport { Arg, Args, Ctx, Directive, Query, Resolver } from 'type-graphql'\nimport { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, getPermittedBizplaces } from '@things-factory/biz-base'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { PartnerSetting, Setting } from '@things-factory/setting-base'\nimport { Domain, ListParam } from '@things-factory/shell'\n\nimport {\n InventoryProductGroup,\n InventoryProductGroupList,\n NewOrderInventory,\n NewOrderProduct,\n OrderInventory,\n OrderProduct\n} from '../'\nimport { InventoryUtil } from '../../utils'\n\n@Resolver()\nexport class OtherQuery {\n @Directive('@privilege(category: \"inventory\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async allBizplaceProductInventory(\n @Ctx() context: ResolverContext,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.bizplaceProductInventory(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async inventoryProductGroup(\n @Ctx() context: ResolverContext,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.bizplaceInventoryProductGroup(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async inventoryProductGroupOpenAPI(\n @Ctx() context: ResolverContext,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.inventoryProductGroupOpenAPI(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [OrderInventory])\n async bulkUploadValidateWarehousePartnersProductsQuantity(\n @Ctx() context: ResolverContext,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderInventories', type => [NewOrderInventory], { nullable: true }) orderInventories?: NewOrderInventory[]\n ): Promise<OrderInventory[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n const partnerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({\n where: {\n id: partnerBizplaceId\n },\n relations: ['company', 'company.domain']\n })\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let newOrderInventories: any[] = []\n\n for (var i = 0; i < orderInventories.length; i++) {\n const orderInventory: any = orderInventories[i]\n\n let filters: any[] = [\n {\n name: 'productName',\n operator: 'eq',\n value: orderInventory.productSKU\n }\n ]\n\n if (orderInventory?.packingType != null) {\n filters.push({\n name: 'packingType',\n operator: 'eq',\n value: orderInventory.packingType\n })\n }\n\n const params: any = {\n filters: [...filters]\n }\n\n const { items, total } = await InventoryUtil.bizplaceInventoryProductGroup(bizplaces, params, context, tx)\n\n // Filter to find for item with enough remain qty\n const availableItems = items.filter(item => item.remainQty >= orderInventory.releaseQty)\n let availableItem\n\n if (availableItems.length > 0) {\n availableItem = availableItems[0]\n }\n\n let packageUomValue = availableItem ? availableItem.remainUomValue / availableItem.remainQty : null\n const newOrderInventory: any = {\n product: availableItem\n ? {\n id: availableItem.productId,\n sku: availableItem.productSKU,\n name: availableItem.productName\n }\n : { id: null },\n inventory: availableItem\n ? {\n ...availableItem,\n remainQty: availableItem ? availableItem.remainQty : null,\n remainUomValue: availableItem ? availableItem.remainUomValue : null,\n remainUomValueWithUom: availableItem ? availableItem.remainUomValueWithUom : ''\n }\n : null,\n productId: availableItem ? availableItem.productId : null,\n productSKU: availableItem ? availableItem.productSKU : orderInventory.productSKU,\n productName: availableItem ? availableItem.productName : null,\n uom: availableItem ? availableItem.uom : null,\n remainQty: availableItem ? availableItem.remainQty : null,\n remainUomValue: availableItem ? availableItem.remainUomValue : null,\n remainUomValueWithUom: availableItem ? availableItem.remainUomValueWithUom : '',\n batchId: availableItem ? availableItem.batchId : null,\n batchIdRef: availableItem ? availableItem.batchIdRef : null,\n packingType: availableItem ? availableItem.packingType : orderInventory.packingType,\n packingSize: availableItem ? availableItem.packingSize : 1,\n releaseQty: orderInventory.releaseQty\n ? Number.isInteger(orderInventory.releaseQty)\n ? orderInventory.releaseQty\n : null\n : null,\n releaseUomValue: availableItem\n ? Number.isInteger(orderInventory.releaseQty)\n ? parseFloat((orderInventory.releaseQty * packageUomValue).toFixed(2))\n : null\n : null,\n groupType: availableItem ? availableItem.groupType : null,\n isError: !availableItem ? true : false\n }\n\n newOrderInventories.push(newOrderInventory)\n\n // end loop\n }\n\n try {\n await InventoryUtil.validateWarehousePartnersProductsQuantity(\n domain,\n partnerBizplace,\n newOrderInventories,\n context,\n tx\n )\n } catch (e) {\n const errorData = JSON.parse(e.detail.data)\n\n errorData.forEach(dt => {\n let idx = newOrderInventories.findIndex(\n x =>\n x.product?.id && x.product.id == dt.productId && x.batchId == dt.batchId && x.packingType == dt.packingType\n )\n\n if (idx >= 0) {\n newOrderInventories[idx].remainQty = dt.availableQty\n newOrderInventories[idx].remainUomValue = dt.availableUomValue\n newOrderInventories[idx].isError =\n dt.availableQty == null\n ? newOrderInventories[idx].releaseQty > 0\n : newOrderInventories[idx].releaseQty > dt.availableQty\n newOrderInventories[idx].remainUomValueWithUom =\n dt.availableUomValue == null ? '' : `${dt.availableUomValue} ${dt.uom}`\n if (newOrderInventories[idx].inventory != null) {\n newOrderInventories[idx].inventory.remainQty = dt.availableQty\n newOrderInventories[idx].inventory.remainUomValue = dt.availableUomValue\n newOrderInventories[idx].inventory.remainUomValueWithUom = `${dt.availableUomValue} ${dt.uom}` || ''\n }\n }\n })\n }\n\n return orderBy(newOrderInventories, ['isError'], ['desc'])\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [InventoryProductGroup])\n async bulkUploadValidateOrderProducts(\n @Ctx() context: ResolverContext,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderProducts', type => [NewOrderProduct], { nullable: true }) orderProducts: NewOrderProduct[]\n ): Promise<OrderProduct[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n const productDetailRepo = tx.getRepository(ProductDetail)\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['domain', 'company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let strictProduct: boolean = false\n\n const strictProductSelectionSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'strict-product-selection' }\n })\n\n if (strictProductSelectionSetting) strictProduct = strictProductSelectionSetting.value\n\n const partnerStrictProductSelectionSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: strictProductSelectionSetting, domain, partnerDomain: foundPermittedBizplace?.domain }\n })\n\n if (partnerStrictProductSelectionSetting) strictProduct = partnerStrictProductSelectionSetting.value\n\n let newOrderProducts: any[] = []\n\n for (var i = 0; i < orderProducts.length; i++) {\n const orderProduct = orderProducts[i]\n const productSKU: string = orderProduct.productSKU\n const foundProduct: Product = await tx.getRepository(Product).findOne({\n where: {\n sku: productSKU,\n bizplace: companyBizplace\n }\n })\n\n let newOrderProduct: any\n\n if (foundProduct) {\n let productDetail: ProductDetail\n const hasConditions: boolean = Boolean(\n (orderProduct?.packingType && orderProduct?.packingType.trim() != '') ||\n (orderProduct?.uom && orderProduct?.uom.trim() != '')\n )\n let productDetailCondition: any = { product: foundProduct }\n\n if (hasConditions) {\n if (orderProduct?.packingType && orderProduct.packingType.trim() != '')\n productDetailCondition.packingType = orderProduct.packingType.trim()\n\n if (orderProduct?.uom && orderProduct.uom.trim() != '') productDetailCondition.uom = orderProduct.uom.trim()\n } else {\n productDetailCondition.isDefault = true\n }\n\n productDetail = await productDetailRepo.findOne({\n where: productDetailCondition\n })\n\n const uomValue: number =\n strictProduct == true\n ? productDetail?.uomValue\n ? productDetail.uomValue\n : null\n : orderProduct?.uomValue\n ? orderProduct.uomValue\n : productDetail.uomValue\n\n newOrderProduct = {\n ...orderProduct,\n packingType: orderProduct?.packingType ? orderProduct.packingType : productDetail.packingType,\n packingSize: productDetail?.packingSize ? productDetail.packingSize : null,\n uom: productDetail?.uom ? productDetail.uom : null,\n uomValue: uomValue,\n productName: `${foundProduct.name}(${foundProduct.description}(${foundProduct.sku}))`,\n productBrand: foundProduct?.brand ? foundProduct.brand : null,\n isError: productDetail ? false : true,\n product: {\n id: foundProduct.id,\n name: foundProduct.name,\n sku: foundProduct.sku,\n type: foundProduct.type,\n brand: foundProduct.brand,\n primaryUnit: productDetail?.uom ? productDetail.uom : null,\n primaryValue: productDetail?.uomValue ? productDetail.uomValue : null\n },\n totalUomValue:\n orderProduct.packQty > 0\n ? uomValue\n ? `${(orderProduct.packQty * uomValue).toFixed(2)} ${productDetail.uom}`\n : null\n : null\n }\n } else {\n newOrderProduct = {\n ...orderProduct,\n productName: orderProduct.productSKU,\n isError: true\n }\n }\n\n newOrderProducts.push(newOrderProduct)\n }\n\n return newOrderProducts\n }\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [InventoryProductGroup])\n async bulkUploadValidatePoOrderProducts(\n @Ctx() context: ResolverContext,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderProducts', type => [NewOrderProduct], { nullable: true }) orderProducts: NewOrderProduct[]\n ): Promise<OrderProduct[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n const productDetailRepo = tx.getRepository(ProductDetail)\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['domain', 'company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let strictProduct: boolean = false\n\n const strictProductSelectionSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'strict-product-selection' }\n })\n\n if (strictProductSelectionSetting) strictProduct = strictProductSelectionSetting.value\n\n const partnerStrictProductSelectionSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: strictProductSelectionSetting, domain, partnerDomain: foundPermittedBizplace?.domain }\n })\n\n if (partnerStrictProductSelectionSetting) strictProduct = partnerStrictProductSelectionSetting.value\n\n let newOrderProducts: any[] = []\n\n for (var i = 0; i < orderProducts.length; i++) {\n const orderProduct = orderProducts[i]\n const productSKU: string = orderProduct.productSKU\n const foundProduct: Product = await tx.getRepository(Product).findOne({\n where: {\n sku: productSKU,\n bizplace: companyBizplace\n }\n })\n\n let newOrderProduct: any\n\n if (foundProduct) {\n let productDetail: ProductDetail\n const hasConditions: boolean = Boolean(\n (orderProduct?.packingType && orderProduct?.packingType.trim() != '') ||\n (orderProduct?.uom && orderProduct?.uom.trim() != '')\n )\n let productDetailCondition: any = { product: foundProduct }\n\n if (hasConditions) {\n if (orderProduct?.packingType && orderProduct.packingType.trim() != '')\n productDetailCondition.packingType = orderProduct.packingType.trim()\n\n if (orderProduct?.uom && orderProduct.uom.trim() != '') productDetailCondition.uom = orderProduct.uom.trim()\n } else {\n productDetailCondition.isDefault = true\n }\n\n productDetail = await productDetailRepo.findOne({\n where: productDetailCondition\n })\n\n const uomValue: number =\n strictProduct == true\n ? productDetail?.uomValue\n ? productDetail.uomValue\n : null\n : orderProduct?.uomValue\n ? orderProduct.uomValue\n : productDetail.uomValue\n\n newOrderProduct = {\n ...orderProduct,\n packingType: orderProduct?.packingType ? orderProduct.packingType : productDetail.packingType,\n packingSize: productDetail?.packingSize ? productDetail.packingSize : null,\n uom: productDetail?.uom ? productDetail.uom : null,\n uomValue: uomValue,\n productName: `${foundProduct.name}(${foundProduct.description}(${foundProduct.sku}))`,\n productBrand: foundProduct?.brand ? foundProduct.brand : null,\n isError: productDetail ? false : true,\n product: {\n id: foundProduct.id,\n name: foundProduct.name,\n sku: foundProduct.sku,\n type: foundProduct.type,\n brand: foundProduct.brand,\n primaryUnit: productDetail?.uom ? productDetail.uom : null,\n primaryValue: productDetail?.uomValue ? productDetail.uomValue : null\n },\n totalUomValue:\n orderProduct.packQty > 0\n ? uomValue\n ? `${(orderProduct.packQty * uomValue).toFixed(2)} ${productDetail.uom}`\n : null\n : null\n }\n } else {\n newOrderProduct = {\n ...orderProduct,\n productName: orderProduct.productSKU,\n isError: true\n }\n }\n\n newOrderProducts.push(newOrderProduct)\n }\n\n return newOrderProducts\n }\n}\n"]}
@@ -4,12 +4,12 @@ exports.upsertPurchaseOrderProducts = exports.updatePurchaseOrderFunction = expo
4
4
  const tslib_1 = require("tslib");
5
5
  const GraphQLUpload_js_1 = tslib_1.__importDefault(require("graphql-upload/GraphQLUpload.js"));
6
6
  const type_graphql_1 = require("type-graphql");
7
- const typeorm_1 = require("typeorm");
8
7
  const attachment_base_1 = require("@things-factory/attachment-base");
9
8
  const biz_base_1 = require("@things-factory/biz-base");
10
9
  const id_rule_base_1 = require("@things-factory/id-rule-base");
11
10
  const product_base_1 = require("@things-factory/product-base");
12
11
  const setting_base_1 = require("@things-factory/setting-base");
12
+ const shell_1 = require("@things-factory/shell");
13
13
  const warehouse_base_1 = require("@things-factory/warehouse-base");
14
14
  const __1 = require("../");
15
15
  const constants_1 = require("../../constants");
@@ -29,12 +29,12 @@ let PurchaseOrderMutation = class PurchaseOrderMutation {
29
29
  }
30
30
  async approvePurchaseOrder(id, context) {
31
31
  const { tx, domain, user } = context.state;
32
- const findPurchaseOrder = await (0, typeorm_1.getRepository)(__1.PurchaseOrder).findOne({
33
- where: { domain, id },
32
+ const findPurchaseOrder = await (0, shell_1.getRepository)(__1.PurchaseOrder).findOne({
33
+ where: { domain: { id: domain.id }, id },
34
34
  relations: ['orderProducts', 'orderProducts.product', 'bufferLocation', 'bizplace', 'domain']
35
35
  });
36
- // const findPurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).findOne({id}, { relations:['bizplace']})
37
- // const findOrderProducts: OrderProduct[] = await tx.getRepository(OrderProduct).find({purchaseOrder: findPurchaseOrder})
36
+ // const findPurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).findOne({where: {id}, relations:['bizplace']})
37
+ // const findOrderProducts: OrderProduct[] = await tx.getRepository(OrderProduct).findBy({purchaseOrder: findPurchaseOrder})
38
38
  // // 1. Approve purchase order
39
39
  const approvePurchaseOrder = await tx.getRepository(__1.PurchaseOrder).save(Object.assign(Object.assign({}, findPurchaseOrder), { status: constants_1.PURCHASE_ORDER_STATUS.APPROVED, approvedBy: user, approvedOn: new Date().toUTCString(), updater: user }));
40
40
  await tx.getRepository(__1.OrderProduct).save(findPurchaseOrder.orderProducts.map(itm => {
@@ -46,16 +46,18 @@ let PurchaseOrderMutation = class PurchaseOrderMutation {
46
46
  return Object.assign({}, itm);
47
47
  }), customerBizplaceId: findPurchaseOrder.bizplace.id, purchaseOrder: approvePurchaseOrder, orderVass: [], creator: user, updater: user });
48
48
  delete newGANOrder.id;
49
- const createdGAN = await (0, arrival_notice_mutation_1.generateArrivalNoticeFunction)(null, newGANOrder, [], context, tx);
50
- await (0, arrival_notice_mutation_1.confirmArrivalNoticeFunction)(createdGAN.name, context, tx);
51
- await (0, arrival_notice_mutation_1.receiveArrivalNoticeFunction)(null, createdGAN.name, context);
49
+ //change gan status to intransit and call check arrived notice function right
50
+ newGANOrder.status = constants_1.ORDER_STATUS.INTRANSIT;
51
+ const createdGAN = await (0, arrival_notice_mutation_1.generateArrivalNoticeFunction)(null, newGANOrder, true, [], context, tx);
52
+ // await confirmArrivalNoticeFunction(createdGAN.name, context, tx)
53
+ // await receiveArrivalNoticeFunction(null, createdGAN.name, context)
52
54
  await (0, arrival_notice_mutation_1.checkArrivedNoticeFunction)(createdGAN.name, context, tx);
53
55
  return approvePurchaseOrder;
54
56
  }
55
57
  async rejectPurchaseOrder(id, context) {
56
58
  const { tx, domain, user } = context.state;
57
- const findPurchaseOrder = await (0, typeorm_1.getRepository)(__1.PurchaseOrder).findOne({
58
- where: { domain, id },
59
+ const findPurchaseOrder = await (0, shell_1.getRepository)(__1.PurchaseOrder).findOne({
60
+ where: { domain: { id: domain.id }, id },
59
61
  relations: ['orderProducts']
60
62
  });
61
63
  // // 1. Reject purchase order
@@ -73,7 +75,7 @@ let PurchaseOrderMutation = class PurchaseOrderMutation {
73
75
  const { tx, domain, user } = context.state;
74
76
  const repository = tx.getRepository(__1.PurchaseOrder);
75
77
  const purchaseOrder = await repository.findOne({
76
- where: { domain, name }
78
+ where: { domain: { id: domain.id }, name }
77
79
  });
78
80
  return await repository.save(Object.assign(Object.assign(Object.assign({}, purchaseOrder), patch), { updater: user }));
79
81
  }
@@ -165,7 +167,7 @@ async function createPurchaseOrderFunction(_, purchaseOrder, files, context, tx)
165
167
  let myBizplace;
166
168
  let orderNo = '';
167
169
  let arrError = [];
168
- const settingRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(setting_base_1.Setting)) || (0, typeorm_1.getRepository)(setting_base_1.Setting);
170
+ const settingRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(setting_base_1.Setting)) || (0, shell_1.getRepository)(setting_base_1.Setting);
169
171
  if ((_b = purchaseOrder === null || purchaseOrder === void 0 ? void 0 : purchaseOrder.bizplace) === null || _b === void 0 ? void 0 : _b.id) {
170
172
  const permittedBizplaces = await (0, biz_base_1.getPermittedBizplaces)(domain, user);
171
173
  let foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == purchaseOrder.bizplace.id);
@@ -177,13 +179,13 @@ async function createPurchaseOrderFunction(_, purchaseOrder, files, context, tx)
177
179
  arrError.push(`No bizplace was selected`);
178
180
  }
179
181
  if ((_c = purchaseOrder === null || purchaseOrder === void 0 ? void 0 : purchaseOrder.supplier) === null || _c === void 0 ? void 0 : _c.id) {
180
- purchaseOrder.supplier = await (0, typeorm_1.getRepository)(biz_base_1.ContactPoint).findOne({ id: purchaseOrder.supplier.id });
182
+ purchaseOrder.supplier = await (0, shell_1.getRepository)(biz_base_1.ContactPoint).findOneBy({ id: purchaseOrder.supplier.id });
181
183
  }
182
184
  else {
183
185
  arrError.push(`No supplier was selected`);
184
186
  }
185
187
  if ((_d = purchaseOrder === null || purchaseOrder === void 0 ? void 0 : purchaseOrder.bufferLocation) === null || _d === void 0 ? void 0 : _d.id) {
186
- purchaseOrder.bufferLocation = await (0, typeorm_1.getRepository)(warehouse_base_1.Location).findOne({ id: purchaseOrder.bufferLocation.id });
188
+ purchaseOrder.bufferLocation = await (0, shell_1.getRepository)(warehouse_base_1.Location).findOneBy({ id: purchaseOrder.bufferLocation.id });
187
189
  }
188
190
  else {
189
191
  arrError.push(`No buffer location was selected`);
@@ -194,16 +196,13 @@ async function createPurchaseOrderFunction(_, purchaseOrder, files, context, tx)
194
196
  // // find PO number rule setting
195
197
  const poNoSetting = await settingRepo.findOne({
196
198
  where: {
197
- domain,
199
+ domain: { id: domain.id },
198
200
  name: constants_1.ORDER_NUMBER_SETTING_KEY.PO_NUMBER_RULE
199
201
  }
200
202
  });
201
- if (poNoSetting) {
202
- orderNo = await (0, id_rule_base_1.generateId)({ domain, type: constants_1.ORDER_NUMBER_RULE_TYPE.PO_NUMBER, seed: {} });
203
- }
204
- else {
205
- orderNo = utils_1.OrderNoGenerator.purchaseOrder();
206
- }
203
+ orderNo = poNoSetting
204
+ ? await (0, id_rule_base_1.generateId)({ domain, type: constants_1.ORDER_NUMBER_RULE_TYPE.PO_NUMBER, seed: {} })
205
+ : utils_1.OrderNoGenerator.purchaseOrder();
207
206
  // // 1. Create purchase order
208
207
  const createdPurchaseOrder = await tx.getRepository(__1.PurchaseOrder).save(Object.assign(Object.assign({}, purchaseOrder), { name: orderNo, domain, looseItem: (purchaseOrder === null || purchaseOrder === void 0 ? void 0 : purchaseOrder.looseItem) ? purchaseOrder.looseItem : false, creator: user, updater: user }));
209
208
  // // 2. Create purchase order product
@@ -253,17 +252,17 @@ async function updatePurchaseOrderFunction(_, purchaseOrder, files, context, tx)
253
252
  purchaseOrder.bizplace = foundPermittedBizplace;
254
253
  }
255
254
  if ((_c = purchaseOrder === null || purchaseOrder === void 0 ? void 0 : purchaseOrder.supplier) === null || _c === void 0 ? void 0 : _c.id) {
256
- purchaseOrder.supplier = await (0, typeorm_1.getRepository)(biz_base_1.ContactPoint).findOne({ id: purchaseOrder.supplier.id });
255
+ purchaseOrder.supplier = await (0, shell_1.getRepository)(biz_base_1.ContactPoint).findOneBy({ id: purchaseOrder.supplier.id });
257
256
  }
258
257
  if ((_d = purchaseOrder === null || purchaseOrder === void 0 ? void 0 : purchaseOrder.bufferLocation) === null || _d === void 0 ? void 0 : _d.id) {
259
- purchaseOrder.bufferLocation = await (0, typeorm_1.getRepository)(warehouse_base_1.Location).findOne({ id: purchaseOrder.bufferLocation.id });
258
+ purchaseOrder.bufferLocation = await (0, shell_1.getRepository)(warehouse_base_1.Location).findOneBy({ id: purchaseOrder.bufferLocation.id });
260
259
  }
261
260
  // // 1. Update purchase order
262
261
  const updatePurchaseOrder = await tx.getRepository(__1.PurchaseOrder).save(Object.assign(Object.assign(Object.assign({}, existingPurchaseOrder), purchaseOrder), { domain, creator: user, updater: user }));
263
262
  // // 2. Update purchase order product
264
263
  await upsertPurchaseOrderProducts(domain, purchaseOrder.bizplace, purchaseOrder, orderProducts, user, tx);
265
264
  // // 3. Delete Removed Other Charges
266
- const otherChargesRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(__1.PurchaseOrderOtherCharge)) || (0, typeorm_1.getRepository)(__1.PurchaseOrderOtherCharge);
265
+ const otherChargesRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(__1.PurchaseOrderOtherCharge)) || (0, shell_1.getRepository)(__1.PurchaseOrderOtherCharge);
267
266
  let removeOC = existingPurchaseOrder.otherCharges.filter(existingOC => (otherCharges.filter(inOC => inOC.id == existingOC.id).length = 0));
268
267
  removeOC.forEach(async (oc) => {
269
268
  await otherChargesRepo.delete(oc);
@@ -285,9 +284,9 @@ async function updatePurchaseOrderFunction(_, purchaseOrder, files, context, tx)
285
284
  finally { if (e_2) throw e_2.error; }
286
285
  }
287
286
  // // 5. Remove Purchase Order Products
288
- const foundAttachments = await (0, typeorm_1.getRepository)(attachment_base_1.Attachment).find({
287
+ const foundAttachments = await (0, shell_1.getRepository)(attachment_base_1.Attachment).find({
289
288
  where: {
290
- domain,
289
+ domain: { id: domain.id },
291
290
  refBy: purchaseOrder.id,
292
291
  category: constants_1.ATTACHMENT_TYPE.PO
293
292
  }
@@ -313,21 +312,24 @@ async function updatePurchaseOrderFunction(_, purchaseOrder, files, context, tx)
313
312
  exports.updatePurchaseOrderFunction = updatePurchaseOrderFunction;
314
313
  async function upsertPurchaseOrderProducts(domain, bizplace, purchaseOrder, orderProducts, user, tx) {
315
314
  try {
316
- const purchaseOrderRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(__1.PurchaseOrder)) || (0, typeorm_1.getRepository)(__1.PurchaseOrder);
317
- const bizplaceRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(biz_base_1.Bizplace)) || (0, typeorm_1.getRepository)(biz_base_1.Bizplace);
318
- const orderProductRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(__1.OrderProduct)) || (0, typeorm_1.getRepository)(__1.OrderProduct);
319
- const productRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(product_base_1.Product)) || (0, typeorm_1.getRepository)(product_base_1.Product);
315
+ const purchaseOrderRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(__1.PurchaseOrder)) || (0, shell_1.getRepository)(__1.PurchaseOrder);
316
+ const bizplaceRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(biz_base_1.Bizplace)) || (0, shell_1.getRepository)(biz_base_1.Bizplace);
317
+ const orderProductRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(__1.OrderProduct)) || (0, shell_1.getRepository)(__1.OrderProduct);
318
+ const productRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(product_base_1.Product)) || (0, shell_1.getRepository)(product_base_1.Product);
320
319
  // // Remove all existing order products that do not exist in current input
321
320
  let removeOP = purchaseOrder.orderProducts.filter(existingOP => (orderProducts.filter(inOP => inOP.id == existingOP.id).length = 0));
322
321
  removeOP.forEach(async (op) => {
323
- await orderProductRepo.delete(op);
322
+ await orderProductRepo.delete(op.id);
324
323
  });
325
- purchaseOrder = await purchaseOrderRepo.findOne(purchaseOrder.id);
326
- bizplace = await bizplaceRepo.findOne(bizplace.id);
324
+ purchaseOrder = await purchaseOrderRepo.findOneBy({ id: purchaseOrder.id });
325
+ bizplace = await bizplaceRepo.findOneBy({ id: bizplace.id });
327
326
  orderProducts = await Promise.all(orderProducts.map(async (op) => {
328
327
  if (!(op === null || op === void 0 ? void 0 : op.id))
329
328
  delete op.id;
330
- return Object.assign(Object.assign({}, op), { domain, bizplace: bizplace, name: (op === null || op === void 0 ? void 0 : op.id) ? op.name : utils_1.OrderNoGenerator.orderProduct(), product: await productRepo.findOne(op.product.id), purchaseOrder: purchaseOrder, status: purchaseOrder.status, creator: (op === null || op === void 0 ? void 0 : op.id) ? op.creator : user, updater: user });
329
+ let foundProductDetail = await tx
330
+ .getRepository(product_base_1.ProductDetail)
331
+ .findOne({ where: { product: op.product.id, packingType: op.packingType } });
332
+ return Object.assign(Object.assign({}, op), { domain, bizplace: bizplace, name: (op === null || op === void 0 ? void 0 : op.id) ? op.name : utils_1.OrderNoGenerator.orderProduct(), product: await productRepo.findOneBy({ id: op.product.id }), packingSize: (foundProductDetail === null || foundProductDetail === void 0 ? void 0 : foundProductDetail.packingSize) || 1, purchaseOrder: purchaseOrder, status: purchaseOrder.status, creator: (op === null || op === void 0 ? void 0 : op.id) ? op.creator : user, updater: user });
331
333
  }));
332
334
  await orderProductRepo.save(orderProducts);
333
335
  }