@things-factory/warehouse-base 4.0.0-y.0 → 4.0.4

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 (358) hide show
  1. package/dist-server/constants/inventory.js +4 -1
  2. package/dist-server/constants/inventory.js.map +1 -1
  3. package/dist-server/controllers/ecommerce/ecommerce-controller.js +3 -3
  4. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
  5. package/dist-server/controllers/ecommerce/index.js +1 -0
  6. package/dist-server/controllers/ecommerce/index.js.map +1 -1
  7. package/dist-server/controllers/ecommerce/sellercraft-controller.js +48 -0
  8. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -0
  9. package/dist-server/controllers/warehouse-controller.js +40 -1
  10. package/dist-server/controllers/warehouse-controller.js.map +1 -1
  11. package/dist-server/entities/reduced-inventory-history.js +8 -7
  12. package/dist-server/entities/reduced-inventory-history.js.map +1 -1
  13. package/dist-server/graphql/resolvers/inventory/check-product-identicality.js +2 -2
  14. package/dist-server/graphql/resolvers/inventory/check-product-identicality.js.map +1 -1
  15. package/dist-server/graphql/resolvers/inventory/inventories-by-strategy.js +4 -2
  16. package/dist-server/graphql/resolvers/inventory/inventories-by-strategy.js.map +1 -1
  17. package/dist-server/graphql/resolvers/inventory-change/approve-inventory-changes.js +25 -5
  18. package/dist-server/graphql/resolvers/inventory-change/approve-inventory-changes.js.map +1 -1
  19. package/dist-server/graphql/resolvers/inventory-history/inventory-history-summary-report.js +12 -11
  20. package/dist-server/graphql/resolvers/inventory-history/inventory-history-summary-report.js.map +1 -1
  21. package/dist-server/graphql/resolvers/inventory-history/onhand-inventories.js +6 -3
  22. package/dist-server/graphql/resolvers/inventory-history/onhand-inventories.js.map +1 -1
  23. package/dist-server/graphql/resolvers/location/location-occupancies.js +15 -28
  24. package/dist-server/graphql/resolvers/location/location-occupancies.js.map +1 -1
  25. package/dist-server/graphql/resolvers/location/location.js +3 -2
  26. package/dist-server/graphql/resolvers/location/location.js.map +1 -1
  27. package/dist-server/graphql/resolvers/movement/inbound-movements-counter.js +5 -7
  28. package/dist-server/graphql/resolvers/movement/inbound-movements-counter.js.map +1 -1
  29. package/dist-server/graphql/resolvers/movement/outbound-movements-counter.js +5 -7
  30. package/dist-server/graphql/resolvers/movement/outbound-movements-counter.js.map +1 -1
  31. package/dist-server/graphql/resolvers/movement/weekly-movements-counter.js +14 -32
  32. package/dist-server/graphql/resolvers/movement/weekly-movements-counter.js.map +1 -1
  33. package/dist-server/graphql/types/inventory/index.js +1 -1
  34. package/dist-server/graphql/types/inventory/inventory-patch.js +1 -0
  35. package/dist-server/graphql/types/inventory/inventory-patch.js.map +1 -1
  36. package/dist-server/graphql/types/location/index.js +4 -4
  37. package/dist-server/graphql/types/location/index.js.map +1 -1
  38. package/dist-server/graphql/types/warehouse/index.js.map +1 -1
  39. package/dist-server/index.js +11 -12
  40. package/dist-server/index.js.map +1 -1
  41. package/dist-server/service/index.js +71 -0
  42. package/dist-server/service/index.js.map +1 -0
  43. package/dist-server/service/inventory/index.js +9 -0
  44. package/dist-server/service/inventory/index.js.map +1 -0
  45. package/dist-server/service/inventory/inventory-mutation.js +324 -0
  46. package/dist-server/service/inventory/inventory-mutation.js.map +1 -0
  47. package/dist-server/service/inventory/inventory-query.js +678 -0
  48. package/dist-server/service/inventory/inventory-query.js.map +1 -0
  49. package/dist-server/service/inventory/inventory-types.js +405 -0
  50. package/dist-server/service/inventory/inventory-types.js.map +1 -0
  51. package/dist-server/service/inventory/inventory.js +292 -0
  52. package/dist-server/service/inventory/inventory.js.map +1 -0
  53. package/dist-server/service/inventory-change/index.js +9 -0
  54. package/dist-server/service/inventory-change/index.js.map +1 -0
  55. package/dist-server/service/inventory-change/inventory-change-mutation.js +530 -0
  56. package/dist-server/service/inventory-change/inventory-change-mutation.js.map +1 -0
  57. package/dist-server/service/inventory-change/inventory-change-query.js +121 -0
  58. package/dist-server/service/inventory-change/inventory-change-query.js.map +1 -0
  59. package/dist-server/service/inventory-change/inventory-change-types.js +65 -0
  60. package/dist-server/service/inventory-change/inventory-change-types.js.map +1 -0
  61. package/dist-server/service/inventory-change/inventory-change.js +185 -0
  62. package/dist-server/service/inventory-change/inventory-change.js.map +1 -0
  63. package/dist-server/service/inventory-history/index.js +9 -0
  64. package/dist-server/service/inventory-history/index.js.map +1 -0
  65. package/dist-server/service/inventory-history/inventory-history-mutation.js +121 -0
  66. package/dist-server/service/inventory-history/inventory-history-mutation.js.map +1 -0
  67. package/dist-server/service/inventory-history/inventory-history-query.js +1283 -0
  68. package/dist-server/service/inventory-history/inventory-history-query.js.map +1 -0
  69. package/dist-server/service/inventory-history/inventory-history-types.js +382 -0
  70. package/dist-server/service/inventory-history/inventory-history-types.js.map +1 -0
  71. package/dist-server/service/inventory-history/inventory-history.js +233 -0
  72. package/dist-server/service/inventory-history/inventory-history.js.map +1 -0
  73. package/dist-server/service/location/index.js +9 -0
  74. package/dist-server/service/location/index.js.map +1 -0
  75. package/dist-server/service/location/location-mutation.js +157 -0
  76. package/dist-server/service/location/location-mutation.js.map +1 -0
  77. package/dist-server/service/location/location-query.js +251 -0
  78. package/dist-server/service/location/location-query.js.map +1 -0
  79. package/dist-server/service/location/location-types.js +223 -0
  80. package/dist-server/service/location/location-types.js.map +1 -0
  81. package/dist-server/service/location/location.js +125 -0
  82. package/dist-server/service/location/location.js.map +1 -0
  83. package/dist-server/service/movement/index.js +9 -0
  84. package/dist-server/service/movement/index.js.map +1 -0
  85. package/dist-server/service/movement/movement-mutation.js +80 -0
  86. package/dist-server/service/movement/movement-mutation.js.map +1 -0
  87. package/dist-server/service/movement/movement-query.js +286 -0
  88. package/dist-server/service/movement/movement-query.js.map +1 -0
  89. package/dist-server/service/movement/movement-types.js +117 -0
  90. package/dist-server/service/movement/movement-types.js.map +1 -0
  91. package/dist-server/service/movement/movement.js +101 -0
  92. package/dist-server/service/movement/movement.js.map +1 -0
  93. package/dist-server/service/pallet/index.js +9 -0
  94. package/dist-server/service/pallet/index.js.map +1 -0
  95. package/dist-server/service/pallet/pallet-mutation.js +192 -0
  96. package/dist-server/service/pallet/pallet-mutation.js.map +1 -0
  97. package/dist-server/service/pallet/pallet-query.js +164 -0
  98. package/dist-server/service/pallet/pallet-query.js.map +1 -0
  99. package/dist-server/service/pallet/pallet-types.js +109 -0
  100. package/dist-server/service/pallet/pallet-types.js.map +1 -0
  101. package/dist-server/service/pallet/pallet.js +112 -0
  102. package/dist-server/service/pallet/pallet.js.map +1 -0
  103. package/dist-server/service/pallet-count/index.js +9 -0
  104. package/dist-server/service/pallet-count/index.js.map +1 -0
  105. package/dist-server/service/pallet-count/pallet-count-mutation.js +156 -0
  106. package/dist-server/service/pallet-count/pallet-count-mutation.js.map +1 -0
  107. package/dist-server/service/pallet-count/pallet-count-query.js +86 -0
  108. package/dist-server/service/pallet-count/pallet-count-query.js.map +1 -0
  109. package/dist-server/service/pallet-count/pallet-count-types.js +65 -0
  110. package/dist-server/service/pallet-count/pallet-count-types.js.map +1 -0
  111. package/dist-server/service/pallet-count/pallet-count.js +89 -0
  112. package/dist-server/service/pallet-count/pallet-count.js.map +1 -0
  113. package/dist-server/service/pallet-history/index.js +9 -0
  114. package/dist-server/service/pallet-history/index.js.map +1 -0
  115. package/dist-server/service/pallet-history/pallet-history-mutation.js +120 -0
  116. package/dist-server/service/pallet-history/pallet-history-mutation.js.map +1 -0
  117. package/dist-server/service/pallet-history/pallet-history-query.js +87 -0
  118. package/dist-server/service/pallet-history/pallet-history-query.js.map +1 -0
  119. package/dist-server/service/pallet-history/pallet-history-types.js +65 -0
  120. package/dist-server/service/pallet-history/pallet-history-types.js.map +1 -0
  121. package/dist-server/service/pallet-history/pallet-history.js +107 -0
  122. package/dist-server/service/pallet-history/pallet-history.js.map +1 -0
  123. package/dist-server/service/reduced-inventory-history/index.js +6 -0
  124. package/dist-server/service/reduced-inventory-history/index.js.map +1 -0
  125. package/dist-server/service/reduced-inventory-history/reduced-inventory-history.js +133 -0
  126. package/dist-server/service/reduced-inventory-history/reduced-inventory-history.js.map +1 -0
  127. package/dist-server/service/warehouse/index.js +9 -0
  128. package/dist-server/service/warehouse/index.js.map +1 -0
  129. package/dist-server/service/warehouse/warehouse-mutation.js +135 -0
  130. package/dist-server/service/warehouse/warehouse-mutation.js.map +1 -0
  131. package/dist-server/service/warehouse/warehouse-query.js +91 -0
  132. package/dist-server/service/warehouse/warehouse-query.js.map +1 -0
  133. package/dist-server/service/warehouse/warehouse-types.js +82 -0
  134. package/dist-server/service/warehouse/warehouse-types.js.map +1 -0
  135. package/dist-server/service/warehouse/warehouse.js +102 -0
  136. package/dist-server/service/warehouse/warehouse.js.map +1 -0
  137. package/dist-server/utils/inventory-util.js +46 -12
  138. package/dist-server/utils/inventory-util.js.map +1 -1
  139. package/package.json +8 -7
  140. package/server/constants/inventory.ts +4 -1
  141. package/server/controllers/ecommerce/ecommerce-controller.ts +4 -3
  142. package/server/controllers/ecommerce/index.ts +1 -0
  143. package/server/controllers/ecommerce/sellercraft-controller.ts +58 -0
  144. package/server/controllers/warehouse-controller.ts +54 -2
  145. package/server/index.ts +8 -4
  146. package/server/service/index.ts +61 -0
  147. package/server/service/inventory/index.ts +6 -0
  148. package/server/{graphql/resolvers/inventory/update-multiple-inventory.ts → service/inventory/inventory-mutation.ts} +158 -7
  149. package/server/service/inventory/inventory-query.ts +745 -0
  150. package/server/service/inventory/inventory-types.ts +289 -0
  151. package/server/{entities → service/inventory}/inventory.ts +92 -8
  152. package/server/service/inventory-change/index.ts +6 -0
  153. package/server/{graphql/resolvers/inventory-change/approve-inventory-changes.ts → service/inventory-change/inventory-change-mutation.ts} +299 -11
  154. package/server/{graphql/resolvers/inventory-change/inventory-changes.ts → service/inventory-change/inventory-change-query.ts} +35 -4
  155. package/server/service/inventory-change/inventory-change-types.ts +36 -0
  156. package/server/{entities → service/inventory-change}/inventory-change.ts +55 -5
  157. package/server/service/inventory-history/index.ts +6 -0
  158. package/server/service/inventory-history/inventory-history-mutation.ts +119 -0
  159. package/server/service/inventory-history/inventory-history-query.ts +1435 -0
  160. package/server/service/inventory-history/inventory-history-types.ts +269 -0
  161. package/server/{entities → service/inventory-history}/inventory-history.ts +65 -10
  162. package/server/service/location/index.ts +6 -0
  163. package/server/service/location/location-mutation.ts +134 -0
  164. package/server/service/location/location-query.ts +209 -0
  165. package/server/service/location/location-types.ts +151 -0
  166. package/server/{entities → service/location}/location.ts +40 -3
  167. package/server/service/movement/index.ts +6 -0
  168. package/server/service/movement/movement-mutation.ts +61 -0
  169. package/server/service/movement/movement-query.ts +258 -0
  170. package/server/service/movement/movement-types.ts +74 -0
  171. package/server/{entities → service/movement}/movement.ts +35 -2
  172. package/server/service/pallet/index.ts +6 -0
  173. package/server/service/pallet/pallet-mutation.ts +244 -0
  174. package/server/service/pallet/pallet-query.ts +105 -0
  175. package/server/service/pallet/pallet-types.ts +68 -0
  176. package/server/{entities → service/pallet}/pallet.ts +31 -4
  177. package/server/service/pallet-count/index.ts +6 -0
  178. package/server/service/pallet-count/pallet-count-mutation.ts +148 -0
  179. package/server/service/pallet-count/pallet-count-query.ts +46 -0
  180. package/server/service/pallet-count/pallet-count-types.ts +36 -0
  181. package/server/service/pallet-count/pallet-count.ts +70 -0
  182. package/server/service/pallet-history/index.ts +6 -0
  183. package/server/service/pallet-history/pallet-history-mutation.ts +114 -0
  184. package/server/service/pallet-history/pallet-history-query.ts +46 -0
  185. package/server/service/pallet-history/pallet-history-types.ts +36 -0
  186. package/server/{entities → service/pallet-history}/pallet-history.ts +34 -12
  187. package/server/service/reduced-inventory-history/index.ts +3 -0
  188. package/server/{entities → service/reduced-inventory-history}/reduced-inventory-history.ts +7 -12
  189. package/server/service/warehouse/index.ts +6 -0
  190. package/server/service/warehouse/warehouse-mutation.ts +114 -0
  191. package/server/service/warehouse/warehouse-query.ts +51 -0
  192. package/server/service/warehouse/warehouse-types.ts +50 -0
  193. package/server/{entities → service/warehouse}/warehouse.ts +29 -4
  194. package/server/utils/inventory-util.ts +58 -4
  195. package/translations/en.json +2 -1
  196. package/translations/ko.json +2 -1
  197. package/translations/ms.json +2 -1
  198. package/translations/zh.json +2 -1
  199. package/server/entities/index.ts +0 -36
  200. package/server/entities/pallet-count.ts +0 -40
  201. package/server/graphql/index.ts +0 -7
  202. package/server/graphql/resolvers/index.ts +0 -33
  203. package/server/graphql/resolvers/inventory/check-carton-identicality.ts +0 -32
  204. package/server/graphql/resolvers/inventory/check-inventory-owner.ts +0 -26
  205. package/server/graphql/resolvers/inventory/check-product-identicality.ts +0 -24
  206. package/server/graphql/resolvers/inventory/create-inventory.ts +0 -15
  207. package/server/graphql/resolvers/inventory/delete-inventories.ts +0 -14
  208. package/server/graphql/resolvers/inventory/delete-inventory.ts +0 -10
  209. package/server/graphql/resolvers/inventory/index.ts +0 -38
  210. package/server/graphql/resolvers/inventory/inventories-by-bundle.ts +0 -168
  211. package/server/graphql/resolvers/inventory/inventories-by-product.ts +0 -164
  212. package/server/graphql/resolvers/inventory/inventories-by-strategy.ts +0 -143
  213. package/server/graphql/resolvers/inventory/inventories.ts +0 -129
  214. package/server/graphql/resolvers/inventory/inventory-by-pallet.ts +0 -15
  215. package/server/graphql/resolvers/inventory/inventory-transfer.ts +0 -50
  216. package/server/graphql/resolvers/inventory/inventory.ts +0 -14
  217. package/server/graphql/resolvers/inventory/update-inventory-remark.ts +0 -19
  218. package/server/graphql/resolvers/inventory/update-inventory.ts +0 -31
  219. package/server/graphql/resolvers/inventory-change/create-inventory-change.ts +0 -17
  220. package/server/graphql/resolvers/inventory-change/delete-inventory-change.ts +0 -12
  221. package/server/graphql/resolvers/inventory-change/delete-inventory-changes.ts +0 -15
  222. package/server/graphql/resolvers/inventory-change/index.ts +0 -27
  223. package/server/graphql/resolvers/inventory-change/inventory-change.ts +0 -14
  224. package/server/graphql/resolvers/inventory-change/reject-inventory-changes.ts +0 -42
  225. package/server/graphql/resolvers/inventory-change/submit-inventory-changes.ts +0 -101
  226. package/server/graphql/resolvers/inventory-change/update-inventory-change.ts +0 -21
  227. package/server/graphql/resolvers/inventory-change/update-multiple-inventory-change.ts +0 -47
  228. package/server/graphql/resolvers/inventory-history/bizplace-inventory-histories.ts +0 -81
  229. package/server/graphql/resolvers/inventory-history/create-inventory-history.ts +0 -17
  230. package/server/graphql/resolvers/inventory-history/delete-inventory-histories.ts +0 -15
  231. package/server/graphql/resolvers/inventory-history/delete-inventory-history.ts +0 -12
  232. package/server/graphql/resolvers/inventory-history/index.ts +0 -34
  233. package/server/graphql/resolvers/inventory-history/inventory-histories.ts +0 -62
  234. package/server/graphql/resolvers/inventory-history/inventory-history-pallet-detail-report.ts +0 -166
  235. package/server/graphql/resolvers/inventory-history/inventory-history-pallet-report.ts +0 -133
  236. package/server/graphql/resolvers/inventory-history/inventory-history-pallet-storage-report.ts +0 -146
  237. package/server/graphql/resolvers/inventory-history/inventory-history-report.ts +0 -233
  238. package/server/graphql/resolvers/inventory-history/inventory-history-summary-report.ts +0 -317
  239. package/server/graphql/resolvers/inventory-history/inventory-history.ts +0 -13
  240. package/server/graphql/resolvers/inventory-history/onhand-inventories.ts +0 -233
  241. package/server/graphql/resolvers/inventory-history/update-inventory-history.ts +0 -21
  242. package/server/graphql/resolvers/inventory-history/update-multiple-inventory-history.ts +0 -48
  243. package/server/graphql/resolvers/location/create-location.ts +0 -25
  244. package/server/graphql/resolvers/location/delete-all-locations.ts +0 -12
  245. package/server/graphql/resolvers/location/delete-location.ts +0 -16
  246. package/server/graphql/resolvers/location/delete-locations.ts +0 -16
  247. package/server/graphql/resolvers/location/index.ts +0 -32
  248. package/server/graphql/resolvers/location/location-by-name.ts +0 -17
  249. package/server/graphql/resolvers/location/location-occupancies.ts +0 -45
  250. package/server/graphql/resolvers/location/location-with-inventories.ts +0 -87
  251. package/server/graphql/resolvers/location/location.ts +0 -10
  252. package/server/graphql/resolvers/location/locations-by-group.ts +0 -29
  253. package/server/graphql/resolvers/location/locations.ts +0 -18
  254. package/server/graphql/resolvers/location/update-location.ts +0 -27
  255. package/server/graphql/resolvers/location/update-multiple-location.ts +0 -29
  256. package/server/graphql/resolvers/movement/create-movement.ts +0 -13
  257. package/server/graphql/resolvers/movement/delete-movement.ts +0 -9
  258. package/server/graphql/resolvers/movement/inbound-movements-counter.ts +0 -68
  259. package/server/graphql/resolvers/movement/index.ts +0 -23
  260. package/server/graphql/resolvers/movement/movement.ts +0 -16
  261. package/server/graphql/resolvers/movement/movements.ts +0 -17
  262. package/server/graphql/resolvers/movement/outbound-movements-counter.ts +0 -70
  263. package/server/graphql/resolvers/movement/update-movement.ts +0 -25
  264. package/server/graphql/resolvers/movement/weekly-movements-counter.ts +0 -94
  265. package/server/graphql/resolvers/pallet/create-pallet.ts +0 -18
  266. package/server/graphql/resolvers/pallet/delete-pallet.ts +0 -13
  267. package/server/graphql/resolvers/pallet/delete-pallets.ts +0 -44
  268. package/server/graphql/resolvers/pallet/index.ts +0 -29
  269. package/server/graphql/resolvers/pallet/pallet-by-status.ts +0 -16
  270. package/server/graphql/resolvers/pallet/pallet-inbound-validate.ts +0 -21
  271. package/server/graphql/resolvers/pallet/pallet-outbound-validate.ts +0 -21
  272. package/server/graphql/resolvers/pallet/pallet-return.ts +0 -57
  273. package/server/graphql/resolvers/pallet/pallet.ts +0 -15
  274. package/server/graphql/resolvers/pallet/pallets.ts +0 -22
  275. package/server/graphql/resolvers/pallet/update-multiple-pallet.ts +0 -95
  276. package/server/graphql/resolvers/pallet/update-pallet.ts +0 -21
  277. package/server/graphql/resolvers/pallet-count/create-pallet-count.ts +0 -17
  278. package/server/graphql/resolvers/pallet-count/delete-pallet-count.ts +0 -12
  279. package/server/graphql/resolvers/pallet-count/delete-pallet-counts.ts +0 -15
  280. package/server/graphql/resolvers/pallet-count/index.ts +0 -23
  281. package/server/graphql/resolvers/pallet-count/pallet-count.ts +0 -14
  282. package/server/graphql/resolvers/pallet-count/pallet-counts.ts +0 -14
  283. package/server/graphql/resolvers/pallet-count/update-multiple-pallet-count.ts +0 -47
  284. package/server/graphql/resolvers/pallet-count/update-pallet-count-seq.ts +0 -44
  285. package/server/graphql/resolvers/pallet-count/update-pallet-count.ts +0 -21
  286. package/server/graphql/resolvers/pallet-history/create-pallet-history.ts +0 -17
  287. package/server/graphql/resolvers/pallet-history/delete-pallet-histories.ts +0 -16
  288. package/server/graphql/resolvers/pallet-history/delete-pallet-history.ts +0 -13
  289. package/server/graphql/resolvers/pallet-history/index.ts +0 -21
  290. package/server/graphql/resolvers/pallet-history/pallet-histories.ts +0 -14
  291. package/server/graphql/resolvers/pallet-history/pallet-history.ts +0 -14
  292. package/server/graphql/resolvers/pallet-history/update-multiple-pallet-history.ts +0 -46
  293. package/server/graphql/resolvers/pallet-history/update-pallet-history.ts +0 -21
  294. package/server/graphql/resolvers/warehouse/create-warehouse.ts +0 -22
  295. package/server/graphql/resolvers/warehouse/delete-warehouse.ts +0 -16
  296. package/server/graphql/resolvers/warehouse/delete-warehouses.ts +0 -16
  297. package/server/graphql/resolvers/warehouse/index.ts +0 -22
  298. package/server/graphql/resolvers/warehouse/update-multiple-warehouse.ts +0 -29
  299. package/server/graphql/resolvers/warehouse/update-warehouse.ts +0 -23
  300. package/server/graphql/resolvers/warehouse/warehouse.ts +0 -17
  301. package/server/graphql/resolvers/warehouse/warehouses.ts +0 -16
  302. package/server/graphql/types/index.ts +0 -45
  303. package/server/graphql/types/inventory/index.ts +0 -61
  304. package/server/graphql/types/inventory/inventory-bundle-group-detail.ts +0 -8
  305. package/server/graphql/types/inventory/inventory-bundle-group.ts +0 -33
  306. package/server/graphql/types/inventory/inventory-list.ts +0 -8
  307. package/server/graphql/types/inventory/inventory-patch.ts +0 -41
  308. package/server/graphql/types/inventory/inventory.ts +0 -50
  309. package/server/graphql/types/inventory/new-inventory.ts +0 -29
  310. package/server/graphql/types/inventory-change/index.ts +0 -47
  311. package/server/graphql/types/inventory-change/inventory-change-list.ts +0 -8
  312. package/server/graphql/types/inventory-change/inventory-change-patch.ts +0 -10
  313. package/server/graphql/types/inventory-change/inventory-change.ts +0 -33
  314. package/server/graphql/types/inventory-change/new-inventory-change.ts +0 -8
  315. package/server/graphql/types/inventory-history/index.ts +0 -54
  316. package/server/graphql/types/inventory-history/inventory-history-list.ts +0 -8
  317. package/server/graphql/types/inventory-history/inventory-history-pallet-report-list.ts +0 -9
  318. package/server/graphql/types/inventory-history/inventory-history-pallet-report.ts +0 -13
  319. package/server/graphql/types/inventory-history/inventory-history-patch.ts +0 -37
  320. package/server/graphql/types/inventory-history/inventory-history-summary-list.ts +0 -10
  321. package/server/graphql/types/inventory-history/inventory-history-summary.ts +0 -17
  322. package/server/graphql/types/inventory-history/inventory-history.ts +0 -56
  323. package/server/graphql/types/inventory-history/new-inventory-history.ts +0 -29
  324. package/server/graphql/types/location/index.ts +0 -53
  325. package/server/graphql/types/location/location-inventories.ts +0 -8
  326. package/server/graphql/types/location/location-inventory.ts +0 -21
  327. package/server/graphql/types/location/location-list.ts +0 -8
  328. package/server/graphql/types/location/location-occupancy.ts +0 -10
  329. package/server/graphql/types/location/location-patch.ts +0 -17
  330. package/server/graphql/types/location/location.ts +0 -21
  331. package/server/graphql/types/location/new-location.ts +0 -15
  332. package/server/graphql/types/movement/index.ts +0 -31
  333. package/server/graphql/types/movement/movement-count.ts +0 -11
  334. package/server/graphql/types/movement/movement-list.ts +0 -8
  335. package/server/graphql/types/movement/movement-patch.ts +0 -12
  336. package/server/graphql/types/movement/movement.ts +0 -17
  337. package/server/graphql/types/movement/new-movement.ts +0 -12
  338. package/server/graphql/types/pallet/index.ts +0 -48
  339. package/server/graphql/types/pallet/new-pallet.ts +0 -11
  340. package/server/graphql/types/pallet/pallet-list.ts +0 -8
  341. package/server/graphql/types/pallet/pallet-patch.ts +0 -14
  342. package/server/graphql/types/pallet/pallet-validate.ts +0 -8
  343. package/server/graphql/types/pallet/pallet.ts +0 -18
  344. package/server/graphql/types/pallet-count/index.ts +0 -38
  345. package/server/graphql/types/pallet-count/new-pallet-count.ts +0 -8
  346. package/server/graphql/types/pallet-count/pallet-count-list.ts +0 -8
  347. package/server/graphql/types/pallet-count/pallet-count-patch.ts +0 -10
  348. package/server/graphql/types/pallet-count/pallet-count.ts +0 -14
  349. package/server/graphql/types/pallet-history/index.ts +0 -34
  350. package/server/graphql/types/pallet-history/new-pallet-history.ts +0 -8
  351. package/server/graphql/types/pallet-history/pallet-history-list.ts +0 -8
  352. package/server/graphql/types/pallet-history/pallet-history-patch.ts +0 -10
  353. package/server/graphql/types/pallet-history/pallet-history.ts +0 -14
  354. package/server/graphql/types/warehouse/index.ts +0 -35
  355. package/server/graphql/types/warehouse/new-warehouse.ts +0 -10
  356. package/server/graphql/types/warehouse/warehouse-list.ts +0 -8
  357. package/server/graphql/types/warehouse/warehouse-patch.ts +0 -12
  358. package/server/graphql/types/warehouse/warehouse.ts +0 -17
