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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/dist-server/constants/order.js +4 -1
  2. package/dist-server/constants/order.js.map +1 -1
  3. package/dist-server/constants/release-good.js +5 -1
  4. package/dist-server/constants/release-good.js.map +1 -1
  5. package/dist-server/controllers/ecommerce/ecommerce-controller.js +1 -1
  6. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
  7. package/dist-server/controllers/ecommerce/sellercraft-controller.js +102 -94
  8. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  9. package/dist-server/controllers/order-controller.js +7 -5
  10. package/dist-server/controllers/order-controller.js.map +1 -1
  11. package/dist-server/service/arrival-notice/arrival-notice-mutation.js +152 -65
  12. package/dist-server/service/arrival-notice/arrival-notice-mutation.js.map +1 -1
  13. package/dist-server/service/arrival-notice/arrival-notice-query.js +15 -16
  14. package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -1
  15. package/dist-server/service/arrival-notice/arrival-notice-types.js +1 -2
  16. package/dist-server/service/arrival-notice/arrival-notice-types.js.map +1 -1
  17. package/dist-server/service/arrival-notice/arrival-notice.js +7 -7
  18. package/dist-server/service/arrival-notice/arrival-notice.js.map +1 -1
  19. package/dist-server/service/claim/claim-mutation.js +15 -14
  20. package/dist-server/service/claim/claim-mutation.js.map +1 -1
  21. package/dist-server/service/claim/claim-query.js +8 -10
  22. package/dist-server/service/claim/claim-query.js.map +1 -1
  23. package/dist-server/service/claim/claim.js +7 -7
  24. package/dist-server/service/claim/claim.js.map +1 -1
  25. package/dist-server/service/claim-detail/claim-detail-mutation.js +9 -8
  26. package/dist-server/service/claim-detail/claim-detail-mutation.js.map +1 -1
  27. package/dist-server/service/claim-detail/claim-detail-query.js +9 -10
  28. package/dist-server/service/claim-detail/claim-detail-query.js.map +1 -1
  29. package/dist-server/service/claim-detail/claim-detail.js +3 -4
  30. package/dist-server/service/claim-detail/claim-detail.js.map +1 -1
  31. package/dist-server/service/claim-order/claim-order-mutation.js +9 -8
  32. package/dist-server/service/claim-order/claim-order-mutation.js.map +1 -1
  33. package/dist-server/service/claim-order/claim-order-query.js +9 -10
  34. package/dist-server/service/claim-order/claim-order-query.js.map +1 -1
  35. package/dist-server/service/claim-order/claim-order.js +3 -4
  36. package/dist-server/service/claim-order/claim-order.js.map +1 -1
  37. package/dist-server/service/collection-order/collection-order-mutation.js +15 -14
  38. package/dist-server/service/collection-order/collection-order-mutation.js.map +1 -1
  39. package/dist-server/service/collection-order/collection-order-query.js +14 -14
  40. package/dist-server/service/collection-order/collection-order-query.js.map +1 -1
  41. package/dist-server/service/collection-order/collection-order-types.js +4 -5
  42. package/dist-server/service/collection-order/collection-order-types.js.map +1 -1
  43. package/dist-server/service/collection-order/collection-order.js +7 -7
  44. package/dist-server/service/collection-order/collection-order.js.map +1 -1
  45. package/dist-server/service/delivery-order/delivery-order-mutation.js +138 -51
  46. package/dist-server/service/delivery-order/delivery-order-mutation.js.map +1 -1
  47. package/dist-server/service/delivery-order/delivery-order-query.js +51 -38
  48. package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -1
  49. package/dist-server/service/delivery-order/delivery-order-types.js +22 -3
  50. package/dist-server/service/delivery-order/delivery-order-types.js.map +1 -1
  51. package/dist-server/service/delivery-order/delivery-order.js +92 -7
  52. package/dist-server/service/delivery-order/delivery-order.js.map +1 -1
  53. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +157 -143
  54. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -1
  55. package/dist-server/service/draft-release-good/draft-release-good-query.js +54 -24
  56. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
  57. package/dist-server/service/draft-release-good/draft-release-good-type.js +3 -4
  58. package/dist-server/service/draft-release-good/draft-release-good-type.js.map +1 -1
  59. package/dist-server/service/draft-release-good/draft-release-good.js +11 -6
  60. package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -1
  61. package/dist-server/service/goods-receival-note/goods-receival-note-mutation.js +12 -11
  62. package/dist-server/service/goods-receival-note/goods-receival-note-mutation.js.map +1 -1
  63. package/dist-server/service/goods-receival-note/goods-receival-note-query.js +104 -12
  64. package/dist-server/service/goods-receival-note/goods-receival-note-query.js.map +1 -1
  65. package/dist-server/service/goods-receival-note/goods-receival-note-types.js +67 -4
  66. package/dist-server/service/goods-receival-note/goods-receival-note-types.js.map +1 -1
  67. package/dist-server/service/goods-receival-note/goods-receival-note.js +46 -5
  68. package/dist-server/service/goods-receival-note/goods-receival-note.js.map +1 -1
  69. package/dist-server/service/inventory-check/inventory-check-mutation.js +6 -6
  70. package/dist-server/service/inventory-check/inventory-check-mutation.js.map +1 -1
  71. package/dist-server/service/inventory-check/inventory-check-query.js +8 -10
  72. package/dist-server/service/inventory-check/inventory-check-query.js.map +1 -1
  73. package/dist-server/service/inventory-check/inventory-check.js +5 -5
  74. package/dist-server/service/inventory-check/inventory-check.js.map +1 -1
  75. package/dist-server/service/invoice/invoice-mutation.js +5 -5
  76. package/dist-server/service/invoice/invoice-mutation.js.map +1 -1
  77. package/dist-server/service/invoice/invoice-query.js +7 -9
  78. package/dist-server/service/invoice/invoice-query.js.map +1 -1
  79. package/dist-server/service/invoice/invoice-types.js +2 -3
  80. package/dist-server/service/invoice/invoice-types.js.map +1 -1
  81. package/dist-server/service/invoice/invoice.js +3 -4
  82. package/dist-server/service/invoice/invoice.js.map +1 -1
  83. package/dist-server/service/invoice-product/invoice-product-mutation.js +1 -1
  84. package/dist-server/service/invoice-product/invoice-product-mutation.js.map +1 -1
  85. package/dist-server/service/invoice-product/invoice-product-query.js +7 -9
  86. package/dist-server/service/invoice-product/invoice-product-query.js.map +1 -1
  87. package/dist-server/service/invoice-product/invoice-product.js +5 -5
  88. package/dist-server/service/invoice-product/invoice-product.js.map +1 -1
  89. package/dist-server/service/job-sheet/job-sheet-mutation.js +5 -5
  90. package/dist-server/service/job-sheet/job-sheet-mutation.js.map +1 -1
  91. package/dist-server/service/job-sheet/job-sheet-query.js +6 -8
  92. package/dist-server/service/job-sheet/job-sheet-query.js.map +1 -1
  93. package/dist-server/service/job-sheet/job-sheet.js +5 -5
  94. package/dist-server/service/job-sheet/job-sheet.js.map +1 -1
  95. package/dist-server/service/manifest/manifest-mutation.js +84 -4
  96. package/dist-server/service/manifest/manifest-mutation.js.map +1 -1
  97. package/dist-server/service/manifest/manifest-query.js +52 -19
  98. package/dist-server/service/manifest/manifest-query.js.map +1 -1
  99. package/dist-server/service/manifest/manifest-type.js +8 -0
  100. package/dist-server/service/manifest/manifest-type.js.map +1 -1
  101. package/dist-server/service/manifest/manifest.js +8 -4
  102. package/dist-server/service/manifest/manifest.js.map +1 -1
  103. package/dist-server/service/order-inventory/order-inventory-mutation.js +3 -3
  104. package/dist-server/service/order-inventory/order-inventory-mutation.js.map +1 -1
  105. package/dist-server/service/order-inventory/order-inventory-query.js +202 -221
  106. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  107. package/dist-server/service/order-inventory/order-inventory-types.js +15 -15
  108. package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
  109. package/dist-server/service/order-inventory/order-inventory.js +45 -15
  110. package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
  111. package/dist-server/service/order-product/order-product-mutation.js +2 -2
  112. package/dist-server/service/order-product/order-product-mutation.js.map +1 -1
  113. package/dist-server/service/order-product/order-product-query.js +44 -14
  114. package/dist-server/service/order-product/order-product-query.js.map +1 -1
  115. package/dist-server/service/order-product/order-product-types.js +18 -19
  116. package/dist-server/service/order-product/order-product-types.js.map +1 -1
  117. package/dist-server/service/order-product/order-product.js +14 -11
  118. package/dist-server/service/order-product/order-product.js.map +1 -1
  119. package/dist-server/service/order-tote/order-tote-mutation.js +2 -2
  120. package/dist-server/service/order-tote/order-tote-mutation.js.map +1 -1
  121. package/dist-server/service/order-tote/order-tote-query.js +13 -14
  122. package/dist-server/service/order-tote/order-tote-query.js.map +1 -1
  123. package/dist-server/service/order-tote/order-tote-types.js +4 -5
  124. package/dist-server/service/order-tote/order-tote-types.js.map +1 -1
  125. package/dist-server/service/order-tote/order-tote.js +6 -5
  126. package/dist-server/service/order-tote/order-tote.js.map +1 -1
  127. package/dist-server/service/order-tote-item/order-tote-item-mutation.js +2 -2
  128. package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +1 -1
  129. package/dist-server/service/order-tote-item/order-tote-item-query.js +7 -9
  130. package/dist-server/service/order-tote-item/order-tote-item-query.js.map +1 -1
  131. package/dist-server/service/order-tote-item/order-tote-item-types.js +5 -6
  132. package/dist-server/service/order-tote-item/order-tote-item-types.js.map +1 -1
  133. package/dist-server/service/order-tote-item/order-tote-item.js +2 -3
  134. package/dist-server/service/order-tote-item/order-tote-item.js.map +1 -1
  135. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js +2 -2
  136. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +1 -1
  137. package/dist-server/service/order-tote-seal/order-tote-seal-query.js +8 -10
  138. package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +1 -1
  139. package/dist-server/service/order-tote-seal/order-tote-seal-types.js +2 -3
  140. package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +1 -1
  141. package/dist-server/service/order-tote-seal/order-tote-seal.js +2 -3
  142. package/dist-server/service/order-tote-seal/order-tote-seal.js.map +1 -1
  143. package/dist-server/service/order-vas/order-vas-mutation.js +1 -1
  144. package/dist-server/service/order-vas/order-vas-mutation.js.map +1 -1
  145. package/dist-server/service/order-vas/order-vas-query.js +8 -10
  146. package/dist-server/service/order-vas/order-vas-query.js.map +1 -1
  147. package/dist-server/service/order-vas/order-vas-types.js +16 -17
  148. package/dist-server/service/order-vas/order-vas-types.js.map +1 -1
  149. package/dist-server/service/order-vas/order-vas.js +7 -7
  150. package/dist-server/service/order-vas/order-vas.js.map +1 -1
  151. package/dist-server/service/others/other-query.js +48 -30
  152. package/dist-server/service/others/other-query.js.map +1 -1
  153. package/dist-server/service/purchase-order/purchase-order-mutation.js +36 -34
  154. package/dist-server/service/purchase-order/purchase-order-mutation.js.map +1 -1
  155. package/dist-server/service/purchase-order/purchase-order-query.js +11 -12
  156. package/dist-server/service/purchase-order/purchase-order-query.js.map +1 -1
  157. package/dist-server/service/purchase-order/purchase-order-types.js +8 -9
  158. package/dist-server/service/purchase-order/purchase-order-types.js.map +1 -1
  159. package/dist-server/service/purchase-order/purchase-order.js +8 -8
  160. package/dist-server/service/purchase-order/purchase-order.js.map +1 -1
  161. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.js +1 -1
  162. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.js.map +1 -1
  163. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-query.js +9 -10
  164. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-query.js.map +1 -1
  165. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge.js +3 -4
  166. package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge.js.map +1 -1
  167. package/dist-server/service/release-good/release-good-mutation.js +182 -94
  168. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  169. package/dist-server/service/release-good/release-good-query.js +251 -172
  170. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  171. package/dist-server/service/release-good/release-good-types.js +181 -9
  172. package/dist-server/service/release-good/release-good-types.js.map +1 -1
  173. package/dist-server/service/release-good/release-good.js +64 -13
  174. package/dist-server/service/release-good/release-good.js.map +1 -1
  175. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js +19 -14
  176. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js.map +1 -1
  177. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-query.js +8 -10
  178. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-query.js.map +1 -1
  179. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-types.js +6 -7
  180. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-types.js.map +1 -1
  181. package/dist-server/service/retail-replenishment-order/retail-replenishment-order.js +5 -5
  182. package/dist-server/service/retail-replenishment-order/retail-replenishment-order.js.map +1 -1
  183. package/dist-server/service/return-order/return-order-mutation.js +38 -27
  184. package/dist-server/service/return-order/return-order-mutation.js.map +1 -1
  185. package/dist-server/service/return-order/return-order-query.js +14 -16
  186. package/dist-server/service/return-order/return-order-query.js.map +1 -1
  187. package/dist-server/service/return-order/return-order-types.js +9 -9
  188. package/dist-server/service/return-order/return-order-types.js.map +1 -1
  189. package/dist-server/service/return-order/return-order.js +6 -6
  190. package/dist-server/service/return-order/return-order.js.map +1 -1
  191. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js +17 -13
  192. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js.map +1 -1
  193. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js +13 -14
  194. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js.map +1 -1
  195. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-type.js +9 -9
  196. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-type.js.map +1 -1
  197. package/dist-server/service/reverse-kitting-order/reverse-kitting-order.js +8 -8
  198. package/dist-server/service/reverse-kitting-order/reverse-kitting-order.js.map +1 -1
  199. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js +4 -4
  200. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js.map +1 -1
  201. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js +7 -9
  202. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js.map +1 -1
  203. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.js +4 -5
  204. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.js.map +1 -1
  205. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.js +7 -7
  206. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.js.map +1 -1
  207. package/dist-server/service/shipping-order/shipping-order-mutation.js +2 -2
  208. package/dist-server/service/shipping-order/shipping-order-mutation.js.map +1 -1
  209. package/dist-server/service/shipping-order/shipping-order-query.js +9 -10
  210. package/dist-server/service/shipping-order/shipping-order-query.js.map +1 -1
  211. package/dist-server/service/shipping-order/shipping-order-types.js +21 -1
  212. package/dist-server/service/shipping-order/shipping-order-types.js.map +1 -1
  213. package/dist-server/service/shipping-order/shipping-order.js +27 -7
  214. package/dist-server/service/shipping-order/shipping-order.js.map +1 -1
  215. package/dist-server/service/transfer-order/transfer-order-mutation.js +19 -14
  216. package/dist-server/service/transfer-order/transfer-order-mutation.js.map +1 -1
  217. package/dist-server/service/transfer-order/transfer-order-query.js +8 -10
  218. package/dist-server/service/transfer-order/transfer-order-query.js.map +1 -1
  219. package/dist-server/service/transfer-order/transfer-order-types.js +1 -2
  220. package/dist-server/service/transfer-order/transfer-order-types.js.map +1 -1
  221. package/dist-server/service/transfer-order/transfer-order.js +5 -5
  222. package/dist-server/service/transfer-order/transfer-order.js.map +1 -1
  223. package/dist-server/service/vas/vas-mutation.js +2 -2
  224. package/dist-server/service/vas/vas-mutation.js.map +1 -1
  225. package/dist-server/service/vas/vas-query.js +8 -10
  226. package/dist-server/service/vas/vas-query.js.map +1 -1
  227. package/dist-server/service/vas/vas.js +3 -4
  228. package/dist-server/service/vas/vas.js.map +1 -1
  229. package/dist-server/service/vas-order/vas-order-mutation.js +20 -15
  230. package/dist-server/service/vas-order/vas-order-mutation.js.map +1 -1
  231. package/dist-server/service/vas-order/vas-order-query.js +11 -12
  232. package/dist-server/service/vas-order/vas-order-query.js.map +1 -1
  233. package/dist-server/service/vas-order/vas-order.js +5 -5
  234. package/dist-server/service/vas-order/vas-order.js.map +1 -1
  235. package/dist-server/tsconfig.tsbuildinfo +1 -1
  236. package/dist-server/utils/datetime-util.js +49 -0
  237. package/dist-server/utils/datetime-util.js.map +1 -0
  238. package/dist-server/utils/index.js +1 -0
  239. package/dist-server/utils/index.js.map +1 -1
  240. package/dist-server/utils/inventory-util.js +89 -29
  241. package/dist-server/utils/inventory-util.js.map +1 -1
  242. package/package.json +13 -13
  243. package/server/constants/order.ts +4 -1
  244. package/server/constants/release-good.ts +6 -3
  245. package/server/controllers/ecommerce/ecommerce-controller.ts +1 -1
  246. package/server/controllers/ecommerce/sellercraft-controller.ts +124 -107
  247. package/server/controllers/order-controller.ts +7 -5
  248. package/server/service/arrival-notice/arrival-notice-mutation.ts +204 -91
  249. package/server/service/arrival-notice/arrival-notice-query.ts +17 -17
  250. package/server/service/claim/claim-mutation.ts +20 -14
  251. package/server/service/claim/claim-query.ts +10 -9
  252. package/server/service/claim-detail/claim-detail-mutation.ts +16 -10
  253. package/server/service/claim-detail/claim-detail-query.ts +13 -8
  254. package/server/service/claim-order/claim-order-mutation.ts +16 -10
  255. package/server/service/claim-order/claim-order-query.ts +10 -8
  256. package/server/service/collection-order/collection-order-mutation.ts +31 -32
  257. package/server/service/collection-order/collection-order-query.ts +18 -15
  258. package/server/service/delivery-order/delivery-order-mutation.ts +206 -73
  259. package/server/service/delivery-order/delivery-order-query.ts +90 -53
  260. package/server/service/delivery-order/delivery-order-types.ts +15 -0
  261. package/server/service/delivery-order/delivery-order.ts +68 -0
  262. package/server/service/draft-release-good/draft-release-good-mutation.ts +208 -183
  263. package/server/service/draft-release-good/draft-release-good-query.ts +81 -44
  264. package/server/service/draft-release-good/draft-release-good.ts +7 -3
  265. package/server/service/goods-receival-note/goods-receival-note-mutation.ts +23 -18
  266. package/server/service/goods-receival-note/goods-receival-note-query.ts +126 -15
  267. package/server/service/goods-receival-note/goods-receival-note-types.ts +48 -0
  268. package/server/service/goods-receival-note/goods-receival-note.ts +32 -0
  269. package/server/service/inventory-check/inventory-check-mutation.ts +24 -19
  270. package/server/service/inventory-check/inventory-check-query.ts +10 -9
  271. package/server/service/invoice/invoice-mutation.ts +14 -11
  272. package/server/service/invoice/invoice-query.ts +8 -9
  273. package/server/service/invoice-product/invoice-product-mutation.ts +4 -4
  274. package/server/service/invoice-product/invoice-product-query.ts +8 -9
  275. package/server/service/job-sheet/job-sheet-mutation.ts +12 -10
  276. package/server/service/job-sheet/job-sheet-query.ts +16 -11
  277. package/server/service/manifest/manifest-mutation.ts +93 -8
  278. package/server/service/manifest/manifest-query.ts +73 -23
  279. package/server/service/manifest/manifest-type.ts +6 -0
  280. package/server/service/manifest/manifest.ts +6 -2
  281. package/server/service/order-inventory/order-inventory-mutation.ts +13 -12
  282. package/server/service/order-inventory/order-inventory-query.ts +226 -253
  283. package/server/service/order-inventory/order-inventory.ts +26 -2
  284. package/server/service/order-product/order-product-mutation.ts +11 -10
  285. package/server/service/order-product/order-product-query.ts +55 -18
  286. package/server/service/order-product/order-product.ts +7 -0
  287. package/server/service/order-tote/order-tote-mutation.ts +10 -9
  288. package/server/service/order-tote/order-tote-query.ts +13 -15
  289. package/server/service/order-tote/order-tote.ts +13 -2
  290. package/server/service/order-tote-item/order-tote-item-mutation.ts +10 -9
  291. package/server/service/order-tote-item/order-tote-item-query.ts +12 -18
  292. package/server/service/order-tote-seal/order-tote-seal-mutation.ts +10 -9
  293. package/server/service/order-tote-seal/order-tote-seal-query.ts +10 -11
  294. package/server/service/order-vas/order-vas-mutation.ts +4 -5
  295. package/server/service/order-vas/order-vas-query.ts +10 -9
  296. package/server/service/others/other-query.ts +76 -54
  297. package/server/service/purchase-order/purchase-order-mutation.ts +46 -46
  298. package/server/service/purchase-order/purchase-order-query.ts +13 -11
  299. package/server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.ts +7 -7
  300. package/server/service/purchase-order-other-charge/purchase-order-other-charge-query.ts +14 -9
  301. package/server/service/release-good/release-good-mutation.ts +297 -134
  302. package/server/service/release-good/release-good-query.ts +268 -186
  303. package/server/service/release-good/release-good-types.ts +132 -4
  304. package/server/service/release-good/release-good.ts +55 -24
  305. package/server/service/retail-replenishment-order/retail-replenishment-order-mutation.ts +35 -29
  306. package/server/service/retail-replenishment-order/retail-replenishment-order-query.ts +13 -9
  307. package/server/service/retail-replenishment-order/retail-replenishment-order-types.ts +7 -5
  308. package/server/service/return-order/return-order-mutation.ts +82 -54
  309. package/server/service/return-order/return-order-query.ts +21 -19
  310. package/server/service/reverse-kitting-order/reverse-kitting-order-mutation.ts +38 -23
  311. package/server/service/reverse-kitting-order/reverse-kitting-order-query.ts +19 -16
  312. package/server/service/reverse-kitting-order/reverse-kitting-order.ts +2 -2
  313. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.ts +9 -9
  314. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.ts +7 -8
  315. package/server/service/shipping-order/shipping-order-mutation.ts +11 -11
  316. package/server/service/shipping-order/shipping-order-query.ts +13 -11
  317. package/server/service/shipping-order/shipping-order-types.ts +16 -1
  318. package/server/service/shipping-order/shipping-order.ts +18 -2
  319. package/server/service/transfer-order/transfer-order-mutation.ts +34 -25
  320. package/server/service/transfer-order/transfer-order-query.ts +11 -10
  321. package/server/service/vas/vas-mutation.ts +13 -15
  322. package/server/service/vas/vas-query.ts +12 -10
  323. package/server/service/vas-order/vas-order-mutation.ts +38 -28
  324. package/server/service/vas-order/vas-order-query.ts +15 -13
  325. package/server/utils/datetime-util.ts +54 -0
  326. package/server/utils/index.ts +1 -0
  327. package/server/utils/inventory-util.ts +128 -34
  328. package/translations/en.json +4 -0
  329. package/translations/ko.json +6 -2
  330. package/translations/ms.json +5 -1
