@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 +1 @@
1
- {"version":3,"file":"arrival-notice-mutation.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, getConnection, getRepository, In, Repository } from 'typeorm'\n\nimport { Attachment, createAttachments } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport {\n Bizplace,\n ContactPoint,\n getDomainUsers,\n getMyBizplace,\n getOutletBizplace,\n getPermittedBizplaces\n} from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { sendNotification } from '@things-factory/notification'\nimport { Product } from '@things-factory/product-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\n\nimport {\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS\n} from '../../constants'\nimport { ATTACHMENT_TYPE } from '../../constants/attachment-type'\nimport { ValidationError } from '../../errors'\nimport { OrderNoGenerator } from '../../utils/order-no-generator'\nimport { CollectionOrder } from '../collection-order/collection-order'\nimport { JobSheet } from '../job-sheet/job-sheet'\nimport { generateJobSheet } from '../job-sheet/job-sheet-mutation'\nimport { OrderProduct } from '../order-product/order-product'\nimport { NewOrderProduct, OrderProductPatch } from '../order-product/order-product-types'\nimport { OrderVas } from '../order-vas/order-vas'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { confirmReleaseGood, deleteReleaseGood, rejectReleaseGood } from '../release-good/release-good-mutation'\nimport { Vas } from '../vas/vas'\nimport { validateBulkArrivalNoticesFunction } from './'\nimport { ArrivalNotice } from './arrival-notice'\nimport { ArrivalNoticeList, ArrivalNoticePatch, NewArrivalNotice, RawArrivalNotice } from './arrival-notice-types'\n\nconst debug = require('debug')('things-factory:operato-wms:addArrivalNotice')\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeMutation {\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<Boolean> {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n\n return await deleteArrivalNotice(tx, name, user, domain)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async generateArrivalNotice(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files?: FileUpload[]\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const createdArrivalNotice: ArrivalNotice = await generateArrivalNoticeFunction(\n null,\n arrivalNotice,\n files,\n context,\n tx\n )\n\n return createdArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async confirmArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const arrivalNotice: ArrivalNotice = await confirmArrivalNoticeFunction(name, context, tx)\n\n // If current GAN has cross docking\n if (arrivalNotice.crossDocking) {\n const { releaseGood } = await tx.getRepository(ArrivalNotice).findOne(arrivalNotice.id, {\n relations: ['releaseGood']\n })\n\n // If status of related RO is not equal to PENDING_RECEIVE (i.e. Wasn't confirmed yet.)\n if (releaseGood.status !== ORDER_STATUS.PENDING_RECEIVE) {\n await confirmReleaseGood(releaseGood.name, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async receiveArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const receiveArrivalNotice: ArrivalNotice = await receiveArrivalNoticeFunction(null, name, context)\n\n return receiveArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async checkArrivedNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n\n return await checkArrivedNoticeFunction(name, context, tx)\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async rejectArrivalNotice(\n @Arg('name') name: string,\n @Arg('patch', type => ArrivalNoticePatch) patch: ArrivalNoticePatch,\n @Ctx() context: any\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n\n const arrivalNotice: ArrivalNotice = await rejectArrivalNotice(tx, name, patch.remark, context)\n\n if (arrivalNotice.crossDocking) {\n const { releaseGood }: { releaseGood: ReleaseGood } = await tx\n .getRepository(ArrivalNotice)\n .findOne(arrivalNotice.id, {\n relations: ['releaseGood']\n })\n\n if (releaseGood.status !== ORDER_STATUS.REJECTED) {\n await rejectReleaseGood(tx, releaseGood.name, patch.remark, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async addEditArrivalNoticeProducts(\n @Ctx() context: any,\n @Arg('ganNo') ganNo: string,\n @Arg('newOrderProducts', type => [NewOrderProduct], { nullable: true }) newOrderProducts?: NewOrderProduct[],\n @Arg('existingOrderProducts', type => [OrderProductPatch], { nullable: true })\n existingOrderProducts?: OrderProductPatch[]\n ): Promise<Boolean> {\n const { user, domain, tx }: { user: User; domain: Domain; tx: EntityManager } = context.state\n\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { name: ganNo },\n relations: ['bizplace', 'orderProducts']\n })\n\n arrivalNotice.status = ORDER_STATUS.PENDING_APPROVAL\n arrivalNotice.updater = user\n arrivalNotice = await tx.getRepository(ArrivalNotice).save(arrivalNotice)\n\n debug('gan-new-order-products', ganNo, newOrderProducts)\n if (newOrderProducts?.length > 0) await addArrivalNoticeProducts(domain, arrivalNotice, newOrderProducts, user, tx)\n\n debug('gan-existing-order-products', ganNo, existingOrderProducts)\n if (existingOrderProducts?.length > 0) await editArrivalNoticeProducts(existingOrderProducts, user, tx)\n\n // notification logics\n const users: any[] = await getDomainUsers(arrivalNotice?.bizplace, tx)\n debug('users', users)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Products are added/edited for ${arrivalNotice.name}`,\n body: `Warehouse need your review for changes to be approved`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return true\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async addArrivalNotice(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('file', type => GraphQLUpload, { nullable: true }) file?: FileUpload\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const createdGAN: ArrivalNotice = await generateArrivalNoticeFunction(null, arrivalNotice, file, context, tx)\n\n debug('createdGAN', createdGAN)\n\n const confirmedGAN: ArrivalNotice = await confirmArrivalNoticeFunction(createdGAN.name, context, tx)\n\n debug('confirmedGAN', confirmedGAN)\n\n return confirmedGAN\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async updateArrivalNoticeDetails(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => ArrivalNoticePatch) arrivalNotice: ArrivalNoticePatch\n ): Promise<ArrivalNotice> {\n const { domain, tx } = context.state\n let existingArrivalNotice = await tx\n .getRepository(ArrivalNotice)\n .findOne({ where: { name: arrivalNotice.name, domain } })\n\n if (!existingArrivalNotice) {\n throw new Error('Existing Arrival Notice not found.')\n }\n\n await tx.getRepository(ArrivalNotice).update(existingArrivalNotice.id, arrivalNotice)\n return await tx.getRepository(ArrivalNotice).findOne(existingArrivalNotice.id)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNoticeList)\n async bulkGenerateArrivalNotices(\n @Ctx() context: any,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string\n ): Promise<ArrivalNoticeList> {\n const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state\n let createdArrivalNoticeIds: string[] = [],\n createdOrderProductIds: string[] = [],\n errorsCaught: any[] = [],\n finalArrivalNoticeList: ArrivalNotice[] = []\n\n const foundBizplace: Bizplace = await tx.getRepository(Bizplace).findOne(bizplaceId)\n\n if (!foundBizplace) throw new Error('company not found')\n\n // to check whether the raw data are valid\n const validatedArrivalNotices: RawArrivalNotice[] = await validateBulkArrivalNoticesFunction(\n rawArrivalNotices,\n bizplaceId,\n tx\n )\n\n // check for custom GAN order no setting\n const ganNoSetting: Setting = await tx.getRepository(Setting).findOne({\n where: {\n domain,\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n // extract rawArrivalNotices data into normal ArrivalNotice format\n let arrivalNotices: Partial<ArrivalNotice[]> = extractArrivalNotices(validatedArrivalNotices)\n\n for (let i = 0, l = arrivalNotices.length; i < l; i++) {\n try {\n await getConnection().transaction(async childTx => {\n // check for duplication\n const duplicatedArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).findOne({\n where: {\n refNo: arrivalNotices[i].refNo,\n refNo2: arrivalNotices[i].refNo2,\n refNo3: arrivalNotices[i].refNo3,\n etaDate: arrivalNotices[i].etaDate,\n truckNo: arrivalNotices[i].truckNo,\n containerNo: arrivalNotices[i].containerNo,\n containerSize: arrivalNotices[i].containerSize,\n looseItem: arrivalNotices[i].looseItem,\n importCargo: arrivalNotices[i].importCargo\n }\n })\n\n if (duplicatedArrivalNotice) {\n throw new Error(`duplicated with ${duplicatedArrivalNotice.name}`)\n }\n\n // save new arrival notice\n const createdArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).save({\n ...arrivalNotices[i],\n name: ganNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n : OrderNoGenerator.arrivalNotice(),\n domain,\n bizplace: foundBizplace,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // save new order products\n let createdOrderProducts: OrderProduct[] = await Promise.all(\n arrivalNotices[i].orderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: foundBizplace,\n name: OrderNoGenerator.orderProduct(),\n // product: await childTx.getRepository(Product).findOne(op.product.id),\n status: ORDER_PRODUCT_STATUS.PENDING,\n arrivalNotice: createdArrivalNotice,\n creator: user\n }\n })\n )\n createdOrderProducts = await childTx.getRepository(OrderProduct).save(createdOrderProducts)\n\n // generate new jobsheet\n await generateJobSheet(domain, user, createdArrivalNotice, childTx)\n\n // push arrivalNotice and orderProducts IDs if successfully saved\n createdArrivalNoticeIds.push(createdArrivalNotice.id)\n createdOrderProductIds.push(...createdOrderProducts.map(op => op.id))\n })\n } catch (error) {\n // collect the arrivalNotice details and its error\n let rawArrivalNotices: RawArrivalNotice[] = formRawArrivalNotices(arrivalNotices[i], error.message)\n errorsCaught.push(...rawArrivalNotices)\n }\n }\n\n if (createdArrivalNoticeIds.length && createdOrderProductIds.length) {\n await getConnection().transaction(async childTx => {\n // update arrivalNotices status to PENDING_RECEIVE\n await childTx\n .getRepository(ArrivalNotice)\n .update({ id: In(createdArrivalNoticeIds) }, { status: ORDER_STATUS.PENDING_RECEIVE, updater: user })\n\n // update orderProducts status to PENDING_RECEIVE\n await childTx\n .getRepository(OrderProduct)\n .update({ id: In(createdOrderProductIds) }, { status: ORDER_PRODUCT_STATUS.PENDING_RECEIVE, updater: user })\n\n finalArrivalNoticeList = await childTx.getRepository(ArrivalNotice).find({\n where: { id: In(createdArrivalNoticeIds) },\n relations: ['orderProducts', 'orderProducts.product', 'bizplace']\n })\n })\n }\n\n if (errorsCaught.length) {\n // should return this error list in the grist so that user know which gan need to amend\n throw new ValidationError({\n ...ValidationError.ERROR_CODES.INVALID_DATA_FOUND,\n detail: { data: JSON.stringify(errorsCaught) }\n })\n }\n\n // return arrivalNotices with its orderProducts list\n return { items: finalArrivalNoticeList, total: 0 }\n }\n}\n\nexport async function deleteArrivalNotice(\n tx: EntityManager,\n name: string,\n user: User,\n domain: Domain\n): Promise<boolean> {\n let foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name },\n relations: ['bizplace', 'releaseGood', 'orderProducts', 'orderVass', 'collectionOrders', 'creator', 'updater']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n const foundJS: JobSheet = await tx.getRepository(JobSheet).findOne({\n where: {\n bizplace: foundArrivalNotice.bizplace,\n arrivalNoticeRefNo: foundArrivalNotice.name\n }\n })\n\n if (foundJS) await tx.getRepository(JobSheet).delete({ arrivalNoticeRefNo: foundArrivalNotice.name })\n\n const foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n const foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 1. delete order products\n const productIds = foundOPs.map((product: OrderProduct) => product.id)\n if (productIds.length) {\n await tx.getRepository(OrderProduct).delete({ id: In(productIds) })\n }\n\n // 2. delete order vass\n const vasIds = foundOVs.map((vas: OrderVas) => vas.id)\n if (vasIds.length) {\n await tx.getRepository(OrderVas).delete({ id: In(vasIds) })\n }\n\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n updater: user\n })\n\n // 4. Remove relation with RO if it's cross docking\n if (foundArrivalNotice.crossDocking && foundArrivalNotice.releaseGood?.id) {\n let releaseGood: ReleaseGood = foundArrivalNotice.releaseGood\n releaseGood.arrivalNotice = null\n releaseGood = await tx.getRepository(ReleaseGood).save(releaseGood)\n\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n await deleteReleaseGood(tx, releaseGood.name, user, domain)\n } else {\n // 5. delete GAN\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n }\n return true\n}\n\nexport async function generateArrivalNoticeFunction(\n _: any,\n arrivalNotice: any,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { domain, user }: { domain: Domain; user: User } = context.state\n let orderProducts: OrderProduct[] = arrivalNotice.orderProducts\n let orderVass: OrderVas[] = arrivalNotice.orderVass\n let myBizplace: Bizplace\n let orderNo: string = ''\n\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (arrivalNotice.bizplace) myBizplace = arrivalNotice.bizplace\n else if (arrivalNotice.customerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.customerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.customerBizplaceId\n } else if (arrivalNotice.partnerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.partnerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.partnerBizplaceId\n } else if (arrivalNotice.warehouseId) myBizplace = await getOutletBizplace(arrivalNotice.warehouseId)\n else myBizplace = await getMyBizplace(domain, user)\n\n if (arrivalNotice.supplier) {\n const supplier: ContactPoint = await tx\n .getRepository(ContactPoint)\n .findOne({ where: { bizplace: arrivalNotice.supplier, domain }, relation: ['bizplace'] })\n\n if (!supplier) throw new Error('contact point does not exist')\n\n arrivalNotice.supplier = supplier\n }\n // find GAN number rule setting\n const ganNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain,\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n if (ganNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.arrivalNotice()\n }\n\n // 1. Create arrival notice\n const createdArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...arrivalNotice,\n name: orderNo,\n domain,\n bizplace: myBizplace,\n looseItem: arrivalNotice?.looseItem ? arrivalNotice.looseItem : false,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // 2. Create arrival notice product\n await addArrivalNoticeProducts(\n domain,\n createdArrivalNotice,\n orderProducts.map((op: OrderProduct) => {\n return { ...op, status: ORDER_PRODUCT_STATUS.PENDING }\n }),\n user,\n tx\n )\n\n await generateJobSheet(domain, user, createdArrivalNotice, tx)\n\n // 3. Create arrival notice vas\n if (orderVass?.length) {\n orderVass = await Promise.all(\n orderVass.map(async (ov: OrderVas) => {\n if (ov.targetProduct) {\n ov.targetProduct = await tx.getRepository(Product).findOne(ov.targetProduct.id)\n }\n\n return {\n ...ov,\n domain,\n bizplace: myBizplace,\n name: OrderNoGenerator.orderVas(),\n vas: await tx.getRepository(Vas).findOne({ domain, id: ov.vas.id }),\n type: ORDER_TYPES.ARRIVAL_NOTICE,\n arrivalNotice: createdArrivalNotice,\n status: ORDER_VAS_STATUS.PENDING,\n creator: user,\n updater: user\n }\n })\n )\n await tx.getRepository(OrderVas).save(orderVass)\n }\n\n if (files?.length) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.GAN,\n refBy: createdArrivalNotice.id,\n category: ATTACHMENT_TYPE.GAN /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return createdArrivalNotice\n}\n\nexport async function confirmArrivalNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING },\n relations: [\n 'bizplace',\n 'releaseGood',\n 'orderProducts',\n 'orderProducts.product',\n 'orderVass',\n 'orderVass.vas',\n 'creator',\n 'updater'\n ]\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. GAN Status change (PENDING => PENDING_RECEIVE)\n const arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.PENDING_RECEIVE,\n updater: user\n })\n\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return { ...op, status: ORDER_PRODUCT_STATUS.PENDING_RECEIVE }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update order vas status if it exists.\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return { ...ov, status: ORDER_VAS_STATUS.PENDING_RECEIVE }\n })\n\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // notification logics\n // get Office Admin Users\n if (context?.state?.type != 'api') {\n const users: any[] = await tx\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 = 'Office Admin'\")\n .andWhere('role.domain_id = :domain', { domain: domain.id })\n .getQuery()\n return 'ur.roles_id IN ' + subQuery\n })\n .getRawMany()\n\n // send notification to Office Admin Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `New Arrival Notice from ${customerBizplace.name}`,\n body: `New incoming order, ${foundArrivalNotice.name} is pending for receiving`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n }\n\n return arrivalNotice\n}\n\nexport async function receiveArrivalNoticeFunction(_: any, name: String, context: any): Promise<ArrivalNotice> {\n const { user, domain, tx }: { user: User; domain: Domain; tx: EntityManager } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = await tx.getRepository(CollectionOrder).find({\n where: { domain, refNo: foundArrivalNotice.name }\n })\n\n // 1. Update status of order products (PENDING_RECEIVE => INTRANSIT)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.INTRANSIT,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => INTRANSIT)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.INTRANSIT,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => READY_TO_DISPATCH)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n return {\n ...co,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n updater: user\n }\n })\n }\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been received and processed by ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n // 4. Update status of arrival notice (PENDING_RECEIVE => INTRANSIT)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.INTRANSIT,\n acceptedBy: user,\n acceptedAt: new Date(),\n updater: user\n })\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function checkArrivedNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.INTRANSIT },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n debug('ganNo', name, foundArrivalNotice)\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Check wheter related collection order is done or not\n const foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n if (foundCOs && foundCOs.length) {\n foundCOs.map((co: CollectionOrder) => {\n if (co.status !== ORDER_STATUS.DONE) {\n throw new Error(`Collection Order: ${co.name} is not finished yet.`)\n }\n })\n }\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 2. Update status of order products (INTRANSIT => ARRIVED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 3. Update status of order vass if it exists (INTRANSIT => ARRIVED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 4. Update status of arrival notice (INTRANSIT => ARRIVED)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.ARRIVED,\n updater: user\n })\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your goods has safely arrived at ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function rejectArrivalNotice(\n tx: EntityManager,\n name: string,\n remark: string,\n context: any\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'orderProducts', 'orderVass', 'collectionOrders']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n if (!remark) throw new Error('Remark is not exist.')\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n\n // 1. Update status of order products (PENDING_RECEIVE => REJECTED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n op.status = ORDER_PRODUCT_STATUS.REJECTED\n op.updater = user\n return op\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => REJECTED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n ov.status = ORDER_VAS_STATUS.REJECTED\n ov.updater = user\n return ov\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => REJECTED)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n co.status = ORDER_STATUS.REJECTED\n co.updater = user\n return co\n })\n await tx.getRepository(CollectionOrder).save(foundCOs)\n }\n\n foundArrivalNotice.remark = remark\n foundArrivalNotice.status = ORDER_STATUS.REJECTED\n foundArrivalNotice.updater = user\n await tx.getRepository(ArrivalNotice).save(foundArrivalNotice)\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been rejected.`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return foundArrivalNotice\n}\n\nexport async function addArrivalNoticeProducts(\n domain: Domain,\n arrivalNotice: ArrivalNotice,\n newOrderProducts: any[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n if (!arrivalNotice?.bizplace || !arrivalNotice?.orderProducts?.length) {\n arrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name: arrivalNotice.name },\n relations: ['bizplace', 'orderProducts']\n })\n }\n\n const createdOrderProducts: OrderProduct[] = await Promise.all(\n newOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: arrivalNotice.bizplace,\n name: OrderNoGenerator.orderProduct(),\n product: await productRepo.findOne(op.product.id),\n arrivalNotice,\n creator: user\n }\n })\n )\n\n debug('gan-created-order-products', createdOrderProducts)\n await orderProductRepo.save(createdOrderProducts)\n}\n\nexport async function editArrivalNoticeProducts(\n existingOrderProducts: (OrderProduct | OrderProductPatch)[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n const updatedOrderProducts: OrderProduct[] = await Promise.all(\n existingOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.EDITED,\n updater: user\n }\n })\n )\n\n debug('gan-updated-order-products', updatedOrderProducts)\n await orderProductRepo.save(updatedOrderProducts)\n}\n\nfunction extractArrivalNotices(rawArrivalNotices): Partial<ArrivalNotice[]> {\n return rawArrivalNotices.reduce((arrivalNotices, raw) => {\n // discard the item that has no productId or productDetailId\n if (!raw.productId || !raw.productDetailId) return\n\n const idx: number = arrivalNotices.findIndex(an => {\n // consider these attributes if they are exist in \"item\"\n const comparison = [\n 'refNo2',\n 'refNo3',\n 'truckNo',\n 'ownTransport',\n 'container',\n 'containerNo',\n 'containerSize',\n 'looseItem',\n 'importCargo'\n ]\n\n let a: any = {},\n b: any = {}\n\n comparison.forEach(cc => {\n if (raw[cc] !== null) {\n a[cc] = raw[cc]\n b[cc] = an[cc]\n }\n })\n\n a = JSON.stringify(Object.fromEntries(Object.entries(a).sort()))\n b = JSON.stringify(Object.fromEntries(Object.entries(b).sort()))\n\n return an.refNo == raw.refNo && an.etaDate == raw.etaDate && a === b\n })\n\n const product: Product = Object.assign(new Product(), { id: raw.productId, sku: raw.sku })\n const orderProduct: Partial<OrderProduct> = {\n product,\n batchId: raw.batchId,\n batchIdRef: raw.batchIdRef,\n packingType: raw.packingType,\n packingSize: raw.packingSize,\n packQty: raw.packQty,\n uomValue: raw.uomValue,\n uom: raw.uom,\n totalUomValue: raw.totalUomValue,\n palletQty: raw.palletQty,\n unitPrice: raw.unitPrice,\n manufactureDate: raw.manufactureDate\n }\n\n if (idx >= 0) {\n const duplicateSkuIdx: number = arrivalNotices[idx].orderProducts.findIndex(\n op =>\n op.sku === raw.sku &&\n op.packingType === raw.packingType &&\n op.packingSize === raw.packingSize &&\n op.batchId === raw.batchId\n )\n\n if (duplicateSkuIdx >= 0) arrivalNotices[idx].orderProducts[duplicateSkuIdx].packQty += raw.packQty\n else arrivalNotices[idx].orderProducts.push(orderProduct)\n } else {\n arrivalNotices.push({\n refNo: raw.refNo,\n refNo2: raw.refNo2,\n refNo3: raw.refNo3,\n etaDate: raw.etaDate,\n truckNo: raw.truckNo,\n ownTransport: raw.ownTransport,\n container: raw.container,\n containerNo: raw.containerNo,\n containerSize: raw.containerSize,\n importCargo: raw.importCargo,\n looseItem: raw.looseItem,\n orderProducts: [orderProduct]\n })\n }\n\n return arrivalNotices\n }, [])\n}\n\nfunction formRawArrivalNotices(arrivalNotice, errorMsg) {\n let rawArrivalNotices = []\n for (let i = 0, l = arrivalNotice.orderProducts.length; i < l; i++) {\n let rawArrivalNotice = {\n ...arrivalNotice,\n ...arrivalNotice.orderProducts[i],\n sku: arrivalNotice.orderProducts[i].product.sku,\n errorMsg\n }\n\n delete rawArrivalNotice.orderProducts\n delete rawArrivalNotice.product\n\n rawArrivalNotices.push(rawArrivalNotice)\n }\n return rawArrivalNotices\n}\n"]}
1
+ {"version":3,"file":"arrival-notice-mutation.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, getConnection, In, Repository } from 'typeorm'\n\nimport { Attachment, createAttachments } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport {\n Bizplace,\n ContactPoint,\n getDomainUsers,\n getMyBizplace,\n getOutletBizplace,\n getPermittedBizplaces\n} from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Product } from '@things-factory/product-base'\nimport { PartnerSetting, Setting } from '@things-factory/setting-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport {\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS\n} from '../../constants'\nimport { ATTACHMENT_TYPE } from '../../constants/attachment-type'\nimport { ValidationError } from '../../errors'\nimport { OrderNoGenerator } from '../../utils/order-no-generator'\nimport { CollectionOrder } from '../collection-order/collection-order'\nimport { JobSheet } from '../job-sheet/job-sheet'\nimport { generateJobSheet } from '../job-sheet/job-sheet-mutation'\nimport { OrderProduct } from '../order-product/order-product'\nimport { NewOrderProduct, OrderProductPatch } from '../order-product/order-product-types'\nimport { OrderVas } from '../order-vas/order-vas'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { confirmReleaseGood, deleteReleaseGood, rejectReleaseGood } from '../release-good/release-good-mutation'\nimport { Vas } from '../vas/vas'\nimport { validateBulkArrivalNoticesFunction } from './'\nimport { ArrivalNotice } from './arrival-notice'\nimport { ArrivalNoticeList, ArrivalNoticePatch, NewArrivalNotice, RawArrivalNotice } from './arrival-notice-types'\n\nconst debug = require('debug')('things-factory:operato-wms:addArrivalNotice')\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeMutation {\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx, user, domain } = context.state\n\n return await deleteArrivalNotice(tx, name, user, domain)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async generateArrivalNotice(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files?: FileUpload[]\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n const createdArrivalNotice: ArrivalNotice = await generateArrivalNoticeFunction(\n null,\n arrivalNotice,\n false,\n files,\n context,\n tx\n )\n\n return createdArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async confirmArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const { tx } = context.state\n const arrivalNotice: ArrivalNotice = await confirmArrivalNoticeFunction(name, context, tx)\n\n // If current GAN has cross docking\n if (arrivalNotice.crossDocking) {\n const { releaseGood } = await tx.getRepository(ArrivalNotice).findOne({\n where: { id: arrivalNotice.id },\n relations: ['releaseGood']\n })\n\n // If status of related RO is not equal to PENDING_RECEIVE (i.e. Wasn't confirmed yet.)\n if (releaseGood.status !== ORDER_STATUS.PENDING_RECEIVE) {\n await confirmReleaseGood(releaseGood.name, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async receiveArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const receiveArrivalNotice: ArrivalNotice = await receiveArrivalNoticeFunction(null, name, context)\n\n return receiveArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async checkArrivedNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const { tx } = context.state\n\n return await checkArrivedNoticeFunction(name, context, tx)\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async rejectArrivalNotice(\n @Arg('name') name: string,\n @Arg('patch', type => ArrivalNoticePatch) patch: ArrivalNoticePatch,\n @Ctx() context: ResolverContext\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n\n const arrivalNotice: ArrivalNotice = await rejectArrivalNotice(tx, name, patch.remark, context)\n\n if (arrivalNotice.crossDocking) {\n const { releaseGood }: { releaseGood: ReleaseGood } = await tx.getRepository(ArrivalNotice).findOne({\n where: { id: arrivalNotice.id },\n relations: ['releaseGood']\n })\n\n if (releaseGood.status !== ORDER_STATUS.REJECTED) {\n await rejectReleaseGood(tx, context, releaseGood.name, patch.remark)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async addEditArrivalNoticeProducts(\n @Ctx() context: ResolverContext,\n @Arg('ganNo') ganNo: string,\n @Arg('newOrderProducts', type => [NewOrderProduct], { nullable: true }) newOrderProducts?: NewOrderProduct[],\n @Arg('existingOrderProducts', type => [OrderProductPatch], { nullable: true })\n existingOrderProducts?: OrderProductPatch[]\n ): Promise<Boolean> {\n const { user, domain, tx } = context.state\n\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { name: ganNo },\n relations: ['bizplace', 'orderProducts']\n })\n\n arrivalNotice.status = ORDER_STATUS.PENDING_APPROVAL\n arrivalNotice.updater = user\n arrivalNotice = await tx.getRepository(ArrivalNotice).save(arrivalNotice)\n\n debug('gan-new-order-products', ganNo, newOrderProducts)\n if (newOrderProducts?.length > 0) await addArrivalNoticeProducts(domain, arrivalNotice, newOrderProducts, user, tx)\n\n debug('gan-existing-order-products', ganNo, existingOrderProducts)\n if (existingOrderProducts?.length > 0) await editArrivalNoticeProducts(existingOrderProducts, user, tx)\n\n // notification logics\n const users: any[] = await getDomainUsers(arrivalNotice?.bizplace, tx)\n debug('users', users)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Products are added/edited for ${arrivalNotice.name}`,\n body: `Warehouse need your review for changes to be approved`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return true\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async addArrivalNotice(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('file', type => GraphQLUpload, { nullable: true }) file?: FileUpload\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n const createdGAN: ArrivalNotice = await generateArrivalNoticeFunction(null, arrivalNotice, false, file, context, tx)\n\n debug('createdGAN', createdGAN)\n\n const confirmedGAN: ArrivalNotice = await confirmArrivalNoticeFunction(createdGAN.name, context, tx)\n\n debug('confirmedGAN', confirmedGAN)\n\n return confirmedGAN\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async updateArrivalNoticeDetails(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => ArrivalNoticePatch) arrivalNotice: ArrivalNoticePatch\n ): Promise<ArrivalNotice> {\n const { domain, tx } = context.state\n let existingArrivalNotice = await tx\n .getRepository(ArrivalNotice)\n .findOne({ where: { name: arrivalNotice.name, domain } })\n\n if (!existingArrivalNotice) {\n throw new Error('Existing Arrival Notice not found.')\n }\n\n await tx.getRepository(ArrivalNotice).update(existingArrivalNotice.id, arrivalNotice)\n return await tx.getRepository(ArrivalNotice).findOneBy({ id: existingArrivalNotice.id })\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNoticeList)\n async bulkGenerateArrivalNotices(\n @Ctx() context: ResolverContext,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string,\n @Arg('bufferLocation', type => String, { nullable: true }) bufferLocation: string\n ): Promise<ArrivalNoticeList> {\n const { domain, user, tx } = context.state\n let createdArrivalNoticeIds: string[] = [],\n createdOrderProductIds: string[] = [],\n errorsCaught: any[] = [],\n finalArrivalNoticeList: ArrivalNotice[] = []\n let opStatus = ORDER_PRODUCT_STATUS.PENDING_RECEIVE\n let anStatus = ORDER_STATUS.PENDING_RECEIVE\n\n const foundBizplace: Bizplace = await tx\n .getRepository(Bizplace)\n .findOne({ where: { id: bizplaceId }, relations: ['domain'] })\n\n if (!foundBizplace) throw new Error('company not found')\n\n // to check whether the raw data are valid\n const validatedArrivalNotices: RawArrivalNotice[] = await validateBulkArrivalNoticesFunction(\n rawArrivalNotices,\n bizplaceId,\n tx\n )\n\n // check for custom GAN order no setting\n const ganNoSetting: Setting = await tx.getRepository(Setting).findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: ganProcessingSetting, domain, partnerDomain: foundBizplace.domain.id }\n })\n\n // If status of GAN is PENDING_RECEIVE then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // CONFIRM to assign if setting value is 1\n if (setting == 1) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n }\n }\n\n // extract rawArrivalNotices data into normal ArrivalNotice format\n let arrivalNotices: Partial<ArrivalNotice[]> = extractArrivalNotices(validatedArrivalNotices)\n\n for (let i = 0, l = arrivalNotices.length; i < l; i++) {\n try {\n await getConnection().transaction(async childTx => {\n // check for duplication\n const duplicatedArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).findOne({\n where: {\n refNo: arrivalNotices[i].refNo,\n refNo2: arrivalNotices[i].refNo2,\n refNo3: arrivalNotices[i].refNo3,\n etaDate: arrivalNotices[i].etaDate,\n truckNo: arrivalNotices[i].truckNo,\n containerNo: arrivalNotices[i].containerNo,\n containerSize: arrivalNotices[i].containerSize,\n looseItem: arrivalNotices[i].looseItem,\n importCargo: arrivalNotices[i].importCargo\n }\n })\n\n if (duplicatedArrivalNotice) {\n throw new Error(`duplicated with ${duplicatedArrivalNotice.name}`)\n }\n\n // save new arrival notice\n const createdArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).save({\n ...arrivalNotices[i],\n name: ganNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n : OrderNoGenerator.arrivalNotice(),\n domain,\n bizplace: foundBizplace,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // save new order products\n let createdOrderProducts: OrderProduct[] = await Promise.all(\n arrivalNotices[i].orderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: foundBizplace,\n name: OrderNoGenerator.orderProduct(),\n // product: await childTx.getRepository(Product).findOneBy({ id: op.product.id }),\n status: ORDER_PRODUCT_STATUS.PENDING,\n arrivalNotice: createdArrivalNotice,\n creator: user\n }\n })\n )\n createdOrderProducts = await childTx.getRepository(OrderProduct).save(createdOrderProducts)\n\n // generate new jobsheet\n await generateJobSheet(domain, user, createdArrivalNotice, childTx)\n\n // push arrivalNotice and orderProducts IDs if successfully saved\n createdArrivalNoticeIds.push(createdArrivalNotice.id)\n createdOrderProductIds.push(...createdOrderProducts.map(op => op.id))\n })\n } catch (error) {\n // collect the arrivalNotice details and its error\n let rawArrivalNotices: RawArrivalNotice[] = formRawArrivalNotices(arrivalNotices[i], error.message)\n errorsCaught.push(...rawArrivalNotices)\n }\n }\n\n if (createdArrivalNoticeIds.length && createdOrderProductIds.length) {\n await getConnection().transaction(async childTx => {\n // update arrivalNotices status to PENDING_RECEIVE\n await childTx\n .getRepository(ArrivalNotice)\n .update({ id: In(createdArrivalNoticeIds) }, { status: anStatus, updater: user })\n\n // update orderProducts status to PENDING_RECEIVE\n await childTx\n .getRepository(OrderProduct)\n .update({ id: In(createdOrderProductIds) }, { status: opStatus, updater: user })\n\n finalArrivalNoticeList = await childTx.getRepository(ArrivalNotice).find({\n where: { id: In(createdArrivalNoticeIds) },\n relations: ['orderProducts', 'orderProducts.product', 'bizplace']\n })\n })\n }\n\n if (errorsCaught.length) {\n // should return this error list in the grist so that user know which gan need to amend\n throw new ValidationError({\n ...ValidationError.ERROR_CODES.INVALID_DATA_FOUND,\n detail: { data: JSON.stringify(errorsCaught) }\n })\n }\n\n // return arrivalNotices with its orderProducts list\n return { items: finalArrivalNoticeList, total: 0 }\n }\n}\n\nexport async function deleteArrivalNotice(\n tx: EntityManager,\n name: string,\n user: User,\n domain: Domain\n): Promise<boolean> {\n let foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['bizplace', 'releaseGood', 'orderProducts', 'orderVass', 'collectionOrders', 'creator', 'updater']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n const foundJS: JobSheet = await tx.getRepository(JobSheet).findOne({\n where: {\n bizplace: foundArrivalNotice.bizplace,\n arrivalNoticeRefNo: foundArrivalNotice.name\n }\n })\n\n if (foundJS) await tx.getRepository(JobSheet).delete({ arrivalNoticeRefNo: foundArrivalNotice.name })\n\n const foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n const foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 1. delete order products\n const productIds = foundOPs.map((product: OrderProduct) => product.id)\n if (productIds.length) {\n await tx.getRepository(OrderProduct).delete({ id: In(productIds) })\n }\n\n // 2. delete order vass\n const vasIds = foundOVs.map((vas: OrderVas) => vas.id)\n if (vasIds.length) {\n await tx.getRepository(OrderVas).delete({ id: In(vasIds) })\n }\n\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n updater: user\n })\n\n // 4. Remove relation with RO if it's cross docking\n if (foundArrivalNotice.crossDocking && foundArrivalNotice.releaseGood?.id) {\n let releaseGood: ReleaseGood = foundArrivalNotice.releaseGood\n releaseGood.arrivalNotice = null\n releaseGood = await tx.getRepository(ReleaseGood).save(releaseGood)\n\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n await deleteReleaseGood(tx, releaseGood.name, user, domain)\n } else {\n // 5. delete GAN\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n }\n return true\n}\n\nexport async function generateArrivalNoticeFunction(\n _: any,\n arrivalNotice: any,\n fromPo: Boolean,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { domain, user } = context.state\n let orderProducts: OrderProduct[] = arrivalNotice.orderProducts\n let orderVass: OrderVas[] = arrivalNotice.orderVass\n let myBizplace: Bizplace\n let orderNo: string = ''\n\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (arrivalNotice.bizplace) myBizplace = arrivalNotice.bizplace\n else if (arrivalNotice.customerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.customerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.customerBizplaceId\n } else if (arrivalNotice.partnerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.partnerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.partnerBizplaceId\n } else if (arrivalNotice.warehouseId) myBizplace = await getOutletBizplace(arrivalNotice.warehouseId)\n else myBizplace = await getMyBizplace(domain, user)\n\n if (arrivalNotice.supplier) {\n const supplier: ContactPoint = await tx\n .getRepository(ContactPoint)\n .findOne({ where: { bizplace: arrivalNotice.supplier, domain }, relations: ['bizplace'] })\n\n if (!supplier) throw new Error('contact point does not exist')\n\n arrivalNotice.supplier = supplier\n }\n // find GAN number rule setting\n const ganNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n if (ganNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.arrivalNotice()\n }\n\n // 1. Create arrival notice\n const createdArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...arrivalNotice,\n name: orderNo,\n domain,\n bizplace: myBizplace,\n looseItem: arrivalNotice?.looseItem ? arrivalNotice.looseItem : false,\n status: fromPo ? ORDER_STATUS.INTRANSIT : ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // 2. Create arrival notice product\n await addArrivalNoticeProducts(\n domain,\n createdArrivalNotice,\n orderProducts.map((op: OrderProduct) => {\n return { ...op, status: fromPo ? ORDER_PRODUCT_STATUS.INTRANSIT : ORDER_PRODUCT_STATUS.PENDING }\n }),\n user,\n tx\n )\n\n await generateJobSheet(domain, user, createdArrivalNotice, tx)\n\n // 3. Create arrival notice vas\n if (orderVass?.length) {\n orderVass = await Promise.all(\n orderVass.map(async (ov: OrderVas) => {\n if (ov.targetProduct) {\n ov.targetProduct = await tx.getRepository(Product).findOneBy({ id: ov.targetProduct.id })\n }\n\n return {\n ...ov,\n domain,\n bizplace: myBizplace,\n name: OrderNoGenerator.orderVas(),\n vas: await tx.getRepository(Vas).findOneBy({ domain: { id: domain.id }, id: ov.vas.id }),\n type: ORDER_TYPES.ARRIVAL_NOTICE,\n arrivalNotice: createdArrivalNotice,\n status: fromPo ? ORDER_VAS_STATUS.INTRANSIT : ORDER_VAS_STATUS.PENDING,\n creator: user,\n updater: user\n }\n })\n )\n await tx.getRepository(OrderVas).save(orderVass)\n }\n\n if (files?.length) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.GAN,\n refBy: createdArrivalNotice.id,\n category: ATTACHMENT_TYPE.GAN /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return createdArrivalNotice\n}\n\nexport async function confirmArrivalNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING },\n relations: [\n 'bizplace',\n 'bizplace.domain',\n 'releaseGood',\n 'orderProducts',\n 'orderProducts.product',\n 'orderVass',\n 'orderVass.vas',\n 'creator',\n 'updater'\n ]\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n let opStatus = ORDER_PRODUCT_STATUS.PENDING_RECEIVE\n let anStatus = ORDER_STATUS.PENDING_RECEIVE\n let ovStatus = ORDER_VAS_STATUS.PENDING_RECEIVE\n let acceptedByUser = null\n let acceptedTime = null\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: ganProcessingSetting, domain, partnerDomain: customerBizplace?.domain }\n })\n\n // If status of GAN is PENDING_RECEIVE then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // CONFIRM to assign if setting value is 1\n if (setting == 1) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n ovStatus = ORDER_VAS_STATUS.ARRIVED\n acceptedByUser = user\n acceptedTime = new Date()\n }\n }\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. GAN Status change (PENDING => PENDING_RECEIVE)\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: anStatus,\n updater: user,\n acceptedBy: acceptedByUser,\n acceptedAt: acceptedTime\n })\n\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return { ...op, status: opStatus }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update order vas status if it exists.\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return { ...ov, status: ovStatus }\n })\n\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // notification logics\n // get Office Admin Users\n if (context?.state?.type != 'api') {\n const users: any[] = await tx\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 = 'Office Admin'\")\n .andWhere('role.domain_id = :domain', { domain: domain.id })\n .getQuery()\n return 'ur.roles_id IN ' + subQuery\n })\n .getRawMany()\n\n // send notification to Office Admin Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `New Arrival Notice from ${customerBizplace.name}`,\n body: `New incoming order, ${foundArrivalNotice.name} is pending for receiving`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n }\n\n return arrivalNotice\n}\n\nexport async function receiveArrivalNoticeFunction(\n _: any,\n name: string,\n context: ResolverContext\n): Promise<ArrivalNotice> {\n const { user, domain, tx } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'bizplace.domain', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = await tx.getRepository(CollectionOrder).find({\n where: { domain: { id: domain.id }, refNo: foundArrivalNotice.name }\n })\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n let opStatus = ORDER_PRODUCT_STATUS.INTRANSIT\n let anStatus = ORDER_STATUS.INTRANSIT\n let ovStatus = ORDER_VAS_STATUS.INTRANSIT\n let coStatus = ORDER_STATUS.READY_TO_DISPATCH\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: ganProcessingSetting, domain, partnerDomain: customerBizplace?.domain }\n })\n\n // If status of GAN is INTRANSIT then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // RECEIVE to assign if setting value is 2\n if (setting == 2) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n ovStatus = ORDER_VAS_STATUS.ARRIVED\n coStatus = ORDER_STATUS.READY_TO_DISPATCH\n }\n }\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Update status of order products (PENDING_RECEIVE => INTRANSIT)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: opStatus,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => INTRANSIT)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ovStatus,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => READY_TO_DISPATCH)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n return {\n ...co,\n status: coStatus,\n updater: user\n }\n })\n }\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been received and processed by ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n // 4. Update status of arrival notice (PENDING_RECEIVE => INTRANSIT)\n let rcvArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: anStatus,\n acceptedBy: user,\n acceptedAt: new Date(),\n updater: user\n })\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function checkArrivedNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.INTRANSIT },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n debug('ganNo', name, foundArrivalNotice)\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Check wheter related collection order is done or not\n const foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n if (foundCOs && foundCOs.length) {\n foundCOs.map((co: CollectionOrder) => {\n if (co.status !== ORDER_STATUS.DONE) {\n throw new Error(`Collection Order: ${co.name} is not finished yet.`)\n }\n })\n }\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 2. Update status of order products (INTRANSIT => ARRIVED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 3. Update status of order vass if it exists (INTRANSIT => ARRIVED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 4. Update status of arrival notice (INTRANSIT => ARRIVED)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.ARRIVED,\n updater: user\n })\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your goods has safely arrived at ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function rejectArrivalNotice(\n tx: EntityManager,\n name: string,\n remark: string,\n context: any\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'orderProducts', 'orderVass', 'collectionOrders']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n if (!remark) throw new Error('Remark is not exist.')\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n\n // 1. Update status of order products (PENDING_RECEIVE => REJECTED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n op.status = ORDER_PRODUCT_STATUS.REJECTED\n op.updater = user\n return op\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => REJECTED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n ov.status = ORDER_VAS_STATUS.REJECTED\n ov.updater = user\n return ov\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => REJECTED)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n co.status = ORDER_STATUS.REJECTED\n co.updater = user\n return co\n })\n await tx.getRepository(CollectionOrder).save(foundCOs)\n }\n\n foundArrivalNotice.remark = remark\n foundArrivalNotice.status = ORDER_STATUS.REJECTED\n foundArrivalNotice.updater = user\n await tx.getRepository(ArrivalNotice).save(foundArrivalNotice)\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been rejected.`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return foundArrivalNotice\n}\n\nexport async function addArrivalNoticeProducts(\n domain: Domain,\n arrivalNotice: ArrivalNotice,\n newOrderProducts: any[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n if (!arrivalNotice?.bizplace || !arrivalNotice?.orderProducts?.length) {\n arrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name: arrivalNotice.name },\n relations: ['bizplace', 'orderProducts']\n })\n }\n\n const createdOrderProducts: OrderProduct[] = await Promise.all(\n newOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: arrivalNotice.bizplace,\n name: OrderNoGenerator.orderProduct(),\n product: await productRepo.findOneBy({ id: op.product.id }),\n arrivalNotice,\n creator: user\n }\n })\n )\n\n debug('gan-created-order-products', createdOrderProducts)\n await orderProductRepo.save(createdOrderProducts)\n}\n\nexport async function editArrivalNoticeProducts(\n existingOrderProducts: (OrderProduct | OrderProductPatch)[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n const updatedOrderProducts: OrderProduct[] = await Promise.all(\n existingOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.EDITED,\n updater: user\n }\n })\n )\n\n debug('gan-updated-order-products', updatedOrderProducts)\n await orderProductRepo.save(updatedOrderProducts)\n}\n\nfunction extractArrivalNotices(rawArrivalNotices): Partial<ArrivalNotice[]> {\n return rawArrivalNotices.reduce((arrivalNotices, raw) => {\n // discard the item that has no productId or productDetailId\n if (!raw.productId || !raw.productDetailId) return\n\n const idx: number = arrivalNotices.findIndex(an => {\n // consider these attributes if they are exist in \"item\"\n const comparison = [\n 'refNo2',\n 'refNo3',\n 'truckNo',\n 'ownTransport',\n 'container',\n 'containerNo',\n 'containerSize',\n 'looseItem',\n 'importCargo'\n ]\n\n let a: any = {},\n b: any = {}\n\n comparison.forEach(cc => {\n if (raw[cc] !== null) {\n a[cc] = raw[cc]\n b[cc] = an[cc]\n }\n })\n\n a = JSON.stringify(Object.fromEntries(Object.entries(a).sort()))\n b = JSON.stringify(Object.fromEntries(Object.entries(b).sort()))\n\n return an.refNo == raw.refNo && an.etaDate == raw.etaDate && a === b\n })\n\n const product: Product = Object.assign(new Product(), { id: raw.productId, sku: raw.sku })\n const orderProduct: Partial<OrderProduct> = {\n product,\n batchId: raw.batchId,\n batchIdRef: raw.batchIdRef,\n packingType: raw.packingType,\n packingSize: raw.packingSize,\n packQty: raw.packQty,\n uomValue: raw.uomValue,\n uom: raw.uom,\n totalUomValue: raw.totalUomValue,\n palletQty: raw.palletQty,\n unitPrice: raw.unitPrice,\n manufactureDate: raw.manufactureDate\n }\n\n if (idx >= 0) {\n const duplicateSkuIdx: number = arrivalNotices[idx].orderProducts.findIndex(\n op =>\n op.sku === raw.sku &&\n op.packingType === raw.packingType &&\n op.packingSize === raw.packingSize &&\n op.batchId === raw.batchId\n )\n\n if (duplicateSkuIdx >= 0) arrivalNotices[idx].orderProducts[duplicateSkuIdx].packQty += raw.packQty\n else arrivalNotices[idx].orderProducts.push(orderProduct)\n } else {\n arrivalNotices.push({\n refNo: raw.refNo,\n refNo2: raw.refNo2,\n refNo3: raw.refNo3,\n etaDate: raw.etaDate,\n truckNo: raw.truckNo,\n ownTransport: raw.ownTransport,\n container: raw.container,\n containerNo: raw.containerNo,\n containerSize: raw.containerSize,\n importCargo: raw.importCargo,\n looseItem: raw.looseItem,\n orderProducts: [orderProduct]\n })\n }\n\n return arrivalNotices\n }, [])\n}\n\nfunction formRawArrivalNotices(arrivalNotice, errorMsg) {\n let rawArrivalNotices = []\n for (let i = 0, l = arrivalNotice.orderProducts.length; i < l; i++) {\n let rawArrivalNotice = {\n ...arrivalNotice,\n ...arrivalNotice.orderProducts[i],\n sku: arrivalNotice.orderProducts[i].product.sku,\n errorMsg\n }\n\n delete rawArrivalNotice.orderProducts\n delete rawArrivalNotice.product\n\n rawArrivalNotices.push(rawArrivalNotice)\n }\n return rawArrivalNotices\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a, _b;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.validateBulkArrivalNoticesFunction = exports.ArrivalNoticeQuery = void 0;
5
4
  const tslib_1 = require("tslib");
@@ -24,7 +23,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
24
23
  param = Object.assign(Object.assign({}, param), { refNo });
25
24
  else
26
25
  return;
27
- let foundGAN = await (0, typeorm_1.getRepository)(arrival_notice_1.ArrivalNotice).findOne({
26
+ let foundGAN = await (0, shell_1.getRepository)(arrival_notice_1.ArrivalNotice).findOne({
28
27
  where: Object.assign({}, param),
29
28
  relations: [
30
29
  'domain',
@@ -50,17 +49,17 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
50
49
  if (name && !foundGAN)
51
50
  throw new Error(`Failed to find arrival notice with ${name}`);
52
51
  if (foundGAN) {
53
- const foundAttachments = await (0, typeorm_1.getRepository)(attachment_base_1.Attachment).find({
52
+ const foundAttachments = await (0, shell_1.getRepository)(attachment_base_1.Attachment).find({
54
53
  where: {
55
- domain,
54
+ domain: { id: domain.id },
56
55
  refBy: foundGAN === null || foundGAN === void 0 ? void 0 : foundGAN.id,
57
56
  category: constants_1.ATTACHMENT_TYPE.GAN
58
57
  }
59
58
  });
60
59
  const foundPOAttachments = ((_a = foundGAN === null || foundGAN === void 0 ? void 0 : foundGAN.purchaseOrder) === null || _a === void 0 ? void 0 : _a.id)
61
- ? await (0, typeorm_1.getRepository)(attachment_base_1.Attachment).find({
60
+ ? await (0, shell_1.getRepository)(attachment_base_1.Attachment).find({
62
61
  where: {
63
- domain,
62
+ domain: { id: domain.id },
64
63
  refBy: (_b = foundGAN.purchaseOrder) === null || _b === void 0 ? void 0 : _b.id,
65
64
  category: constants_1.ATTACHMENT_TYPE.PO
66
65
  }
@@ -68,7 +67,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
68
67
  : [];
69
68
  // add productDetails data to orderProduct.product
70
69
  foundGAN.orderProducts = await Promise.all(foundGAN.orderProducts.map(async (orderProduct) => {
71
- orderProduct.product['productDetails'] = await (0, typeorm_1.getRepository)(product_base_1.ProductDetail).find({
70
+ orderProduct.product['productDetails'] = await (0, shell_1.getRepository)(product_base_1.ProductDetail).find({
72
71
  where: {
73
72
  product: orderProduct.product.id,
74
73
  packingType: orderProduct.packingType,
@@ -80,7 +79,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
80
79
  // add productDetails data to orderInventory.inventory.product if orderInventory is exist
81
80
  if (foundGAN.orderInventories && foundGAN.orderInventories.length) {
82
81
  foundGAN.orderInventories = await Promise.all(foundGAN.orderInventories.map(async (orderInventory) => {
83
- orderInventory.inventory.product['productDetails'] = await (0, typeorm_1.getRepository)(product_base_1.ProductDetail).find({
82
+ orderInventory.inventory.product['productDetails'] = await (0, shell_1.getRepository)(product_base_1.ProductDetail).find({
84
83
  where: {
85
84
  product: orderInventory.inventory.product.id,
86
85
  packingType: orderInventory.inventory.packingType,
@@ -138,7 +137,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
138
137
  relation: false
139
138
  });
140
139
  }
141
- const qb = (0, typeorm_1.getRepository)(arrival_notice_1.ArrivalNotice).createQueryBuilder('an');
140
+ const qb = (0, shell_1.getRepository)(arrival_notice_1.ArrivalNotice).createQueryBuilder('an');
142
141
  (0, shell_1.buildQuery)(qb, params, context);
143
142
  qb.addSelect('COALESCE("cc".rank, 9999)', 'rank');
144
143
  qb.leftJoinAndSelect('an.domain', 'domain');
@@ -205,7 +204,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
205
204
  relation: false
206
205
  });
207
206
  }
208
- const qb = (0, typeorm_1.getRepository)(arrival_notice_1.ArrivalNotice).createQueryBuilder('an');
207
+ const qb = (0, shell_1.getRepository)(arrival_notice_1.ArrivalNotice).createQueryBuilder('an');
209
208
  (0, shell_1.buildQuery)(qb, params, context);
210
209
  qb.addSelect('COALESCE("cc".rank, 9999)', 'rank');
211
210
  qb.leftJoinAndSelect('an.domain', 'domain');
@@ -240,13 +239,13 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
240
239
  return await validateBulkArrivalNoticesFunction(rawArrivalNotices, bizplaceId, tx);
241
240
  }
242
241
  async domain(arrivalNotice) {
243
- return await (0, typeorm_1.getRepository)(shell_1.Domain).findOne(arrivalNotice.domainId);
242
+ return await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: arrivalNotice.domainId });
244
243
  }
245
244
  async creator(arrivalNotice) {
246
- return await (0, typeorm_1.getRepository)(auth_base_1.User).findOne(arrivalNotice.creatorId);
245
+ return await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: arrivalNotice.creatorId });
247
246
  }
248
247
  async updater(arrivalNotice) {
249
- return await (0, typeorm_1.getRepository)(auth_base_1.User).findOne(arrivalNotice.updaterId);
248
+ return await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: arrivalNotice.updaterId });
250
249
  }
251
250
  };
252
251
  tslib_1.__decorate([
@@ -265,7 +264,7 @@ tslib_1.__decorate([
265
264
  tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
266
265
  tslib_1.__param(1, (0, type_graphql_1.Args)()),
267
266
  tslib_1.__metadata("design:type", Function),
268
- tslib_1.__metadata("design:paramtypes", [Object, typeof (_a = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _a : Object]),
267
+ tslib_1.__metadata("design:paramtypes", [Object, shell_1.ListParam]),
269
268
  tslib_1.__metadata("design:returntype", Promise)
270
269
  ], ArrivalNoticeQuery.prototype, "arrivalNotices", null);
271
270
  tslib_1.__decorate([
@@ -274,7 +273,7 @@ tslib_1.__decorate([
274
273
  tslib_1.__param(0, (0, type_graphql_1.Args)()),
275
274
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
276
275
  tslib_1.__metadata("design:type", Function),
277
- tslib_1.__metadata("design:paramtypes", [typeof (_b = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _b : Object, Object]),
276
+ tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
278
277
  tslib_1.__metadata("design:returntype", Promise)
279
278
  ], ArrivalNoticeQuery.prototype, "arrivalNoticeRequests", null);
280
279
  tslib_1.__decorate([
@@ -443,7 +442,6 @@ async function validateBulkArrivalNoticesFunction(rawArrivalNotices, bizplaceId,
443
442
  AND raw.import_cargo = an.import_cargo
444
443
  LEFT JOIN products pr ON LOWER(pr.sku) = LOWER(raw.sku)
445
444
  LEFT JOIN product_details pd ON pr.id = pd.product_id
446
- AND pr.bizplace_id = $1
447
445
  AND CASE WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom NOTNULL
448
446
  THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.uom = raw.uom
449
447
  WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom ISNULL
@@ -451,6 +449,7 @@ async function validateBulkArrivalNoticesFunction(rawArrivalNotices, bizplaceId,
451
449
  WHEN raw.packing_type ISNULL AND raw.packing_size ISNULL AND raw.uom NOTNULL
452
450
  THEN pd.uom = raw.uom AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE
453
451
  END
452
+ WHERE pr.bizplace_id = $1
454
453
  GROUP BY raw.ref_no, raw.ref_no_2, raw.ref_no_3, raw.eta_date, raw.truck_no, raw.own_transport, raw.container, raw.container_no, raw.container_size, raw.import_cargo, raw.loose_item,
455
454
  pr.id, pd.id, raw.sku, pr.name, pr.description, raw.batch_id, raw.batch_id_ref, raw.packing_type, raw.packing_size, raw.uom, raw.unit_price, raw.manufacture_date, an.ref_no, an.name
456
455
  ) SELECT foo.*,