@things-factory/warehouse-base 3.7.13 → 3.8.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 (665) hide show
  1. package/dist-server/constants/index.js +1 -0
  2. package/dist-server/constants/index.js.map +1 -1
  3. package/dist-server/constants/location.js +3 -2
  4. package/dist-server/constants/location.js.map +1 -1
  5. package/dist-server/constants/rule-type.js +8 -0
  6. package/dist-server/constants/rule-type.js.map +1 -0
  7. package/dist-server/controllers/ecommerce/ecommerce-controller.js +3 -3
  8. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
  9. package/dist-server/controllers/ecommerce/sellercraft-controller.js +2 -2
  10. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  11. package/dist-server/index.js +12 -15
  12. package/dist-server/index.js.map +1 -1
  13. package/dist-server/service/index.js +71 -0
  14. package/dist-server/service/index.js.map +1 -0
  15. package/dist-server/service/inventory/index.js +9 -0
  16. package/dist-server/service/inventory/index.js.map +1 -0
  17. package/dist-server/service/inventory/inventory-mutation.js +364 -0
  18. package/dist-server/service/inventory/inventory-mutation.js.map +1 -0
  19. package/dist-server/service/inventory/inventory-query.js +711 -0
  20. package/dist-server/service/inventory/inventory-query.js.map +1 -0
  21. package/dist-server/service/inventory/inventory-types.js +417 -0
  22. package/dist-server/service/inventory/inventory-types.js.map +1 -0
  23. package/dist-server/{entities → service/inventory}/inventory.js +110 -15
  24. package/dist-server/service/inventory/inventory.js.map +1 -0
  25. package/dist-server/service/inventory-change/index.js +9 -0
  26. package/dist-server/service/inventory-change/index.js.map +1 -0
  27. package/dist-server/{graphql/resolvers/inventory-change/approve-inventory-changes.js → service/inventory-change/inventory-change-mutation.js} +269 -29
  28. package/dist-server/service/inventory-change/inventory-change-mutation.js.map +1 -0
  29. package/dist-server/service/inventory-change/inventory-change-query.js +121 -0
  30. package/dist-server/service/inventory-change/inventory-change-query.js.map +1 -0
  31. package/dist-server/service/inventory-change/inventory-change-types.js +65 -0
  32. package/dist-server/service/inventory-change/inventory-change-types.js.map +1 -0
  33. package/dist-server/{entities → service/inventory-change}/inventory-change.js +51 -5
  34. package/dist-server/service/inventory-change/inventory-change.js.map +1 -0
  35. package/dist-server/service/inventory-history/index.js +9 -0
  36. package/dist-server/service/inventory-history/index.js.map +1 -0
  37. package/dist-server/service/inventory-history/inventory-history-mutation.js +121 -0
  38. package/dist-server/service/inventory-history/inventory-history-mutation.js.map +1 -0
  39. package/dist-server/service/inventory-history/inventory-history-query.js +1285 -0
  40. package/dist-server/service/inventory-history/inventory-history-query.js.map +1 -0
  41. package/dist-server/service/inventory-history/inventory-history-types.js +382 -0
  42. package/dist-server/service/inventory-history/inventory-history-types.js.map +1 -0
  43. package/dist-server/{entities → service/inventory-history}/inventory-history.js +64 -19
  44. package/dist-server/service/inventory-history/inventory-history.js.map +1 -0
  45. package/dist-server/service/location/index.js +9 -0
  46. package/dist-server/service/location/index.js.map +1 -0
  47. package/dist-server/service/location/location-mutation.js +157 -0
  48. package/dist-server/service/location/location-mutation.js.map +1 -0
  49. package/dist-server/service/location/location-query.js +251 -0
  50. package/dist-server/service/location/location-query.js.map +1 -0
  51. package/dist-server/service/location/location-types.js +247 -0
  52. package/dist-server/service/location/location-types.js.map +1 -0
  53. package/dist-server/{entities → service/location}/location.js +33 -4
  54. package/dist-server/service/location/location.js.map +1 -0
  55. package/dist-server/service/movement/index.js +9 -0
  56. package/dist-server/service/movement/index.js.map +1 -0
  57. package/dist-server/service/movement/movement-mutation.js +80 -0
  58. package/dist-server/service/movement/movement-mutation.js.map +1 -0
  59. package/dist-server/service/movement/movement-query.js +286 -0
  60. package/dist-server/service/movement/movement-query.js.map +1 -0
  61. package/dist-server/service/movement/movement-types.js +117 -0
  62. package/dist-server/service/movement/movement-types.js.map +1 -0
  63. package/dist-server/{entities → service/movement}/movement.js +28 -3
  64. package/dist-server/service/movement/movement.js.map +1 -0
  65. package/dist-server/service/pallet/index.js +9 -0
  66. package/dist-server/service/pallet/index.js.map +1 -0
  67. package/dist-server/service/pallet/pallet-mutation.js +192 -0
  68. package/dist-server/service/pallet/pallet-mutation.js.map +1 -0
  69. package/dist-server/service/pallet/pallet-query.js +164 -0
  70. package/dist-server/service/pallet/pallet-query.js.map +1 -0
  71. package/dist-server/service/pallet/pallet-types.js +109 -0
  72. package/dist-server/service/pallet/pallet-types.js.map +1 -0
  73. package/dist-server/{entities → service/pallet}/pallet.js +32 -5
  74. package/dist-server/service/pallet/pallet.js.map +1 -0
  75. package/dist-server/service/pallet-count/index.js +9 -0
  76. package/dist-server/service/pallet-count/index.js.map +1 -0
  77. package/dist-server/service/pallet-count/pallet-count-mutation.js +156 -0
  78. package/dist-server/service/pallet-count/pallet-count-mutation.js.map +1 -0
  79. package/dist-server/service/pallet-count/pallet-count-query.js +86 -0
  80. package/dist-server/service/pallet-count/pallet-count-query.js.map +1 -0
  81. package/dist-server/service/pallet-count/pallet-count-types.js +65 -0
  82. package/dist-server/service/pallet-count/pallet-count-types.js.map +1 -0
  83. package/dist-server/{entities → service/pallet-count}/pallet-count.js +25 -2
  84. package/dist-server/service/pallet-count/pallet-count.js.map +1 -0
  85. package/dist-server/service/pallet-history/index.js +9 -0
  86. package/dist-server/service/pallet-history/index.js.map +1 -0
  87. package/dist-server/service/pallet-history/pallet-history-mutation.js +120 -0
  88. package/dist-server/service/pallet-history/pallet-history-mutation.js.map +1 -0
  89. package/dist-server/service/pallet-history/pallet-history-query.js +87 -0
  90. package/dist-server/service/pallet-history/pallet-history-query.js.map +1 -0
  91. package/dist-server/service/pallet-history/pallet-history-types.js +65 -0
  92. package/dist-server/service/pallet-history/pallet-history-types.js.map +1 -0
  93. package/dist-server/{entities → service/pallet-history}/pallet-history.js +34 -11
  94. package/dist-server/service/pallet-history/pallet-history.js.map +1 -0
  95. package/dist-server/service/reduced-inventory-history/index.js +6 -0
  96. package/dist-server/service/reduced-inventory-history/index.js.map +1 -0
  97. package/dist-server/{entities → service/reduced-inventory-history}/reduced-inventory-history.js +0 -8
  98. package/dist-server/service/reduced-inventory-history/reduced-inventory-history.js.map +1 -0
  99. package/dist-server/service/warehouse/index.js +9 -0
  100. package/dist-server/service/warehouse/index.js.map +1 -0
  101. package/dist-server/service/warehouse/warehouse-mutation.js +135 -0
  102. package/dist-server/service/warehouse/warehouse-mutation.js.map +1 -0
  103. package/dist-server/service/warehouse/warehouse-query.js +91 -0
  104. package/dist-server/service/warehouse/warehouse-query.js.map +1 -0
  105. package/dist-server/service/warehouse/warehouse-types.js +82 -0
  106. package/dist-server/service/warehouse/warehouse-types.js.map +1 -0
  107. package/dist-server/{entities → service/warehouse}/warehouse.js +28 -3
  108. package/dist-server/service/warehouse/warehouse.js.map +1 -0
  109. package/dist-server/utils/datetime-util.js +49 -0
  110. package/dist-server/utils/datetime-util.js.map +1 -0
  111. package/dist-server/utils/index.js +1 -0
  112. package/dist-server/utils/index.js.map +1 -1
  113. package/dist-server/utils/inventory-util.js +112 -47
  114. package/dist-server/utils/inventory-util.js.map +1 -1
  115. package/package.json +8 -8
  116. package/server/constants/index.ts +1 -0
  117. package/server/constants/location.ts +3 -2
  118. package/server/constants/rule-type.ts +4 -0
  119. package/server/controllers/ecommerce/ecommerce-controller.ts +4 -3
  120. package/server/controllers/ecommerce/sellercraft-controller.ts +1 -1
  121. package/server/index.ts +8 -5
  122. package/server/service/index.ts +61 -0
  123. package/server/service/inventory/index.ts +6 -0
  124. package/server/{graphql/resolvers/inventory/update-multiple-inventory.ts → service/inventory/inventory-mutation.ts} +203 -7
  125. package/server/service/inventory/inventory-query.ts +789 -0
  126. package/server/service/inventory/inventory-types.ts +298 -0
  127. package/server/{entities → service/inventory}/inventory.ts +99 -12
  128. package/server/service/inventory-change/index.ts +6 -0
  129. package/server/{graphql/resolvers/inventory-change/approve-inventory-changes.ts → service/inventory-change/inventory-change-mutation.ts} +266 -6
  130. package/server/{graphql/resolvers/inventory-change/inventory-changes.ts → service/inventory-change/inventory-change-query.ts} +35 -4
  131. package/server/service/inventory-change/inventory-change-types.ts +36 -0
  132. package/server/{entities → service/inventory-change}/inventory-change.ts +60 -6
  133. package/server/service/inventory-history/index.ts +6 -0
  134. package/server/service/inventory-history/inventory-history-mutation.ts +119 -0
  135. package/server/service/inventory-history/inventory-history-query.ts +1434 -0
  136. package/server/service/inventory-history/inventory-history-types.ts +269 -0
  137. package/server/{entities → service/inventory-history}/inventory-history.ts +66 -11
  138. package/server/service/location/index.ts +6 -0
  139. package/server/service/location/location-mutation.ts +134 -0
  140. package/server/service/location/location-query.ts +209 -0
  141. package/server/service/location/location-types.ts +169 -0
  142. package/server/{entities → service/location}/location.ts +41 -4
  143. package/server/service/movement/index.ts +6 -0
  144. package/server/service/movement/movement-mutation.ts +61 -0
  145. package/server/service/movement/movement-query.ts +258 -0
  146. package/server/service/movement/movement-types.ts +74 -0
  147. package/server/{entities → service/movement}/movement.ts +35 -2
  148. package/server/service/pallet/index.ts +6 -0
  149. package/server/service/pallet/pallet-mutation.ts +244 -0
  150. package/server/service/pallet/pallet-query.ts +105 -0
  151. package/server/service/pallet/pallet-types.ts +68 -0
  152. package/server/{entities → service/pallet}/pallet.ts +31 -4
  153. package/server/service/pallet-count/index.ts +6 -0
  154. package/server/service/pallet-count/pallet-count-mutation.ts +148 -0
  155. package/server/service/pallet-count/pallet-count-query.ts +46 -0
  156. package/server/service/pallet-count/pallet-count-types.ts +36 -0
  157. package/server/service/pallet-count/pallet-count.ts +70 -0
  158. package/server/service/pallet-history/index.ts +6 -0
  159. package/server/service/pallet-history/pallet-history-mutation.ts +114 -0
  160. package/server/service/pallet-history/pallet-history-query.ts +46 -0
  161. package/server/service/pallet-history/pallet-history-types.ts +36 -0
  162. package/server/{entities → service/pallet-history}/pallet-history.ts +34 -12
  163. package/server/service/reduced-inventory-history/index.ts +3 -0
  164. package/server/{entities → service/reduced-inventory-history}/reduced-inventory-history.ts +0 -6
  165. package/server/service/warehouse/index.ts +6 -0
  166. package/server/service/warehouse/warehouse-mutation.ts +114 -0
  167. package/server/service/warehouse/warehouse-query.ts +51 -0
  168. package/server/service/warehouse/warehouse-types.ts +50 -0
  169. package/server/{entities → service/warehouse}/warehouse.ts +29 -4
  170. package/server/utils/datetime-util.ts +54 -0
  171. package/server/utils/index.ts +1 -0
  172. package/server/utils/inventory-util.ts +163 -42
  173. package/dist-server/entities/index.js +0 -36
  174. package/dist-server/entities/index.js.map +0 -1
  175. package/dist-server/entities/inventory-change.js.map +0 -1
  176. package/dist-server/entities/inventory-history.js.map +0 -1
  177. package/dist-server/entities/inventory.js.map +0 -1
  178. package/dist-server/entities/location.js.map +0 -1
  179. package/dist-server/entities/movement.js.map +0 -1
  180. package/dist-server/entities/pallet-count.js.map +0 -1
  181. package/dist-server/entities/pallet-history.js.map +0 -1
  182. package/dist-server/entities/pallet.js.map +0 -1
  183. package/dist-server/entities/reduced-inventory-history.js.map +0 -1
  184. package/dist-server/entities/warehouse.js.map +0 -1
  185. package/dist-server/graphql/index.js +0 -29
  186. package/dist-server/graphql/index.js.map +0 -1
  187. package/dist-server/graphql/resolvers/index.js +0 -54
  188. package/dist-server/graphql/resolvers/index.js.map +0 -1
  189. package/dist-server/graphql/resolvers/inventory/check-carton-identicality.js +0 -32
  190. package/dist-server/graphql/resolvers/inventory/check-carton-identicality.js.map +0 -1
  191. package/dist-server/graphql/resolvers/inventory/check-inventory-owner.js +0 -25
  192. package/dist-server/graphql/resolvers/inventory/check-inventory-owner.js.map +0 -1
  193. package/dist-server/graphql/resolvers/inventory/check-product-identicality.js +0 -24
  194. package/dist-server/graphql/resolvers/inventory/check-product-identicality.js.map +0 -1
  195. package/dist-server/graphql/resolvers/inventory/create-inventory.js +0 -11
  196. package/dist-server/graphql/resolvers/inventory/create-inventory.js.map +0 -1
  197. package/dist-server/graphql/resolvers/inventory/delete-inventories.js +0 -15
  198. package/dist-server/graphql/resolvers/inventory/delete-inventories.js.map +0 -1
  199. package/dist-server/graphql/resolvers/inventory/delete-inventory.js +0 -11
  200. package/dist-server/graphql/resolvers/inventory/delete-inventory.js.map +0 -1
  201. package/dist-server/graphql/resolvers/inventory/index.js +0 -22
  202. package/dist-server/graphql/resolvers/inventory/index.js.map +0 -1
  203. package/dist-server/graphql/resolvers/inventory/inventories-by-bundle.js +0 -135
  204. package/dist-server/graphql/resolvers/inventory/inventories-by-bundle.js.map +0 -1
  205. package/dist-server/graphql/resolvers/inventory/inventories-by-product.js +0 -150
  206. package/dist-server/graphql/resolvers/inventory/inventories-by-product.js.map +0 -1
  207. package/dist-server/graphql/resolvers/inventory/inventories-by-strategy.js +0 -132
  208. package/dist-server/graphql/resolvers/inventory/inventories-by-strategy.js.map +0 -1
  209. package/dist-server/graphql/resolvers/inventory/inventories.js +0 -102
  210. package/dist-server/graphql/resolvers/inventory/inventories.js.map +0 -1
  211. package/dist-server/graphql/resolvers/inventory/inventory-by-pallet.js +0 -16
  212. package/dist-server/graphql/resolvers/inventory/inventory-by-pallet.js.map +0 -1
  213. package/dist-server/graphql/resolvers/inventory/inventory-transfer.js +0 -46
  214. package/dist-server/graphql/resolvers/inventory/inventory-transfer.js.map +0 -1
  215. package/dist-server/graphql/resolvers/inventory/inventory.js +0 -15
  216. package/dist-server/graphql/resolvers/inventory/inventory.js.map +0 -1
  217. package/dist-server/graphql/resolvers/inventory/update-inventory-remark.js +0 -13
  218. package/dist-server/graphql/resolvers/inventory/update-inventory-remark.js.map +0 -1
  219. package/dist-server/graphql/resolvers/inventory/update-inventory.js +0 -25
  220. package/dist-server/graphql/resolvers/inventory/update-inventory.js.map +0 -1
  221. package/dist-server/graphql/resolvers/inventory/update-multiple-inventory.js +0 -152
  222. package/dist-server/graphql/resolvers/inventory/update-multiple-inventory.js.map +0 -1
  223. package/dist-server/graphql/resolvers/inventory-change/approve-inventory-changes.js.map +0 -1
  224. package/dist-server/graphql/resolvers/inventory-change/create-inventory-change.js +0 -11
  225. package/dist-server/graphql/resolvers/inventory-change/create-inventory-change.js.map +0 -1
  226. package/dist-server/graphql/resolvers/inventory-change/delete-inventory-change.js +0 -12
  227. package/dist-server/graphql/resolvers/inventory-change/delete-inventory-change.js.map +0 -1
  228. package/dist-server/graphql/resolvers/inventory-change/delete-inventory-changes.js +0 -16
  229. package/dist-server/graphql/resolvers/inventory-change/delete-inventory-changes.js.map +0 -1
  230. package/dist-server/graphql/resolvers/inventory-change/index.js +0 -16
  231. package/dist-server/graphql/resolvers/inventory-change/index.js.map +0 -1
  232. package/dist-server/graphql/resolvers/inventory-change/inventory-change.js +0 -15
  233. package/dist-server/graphql/resolvers/inventory-change/inventory-change.js.map +0 -1
  234. package/dist-server/graphql/resolvers/inventory-change/inventory-changes.js +0 -48
  235. package/dist-server/graphql/resolvers/inventory-change/inventory-changes.js.map +0 -1
  236. package/dist-server/graphql/resolvers/inventory-change/reject-inventory-changes.js +0 -41
  237. package/dist-server/graphql/resolvers/inventory-change/reject-inventory-changes.js.map +0 -1
  238. package/dist-server/graphql/resolvers/inventory-change/submit-inventory-changes.js +0 -69
  239. package/dist-server/graphql/resolvers/inventory-change/submit-inventory-changes.js.map +0 -1
  240. package/dist-server/graphql/resolvers/inventory-change/update-inventory-change.js +0 -15
  241. package/dist-server/graphql/resolvers/inventory-change/update-inventory-change.js.map +0 -1
  242. package/dist-server/graphql/resolvers/inventory-change/update-multiple-inventory-change.js +0 -30
  243. package/dist-server/graphql/resolvers/inventory-change/update-multiple-inventory-change.js.map +0 -1
  244. package/dist-server/graphql/resolvers/inventory-history/bizplace-inventory-histories.js +0 -59
  245. package/dist-server/graphql/resolvers/inventory-history/bizplace-inventory-histories.js.map +0 -1
  246. package/dist-server/graphql/resolvers/inventory-history/create-inventory-history.js +0 -11
  247. package/dist-server/graphql/resolvers/inventory-history/create-inventory-history.js.map +0 -1
  248. package/dist-server/graphql/resolvers/inventory-history/delete-inventory-histories.js +0 -16
  249. package/dist-server/graphql/resolvers/inventory-history/delete-inventory-histories.js.map +0 -1
  250. package/dist-server/graphql/resolvers/inventory-history/delete-inventory-history.js +0 -12
  251. package/dist-server/graphql/resolvers/inventory-history/delete-inventory-history.js.map +0 -1
  252. package/dist-server/graphql/resolvers/inventory-history/index.js +0 -21
  253. package/dist-server/graphql/resolvers/inventory-history/index.js.map +0 -1
  254. package/dist-server/graphql/resolvers/inventory-history/inventory-histories.js +0 -48
  255. package/dist-server/graphql/resolvers/inventory-history/inventory-histories.js.map +0 -1
  256. package/dist-server/graphql/resolvers/inventory-history/inventory-history-pallet-detail-report.js +0 -158
  257. package/dist-server/graphql/resolvers/inventory-history/inventory-history-pallet-detail-report.js.map +0 -1
  258. package/dist-server/graphql/resolvers/inventory-history/inventory-history-pallet-report.js +0 -125
  259. package/dist-server/graphql/resolvers/inventory-history/inventory-history-pallet-report.js.map +0 -1
  260. package/dist-server/graphql/resolvers/inventory-history/inventory-history-pallet-storage-report.js +0 -113
  261. package/dist-server/graphql/resolvers/inventory-history/inventory-history-pallet-storage-report.js.map +0 -1
  262. package/dist-server/graphql/resolvers/inventory-history/inventory-history-report.js +0 -207
  263. package/dist-server/graphql/resolvers/inventory-history/inventory-history-report.js.map +0 -1
  264. package/dist-server/graphql/resolvers/inventory-history/inventory-history-summary-report.js +0 -260
  265. package/dist-server/graphql/resolvers/inventory-history/inventory-history-summary-report.js.map +0 -1
  266. package/dist-server/graphql/resolvers/inventory-history/inventory-history.js +0 -14
  267. package/dist-server/graphql/resolvers/inventory-history/inventory-history.js.map +0 -1
  268. package/dist-server/graphql/resolvers/inventory-history/onhand-inventories.js +0 -202
  269. package/dist-server/graphql/resolvers/inventory-history/onhand-inventories.js.map +0 -1
  270. package/dist-server/graphql/resolvers/inventory-history/update-inventory-history.js +0 -15
  271. package/dist-server/graphql/resolvers/inventory-history/update-inventory-history.js.map +0 -1
  272. package/dist-server/graphql/resolvers/inventory-history/update-multiple-inventory-history.js +0 -31
  273. package/dist-server/graphql/resolvers/inventory-history/update-multiple-inventory-history.js.map +0 -1
  274. package/dist-server/graphql/resolvers/location/create-location.js +0 -17
  275. package/dist-server/graphql/resolvers/location/create-location.js.map +0 -1
  276. package/dist-server/graphql/resolvers/location/delete-all-locations.js +0 -13
  277. package/dist-server/graphql/resolvers/location/delete-all-locations.js.map +0 -1
  278. package/dist-server/graphql/resolvers/location/delete-location.js +0 -17
  279. package/dist-server/graphql/resolvers/location/delete-location.js.map +0 -1
  280. package/dist-server/graphql/resolvers/location/delete-locations.js +0 -17
  281. package/dist-server/graphql/resolvers/location/delete-locations.js.map +0 -1
  282. package/dist-server/graphql/resolvers/location/index.js +0 -22
  283. package/dist-server/graphql/resolvers/location/index.js.map +0 -1
  284. package/dist-server/graphql/resolvers/location/location-by-name.js +0 -18
  285. package/dist-server/graphql/resolvers/location/location-by-name.js.map +0 -1
  286. package/dist-server/graphql/resolvers/location/location-occupancies.js +0 -29
  287. package/dist-server/graphql/resolvers/location/location-occupancies.js.map +0 -1
  288. package/dist-server/graphql/resolvers/location/location-with-inventories.js +0 -75
  289. package/dist-server/graphql/resolvers/location/location-with-inventories.js.map +0 -1
  290. package/dist-server/graphql/resolvers/location/location.js +0 -14
  291. package/dist-server/graphql/resolvers/location/location.js.map +0 -1
  292. package/dist-server/graphql/resolvers/location/locations-by-group.js +0 -27
  293. package/dist-server/graphql/resolvers/location/locations-by-group.js.map +0 -1
  294. package/dist-server/graphql/resolvers/location/locations.js +0 -20
  295. package/dist-server/graphql/resolvers/location/locations.js.map +0 -1
  296. package/dist-server/graphql/resolvers/location/update-location.js +0 -21
  297. package/dist-server/graphql/resolvers/location/update-location.js.map +0 -1
  298. package/dist-server/graphql/resolvers/location/update-multiple-location.js +0 -28
  299. package/dist-server/graphql/resolvers/location/update-multiple-location.js.map +0 -1
  300. package/dist-server/graphql/resolvers/movement/create-movement.js +0 -11
  301. package/dist-server/graphql/resolvers/movement/create-movement.js.map +0 -1
  302. package/dist-server/graphql/resolvers/movement/delete-movement.js +0 -12
  303. package/dist-server/graphql/resolvers/movement/delete-movement.js.map +0 -1
  304. package/dist-server/graphql/resolvers/movement/inbound-movements-counter.js +0 -59
  305. package/dist-server/graphql/resolvers/movement/inbound-movements-counter.js.map +0 -1
  306. package/dist-server/graphql/resolvers/movement/index.js +0 -14
  307. package/dist-server/graphql/resolvers/movement/index.js.map +0 -1
  308. package/dist-server/graphql/resolvers/movement/movement.js +0 -19
  309. package/dist-server/graphql/resolvers/movement/movement.js.map +0 -1
  310. package/dist-server/graphql/resolvers/movement/movements.js +0 -16
  311. package/dist-server/graphql/resolvers/movement/movements.js.map +0 -1
  312. package/dist-server/graphql/resolvers/movement/outbound-movements-counter.js +0 -61
  313. package/dist-server/graphql/resolvers/movement/outbound-movements-counter.js.map +0 -1
  314. package/dist-server/graphql/resolvers/movement/update-movement.js +0 -22
  315. package/dist-server/graphql/resolvers/movement/update-movement.js.map +0 -1
  316. package/dist-server/graphql/resolvers/movement/weekly-movements-counter.js +0 -73
  317. package/dist-server/graphql/resolvers/movement/weekly-movements-counter.js.map +0 -1
  318. package/dist-server/graphql/resolvers/pallet/create-pallet.js +0 -11
  319. package/dist-server/graphql/resolvers/pallet/create-pallet.js.map +0 -1
  320. package/dist-server/graphql/resolvers/pallet/delete-pallet.js +0 -12
  321. package/dist-server/graphql/resolvers/pallet/delete-pallet.js.map +0 -1
  322. package/dist-server/graphql/resolvers/pallet/delete-pallets.js +0 -35
  323. package/dist-server/graphql/resolvers/pallet/delete-pallets.js.map +0 -1
  324. package/dist-server/graphql/resolvers/pallet/index.js +0 -17
  325. package/dist-server/graphql/resolvers/pallet/index.js.map +0 -1
  326. package/dist-server/graphql/resolvers/pallet/pallet-by-status.js +0 -16
  327. package/dist-server/graphql/resolvers/pallet/pallet-by-status.js.map +0 -1
  328. package/dist-server/graphql/resolvers/pallet/pallet-inbound-validate.js +0 -26
  329. package/dist-server/graphql/resolvers/pallet/pallet-inbound-validate.js.map +0 -1
  330. package/dist-server/graphql/resolvers/pallet/pallet-outbound-validate.js +0 -26
  331. package/dist-server/graphql/resolvers/pallet/pallet-outbound-validate.js.map +0 -1
  332. package/dist-server/graphql/resolvers/pallet/pallet-return.js +0 -31
  333. package/dist-server/graphql/resolvers/pallet/pallet-return.js.map +0 -1
  334. package/dist-server/graphql/resolvers/pallet/pallet.js +0 -16
  335. package/dist-server/graphql/resolvers/pallet/pallet.js.map +0 -1
  336. package/dist-server/graphql/resolvers/pallet/pallets.js +0 -21
  337. package/dist-server/graphql/resolvers/pallet/pallets.js.map +0 -1
  338. package/dist-server/graphql/resolvers/pallet/update-multiple-pallet.js +0 -50
  339. package/dist-server/graphql/resolvers/pallet/update-multiple-pallet.js.map +0 -1
  340. package/dist-server/graphql/resolvers/pallet/update-pallet.js +0 -15
  341. package/dist-server/graphql/resolvers/pallet/update-pallet.js.map +0 -1
  342. package/dist-server/graphql/resolvers/pallet-count/create-pallet-count.js +0 -11
  343. package/dist-server/graphql/resolvers/pallet-count/create-pallet-count.js.map +0 -1
  344. package/dist-server/graphql/resolvers/pallet-count/delete-pallet-count.js +0 -12
  345. package/dist-server/graphql/resolvers/pallet-count/delete-pallet-count.js.map +0 -1
  346. package/dist-server/graphql/resolvers/pallet-count/delete-pallet-counts.js +0 -16
  347. package/dist-server/graphql/resolvers/pallet-count/delete-pallet-counts.js.map +0 -1
  348. package/dist-server/graphql/resolvers/pallet-count/index.js +0 -14
  349. package/dist-server/graphql/resolvers/pallet-count/index.js.map +0 -1
  350. package/dist-server/graphql/resolvers/pallet-count/pallet-count.js +0 -15
  351. package/dist-server/graphql/resolvers/pallet-count/pallet-count.js.map +0 -1
  352. package/dist-server/graphql/resolvers/pallet-count/pallet-counts.js +0 -14
  353. package/dist-server/graphql/resolvers/pallet-count/pallet-counts.js.map +0 -1
  354. package/dist-server/graphql/resolvers/pallet-count/update-multiple-pallet-count.js +0 -30
  355. package/dist-server/graphql/resolvers/pallet-count/update-multiple-pallet-count.js.map +0 -1
  356. package/dist-server/graphql/resolvers/pallet-count/update-pallet-count-seq.js +0 -38
  357. package/dist-server/graphql/resolvers/pallet-count/update-pallet-count-seq.js.map +0 -1
  358. package/dist-server/graphql/resolvers/pallet-count/update-pallet-count.js +0 -15
  359. package/dist-server/graphql/resolvers/pallet-count/update-pallet-count.js.map +0 -1
  360. package/dist-server/graphql/resolvers/pallet-history/create-pallet-history.js +0 -11
  361. package/dist-server/graphql/resolvers/pallet-history/create-pallet-history.js.map +0 -1
  362. package/dist-server/graphql/resolvers/pallet-history/delete-pallet-histories.js +0 -16
  363. package/dist-server/graphql/resolvers/pallet-history/delete-pallet-histories.js.map +0 -1
  364. package/dist-server/graphql/resolvers/pallet-history/delete-pallet-history.js +0 -12
  365. package/dist-server/graphql/resolvers/pallet-history/delete-pallet-history.js.map +0 -1
  366. package/dist-server/graphql/resolvers/pallet-history/index.js +0 -13
  367. package/dist-server/graphql/resolvers/pallet-history/index.js.map +0 -1
  368. package/dist-server/graphql/resolvers/pallet-history/pallet-histories.js +0 -14
  369. package/dist-server/graphql/resolvers/pallet-history/pallet-histories.js.map +0 -1
  370. package/dist-server/graphql/resolvers/pallet-history/pallet-history.js +0 -15
  371. package/dist-server/graphql/resolvers/pallet-history/pallet-history.js.map +0 -1
  372. package/dist-server/graphql/resolvers/pallet-history/update-multiple-pallet-history.js +0 -30
  373. package/dist-server/graphql/resolvers/pallet-history/update-multiple-pallet-history.js.map +0 -1
  374. package/dist-server/graphql/resolvers/pallet-history/update-pallet-history.js +0 -15
  375. package/dist-server/graphql/resolvers/pallet-history/update-pallet-history.js.map +0 -1
  376. package/dist-server/graphql/resolvers/warehouse/create-warehouse.js +0 -16
  377. package/dist-server/graphql/resolvers/warehouse/create-warehouse.js.map +0 -1
  378. package/dist-server/graphql/resolvers/warehouse/delete-warehouse.js +0 -17
  379. package/dist-server/graphql/resolvers/warehouse/delete-warehouse.js.map +0 -1
  380. package/dist-server/graphql/resolvers/warehouse/delete-warehouses.js +0 -17
  381. package/dist-server/graphql/resolvers/warehouse/delete-warehouses.js.map +0 -1
  382. package/dist-server/graphql/resolvers/warehouse/index.js +0 -17
  383. package/dist-server/graphql/resolvers/warehouse/index.js.map +0 -1
  384. package/dist-server/graphql/resolvers/warehouse/update-multiple-warehouse.js +0 -28
  385. package/dist-server/graphql/resolvers/warehouse/update-multiple-warehouse.js.map +0 -1
  386. package/dist-server/graphql/resolvers/warehouse/update-warehouse.js +0 -17
  387. package/dist-server/graphql/resolvers/warehouse/update-warehouse.js.map +0 -1
  388. package/dist-server/graphql/resolvers/warehouse/warehouse.js +0 -18
  389. package/dist-server/graphql/resolvers/warehouse/warehouse.js.map +0 -1
  390. package/dist-server/graphql/resolvers/warehouse/warehouses.js +0 -15
  391. package/dist-server/graphql/resolvers/warehouse/warehouses.js.map +0 -1
  392. package/dist-server/graphql/types/index.js +0 -65
  393. package/dist-server/graphql/types/index.js.map +0 -1
  394. package/dist-server/graphql/types/inventory/index.js +0 -62
  395. package/dist-server/graphql/types/inventory/index.js.map +0 -1
  396. package/dist-server/graphql/types/inventory/inventory-bundle-group-detail.js +0 -14
  397. package/dist-server/graphql/types/inventory/inventory-bundle-group-detail.js.map +0 -1
  398. package/dist-server/graphql/types/inventory/inventory-bundle-group.js +0 -40
  399. package/dist-server/graphql/types/inventory/inventory-bundle-group.js.map +0 -1
  400. package/dist-server/graphql/types/inventory/inventory-list.js +0 -14
  401. package/dist-server/graphql/types/inventory/inventory-list.js.map +0 -1
  402. package/dist-server/graphql/types/inventory/inventory-patch.js +0 -48
  403. package/dist-server/graphql/types/inventory/inventory-patch.js.map +0 -1
  404. package/dist-server/graphql/types/inventory/inventory.js +0 -57
  405. package/dist-server/graphql/types/inventory/inventory.js.map +0 -1
  406. package/dist-server/graphql/types/inventory/new-inventory.js +0 -35
  407. package/dist-server/graphql/types/inventory/new-inventory.js.map +0 -1
  408. package/dist-server/graphql/types/inventory-change/index.js +0 -48
  409. package/dist-server/graphql/types/inventory-change/index.js.map +0 -1
  410. package/dist-server/graphql/types/inventory-change/inventory-change-list.js +0 -14
  411. package/dist-server/graphql/types/inventory-change/inventory-change-list.js.map +0 -1
  412. package/dist-server/graphql/types/inventory-change/inventory-change-patch.js +0 -16
  413. package/dist-server/graphql/types/inventory-change/inventory-change-patch.js.map +0 -1
  414. package/dist-server/graphql/types/inventory-change/inventory-change.js +0 -39
  415. package/dist-server/graphql/types/inventory-change/inventory-change.js.map +0 -1
  416. package/dist-server/graphql/types/inventory-change/new-inventory-change.js +0 -14
  417. package/dist-server/graphql/types/inventory-change/new-inventory-change.js.map +0 -1
  418. package/dist-server/graphql/types/inventory-history/index.js +0 -55
  419. package/dist-server/graphql/types/inventory-history/index.js.map +0 -1
  420. package/dist-server/graphql/types/inventory-history/inventory-history-list.js +0 -14
  421. package/dist-server/graphql/types/inventory-history/inventory-history-list.js.map +0 -1
  422. package/dist-server/graphql/types/inventory-history/inventory-history-pallet-report-list.js +0 -15
  423. package/dist-server/graphql/types/inventory-history/inventory-history-pallet-report-list.js.map +0 -1
  424. package/dist-server/graphql/types/inventory-history/inventory-history-pallet-report.js +0 -19
  425. package/dist-server/graphql/types/inventory-history/inventory-history-pallet-report.js.map +0 -1
  426. package/dist-server/graphql/types/inventory-history/inventory-history-patch.js +0 -43
  427. package/dist-server/graphql/types/inventory-history/inventory-history-patch.js.map +0 -1
  428. package/dist-server/graphql/types/inventory-history/inventory-history-summary-list.js +0 -16
  429. package/dist-server/graphql/types/inventory-history/inventory-history-summary-list.js.map +0 -1
  430. package/dist-server/graphql/types/inventory-history/inventory-history-summary.js +0 -23
  431. package/dist-server/graphql/types/inventory-history/inventory-history-summary.js.map +0 -1
  432. package/dist-server/graphql/types/inventory-history/inventory-history.js +0 -62
  433. package/dist-server/graphql/types/inventory-history/inventory-history.js.map +0 -1
  434. package/dist-server/graphql/types/inventory-history/new-inventory-history.js +0 -35
  435. package/dist-server/graphql/types/inventory-history/new-inventory-history.js.map +0 -1
  436. package/dist-server/graphql/types/location/index.js +0 -54
  437. package/dist-server/graphql/types/location/index.js.map +0 -1
  438. package/dist-server/graphql/types/location/location-inventories.js +0 -14
  439. package/dist-server/graphql/types/location/location-inventories.js.map +0 -1
  440. package/dist-server/graphql/types/location/location-inventory.js +0 -27
  441. package/dist-server/graphql/types/location/location-inventory.js.map +0 -1
  442. package/dist-server/graphql/types/location/location-list.js +0 -14
  443. package/dist-server/graphql/types/location/location-list.js.map +0 -1
  444. package/dist-server/graphql/types/location/location-occupancy.js +0 -16
  445. package/dist-server/graphql/types/location/location-occupancy.js.map +0 -1
  446. package/dist-server/graphql/types/location/location-patch.js +0 -23
  447. package/dist-server/graphql/types/location/location-patch.js.map +0 -1
  448. package/dist-server/graphql/types/location/location.js +0 -27
  449. package/dist-server/graphql/types/location/location.js.map +0 -1
  450. package/dist-server/graphql/types/location/new-location.js +0 -21
  451. package/dist-server/graphql/types/location/new-location.js.map +0 -1
  452. package/dist-server/graphql/types/movement/index.js +0 -31
  453. package/dist-server/graphql/types/movement/index.js.map +0 -1
  454. package/dist-server/graphql/types/movement/movement-count.js +0 -17
  455. package/dist-server/graphql/types/movement/movement-count.js.map +0 -1
  456. package/dist-server/graphql/types/movement/movement-list.js +0 -14
  457. package/dist-server/graphql/types/movement/movement-list.js.map +0 -1
  458. package/dist-server/graphql/types/movement/movement-patch.js +0 -18
  459. package/dist-server/graphql/types/movement/movement-patch.js.map +0 -1
  460. package/dist-server/graphql/types/movement/movement.js +0 -23
  461. package/dist-server/graphql/types/movement/movement.js.map +0 -1
  462. package/dist-server/graphql/types/movement/new-movement.js +0 -18
  463. package/dist-server/graphql/types/movement/new-movement.js.map +0 -1
  464. package/dist-server/graphql/types/pallet/index.js +0 -49
  465. package/dist-server/graphql/types/pallet/index.js.map +0 -1
  466. package/dist-server/graphql/types/pallet/new-pallet.js +0 -17
  467. package/dist-server/graphql/types/pallet/new-pallet.js.map +0 -1
  468. package/dist-server/graphql/types/pallet/pallet-list.js +0 -14
  469. package/dist-server/graphql/types/pallet/pallet-list.js.map +0 -1
  470. package/dist-server/graphql/types/pallet/pallet-patch.js +0 -20
  471. package/dist-server/graphql/types/pallet/pallet-patch.js.map +0 -1
  472. package/dist-server/graphql/types/pallet/pallet-validate.js +0 -14
  473. package/dist-server/graphql/types/pallet/pallet-validate.js.map +0 -1
  474. package/dist-server/graphql/types/pallet/pallet.js +0 -24
  475. package/dist-server/graphql/types/pallet/pallet.js.map +0 -1
  476. package/dist-server/graphql/types/pallet-count/index.js +0 -39
  477. package/dist-server/graphql/types/pallet-count/index.js.map +0 -1
  478. package/dist-server/graphql/types/pallet-count/new-pallet-count.js +0 -14
  479. package/dist-server/graphql/types/pallet-count/new-pallet-count.js.map +0 -1
  480. package/dist-server/graphql/types/pallet-count/pallet-count-list.js +0 -14
  481. package/dist-server/graphql/types/pallet-count/pallet-count-list.js.map +0 -1
  482. package/dist-server/graphql/types/pallet-count/pallet-count-patch.js +0 -16
  483. package/dist-server/graphql/types/pallet-count/pallet-count-patch.js.map +0 -1
  484. package/dist-server/graphql/types/pallet-count/pallet-count.js +0 -20
  485. package/dist-server/graphql/types/pallet-count/pallet-count.js.map +0 -1
  486. package/dist-server/graphql/types/pallet-history/index.js +0 -35
  487. package/dist-server/graphql/types/pallet-history/index.js.map +0 -1
  488. package/dist-server/graphql/types/pallet-history/new-pallet-history.js +0 -14
  489. package/dist-server/graphql/types/pallet-history/new-pallet-history.js.map +0 -1
  490. package/dist-server/graphql/types/pallet-history/pallet-history-list.js +0 -14
  491. package/dist-server/graphql/types/pallet-history/pallet-history-list.js.map +0 -1
  492. package/dist-server/graphql/types/pallet-history/pallet-history-patch.js +0 -16
  493. package/dist-server/graphql/types/pallet-history/pallet-history-patch.js.map +0 -1
  494. package/dist-server/graphql/types/pallet-history/pallet-history.js +0 -20
  495. package/dist-server/graphql/types/pallet-history/pallet-history.js.map +0 -1
  496. package/dist-server/graphql/types/warehouse/index.js +0 -35
  497. package/dist-server/graphql/types/warehouse/index.js.map +0 -1
  498. package/dist-server/graphql/types/warehouse/new-warehouse.js +0 -16
  499. package/dist-server/graphql/types/warehouse/new-warehouse.js.map +0 -1
  500. package/dist-server/graphql/types/warehouse/warehouse-list.js +0 -14
  501. package/dist-server/graphql/types/warehouse/warehouse-list.js.map +0 -1
  502. package/dist-server/graphql/types/warehouse/warehouse-patch.js +0 -18
  503. package/dist-server/graphql/types/warehouse/warehouse-patch.js.map +0 -1
  504. package/dist-server/graphql/types/warehouse/warehouse.js +0 -23
  505. package/dist-server/graphql/types/warehouse/warehouse.js.map +0 -1
  506. package/server/entities/index.ts +0 -36
  507. package/server/entities/pallet-count.ts +0 -40
  508. package/server/graphql/index.ts +0 -7
  509. package/server/graphql/resolvers/index.ts +0 -33
  510. package/server/graphql/resolvers/inventory/check-carton-identicality.ts +0 -32
  511. package/server/graphql/resolvers/inventory/check-inventory-owner.ts +0 -26
  512. package/server/graphql/resolvers/inventory/check-product-identicality.ts +0 -26
  513. package/server/graphql/resolvers/inventory/create-inventory.ts +0 -15
  514. package/server/graphql/resolvers/inventory/delete-inventories.ts +0 -14
  515. package/server/graphql/resolvers/inventory/delete-inventory.ts +0 -10
  516. package/server/graphql/resolvers/inventory/index.ts +0 -38
  517. package/server/graphql/resolvers/inventory/inventories-by-bundle.ts +0 -173
  518. package/server/graphql/resolvers/inventory/inventories-by-product.ts +0 -171
  519. package/server/graphql/resolvers/inventory/inventories-by-strategy.ts +0 -186
  520. package/server/graphql/resolvers/inventory/inventories.ts +0 -143
  521. package/server/graphql/resolvers/inventory/inventory-by-pallet.ts +0 -15
  522. package/server/graphql/resolvers/inventory/inventory-transfer.ts +0 -50
  523. package/server/graphql/resolvers/inventory/inventory.ts +0 -14
  524. package/server/graphql/resolvers/inventory/update-inventory-remark.ts +0 -19
  525. package/server/graphql/resolvers/inventory/update-inventory.ts +0 -31
  526. package/server/graphql/resolvers/inventory-change/create-inventory-change.ts +0 -17
  527. package/server/graphql/resolvers/inventory-change/delete-inventory-change.ts +0 -12
  528. package/server/graphql/resolvers/inventory-change/delete-inventory-changes.ts +0 -15
  529. package/server/graphql/resolvers/inventory-change/index.ts +0 -27
  530. package/server/graphql/resolvers/inventory-change/inventory-change.ts +0 -14
  531. package/server/graphql/resolvers/inventory-change/reject-inventory-changes.ts +0 -42
  532. package/server/graphql/resolvers/inventory-change/submit-inventory-changes.ts +0 -101
  533. package/server/graphql/resolvers/inventory-change/update-inventory-change.ts +0 -21
  534. package/server/graphql/resolvers/inventory-change/update-multiple-inventory-change.ts +0 -47
  535. package/server/graphql/resolvers/inventory-history/bizplace-inventory-histories.ts +0 -82
  536. package/server/graphql/resolvers/inventory-history/create-inventory-history.ts +0 -17
  537. package/server/graphql/resolvers/inventory-history/delete-inventory-histories.ts +0 -15
  538. package/server/graphql/resolvers/inventory-history/delete-inventory-history.ts +0 -12
  539. package/server/graphql/resolvers/inventory-history/index.ts +0 -37
  540. package/server/graphql/resolvers/inventory-history/inventory-histories.ts +0 -62
  541. package/server/graphql/resolvers/inventory-history/inventory-history-pallet-detail-report.ts +0 -166
  542. package/server/graphql/resolvers/inventory-history/inventory-history-pallet-report.ts +0 -133
  543. package/server/graphql/resolvers/inventory-history/inventory-history-pallet-storage-report.ts +0 -146
  544. package/server/graphql/resolvers/inventory-history/inventory-history-report.ts +0 -233
  545. package/server/graphql/resolvers/inventory-history/inventory-history-summary-report.ts +0 -317
  546. package/server/graphql/resolvers/inventory-history/inventory-history.ts +0 -13
  547. package/server/graphql/resolvers/inventory-history/onhand-inventories.ts +0 -246
  548. package/server/graphql/resolvers/inventory-history/update-inventory-history.ts +0 -21
  549. package/server/graphql/resolvers/inventory-history/update-multiple-inventory-history.ts +0 -48
  550. package/server/graphql/resolvers/location/create-location.ts +0 -25
  551. package/server/graphql/resolvers/location/delete-all-locations.ts +0 -12
  552. package/server/graphql/resolvers/location/delete-location.ts +0 -16
  553. package/server/graphql/resolvers/location/delete-locations.ts +0 -16
  554. package/server/graphql/resolvers/location/index.ts +0 -32
  555. package/server/graphql/resolvers/location/location-by-name.ts +0 -17
  556. package/server/graphql/resolvers/location/location-occupancies.ts +0 -33
  557. package/server/graphql/resolvers/location/location-with-inventories.ts +0 -87
  558. package/server/graphql/resolvers/location/location.ts +0 -12
  559. package/server/graphql/resolvers/location/locations-by-group.ts +0 -29
  560. package/server/graphql/resolvers/location/locations.ts +0 -18
  561. package/server/graphql/resolvers/location/update-location.ts +0 -27
  562. package/server/graphql/resolvers/location/update-multiple-location.ts +0 -29
  563. package/server/graphql/resolvers/movement/create-movement.ts +0 -13
  564. package/server/graphql/resolvers/movement/delete-movement.ts +0 -9
  565. package/server/graphql/resolvers/movement/inbound-movements-counter.ts +0 -69
  566. package/server/graphql/resolvers/movement/index.ts +0 -23
  567. package/server/graphql/resolvers/movement/movement.ts +0 -16
  568. package/server/graphql/resolvers/movement/movements.ts +0 -17
  569. package/server/graphql/resolvers/movement/outbound-movements-counter.ts +0 -71
  570. package/server/graphql/resolvers/movement/update-movement.ts +0 -25
  571. package/server/graphql/resolvers/movement/weekly-movements-counter.ts +0 -84
  572. package/server/graphql/resolvers/pallet/create-pallet.ts +0 -18
  573. package/server/graphql/resolvers/pallet/delete-pallet.ts +0 -13
  574. package/server/graphql/resolvers/pallet/delete-pallets.ts +0 -44
  575. package/server/graphql/resolvers/pallet/index.ts +0 -29
  576. package/server/graphql/resolvers/pallet/pallet-by-status.ts +0 -16
  577. package/server/graphql/resolvers/pallet/pallet-inbound-validate.ts +0 -21
  578. package/server/graphql/resolvers/pallet/pallet-outbound-validate.ts +0 -21
  579. package/server/graphql/resolvers/pallet/pallet-return.ts +0 -57
  580. package/server/graphql/resolvers/pallet/pallet.ts +0 -15
  581. package/server/graphql/resolvers/pallet/pallets.ts +0 -22
  582. package/server/graphql/resolvers/pallet/update-multiple-pallet.ts +0 -95
  583. package/server/graphql/resolvers/pallet/update-pallet.ts +0 -21
  584. package/server/graphql/resolvers/pallet-count/create-pallet-count.ts +0 -17
  585. package/server/graphql/resolvers/pallet-count/delete-pallet-count.ts +0 -12
  586. package/server/graphql/resolvers/pallet-count/delete-pallet-counts.ts +0 -15
  587. package/server/graphql/resolvers/pallet-count/index.ts +0 -23
  588. package/server/graphql/resolvers/pallet-count/pallet-count.ts +0 -14
  589. package/server/graphql/resolvers/pallet-count/pallet-counts.ts +0 -14
  590. package/server/graphql/resolvers/pallet-count/update-multiple-pallet-count.ts +0 -47
  591. package/server/graphql/resolvers/pallet-count/update-pallet-count-seq.ts +0 -44
  592. package/server/graphql/resolvers/pallet-count/update-pallet-count.ts +0 -21
  593. package/server/graphql/resolvers/pallet-history/create-pallet-history.ts +0 -17
  594. package/server/graphql/resolvers/pallet-history/delete-pallet-histories.ts +0 -16
  595. package/server/graphql/resolvers/pallet-history/delete-pallet-history.ts +0 -13
  596. package/server/graphql/resolvers/pallet-history/index.ts +0 -21
  597. package/server/graphql/resolvers/pallet-history/pallet-histories.ts +0 -14
  598. package/server/graphql/resolvers/pallet-history/pallet-history.ts +0 -14
  599. package/server/graphql/resolvers/pallet-history/update-multiple-pallet-history.ts +0 -46
  600. package/server/graphql/resolvers/pallet-history/update-pallet-history.ts +0 -21
  601. package/server/graphql/resolvers/warehouse/create-warehouse.ts +0 -22
  602. package/server/graphql/resolvers/warehouse/delete-warehouse.ts +0 -16
  603. package/server/graphql/resolvers/warehouse/delete-warehouses.ts +0 -16
  604. package/server/graphql/resolvers/warehouse/index.ts +0 -22
  605. package/server/graphql/resolvers/warehouse/update-multiple-warehouse.ts +0 -29
  606. package/server/graphql/resolvers/warehouse/update-warehouse.ts +0 -23
  607. package/server/graphql/resolvers/warehouse/warehouse.ts +0 -17
  608. package/server/graphql/resolvers/warehouse/warehouses.ts +0 -16
  609. package/server/graphql/types/index.ts +0 -45
  610. package/server/graphql/types/inventory/index.ts +0 -61
  611. package/server/graphql/types/inventory/inventory-bundle-group-detail.ts +0 -8
  612. package/server/graphql/types/inventory/inventory-bundle-group.ts +0 -34
  613. package/server/graphql/types/inventory/inventory-list.ts +0 -8
  614. package/server/graphql/types/inventory/inventory-patch.ts +0 -42
  615. package/server/graphql/types/inventory/inventory.ts +0 -51
  616. package/server/graphql/types/inventory/new-inventory.ts +0 -29
  617. package/server/graphql/types/inventory-change/index.ts +0 -47
  618. package/server/graphql/types/inventory-change/inventory-change-list.ts +0 -8
  619. package/server/graphql/types/inventory-change/inventory-change-patch.ts +0 -10
  620. package/server/graphql/types/inventory-change/inventory-change.ts +0 -33
  621. package/server/graphql/types/inventory-change/new-inventory-change.ts +0 -8
  622. package/server/graphql/types/inventory-history/index.ts +0 -54
  623. package/server/graphql/types/inventory-history/inventory-history-list.ts +0 -8
  624. package/server/graphql/types/inventory-history/inventory-history-pallet-report-list.ts +0 -9
  625. package/server/graphql/types/inventory-history/inventory-history-pallet-report.ts +0 -13
  626. package/server/graphql/types/inventory-history/inventory-history-patch.ts +0 -37
  627. package/server/graphql/types/inventory-history/inventory-history-summary-list.ts +0 -10
  628. package/server/graphql/types/inventory-history/inventory-history-summary.ts +0 -17
  629. package/server/graphql/types/inventory-history/inventory-history.ts +0 -56
  630. package/server/graphql/types/inventory-history/new-inventory-history.ts +0 -29
  631. package/server/graphql/types/location/index.ts +0 -53
  632. package/server/graphql/types/location/location-inventories.ts +0 -8
  633. package/server/graphql/types/location/location-inventory.ts +0 -21
  634. package/server/graphql/types/location/location-list.ts +0 -8
  635. package/server/graphql/types/location/location-occupancy.ts +0 -10
  636. package/server/graphql/types/location/location-patch.ts +0 -17
  637. package/server/graphql/types/location/location.ts +0 -21
  638. package/server/graphql/types/location/new-location.ts +0 -15
  639. package/server/graphql/types/movement/index.ts +0 -31
  640. package/server/graphql/types/movement/movement-count.ts +0 -11
  641. package/server/graphql/types/movement/movement-list.ts +0 -8
  642. package/server/graphql/types/movement/movement-patch.ts +0 -12
  643. package/server/graphql/types/movement/movement.ts +0 -17
  644. package/server/graphql/types/movement/new-movement.ts +0 -12
  645. package/server/graphql/types/pallet/index.ts +0 -48
  646. package/server/graphql/types/pallet/new-pallet.ts +0 -11
  647. package/server/graphql/types/pallet/pallet-list.ts +0 -8
  648. package/server/graphql/types/pallet/pallet-patch.ts +0 -14
  649. package/server/graphql/types/pallet/pallet-validate.ts +0 -8
  650. package/server/graphql/types/pallet/pallet.ts +0 -18
  651. package/server/graphql/types/pallet-count/index.ts +0 -38
  652. package/server/graphql/types/pallet-count/new-pallet-count.ts +0 -8
  653. package/server/graphql/types/pallet-count/pallet-count-list.ts +0 -8
  654. package/server/graphql/types/pallet-count/pallet-count-patch.ts +0 -10
  655. package/server/graphql/types/pallet-count/pallet-count.ts +0 -14
  656. package/server/graphql/types/pallet-history/index.ts +0 -34
  657. package/server/graphql/types/pallet-history/new-pallet-history.ts +0 -8
  658. package/server/graphql/types/pallet-history/pallet-history-list.ts +0 -8
  659. package/server/graphql/types/pallet-history/pallet-history-patch.ts +0 -10
  660. package/server/graphql/types/pallet-history/pallet-history.ts +0 -14
  661. package/server/graphql/types/warehouse/index.ts +0 -34
  662. package/server/graphql/types/warehouse/new-warehouse.ts +0 -10
  663. package/server/graphql/types/warehouse/warehouse-list.ts +0 -8
  664. package/server/graphql/types/warehouse/warehouse-patch.ts +0 -12
  665. package/server/graphql/types/warehouse/warehouse.ts +0 -17