@@ -0,0 +1,530 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.InventoryChangeMutation = void 0;
16
+ const type_graphql_1 = require("type-graphql");
17
+ const typeorm_1 = require("typeorm");
18
+ const biz_base_1 = require("@things-factory/biz-base");
19
+ const id_rule_base_1 = require("@things-factory/id-rule-base");
20
+ const integration_marketplace_1 = require("@things-factory/integration-marketplace");
21
+ const integration_sellercraft_1 = require("@things-factory/integration-sellercraft");
22
+ const product_base_1 = require("@things-factory/product-base");
23
+ const setting_base_1 = require("@things-factory/setting-base");
24
+ const constants_1 = require("../../constants");
25
+ const controllers_1 = require("../../controllers");
26
+ const utils_1 = require("../../utils");
27
+ const inventory_history_1 = require("../inventory-history/inventory-history");
28
+ const inventory_1 = require("../inventory/inventory");
29
+ const location_1 = require("../location/location");
30
+ const inventory_change_1 = require("./inventory-change");
31
+ const inventory_change_types_1 = require("./inventory-change-types");
32
+ let InventoryChangeMutation = class InventoryChangeMutation {
33
+ async createInventoryChange(inventoryChange, context) {
34
+ const { domain, user, tx } = context.state;
35
+ return await tx.getRepository(inventory_change_1.InventoryChange).save(Object.assign(Object.assign({}, inventoryChange), { domain: domain, creator: user, updater: user }));
36
+ }
37
+ async updateInventoryChange(name, patch, context) {
38
+ const { domain, user, tx } = context.state;
39
+ const repository = tx.getRepository(inventory_change_1.InventoryChange);
40
+ const inventoryChange = await repository.findOne({
41
+ where: { domain: domain, name }
42
+ });
43
+ return await repository.save(Object.assign(Object.assign(Object.assign({}, inventoryChange), patch), { updater: user }));
44
+ }
45
+ async updateMultipleInventoryChange(patches, context) {
46
+ const { domain, user, tx } = context.state;
47
+ let results = [];
48
+ const _createRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === '+');
49
+ const _updateRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === 'M');
50
+ const inventoryChangeRepo = tx.getRepository(inventory_change_1.InventoryChange);
51
+ if (_createRecords.length > 0) {
52
+ for (let i = 0; i < _createRecords.length; i++) {
53
+ const newRecord = _createRecords[i];
54
+ const result = await inventoryChangeRepo.save(Object.assign(Object.assign({}, newRecord), { domain: domain, creator: user, updater: user }));
55
+ results.push(Object.assign(Object.assign({}, result), { cuFlag: '+' }));
56
+ }
57
+ }
58
+ if (_updateRecords.length > 0) {
59
+ for (let i = 0; i < _updateRecords.length; i++) {
60
+ const newRecord = _updateRecords[i];
61
+ const inventoryChange = await inventoryChangeRepo.findOne(newRecord.id);
62
+ const result = await inventoryChangeRepo.save(Object.assign(Object.assign(Object.assign({}, inventoryChange), newRecord), { updater: user }));
63
+ results.push(Object.assign(Object.assign({}, result), { cuFlag: 'M' }));
64
+ }
65
+ }
66
+ return results;
67
+ }
68
+ async deleteInventoryChange(name, context) {
69
+ const { domain, tx } = context.state;
70
+ await tx.getRepository(inventory_change_1.InventoryChange).delete({ domain: domain, name });
71
+ return true;
72
+ }
73
+ async deleteInventoryChanges(names, context) {
74
+ const { domain, tx } = context.state;
75
+ await tx.getRepository(inventory_change_1.InventoryChange).delete({
76
+ domain: domain,
77
+ name: (0, typeorm_1.In)(names)
78
+ });
79
+ return true;
80
+ }
81
+ async submitInventoryChanges(patches, context) {
82
+ var _a, _b, _c;
83
+ const { domain, user, tx } = context.state;
84
+ const _createRecords = patches.filter((patch) => !patch.id);
85
+ const _updateRecords = patches.filter((patch) => patch.id);
86
+ const inventoryChangeRepo = tx.getRepository(inventory_change_1.InventoryChange);
87
+ if (_createRecords.length > 0) {
88
+ for (let i = 0; i < _createRecords.length; i++) {
89
+ const newRecord = _createRecords[i];
90
+ var location = await tx.getRepository(location_1.Location).findOne({
91
+ where: { id: newRecord.id },
92
+ relations: ['warehouse']
93
+ });
94
+ newRecord.location = location;
95
+ // newRecord.zone = location.zone
96
+ // newRecord.warehouse = location.warehouse
97
+ newRecord.bizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(newRecord.bizplace.id);
98
+ var product = await tx.getRepository(product_base_1.Product).findOne(newRecord.product.id);
99
+ newRecord.product = product;
100
+ newRecord.status = 'PENDING';
101
+ newRecord.transactionType = 'NEW';
102
+ newRecord.expirationDate =
103
+ (((newRecord === null || newRecord === void 0 ? void 0 : newRecord.expirationDate) && new Date(newRecord.expirationDate).getFullYear()) || 0) < 2000
104
+ ? null
105
+ : newRecord.expirationDate;
106
+ await inventoryChangeRepo.save(Object.assign(Object.assign({}, newRecord), { id: undefined, name: utils_1.InventoryNoGenerator.inventoryName(), domain: domain, creator: user, updater: user }));
107
+ }
108
+ }
109
+ if (_updateRecords.length > 0) {
110
+ for (let i = 0; i < _updateRecords.length; i++) {
111
+ const updateRecord = _updateRecords[i];
112
+ let existingRecord = await tx.getRepository(inventory_1.Inventory).findOne({
113
+ where: { id: updateRecord.id },
114
+ relations: ['location', 'warehouse', 'product', 'bizplace']
115
+ });
116
+ if (!!((_a = updateRecord === null || updateRecord === void 0 ? void 0 : updateRecord.location) === null || _a === void 0 ? void 0 : _a.id)) {
117
+ var location = await tx.getRepository(location_1.Location).findOne({
118
+ where: { id: updateRecord.location.id },
119
+ relations: ['warehouse']
120
+ });
121
+ updateRecord.location = location;
122
+ // updateRecord.zone = location.zone
123
+ // updateRecord.warehouse = location.warehouse
124
+ }
125
+ if (!!((_b = updateRecord === null || updateRecord === void 0 ? void 0 : updateRecord.bizplace) === null || _b === void 0 ? void 0 : _b.id))
126
+ updateRecord.bizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(updateRecord.bizplace.id);
127
+ if (!!((_c = updateRecord === null || updateRecord === void 0 ? void 0 : updateRecord.product) === null || _c === void 0 ? void 0 : _c.id))
128
+ updateRecord.product = await tx.getRepository(product_base_1.Product).findOne(updateRecord.product.id);
129
+ updateRecord.status = 'PENDING';
130
+ updateRecord.transactionType = 'CHANGES';
131
+ updateRecord.expirationDate =
132
+ (((updateRecord === null || updateRecord === void 0 ? void 0 : updateRecord.expirationDate) && new Date(updateRecord.expirationDate).getFullYear()) || 0) < 2000
133
+ ? null
134
+ : updateRecord.expirationDate;
135
+ await inventoryChangeRepo.save(Object.assign(Object.assign({ palletId: existingRecord.palletId }, updateRecord), { id: undefined, name: utils_1.InventoryNoGenerator.inventoryName(), inventory: existingRecord, domain: domain, creator: user, updater: user }));
136
+ }
137
+ }
138
+ return true;
139
+ }
140
+ async approveInventoryChanges(patches, context) {
141
+ var _a, _b, _c;
142
+ const { domain, user, tx } = context.state;
143
+ // Get Selected Inventory Change Data
144
+ const _inventoryChanges = await tx.getRepository(inventory_change_1.InventoryChange).find({
145
+ where: { id: (0, typeorm_1.In)(patches.map(item => item.id)) },
146
+ relations: [
147
+ 'inventory',
148
+ 'inventory.bizplace',
149
+ 'inventory.bizplace.domain',
150
+ 'inventory.product',
151
+ 'inventory.location',
152
+ 'inventory.warehouse',
153
+ 'bizplace',
154
+ 'bizplace.domain',
155
+ 'bizplace.company',
156
+ 'bizplace.company.domain',
157
+ 'product',
158
+ 'product.productDetails',
159
+ 'product.productDetails.childProductDetail',
160
+ 'location'
161
+ ],
162
+ order: {
163
+ createdAt: 'ASC'
164
+ }
165
+ });
166
+ let arrLockedInventory = [];
167
+ if (_inventoryChanges.length > 0) {
168
+ let today = new Date(), year = today.getFullYear(), month = today.getMonth(), date = today.getDate();
169
+ for (let i = 0; i < _inventoryChanges.length; i++) {
170
+ if (_inventoryChanges[i].status.toLocaleLowerCase() != 'pending')
171
+ continue;
172
+ const newRecord = Object.assign({}, _inventoryChanges[i]), newHistoryRecord = Object.assign({}, _inventoryChanges[i]);
173
+ // Adjustment of existing Inventory
174
+ if (_inventoryChanges[i].inventory != null) {
175
+ let inventoryId = _inventoryChanges[i].inventory.id;
176
+ let inventory = await tx.getRepository(inventory_1.Inventory).findOne({
177
+ where: { id: inventoryId },
178
+ relations: [
179
+ 'domain',
180
+ 'bizplace',
181
+ 'bizplace.domain',
182
+ 'bizplace.company',
183
+ 'bizplace.company.domain',
184
+ 'product',
185
+ 'product.productDetails',
186
+ 'product.productDetails.childProductDetail',
187
+ 'warehouse',
188
+ 'location',
189
+ 'creator',
190
+ 'updater'
191
+ ]
192
+ });
193
+ const customerDomain = inventory.bizplace.domain;
194
+ // Check for locked inventory, and stop from udpating inventory
195
+ if (inventory.lockedQty > 0) {
196
+ arrLockedInventory.push(_inventoryChanges[i]);
197
+ continue;
198
+ }
199
+ // Check for Terminated inventory, then update InventoryChange entity, and stop from udpating inventory
200
+ if (inventory.status == constants_1.INVENTORY_STATUS.TERMINATED) {
201
+ _inventoryChanges[i] = Object.assign(Object.assign({}, _inventoryChanges[i]), { status: 'TERMINATED' });
202
+ continue;
203
+ }
204
+ let lastSeq = inventory.lastSeq, transactionType = '';
205
+ newHistoryRecord.openingQty = inventory.qty;
206
+ newHistoryRecord.openingUomValue = inventory.uomValue;
207
+ // Get last row of InventoryHistory
208
+ let latestEntry = await tx.getRepository(inventory_history_1.InventoryHistory).findOne({
209
+ where: { palletId: inventory.palletId, domain: domain },
210
+ order: { seq: 'DESC' }
211
+ });
212
+ _inventoryChanges[i].lastInventoryHistory = latestEntry;
213
+ // Check Change of existing inventory location
214
+ if (newRecord.location && newRecord.location.id != inventory.location.id) {
215
+ newRecord.zone = newRecord.location.zone;
216
+ newRecord.warehouse = newRecord.location.warehouse;
217
+ transactionType = 'ADJUSTMENT';
218
+ // Check and set current location status
219
+ let currentLocationInventoryCount = await tx.getRepository(inventory_1.Inventory).count({
220
+ where: { location: inventory.location, status: 'STORED', id: (0, typeorm_1.Not)(inventory.id) }
221
+ });
222
+ if (currentLocationInventoryCount == 0) {
223
+ let currentLocation = await tx.getRepository(location_1.Location).findOne({
224
+ where: { id: inventory.location.id }
225
+ });
226
+ await tx.getRepository(location_1.Location).save(Object.assign(Object.assign({}, currentLocation), { status: constants_1.LOCATION_STATUS.EMPTY }));
227
+ }
228
+ }
229
+ // Check Change of existing inventory quantity
230
+ if (newRecord.qty != null && newRecord.qty != inventory.qty) {
231
+ newHistoryRecord.qty = newRecord.qty - inventory.qty;
232
+ if (newRecord.qty < 1) {
233
+ newRecord.qty = 0;
234
+ newRecord.uomValue = 0;
235
+ }
236
+ transactionType = 'ADJUSTMENT';
237
+ }
238
+ else {
239
+ newHistoryRecord.qty = 0;
240
+ }
241
+ // Check Change of existing inventory uomValue
242
+ if (newRecord.uomValue != null && newRecord.uomValue != inventory.uomValue) {
243
+ newHistoryRecord.uomValue = newRecord.uomValue - inventory.uomValue;
244
+ Math.round(newHistoryRecord.uomValue * 100) / 100;
245
+ if (newRecord.uomValue < 1) {
246
+ newRecord.uomValue = 0;
247
+ }
248
+ transactionType = 'ADJUSTMENT';
249
+ }
250
+ else {
251
+ newHistoryRecord.uomValue = 0;
252
+ }
253
+ // Terminate current inventory history if there is change of bizplace, product, batchId, packingType, or uom
254
+ if ((newRecord.bizplace && inventory.bizplace.id !== newRecord.bizplace.id) ||
255
+ (newRecord.product && inventory.product.id !== newRecord.product.id) ||
256
+ (newRecord.batchId && inventory.batchId !== newRecord.batchId) ||
257
+ (newRecord.packingType && inventory.packingType !== newRecord.packingType) ||
258
+ (newRecord.uom && inventory.uom !== newRecord.uom)) {
259
+ transactionType = 'ADJUSTMENT';
260
+ lastSeq = lastSeq + 1;
261
+ let inventoryHistory = Object.assign(Object.assign({}, inventory), { domain: domain, bizplace: inventory.bizplace.id, openingQty: inventory.qty, openingUomValue: inventory.uomValue, qty: -inventory.qty || 0, uom: inventory.uom, uomValue: -inventory.uomValue || 0, name: utils_1.InventoryNoGenerator.inventoryHistoryName(), seq: lastSeq, transactionType: transactionType, status: constants_1.INVENTORY_STATUS.TERMINATED, productId: inventory.product.id, warehouseId: inventory.warehouse.id, locationId: inventory.location.id, packingType: inventory.packingType, creator: user, updater: user });
262
+ delete inventoryHistory.id;
263
+ delete inventoryHistory.createdAt;
264
+ delete inventoryHistory.updatedAt;
265
+ await tx.getRepository(inventory_history_1.InventoryHistory).save(inventoryHistory);
266
+ newHistoryRecord.qty = newRecord.qty != null ? newRecord.qty : inventory.qty || 0;
267
+ newHistoryRecord.uomValue = newRecord.uomValue != null ? newRecord.uomValue : inventory.uomValue || 0;
268
+ newHistoryRecord.openingQty = 0;
269
+ newHistoryRecord.openingUomValue = 0;
270
+ }
271
+ // Set and update inventory and inventory history data
272
+ lastSeq = lastSeq + 1;
273
+ clean(newHistoryRecord);
274
+ let inventoryHistory = Object.assign(Object.assign(Object.assign({}, inventory), newHistoryRecord), { domain: domain, creator: user, updater: user, name: utils_1.InventoryNoGenerator.inventoryHistoryName(), status: 'STORED', seq: lastSeq, transactionType: transactionType == '' ? 'ADJUSTMENT' : transactionType, productId: newRecord.product ? newRecord.product.id : inventory.product.id, warehouseId: newRecord.warehouse ? newRecord.warehouse.id : inventory.warehouse.id, locationId: newRecord.location && newRecord.location.id != inventory.location.id
275
+ ? newRecord.location.id
276
+ : inventory.location.id, uom: newRecord.uom != null ? newRecord.uom : inventory.uom });
277
+ delete inventoryHistory.id;
278
+ delete inventoryHistory.createdAt;
279
+ delete inventoryHistory.updatedAt;
280
+ await tx.getRepository(inventory_history_1.InventoryHistory).save(inventoryHistory);
281
+ if (newRecord.qty != null && newRecord.qty == 0) {
282
+ ++lastSeq;
283
+ delete inventoryHistory.id;
284
+ inventoryHistory = Object.assign(Object.assign({}, inventoryHistory), { name: utils_1.InventoryNoGenerator.inventoryHistoryName(), qty: 0, uomValue: 0, openingQty: 0, openingUomValue: 0, seq: lastSeq, transactionType: 'TERMINATED', status: 'TERMINATED' });
285
+ await tx.getRepository(inventory_history_1.InventoryHistory).save(inventoryHistory);
286
+ }
287
+ clean(newRecord);
288
+ await tx.getRepository(inventory_1.Inventory).save(Object.assign(Object.assign(Object.assign({}, inventory), newRecord), { id: inventoryId, status: (newRecord.qty != null ? newRecord.qty : inventory.qty) > 0 ? 'STORED' : 'TERMINATED', updater: user, lastSeq: lastSeq }));
289
+ //Check and set latest location status
290
+ if (newRecord.qty != null ? newRecord.qty : inventory.qty > 0) {
291
+ var location = await tx.getRepository(location_1.Location).findOne({
292
+ where: { id: newRecord.location ? newRecord.location.id : inventory.location.id }
293
+ });
294
+ await tx.getRepository(location_1.Location).save(Object.assign(Object.assign({}, location), { status: constants_1.LOCATION_STATUS.OCCUPIED }));
295
+ }
296
+ else {
297
+ let latestLocationInventoryCount = await tx.getRepository(inventory_1.Inventory).count({
298
+ where: {
299
+ location: newRecord.location ? newRecord.location.id : inventory.location.id,
300
+ status: 'STORED',
301
+ id: (0, typeorm_1.Not)(inventory.id)
302
+ }
303
+ });
304
+ if (latestLocationInventoryCount == 0) {
305
+ let latestLocation = await tx.getRepository(location_1.Location).findOne({
306
+ where: { id: newRecord.location ? newRecord.location.id : inventory.location.id }
307
+ });
308
+ await tx.getRepository(location_1.Location).save(Object.assign(Object.assign({}, latestLocation), { status: constants_1.LOCATION_STATUS.EMPTY }));
309
+ }
310
+ }
311
+ const sellercraft = await tx
312
+ .getRepository(integration_sellercraft_1.Sellercraft)
313
+ .findOne({ domain: customerDomain, status: integration_sellercraft_1.SellercraftStatus.ACTIVE });
314
+ const companyDomain = (_a = inventory.bizplace) === null || _a === void 0 ? void 0 : _a.company.domain;
315
+ if (sellercraft) {
316
+ const sellercraftCtrl = new controllers_1.SellercraftController(tx, domain, user);
317
+ await sellercraftCtrl.updateSellercraftStock(sellercraft, inventory);
318
+ }
319
+ // check for any existing active marketplace connection, update marketplace selling qty
320
+ const marketplaceStores = await tx.getRepository(integration_marketplace_1.MarketplaceStore).find({
321
+ where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
322
+ relations: ['marketplaceDistributors']
323
+ });
324
+ if ((marketplaceStores === null || marketplaceStores === void 0 ? void 0 : marketplaceStores.length) && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
325
+ const ecommerceCtrl = new controllers_1.EcommerceController(tx, domain, user);
326
+ await ecommerceCtrl.updateProductVariationStock(marketplaceStores, inventory.product.id, companyDomain);
327
+ }
328
+ }
329
+ // Adding Inventory
330
+ else {
331
+ const total = await tx.getRepository(inventory_1.Inventory).count({
332
+ createdAt: (0, typeorm_1.MoreThan)(new Date(year, month, date))
333
+ });
334
+ const yy = String(year).substr(String(year).length - 2);
335
+ const mm = String(month + 1).padStart(2, '0');
336
+ const dd = String(date).padStart(2, '0');
337
+ const dateStr = yy + mm + dd;
338
+ let palletId = await (0, id_rule_base_1.generateId)({
339
+ domain: domain,
340
+ type: 'adjustment_pallet_id',
341
+ seed: {
342
+ batchId: newRecord.batchId,
343
+ date: dateStr
344
+ }
345
+ });
346
+ if (!palletId)
347
+ throw new Error('No adjustment pallet id setting rule found');
348
+ var location = await tx.getRepository(location_1.Location).findOne({
349
+ where: { id: newRecord.location.id },
350
+ relations: ['warehouse']
351
+ });
352
+ newRecord.location = location;
353
+ newRecord.zone = location.zone;
354
+ newRecord.warehouse = location.warehouse;
355
+ newRecord.status = constants_1.INVENTORY_STATUS.STORED;
356
+ newRecord.name = palletId;
357
+ newRecord.palletId = palletId;
358
+ const warehouseCartonSetting = await tx.getRepository(setting_base_1.Setting).findOne({
359
+ where: { domain, category: 'id-rule', name: 'enable-carton-label' }
360
+ });
361
+ const partnerCartonSetting = await tx.getRepository(setting_base_1.PartnerSetting).findOne({
362
+ where: { setting: warehouseCartonSetting, domain, partnerDomain: (_b = newRecord.bizplace) === null || _b === void 0 ? void 0 : _b.domain }
363
+ });
364
+ if (partnerCartonSetting === null || partnerCartonSetting === void 0 ? void 0 : partnerCartonSetting.value) {
365
+ let cartonId = await (0, id_rule_base_1.generateId)({
366
+ domain: domain,
367
+ type: 'adjustment_carton_id',
368
+ seed: { date: dateStr }
369
+ });
370
+ if (!cartonId)
371
+ throw new Error('No adjustment carton id setting rule found');
372
+ newRecord.cartonId = cartonId;
373
+ }
374
+ let expirationDate = (((newRecord === null || newRecord === void 0 ? void 0 : newRecord.expirationDate) && new Date(newRecord.expirationDate).getFullYear()) || 0) < 2000
375
+ ? null
376
+ : newRecord.expirationDate;
377
+ let savedInventory = await tx.getRepository(inventory_1.Inventory).save(Object.assign(Object.assign({}, newRecord), { expirationDate, domain: domain, creator: user, updater: user, lastSeq: 0 }));
378
+ await tx.getRepository(inventory_history_1.InventoryHistory).save(Object.assign(Object.assign({}, newRecord), { domain: domain, creator: user, updater: user, name: utils_1.InventoryNoGenerator.inventoryHistoryName(), seq: 0, transactionType: 'NEW', productId: newRecord.product.id, warehouseId: newRecord.warehouse.id, locationId: newRecord.location.id, inventory: savedInventory, expirationDate: expirationDate }));
379
+ await tx.getRepository(location_1.Location).save(Object.assign(Object.assign({}, location), { status: constants_1.LOCATION_STATUS.OCCUPIED }));
380
+ _inventoryChanges[i].inventory = savedInventory;
381
+ _inventoryChanges[i].palletId = savedInventory.palletId;
382
+ const sellercraft = await tx
383
+ .getRepository(integration_sellercraft_1.Sellercraft)
384
+ .findOne({ domain: newRecord.bizplace.domain, status: integration_sellercraft_1.SellercraftStatus.ACTIVE });
385
+ const companyDomain = (_c = newRecord.bizplace) === null || _c === void 0 ? void 0 : _c.company.domain;
386
+ if (sellercraft) {
387
+ const sellercraftCtrl = new controllers_1.SellercraftController(tx, domain, user);
388
+ await sellercraftCtrl.updateSellercraftStock(sellercraft, newRecord);
389
+ }
390
+ // update marketplace store qty
391
+ // check for any existing active marketplace connection, update marketplace selling qty
392
+ const marketplaceStores = await tx.getRepository(integration_marketplace_1.MarketplaceStore).find({
393
+ where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
394
+ relations: ['marketplaceDistributors']
395
+ });
396
+ if ((marketplaceStores === null || marketplaceStores === void 0 ? void 0 : marketplaceStores.length) && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
397
+ const ecommerceCtrl = new controllers_1.EcommerceController(tx, domain, user);
398
+ await ecommerceCtrl.updateProductVariationStock(marketplaceStores, newRecord.product.id, companyDomain);
399
+ }
400
+ }
401
+ _inventoryChanges[i].status = 'APPROVED';
402
+ }
403
+ await tx.getRepository(inventory_change_1.InventoryChange).save(_inventoryChanges);
404
+ }
405
+ return { items: arrLockedInventory, total: arrLockedInventory.length };
406
+ }
407
+ async rejectInventoryChanges(patches, context) {
408
+ const { domain, tx } = context.state;
409
+ const _inventoryChanges = await tx.getRepository(inventory_change_1.InventoryChange).find({
410
+ where: { id: (0, typeorm_1.In)(patches.map(item => item.id)) },
411
+ relations: [
412
+ 'inventory',
413
+ 'inventory.bizplace',
414
+ 'inventory.product',
415
+ 'inventory.location',
416
+ 'inventory.warehouse',
417
+ 'bizplace',
418
+ 'product',
419
+ 'location'
420
+ ]
421
+ });
422
+ if (_inventoryChanges.length > 0) {
423
+ for (let i = 0; i < _inventoryChanges.length; i++) {
424
+ if (_inventoryChanges[i].status.toLocaleLowerCase() != 'pending')
425
+ return true;
426
+ _inventoryChanges[i].status = 'REJECTED';
427
+ // Get last row of InventoryHistory
428
+ let latestEntry = await tx.getRepository(inventory_history_1.InventoryHistory).find({
429
+ where: { palletId: _inventoryChanges[i].palletId, domain: domain },
430
+ order: { seq: 'DESC' },
431
+ take: 1
432
+ });
433
+ if (latestEntry.length > 0)
434
+ _inventoryChanges[i].lastInventoryHistory = latestEntry[0];
435
+ }
436
+ await tx.getRepository(inventory_change_1.InventoryChange).save(_inventoryChanges.filter(change => change.status == 'REJECTED'));
437
+ }
438
+ return true;
439
+ }
440
+ };
441
+ __decorate([
442
+ (0, type_graphql_1.Directive)('@transaction'),
443
+ (0, type_graphql_1.Mutation)(returns => inventory_change_1.InventoryChange),
444
+ __param(0, (0, type_graphql_1.Arg)('inventoryChange')),
445
+ __param(1, (0, type_graphql_1.Ctx)()),
446
+ __metadata("design:type", Function),
447
+ __metadata("design:paramtypes", [inventory_change_types_1.NewInventoryChange, Object]),
448
+ __metadata("design:returntype", Promise)
449
+ ], InventoryChangeMutation.prototype, "createInventoryChange", null);
450
+ __decorate([
451
+ (0, type_graphql_1.Directive)('@transaction'),
452
+ (0, type_graphql_1.Mutation)(returns => inventory_change_1.InventoryChange),
453
+ __param(0, (0, type_graphql_1.Arg)('name')),
454
+ __param(1, (0, type_graphql_1.Arg)('patch')),
455
+ __param(2, (0, type_graphql_1.Ctx)()),
456
+ __metadata("design:type", Function),
457
+ __metadata("design:paramtypes", [String, inventory_change_types_1.InventoryChangePatch, Object]),
458
+ __metadata("design:returntype", Promise)
459
+ ], InventoryChangeMutation.prototype, "updateInventoryChange", null);
460
+ __decorate([
461
+ (0, type_graphql_1.Directive)('@transaction'),
462
+ (0, type_graphql_1.Mutation)(returns => [inventory_change_1.InventoryChange]),
463
+ __param(0, (0, type_graphql_1.Arg)('patches', type => [inventory_change_types_1.InventoryChangePatch])),
464
+ __param(1, (0, type_graphql_1.Ctx)()),
465
+ __metadata("design:type", Function),
466
+ __metadata("design:paramtypes", [Array, Object]),
467
+ __metadata("design:returntype", Promise)
468
+ ], InventoryChangeMutation.prototype, "updateMultipleInventoryChange", null);
469
+ __decorate([
470
+ (0, type_graphql_1.Directive)('@transaction'),
471
+ (0, type_graphql_1.Mutation)(returns => Boolean),
472
+ __param(0, (0, type_graphql_1.Arg)('name')),
473
+ __param(1, (0, type_graphql_1.Ctx)()),
474
+ __metadata("design:type", Function),
475
+ __metadata("design:paramtypes", [String, Object]),
476
+ __metadata("design:returntype", Promise)
477
+ ], InventoryChangeMutation.prototype, "deleteInventoryChange", null);
478
+ __decorate([
479
+ (0, type_graphql_1.Directive)('@transaction'),
480
+ (0, type_graphql_1.Mutation)(returns => Boolean),
481
+ __param(0, (0, type_graphql_1.Arg)('names', type => [String])),
482
+ __param(1, (0, type_graphql_1.Ctx)()),
483
+ __metadata("design:type", Function),
484
+ __metadata("design:paramtypes", [Array, Object]),
485
+ __metadata("design:returntype", Promise)
486
+ ], InventoryChangeMutation.prototype, "deleteInventoryChanges", null);
487
+ __decorate([
488
+ (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "mutation")'),
489
+ (0, type_graphql_1.Directive)('@transaction'),
490
+ (0, type_graphql_1.Mutation)(returns => Boolean),
491
+ __param(0, (0, type_graphql_1.Arg)('patches', type => [inventory_change_types_1.InventoryChangePatch])),
492
+ __param(1, (0, type_graphql_1.Ctx)()),
493
+ __metadata("design:type", Function),
494
+ __metadata("design:paramtypes", [Array, Object]),
495
+ __metadata("design:returntype", Promise)
496
+ ], InventoryChangeMutation.prototype, "submitInventoryChanges", null);
497
+ __decorate([
498
+ (0, type_graphql_1.Directive)('@privilege(category: "inventory_adjustment_approval", privilege: "mutation")'),
499
+ (0, type_graphql_1.Directive)('@transaction'),
500
+ (0, type_graphql_1.Mutation)(returns => inventory_change_types_1.InventoryChangeList),
501
+ __param(0, (0, type_graphql_1.Arg)('patches', type => [inventory_change_types_1.InventoryChangePatch])),
502
+ __param(1, (0, type_graphql_1.Ctx)()),
503
+ __metadata("design:type", Function),
504
+ __metadata("design:paramtypes", [Array, Object]),
505
+ __metadata("design:returntype", Promise)
506
+ ], InventoryChangeMutation.prototype, "approveInventoryChanges", null);
507
+ __decorate([
508
+ (0, type_graphql_1.Directive)('@privilege(category: "inventory_adjustment_approval", privilege: "mutation")'),
509
+ (0, type_graphql_1.Directive)('@transaction'),
510
+ (0, type_graphql_1.Mutation)(returns => Boolean),
511
+ __param(0, (0, type_graphql_1.Arg)('patches', type => [inventory_change_types_1.InventoryChangePatch])),
512
+ __param(1, (0, type_graphql_1.Ctx)()),
513
+ __metadata("design:type", Function),
514
+ __metadata("design:paramtypes", [Array, Object]),
515
+ __metadata("design:returntype", Promise)
516
+ ], InventoryChangeMutation.prototype, "rejectInventoryChanges", null);
517
+ InventoryChangeMutation = __decorate([
518
+ (0, type_graphql_1.Resolver)(inventory_change_1.InventoryChange)
519
+ ], InventoryChangeMutation);
520
+ exports.InventoryChangeMutation = InventoryChangeMutation;
521
+ function clean(obj) {
522
+ var propNames = Object.getOwnPropertyNames(obj);
523
+ for (var i = 0; i < propNames.length; i++) {
524
+ var propName = propNames[i];
525
+ if (obj[propName] === null || obj[propName] === undefined) {
526
+ delete obj[propName];
527
+ }
528
+ }
529
+ }
530
+ //# sourceMappingURL=inventory-change-mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-change-mutation.js","sourceRoot":"","sources":["../../../server/service/inventory-change/inventory-change-mutation.ts"],"names":[],"mappings":"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"}