@things-factory/worksheet-base 8.0.0-beta.9 → 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,166 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { Bizplace } from '@things-factory/biz-base'
4
+ import { OrderVas, VasOrder } from '@things-factory/sales-base'
5
+ import { Domain } from '@things-factory/shell'
6
+ import { Inventory } from '@things-factory/warehouse-base'
7
+
8
+ import { Worksheet, WorksheetDetail } from '../../../../../entities'
9
+ import { getWorksheetDetailByName, updateRelatedOrderVas } from '../common-utils'
10
+ import {
11
+ FeaturedInventoryInterface,
12
+ OperationGuideInterface,
13
+ PackingUnits,
14
+ RefOrderType,
15
+ RepackagingGuide,
16
+ RepackedInvInfo,
17
+ TemporaryPalletChangesInterface
18
+ } from '../interfaces'
19
+
20
+ /** STEPS TO UNDO REPACKAGING
21
+ * 1. get the pallet id to undo (pallet id must be the LV one and not the parent)
22
+ * 2. revert the qty of repackedFrom into the original inventory and featuredInv (if applicable)
23
+ * 3. remove the repackedInv for undo item
24
+ * 4. update the requiredPkgQty
25
+ *
26
+ */
27
+
28
+ export const undoRepackagingResolver = {
29
+ async undoRepackaging(_: any, { worksheetDetailName, fromPalletId, toPalletId }, context: ResolverContext) {
30
+ /**
31
+ * Initialize required variables
32
+ */
33
+ const { tx, domain, user } = context.state
34
+ const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)
35
+ const bizplace: Bizplace = wsd.bizplace
36
+ const targetVas: OrderVas = wsd.targetVas
37
+ const { arrivalNotice, releaseGood, vasOrder } = targetVas
38
+ const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder
39
+
40
+ let operationGuide: OperationGuideInterface<RepackagingGuide> = JSON.parse(targetVas.operationGuide)
41
+ let operationGuideData: RepackagingGuide = operationGuide.data
42
+ let repackedInvs: RepackedInvInfo[] = operationGuideData.repackedInvs
43
+ //@ts-ignore
44
+ let featuredInvs: FeaturedInventoryInterface[] = operationGuideData.featuredInvs
45
+ let undoInventory: RepackedInvInfo = repackedInvs.find((ri: RepackedInvInfo) => ri.palletId === toPalletId)
46
+ if (!undoInventory) throw new Error(`Couldn't find pallet, using pallet id (${toPalletId})`)
47
+
48
+ const packingUnit: string = operationGuideData.packingUnit
49
+ const stdAmount: number = operationGuideData.stdAmount
50
+
51
+ // undoInventory.repackedFrom = undoInventory.repackedFrom.filter(
52
+ // (rf: TemporaryPalletChangesInterface) => rf.fromPalletId !== fromPalletId
53
+ // )
54
+
55
+ // 완전히 Repacked 상태인 pallet count
56
+ // const repackedPkgQty: number =
57
+ // undoInventory.repackedFrom.reduce((totalAmount: number, rf: TemporaryPalletChangesInterface) => {
58
+ // const amount: number = packingUnit === PackingUnits.QTY ? rf.reducedUnitQty : rf.reducedUomValue
59
+ // totalAmount += amount
60
+ // return totalAmount
61
+ // }, 0) / stdAmount
62
+
63
+ // Undo를 발생한 수량 차이를 계산
64
+ // undoInventory.repackedPkgQty = repackedPkgQty
65
+
66
+ const updatedRepackedInvs: RepackedInvInfo[] = repackedInvs.filter(
67
+ (ri: RepackedInvInfo) => ri.palletId !== toPalletId
68
+ )
69
+
70
+ const updatedFeaturedInvs: FeaturedInventoryInterface[] = featuredInvs.reduce(
71
+ (inventories: FeaturedInventoryInterface[], currInv: FeaturedInventoryInterface) => {
72
+ undoInventory.repackedFrom.forEach(undoInv => {
73
+ if (undoInv.fromPalletId == currInv.palletId) {
74
+ if (packingUnit == PackingUnits.QTY) {
75
+ currInv.currentUnitQty += undoInv.reducedUnitQty
76
+ } else if (packingUnit == PackingUnits.UOM) {
77
+ currInv.currentUomValue += undoInv.reducedUomValue
78
+ }
79
+ }
80
+ })
81
+
82
+ inventories.push(currInv)
83
+ return inventories
84
+ },
85
+ []
86
+ )
87
+
88
+ const requiredPackageQty: number = await getRequiredPackageQty(
89
+ tx,
90
+ domain,
91
+ bizplace,
92
+ wsd.worksheet,
93
+ targetVas,
94
+ packingUnit,
95
+ stdAmount
96
+ )
97
+ const repackedPackageQty: number = getRepackedPackageQty(updatedRepackedInvs)
98
+
99
+ operationGuide.data.requiredPackageQty = requiredPackageQty - repackedPackageQty
100
+ //@ts-ignore
101
+ operationGuide.data.featuredInvs = updatedFeaturedInvs
102
+ operationGuide.data.repackedInvs = updatedRepackedInvs
103
+
104
+ if (!(refOrder instanceof VasOrder)) {
105
+ // const palletChanges: TemporaryPalletChangesInterface[] = operationGuide.data.repackedInvs
106
+ // .map((ri: RepackedInvInfo) => ri.repackedFrom)
107
+ // .flat()
108
+
109
+ const palletChanges: TemporaryPalletChangesInterface[] = []
110
+ // await dismissInventory(tx, wsd, targetVas, palletChanges, fromPalletId)
111
+ }
112
+ // Update every order vas to share same operation guide
113
+ await updateRelatedOrderVas(tx, domain, bizplace, wsd, targetVas, operationGuide, user)
114
+ }
115
+ }
116
+
117
+ function getRepackedPackageQty(repackedInvs: RepackedInvInfo[]): number {
118
+ return repackedInvs.reduce((repackedPkgQty: number, ri: RepackedInvInfo) => (repackedPkgQty += ri.repackedPkgQty), 0)
119
+ }
120
+
121
+ /**
122
+ * @description Get total required package qty to complete this Repackagine VAS Task.
123
+ *
124
+ * @param {EntityManager} tx
125
+ * @param {Domain} domain
126
+ * @param {Bizplace} bizplace
127
+ * @param {Worksheet} worksheet
128
+ * @param {String} packingUnit
129
+ * @param {Number} stdAmount
130
+ */
131
+ async function getRequiredPackageQty(
132
+ tx: EntityManager,
133
+ domain: Domain,
134
+ bizplace: Bizplace,
135
+ worksheet: Worksheet,
136
+ currentOV: OrderVas,
137
+ packingUnit: string,
138
+ stdAmount: number
139
+ ): Promise<number> {
140
+ const relatedWSDs: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({
141
+ where: { domain: { id: domain.id }, bizplace: { id: bizplace.id }, worksheet: { id: worksheet.id } },
142
+ relations: ['targetVas', 'targetVas.vas', 'targetVas.inventory']
143
+ })
144
+
145
+ const orderVASs: OrderVas[] = relatedWSDs.map((wsd: WorksheetDetail) => wsd.targetVas)
146
+ const { qty, uomValue } = orderVASs
147
+ .filter((ov: OrderVas) => ov.set === currentOV.set && ov.vas.id === currentOV.vas.id)
148
+ .reduce(
149
+ (total: { qty: number; uomValue: number }, ov: OrderVas) => {
150
+ const inventory: Inventory = ov.inventory
151
+ const packingSize: number = inventory.packingSize
152
+
153
+ total.qty += ov.qty * packingSize
154
+ total.uomValue += ov.uomValue
155
+
156
+ return total
157
+ },
158
+ { qty: 0, uomValue: 0 }
159
+ )
160
+
161
+ if (packingUnit === PackingUnits.QTY) {
162
+ return qty / stdAmount
163
+ } else if (packingUnit === PackingUnits.UOM) {
164
+ return uomValue / stdAmount
165
+ }
166
+ }
@@ -0,0 +1,116 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Bizplace } from '@things-factory/biz-base'
5
+ import { ArrivalNotice, OrderVas, ReleaseGood } from '@things-factory/sales-base'
6
+ import { Domain } from '@things-factory/shell'
7
+ import { Inventory, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'
8
+
9
+ import {
10
+ createLoadingWorksheet,
11
+ createPutawayWorksheet,
12
+ deductProductAmount,
13
+ getCurrentAmount,
14
+ upsertInventory
15
+ } from '../common-utils'
16
+ import {
17
+ OperationGuideInterface,
18
+ PalletChangesInterface,
19
+ RefOrderType,
20
+ RepalletizedInvInfo,
21
+ RepalletizingGuide
22
+ } from '../interfaces'
23
+
24
+ export async function completeRepalletizing(trxMgr: EntityManager, orderVas: OrderVas, user: User): Promise<void> {
25
+ orderVas = await trxMgr.getRepository(OrderVas).findOne({
26
+ where: { id: orderVas.id },
27
+ relations: ['domain', 'bizplace', 'inventory', 'inventory.product', 'arrivalNotice', 'releaseGood', 'vasOrder']
28
+ })
29
+ const domain: Domain = orderVas.domain
30
+ const bizplace: Bizplace = orderVas.bizplace
31
+ let originInv: Inventory = orderVas.inventory
32
+ const operationGuide: OperationGuideInterface<RepalletizingGuide> = JSON.parse(orderVas.operationGuide)
33
+ const operationGuideData: RepalletizingGuide = operationGuide.data
34
+ const { arrivalNotice, releaseGood, vasOrder } = orderVas
35
+ const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder
36
+
37
+ // Check completion of new pallets
38
+ if (!checkCompletion(operationGuideData)) {
39
+ throw new Error(`There's repalletized pallet which doesn't have as many as standard qty`)
40
+ }
41
+
42
+ // create repalletized inventories based on repalletizedInvs
43
+ const repalletizedInvs: RepalletizedInvInfo[] = extractRepackedInvs(operationGuideData, originInv)
44
+ for (const ri of repalletizedInvs) {
45
+ const repalletizedFromList: PalletChangesInterface[] = ri.repalletizedFrom.filter(
46
+ (rf: PalletChangesInterface) => rf.toPalletId === ri.palletId
47
+ )
48
+ const { qty, uomValue } = getCurrentAmount(repalletizedFromList, ri.palletId)
49
+ const changedInv: Inventory = await upsertInventory(
50
+ trxMgr,
51
+ domain,
52
+ bizplace,
53
+ user,
54
+ originInv,
55
+ refOrder,
56
+ ri.palletId,
57
+ ri.locationName,
58
+ originInv.packingType,
59
+ qty,
60
+ uomValue,
61
+ INVENTORY_TRANSACTION_TYPE.REPALLETIZING
62
+ )
63
+
64
+ // Deduct amount of product on original pallet or order inventory (Case for release order)
65
+ originInv = await deductProductAmount(
66
+ trxMgr,
67
+ domain,
68
+ bizplace,
69
+ user,
70
+ refOrder,
71
+ originInv,
72
+ qty,
73
+ uomValue,
74
+ INVENTORY_TRANSACTION_TYPE.REPALLETIZING
75
+ )
76
+
77
+ // Create worksheet if it's related with Arrival Notice or Release Order
78
+ if (refOrder instanceof ArrivalNotice) {
79
+ await createPutawayWorksheet(trxMgr, domain, bizplace, user, refOrder, originInv, changedInv)
80
+ } else if (refOrder instanceof ReleaseGood) {
81
+ //@ts-ignore
82
+ await createLoadingWorksheet(trxMgr, domain, bizplace, user, refOrder, originInv, changedInv)
83
+ }
84
+ }
85
+ }
86
+
87
+ /**
88
+ * @description Check whether every repalletized pallet has products as many as standard qty.
89
+ * @param operationGuideData
90
+ */
91
+ function checkCompletion(operationGuideData: RepalletizingGuide): boolean {
92
+ const stdQty: number = operationGuideData.stdQty
93
+ return operationGuideData.repalletizedInvs.every((ri: RepalletizedInvInfo) => {
94
+ const totalQty: number = ri.repalletizedFrom.reduce(
95
+ (totalQty: number, rf: PalletChangesInterface) => (totalQty += rf.reducedQty),
96
+ 0
97
+ )
98
+ return totalQty === stdQty
99
+ })
100
+ }
101
+
102
+ function extractRepackedInvs(operationGuideData: RepalletizingGuide, originInv: Inventory): RepalletizedInvInfo[] {
103
+ return operationGuideData.repalletizedInvs
104
+ .filter((ri: RepalletizedInvInfo) => {
105
+ const isPalletIncluded: boolean = Boolean(
106
+ ri.repalletizedFrom.find((rf: PalletChangesInterface) => rf.fromPalletId === originInv.palletId)
107
+ )
108
+ if (isPalletIncluded) return ri
109
+ })
110
+ .map((ri: RepalletizedInvInfo) => {
111
+ ri.repalletizedFrom = ri.repalletizedFrom.filter(
112
+ (rf: PalletChangesInterface) => rf.fromPalletId === originInv.palletId
113
+ )
114
+ return ri
115
+ })
116
+ }
@@ -0,0 +1,3 @@
1
+ export * from './complete-repalletizing'
2
+ export * from './repalletizing'
3
+ export * from './undo-repalletizing'
@@ -0,0 +1,167 @@
1
+ import { Bizplace } from '@things-factory/biz-base'
2
+ import { OrderVas } from '@things-factory/sales-base'
3
+ import { Inventory, Location, Pallet, PALLET_TYPES, Warehouse } from '@things-factory/warehouse-base'
4
+
5
+ import { WorksheetDetail } from '../../../../../entities'
6
+ import { checkPalletDuplication, checkPalletIdenticallity } from '../../../../../utils'
7
+ import { executeVas } from '../../vas/execute-vas'
8
+ import {
9
+ assignInventory,
10
+ getCurrentAmount,
11
+ getRemainInventoryAmount,
12
+ getWorksheetDetailByName,
13
+ updateRelatedOrderVas
14
+ } from '../common-utils'
15
+ import {
16
+ OperationGuideInterface,
17
+ PalletChangesInterface,
18
+ RefOrderType,
19
+ RepalletizedInvInfo,
20
+ RepalletizingGuide
21
+ } from '../interfaces'
22
+
23
+ export const repalletizingResolver = {
24
+ async repalletizing(
25
+ _: any,
26
+ { worksheetDetailName, fromPalletId, toPalletId, locationName },
27
+ context: ResolverContext
28
+ ) {
29
+ const { tx, domain, user } = context.state
30
+ const location: Location = await tx.getRepository(Location).findOne({
31
+ where: { domain: { id: domain.id }, name: locationName },
32
+ relations: ['warehouse']
33
+ })
34
+ if (!location) throw new Error(`Couldn't find location by its name (${locationName})`)
35
+ const warehouse: Warehouse = location.warehouse
36
+ if (!warehouse) throw new Error(`Location (name: ${locationName}) doesn't have any relation with warehouse`)
37
+
38
+ const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)
39
+ let { bizplace, targetVas }: { bizplace: Bizplace; targetVas: OrderVas } = wsd
40
+
41
+ // Check whether from pallet has valid condition compared with customer's request
42
+ // Batch ID, product and packing type
43
+ const { identicallity, errorMessage } = await checkPalletIdenticallity(
44
+ domain,
45
+ bizplace,
46
+ fromPalletId,
47
+ targetVas.targetBatchId,
48
+ targetVas.targetProduct,
49
+ targetVas.packingType,
50
+ tx
51
+ )
52
+ if (!identicallity) throw new Error(errorMessage)
53
+
54
+ // Check whether there's duplicated inventory in warehouse.
55
+ if (await checkPalletDuplication(domain, bizplace, toPalletId, tx))
56
+ throw new Error(`The Pallet ID (${toPalletId}) is duplicated.`)
57
+
58
+ // Init refOrder
59
+ //@ts-ignore
60
+ const { arrivalNotice, releaseGood, vasOrder }: { [key: string]: RefOrderType } = targetVas
61
+ const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder || null
62
+ if (!refOrder) throw new Error(`Couldn't find reference order with current order vas`)
63
+
64
+ // Assign inventory if specific inventory isn't assigned yet.
65
+ // This case is occured when the VAS order comes with Arrival Notice or Release Good
66
+ if (!targetVas.inventory) {
67
+ //@ts-ignore
68
+ targetVas = await assignInventory(tx, domain, bizplace, user, wsd, refOrder, targetVas, fromPalletId)
69
+ }
70
+
71
+ let originInv: Inventory = targetVas.inventory
72
+ let operationGuide: OperationGuideInterface<RepalletizingGuide> = JSON.parse(targetVas.operationGuide)
73
+ let operationGuideData: RepalletizingGuide = operationGuide.data
74
+
75
+ const palletType: string = operationGuideData.palletType
76
+ if (palletType === PALLET_TYPES.REUSABLE_PALLET) {
77
+ // Check whether the pallet is available
78
+ const pallet: Pallet = await tx.getRepository(Pallet).findOne({
79
+ where: { domain: { id: domain.id }, name: toPalletId },
80
+ relations: ['inventory']
81
+ })
82
+ if (!pallet) throw new Error(`Couldn't find reusable pallet by its ID (${toPalletId})`)
83
+ if (pallet.inventory) throw new Error(`The pallet (${toPalletId}) is located already.`)
84
+ }
85
+
86
+ if (!operationGuideData.repalletizedInvs) operationGuideData.repalletizedInvs = []
87
+ const repalletizedInvs: RepalletizedInvInfo[] = operationGuideData.repalletizedInvs
88
+ // const palletChanges: PalletChangesInterface[] = repalletizedInvs
89
+ // .map((ri: RepalletizedInvInfo) => ri.repalletizedFrom)
90
+ // .flat()
91
+
92
+ const palletChanges: PalletChangesInterface[] = []
93
+ const { remainQty, remainUomValue } = await getRemainInventoryAmount(
94
+ tx,
95
+ refOrder,
96
+ domain,
97
+ bizplace,
98
+ originInv,
99
+ palletChanges,
100
+ fromPalletId
101
+ )
102
+ const unitUomValue: number = remainUomValue / remainQty
103
+ const stdQty: number = operationGuideData.stdQty
104
+ const { qty } = getCurrentAmount(palletChanges, toPalletId)
105
+ const requiredQty: number = stdQty - qty
106
+ if (requiredQty === 0) throw new Error(`The pallet (${toPalletId}) is repalletized already.`)
107
+ const reducedQty: number = remainQty >= requiredQty ? requiredQty : remainQty
108
+
109
+ const repalletizedInv: RepalletizedInvInfo = getRepalletizedInv(operationGuideData, toPalletId, locationName)
110
+ const repalletizedFrom: PalletChangesInterface = {
111
+ fromPalletId,
112
+ toPalletId,
113
+ reducedQty,
114
+ reducedUomValue: reducedQty * unitUomValue
115
+ }
116
+ repalletizedInv.repalletizedFrom.push(repalletizedFrom)
117
+
118
+ const isCompleted: boolean = qty + reducedQty === stdQty
119
+ let requiredPalletQty: number = isCompleted
120
+ ? operationGuideData.requiredPalletQty - 1
121
+ : operationGuideData.requiredPalletQty
122
+
123
+ operationGuide.data = {
124
+ palletType: operationGuideData.palletType,
125
+ stdQty: operationGuideData.stdQty,
126
+ requiredPalletQty,
127
+ repalletizedInvs
128
+ }
129
+
130
+ // Update every order vas to share same operation guide
131
+ await updateRelatedOrderVas<RepalletizingGuide>(tx, domain, bizplace, wsd, targetVas, operationGuide, user)
132
+
133
+ // If pallet is created completely
134
+ // If there's no more products on from pallet
135
+ if (remainQty - reducedQty === 0 || requiredPalletQty === 0) {
136
+ await executeVas(tx, domain, user, wsd)
137
+ }
138
+ }
139
+ }
140
+
141
+ /**
142
+ * @description Find repalletized pallet which has same pallet id with passed pallet id as param
143
+ * If there's no repalletized pallet init new RepalletizedInvInfo object and return it
144
+ *
145
+ * @param {RepalletizedInvInfo} operationGuideData
146
+ * @param {String} palletId
147
+ * @param {String} locationName
148
+ */
149
+ function getRepalletizedInv(
150
+ operationGuideData: RepalletizingGuide,
151
+ palletId: string,
152
+ locationName: string
153
+ ): RepalletizedInvInfo {
154
+ let repalletizedInv: RepalletizedInvInfo = operationGuideData.repalletizedInvs.find(
155
+ (ri: RepalletizedInvInfo) => ri.palletId === palletId
156
+ )
157
+
158
+ if (!repalletizedInv) {
159
+ repalletizedInv = {
160
+ palletId,
161
+ locationName,
162
+ repalletizedFrom: []
163
+ }
164
+ operationGuideData.repalletizedInvs.push(repalletizedInv)
165
+ }
166
+ return repalletizedInv
167
+ }
@@ -0,0 +1,74 @@
1
+ import { Bizplace } from '@things-factory/biz-base'
2
+ import { OrderVas, VasOrder } from '@things-factory/sales-base'
3
+
4
+ import { WorksheetDetail } from '../../../../../entities'
5
+ import { dismissInventory, getWorksheetDetailByName, updateRelatedOrderVas } from '../common-utils'
6
+ import {
7
+ OperationGuideInterface,
8
+ PalletChangesInterface,
9
+ RefOrderType,
10
+ RepalletizedInvInfo,
11
+ RepalletizingGuide
12
+ } from '../interfaces'
13
+
14
+ export const undoRepalletizingResolver = {
15
+ async undoRepalletizing(_: any, { worksheetDetailName, fromPalletId, toPalletId }, context: ResolverContext) {
16
+ /**
17
+ * Initialize required variables
18
+ */
19
+ const { tx, domain, user } = context.state
20
+ const wsd: WorksheetDetail = await getWorksheetDetailByName(tx, domain, worksheetDetailName)
21
+ const bizplace: Bizplace = wsd.bizplace
22
+ const targetVas: OrderVas = wsd.targetVas
23
+ const { arrivalNotice, releaseGood, vasOrder } = targetVas
24
+ const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder
25
+
26
+ let operationGuide: OperationGuideInterface<RepalletizingGuide> = JSON.parse(targetVas.operationGuide)
27
+ let operationGuideData: RepalletizingGuide = operationGuide.data
28
+ let repalletizedInvs: RepalletizedInvInfo[] = operationGuideData.repalletizedInvs
29
+ let undoInventory: RepalletizedInvInfo = repalletizedInvs.find(
30
+ (ri: RepalletizedInvInfo) => ri.palletId === toPalletId
31
+ )
32
+ if (!undoInventory) throw new Error(`Couldn't find pallet, using pallet id (${toPalletId})`)
33
+
34
+ const stdQty: number = operationGuideData.stdQty
35
+
36
+ // If current undo pallet is completed pallet, plus 1 required pallet qty
37
+ const totalQty: number = undoInventory.repalletizedFrom.reduce(
38
+ (totalQty: number, rf: PalletChangesInterface) => (totalQty += rf.reducedQty),
39
+ 0
40
+ )
41
+
42
+ if (totalQty === stdQty) {
43
+ operationGuideData.requiredPalletQty++
44
+ }
45
+
46
+ undoInventory.repalletizedFrom = undoInventory.repalletizedFrom.filter(
47
+ (rf: PalletChangesInterface) => rf.fromPalletId !== fromPalletId
48
+ )
49
+
50
+ let updatedRepalletizedInvs: RepalletizedInvInfo[]
51
+ if (!undoInventory.repalletizedFrom?.length) {
52
+ updatedRepalletizedInvs = repalletizedInvs.filter((ri: RepalletizedInvInfo) => ri.palletId !== toPalletId)
53
+ } else {
54
+ updatedRepalletizedInvs = repalletizedInvs.map((ri: RepalletizedInvInfo) => {
55
+ if (ri.palletId === toPalletId) {
56
+ ri = undoInventory
57
+ }
58
+ return ri
59
+ })
60
+ }
61
+ operationGuide.data.repalletizedInvs = updatedRepalletizedInvs
62
+
63
+ if (!(refOrder instanceof VasOrder)) {
64
+ // const palletChanges: PalletChangesInterface[] = operationGuide.data.repalletizedInvs
65
+ // .map((ri: RepalletizedInvInfo) => ri.repalletizedFrom)
66
+ // .flat()
67
+ const palletChanges: PalletChangesInterface[] = []
68
+ await dismissInventory(tx, wsd, targetVas, palletChanges, toPalletId)
69
+ }
70
+
71
+ // Update every order vas to share same operation guide
72
+ await updateRelatedOrderVas<RepalletizingGuide>(tx, domain, bizplace, wsd, targetVas, operationGuide, user)
73
+ }
74
+ }
@@ -0,0 +1,20 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Bizplace } from '@things-factory/biz-base'
5
+ import { OrderVas } from '@things-factory/sales-base'
6
+ import { Domain } from '@things-factory/shell'
7
+
8
+ import { RefOrderType } from '../interfaces'
9
+
10
+ export async function completeUnpacking(trxMgr: EntityManager, orderVas: OrderVas, user: User): Promise<void> {
11
+ orderVas = await trxMgr.getRepository(OrderVas).findOne({
12
+ where: { id: orderVas.id },
13
+ relations: ['domain', 'bizplace', 'inventory', 'inventory.product', 'arrivalNotice', 'releaseGood', 'vasOrder']
14
+ })
15
+
16
+ const domain: Domain = orderVas.domain
17
+ const bizplace: Bizplace = orderVas.bizplace
18
+ const { arrivalNotice, releaseGood, vasOrder } = orderVas
19
+ const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder
20
+ }
@@ -0,0 +1,2 @@
1
+ export * from './complete-unpacking'
2
+ export * from './unpacking'