@@ -0,0 +1,1434 @@
1
+ import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
+ import { Between, Brackets, EntityManager, getRepository, In, Raw, SelectQueryBuilder } from 'typeorm'
3
+
4
+ import { User } from '@things-factory/auth-base'
5
+ import { Bizplace, getMyBizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'
6
+ import { Product } from '@things-factory/product-base'
7
+ import { convertListParams, Domain, Filter, ListParam, Pagination, Sorting } from '@things-factory/shell'
8
+
9
+ import { InventoryList } from '../inventory/inventory-types'
10
+ import { Location } from '../location/location'
11
+ import { Warehouse } from '../warehouse/warehouse'
12
+ import { InventoryHistory } from './inventory-history'
13
+ import {
14
+ InventoryHistoryList,
15
+ InventoryHistoryPalletReportList,
16
+ InventoryHistoryPatch,
17
+ InventoryHistorySummaryList
18
+ } from './inventory-history-types'
19
+
20
+ @Resolver(InventoryHistory)
21
+ export class InventoryHistoryQuery {
22
+ @Query(returns => InventoryHistoryList)
23
+ async inventoryHistories(@Args() params: ListParam, @Ctx() context: any): Promise<InventoryHistoryList> {
24
+ const { domain, user }: { domain: Domain; user: User } = context.state
25
+
26
+ if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {
27
+ params.filters.push({
28
+ name: 'bizplace',
29
+ operator: 'in',
30
+ value: await getPermittedBizplaceIds(domain, user)
31
+ })
32
+ }
33
+
34
+ const convertedParams = convertListParams(params)
35
+ let [items, total] = await getRepository(InventoryHistory).findAndCount({
36
+ ...convertedParams,
37
+ relations: ['domain', 'bizplace', 'product', 'location', 'warehouse', 'creator', 'updater'],
38
+ order: {
39
+ palletId: 'DESC',
40
+ createdAt: 'ASC'
41
+ }
42
+ })
43
+
44
+ items = (await Promise.all(
45
+ items.map(async item => {
46
+ switch (item.transactionType) {
47
+ case 'UNLOADING':
48
+ item.description = 'Inbound'
49
+ break
50
+ case 'UNDO_UNLOADING':
51
+ item.description = 'Undo Unloading'
52
+ item.orderRefNo = ''
53
+ break
54
+ case 'LOADING':
55
+ item.description = 'Loading'
56
+ break
57
+ case 'UNDO_LOADING':
58
+ item.description = 'Undo Loading'
59
+ break
60
+ default:
61
+ item.description = String(item.transactionType)
62
+ break
63
+ }
64
+ item.description = item.description.toUpperCase()
65
+ return {
66
+ ...item,
67
+ orderRefNo: item.orderRefNo,
68
+ orderNo: item.orderNo,
69
+ qty: item.qty,
70
+ openingQty: item.openingQty
71
+ }
72
+ })
73
+ )) as any
74
+
75
+ return { items, total }
76
+ }
77
+
78
+ @Query(returns => InventoryHistory)
79
+ async inventoryHistory(@Arg('name') name: string, @Ctx() context: any): Promise<InventoryHistory> {
80
+ const { domain }: { domain: Domain } = context.state
81
+
82
+ return await getRepository(InventoryHistory).findOne({
83
+ where: { domain: domain, name, relations: ['domain', 'creator', 'updater'] }
84
+ })
85
+ }
86
+
87
+ @Directive('@transaction')
88
+ @Query(returns => InventoryHistoryList)
89
+ async bizplaceInventoryHistories(
90
+ @Ctx() context: any,
91
+ @Arg('inventoryHistory', type => InventoryHistoryPatch, { nullable: true })
92
+ inventoryHistory?: InventoryHistoryPatch,
93
+ @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
94
+ @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,
95
+ @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
96
+ ): Promise<InventoryHistoryList> {
97
+ const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state
98
+
99
+ const ownerBizplace: Bizplace = await getMyBizplace(domain, user)
100
+ const customerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne(inventoryHistory.bizplace.id)
101
+
102
+ const productFilters = filters.find(x => x.name == 'product_info')
103
+ filters = filters.filter(x => x.name != 'product_info')
104
+
105
+ const fromDate: Date = new Date(inventoryHistory.fromDate)
106
+ const toDate: Date = new Date(inventoryHistory.toDate)
107
+
108
+ const convertedParams = convertListParams({ filters, pagination, sortings })
109
+ let where = { domain: domain }
110
+
111
+ if (productFilters) {
112
+ let productFilterValue = `%${productFilters.value.toLowerCase()}%`
113
+ const productQb: SelectQueryBuilder<Product> = getRepository(Product).createQueryBuilder('prd')
114
+
115
+ productQb.where(
116
+ new Brackets(qb => {
117
+ qb.where('Lower(prd.sku) LIKE :productInfo', { productInfo: productFilterValue })
118
+ .orWhere('Lower(prd.name) LIKE :productInfo', { productInfo: productFilterValue })
119
+ .orWhere('Lower(prd.description) LIKE :productInfo', { productInfo: productFilterValue })
120
+ .orWhere('Lower(prd.brand) LIKE :productInfo', { productInfo: productFilterValue })
121
+ })
122
+ )
123
+
124
+ const _products = await productQb.getMany()
125
+
126
+ where['product'] = In(_products.map((product: Product) => product.id))
127
+ }
128
+
129
+ if (inventoryHistory && inventoryHistory.warehouseName) {
130
+ const _warehouses: Warehouse[] = await tx.getRepository(Warehouse).find({
131
+ domain: domain,
132
+ name: Raw(alias => `LOWER(${alias}) LIKE '${inventoryHistory.warehouseName.toLowerCase()}'`)
133
+ })
134
+ where['warehouse'] = In(_warehouses.map((warehouse: Warehouse) => warehouse.id))
135
+ }
136
+
137
+ if (inventoryHistory && inventoryHistory.locationName) {
138
+ const _locations = await tx.getRepository(Location).find({
139
+ where: {
140
+ domain: domain,
141
+ name: Raw(alias => `LOWER(${alias}) LIKE '${inventoryHistory.locationName.toLowerCase()}'`)
142
+ }
143
+ })
144
+ where['location'] = In(_locations.map((location: Location) => location.id))
145
+ }
146
+
147
+ where['createdAt'] = Between(fromDate, toDate)
148
+
149
+ convertedParams.where = {
150
+ ...convertedParams.where,
151
+ ...where,
152
+ bizplace: customerBizplace
153
+ }
154
+
155
+ const result = await tx.getRepository(InventoryHistory).findAndCount({
156
+ ...convertedParams,
157
+ relations: ['domain', 'product', 'warehouse', 'location', 'bizplace', 'updater'],
158
+ order: {
159
+ palletId: 'ASC',
160
+ seq: 'ASC'
161
+ }
162
+ })
163
+
164
+ let items = result[0] as any
165
+ let total = result[1]
166
+
167
+ return { items, total }
168
+ }
169
+
170
+ @Directive('@transaction')
171
+ @Query(returns => [InventoryHistory])
172
+ async inventoryHistoryReport(@Args() params: ListParam, @Ctx() context: any): Promise<InventoryHistory[]> {
173
+ try {
174
+ const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
175
+
176
+ let bizplaceFilter = { name: '', operator: '', value: '' }
177
+ let userFilter = params.filters.find(data => data.name === 'user')
178
+ let fromDate = params.filters.find(data => data.name === 'fromDate')
179
+ let toDate = params.filters.find(data => data.name === 'toDate')
180
+ let batchNo = params.filters.find(data => data.name === 'batchNo')
181
+ let product = params.filters.find(data => data.name === 'product')
182
+ let productDesc = params.filters.find(data => data.name === 'productDescription')
183
+ let hasTransactionOrBalanceFilter = params.filters.find(data => data.name === 'hasTransactionOrBalance')
184
+ let tzoffset = params.filters.find(data => data.name === 'tzoffset').value + ' seconds'
185
+
186
+ if (userFilter) {
187
+ const user: User = await tx.getRepository(User).findOne({
188
+ where: { id: userFilter.value },
189
+ relations: ['bizplaces']
190
+ })
191
+
192
+ const bizplace: Bizplace = user.bizplaces[0]
193
+
194
+ if (!bizplace) throw 'Invalid input'
195
+
196
+ bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }
197
+ } else {
198
+ bizplaceFilter = params.filters.find(data => data.name === 'bizplace')
199
+ }
200
+
201
+ if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'
202
+
203
+ const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
204
+ id: bizplaceFilter.value
205
+ })
206
+
207
+ let batchNoQuery = ''
208
+ if (batchNo) {
209
+ batchNoQuery =
210
+ 'AND Lower(invh.batch_id) LIKE ANY(ARRAY[' +
211
+ batchNo.value
212
+ .toLowerCase()
213
+ .split(',')
214
+ .map(prod => {
215
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'"
216
+ })
217
+ .join(',') +
218
+ '])'
219
+ }
220
+
221
+ let productQuery = ''
222
+ if (product) {
223
+ let productValue = product.value
224
+ .toLowerCase()
225
+ .split(',')
226
+ .map(prod => {
227
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'"
228
+ })
229
+ .join(',')
230
+ productQuery = `AND (
231
+ Lower(prd.name) LIKE ANY(ARRAY[${productValue}])
232
+ OR Lower(prd.sku) LIKE ANY(ARRAY[${productValue}])
233
+ OR Lower(prd.description) LIKE ANY(ARRAY[${productValue}])
234
+ )`
235
+ }
236
+
237
+ let productDescQuery = ''
238
+ if (productDesc) {
239
+ productDescQuery = "AND Lower(description) LIKE '%" + productDesc.value.toLowerCase() + "%'"
240
+ }
241
+
242
+ let hasTransactionOrBalanceQuery = ''
243
+ if (hasTransactionOrBalanceFilter && hasTransactionOrBalanceFilter.value) {
244
+ hasTransactionOrBalanceQuery = 'and (src.totalRow > 1 or src.totalQty <> 0)'
245
+ }
246
+
247
+ await tx.query(
248
+ `
249
+ create temp table temp_products AS
250
+ (
251
+ select prd.*, prd.id::varchar as product_id from products prd
252
+ inner join bizplaces b on b.id = prd.bizplace_id
253
+ inner join companies c on c.domain_id = b.domain_id
254
+ inner join bizplaces b2 on b2.company_id = c.id
255
+ where b2.id = $1
256
+ ${productQuery}
257
+ )`,
258
+ [bizplace.id]
259
+ )
260
+
261
+ await tx.query(
262
+ `
263
+ create temp table temp_data_src AS
264
+ (
265
+ SELECT prd.name AS product_name, prd.description AS product_description, prd.type as product_type, prd.aux_value_1 AS product_aux_value_1, trim(invh.batch_id) as batch_id, invh.product_id,
266
+ invh.packing_type, invh.bizplace_id, invh.domain_id,
267
+ invh.ref_order_id, invh.order_no, invh.order_ref_no, invh.transaction_type, invh.created_at,
268
+ invh.qty, invh.opening_qty,
269
+ invh.uom, COALESCE(invh.uom_value, 0) as uom_value, COALESCE(invh.opening_uom_value, 0) as opening_uom_value
270
+ FROM reduced_inventory_histories invh
271
+ INNER JOIN temp_products prd ON prd.id = invh.product_id::uuid
272
+ WHERE
273
+ invh.domain_id = $1
274
+ AND invh.bizplace_id = $2
275
+ AND invh.created_at <= $3::timestamp
276
+ ${batchNoQuery}
277
+ )
278
+ `,
279
+ [domain.id, bizplace.id, toDate.value]
280
+ )
281
+
282
+ await tx.query(
283
+ `
284
+ create temp table temp_inv_history as (
285
+ SELECT src.product_name, src.product_description, src.product_type, src.product_aux_value_1, src.batch_id, src.product_id, src.packing_type, src.uom,
286
+ src.bizplace_id, src.domain_id,
287
+ SUM(COALESCE(src.qty,0)) AS qty,
288
+ SUM(COALESCE(src.opening_qty,0)) AS opening_qty,
289
+ SUM(COALESCE(src.uom_value,0)) AS uom_value,
290
+ SUM(COALESCE(src.opening_uom_value,0)) AS opening_uom_value,
291
+ 'Opening Balance' AS order_name,
292
+ '-' AS ref_no,
293
+ 0 AS rn,
294
+ $1::timestamp AS created_at,
295
+ $1::date AS created_date
296
+ FROM temp_data_src src
297
+ WHERE src.created_at < $1::timestamp
298
+ GROUP BY src.product_name, src.product_description, src.product_type, src.product_aux_value_1, src.batch_id, src.product_id, src.packing_type, src.uom,
299
+ src.bizplace_id, src.domain_id
300
+ UNION ALL
301
+ SELECT product_name, product_description, product_type, product_aux_value_1, batch_id, product_id, packing_type, uom, bizplace_id,
302
+ domain_id, sum(qty) as qty, sum(opening_qty) as opening_qty, sum(uom_value) as uom_value, sum(opening_uom_value) as opening_uom_value,
303
+ order_name, ref_no, 1 AS rn, MIN(created_at) - $2::interval as created_at, (MIN(created_at) - $2::interval)::DATE as created_date
304
+ FROM (
305
+ SELECT invh.product_name, invh.product_description, invh.product_type, invh.product_aux_value_1, invh.batch_id, invh.product_id, invh.packing_type, invh.bizplace_id,
306
+ invh.domain_id,
307
+ invh.qty, invh.opening_qty, invh.uom_value, invh.uom, invh.opening_uom_value,
308
+ COALESCE(order_no, '-') AS order_name,
309
+ COALESCE(order_ref_no, '-') AS ref_no,
310
+ invh.created_at,
311
+ invh.created_at::date as created_date
312
+ FROM temp_data_src invh
313
+ WHERE (invh.qty <> 0 OR invh.uom_value <> 0) AND
314
+ invh.transaction_type <> 'ADJUSTMENT' AND
315
+ invh.transaction_type <>'NEW'
316
+ AND invh.created_at >= $1::timestamp
317
+ ) AS inv_movement
318
+ GROUP BY product_name, product_description, product_type, product_aux_value_1, batch_id, product_id, packing_type, uom, bizplace_id,
319
+ domain_id, order_name, ref_no, rn
320
+ UNION ALL
321
+ SELECT product_name, product_description, product_type, product_aux_value_1, batch_id, product_id, packing_type, uom, bizplace_id,
322
+ domain_id, sum(qty) as qty, sum(opening_qty) as opening_qty, sum(uom_value) as uom_value, sum(opening_uom_value) as opening_uom_value,
323
+ order_name, ref_no, 1 AS rn, created_at - $2::interval as created_at, created_at::date as created_date
324
+ FROM (
325
+ SELECT invh.product_name, invh.product_description, invh.product_type, invh.product_aux_value_1, invh.batch_id, invh.product_id, invh.packing_type, invh.uom, invh.bizplace_id,
326
+ invh.domain_id,
327
+ invh.qty, invh.opening_qty, invh.uom_value, invh.opening_uom_value,
328
+ invh.transaction_type AS order_name,
329
+ invh.transaction_type AS ref_no,
330
+ invh.created_at,
331
+ invh.created_at:: date as created_date
332
+ FROM temp_data_src invh
333
+ WHERE (invh.qty <> 0 OR invh.uom_value <> 0) AND
334
+ (invh.transaction_type = 'ADJUSTMENT' OR
335
+ invh.transaction_type = 'NEW')
336
+ AND invh.created_at >= $1::timestamp
337
+ ) AS inv_movement
338
+ GROUP BY product_name, product_description, product_type, product_aux_value_1, batch_id, product_id, packing_type, uom, bizplace_id,
339
+ domain_id, order_name, ref_no, rn, created_at
340
+ )`,
341
+ [fromDate.value, tzoffset]
342
+ )
343
+
344
+ const result: any = await tx.query(
345
+ `
346
+ select product_name, product_description, product_type, product_aux_value_1, batch_id, product_id, packing_type, uom, bizplace_id,
347
+ domain_id, qty, opening_qty, round(uom_value::decimal,2) as uom_value, opening_uom_value, order_name, ref_no, created_at::date
348
+ from temp_inv_history invh where
349
+ exists (
350
+ select * from (
351
+ select batch_id, product_name, packing_type, sum(qty) as totalQty, count(*) as totalRow from temp_inv_history ih2
352
+ group by batch_id, product_name, packing_type
353
+ ) src
354
+ where src.batch_id = invh.batch_id and src.product_name = invh.product_name and src.packing_type = invh.packing_type
355
+ ${hasTransactionOrBalanceQuery}
356
+ )
357
+ ORDER BY invh.product_name asc, invh.product_description asc, invh.packing_type asc, invh.batch_id asc, invh.uom asc, invh.rn asc, invh.created_at asc
358
+ `
359
+ )
360
+
361
+ tx.query(
362
+ `
363
+ drop table temp_products, temp_data_src, temp_inv_history
364
+ `
365
+ )
366
+
367
+ let items = result as any
368
+ items = items.map(item => {
369
+ return {
370
+ batchId: item.batch_id,
371
+ bizplace: bizplace,
372
+ packingType: item.packing_type,
373
+ product: {
374
+ id: item.product_id,
375
+ name:
376
+ item.product_name +
377
+ ' ( ' +
378
+ item.product_description +
379
+ ' ) ' +
380
+ (item.product_aux_value_1 === null ? '' : ' [ ' + item.product_aux_value_1 + ' ] '),
381
+ type: item.product_type
382
+ },
383
+ qty: item.qty,
384
+ uom: item.uom,
385
+ uomValue: item.uom_value,
386
+ openingQty: item.opening_qty,
387
+ openingUomValue: item.opening_uom_value,
388
+ orderNo: item.order_name,
389
+ orderRefNo: item.ref_no,
390
+ createdAt: item.created_at
391
+ }
392
+ })
393
+
394
+ return items
395
+ } catch (error) {
396
+ throw error
397
+ }
398
+ }
399
+
400
+ @Directive('@transaction')
401
+ @Query(returns => [InventoryHistory])
402
+ async inventoryHistoryPalletReport(@Args() params: ListParam, @Ctx() context: any): Promise<InventoryHistory[]> {
403
+ try {
404
+ const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
405
+ let userFilter = params.filters.find(data => data.name === 'user')
406
+
407
+ let bizplaceFilter = { name: '', operator: '', value: '' }
408
+
409
+ if (userFilter) {
410
+ const user: User = await tx.getRepository(User).findOne({
411
+ where: { id: userFilter.value },
412
+ relations: ['bizplaces']
413
+ })
414
+
415
+ const bizplace: Bizplace = user.bizplaces[0]
416
+
417
+ if (!bizplace) throw 'Invalid input'
418
+
419
+ bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }
420
+ } else {
421
+ bizplaceFilter = params.filters.find(data => data.name === 'bizplace')
422
+ }
423
+
424
+ let fromDate = params.filters.find(data => data.name === 'fromDate')
425
+ let toDate = params.filters.find(data => data.name === 'toDate')
426
+ let product = params.filters.find(data => data.name === 'product')
427
+
428
+ if (!fromDate || !toDate) throw 'Invalid input'
429
+
430
+ let bizplaceQuery = ''
431
+ if (bizplaceFilter) {
432
+ const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
433
+ id: bizplaceFilter.value
434
+ })
435
+
436
+ if (bizplace) {
437
+ bizplaceQuery = "AND i2.bizplace_id = '" + bizplace.id + "'"
438
+ } else {
439
+ throw 'Invalid input'
440
+ }
441
+ }
442
+
443
+ let productQuery = ''
444
+ if (product) {
445
+ productQuery =
446
+ 'AND prd.name ILIKE ANY(ARRAY[' +
447
+ product.value
448
+ .split(',')
449
+ .map(prod => {
450
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'"
451
+ })
452
+ .join(',') +
453
+ '])'
454
+ }
455
+
456
+ const result = await tx.getRepository(InventoryHistory).query(`
457
+ with invHistory as (
458
+ select case when ar.name is null then 'NEW' else ar.name end as arrival_notice_name,
459
+ case when js.container_size is null then '' else js.container_size end as container_size,
460
+ i2.batch_id,
461
+ bzp.name as bizplace_name,
462
+ i2.pallet_id, ih.seq, ih.status, ih.transaction_type, i2.product_id, prd.name as product_name,
463
+ prd.description as product_description, ih.id as inventory_history_id, ih.packing_type, ih.qty, ih.opening_qty,
464
+ ih.created_at::date
465
+ from inventories i2
466
+ inner join reduced_inventory_histories ih on ih.pallet_id = i2.pallet_id and ih.domain_id = i2.domain_id
467
+ inner join products prd on prd.id = i2.product_id
468
+ inner join bizplaces bzp on bzp.id = ih.bizplace_id
469
+ left join order_inventories oi on oi.inventory_id = i2.id and oi.arrival_notice_id is not null
470
+ left join arrival_notices ar on ar.id = oi.arrival_notice_id
471
+ left join job_sheets js on js.id = ar.job_sheet_id
472
+ where
473
+ i2.domain_id = '${domain.id}'
474
+ and (
475
+ (ih.status = 'STORED' and ih.transaction_type = 'NEW')
476
+ or (ih.status = 'STORED' and ih.transaction_type = 'CANCEL_ORDER')
477
+ or (ih.status = 'STORED' and ih.transaction_type = 'RETURN')
478
+ or (ih.status = 'STORED' and ih.transaction_type = 'PUTAWAY')
479
+ or (ih.status = 'TERMINATED' and ih.transaction_type = 'TERMINATED')
480
+ )
481
+ ${bizplaceQuery}
482
+ ${productQuery}
483
+ order by ih.pallet_id, ih.seq
484
+ ), inventoryHistoryMovement as (
485
+ select bizplace_name, container_size, pallet_id, seq, status, transaction_type, product_id, product_name, product_description, batch_id,
486
+ inventory_history_id, packing_type, qty, opening_qty, created_at, arrival_notice_name from (
487
+ select row_number() over(partition by pallet_id order by created_at asc) as rn, * from invHistory where status = 'STORED'
488
+ )as invIn where rn = 1
489
+ union all
490
+ select bizplace_name, container_size, pallet_id, seq, status, transaction_type, product_id, product_name, product_description, batch_id,
491
+ inventory_history_id, packing_type, qty, opening_qty, created_at, arrival_notice_name from (
492
+ select row_number() over(partition by pallet_id order by created_at desc) as rn, * from invHistory
493
+ )as invOut where rn = 1 and status = 'TERMINATED'
494
+ ), inventoryHistoriesByPallet as (
495
+ select invHistory.bizplace_name, invHistory.container_size, invHistory.product_name, invHistory.product_description, invHistory.arrival_notice_name, invHistory.batch_id,
496
+ SUM(case when invHistory.created_at <= '${new Date(fromDate.value).toLocaleDateString()} 00:00:00' then
497
+ case when invHistory.status = 'STORED' then 1 else -1 end
498
+ else 0 end) as opening_balance,
499
+ SUM(case when invHistory.created_at >= '${new Date(fromDate.value).toLocaleDateString()} 00:00:00'
500
+ and invHistory.created_at <= '${new Date(toDate.value).toLocaleDateString()} 23:59:59' then
501
+ case when invHistory.status = 'STORED' then 1 else 0 end
502
+ else 0 end) as in_balance,
503
+ SUM(case when invHistory.created_at >= '${new Date(fromDate.value).toLocaleDateString()} 00:00:00'
504
+ and invHistory.created_at <= '${new Date(toDate.value).toLocaleDateString()} 23:59:59' then
505
+ case when invHistory.status = 'TERMINATED' then 1 else 0 end
506
+ else 0 end) as out_balance
507
+ from(
508
+ select * from inventoryHistoryMovement
509
+ ) as invHistory group by bizplace_name, container_size, product_name, product_description, arrival_notice_name, batch_id
510
+ )
511
+ select invh.*, invh.opening_balance + invh.in_balance - invh.out_balance as closing_balance
512
+ , (
513
+ select json_agg(json_build_object('created_at', created_at, 'in_balance', in_balance, 'out_balance', out_balance)) as jsonData from
514
+ (
515
+ select bizplace_name, product_name, batch_id, arrival_notice_name, created_at,
516
+ SUM(case when status = 'STORED' then 1 else 0 end) as in_balance,
517
+ SUM(case when status = 'TERMINATED' then 1 else 0 end) as out_balance
518
+ from inventoryHistoryMovement
519
+ where created_at >= '${new Date(fromDate.value).toLocaleDateString()} 00:00:00' and
520
+ created_at <= '${new Date(toDate.value).toLocaleDateString()} 23:59:59' and
521
+ bizplace_name = invh.bizplace_name and product_name = invh.product_name and
522
+ batch_id = invh.batch_id and arrival_notice_name = invh.arrival_notice_name
523
+ group by bizplace_name, product_name, batch_id, arrival_notice_name, created_at
524
+ order by created_at
525
+ )
526
+ as t
527
+ )::varchar as json_date_movement
528
+ from inventoryHistoriesByPallet invh
529
+ where invh.opening_balance >= 0
530
+ and invh.in_balance >= 0
531
+ and invh.out_balance >= 0
532
+ and (invh.opening_balance > 0 or invh.in_balance > 0)
533
+ order by invh.bizplace_name, invh.product_name, invh.batch_id;
534
+ `)
535
+
536
+ let items = result as any
537
+ items = items.map(item => {
538
+ return {
539
+ bizplace: { name: item.bizplace_name },
540
+ product: {
541
+ name: item.product_name.trim() + ' ( ' + (item.product_description || '-').trim() + ' )'
542
+ },
543
+ arrivalNoticeName: item.arrival_notice_name,
544
+ batchId: item.batch_id,
545
+ openingBalance: item.opening_balance,
546
+ inBalance: item.in_balance,
547
+ outBalance: item.out_balance,
548
+ closingBalance: item.closing_balance,
549
+ jsonDateMovement: item.json_date_movement,
550
+ containerSize: item.container_size
551
+ }
552
+ })
553
+
554
+ return items
555
+ } catch (error) {
556
+ throw error
557
+ }
558
+ }
559
+
560
+ @Directive('@transaction')
561
+ @Query(returns => [InventoryHistory])
562
+ async inventoryHistoryPalletDetailReport(
563
+ @Args() params: ListParam,
564
+ @Ctx() context: any
565
+ ): Promise<InventoryHistory[]> {
566
+ try {
567
+ const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
568
+ let userFilter = params.filters.find(data => data.name === 'user')
569
+
570
+ let bizplaceFilter = { name: '', operator: '', value: '' }
571
+
572
+ if (userFilter) {
573
+ const user: User = await tx.getRepository(User).findOne({
574
+ where: { id: userFilter.value },
575
+ relations: ['bizplaces']
576
+ })
577
+
578
+ const bizplace: Bizplace = user.bizplaces[0]
579
+
580
+ if (!bizplace) throw 'Invalid input'
581
+
582
+ bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }
583
+ } else {
584
+ bizplaceFilter = params.filters.find(data => data.name === 'bizplace')
585
+ }
586
+
587
+ let fromDate = params.filters.find(data => data.name === 'fromDate')
588
+ let toDate = params.filters.find(data => data.name === 'toDate')
589
+ let product = params.filters.find(data => data.name === 'product')
590
+
591
+ if (!fromDate || !toDate) throw 'Invalid input'
592
+
593
+ let bizplaceQuery = ''
594
+ if (bizplaceFilter) {
595
+ const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
596
+ id: bizplaceFilter.value
597
+ })
598
+
599
+ if (bizplace) {
600
+ bizplaceQuery = "AND i2.bizplace_id = '" + bizplace.id + "'"
601
+ } else {
602
+ throw 'Invalid input'
603
+ }
604
+ }
605
+
606
+ let productQuery = ''
607
+ if (product) {
608
+ productQuery =
609
+ 'AND prd.name ILIKE ANY(ARRAY[' +
610
+ product.value
611
+ .split(',')
612
+ .map(prod => {
613
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'"
614
+ })
615
+ .join(',') +
616
+ '])'
617
+ }
618
+
619
+ const result = await tx.getRepository(InventoryHistory).query(`
620
+ with invHistory as (
621
+ select case when ar.name is null then 'NEW' else ar.name end as arrival_notice_name,
622
+ case when js.container_size is null then '' else js.container_size end as container_size,
623
+ i2.batch_id,
624
+ bzp.name as bizplace_name,
625
+ i2.pallet_id, ih.seq, ih.status, ih.transaction_type, i2.product_id, prd.name as product_name,
626
+ prd.description as product_description, ih.id as inventory_history_id, ih.packing_type, ih.qty, ih.opening_qty,
627
+ ih.created_at::date
628
+ from inventories i2
629
+ inner join reduced_inventory_histories ih on ih.pallet_id = i2.pallet_id and ih.domain_id = i2.domain_id
630
+ inner join products prd on prd.id = i2.product_id
631
+ inner join bizplaces bzp on bzp.id = ih.bizplace_id
632
+ left join order_inventories oi on oi.inventory_id = i2.id and oi.arrival_notice_id is not null
633
+ left join arrival_notices ar on ar.id = oi.arrival_notice_id
634
+ left join job_sheets js on js.id = ar.job_sheet_id
635
+ where
636
+ i2.domain_id = '${domain.id}'
637
+ and (
638
+ (ih.status = 'STORED' and ih.transaction_type = 'NEW')
639
+ or (ih.status = 'STORED' and ih.transaction_type = 'CANCEL_ORDER')
640
+ or (ih.status = 'STORED' and ih.transaction_type = 'RETURN')
641
+ or (ih.status = 'STORED' and ih.transaction_type = 'PUTAWAY')
642
+ or (ih.status = 'TERMINATED' and ih.transaction_type = 'TERMINATED')
643
+ )
644
+ ${bizplaceQuery}
645
+ ${productQuery}
646
+ order by ih.pallet_id, ih.seq
647
+ ), inventoryHistoryMovement as (
648
+ select bizplace_name, container_size, pallet_id, seq, status, transaction_type, product_id, product_name, product_description, batch_id,
649
+ inventory_history_id, packing_type, qty, opening_qty, created_at, arrival_notice_name from (
650
+ select row_number() over(partition by pallet_id order by created_at asc) as rn, * from invHistory where status = 'STORED'
651
+ )as invIn where rn = 1
652
+ union all
653
+ select bizplace_name, container_size, pallet_id, seq, status, transaction_type, product_id, product_name, product_description, batch_id,
654
+ inventory_history_id, packing_type, qty, opening_qty, created_at, arrival_notice_name from (
655
+ select row_number() over(partition by pallet_id order by created_at desc) as rn, * from invHistory
656
+ )as invOut where rn = 1 and status = 'TERMINATED'
657
+ ), inventoryHistoriesByPallet as (
658
+ select invHistory.bizplace_name, invHistory.container_size, invHistory.product_name, invHistory.product_description, invHistory.arrival_notice_name, invHistory.batch_id,
659
+ SUM(case when invHistory.created_at <= '${new Date(fromDate.value).toLocaleDateString()} 00:00:00' then
660
+ case when invHistory.status = 'STORED' then 1 else -1 end
661
+ else 0 end) as opening_balance,
662
+ SUM(case when invHistory.created_at >= '${new Date(fromDate.value).toLocaleDateString()} 00:00:00'
663
+ and invHistory.created_at <= '${new Date(toDate.value).toLocaleDateString()} 23:59:59' then
664
+ case when invHistory.status = 'STORED' then 1 else 0 end
665
+ else 0 end) as in_balance,
666
+ SUM(case when invHistory.created_at >= '${new Date(fromDate.value).toLocaleDateString()} 00:00:00'
667
+ and invHistory.created_at <= '${new Date(toDate.value).toLocaleDateString()} 23:59:59' then
668
+ case when invHistory.status = 'TERMINATED' then 1 else 0 end
669
+ else 0 end) as out_balance
670
+ from(
671
+ select * from inventoryHistoryMovement
672
+ ) as invHistory group by bizplace_name, container_size, product_name, product_description, arrival_notice_name, batch_id
673
+ )
674
+ select invh.*, invh.opening_balance + invh.in_balance - invh.out_balance as closing_balance
675
+ , (
676
+ select json_agg(json_build_object('created_at', created_at, 'in_balance', in_balance, 'out_balance', out_balance)) as jsonData from
677
+ (
678
+ select bizplace_name, product_name, batch_id, arrival_notice_name, created_at,
679
+ SUM(case when status = 'STORED' then 1 else 0 end) as in_balance,
680
+ SUM(case when status = 'TERMINATED' then 1 else 0 end) as out_balance
681
+ from inventoryHistoryMovement
682
+ where created_at >= '${new Date(fromDate.value).toLocaleDateString()} 00:00:00' and
683
+ created_at <= '${new Date(toDate.value).toLocaleDateString()} 23:59:59' and
684
+ bizplace_name = invh.bizplace_name and product_name = invh.product_name and
685
+ batch_id = invh.batch_id and arrival_notice_name = invh.arrival_notice_name
686
+ group by bizplace_name, product_name, batch_id, arrival_notice_name, created_at
687
+ order by created_at
688
+ )
689
+ as t
690
+ )::varchar as json_date_movement
691
+ from inventoryHistoriesByPallet invh
692
+ where invh.opening_balance >= 0
693
+ and invh.in_balance >= 0
694
+ and invh.out_balance >= 0
695
+ and (invh.opening_balance > 0 or invh.in_balance > 0)
696
+ order by invh.bizplace_name, invh.product_name, invh.batch_id;
697
+ `)
698
+
699
+ let items = result as any
700
+ items = items.map(item => {
701
+ return {
702
+ bizplace: { name: item.bizplace_name },
703
+ product: {
704
+ name: item.product_name.trim() + ' ( ' + (item.product_description || '-').trim() + ' )'
705
+ },
706
+ arrivalNoticeName: item.arrival_notice_name,
707
+ batchId: item.batch_id,
708
+ openingBalance: item.opening_balance,
709
+ inBalance: item.in_balance,
710
+ outBalance: item.out_balance,
711
+ closingBalance: item.closing_balance,
712
+ jsonDateMovement: item.json_date_movement,
713
+ containerSize: item.container_size
714
+ }
715
+ })
716
+
717
+ return items
718
+ } catch (error) {
719
+ throw error
720
+ }
721
+ }
722
+
723
+ @Directive('@transaction')
724
+ @Query(returns => InventoryHistoryPalletReportList)
725
+ async inventoryHistoryPalletStorageReport(
726
+ @Args() params: ListParam,
727
+ @Ctx() context: any
728
+ ): Promise<InventoryHistoryPalletReportList> {
729
+ try {
730
+ const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
731
+
732
+ let userFilter = params.filters.find(data => data.name === 'user')
733
+
734
+ let bizplaceFilter = { name: '', operator: '', value: '' }
735
+
736
+ if (userFilter) {
737
+ const user: User = await tx.getRepository(User).findOne({
738
+ where: { id: userFilter.value },
739
+ relations: ['bizplaces']
740
+ })
741
+
742
+ const bizplace: Bizplace = user.bizplaces[0]
743
+
744
+ if (!bizplace) throw 'Invalid input'
745
+
746
+ bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }
747
+ } else {
748
+ bizplaceFilter = params.filters.find(data => data.name === 'bizplace')
749
+ }
750
+
751
+ let fromDate = params.filters.find(data => data.name === 'fromDate')
752
+ let toDate = params.filters.find(data => data.name === 'toDate')
753
+
754
+ if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'
755
+
756
+ const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
757
+ id: bizplaceFilter.value
758
+ })
759
+
760
+ let queryFilter = ``
761
+ let queryParams = [fromDate.value, toDate.value]
762
+ let locationType = params.filters.find(data => data.name === 'locationType')
763
+ if (locationType) {
764
+ queryFilter = queryFilter + `AND location_type = $` + (queryParams.length + 1)
765
+ queryParams.push(locationType.value)
766
+ }
767
+
768
+ let zone = params.filters.find(data => data.name === 'zone')
769
+ if (zone) {
770
+ queryFilter = queryFilter + `AND LOWER(location_zone) like $` + (queryParams.length + 1)
771
+ queryParams.push(zone.value.toLowerCase())
772
+ }
773
+
774
+ await tx.query(
775
+ `
776
+ create temp table temp_history as (
777
+ select distinct on (ih.pallet_id)
778
+ ih.pallet_id, ih.created_at as in_at, loc.name as location_name, loc."type" as location_type, loc."zone" as location_zone,
779
+ bz.name as bizplace_name
780
+ from reduced_inventory_histories ih
781
+ inner join inventories inv on inv.pallet_id = ih.pallet_id and inv.domain_id = ih.domain_id
782
+ inner join locations loc on loc.id = inv.location_id
783
+ inner join bizplaces bz on bz.id = inv.bizplace_id
784
+ where ih.domain_id = $1
785
+ and inv.bizplace_id = $2
786
+ and not exists(
787
+ SELECT domain_id, pallet_id
788
+ FROM reduced_inventory_histories ih2
789
+ where ih2.domain_id = $1
790
+ and ih2.created_at < $3
791
+ and ih2.transaction_type = 'TERMINATED' and ih2.status ='TERMINATED'
792
+ and ih2.pallet_id = ih.pallet_id
793
+ group by ih2.domain_id , ih2.pallet_id
794
+ )
795
+ and ih.created_at <= $4
796
+ order by ih.pallet_id , ih.seq
797
+ )
798
+ `,
799
+ [domain.id, bizplace.id, fromDate.value, toDate.value]
800
+ )
801
+
802
+ await tx.query(
803
+ `
804
+ create temp table temp_pallet_storage_history as (
805
+ select * from (
806
+ select bizplace_name, location_type, location_zone, location_name,
807
+ COUNT(pallet_id) filter (where in_at between $1 and $2) as inbound_qty,
808
+ COUNT(*) as total_qty,
809
+ string_agg(case when in_at between $1 and $2 then pallet_id end, ', ') as inbound_pallet_id,
810
+ string_agg(case when in_at not between $1 and $2 then pallet_id end, ', ') as pallet_id
811
+ from temp_history where location_type = 'SHELF'
812
+ group by bizplace_name, location_name, location_type, location_zone
813
+ union
814
+ select bizplace_name, location_type, location_zone, location_name,
815
+ case when in_at between $1 and $2 then 1 else 0 end as inbound_qty,
816
+ 1 as total_qty,
817
+ case when in_at between $1 and $2 then pallet_id end as inbound_pallet_id,
818
+ case when in_at not between $1 and $2 then pallet_id end pallet_id
819
+ from temp_history where location_type = 'FLOOR'
820
+ ) as src where 1 = 1
821
+ ${queryFilter}
822
+ )
823
+ `,
824
+ queryParams
825
+ )
826
+
827
+ const total: any = await tx.query(`select count(*) from temp_pallet_storage_history`)
828
+
829
+ const totalWithOpeningBalance: any = await tx.query(
830
+ `select count(*) from temp_pallet_storage_history where pallet_id notnull`
831
+ )
832
+
833
+ const result: any = await tx.query(
834
+ `
835
+ select * from temp_pallet_storage_history order by location_type OFFSET $1 LIMIT $2
836
+ `,
837
+ [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]
838
+ )
839
+
840
+ tx.query(`
841
+ drop table temp_history, temp_pallet_storage_history
842
+ `)
843
+
844
+ let items = result.map(itm => {
845
+ return {
846
+ ...itm,
847
+ bizplace: {
848
+ name: itm.bizplace_name
849
+ },
850
+ location: {
851
+ name: itm.location_name,
852
+ type: itm.location_type,
853
+ zone: itm.location_zone
854
+ },
855
+ palletId: itm.pallet_id,
856
+ inboundPalletId: itm.inbound_pallet_id,
857
+ inboundQty: itm.inbound_qty,
858
+ totalQty: itm.total_qty
859
+ }
860
+ })
861
+
862
+ return { items, total: total[0].count, totalWithOpeningBalance: totalWithOpeningBalance[0].count }
863
+ } catch (ex) {
864
+ throw ex
865
+ }
866
+ }
867
+
868
+ @Directive('@transaction')
869
+ @Query(returns => InventoryHistorySummaryList)
870
+ async inventoryHistorySummaryReport(
871
+ @Args() params: ListParam,
872
+ @Ctx() context: any
873
+ ): Promise<InventoryHistorySummaryList> {
874
+ try {
875
+ const { tx }: { tx: EntityManager } = context.state
876
+
877
+ let bizplaceFilter = { name: '', operator: '', value: '' }
878
+
879
+ let userFilter = params.filters.find(data => data.name === 'user')
880
+ let fromDate = params.filters.find(data => data.name === 'fromDate')
881
+ let toDate = params.filters.find(data => data.name === 'toDate')
882
+ let byPallet = params.filters.find(data => data.name === 'byPallet')
883
+
884
+ if (userFilter) {
885
+ const user: User = await tx.getRepository(User).findOne({
886
+ where: { id: userFilter.value },
887
+ relations: ['bizplaces']
888
+ })
889
+
890
+ const bizplace: Bizplace = user.bizplaces[0]
891
+
892
+ if (!bizplace) throw 'Invalid input'
893
+
894
+ bizplaceFilter = { name: 'bizplace', operator: 'eq', value: bizplace.id }
895
+ } else {
896
+ bizplaceFilter = params.filters.find(data => data.name === 'bizplace')
897
+ }
898
+
899
+ if (!bizplaceFilter || !fromDate || !toDate) throw 'Invalid input'
900
+
901
+ const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
902
+ id: bizplaceFilter.value
903
+ })
904
+
905
+ let [result, total] = byPallet.value
906
+ ? await massageInventoryPalletSummary(tx, params, bizplace, context)
907
+ : await massageInventorySummary(tx, params, bizplace, context)
908
+
909
+ let items = result.map(itm => {
910
+ return {
911
+ ...itm,
912
+ batchId: itm.batch_id,
913
+ packingType: itm.packing_type,
914
+ packingSize: itm.packing_size,
915
+ openingQty: itm.opening_qty,
916
+ adjustmentQty: itm.adjustment_qty,
917
+ closingQty: itm.closing_qty,
918
+ totalInQty: itm.total_in_qty,
919
+ totalOutQty: itm.total_out_qty,
920
+ product: {
921
+ id: itm.product_id,
922
+ sku: itm.product_sku,
923
+ name: itm.product_name,
924
+ description: itm.product_description,
925
+ type: itm.product_type
926
+ }
927
+ }
928
+ })
929
+
930
+ return {
931
+ items,
932
+ total: total[0].count,
933
+ totalInboundQty: total[0].totalinqty || 0,
934
+ totalOpeningBal: total[0].totalopeningbal || 0
935
+ }
936
+ } catch (error) {
937
+ throw error
938
+ }
939
+ }
940
+
941
+ @Directive('@transaction')
942
+ @Query(returns => InventoryList)
943
+ async onhandInventories(
944
+ @Ctx() context: any,
945
+ @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
946
+ @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,
947
+ @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[],
948
+ @Arg('locationSortingRules', type => [Sorting], { nullable: true }) locationSortingRules?: Sorting[],
949
+ @Arg('setPagination', type => Boolean, { defaultValue: true }) setPagination?: Boolean
950
+ ): Promise<InventoryList> {
951
+ const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state
952
+
953
+ // define all inputs
954
+ let userFilter = filters.find(data => data.name === 'user')
955
+ let product = filters.find(data => data.name === 'product')
956
+ let createdAt = filters.find(data => data.name === 'created_at')
957
+ let location = filters.find(data => data.name === 'location')
958
+ let batchId = filters.find(data => data.name === 'batchId')
959
+ let palletId = filters.find(data => data.name === 'palletId')
960
+ let cartonId = filters.find(data => data.name === 'cartonId')
961
+ let packingType = filters.find(data => data.name === 'packingType')
962
+ let timezoneOffset = filters.find(data => data.name === 'timezoneOffset').value + ' minutes'
963
+
964
+ // expiration date filter
965
+ let expiration = filters.find(data => data.name === 'expiration').value
966
+ let expFromDate = filters.find(data => data.name === 'expFromDate')
967
+ let expToDate = filters.find(data => data.name === 'expToDate')
968
+
969
+ let bizplaceFilter = { name: '', operator: '', value: [] }
970
+
971
+ // prepare query filters
972
+ if (userFilter) {
973
+ const user: User = await tx.getRepository(User).findOne({
974
+ where: { id: userFilter.value },
975
+ relations: ['bizplaces']
976
+ })
977
+
978
+ const bizplace: Bizplace = user.bizplaces[0]
979
+
980
+ if (!bizplace) throw 'Invalid input'
981
+
982
+ bizplaceFilter = { name: 'bizplace', operator: 'eq', value: [bizplace.id] }
983
+ } else {
984
+ bizplaceFilter = !filters.find((filter: any) => filter.name === 'bizplace')
985
+ ? {
986
+ name: 'bizplace',
987
+ operator: 'in',
988
+ value: await getPermittedBizplaceIds(domain, user),
989
+ relation: true
990
+ }
991
+ : {
992
+ ...filters.find(data => data.name === 'bizplace'),
993
+ value: [filters.find(data => data.name === 'bizplace').value]
994
+ }
995
+ }
996
+
997
+ let queryFilter = ``
998
+ let bizplaces = bizplaceFilter.value.map(id => `('${id}')`).join(',')
999
+
1000
+ if (product) {
1001
+ let products = product.value
1002
+ .toLowerCase()
1003
+ .split(',')
1004
+ .map(prod => {
1005
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'"
1006
+ })
1007
+ .join(',')
1008
+
1009
+ queryFilter =
1010
+ queryFilter +
1011
+ ` and exists (
1012
+ select prd.id as product_id from products prd
1013
+ inner join bizplaces b on b.id = prd.bizplace_id
1014
+ inner join companies c on c.domain_id = b.domain_id
1015
+ inner join bizplaces b2 on b2.company_id = c.id
1016
+ where exists (
1017
+ SELECT * FROM tmp_bizfilter bizFilter
1018
+ WHERE bizFilter.bizplace_id = "b2"."id"
1019
+ )
1020
+ and (lower(prd.name) like any(array[${products}])
1021
+ or lower(prd.description) like any(array[${products}])
1022
+ or lower(prd.sku) like any(array[${products}])
1023
+ or lower(prd.brand) like any(array[${products}]))
1024
+ and prd.id = rih.product_id
1025
+ group by prd.id
1026
+ )`
1027
+ }
1028
+
1029
+ if (location) {
1030
+ let locations = location.value
1031
+ .map(loc => {
1032
+ return "'" + loc + "'"
1033
+ })
1034
+ .join(',')
1035
+
1036
+ queryFilter =
1037
+ queryFilter +
1038
+ `and exists (
1039
+ select loc.id from locations loc where
1040
+ loc.id = any(array[${locations}]::uuid[])
1041
+ and loc.id = rih.location_id
1042
+ )`
1043
+ }
1044
+
1045
+ // default sorting
1046
+ let queryOrder = 'order by created_at desc'
1047
+ if (sortings && sortings.length > 0) {
1048
+ const arrObjectMap = [
1049
+ { name: 'palletId', value: 'rih.pallet_id' },
1050
+ { name: 'cartonId', value: 'rih.carton_id' },
1051
+ { name: 'batchId', value: 'rih.batch_id' },
1052
+ { name: 'initialInboundAt', value: 'rih.initial_inbound_at' },
1053
+ { name: 'bizplace|name', value: 'bz.name' },
1054
+ { name: 'product|name', value: 'prd.sku' },
1055
+ { name: 'remainQty', value: 'rih.qty' },
1056
+ { name: 'location|name', value: 'loc.name' }
1057
+ ]
1058
+ sortings.forEach((sorting, idx) => {
1059
+ let itmIndex = arrObjectMap.findIndex(x => x.name === sorting.name)
1060
+
1061
+ queryOrder = `${idx === 0 ? 'order by' : queryOrder + ','} ${
1062
+ itmIndex >= 0 ? arrObjectMap[itmIndex].value : sorting.name
1063
+ } ${sorting.desc ? 'DESC' : 'ASC'}`
1064
+ })
1065
+ }
1066
+
1067
+ if (batchId) queryFilter = `${queryFilter} and lower(rih.batch_id) like '${batchId.value.toLowerCase()}' `
1068
+
1069
+ if (palletId) queryFilter = `${queryFilter} and rih.pallet_id like '${palletId.value}' `
1070
+
1071
+ if (cartonId) queryFilter = `${queryFilter} and rih.carton_id like '${cartonId.value}' `
1072
+
1073
+ if (packingType) queryFilter = `${queryFilter} and rih.packing_type like '${packingType.value}' `
1074
+
1075
+ let expirationQueryFilter = ``
1076
+ if (expiration)
1077
+ expirationQueryFilter = ` and iv.expiration_date >= '${expFromDate.value}'::timestamp + '${timezoneOffset}'::INTERVAL and
1078
+ iv.expiration_date <= '${expToDate.value}'::timestamp + '${timezoneOffset}'::INTERVAL + '1 day'::INTERVAL`
1079
+
1080
+ // query the results
1081
+ await tx.query(`
1082
+ CREATE TEMP TABLE tmp_bizfilter on commit drop AS (
1083
+ SELECT bizplace_id::uuid FROM (VALUES ${bizplaces}) AS bizFilter(bizplace_id)
1084
+ );
1085
+ `)
1086
+
1087
+ await tx.query(
1088
+ `
1089
+ create temp table tmp_src on commit drop as (
1090
+ select domain_id, pallet_id, carton_id, seq, qty, uom_value, packing_type, batch_id, batch_id_ref, created_at, status,
1091
+ product_id::uuid as product_id, bizplace_id::uuid as bizplace_id, location_id::uuid as location_id
1092
+ from reduced_inventory_histories rih
1093
+ where domain_id = $1 and created_at < $2::timestamp + $3::INTERVAL + '1 day'::INTERVAL
1094
+ );
1095
+ `,
1096
+ [domain.id, createdAt.value, timezoneOffset]
1097
+ )
1098
+
1099
+ await tx.query(
1100
+ `
1101
+ create temp table tmp_data on commit drop as (
1102
+ select dt.*, rih.carton_id, rih.batch_id, rih.batch_id_ref, rih.product_id, rih.packing_type, rih.bizplace_id, rih.location_id, iv.uom,
1103
+ iv.expiration_date, iv.reusable_pallet_id, iv.remark
1104
+ from
1105
+ (
1106
+ select ih.domain_id, ih.pallet_id, sum(ih.qty) as qty, sum(ih.uom_value) as uom_value, max(ih.seq) as last_seq, max(ih.created_at) as created_at,
1107
+ min(ih.created_at) as initial_inbound_at
1108
+ from tmp_src ih
1109
+ group by ih.domain_id, ih.pallet_id
1110
+ ) dt
1111
+ inner join tmp_src rih on dt.domain_id = rih.domain_id and dt.pallet_id = rih.pallet_id and dt.last_seq = rih.seq and rih.status <> 'TERMINATED'
1112
+ inner join inventories iv on iv.domain_id = dt.domain_id and iv.pallet_id = dt.pallet_id
1113
+ where exists (
1114
+ SELECT * FROM tmp_bizfilter bizFilter
1115
+ WHERE bizFilter.bizplace_id = "rih"."bizplace_id"
1116
+ )
1117
+ ${queryFilter}
1118
+ ${expirationQueryFilter}
1119
+ );
1120
+ `
1121
+ )
1122
+
1123
+ const total: any = await tx.query(`select count(*) from tmp_data`)
1124
+
1125
+ const result: any = await tx.query(
1126
+ `
1127
+ select
1128
+ rih.domain_id, rih.pallet_id as "palletId", rih.carton_id as "cartonId", rih.qty as "remainQty", rih.uom_value as "uomValue", rih.uom, rih.last_seq, rih.created_at,
1129
+ rih.initial_inbound_at as "initialInboundAt",
1130
+ case when rih.reusable_pallet_id is not null then concat(rih.batch_id, ' (', plt.name, ')') else rih.batch_id end as "batchId",
1131
+ rih.batch_id_ref as "batchIdRef", rih.product_id, rih.packing_type as "packingType", rih.bizplace_id, rih.location_id,
1132
+ prd.id as product_id, prd.name as product_name, prd.sku as product_sku, prd.brand as product_brand, prd.description as product_description,
1133
+ bz.id as bizplace_id, bz.name as bizplace_name,
1134
+ loc.id as location_id, loc.name as location_name, loc."zone" as location_zone, loc."row" as location_row, loc."column" as location_column, loc.shelf as location_shelf,
1135
+ wh.name as warehouse_name, plt.name as reusable_pallet_name,
1136
+ rih.remark,
1137
+ rih.expiration_date as "expirationDate"
1138
+ from tmp_data rih
1139
+ left join pallets plt on plt.id = rih.reusable_pallet_id
1140
+ inner join products prd on prd.id = rih.product_id
1141
+ inner join bizplaces bz on bz.id = rih.bizplace_id
1142
+ inner join locations loc on loc.id = rih.location_id
1143
+ inner join warehouses wh on wh.id = loc.warehouse_id
1144
+ WHERE 1 = 1
1145
+ ${queryOrder}
1146
+ ${setPagination ? 'OFFSET ' + (pagination.page - 1) * pagination.limit + ' LIMIT ' + pagination.limit : ''}
1147
+ `
1148
+ )
1149
+
1150
+ // map all results
1151
+ let items = result.map(itm => {
1152
+ return {
1153
+ ...itm,
1154
+ bizplace: {
1155
+ id: itm.bizplace_id,
1156
+ name: itm.bizplace_name
1157
+ },
1158
+ location: {
1159
+ id: itm.location_id,
1160
+ name: itm.location_name,
1161
+ type: itm.location_type,
1162
+ zone: itm.location_zone
1163
+ },
1164
+ product: {
1165
+ id: itm.product_id,
1166
+ name: itm.product_name,
1167
+ description: itm.product_description,
1168
+ sku: itm.product_sku,
1169
+ brand: itm.product_brand
1170
+ }
1171
+ }
1172
+ })
1173
+
1174
+ return { items, total: total[0].count }
1175
+ }
1176
+
1177
+ @FieldResolver(type => Domain)
1178
+ async domain(@Root() inventoryHistory: InventoryHistory) {
1179
+ return await getRepository(Domain).findOne(inventoryHistory.domainId)
1180
+ }
1181
+
1182
+ @FieldResolver(type => User)
1183
+ async updater(@Root() inventoryHistory: InventoryHistory) {
1184
+ return await getRepository(User).findOne(inventoryHistory.updaterId)
1185
+ }
1186
+
1187
+ @FieldResolver(type => User)
1188
+ async creator(@Root() inventoryHistory: InventoryHistory) {
1189
+ return await getRepository(User).findOne(inventoryHistory.creatorId)
1190
+ }
1191
+ }
1192
+
1193
+ async function massageInventorySummary(tx: EntityManager, params: ListParam, bizplace: Bizplace, context: any) {
1194
+ await productsQuery(tx, params, bizplace)
1195
+ await filterInventoryQuery(tx, params, bizplace, context)
1196
+
1197
+ let fromDate = params.filters.find(data => data.name === 'fromDate')
1198
+ let hasTransactionOrBalanceFilter = params.filters.find(data => data.name === 'hasTransactionOrBalance')
1199
+
1200
+ let hasTransactionOrBalanceQuery = ''
1201
+ if (hasTransactionOrBalanceFilter && hasTransactionOrBalanceFilter.value) {
1202
+ hasTransactionOrBalanceQuery = 'and (opening_qty > 0 or total_in_qty > 0 or adjustment_qty > 0)'
1203
+ }
1204
+ await tx.query(
1205
+ `
1206
+ create temp table temp_inventory_summary ON COMMIT DROP as (
1207
+ select src.*,
1208
+ opening_qty + adjustment_qty + total_in_qty + total_out_qty as closing_qty
1209
+ from (
1210
+ select prd.sku AS product_sku, prd.name as product_name, prd.description as product_description, prd.type AS product_type, ih.packing_type, ih.packing_size,
1211
+ sum(case when ih.created_at >= $1 and ih.transaction_type = 'ADJUSTMENT' then ih.qty else 0 end) as adjustment_qty,
1212
+ sum(case when ih.created_at < $1 then qty else 0 end) as opening_qty,
1213
+ sum(case when ih.created_at >= $1 then case when ih.qty > 0 and ih.transaction_type <> 'ADJUSTMENT' then ih.qty else 0 end else 0 end) as total_in_qty,
1214
+ sum(case when ih.created_at >= $1 then case when ih.qty < 0 and ih.transaction_type <> 'ADJUSTMENT' then ih.qty else 0 end else 0 end) as total_out_qty,
1215
+ ih.product_id
1216
+ from temp_inv_history ih
1217
+ inner join temp_products prd on prd.id = ih.product_id
1218
+ group by prd.sku, prd.name, prd.description, prd.type, ih.product_id, ih.packing_type, ih.packing_size
1219
+ ) src
1220
+ where 1=1
1221
+ ${hasTransactionOrBalanceQuery}
1222
+ )
1223
+ `,
1224
+ [fromDate.value]
1225
+ )
1226
+
1227
+ const total: any = await tx.query(`select count(*) from temp_inventory_summary`)
1228
+
1229
+ const result: any = await tx.query(
1230
+ `
1231
+ select * from temp_inventory_summary ORDER BY product_name, product_description, product_type, packing_type, packing_size OFFSET $1 LIMIT $2
1232
+ `,
1233
+ [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]
1234
+ )
1235
+
1236
+ return [result, total]
1237
+ }
1238
+
1239
+ async function massageInventoryPalletSummary(tx: EntityManager, params: ListParam, bizplace: Bizplace, context: any) {
1240
+ await productsQuery(tx, params, bizplace)
1241
+ await filterInventoryQuery(tx, params, bizplace, context)
1242
+
1243
+ let fromDate = params.filters.find(data => data.name === 'fromDate')
1244
+ let toDate = params.filters.find(data => data.name === 'toDate')
1245
+ let hasTransactionOrBalanceFilter = params.filters.find(data => data.name === 'hasTransactionOrBalance')
1246
+
1247
+ let hasTransactionOrBalanceQuery = ''
1248
+ if (hasTransactionOrBalanceFilter && hasTransactionOrBalanceFilter.value) {
1249
+ hasTransactionOrBalanceQuery = 'and (opening_qty > 0 or total_in_qty > 0 or adjustment_qty > 0)'
1250
+ }
1251
+ await tx.query(
1252
+ `
1253
+ create temp table temp_inventory_pallet_summary ON COMMIT DROP as (
1254
+ select invh.*,
1255
+ invh.opening_qty + invh.total_in_qty + invh.total_out_qty + invh.adjustment_qty as closing_qty from (
1256
+ select product_sku, product_id, product_name, product_description, product_type,
1257
+ SUM(case when invHistory.created_at < $1 then
1258
+ case when invHistory.status = 'STORED' then 1
1259
+ when invhistory.status = 'TERMINATED' then -1
1260
+ else 0 end
1261
+ else 0 end) as opening_qty,
1262
+ SUM(case when invHistory.created_at >= $1 and invHistory.created_at <= $2 then
1263
+ case when (invHistory.transaction_type = 'UNLOADING' or invHistory.transaction_type = 'NEW') then 1 else 0 end
1264
+ else 0 end) as total_in_qty,
1265
+ SUM(case when invHistory.created_at >= $1 and invHistory.created_at <= $2 then
1266
+ case when invHistory.status = 'TERMINATED' AND invHistory.transaction_type <> 'ADJUSTMENT' then -1 else 0 end
1267
+ else 0 end) as total_out_qty,
1268
+ SUM(case when invHistory.created_at >= $1 and invHistory.created_at <= $2 then
1269
+ case when invHistory.status = 'TERMINATED' AND invHistory.transaction_type = 'ADJUSTMENT' then -1
1270
+ when invHistory.status = 'STORED' AND invHistory.transaction_type = 'ADJUSTMENT' then 1 else 0 end
1271
+ else 0 end) as adjustment_qty
1272
+ from(
1273
+ select pallet_id, seq, status, transaction_type, product_sku, product_id, product_name, product_description, product_type,
1274
+ inventory_history_id, packing_type, packing_size, qty, opening_qty, created_at from (
1275
+ select row_number() over(partition by invh.pallet_id order by invh.created_at asc) as rn, invh.* ,
1276
+ prd.sku as product_sku, prd.name as product_name, prd.description as product_description, prd.type AS product_type
1277
+ from temp_inv_history invh
1278
+ inner join temp_products prd on prd.id = invh.product_id
1279
+ where (transaction_type = 'UNLOADING' or invh.transaction_type = 'NEW')
1280
+ and invh.created_at >= $1
1281
+ ) as invIn where rn = 1
1282
+ union all
1283
+ select pallet_id, seq, status, transaction_type, product_sku, product_id, product_name, product_description, product_type,
1284
+ inventory_history_id, packing_type, packing_size, qty, opening_qty, created_at from (
1285
+ SELECT row_number() over(partition by pallet_id, invh.product_id order by seq asc) as rn,
1286
+ invh.pallet_id, invh.product_id, invh.packing_type, invh.packing_size,
1287
+ invh.batch_id, invh.inventory_history_id,
1288
+ invh.seq, 'STORED' AS status, invh.transaction_type, invh.qty, invh.opening_qty,
1289
+ invh.created_at,
1290
+ prd.sku as product_sku, prd.name as product_name, prd.description as product_description, prd.type AS product_type
1291
+ from temp_inv_history invh
1292
+ inner join temp_products prd on prd.id = invh.product_id
1293
+ where invh.created_at < $1
1294
+ and (invh.status = 'STORED' or invh.status = 'UNLOADED')
1295
+ ) as invStored where rn = 1
1296
+ union all
1297
+ select pallet_id, seq, status, transaction_type, product_sku, product_id, product_name, product_description, product_type,
1298
+ inventory_history_id, packing_type, packing_size, qty, opening_qty, started_at as created_at from (
1299
+ select row_number() over(partition by invh.pallet_id, invh.product_id order by invh.seq desc) as rn, invh.*,
1300
+ prd.sku as product_sku, prd.name as product_name, prd.description as product_description, prd.type AS product_type, repeatedGroup.started_at
1301
+ from temp_inv_history invh
1302
+ inner join (
1303
+ select pallet_id, min(created_at) as started_at, max(created_at) as ended_at, min(seq) as min_seq, max(seq) as max_seq, status from (
1304
+ select startData.*, sum(startflag) over (partition by pallet_id order by seq) as grp from (
1305
+ select s.*,
1306
+ (case when lag(status) over (partition by pallet_id order by seq) = status then 0 else 1 end) as startflag
1307
+ from temp_inv_history s
1308
+ ) startData
1309
+ ) endData
1310
+ group by pallet_id, grp, status
1311
+ ) repeatedGroup on repeatedGroup.pallet_id = invh.pallet_id and repeatedGroup.min_seq <= invh.seq and repeatedGroup.max_seq >= invh.seq
1312
+ inner join temp_products prd on prd.id = invh.product_id
1313
+ ) as invOut where rn = 1 AND status ='TERMINATED'
1314
+ union all
1315
+ SELECT invh.pallet_id, invh.seq, invh.status, invh.transaction_type,
1316
+ prd.sku AS product_sku, invh.product_id, prd.name AS product_name, prd.description AS product_description, prd.type AS product_type,
1317
+ invh.inventory_history_id, invh.packing_type, invh.packing_size, invh.qty, invh.opening_qty, invh.created_at
1318
+ FROM temp_inv_history invh
1319
+ INNER JOIN (
1320
+ SELECT invh.pallet_id, invh.seq AS stored_seq, invh2.seq AS terminated_seq FROM temp_inv_history invh
1321
+ INNER JOIN temp_inv_history invh2 ON invh2.pallet_id = invh.pallet_id AND invh2.status='STORED' AND invh2.seq = invh.seq + 1 AND invh2.product_id <> invh.product_id
1322
+ WHERE invh.transaction_type = 'ADJUSTMENT'
1323
+ ) dt ON dt.pallet_id = invh.pallet_id AND (dt.stored_seq = invh.seq OR dt.terminated_seq = invh.seq)
1324
+ inner join temp_products prd on prd.id = invh.product_id
1325
+ where invh.created_at >= $1
1326
+ ORDER BY product_name, pallet_id, seq
1327
+ ) as invHistory
1328
+ group by product_sku, product_id, product_name, product_description, product_type
1329
+ ) invh
1330
+ where 1=1
1331
+ ${hasTransactionOrBalanceQuery}
1332
+ )
1333
+ `,
1334
+ [fromDate.value, toDate.value]
1335
+ )
1336
+
1337
+ const total: any = await tx.query(
1338
+ `select count(*) as count, sum(total_in_qty) as totalInQty, sum(opening_qty) as totalOpeningBal from temp_inventory_pallet_summary`
1339
+ )
1340
+
1341
+ const result: any = await tx.query(
1342
+ `
1343
+ select *, 'PALLET' as packing_type from temp_inventory_pallet_summary ORDER BY product_name, product_description OFFSET $1 LIMIT $2
1344
+ `,
1345
+ [(params.pagination.page - 1) * params.pagination.limit, params.pagination.limit]
1346
+ )
1347
+
1348
+ return [result, total]
1349
+ }
1350
+
1351
+ async function productsQuery(tx: EntityManager, params: ListParam, bizplace: Bizplace) {
1352
+ let product = params.filters.find(data => data.name === 'product')
1353
+ let productDesc = params.filters.find(data => data.name === 'productDescription')
1354
+ let productType = params.filters.find(data => data.name === 'productType')
1355
+
1356
+ let productQuery = ''
1357
+ if (product) {
1358
+ let productValue = product.value
1359
+ .toLowerCase()
1360
+ .split(',')
1361
+ .map(prod => {
1362
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'"
1363
+ })
1364
+ .join(',')
1365
+ productQuery = `AND (
1366
+ Lower(prd.name) LIKE ANY(ARRAY[${productValue}])
1367
+ OR Lower(prd.sku) LIKE ANY(ARRAY[${productValue}])
1368
+ OR Lower(prd.description) LIKE ANY(ARRAY[${productValue}])
1369
+ )`
1370
+ }
1371
+
1372
+ let productDescQuery = ''
1373
+ if (productDesc) {
1374
+ productDescQuery = "AND Lower(prd.description) LIKE '%" + productDesc.value.toLowerCase() + "%'"
1375
+ }
1376
+
1377
+ let productTypeQuery = ''
1378
+ if (productType) {
1379
+ productTypeQuery = "AND prd.type = '" + productType.value + "'"
1380
+ }
1381
+
1382
+ await tx.query(
1383
+ `
1384
+ create temp table temp_products ON COMMIT DROP AS
1385
+ (
1386
+ select prd.id, prd.name, prd.sku, prd.description, prd.id::varchar as product_id, prd.type from products prd
1387
+ inner join bizplaces b on b.id = prd.bizplace_id
1388
+ inner join companies c on c.domain_id = b.domain_id
1389
+ inner join bizplaces b2 on b2.company_id = c.id
1390
+ where b2.id = $1
1391
+ ${productQuery}
1392
+ ${productDescQuery}
1393
+ ${productTypeQuery}
1394
+ GROUP BY prd.id, prd.sku, prd.name, prd.description
1395
+ )`,
1396
+ [bizplace.id]
1397
+ )
1398
+ }
1399
+
1400
+ async function filterInventoryQuery(tx: EntityManager, params: ListParam, bizplace: Bizplace, context: any) {
1401
+ let toDate = params.filters.find(data => data.name === 'toDate')
1402
+ let batchNo = params.filters.find(data => data.name === 'batchNo')
1403
+
1404
+ let batchNoQuery = ''
1405
+ if (batchNo) {
1406
+ batchNoQuery =
1407
+ 'AND Lower(ih.batch_id) LIKE ANY(ARRAY[' +
1408
+ batchNo.value
1409
+ .toLowerCase()
1410
+ .split(',')
1411
+ .map(prod => {
1412
+ return "'%" + prod.trim().replace(/'/g, "''") + "%'"
1413
+ })
1414
+ .join(',') +
1415
+ '])'
1416
+ }
1417
+
1418
+ await tx.query(
1419
+ `
1420
+ create temp table temp_inv_history ON COMMIT DROP as (
1421
+ select i2.pallet_id, ih.product_id::uuid, ih.packing_type, i2.packing_size, ih.batch_id,
1422
+ ih.id as inventory_history_id, ih.seq, ih.status, ih.transaction_type, ih.qty, ih.opening_qty, ih.created_at
1423
+ from inventories i2
1424
+ inner join reduced_inventory_histories ih on ih.pallet_id = i2.pallet_id and ih.domain_id = i2.domain_id
1425
+ where
1426
+ i2.domain_id = $1
1427
+ and i2.bizplace_id = $2
1428
+ and ih.created_at <= $3
1429
+ ${batchNoQuery}
1430
+ )
1431
+ `,
1432
+ [context.state.domain.id, bizplace.id, toDate.value]
1433
+ )
1434
+ }