@things-factory/worksheet-base 8.0.0-beta.8 → 8.0.0

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 (288) hide show
  1. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +2 -0
  2. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  3. package/dist-server/graphql/resolvers/worksheet/vas-candidates.d.ts +2 -0
  4. package/dist-server/tsconfig.tsbuildinfo +1 -1
  5. package/dist-server/utils/inventory-util.d.ts +2 -0
  6. package/package.json +17 -17
  7. package/server/constants/index.ts +5 -0
  8. package/server/constants/rule-type.ts +4 -0
  9. package/server/constants/target-type.ts +6 -0
  10. package/server/constants/template.ts +12 -0
  11. package/server/constants/transaction-type.ts +9 -0
  12. package/server/constants/worksheet.ts +38 -0
  13. package/server/controllers/ecommerce/ecommerce-controller.ts +209 -0
  14. package/server/controllers/ecommerce/index.ts +2 -0
  15. package/server/controllers/ecommerce/sellercraft-controller.ts +358 -0
  16. package/server/controllers/inbound/index.ts +4 -0
  17. package/server/controllers/inbound/putaway-returning-worksheet-controller.ts +450 -0
  18. package/server/controllers/inbound/putaway-worksheet-controller.ts +454 -0
  19. package/server/controllers/inbound/unloading-returning-worksheet-controller.ts +291 -0
  20. package/server/controllers/inbound/unloading-worksheet-controller.ts +1400 -0
  21. package/server/controllers/index.ts +21 -0
  22. package/server/controllers/inspect/cycle-count-worksheet-controller.ts +537 -0
  23. package/server/controllers/inspect/index.ts +1 -0
  24. package/server/controllers/outbound/index.ts +5 -0
  25. package/server/controllers/outbound/loading-worksheet-controller.ts +377 -0
  26. package/server/controllers/outbound/packing-worksheet-controller.ts +449 -0
  27. package/server/controllers/outbound/picking-worksheet-controller.ts +1769 -0
  28. package/server/controllers/outbound/returning-worksheet-controller.ts +254 -0
  29. package/server/controllers/outbound/sorting-worksheet-controller.ts +554 -0
  30. package/server/controllers/render-elccl-grn.ts +228 -0
  31. package/server/controllers/render-fm-grn.ts +287 -0
  32. package/server/controllers/render-grn.ts +285 -0
  33. package/server/controllers/render-invoices.ts +201 -0
  34. package/server/controllers/render-job-sheet.ts +208 -0
  35. package/server/controllers/render-kimeda-grn.ts +185 -0
  36. package/server/controllers/render-manifest.ts +76 -0
  37. package/server/controllers/render-manual-do.ts +227 -0
  38. package/server/controllers/render-orientage-do.ts +376 -0
  39. package/server/controllers/render-orientage-grn.ts +191 -0
  40. package/server/controllers/render-po.ts +182 -0
  41. package/server/controllers/render-ro-do.ts +404 -0
  42. package/server/controllers/render-seebuu-grn.ts +208 -0
  43. package/server/controllers/vas/index.ts +1 -0
  44. package/server/controllers/vas/vas-worksheet-controller.ts +848 -0
  45. package/server/controllers/worksheet-controller.ts +1267 -0
  46. package/server/entities/index.ts +8 -0
  47. package/server/entities/warehouse-bizplace-onhand-inventory.ts +148 -0
  48. package/server/entities/worksheet-detail.ts +106 -0
  49. package/server/entities/worksheet-movement.ts +34 -0
  50. package/server/entities/worksheet.ts +100 -0
  51. package/server/graphql/index.ts +7 -0
  52. package/server/graphql/resolvers/index.ts +8 -0
  53. package/server/graphql/resolvers/pallet/index.ts +7 -0
  54. package/server/graphql/resolvers/pallet/pallet-outbound.ts +92 -0
  55. package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +137 -0
  56. package/server/graphql/resolvers/worksheet/cancel-draft-release-order.ts +20 -0
  57. package/server/graphql/resolvers/worksheet/check-inventory-release.ts +37 -0
  58. package/server/graphql/resolvers/worksheet/check-stock-take-current-location.ts +63 -0
  59. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +213 -0
  60. package/server/graphql/resolvers/worksheet/create-worksheet.ts +21 -0
  61. package/server/graphql/resolvers/worksheet/cross-dock-picking.ts +173 -0
  62. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +211 -0
  63. package/server/graphql/resolvers/worksheet/cycle-count-worksheet.ts +79 -0
  64. package/server/graphql/resolvers/worksheet/delete-worksheet.ts +21 -0
  65. package/server/graphql/resolvers/worksheet/delivery-order-by-worksheet.ts +104 -0
  66. package/server/graphql/resolvers/worksheet/fetch-delivery-order-ro.ts +191 -0
  67. package/server/graphql/resolvers/worksheet/fetch-sellercraft-document.ts +69 -0
  68. package/server/graphql/resolvers/worksheet/find-release-orders-by-task-no.ts +36 -0
  69. package/server/graphql/resolvers/worksheet/find-release-orders-by-worksheet-no.ts +29 -0
  70. package/server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.ts +80 -0
  71. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts +100 -0
  72. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.ts +26 -0
  73. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts +51 -0
  74. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +17 -0
  75. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-return-worksheet.ts +69 -0
  76. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-worksheet.ts +65 -0
  77. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-putaway-worksheet.ts +54 -0
  78. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +114 -0
  79. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.ts +45 -0
  80. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.ts +35 -0
  81. package/server/graphql/resolvers/worksheet/generate-worksheet/index.ts +23 -0
  82. package/server/graphql/resolvers/worksheet/having-vas.ts +45 -0
  83. package/server/graphql/resolvers/worksheet/index.ts +142 -0
  84. package/server/graphql/resolvers/worksheet/inspecting/activate-cycle-count.ts +24 -0
  85. package/server/graphql/resolvers/worksheet/inspecting/add-extra-pallet.ts +49 -0
  86. package/server/graphql/resolvers/worksheet/inspecting/check-missing-pallet.ts +18 -0
  87. package/server/graphql/resolvers/worksheet/inspecting/complete-inspection.ts +41 -0
  88. package/server/graphql/resolvers/worksheet/inspecting/index.ts +17 -0
  89. package/server/graphql/resolvers/worksheet/inspecting/inspecting.ts +30 -0
  90. package/server/graphql/resolvers/worksheet/inspecting/relocate-pallet.ts +46 -0
  91. package/server/graphql/resolvers/worksheet/inspecting/undo-inspection.ts +23 -0
  92. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +150 -0
  93. package/server/graphql/resolvers/worksheet/loaded-inventories.ts +40 -0
  94. package/server/graphql/resolvers/worksheet/loading/activate-loading.ts +73 -0
  95. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +165 -0
  96. package/server/graphql/resolvers/worksheet/loading/index.ts +11 -0
  97. package/server/graphql/resolvers/worksheet/loading/loading.ts +46 -0
  98. package/server/graphql/resolvers/worksheet/loading/undo-loading.ts +25 -0
  99. package/server/graphql/resolvers/worksheet/loading-worksheet.ts +150 -0
  100. package/server/graphql/resolvers/worksheet/not-tally-target-inventories.ts +34 -0
  101. package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +69 -0
  102. package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +102 -0
  103. package/server/graphql/resolvers/worksheet/packing/index.ts +13 -0
  104. package/server/graphql/resolvers/worksheet/packing/packing.ts +59 -0
  105. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +70 -0
  106. package/server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.ts +24 -0
  107. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +378 -0
  108. package/server/graphql/resolvers/worksheet/palletizing-pallets.ts +142 -0
  109. package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +234 -0
  110. package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +40 -0
  111. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +98 -0
  112. package/server/graphql/resolvers/worksheet/picking/assign-picking-inventories.ts +50 -0
  113. package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +44 -0
  114. package/server/graphql/resolvers/worksheet/picking/batch-picking.ts +32 -0
  115. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +137 -0
  116. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +282 -0
  117. package/server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts +121 -0
  118. package/server/graphql/resolvers/worksheet/picking/index.ts +31 -0
  119. package/server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.ts +35 -0
  120. package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +96 -0
  121. package/server/graphql/resolvers/worksheet/picking/picking.ts +55 -0
  122. package/server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.ts +52 -0
  123. package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +25 -0
  124. package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +25 -0
  125. package/server/graphql/resolvers/worksheet/picking/undo-picking-assignment.ts +31 -0
  126. package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +24 -0
  127. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +147 -0
  128. package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +242 -0
  129. package/server/graphql/resolvers/worksheet/putaway/activate-putaway.ts +51 -0
  130. package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +105 -0
  131. package/server/graphql/resolvers/worksheet/putaway/index.ts +11 -0
  132. package/server/graphql/resolvers/worksheet/putaway/putaway.ts +26 -0
  133. package/server/graphql/resolvers/worksheet/putaway/undo-putaway.ts +25 -0
  134. package/server/graphql/resolvers/worksheet/putaway-return/activate-putaway-return.ts +55 -0
  135. package/server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.ts +38 -0
  136. package/server/graphql/resolvers/worksheet/putaway-return/index.ts +11 -0
  137. package/server/graphql/resolvers/worksheet/putaway-return/putaway-return.ts +30 -0
  138. package/server/graphql/resolvers/worksheet/putaway-return/undo-putaway-return.ts +29 -0
  139. package/server/graphql/resolvers/worksheet/putaway-returning-worksheet.ts +83 -0
  140. package/server/graphql/resolvers/worksheet/putaway-worksheet.ts +82 -0
  141. package/server/graphql/resolvers/worksheet/recommend-putway-location.ts +133 -0
  142. package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +186 -0
  143. package/server/graphql/resolvers/worksheet/relocate-pallet.ts +67 -0
  144. package/server/graphql/resolvers/worksheet/replace-picking-pallets.ts +127 -0
  145. package/server/graphql/resolvers/worksheet/return-worksheet.ts +70 -0
  146. package/server/graphql/resolvers/worksheet/returning/activate-return.ts +24 -0
  147. package/server/graphql/resolvers/worksheet/returning/complete-return.ts +39 -0
  148. package/server/graphql/resolvers/worksheet/returning/index.ts +9 -0
  149. package/server/graphql/resolvers/worksheet/returning/returning.ts +26 -0
  150. package/server/graphql/resolvers/worksheet/sorting/activate-sorting.ts +25 -0
  151. package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +40 -0
  152. package/server/graphql/resolvers/worksheet/sorting/complete-worksheet-sorting.ts +23 -0
  153. package/server/graphql/resolvers/worksheet/sorting/index.ts +13 -0
  154. package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +31 -0
  155. package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +32 -0
  156. package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +87 -0
  157. package/server/graphql/resolvers/worksheet/transfer.ts +176 -0
  158. package/server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.ts +54 -0
  159. package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +78 -0
  160. package/server/graphql/resolvers/worksheet/unloading/activate-unloading.ts +56 -0
  161. package/server/graphql/resolvers/worksheet/unloading/complete-product-scan-unload.ts +25 -0
  162. package/server/graphql/resolvers/worksheet/unloading/complete-unloading-partially.ts +25 -0
  163. package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +76 -0
  164. package/server/graphql/resolvers/worksheet/unloading/index.ts +21 -0
  165. package/server/graphql/resolvers/worksheet/unloading/scan-product-unload.ts +26 -0
  166. package/server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.ts +26 -0
  167. package/server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.ts +24 -0
  168. package/server/graphql/resolvers/worksheet/unloading/undo-unloading.ts +25 -0
  169. package/server/graphql/resolvers/worksheet/unloading/unload.ts +26 -0
  170. package/server/graphql/resolvers/worksheet/unloading-return/activate-unloading-return.ts +28 -0
  171. package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-return-partially.ts +29 -0
  172. package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.ts +91 -0
  173. package/server/graphql/resolvers/worksheet/unloading-return/index.ts +9 -0
  174. package/server/graphql/resolvers/worksheet/unloading-return-worksheet.ts +75 -0
  175. package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +98 -0
  176. package/server/graphql/resolvers/worksheet/update-worksheet.ts +25 -0
  177. package/server/graphql/resolvers/worksheet/vas/activate-vas.ts +25 -0
  178. package/server/graphql/resolvers/worksheet/vas/assign-vas-inventories.ts +25 -0
  179. package/server/graphql/resolvers/worksheet/vas/complete-vas.ts +72 -0
  180. package/server/graphql/resolvers/worksheet/vas/execute-vas.ts +31 -0
  181. package/server/graphql/resolvers/worksheet/vas/index.ts +15 -0
  182. package/server/graphql/resolvers/worksheet/vas/undo-vas-inventory.ts +24 -0
  183. package/server/graphql/resolvers/worksheet/vas/undo-vas.ts +24 -0
  184. package/server/graphql/resolvers/worksheet/vas-candidates.ts +177 -0
  185. package/server/graphql/resolvers/worksheet/vas-inventories.ts +41 -0
  186. package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +1182 -0
  187. package/server/graphql/resolvers/worksheet/vas-transactions/index.ts +5 -0
  188. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.ts +56 -0
  189. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/relabeling.ts +20 -0
  190. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.ts +27 -0
  191. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/repalletizing.ts +14 -0
  192. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/unpacking.ts +14 -0
  193. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.ts +96 -0
  194. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.ts +93 -0
  195. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.ts +4 -0
  196. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.ts +105 -0
  197. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.ts +40 -0
  198. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts +236 -0
  199. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.ts +3 -0
  200. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts +402 -0
  201. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts +166 -0
  202. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.ts +116 -0
  203. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.ts +3 -0
  204. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.ts +167 -0
  205. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.ts +74 -0
  206. package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.ts +20 -0
  207. package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.ts +2 -0
  208. package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.ts +164 -0
  209. package/server/graphql/resolvers/worksheet/vas-worksheet.ts +110 -0
  210. package/server/graphql/resolvers/worksheet/worksheet-by-order-no.ts +43 -0
  211. package/server/graphql/resolvers/worksheet/worksheet-with-pagination.ts +46 -0
  212. package/server/graphql/resolvers/worksheet/worksheet.ts +330 -0
  213. package/server/graphql/resolvers/worksheet/worksheets.ts +493 -0
  214. package/server/graphql/resolvers/worksheet-detail/check-progressing-pallet.ts +22 -0
  215. package/server/graphql/resolvers/worksheet-detail/create-worksheet-detail.ts +38 -0
  216. package/server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.ts +18 -0
  217. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +206 -0
  218. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +165 -0
  219. package/server/graphql/resolvers/worksheet-detail/generate-carton-id.ts +26 -0
  220. package/server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts +94 -0
  221. package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +259 -0
  222. package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +142 -0
  223. package/server/graphql/resolvers/worksheet-detail/index.ts +34 -0
  224. package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +165 -0
  225. package/server/graphql/resolvers/worksheet-detail/update-worksheet-detail.ts +39 -0
  226. package/server/graphql/resolvers/worksheet-detail/worksheet-detail.ts +19 -0
  227. package/server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.ts +56 -0
  228. package/server/graphql/resolvers/worksheet-detail/worksheet-details.ts +21 -0
  229. package/server/graphql/resolvers/worksheet-movement/create-worksheet-movement.ts +17 -0
  230. package/server/graphql/resolvers/worksheet-movement/delete-worksheet-movement.ts +12 -0
  231. package/server/graphql/resolvers/worksheet-movement/index.ts +17 -0
  232. package/server/graphql/resolvers/worksheet-movement/update-worksheet-movement.ts +15 -0
  233. package/server/graphql/resolvers/worksheet-movement/worksheet-movement.ts +10 -0
  234. package/server/graphql/resolvers/worksheet-movement/worksheet-movements.ts +14 -0
  235. package/server/graphql/types/index.ts +15 -0
  236. package/server/graphql/types/pallet/index.ts +12 -0
  237. package/server/graphql/types/pallet/pallet.ts +7 -0
  238. package/server/graphql/types/worksheet/arrival-notice-worksheet.ts +8 -0
  239. package/server/graphql/types/worksheet/batch-pick-worksheet-info.ts +9 -0
  240. package/server/graphql/types/worksheet/contact-point-info.ts +12 -0
  241. package/server/graphql/types/worksheet/cycle-count-worksheet.ts +16 -0
  242. package/server/graphql/types/worksheet/delivery-info.ts +11 -0
  243. package/server/graphql/types/worksheet/delivery-order-info.ts +25 -0
  244. package/server/graphql/types/worksheet/delivery-order-ro.ts +15 -0
  245. package/server/graphql/types/worksheet/delivery-worksheet.ts +7 -0
  246. package/server/graphql/types/worksheet/executing-worksheet.ts +8 -0
  247. package/server/graphql/types/worksheet/find-release-orders-by-task-no.ts +8 -0
  248. package/server/graphql/types/worksheet/goods-delivery-note.ts +8 -0
  249. package/server/graphql/types/worksheet/index.ts +750 -0
  250. package/server/graphql/types/worksheet/inventory-check-worksheet.ts +7 -0
  251. package/server/graphql/types/worksheet/loaded-worksheet-detail.ts +9 -0
  252. package/server/graphql/types/worksheet/multiple-release-good-worksheet.ts +8 -0
  253. package/server/graphql/types/worksheet/my-picking-assignment-status.ts +9 -0
  254. package/server/graphql/types/worksheet/new-worksheet.ts +10 -0
  255. package/server/graphql/types/worksheet/picking-assignment-status.ts +9 -0
  256. package/server/graphql/types/worksheet/product-approval.ts +11 -0
  257. package/server/graphql/types/worksheet/release-good-worksheet.ts +8 -0
  258. package/server/graphql/types/worksheet/return-order-worksheet.ts +8 -0
  259. package/server/graphql/types/worksheet/sellercraft-document.ts +8 -0
  260. package/server/graphql/types/worksheet/vas-order-worksheet.ts +7 -0
  261. package/server/graphql/types/worksheet/vas-worksheet.ts +8 -0
  262. package/server/graphql/types/worksheet/worksheet-detail-info.ts +68 -0
  263. package/server/graphql/types/worksheet/worksheet-info.ts +33 -0
  264. package/server/graphql/types/worksheet/worksheet-list.ts +8 -0
  265. package/server/graphql/types/worksheet/worksheet-patch.ts +19 -0
  266. package/server/graphql/types/worksheet/worksheet-with-pagination.ts +9 -0
  267. package/server/graphql/types/worksheet/worksheet.ts +34 -0
  268. package/server/graphql/types/worksheet-detail/index.ts +81 -0
  269. package/server/graphql/types/worksheet-detail/inventory-detail.ts +39 -0
  270. package/server/graphql/types/worksheet-detail/new-worksheet-detail.ts +20 -0
  271. package/server/graphql/types/worksheet-detail/pallet-info.ts +8 -0
  272. package/server/graphql/types/worksheet-detail/worksheet-detail-list.ts +8 -0
  273. package/server/graphql/types/worksheet-detail/worksheet-detail-patch.ts +28 -0
  274. package/server/graphql/types/worksheet-detail/worksheet-detail.ts +29 -0
  275. package/server/graphql/types/worksheet-movement/index.ts +30 -0
  276. package/server/graphql/types/worksheet-movement/new-worksheet-movement.ts +8 -0
  277. package/server/graphql/types/worksheet-movement/worksheet-movement-list.ts +8 -0
  278. package/server/graphql/types/worksheet-movement/worksheet-movement-patch.ts +8 -0
  279. package/server/graphql/types/worksheet-movement/worksheet-movement.ts +10 -0
  280. package/server/index.ts +14 -0
  281. package/server/middlewares/index.ts +3 -0
  282. package/server/migrations/index.ts +9 -0
  283. package/server/routes.ts +80 -0
  284. package/server/utils/datetime-util.ts +54 -0
  285. package/server/utils/index.ts +4 -0
  286. package/server/utils/inventory-util.ts +390 -0
  287. package/server/utils/worksheet-no-generator.ts +206 -0
  288. package/server/utils/worksheet-util.ts +85 -0
