@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,44 +1,40 @@
1
- import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root, Directive } from 'type-graphql'
2
- import { getRepository, SelectQueryBuilder, EntityManager, In, getManager } from 'typeorm'
3
-
4
- import { checkUserBelongsDomain, User } from '@things-factory/auth-base'
5
- import { Bizplace, getPermittedBizplaces, getPermittedBizplaceIds } from '@things-factory/biz-base'
6
- import { buildQuery, Domain, ListParam, Filter, Pagination, Sorting } from '@things-factory/shell'
7
-
8
- import { DRAFT_RELEASE_ORDER_STATUS, ORDER_STATUS } from '../../constants'
9
- import { DraftReleaseGood } from './draft-release-good'
10
- import { DraftReleaseGoodList } from './draft-release-good-type'
1
+ import { Arg, Args, Ctx, Directive, Query, Resolver } from 'type-graphql'
2
+ import { EntityManager, In, OrderByCondition, SelectQueryBuilder } from 'typeorm'
11
3
 
12
4
  import { Attachment } from '@things-factory/attachment-base'
13
- import { ATTACHMENT_TYPE } from '../../constants'
5
+ import { User } from '@things-factory/auth-base'
6
+ import { Bizplace, getPermittedBizplaceIds, getPermittedBizplaces } from '@things-factory/biz-base'
7
+ import { buildQuery, Domain, getRepository, ListParam } from '@things-factory/shell'
14
8
 
9
+ import { ATTACHMENT_TYPE, DRAFT_RELEASE_ORDER_STATUS } from '../../constants'
15
10
  import { InventoryUtil } from '../../utils'
16
- import { OrderProduct } from '../order-product/order-product'
11
+ import { DraftReleaseGood } from './draft-release-good'
12
+ import { DraftReleaseGoodList } from './draft-release-good-type'
17
13
 
18
14
  @Resolver(DraftReleaseGood)