@@ -1,5 +1,5 @@
1
- import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
- import { Brackets, EntityManager, getRepository, Like, SelectQueryBuilder } from 'typeorm'
1
+ import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
+ import { Brackets, Like, OrderByCondition, SelectQueryBuilder } from 'typeorm'
3
3
 
4
4
  import { User } from '@things-factory/auth-base'
5
5
  import { getPermittedBizplaceIds } from '@things-factory/biz-base'
@@ -10,11 +10,12 @@ import {
10
10
  Domain,
11
11
  Filter,
12
12
  getQueryBuilderFromListParams,
13
+ getRepository,
13
14
  ListParam,
14
15
  Pagination,
15
16
  Sorting
16
17
  } from '@things-factory/shell'
17
- import { Inventory, InventoryPatch, Location } from '@things-factory/warehouse-base'
18
+ import { Inventory, InventoryPatch } from '@things-factory/warehouse-base'
18
19
 
19
20
  import { ORDER_INVENTORY_STATUS, ORDER_STATUS } from '../../constants'
20
21
  import { ArrivalNotice } from '../arrival-notice/arrival-notice'
@@ -30,66 +31,98 @@ interface filterInterface {
30
31
  @Resolver(OrderInventory)
31
32
  export class OrderInventoryQuery {
32
33
  @Query(returns => OrderInventoryList)
33
- async orderInventories(@Ctx() context: any, @Args() params: ListParam): Promise<OrderInventoryList> {
34
- const { domain }: { domain: Domain } = context.state
35
- let filters = params.filters
36
-
37
- // in case client side passes arrival notice or release good number as filter (single value only)
38
- const anParam = filters.find(
39
- (filter: filterInterface) => filter.name === 'arrivalNoticeNo' && filter.operator === 'eq'
40
- )
41
- const rgParam = filters.find(
42
- (filter: filterInterface) => filter.name === 'releaseGoodNo' && filter.operator === 'eq'
43
- )
44
-
45
- if (anParam && !filters.some((filter: filterInterface) => filter.name === 'arrivalNotice')) {
34
+ async orderInventories(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<OrderInventoryList> {
35
+ const { domain } = context.state
36
+ const arrivalNoticeNoParam: any = params.filters.find((param: any) => param.name === 'arrivalNoticeNo')
37
+ const releaseGoodNoParam: any = params.filters.find((param: any) => param.name === 'releaseGoodNo')
38
+
39
+ if (arrivalNoticeNoParam && arrivalNoticeNoParam?.value) {
46
40
  const foundArrivalNotice: ArrivalNotice = await getRepository(ArrivalNotice).findOne({
47
41
  where: {
48
- name: anParam.value,
42
+ name: arrivalNoticeNoParam.value,
49
43
  domain
50
44
  }
51
45
  })
52
46
 
53
47
  if (foundArrivalNotice) {
54
- filters = params.filters.filter((filter: filterInterface) => filter.name !== 'arrivalNoticeNo')
55
- params.filters = [...filters, { name: 'arrivalNotice', operator: 'eq', value: foundArrivalNotice.id }]
56
- } else throw new Error(`Cannot find result for order "${anParam.value}"`)
48
+ params.filters.splice(
49
+ params.filters.findIndex(item => item.name == 'arrivalNoticeNo'),
50
+ 1
51
+ )
52
+ params.filters.push({ name: 'arrivalNoticeId', operator: 'eq', value: foundArrivalNotice.id })
53
+ } else {
54
+ throw new Error(`Cannot find result for order "${arrivalNoticeNoParam.value}"`)
55
+ }
57
56
  }
58
57
 
59
- if (rgParam && !filters.some(filter => filter.name === 'releaseGood')) {
58
+ if (releaseGoodNoParam && releaseGoodNoParam?.value) {
60
59
  const foundReleaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({
61
60
  where: {
62
- name: rgParam.value,
61
+ name: releaseGoodNoParam.value,
63
62
  domain
64
63
  }
65
64
  })
66
65
 
67
66
  if (foundReleaseGood) {
68
- filters = params.filters.filter(filter => filter.name !== 'releaseGoodNo')
69
- params.filters = [...filters, { name: 'releaseGood', operator: 'eq', value: foundReleaseGood.id }]
70
- } else throw new Error(`Cannot find result for order "${rgParam.value}"`)
67
+ params.filters.splice(
68
+ params.filters.findIndex(item => item.name == 'releaseGoodNo'),
69
+ 1
70
+ )
71
+ params.filters.push({ name: 'releaseGoodId', operator: 'eq', value: foundReleaseGood.id })
72
+ } else {
73
+ throw new Error(`Cannot find result for order "${releaseGoodNoParam.value}"`)
74
+ }
71
75
  }
72
76
 
73
- const convertedParams = convertListParams(params)
74
- const [items, total] = await getRepository(OrderInventory).findAndCount({
75
- ...convertedParams,
76
- relations: [
77
- 'domain',
78
- 'arrivalNotice',
79
- 'inventory',
80
- 'inventory.product',
81
- 'releaseGood',
82
- 'deliveryOrder',
83
- 'creator',
84
- 'updater'
85
- ]
86
- })
77
+ const qb: SelectQueryBuilder<OrderInventory> = getRepository(OrderInventory).createQueryBuilder('oi')
78
+ buildQuery(qb, params, context)
79
+
80
+ qb.leftJoinAndSelect('oi.domain', 'domain')
81
+ qb.leftJoinAndSelect('oi.arrivalNotice', 'arrivalNotice')
82
+ qb.leftJoinAndSelect('oi.orderProduct', 'orderProduct')
83
+ qb.leftJoinAndSelect('oi.inventory', 'inventory')
84
+ qb.leftJoinAndSelect('inventory.product', 'product')
85
+ qb.leftJoinAndSelect('inventory.location', 'location')
86
+ qb.leftJoinAndSelect('oi.releaseGood', 'releaseGood')
87
+ qb.leftJoinAndSelect('oi.deliveryOrder', 'deliveryOrder')
88
+ qb.leftJoinAndSelect('oi.creator', 'creator')
89
+ qb.leftJoinAndSelect('oi.updater', 'updater')
90
+
91
+ let sort: OrderByCondition = {}
92
+ if (params?.sortings) {
93
+ if (params.sortings.some(e => e.name === 'inventoryPalletId')) {
94
+ // overwrite the worksheet status sorting since inventory check status is needed
95
+ sort = {
96
+ 'inventory.palletId': params.sortings[params.sortings.findIndex(item => item.name == 'inventoryPalletId')]
97
+ .desc
98
+ ? 'DESC'
99
+ : 'ASC',
100
+ 'oi.createdAt': params.sortings[params.sortings.findIndex(item => item.name == 'createdAt')]?.desc
101
+ ? 'DESC'
102
+ : 'ASC'
103
+ }
104
+ } else if (params.sortings.some(e => e.name === 'createdAt')) {
105
+ sort = {
106
+ ...sort,
107
+ 'oi.createdAt': params.sortings[params.sortings.findIndex(item => item.name == 'createdAt')]?.desc
108
+ ? 'DESC'
109
+ : 'ASC'
110
+ }
111
+ }
112
+ } else {
113
+ sort = { 'oi.createdAt': 'ASC' }
114
+ }
115
+
116
+ qb.orderBy(sort)
117
+
118
+ let [items, total] = await qb.getManyAndCount()
119
+
87
120
  return { items, total }
88
121
  }
89
122
 
90
123
  @Query(returns => OrderInventoryList)
91
124
  async mergedProductOrderInventories(
92
- @Ctx() context: any,
125
+ @Ctx() context: ResolverContext,
93
126
  @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
94
127
  @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,
95
128
  @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
@@ -169,12 +202,12 @@ export class OrderInventoryQuery {
169
202
  }
170
203
 
171
204
  @Query(returns => OrderInventory)
172
- async orderInventory(@Arg('id') id: string, @Ctx() context: any): Promise<OrderInventory> {
173
- const { domain }: { domain: Domain } = context.state
205
+ async orderInventory(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<OrderInventory> {
206
+ const { domain } = context.state
174
207
 
175
208
  return await getRepository(OrderInventory).findOne({
176
209
  where: {
177
- domain,
210
+ domain: { id: domain.id },
178
211
  id
179
212
  },
180
213
  relations: ['domain', 'releaseGood', 'inventory', 'creator', 'updater']
@@ -184,15 +217,15 @@ export class OrderInventoryQuery {
184
217
  @Query(returns => Boolean)
185
218
  async validateOrderInventory(
186
219
  @Arg('patches', type => [InventoryPatch]) patches: InventoryPatch[],
187
- @Ctx() context: any
220
+ @Ctx() context: ResolverContext
188
221
  ) {
189
- const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state
222
+ const { domain, user, tx } = context.state
190
223
 
191
224
  let error = []
192
225
 
193
226
  for (let i = 0; i < patches.length; i++) {
194
227
  let foundExistingPallet: Inventory = await getRepository(Inventory).findOne({
195
- where: { domain, palletId: patches[i]?.palletId }
228
+ where: { domain: { id: domain.id }, palletId: patches[i]?.palletId }
196
229
  })
197
230
 
198
231
  if (!foundExistingPallet) {
@@ -220,8 +253,8 @@ export class OrderInventoryQuery {
220
253
  }
221
254
 
222
255
  @Query(returns => OrderInventoryList)
223
- async inventoriesByOrder(@Ctx() context: any, @Args() params: ListParam): Promise<OrderInventoryList> {
224
- const { domain, user }: { domain: Domain; user: User } = context.state
256
+ async inventoriesByOrder(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<OrderInventoryList> {
257
+ const { domain, user } = context.state
225
258
 
226
259
  let permittedBizplaceIds: string[] = await getPermittedBizplaceIds(domain, user)
227
260
 
@@ -288,12 +321,12 @@ export class OrderInventoryQuery {
288
321
 
289
322
  @Query(returns => OrderInventoryList)
290
323
  async nonLoadedOrderInventories(
291
- @Ctx() context: any,
324
+ @Ctx() context: ResolverContext,
292
325
  @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
293
326
  @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,
294
327
  @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
295
328
  ): Promise<OrderInventoryList> {
296
- const { page, limit }: { page: number; limit: number } = pagination
329
+ const { page, limit } = pagination
297
330
 
298
331
  try {
299
332
  const productFilter = filters.find(x => x.name == 'productInfo')
@@ -315,7 +348,7 @@ export class OrderInventoryQuery {
315
348
  .addSelect('(oi.release_uom_value / oi.release_qty) * oi.picked_qty', 'picked_uom_value')
316
349
  .innerJoinAndSelect('oi.inventory', 'inv')
317
350
  .innerJoinAndSelect('oi.releaseGood', 'rg')
318
- .innerJoinAndSelect('oi.product', 'Product')
351
+ .innerJoinAndSelect('oi.product', 'product')
319
352
  .leftJoinAndSelect('oi.binLocation', 'bin_loc')
320
353
  .andWhere('rg.status IN (:...releaseGoodStatus)', {
321
354
  releaseGoodStatus: [ORDER_STATUS.PICKING, ORDER_STATUS.LOADING]
@@ -370,20 +403,20 @@ export class OrderInventoryQuery {
370
403
  }
371
404
 
372
405
  if (sortings?.length !== 0) {
373
- const sorter = (sortings || []).reduce((acc, sort) => {
406
+ const sorter: OrderByCondition = (sortings || []).reduce((acc, sort) => {
374
407
  const order: string = sort.desc ? 'DESC' : 'ASC'
375
408
 
376
409
  switch (sort.name) {
377
410
  case 'productSku':
378
- acc = { ...acc, ['Product.sku']: order }
411
+ acc = { ...acc, ['product.sku']: order }
379
412
  break
380
413
 
381
414
  case 'productName':
382
- acc = { ...acc, ['Product.name']: order }
415
+ acc = { ...acc, ['product.name']: order }
383
416
  break
384
417
 
385
418
  case 'productBrand':
386
- acc = { ...acc, ['Product.brand']: order }
419
+ acc = { ...acc, ['product.brand']: order }
387
420
 
388
421
  case 'binLocation':
389
422
  acc = { ...acc, ['bin_loc.name']: order }
@@ -447,194 +480,137 @@ export class OrderInventoryQuery {
447
480
  }
448
481
  }
449
482
 
483
+ @Directive('@transaction')
450
484
  @Query(returns => OrderInventoryList)
451
485
  async orderInventoriesOfMultipleReleaseOrders(
452
- @Ctx() context: any,
486
+ @Ctx() context: ResolverContext,
453
487
  @Arg('partnerId') partnerId: string,
488
+ @Arg('priority', { nullable: true }) priority: string,
489
+ @Arg('binNumber', { nullable: true }) binNumber: string,
454
490
  @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
455
491
  @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
456
492
  ): Promise<OrderInventoryList> {
457
493
  try {
458
- const { domain }: { domain: Domain } = context.state
459
- const binNumberParam: any = filters.find((param: any) => param.name === 'binNumber')
460
- let arrFilters = []
461
-
462
- if (binNumberParam) {
463
- let binLocation: Location = await getRepository(Location).findOne({
464
- where: { domain, name: binNumberParam.value }
465
- })
466
-
467
- filters.splice(
468
- filters.findIndex(item => item.name == 'binNumber'),
469
- 1
470
- )
471
- arrFilters.push({ ...binNumberParam, name: 'binLocationId', value: binLocation.id })
472
- }
473
-
474
- const releaseGoodsList: ReleaseGood[] = await getRepository(ReleaseGood).query(
475
- `select id from release_goods where domain_id = '${domain.id}' and bizplace_id = '${partnerId}' and route_id is not null and status = 'PICKING'`
476
- )
477
-
478
- if (releaseGoodsList && releaseGoodsList.length) {
479
- arrFilters.push({
480
- name: 'releaseGoodId',
481
- operator: 'in',
482
- value: releaseGoodsList.map((foundRG: ReleaseGood) => foundRG.id),
483
- relation: false
484
- })
494
+ const { domain, tx } = context.state
495
+ const withSkuParam: any = filters.find((param: any) => param.name === 'withSku')
496
+ const withToteParam: any = filters.find((param: any) => param.name === 'withTote')
497
+ const mergedPageParam: any = filters.find((param: any) => param.name === 'merged')
498
+
499
+ let sort = ''
500
+ let prioritySort = ''
501
+ let releaseOrderIdQuery = ''
502
+
503
+ // Require further evaluation. Potential performance issue.
504
+ if (mergedPageParam) {
505
+ releaseOrderIdQuery = `
506
+ select rg.id from release_goods rg
507
+ inner join order_inventories oi on oi.release_good_id = rg.id
508
+ inner join worksheet_details wd on wd.target_inventory_id = oi.id
509
+ inner join worksheets w on w.id = wd.worksheet_id
510
+ where rg.route_id is not null and rg.type = 'b2b'
511
+ and rg.domain_id = $1 and rg.bizplace_id = $2
512
+ and w.type in ('BATCH_PICKING', 'SORTING', 'LOADING') and w.status = 'EXECUTING'
513
+ and rg.id not in (select rg2.id from release_goods rg2
514
+ inner join worksheets w2 on w2.release_good_id = rg2.id
515
+ where rg2.domain_id = $1 and rg2.bizplace_id = $2
516
+ and rg2.route_id is not null and rg2.type = 'b2b'
517
+ and w2.type in ('PICKING'))
518
+ group by rg.id
519
+ `
485
520
  } else {
486
- arrFilters.push({
487
- name: 'releaseGoodId',
488
- operator: 'is_null',
489
- relation: false
490
- })
521
+ releaseOrderIdQuery = `
522
+ select rg.id from release_goods rg
523
+ inner join worksheets w on w.release_good_id = rg.id
524
+ where rg.domain_id = $1 and rg.bizplace_id = $2
525
+ and rg.route_id is not null and rg.type = 'b2b'
526
+ and w.type in ('PICKING', 'LOADING') and w.status = 'EXECUTING'
527
+ and rg.id not in (select rg2.id from release_goods rg2
528
+ inner join order_inventories oi2 on oi2.release_good_id = rg2.id
529
+ inner join worksheet_details wd2 on wd2.target_inventory_id = oi2.id
530
+ inner join worksheets w2 on w2.id = wd2.worksheet_id
531
+ where rg2.route_id is not null and rg2.type = 'b2b'
532
+ and rg2.domain_id = $1 and rg2.bizplace_id = $2
533
+ and w2.type in ('BATCH_PICKING'))
534
+ group by rg.id
535
+ `
491
536
  }
492
537
 
493
- const params = { filters: arrFilters }
494
- const qb: SelectQueryBuilder<OrderInventory> = getRepository(OrderInventory).createQueryBuilder('oi')
495
- buildQuery(qb, params, context)
496
-
497
- qb.select('oi')
498
- qb.innerJoinAndSelect('oi.releaseGood', 'rg')
499
- qb.innerJoinAndSelect('oi.product', 'Product')
500
- qb.leftJoinAndSelect('oi.binLocation', 'bin_loc')
501
- qb.leftJoinAndSelect('oi.domain', 'domain')
502
- qb.leftJoinAndSelect('oi.creator', 'creator')
503
- qb.leftJoinAndSelect('oi.updater', 'updater')
504
-
505
- if (sortings?.length !== 0) {
506
- const sorter = (sortings || []).reduce((acc, sort) => {
507
- const order: string = sort.desc ? 'DESC' : 'ASC'
508
-
509
- switch (sort.name) {
510
- case 'roName':
511
- acc = { ...acc, ['rg.name']: order }
512
- break
513
-
514
- case 'productSku':
515
- acc = { ...acc, ['Product.sku']: order }
516
- break
517
-
518
- case 'binNumber':
519
- acc = { ...acc, ['bin_loc.name']: order }
520
- break
521
- }
538
+ await tx.query(
539
+ `
540
+ create temp table temp_route_label ON COMMIT drop as (
541
+ select distinct(ot.name) as "toteNumber", oi.id, rg3.name as "releaseGoodName", (case when ot.name is null then oi.release_qty else null end) as "releaseQty",
542
+ (case when ot.name is null then p.sku else null end) as "productSKU", (case when ot.name is null then p.name else null end) as "productName", (case when ot.name is null then l.name else null end) as "binNumber",
543
+ rg3.route_id as "routeId", rg3.store_id as "storeId", rg3.store_name as "storeName", rg3.stop_id as "stopId",
544
+ rg3.created_at as "createdAt" from order_inventories oi
545
+ inner join release_goods rg3 on rg3.id = oi.release_good_id
546
+ inner join products p on p.id = oi.product_id
547
+ left join locations l on l.id = oi.bin_location_id
548
+ left join order_tote_items oti on oti.order_inventory_id = oi.id
549
+ left join order_totes ot on ot.id = oti.order_tote_id
550
+ where oi.release_good_id in
551
+ (${releaseOrderIdQuery})
552
+ )
553
+ `,
554
+ [domain.id, partnerId]
555
+ )
522
556
 
523
- return acc
524
- }, {})
525
- qb.orderBy(sorter)
557
+ let withSkuQuery = withSkuParam?.value == true ? `AND tmp."binNumber" is null AND tmp."toteNumber" is null` : ''
558
+ let withBinQuery = ''
559
+ let withToteQuery =
560
+ withToteParam?.value == true
561
+ ? (withSkuParam?.value == true || binNumber ? `OR ` : 'AND ') + `tmp."toteNumber" is not null`
562
+ : ''
563
+
564
+ if (binNumber) {
565
+ if (binNumber !== 'all' && binNumber !== '') {
566
+ withBinQuery =
567
+ (withSkuParam?.value == true || withToteParam?.value == false ? `OR ` : `AND `) +
568
+ `tmp."binNumber" = '` +
569
+ binNumber +
570
+ `'`
571
+ } else if (binNumber == 'all') {
572
+ withBinQuery =
573
+ (withSkuParam?.value == true || withToteParam?.value == false ? `OR ` : `AND `) +
574
+ `tmp."binNumber" is not null`
575
+ }
526
576
  }
527
577
 
528
- const [items, total] = await qb.getManyAndCount()
578
+ if (priority) {
579
+ prioritySort = ' order by '
529
580
 
530
- return { items, total }
531
- } catch (e) {
532
- throw e
533
- }
534
- }
535
-
536
- @Query(returns => OrderInventoryList)
537
- async orderInventoriesOfMergedReleaseOrders(
538
- @Ctx() context: any,
539
- @Arg('partnerId') partnerId: string,
540
- @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
541
- @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
542
- ): Promise<OrderInventoryList> {
543
- try {
544
- const { domain }: { domain: Domain } = context.state
545
- const binNumberParam: any = filters.find((param: any) => param.name === 'binNumber')
546
- const priorityParam: any = filters.find((param: any) => param.name === 'priority')
547
- let arrFilters = []
548
-
549
- if (priorityParam) {
550
- filters.splice(
551
- filters.findIndex(item => item.name == 'priority'),
552
- 1
553
- )
554
-
555
- switch (priorityParam.value) {
581
+ switch (priority) {
556
582
  case 'roSku':
557
- sortings.push({ name: 'releaseGood', desc: true })
558
- sortings.push({ name: 'productSku', desc: false })
583
+ prioritySort = prioritySort + '"createdAt" desc, "productSKU" asc'
559
584
  break
560
585
 
561
586
  case 'roBin':
562
- sortings.push({ name: 'releaseGood', desc: true })
563
- sortings.push({ name: 'binNumber', desc: false })
587
+ prioritySort = prioritySort + '"createdAt" desc, "binNumber" asc'
588
+ break
589
+
590
+ case 'roTote':
591
+ prioritySort = prioritySort + '"createdAt" desc, "toteNumber" asc'
564
592
  break
565
593
 
566
594
  case 'skuRo':
567
- sortings.push({ name: 'productSku', desc: false })
568
- sortings.push({ name: 'releaseGood', desc: true })
595
+ prioritySort = prioritySort + '"productSKU" asc, "createdAt" desc'
569
596
  break
570
597
 
571
598
  case 'skuBin':
572
- sortings.push({ name: 'productSku', desc: false })
573
- sortings.push({ name: 'binNumber', desc: false })
599
+ prioritySort = prioritySort + '"productSKU" asc, "binNumber" asc'
574
600
  break
575
601
 
576
602
  case 'binSku':
577
- sortings.push({ name: 'binNumber', desc: false })
578
- sortings.push({ name: 'productSku', desc: false })
603
+ prioritySort = prioritySort + '"binNumber" asc, "productSKU" asc'
579
604
  break
580
605
 
581
606
  case 'binRo':
582
- sortings.push({ name: 'binNumber', desc: false })
583
- sortings.push({ name: 'releaseGood', desc: true })
607
+ prioritySort = prioritySort + '"binNumber" asc, "createdAt" desc'
584
608
  break
585
- }
586
- }
587
-
588
- const releaseGoodsList: ReleaseGood[] = await getRepository(ReleaseGood).query(
589
- `select oi.release_good_id as id from worksheets w
590
- inner join worksheet_details wd on wd.worksheet_id =w.id
591
- inner join order_inventories oi on oi.id =wd.target_inventory_id
592
- inner join release_goods rg on rg.id = oi.release_good_id
593
- and oi.status in ('PICKING', 'PICKED', 'SORTING', 'SORTED')
594
- and w.type = 'BATCH_PICKING' and w.status != 'DEACTIVATED'
595
- and rg.domain_id = '${domain.id}' and rg.bizplace_id = '${partnerId}'
596
- and rg.route_id is not null
597
- group by oi.release_good_id`
598
- )
599
-
600
- if (releaseGoodsList && releaseGoodsList.length) {
601
- arrFilters.push({
602
- name: 'releaseGoodId',
603
- operator: 'in',
604
- value: releaseGoodsList.map((foundRG: ReleaseGood) => foundRG.id),
605
- relation: false
606
- })
607
- } else {
608
- arrFilters.push({
609
- name: 'releaseGoodId',
610
- operator: 'is_null',
611
- relation: false
612
- })
613
- }
614
609
 
615
- const params = { filters: arrFilters }
616
- const qb: SelectQueryBuilder<OrderInventory> = getRepository(OrderInventory).createQueryBuilder('oi')
617
- buildQuery(qb, params, context)
618
-
619
- qb.select('oi')
620
- qb.innerJoinAndSelect('oi.releaseGood', 'rg')
621
- qb.innerJoinAndSelect('oi.product', 'Product')
622
- qb.leftJoinAndSelect('oi.binLocation', 'bin_loc')
623
- qb.leftJoinAndSelect('oi.domain', 'domain')
624
- qb.leftJoinAndSelect('oi.creator', 'creator')
625
- qb.leftJoinAndSelect('oi.updater', 'updater')
626
-
627
- if (binNumberParam) {
628
- let binLocation: Location = await getRepository(Location).findOne({
629
- where: { domain, name: binNumberParam.value }
630
- })
631
-
632
- filters.splice(
633
- filters.findIndex(item => item.name == 'binNumber'),
634
- 1
635
- )
636
-
637
- qb.andWhere('bin_loc.id = :id', { id: binLocation.id })
610
+ case 'toteRo':
611
+ prioritySort = prioritySort + '"toteNumber" asc, "createdAt" desc'
612
+ break
613
+ }
638
614
  }
639
615
 
640
616
  if (sortings?.length !== 0) {
@@ -643,28 +619,40 @@ export class OrderInventoryQuery {
643
619
 
644
620
  switch (sort.name) {
645
621
  case 'roName':
646
- acc = { ...acc, ['rg.name']: order }
647
- break
648
-
649
- case 'releaseGood':
650
- acc = { ...acc, ['rg.created_at']: order }
622
+ acc = [...acc, '"releaseGoodName" ' + order]
651
623
  break
652
624
 
653
625
  case 'productSku':
654
- acc = { ...acc, ['Product.sku']: order }
626
+ acc = [...acc, '"productSKU" ' + order]
655
627
  break
656
628
 
657
629
  case 'binNumber':
658
- acc = { ...acc, ['bin_loc.name']: order }
630
+ acc = [...acc, '"binNumber" ' + order]
631
+ break
632
+
633
+ case 'toteNumber':
634
+ acc = [...acc, '"toteNumber" ' + order]
659
635
  break
660
636
  }
661
637
 
662
638
  return acc
663
- }, {})
664
- qb.orderBy(sorter)
639
+ }, [])
640
+
641
+ sort = (priority ? ', ' : ' order by ') + sorter.toString()
665
642
  }
666
643
 
667
- const [items, total] = await qb.getManyAndCount()
644
+ let items = await tx.query(
645
+ `
646
+ select * from temp_route_label tmp where 1 = 1
647
+ ${withSkuQuery}
648
+ ${withBinQuery}
649
+ ${withToteQuery}
650
+ ${prioritySort}
651
+ ${sort}
652
+ `
653
+ )
654
+
655
+ let total = items.length
668
656
 
669
657
  return { items, total }
670
658
  } catch (e) {
@@ -674,70 +662,55 @@ export class OrderInventoryQuery {
674
662
 
675
663
  @Query(returns => OrderInventoryList)
676
664
  async orderInventoriesForReleaseGood(
677
- @Ctx() context: any,
665
+ @Ctx() context: ResolverContext,
678
666
  @Args() params: ListParam,
679
667
  @Arg('productTypes', type => [String], { nullable: true }) productTypes?: string[]
680
668
  ): Promise<OrderInventoryList> {
681
- const { domain }: { domain: Domain } = context.state
682
- let filters = params.filters
683
-
684
- const rgParam = filters.find(
685
- (filter: filterInterface) => filter.name === 'releaseGoodNo' && filter.operator === 'eq'
686
- )
687
-
688
- if (rgParam && !filters.some(filter => filter.name === 'releaseGood')) {
689
- if (!rgParam.value) filters = params.filters.filter(filter => filter.name !== 'releaseGoodNo')
690
- else {
691
- const foundReleaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({
692
- where: {
693
- name: rgParam.value,
694
- domain
695
- }
696
- })
697
-
698
- if (foundReleaseGood) {
699
- filters = params.filters.filter(filter => filter.name !== 'releaseGoodNo')
700
- params.filters = [...filters, { name: 'releaseGood', operator: 'eq', value: foundReleaseGood.id }]
701
- } else throw new Error(`Cannot find result for order "${rgParam.value}"`)
702
- }
703
- }
669
+ const { domain } = context.state
704
670
 
705
671
  const qb = getQueryBuilderFromListParams({
706
672
  repository: getRepository(OrderInventory),
707
673
  params,
708
674
  domain,
709
675
  alias: 'oi',
710
- searchables: ['bizplace', 'product']
676
+ searchables: ['bizplace', 'product', 'releaseGood', 'lot'],
677
+ filtersMap: {
678
+ lot: {
679
+ /* 조인 테이블의 필터대상 컬럼이름을 디폴트('name')에서 다른 컬럼('sku')로 변경 */
680
+ relationColumn: 'inventory',
681
+ columnName: 'palletId'
682
+ }
683
+ }
711
684
  })
712
685
 
713
- const [items, total] = await qb
714
- .leftJoinAndSelect('oi.releaseGood', 'rg')
686
+ qb.leftJoinAndSelect('oi.releaseGood', 'rg')
715
687
  .leftJoinAndSelect('rg.deliverTo', 'deliverTo')
716
688
  .leftJoinAndSelect('deliverTo.bizplace', 'deliverToBizplace')
717
- .leftJoinAndSelect('oi.product', 'p')
718
689
  .leftJoinAndSelect('oi.inventory', 'i')
690
+ .leftJoinAndSelect('oi.product', 'p')
719
691
  .leftJoinAndSelect('oi.bizplace', 'b')
720
692
  .andWhere('oi.type = :oiType', { oiType: 'RELEASE_OF_GOODS' })
721
693
  .andWhere('p.type IN (:...productTypes)', {
722
694
  productTypes: productTypes
723
695
  })
724
- .getManyAndCount()
696
+
697
+ const [items, total] = await qb.getManyAndCount()
725
698
 
726
699
  return { items, total }
727
700
  }
728
701
 
729
702
  @FieldResolver(type => Domain)
730
703
  async domain(@Root() orderInventory: OrderInventory): Promise<Domain> {
731
- return await getRepository(Domain).findOne(orderInventory.domainId)
704
+ return await getRepository(Domain).findOneBy({ id: orderInventory.domainId })
732
705
  }
733
706
 
734
707
  @FieldResolver(type => User)
735
708
  async creator(@Root() orderInventory: OrderInventory): Promise<User> {
736
- return await getRepository(User).findOne(orderInventory.creatorId)
709
+ return await getRepository(User).findOneBy({ id: orderInventory.creatorId })
737
710
  }
738
711
 
739
712
  @FieldResolver(type => User)
740
713
  async updater(@Root() orderInventory: OrderInventory): Promise<User> {
741
- return await getRepository(User).findOne(orderInventory.updaterId)
714
+ return await getRepository(User).findOneBy({ id: orderInventory.updaterId })
742
715
  }
743
716
  }