@@ -0,0 +1,21 @@
1
+ export * from './render-ro-do'
2
+ export * from './render-grn'
3
+ export * from './render-manual-do'
4
+ export * from './render-elccl-grn'
5
+ export * from './render-job-sheet'
6
+ export * from './render-kimeda-grn'
7
+ export * from './render-orientage-grn'
8
+ export * from './render-orientage-do'
9
+ export * from './render-seebuu-grn'
10
+ export * from './render-fm-grn'
11
+ export * from './render-manifest'
12
+ export * from './render-po'
13
+
14
+
15
+ /* Worksheet Controllers */
16
+ export * from './worksheet-controller'
17
+ export * from './ecommerce'
18
+ export * from './inbound'
19
+ export * from './inspect'
20
+ export * from './outbound'
21
+ export * from './vas'
@@ -0,0 +1,537 @@
1
+ import { Brackets, Equal, In, Not, SelectQueryBuilder } from 'typeorm'
2
+
3
+ import { Bizplace } from '@things-factory/biz-base'
4
+ import {
5
+ generateCycleCount,
6
+ InventoryCheck,
7
+ ORDER_INVENTORY_STATUS,
8
+ ORDER_STATUS,
9
+ OrderInventory,
10
+ OrderNoGenerator
11
+ } from '@things-factory/sales-base'
12
+ import { Inventory, INVENTORY_STATUS, Location } from '@things-factory/warehouse-base'
13
+
14
+ import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
15
+ import { Worksheet, WorksheetDetail } from '../../entities'
16
+ import { WorksheetNoGenerator } from '../../utils'
17
+ import { WorksheetController } from '../worksheet-controller'
18
+
19
+ export class CycleCountWorksheetController extends WorksheetController {
20
+ async generateCycleCountWorksheet(
21
+ executionDate: string,
22
+ customerId: string,
23
+ orderInventoryIds: string[] = [],
24
+ orderInventory: OrderInventory[],
25
+ limit: number
26
+ ): Promise<Worksheet> {
27
+ // Find out warehouse and customer bizplace
28
+ const customerBizplace: Bizplace = await this.trxMgr.getRepository(Bizplace).findOneBy({ id: customerId })
29
+ let foundCycleCountWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({
30
+ where: {
31
+ domain: { id: this.domain.id },
32
+ bizplace: { id: customerBizplace.id },
33
+ type: In([WORKSHEET_TYPE.CYCLE_COUNT, WORKSHEET_TYPE.CYCLE_COUNT_RECHECK]),
34
+ status: Not(WORKSHEET_STATUS.DONE)
35
+ },
36
+ relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'inventoryCheck']
37
+ })
38
+
39
+ // Create second round of cycle count with specified order inventories
40
+ if (orderInventoryIds.length) {
41
+ // Update status of target inventories (NOT_TALLY => INSPECTING)
42
+ let targetInventories: OrderInventory[] = await this.trxMgr
43
+ .getRepository(OrderInventory)
44
+ .findByIds(orderInventoryIds)
45
+ targetInventories.forEach((targetInventory: OrderInventory) => {
46
+ targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING
47
+ targetInventory.updater = this.user
48
+ })
49
+ await this.trxMgr.getRepository(OrderInventory).save(targetInventories)
50
+
51
+ // Update status of worksheet (NOT_TALLY => EXECUTING)
52
+ foundCycleCountWorksheet.type = WORKSHEET_TYPE.CYCLE_COUNT_RECHECK
53
+ foundCycleCountWorksheet.status = WORKSHEET_STATUS.EXECUTING
54
+ foundCycleCountWorksheet.endedAt = null
55
+ foundCycleCountWorksheet.updater = this.user
56
+ await this.trxMgr.getRepository(Worksheet).save(foundCycleCountWorksheet)
57
+
58
+ // Update status of worksheet details (NOT_TALLY => EXECUTING)
59
+ let worksheetDetails = foundCycleCountWorksheet.worksheetDetails.filter(
60
+ (wsd: WorksheetDetail) => orderInventoryIds.indexOf(wsd.targetInventory.id) >= 0
61
+ )
62
+ worksheetDetails.forEach((wsd: WorksheetDetail) => {
63
+ wsd.status = WORKSHEET_STATUS.EXECUTING
64
+ wsd.updater = this.user
65
+ })
66
+ await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)
67
+
68
+ // Update status of cycle count
69
+ const cycleCount: InventoryCheck = foundCycleCountWorksheet.inventoryCheck
70
+ cycleCount.status = ORDER_STATUS.INSPECTING
71
+ cycleCount.updater = this.user
72
+ await this.trxMgr.getRepository(InventoryCheck).save(cycleCount)
73
+
74
+ return foundCycleCountWorksheet
75
+ } else {
76
+ // Create first round of cycle count with whole pallets
77
+ if (foundCycleCountWorksheet) {
78
+ throw new Error(`Unfinished cycle count worksheet exists.`)
79
+ }
80
+
81
+ const cycleCount: InventoryCheck = await generateCycleCount(
82
+ this.trxMgr,
83
+ this.domain,
84
+ this.user,
85
+ executionDate,
86
+ customerId
87
+ )
88
+
89
+ // Find out inventories which is target for cycle counting
90
+ const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')
91
+ qb.leftJoinAndSelect('INV.location', 'LOC')
92
+ .where('INV.domain_id = :domainId', { domainId: this.domain.id })
93
+ .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: customerBizplace.id })
94
+ .andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })
95
+ .andWhere(
96
+ new Brackets(qb => {
97
+ qb.where('"INV"."locked_qty" ISNULL')
98
+ qb.orWhere('"INV"."locked_qty" = 0')
99
+ })
100
+ )
101
+
102
+ if (orderInventory && orderInventory.length > 0) {
103
+ let keyval = {
104
+ batchId: 'batch_id',
105
+ batchIdRef: 'batch_id_ref',
106
+ packingType: 'packing_type',
107
+ packingSize: 'packing_size',
108
+ productId: 'product_id'
109
+ }
110
+
111
+ qb.andWhere(
112
+ new Brackets(qb => {
113
+ orderInventory.forEach((itm, idx) => {
114
+ // sample itm value
115
+ // batchId: 'WO00019730', batchIdRef: null, packingType: 'CARBOY', packingSize: 1, productId: '1d679587-c713-42d6-bd0a-74e587e39cc7'
116
+ qb.orWhere(
117
+ new Brackets(qb2 => {
118
+ let first = true
119
+ for (var prop in itm) {
120
+ if (first) {
121
+ first = false
122
+ qb2.where(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : " = '" + itm[prop] + "'"}`)
123
+ } else {
124
+ qb2.andWhere(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : " = '" + itm[prop] + "'"}`)
125
+ }
126
+ }
127
+ })
128
+ )
129
+ })
130
+ })
131
+ )
132
+ } else {
133
+ if (limit > 0) {
134
+ qb.orderBy('RANDOM()').limit(limit)
135
+ }
136
+ }
137
+
138
+ let inventories: Inventory[] = await qb.getMany()
139
+
140
+ if (!inventories.length) {
141
+ throw new Error(`Failed to find inventories`)
142
+ }
143
+
144
+ let cycleCountWorksheet: Worksheet = new Worksheet()
145
+ cycleCountWorksheet.domain = this.domain
146
+ cycleCountWorksheet.bizplace = customerBizplace
147
+ cycleCountWorksheet.name = WorksheetNoGenerator.cycleCount()
148
+ cycleCountWorksheet.inventoryCheck = cycleCount
149
+ cycleCountWorksheet.type = WORKSHEET_TYPE.CYCLE_COUNT
150
+ cycleCountWorksheet.status = WORKSHEET_STATUS.DEACTIVATED
151
+ cycleCountWorksheet.creator = this.user
152
+ cycleCountWorksheet.updater = this.user
153
+ cycleCountWorksheet = await this.trxMgr.getRepository(Worksheet).save(cycleCountWorksheet)
154
+
155
+ // generate order inventory mapping with inventory ID
156
+ let targetInventories: OrderInventory[] = []
157
+ for (let i: number = 0; i < inventories.length; i++) {
158
+ const inventory: Inventory = inventories[i]
159
+
160
+ let targetInventory: OrderInventory = new OrderInventory()
161
+ targetInventory.domain = this.domain
162
+ targetInventory.bizplace = customerBizplace
163
+ targetInventory.status = ORDER_INVENTORY_STATUS.PENDING
164
+ targetInventory.name = OrderNoGenerator.orderInventory()
165
+ targetInventory.inventoryCheck = cycleCount
166
+ targetInventory.originQty = inventory.qty
167
+ //@ts-ignore
168
+ targetInventory.originWeight = 0
169
+ targetInventory.originUomValue = inventory.uomValue
170
+ targetInventory.originBatchNo = inventory.batchId
171
+ targetInventory.originLocation = inventory.location
172
+ targetInventory.releaseQty = 0
173
+ //@ts-ignore
174
+ targetInventory.releaseWeight = 0
175
+ targetInventory.releaseUomValue = 0
176
+ targetInventory.inventory = inventory
177
+ targetInventory.creator = this.user
178
+ targetInventory.updater = this.user
179
+ targetInventories.push(targetInventory)
180
+
181
+ inventory.lockedQty = inventory.qty
182
+ //@ts-ignore
183
+ inventory.lockedWeight = 0
184
+ inventory.lockedUomValue = inventory.uomValue
185
+ inventory.updater = this.user
186
+ }
187
+
188
+ targetInventories = await this.trxMgr.getRepository(OrderInventory).save(targetInventories, { chunk: 500 })
189
+
190
+ inventories = await this.trxMgr.getRepository(Inventory).save(inventories, { chunk: 500 })
191
+
192
+ let cycleCountWorksheetDetails: WorksheetDetail[] = []
193
+ for (let i: number = 0; i < targetInventories.length; i++) {
194
+ let targetInventory: OrderInventory = targetInventories[i]
195
+
196
+ let cycleCountWorksheetDetail: WorksheetDetail = new WorksheetDetail()
197
+ cycleCountWorksheetDetail.domain = this.domain
198
+ cycleCountWorksheetDetail.bizplace = customerBizplace
199
+ cycleCountWorksheetDetail.worksheet = cycleCountWorksheet
200
+ cycleCountWorksheetDetail.name = WorksheetNoGenerator.cycleCountDetail()
201
+ cycleCountWorksheetDetail.targetInventory = targetInventory
202
+ cycleCountWorksheetDetail.type = WORKSHEET_TYPE.CYCLE_COUNT
203
+ cycleCountWorksheetDetail.status = WORKSHEET_STATUS.DEACTIVATED
204
+ cycleCountWorksheetDetail.creator = this.user
205
+ cycleCountWorksheetDetail.updater = this.user
206
+
207
+ cycleCountWorksheetDetails.push(cycleCountWorksheetDetail)
208
+ }
209
+
210
+ await this.trxMgr.getRepository(WorksheetDetail).save(cycleCountWorksheetDetails, { chunk: 500 })
211
+
212
+ return cycleCountWorksheet
213
+ }
214
+ }
215
+
216
+ async activateCycleCount(worksheetNo: string): Promise<Worksheet> {
217
+ let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.CYCLE_COUNT, [
218
+ 'inventoryCheck',
219
+ 'worksheetDetails',
220
+ 'worksheetDetails.targetInventory'
221
+ ])
222
+
223
+ let worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
224
+ let targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)
225
+
226
+ for (let i: number = 0; i < targetInventories.length; i++) {
227
+ let targetInventory: OrderInventory = targetInventories[i]
228
+ targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING
229
+ targetInventory.updater = this.user
230
+ }
231
+ await this.trxMgr.getRepository(OrderInventory).save(targetInventories, { chunk: 500 })
232
+
233
+ for (let i: number = 0; i < worksheetDetails.length; i++) {
234
+ let foundWSD: WorksheetDetail = worksheetDetails[i]
235
+ foundWSD.status = WORKSHEET_STATUS.EXECUTING
236
+ foundWSD.updater = this.user
237
+ }
238
+ await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails, { chunk: 500 })
239
+
240
+ worksheet.status = WORKSHEET_STATUS.EXECUTING
241
+ worksheet.startedAt = new Date()
242
+ worksheet.updater = this.user
243
+ worksheet = await this.trxMgr.getRepository(Worksheet).save(worksheet)
244
+
245
+ let cycleCount: InventoryCheck = worksheet.inventoryCheck
246
+ cycleCount.status = ORDER_STATUS.INSPECTING
247
+ cycleCount.updater = this.user
248
+ await this.updateRefOrder(cycleCount)
249
+ return worksheet
250
+ }
251
+
252
+ async inspecting(
253
+ worksheetDetailName: string,
254
+ inspectedBatchNo: string,
255
+ inspectedQty: number,
256
+ inspectedUomValue: number
257
+ ): Promise<void> {
258
+ let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
259
+ worksheetDetailName,
260
+ WORKSHEET_TYPE.CYCLE_COUNT,
261
+ ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']
262
+ )
263
+
264
+ let targetInventory: OrderInventory = worksheetDetail.targetInventory
265
+ const inventory: Inventory = targetInventory.inventory
266
+ const { batchId, qty, uomValue }: { batchId: string; qty: number; uomValue: number } = inventory
267
+
268
+ const isChanged: boolean = batchId !== inspectedBatchNo || qty !== inspectedQty || uomValue !== inspectedUomValue
269
+ const worksheetDetailStatus: string = isChanged ? WORKSHEET_STATUS.NOT_TALLY : WORKSHEET_STATUS.DONE
270
+ const targetInventoryStatus: string = isChanged
271
+ ? ORDER_INVENTORY_STATUS.NOT_TALLY
272
+ : ORDER_INVENTORY_STATUS.INSPECTED
273
+
274
+ worksheetDetail.status = worksheetDetailStatus
275
+ worksheetDetail.updater = this.user
276
+ await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
277
+
278
+ targetInventory.inspectedBatchNo = inspectedBatchNo
279
+ targetInventory.inspectedQty = inspectedQty
280
+ targetInventory.inspectedUomValue = inspectedUomValue
281
+ targetInventory.inspectedLocation = targetInventory.inventory.location
282
+ targetInventory.status = targetInventoryStatus
283
+ targetInventory.updater = this.user
284
+ await this.updateOrderTargets([targetInventory])
285
+
286
+ //If all tally, remove lockedQty, lockedWeight, lockedUomValue
287
+ if (!isChanged) {
288
+ inventory.lockedQty = 0
289
+ //@ts-ignore
290
+ inventory.lockedWeight = 0
291
+ inventory.lockedUomValue = 0
292
+ inventory.updater = this.user
293
+ await this.trxMgr.getRepository(Inventory).save(inventory, { chunk: 500 })
294
+ }
295
+ }
296
+
297
+ async undoInspection(worksheetDetailName: string): Promise<void> {
298
+ let worksheetDetail: WorksheetDetail = await this.findWorksheetDetail(
299
+ { domain: { id: this.domain.id }, name: worksheetDetailName, status: Not(Equal(WORKSHEET_STATUS.EXECUTING)) },
300
+ ['targetInventory', 'targetInventory.inventory']
301
+ )
302
+
303
+ let targetInventory: OrderInventory = worksheetDetail.targetInventory
304
+ targetInventory.inspectedBatchNo = null
305
+ targetInventory.inspectedQty = null
306
+ //@ts-ignore
307
+ targetInventory.inspectedWeight = null
308
+ targetInventory.inspectedUomValue = null
309
+ targetInventory.inspectedLocation = null
310
+ targetInventory.status =
311
+ targetInventory.status === ORDER_INVENTORY_STATUS.RELOCATED
312
+ ? ORDER_INVENTORY_STATUS.MISSING
313
+ : ORDER_INVENTORY_STATUS.INSPECTING
314
+ targetInventory.updater = this.user
315
+ await this.updateOrderTargets([targetInventory])
316
+
317
+ worksheetDetail.status = WORKSHEET_STATUS.EXECUTING
318
+ worksheetDetail.updater = this.user
319
+ await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
320
+
321
+ const inventory: Inventory = targetInventory.inventory
322
+ inventory.lockedQty = inventory.qty
323
+ //@ts-ignore
324
+ inventory.lockedWeight = inventory.weight
325
+ inventory.lockedUomValue = inventory.uomValue
326
+ inventory.updater = this.user
327
+ await this.trxMgr.getRepository(Inventory).save(inventory, { chunk: 500 })
328
+ }
329
+
330
+ async checkMissingPallet(worksheetDetailName: string): Promise<void> {
331
+ let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
332
+ worksheetDetailName,
333
+ WORKSHEET_TYPE.CYCLE_COUNT,
334
+ ['targetInventory']
335
+ )
336
+
337
+ let targetInventory: OrderInventory = worksheetDetail.targetInventory
338
+ worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY
339
+ worksheetDetail.updater = this.user
340
+ await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
341
+
342
+ targetInventory.status = ORDER_INVENTORY_STATUS.MISSING
343
+ targetInventory.updater = this.user
344
+ await this.updateOrderTargets([targetInventory])
345
+ }
346
+
347
+ async addExtraPallet(
348
+ cycleCountNo: string,
349
+ palletId: string,
350
+ inspectedBatchNo: string,
351
+ inspectedQty: number,
352
+ inspectedUomValue: number,
353
+ locationName: string
354
+ ): Promise<void> {
355
+ //@ts-ignore
356
+ const inventoryCheck: InventoryCheck = await this.findRefOrder(
357
+ //@ts-ignore
358
+ InventoryCheck,
359
+ {
360
+ name: cycleCountNo,
361
+ status: ORDER_STATUS.INSPECTING
362
+ },
363
+ ['bizplace']
364
+ )
365
+
366
+ const bizplace: Bizplace = inventoryCheck.bizplace
367
+ const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')
368
+ let inventory: Inventory = await qb
369
+ .where('INV.domain = :domainId', { domainId: this.domain.id })
370
+ .andWhere('INV.bizplace = :bizplaceId', { bizplaceId: bizplace.id })
371
+ .andWhere('INV.palletId = :palletId', { palletId })
372
+ .andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })
373
+ .andWhere(
374
+ new Brackets(qb => {
375
+ qb.where('INV.lockedQty ISNULL')
376
+ qb.orWhere('INV.lockedQty = 0')
377
+ })
378
+ )
379
+ .getOne()
380
+ if (!inventory) throw new Error('Failed to find inventory')
381
+
382
+ const worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({
383
+ where: {
384
+ domain: { id: this.domain.id },
385
+ type: WORKSHEET_TYPE.CYCLE_COUNT,
386
+ status: WORKSHEET_STATUS.EXECUTING,
387
+ inventoryCheck: { id: inventoryCheck.id }
388
+ }
389
+ })
390
+ const location: Location = await this.trxMgr.getRepository(Location).findOne({
391
+ where: { domain: { id: this.domain.id }, name: locationName }
392
+ })
393
+
394
+ let targetInventory: OrderInventory = new OrderInventory()
395
+ targetInventory.domain = this.domain
396
+ targetInventory.bizplace = bizplace
397
+ targetInventory.status = ORDER_INVENTORY_STATUS.ADDED
398
+ targetInventory.name = OrderNoGenerator.orderInventory()
399
+ targetInventory.inventoryCheck = inventoryCheck
400
+ targetInventory.inventory = inventory
401
+ targetInventory.inspectedBatchNo = inspectedBatchNo
402
+ targetInventory.inspectedQty = inspectedQty
403
+ //@ts-ignore
404
+ targetInventory.inspectedWeight = 0
405
+ targetInventory.inspectedUomValue = inspectedUomValue
406
+ targetInventory.inspectedLocation = location
407
+ targetInventory.creator = this.user
408
+ targetInventory.updater = this.user
409
+ await this.updateOrderTargets([targetInventory])
410
+
411
+ let worksheetDetail: WorksheetDetail = new WorksheetDetail()
412
+ worksheetDetail.domain = this.domain
413
+ worksheetDetail.bizplace = bizplace
414
+ worksheetDetail.worksheet = worksheet
415
+ worksheetDetail.name = WorksheetNoGenerator.cycleCountDetail()
416
+ worksheetDetail.targetInventory = targetInventory
417
+ worksheetDetail.type = WORKSHEET_TYPE.CYCLE_COUNT
418
+ worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY
419
+ worksheetDetail.creator = this.user
420
+ worksheetDetail.updater = this.user
421
+ await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
422
+ }
423
+
424
+ async relocatePallet(
425
+ worksheetDetailName: string,
426
+ inspectedBatchNo: string,
427
+ inspectedQty: number,
428
+ inspectedUomValue: number,
429
+ inspectedLocationName: string
430
+ ): Promise<void> {
431
+ let worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({
432
+ where: { domain: { id: this.domain.id }, name: worksheetDetailName, type: WORKSHEET_TYPE.CYCLE_COUNT },
433
+ relations: ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']
434
+ })
435
+
436
+ if (!worksheetDetail) throw new Error('Failed to find worksheet detail')
437
+
438
+ let targetInventory: OrderInventory = worksheetDetail.targetInventory
439
+ const location: Location = targetInventory?.inventory?.location
440
+ if (location.name === inspectedLocationName) throw new Error(`You can't relocate at same location`)
441
+
442
+ const inspectedLocation: Location = await this.trxMgr.getRepository(Location).findOne({
443
+ where: { name: inspectedLocationName, domain: { id: this.domain.id } }
444
+ })
445
+
446
+ worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY
447
+ worksheetDetail.updater = this.user
448
+ await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
449
+
450
+ targetInventory.inspectedLocation = inspectedLocation
451
+ targetInventory.inspectedBatchNo = inspectedBatchNo
452
+ targetInventory.inspectedQty = inspectedQty
453
+ //@ts-ignore
454
+ targetInventory.inspectedWeight = 0
455
+ targetInventory.inspectedUomValue = inspectedUomValue
456
+ targetInventory.status = ORDER_INVENTORY_STATUS.RELOCATED
457
+ targetInventory.updater = this.user
458
+ await this.updateOrderTargets([targetInventory])
459
+ }
460
+
461
+ async completeCycleCount(inventoryCheckNo: string): Promise<Worksheet> {
462
+ //@ts-ignore
463
+ const inventoryCheck: InventoryCheck = await this.findRefOrder(InventoryCheck, {
464
+ name: inventoryCheckNo,
465
+ status: ORDER_STATUS.INSPECTING
466
+ })
467
+
468
+ let worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({
469
+ where: {
470
+ domain: { id: this.domain.id },
471
+ status: WORKSHEET_STATUS.EXECUTING,
472
+ type: In([WORKSHEET_TYPE.CYCLE_COUNT, WORKSHEET_TYPE.CYCLE_COUNT_RECHECK]),
473
+ inventoryCheck: { id: inventoryCheck.id }
474
+ },
475
+ relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']
476
+ })
477
+ this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })
478
+
479
+ const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
480
+ const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)
481
+
482
+ const {
483
+ tallyTargetInventories,
484
+ notTallyTargetInventories
485
+ }: {
486
+ tallyTargetInventories: OrderInventory[]
487
+ notTallyTargetInventories: OrderInventory[]
488
+ } = targetInventories.reduce(
489
+ (result, targetInventory: OrderInventory) => {
490
+ if (targetInventory.status !== ORDER_INVENTORY_STATUS.INSPECTED) {
491
+ result.notTallyTargetInventories.push(targetInventory)
492
+ } else {
493
+ result.tallyTargetInventories.push(targetInventory)
494
+ }
495
+
496
+ return result
497
+ },
498
+ {
499
+ tallyTargetInventories: [],
500
+ notTallyTargetInventories: []
501
+ }
502
+ )
503
+
504
+ const tallyInventories: Inventory[] = tallyTargetInventories.map(targetInventory => targetInventory.inventory)
505
+ tallyTargetInventories.forEach((targetInventory: OrderInventory) => {
506
+ targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED
507
+ targetInventory.updater = this.user
508
+ })
509
+ await this.trxMgr.getRepository(OrderInventory).save(tallyTargetInventories, { chunk: 500 })
510
+
511
+ tallyInventories.forEach((inventory: Inventory) => {
512
+ inventory.lockedQty = 0
513
+ //@ts-ignore
514
+ inventory.lockedWeight = 0
515
+ inventory.lockedUomValue = 0
516
+ inventory.updater = this.user
517
+ })
518
+ await this.trxMgr.getRepository(Inventory).save(tallyInventories, { chunk: 500 })
519
+
520
+ if (notTallyTargetInventories.length) {
521
+ worksheet.status = WORKSHEET_STATUS.NOT_TALLY
522
+ inventoryCheck.status = ORDER_STATUS.PENDING_REVIEW
523
+ } else {
524
+ worksheet.status = WORKSHEET_STATUS.DONE
525
+ inventoryCheck.status = ORDER_STATUS.DONE
526
+ }
527
+
528
+ worksheet.endedAt = new Date()
529
+ worksheet.updater = this.user
530
+ await this.trxMgr.getRepository(Worksheet).save(worksheet)
531
+
532
+ inventoryCheck.updater = this.user
533
+ await this.trxMgr.getRepository(InventoryCheck).save(inventoryCheck)
534
+
535
+ return worksheet
536
+ }
537
+ }
@@ -0,0 +1 @@
1
+ export * from './cycle-count-worksheet-controller'
@@ -0,0 +1,5 @@
1
+ export * from './loading-worksheet-controller'
2
+ export * from './packing-worksheet-controller'
3
+ export * from './picking-worksheet-controller'
4
+ export * from './returning-worksheet-controller'
5
+ export * from './sorting-worksheet-controller'