19
15
  export class DraftReleaseGoodQuery {
20
16
  @Query(returns => DraftReleaseGood, { description: 'To fetch a DraftReleaseGood' })
21
- async draftReleaseGood(@Arg('id') id: string, @Ctx() context: any): Promise<DraftReleaseGood> {
17
+ async draftReleaseGood(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<DraftReleaseGood> {
22
18
  const { domain } = context.state
23
19
 
24
20
  return await getRepository(DraftReleaseGood).findOne({
25
- where: { domain, id }
21
+ where: { domain: { id: domain.id }, id }
26
22
  })
27
23
  }
28
24
 
29
25
  @Directive('@transaction')
30
26
  @Query(returns => DraftReleaseGood, { description: 'To fetch a DraftReleaseGood' })
31
- async draftReleaseGoodByName(@Arg('name') name: string, @Ctx() context: any): Promise<DraftReleaseGood> {
32
- const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
27
+ async draftReleaseGoodByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<DraftReleaseGood> {
28
+ const { domain, tx } = context.state
33
29
 
34
30
  return getDraftReleaseGoodFunction(null, name, context, tx)
35
31
  }
36
32
 
37
33
  @Directive('@transaction')
38
34
  @Query(returns => DraftReleaseGoodList, { description: 'To fetch multiple DraftReleaseGoods' })
39
- async draftReleaseGoods(@Args() params: ListParam, @Ctx() context: any): Promise<DraftReleaseGoodList> {
35
+ async draftReleaseGoods(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<DraftReleaseGoodList> {
40
36
  try {
41
- const { domain, user, tx }: { domain: Domain; user: User, tx: EntityManager } = context.state
37
+ const { domain, user, tx } = context.state
42
38
 
43
39
  const statusFilter = params.filters.find(e => e.name === 'status')
44
40
  const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')
@@ -55,7 +51,9 @@ export class DraftReleaseGoodQuery {
55
51
  })
56
52
  }
57
53
 
58
- params.filters = params.filters.filter(itm => itm.name !== 'noOfItems' && itm.name !== 'sku' && itm.name !== 'status')
54
+ params.filters = params.filters.filter(
55
+ itm => itm.name !== 'noOfItems' && itm.name !== 'sku' && itm.name !== 'status'
56
+ )
59
57
 
60
58
  if (orderRemarkFilter) {
61
59
  const orderRemarkIdx = params.filters.findIndex(param => param.name === 'orderRemark')
@@ -104,27 +102,31 @@ export class DraftReleaseGoodQuery {
104
102
  })
105
103
  }
106
104
 
107
- tx.query(`
105
+ tx.query(
106
+ `
108
107
  create temp table temp_op_calculation on commit drop as (
109
- select drg1.id, sum(case when wboi."remainQty" >= op.release_qty then 0 else 1 end) as insufficient_count, count(*) as total_row
110
- from draft_release_goods drg1
108
+ SELECT drg1.id from draft_release_goods drg1
111
109
  left join order_products op on drg1.id = op.draft_release_good_id
112
- left join warehouse_bizplace_onhand_inventories wboi
113
- on (wboi."productId" = op.product_id or wboi."productBundleId" = op.product_id)
114
- and wboi."packingType" = op.packing_type
115
- and wboi."packingSize" = op.packing_size
116
- and wboi.uom = op.uom
110
+ where drg1.status ='DRAFT' AND drg1.domain_id = $1
111
+ AND NOT EXISTS (
112
+ SELECT * FROM warehouse_bizplace_onhand_inventories wboi
113
+ where (wboi."productId" = op.product_id or wboi."productBundleId" = op.product_id)
117
114
  and wboi."domainId" = op.domain_id
118
115
  and wboi."bizplaceId" = op.bizplace_id
119
- where op.domain_id = $1 and drg1.status ='DRAFT'
120
- group by drg1.id
116
+ AND wboi."remainQty" >= op.release_qty
117
+ ) GROUP BY drg1.id
121
118
  )
122
- `, [domain.id])
119
+ `,
120
+ [domain.id]
121
+ )
123
122
 
124
123
  const qb: SelectQueryBuilder<DraftReleaseGood> = tx.getRepository(DraftReleaseGood).createQueryBuilder('drg')
125
124
  buildQuery(qb, params, context)
126
125
  qb.addSelect('COALESCE("cc".rank, 99999)', 'rank')
127
- qb.addSelect(`CASE WHEN "drg".status = 'DRAFT' and (tmp_calc.insufficient_count > 0 or tmp_calc.total_row = 0) then 'INSUFFICIENT' else "drg".status END`, 'computed_status')
126
+ qb.addSelect(
127
+ `CASE WHEN "drg".status = 'DRAFT' and tmp_calc.id IS NOT null then 'INSUFFICIENT' else "drg".status END`,
128
+ 'computed_status'
129
+ )
128
130
  qb.leftJoin(`temp_op_calculation`, 'tmp_calc', 'tmp_calc.id = drg.id')
129
131
  qb.leftJoinAndSelect('drg.domain', 'domain')
130
132
  qb.leftJoinAndSelect('drg.bizplace', 'bizplace')
@@ -194,7 +196,7 @@ export class DraftReleaseGoodQuery {
194
196
  }
195
197
 
196
198
  const arrChildSortData = ['bizplace', 'creator']
197
- const sort = (params.sortings || []).reduce(
199
+ const sort: OrderByCondition = (params.sortings || []).reduce(
198
200
  (acc, sort) => ({
199
201
  ...acc,
200
202
  [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'drg.' + sort.name]: sort.desc
@@ -205,10 +207,11 @@ export class DraftReleaseGoodQuery {
205
207
  )
206
208
 
207
209
  qb.orderBy(sort)
210
+ qb.offset((params.pagination.page - 1) * params.pagination.limit)
211
+ qb.limit(params.pagination.limit)
208
212
 
209
213
  let [items, total] = await Promise.all([qb.getRawMany(), qb.getCount()])
210
214
 
211
-
212
215
  items = items.map(itm => {
213
216
  return {
214
217
  id: itm.drg_id,
@@ -234,7 +237,6 @@ export class DraftReleaseGoodQuery {
234
237
  } catch (error) {
235
238
  throw error
236
239
  }
237
-
238
240
  }
239
241
  }
240
242
 
@@ -244,7 +246,7 @@ export async function getDraftReleaseGoodFunction(_: any, name: any, context: an
244
246
 
245
247
  let permittedBizplaces = await getPermittedBizplaces(domain, user)
246
248
  let result = await tx.getRepository(DraftReleaseGood).findOne({
247
- where: { domain, name, bizplace: In(permittedBizplaces.map(biz => biz.id)) },
249
+ where: { domain: { id: domain.id }, name, bizplace: In(permittedBizplaces.map(biz => biz.id)) },
248
250
  relations: [
249
251
  'releaseGood',
250
252
  'orderProducts',
@@ -260,7 +262,6 @@ export async function getDraftReleaseGoodFunction(_: any, name: any, context: an
260
262
 
261
263
  if (!result?.id) throw new Error(`Failed to find draft release good ${name}`)
262
264
 
263
-
264
265
  let foundPermittedBizplace: Bizplace
265
266
  let companyBizplace: Bizplace
266
267
 
@@ -269,7 +270,8 @@ export async function getDraftReleaseGoodFunction(_: any, name: any, context: an
269
270
 
270
271
  if (foundPermittedBizplace) {
271
272
  if (!foundPermittedBizplace.company?.id) {
272
- foundPermittedBizplace = await tx.getRepository(Bizplace).findOne(foundPermittedBizplace.id, {
273
+ foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({
274
+ where: { id: foundPermittedBizplace.id },
273
275
  relations: ['company', 'company.domain']
274
276
  })
275
277
  }
@@ -282,22 +284,58 @@ export async function getDraftReleaseGoodFunction(_: any, name: any, context: an
282
284
 
283
285
  let productInventory
284
286
  if (result.orderProducts.length > 0)
285
- productInventory = await InventoryUtil.bizplaceProductInventory(bizplaces, { filters: [{ name: 'bizplaceId', operator: 'eq', value: result.bizplace.id }, { name: 'productId', operator: 'in', value: [...result.orderProducts.filter(itm => itm?.product).map(itm => { return itm.product.id }), ...result.orderProducts.filter(itm => itm?.productBundle).map(itm => { return itm.productBundle.id })] }] }, context, tx)
287
+ productInventory = await InventoryUtil.bizplaceProductInventory(
288
+ bizplaces,
289
+ {
290
+ filters: [
291
+ { name: 'bizplaceId', operator: 'eq', value: result.bizplace.id },
292
+ {
293
+ name: 'productId',
294
+ operator: 'in',
295
+ value: [
296
+ ...result.orderProducts
297
+ .filter(itm => itm?.product)
298
+ .map(itm => {
299
+ return itm.product.id
300
+ }),
301
+ ...result.orderProducts
302
+ .filter(itm => itm?.productBundle)
303
+ .map(itm => {
304
+ return itm.productBundle.id
305
+ })
306
+ ]
307
+ }
308
+ ]
309
+ },
310
+ context,
311
+ tx
312
+ )
286
313
 
287
314
  result.orderProducts = result.orderProducts.map(itm => {
288
- let foundProductInv = productInventory?.items.find(i => (i.productId == itm?.product?.id || i.productId == itm?.productBundle?.id) && i.packingType == itm.packingType && i.packingSize == itm.packingSize && i.uom == itm.uom)
315
+ let foundProductInv = productInventory?.items.find(
316
+ i =>
317
+ (i.productId == itm?.product?.id || i.productId == itm?.productBundle?.id) &&
318
+ i.packingType == itm.packingType &&
319
+ i.packingSize == itm.packingSize &&
320
+ i.uom == itm.uom
321
+ )
289
322
  return {
290
323
  ...itm,
291
- product: itm.product || { id: foundProductInv.productId, name: foundProductInv.productName, brand: foundProductInv.productBrand, sku: foundProductInv.productSKU },
324
+ product: itm.product || {
325
+ id: foundProductInv.productId,
326
+ name: foundProductInv.productName,
327
+ brand: foundProductInv.productBrand,
328
+ sku: foundProductInv.productSKU
329
+ },
292
330
  groupType: foundProductInv ? foundProductInv.groupType : 'SINGLE',
293
331
  remainQty: foundProductInv ? foundProductInv.remainQty : 0,
294
332
  remainUomValue: foundProductInv ? foundProductInv.remainUomValue : 0,
295
- remainUomValueWithUom: foundProductInv ? foundProductInv.remainUomValueWithUom : 0,
333
+ remainUomValueWithUom: foundProductInv ? foundProductInv.remainUomValueWithUom : 0
296
334
  }
297
335
  })
298
336
  const foundAttachments: Attachment[] = await tx.getRepository(Attachment).find({
299
337
  where: {
300
- domain,
338
+ domain: { id: domain.id },
301
339
  refBy: result.id,
302
340
  category: ATTACHMENT_TYPE.DGRN
303
341
  }
@@ -307,8 +345,7 @@ export async function getDraftReleaseGoodFunction(_: any, name: any, context: an
307
345
  ...result,
308
346
  attachment: foundAttachments
309
347
  }
310
-
311
348
  } catch (error) {
312
349
  console.error(error)
313
350
  }
314
- }
351
+ }
@@ -1,4 +1,4 @@
1
- import { Field, ID, Float, ObjectType, registerEnumType } from 'type-graphql'
1
+ import { Field, ID, ObjectType } from 'type-graphql'
2
2
  import {
3
3
  Column,
4
4
  CreateDateColumn,
@@ -98,8 +98,8 @@ export class DraftReleaseGood {
98
98
  DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
99
99
  ? 'enum'
100
100
  : DATABASE_TYPE == 'oracle'
101
- ? 'varchar2'
102
- : 'smallint',
101
+ ? 'varchar2'
102
+ : 'smallint',
103
103
  enum: ReleaseOrderType,
104
104
  default: ReleaseOrderType.B2B
105
105
  })
@@ -233,6 +233,10 @@ export class DraftReleaseGood {
233
233
  @Field({ nullable: true })
234
234
  email: string
235
235
 
236
+ @Column({ nullable: true })
237
+ @Field({ nullable: true })
238
+ packageId: string
239
+
236
240
  @ManyToOne(type => ContactPoint)
237
241
  @Field(type => ContactPoint, { nullable: true })
238
242
  deliverTo: ContactPoint
@@ -1,10 +1,12 @@
1
+ import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
+ import { EntityManager, In, Repository } from 'typeorm'
3
+
1
4
  import { User } from '@things-factory/auth-base'
2
5
  import { Bizplace } from '@things-factory/biz-base'
3
6
  import { generateId } from '@things-factory/id-rule-base'
4
7
  import { Setting } from '@things-factory/setting-base'
5
- import { Domain } from '@things-factory/shell'
6
- import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
7
- import { EntityManager, getRepository, In, Repository } from 'typeorm'
8
+ import { Domain, getRepository } from '@things-factory/shell'
9
+
8
10
  import { ArrivalNotice, NewGoodsReceivalNote } from '../'
9
11
  import { GRN_STATUS, ORDER_NUMBER_RULE_TYPE, ORDER_NUMBER_SETTING_KEY } from '../../constants'
10
12
  import { OrderNoGenerator } from '../../utils/order-no-generator'
@@ -16,18 +18,18 @@ export class GoodsReceivalNoteMutation {
16
18
  @Directive('@privilege(category: "order_warehouse", privilege: "mutation")')
17
19
  @Directive('@transaction')
18
20
  async generateGoodsReceivalNote(
19
- @Ctx() context: any,
21
+ @Ctx() context: ResolverContext,
20
22
  @Arg('grn', type => NewGoodsReceivalNote, { nullable: true }) grn?: NewGoodsReceivalNote
21
23
  ): Promise<GoodsReceivalNote> {
22
- const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
24
+ const { tx, domain, user } = context.state
23
25
  return await generateGoodsReceivalNote(grn, domain, user, tx)
24
26
  }
25
27
 
26
28
  @Mutation(returns => Boolean)
27
29
  @Directive('@privilege(category: "order_warehouse", privilege: "mutation")')
28
30
  @Directive('@transaction')
29
- async deleteGoodsReceivalNote(@Arg('name') name: string, @Ctx() context: any): Promise<boolean> {
30
- const { tx, domain }: { tx: EntityManager; domain: Domain } = context.state
31
+ async deleteGoodsReceivalNote(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<boolean> {
32
+ const { tx, domain } = context.state
31
33
  await tx.getRepository(GoodsReceivalNote).delete({ domain, name })
32
34
  return true
33
35
  }
@@ -37,11 +39,11 @@ export class GoodsReceivalNoteMutation {
37
39
  @Directive('@transaction')
38
40
  async deleteGoodsReceivalNotes(
39
41
  @Arg('names', type => [String]) names: string[],
40
- @Ctx() context: any
42
+ @Ctx() context: ResolverContext
41
43
  ): Promise<boolean> {
42
- const { tx, domain }: { tx: EntityManager; domain: Domain } = context.state
44
+ const { tx, domain } = context.state
43
45
  await tx.getRepository(GoodsReceivalNote).delete({
44
- domain,
46
+ domain: { id: domain.id },
45
47
  name: In(names)
46
48
  })
47
49
  return true
@@ -49,11 +51,14 @@ export class GoodsReceivalNoteMutation {
49
51
 
50
52
  @Mutation(returns => GoodsReceivalNote)
51
53
  @Directive('@transaction')
52
- async receivedGoodsReceivalNote(@Arg('name') name: string, @Ctx() context: any): Promise<GoodsReceivalNote> {
53
- const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
54
+ async receivedGoodsReceivalNote(
55
+ @Arg('name') name: string,
56
+ @Ctx() context: ResolverContext
57
+ ): Promise<GoodsReceivalNote> {
58
+ const { tx, domain, user } = context.state
54
59
 
55
60
  const goodsReceivalNote = await tx.getRepository(GoodsReceivalNote).findOne({
56
- where: { domain, name }
61
+ where: { domain: { id: domain.id }, name }
57
62
  })
58
63
 
59
64
  return await tx.getRepository(GoodsReceivalNote).save({
@@ -66,11 +71,11 @@ export class GoodsReceivalNoteMutation {
66
71
 
67
72
  @Mutation(returns => GoodsReceivalNote)
68
73
  @Directive('@transaction')
69
- async sendGoodsReceivalNote(@Arg('name') name: string, @Ctx() context: any): Promise<GoodsReceivalNote> {
70
- const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
74
+ async sendGoodsReceivalNote(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<GoodsReceivalNote> {
75
+ const { tx, domain, user } = context.state
71
76
 
72
77
  const goodsReceivalNote = await tx.getRepository(GoodsReceivalNote).findOne({
73
- where: { domain, name }
78
+ where: { domain: { id: domain.id }, name }
74
79
  })
75
80
 
76
81
  return await tx.getRepository(GoodsReceivalNote).save({
@@ -97,10 +102,10 @@ export async function generateGoodsReceivalNote(
97
102
  let orderNo: string = ''
98
103
 
99
104
  const bizplace: Bizplace = await bizplaceRepo.findOne({ where: { id: grn.customer } })
100
- const arrivalNotice: ArrivalNotice = await ganRepo.findOne({ where: { domain, name: grn.refNo } })
105
+ const arrivalNotice: ArrivalNotice = await ganRepo.findOne({ where: { domain: { id: domain.id }, name: grn.refNo } })
101
106
  const grnNoSetting: Setting = await settingRepo.findOne({
102
107
  where: {
103
- domain,
108
+ domain: { id: domain.id },
104
109
  name: ORDER_NUMBER_SETTING_KEY.GRN_NUMBER_RULE
105
110
  }
106
111
  })
@@ -1,18 +1,22 @@
1
1
  import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
- import { getRepository, SelectQueryBuilder } from 'typeorm'
2
+ import { IsNull, Not, OrderByCondition, SelectQueryBuilder } from 'typeorm'
3
3
 
4
- import { User } from '@things-factory/auth-base'
5
- import { getPermittedBizplaceIds } from '@things-factory/biz-base'
6
- import { buildQuery, Domain, ListParam } from '@things-factory/shell'
4
+ import { Partner, User } from '@things-factory/auth-base'
5
+ import { Bizplace, ContactPoint, getPermittedBizplaceIds } from '@things-factory/biz-base'
6
+ import { buildQuery, Domain, getRepository, ListParam } from '@things-factory/shell'
7
+ import { ReducedInventoryHistory } from '@things-factory/warehouse-base'
7
8
 
8
9
  import { GoodsReceivalNoteList } from '../'
10
+ import { DateTimeConverter } from '../../utils/datetime-util'
11
+ import { ArrivalNotice } from '../arrival-notice/arrival-notice'
12
+ import { OrderProduct } from '../order-product/order-product'
9
13
  import { GoodsReceivalNote } from './goods-receival-note'
10
14
 
11
15
  @Resolver(GoodsReceivalNote)
12
16
  export class GoodsReceivalNoteQuery {
13
17
  @Query(returns => GoodsReceivalNoteList)
14
- async goodsReceivalNotes(@Ctx() context: any, @Args() params: ListParam): Promise<GoodsReceivalNoteList> {
15
- const { domain, user }: { domain: Domain; user: User } = context.state
18
+ async goodsReceivalNotes(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<GoodsReceivalNoteList> {
19
+ const { domain, user } = context.state
16
20
 
17
21
  const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
18
22
  if (fromDateParamIdx >= 0) {
@@ -117,7 +121,7 @@ export class GoodsReceivalNoteQuery {
117
121
  const arrNameSortData = ['bizplace', 'arrivalNotice', 'updater']
118
122
  const arrGanStatusSortData = ['ganStatus']
119
123
  const arrGrnStatuSortData = ['status']
120
- const sort = (params.sortings || []).reduce(
124
+ const sort: OrderByCondition = (params.sortings || []).reduce(
121
125
  (acc, sort) => ({
122
126
  ...acc,
123
127
  [arrChildSortData.indexOf(sort.name) >= 0
@@ -141,26 +145,133 @@ export class GoodsReceivalNoteQuery {
141
145
  }
142
146
 
143
147
  @Query(returns => GoodsReceivalNote)
144
- async goodsReceivalNote(@Arg('name') name: string, @Ctx() context: any): Promise<GoodsReceivalNote> {
145
- const { domain }: { domain: Domain } = context.state
146
- return await getRepository(GoodsReceivalNote).findOne({
147
- where: { domain, name },
148
- relations: ['domain', 'bizplace', 'bizplace.company', 'arrivalNotice', 'creator', 'updater']
148
+ async goodsReceivalNote(
149
+ @Arg('name') name: string,
150
+ @Arg('timezoneOffSet') timezoneOffSet: string,
151
+ @Ctx() context: ResolverContext
152
+ ): Promise<any> {
153
+ const { domain } = context.state
154
+
155
+ const foundGRN: GoodsReceivalNote = await getRepository(GoodsReceivalNote).findOne({
156
+ where: { domain: { id: domain.id }, name },
157
+ relations: [
158
+ 'domain',
159
+ 'bizplace',
160
+ 'bizplace.domain',
161
+ 'bizplace.company',
162
+ 'arrivalNotice',
163
+ 'arrivalNotice.purchaseOrder'
164
+ ]
165
+ })
166
+
167
+ const foundGAN: ArrivalNotice = foundGRN.arrivalNotice
168
+ const ownRefNo = foundGAN.refNo
169
+
170
+ const partnerBiz: Bizplace = foundGRN.bizplace
171
+
172
+ const partnerDomain: Partner = await getRepository(Partner).findOne({
173
+ where: { partnerDomain: partnerBiz.domain, domain },
174
+ relations: ['domain']
175
+ })
176
+
177
+ const domainOwner: Domain = partnerDomain.domain
178
+ const domainBizplace: Bizplace = await getRepository(Bizplace).findOne({
179
+ where: { domain: domainOwner },
180
+ relations: ['company']
181
+ })
182
+
183
+ const qbReducedInventory = await getRepository(ReducedInventoryHistory)
184
+ .createQueryBuilder('ivh')
185
+ .select('product_id', 'productId')
186
+ .addSelect('batch_id', 'batchId')
187
+ .addSelect('reusable_pallet_id', 'reusablePalletId')
188
+ .addSelect('packing_type', 'packingType')
189
+ .addSelect('sum(qty)', 'qty')
190
+ .addSelect('sum(uom_value)', 'uomValue')
191
+ .addSelect('uom', 'uom')
192
+ .addSelect('count(distinct pallet_id)', 'pallet')
193
+ .addSelect(`string_agg(distinct expiration_date::varchar,', ' order by expiration_date::varchar)`, 'expiryDate')
194
+ .addSelect(`string_agg(distinct pallet_id::varchar,', ' order by pallet_id::varchar)`, 'palletId')
195
+ .where('ivh.domain_id = :domainId', { domainId: domain.id })
196
+ .andWhere('ivh.ref_order_id = :refOrderId', { refOrderId: foundGAN.id })
197
+ .andWhere(`ivh.transaction_type = 'UNLOADING'`)
198
+ .groupBy('reusable_pallet_id')
199
+ .addGroupBy('product_id')
200
+ .addGroupBy('batch_id')
201
+ .addGroupBy('packing_type')
202
+ .addGroupBy('uom')
203
+ .getRawMany()
204
+
205
+ // 5. find domain contact point
206
+ const foundCP: ContactPoint = await getRepository(ContactPoint).findOne({
207
+ where: { domain: { id: domain.id }, bizplace: domainBizplace }
149
208
  })
209
+
210
+ const inboundInventories: any[] = await qbReducedInventory
211
+
212
+ const targetProducts: OrderProduct[] = await getRepository(OrderProduct).find({
213
+ where: {
214
+ domain: { id: domain.id },
215
+ arrivalNotice: { id: foundGAN.id },
216
+ actualPalletQty: Not(IsNull()),
217
+ actualPackQty: Not(IsNull())
218
+ },
219
+ relations: ['product', 'arrivalNotice', 'arrivalNotice.purchaseOrder']
220
+ })
221
+
222
+ const data = {
223
+ grnNo: foundGRN.name,
224
+ ganNo: foundGAN.name,
225
+ refGANNo: foundGAN.refNo || '',
226
+ refGANNo2: foundGAN.refNo2 || '',
227
+ refGANNo3: foundGAN.refNo3 || '',
228
+ companyDomain: domainBizplace.company.name,
229
+ supplier: foundCP.name || '',
230
+ date: foundGAN.acceptedAt ? DateTimeConverter.datetime(foundGAN.acceptedAt, timezoneOffSet) : '',
231
+ productLists: targetProducts.map((item, idx) => {
232
+ let unloadInvHistory = inboundInventories.find(
233
+ ih =>
234
+ ih.productId == item.product.id &&
235
+ ih.batchId == item.batchId &&
236
+ ih.packingType == item.packingType &&
237
+ ih.uom == item.uom
238
+ )
239
+
240
+ return {
241
+ list_no: idx + 1,
242
+ po: item?.arrivalNotice?.purchaseOrder?.name ? item?.arrivalNotice?.purchaseOrder.name : '',
243
+ batchNo: item.batchId || '',
244
+ productSKU: `${item.product.sku}`,
245
+ productName: `${item.product.name}(${item.product.description})`,
246
+ productType: item.packingType,
247
+ productBatch: item.batchId,
248
+ expectedQty: item.packQty,
249
+ actualQty: unloadInvHistory.qty || item.actualPackQty,
250
+ actualUomValue: item.uomValue * item.actualPackQty,
251
+ productUom: `${unloadInvHistory.uom || item.uom}`,
252
+ expiryDate: unloadInvHistory.expiryDate || '',
253
+ unitPrice: item.unitPrice.toFixed(2) || 0.0,
254
+ manufactureDate: item.manufactureDate || '',
255
+ remark: (item.remark ? item.remark : '') + (item.issue ? ' [Issue]: ' + item.issue : '')
256
+ }
257
+ })
258
+ }
259
+
260
+ return data
150
261
  }
151
262
 
152
263
  @FieldResolver(type => Domain)
153
264
  async domain(@Root() goodsReceivalNote: GoodsReceivalNote): Promise<Domain> {
154
- return await getRepository(Domain).findOne(goodsReceivalNote.domainId)
265
+ return await getRepository(Domain).findOneBy({ id: goodsReceivalNote.domainId })
155
266
  }
156
267
 
157
268
  @FieldResolver(type => User)
158
269
  async creator(@Root() goodsReceivalNote: GoodsReceivalNote): Promise<User> {
159
- return await getRepository(User).findOne(goodsReceivalNote.creatorId)
270
+ return await getRepository(User).findOneBy({ id: goodsReceivalNote.creatorId })
160
271
  }
161
272
 
162
273
  @FieldResolver(type => User)
163
274
  async updater(@Root() goodsReceivalNote: GoodsReceivalNote): Promise<User> {
164
- return await getRepository(User).findOne(goodsReceivalNote.updaterId)
275
+ return await getRepository(User).findOneBy({ id: goodsReceivalNote.updaterId })
165
276
  }
166
277
  }
@@ -11,6 +11,54 @@ export class GoodsReceivalNoteList {
11
11
  total: number
12
12
  }
13
13
 
14
+ // Need to review with better class name
15
+ @ObjectType()
16
+ export class ProductListsType {
17
+
18
+ @Field({ nullable: true })
19
+ po: string
20
+
21
+ @Field({ nullable: true })
22
+ batchNo: string
23
+
24
+ @Field({ nullable: true })
25
+ productSKU: string
26
+
27
+ @Field({ nullable: true })
28
+ productName: string
29
+
30
+ @Field({ nullable: true })
31
+ productType: string
32
+
33
+ @Field({ nullable: true })
34
+ productBatch: string
35
+
36
+ @Field({nullable:true})
37
+ @Field({ nullable: true })
38
+ expectedQty: number
39
+
40
+ @Field({ nullable: true })
41
+ actualQty: number
42
+
43
+ @Field({ nullable: true })
44
+ actualUomValue: number
45
+
46
+ @Field({ nullable: true })
47
+ productUom: string
48
+
49
+ @Field({ nullable: true })
50
+ expiryDate: string
51
+
52
+ @Field({ nullable: true })
53
+ unitPrice: number
54
+
55
+ @Field({ nullable: true })
56
+ manufactureDate: string
57
+
58
+ @Field({ nullable: true })
59
+ remark: string
60
+ }
61
+
14
62
  @InputType()
15
63
  export class NewGoodsReceivalNote {
16
64
  @Field({ nullable: true })
@@ -16,6 +16,7 @@ import {
16
16
  UpdateDateColumn
17
17
  } from 'typeorm'
18
18
  import { ArrivalNotice } from '../'
19
+ import { ProductListsType } from './goods-receival-note-types'
19
20
 
20
21
  @Entity()
21
22
  @Index(
@@ -92,4 +93,35 @@ export class GoodsReceivalNote {
92
93
 
93
94
  @Field(type => [Attachment], { nullable: true })
94
95
  attachments: Attachment[]
96
+
97
+ @Field({nullable:true})
98
+ grnNo: string
99
+
100
+ @Field({nullable:true})
101
+ ganNo: string
102
+
103
+ @Field({nullable:true})
104
+ refGANNo: string
105
+
106
+ @Field({nullable:true})
107
+ refGANNo2: string
108
+
109
+ @Field({nullable:true})
110
+ refGANNo3: string
111
+
112
+ @Field({nullable:true})
113
+ timezoneOffSet: string
114
+
115
+ @Field(type=>[ProductListsType],{nullable:true})
116
+ productLists: ProductListsType[]
117
+
118
+ @Field({nullable:true})
119
+ companyDomain: string
120
+
121
+ @Field({nullable:true})
122
+ supplier: string
123
+
124
+ @Field({nullable:true})
125
+ date: string
126
+
95
127
  }