@things-factory/worksheet-base 5.0.12 → 6.0.0-alpha.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 (534) hide show
  1. package/dist-server/controllers/ecommerce/sellercraft-controller.js +225 -191
  2. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  3. package/dist-server/controllers/inbound/unloading-returning-worksheet-controller.js +2 -2
  4. package/dist-server/controllers/inbound/unloading-returning-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +28 -17
  6. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +1 -1
  8. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/outbound/packing-worksheet-controller.js +17 -3
  10. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  11. package/dist-server/controllers/outbound/picking-worksheet-controller.js +221 -144
  12. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  13. package/dist-server/controllers/outbound/returning-worksheet-controller.js +16 -0
  14. package/dist-server/controllers/outbound/returning-worksheet-controller.js.map +1 -1
  15. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +8 -8
  16. package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
  17. package/dist-server/controllers/render-elccl-grn.js +21 -16
  18. package/dist-server/controllers/render-elccl-grn.js.map +1 -1
  19. package/dist-server/controllers/render-fm-grn.js +43 -26
  20. package/dist-server/controllers/render-fm-grn.js.map +1 -1
  21. package/dist-server/controllers/render-grn.js +42 -28
  22. package/dist-server/controllers/render-grn.js.map +1 -1
  23. package/dist-server/controllers/render-invoices.js +4 -5
  24. package/dist-server/controllers/render-invoices.js.map +1 -1
  25. package/dist-server/controllers/render-job-sheet.js +19 -19
  26. package/dist-server/controllers/render-job-sheet.js.map +1 -1
  27. package/dist-server/controllers/render-kimeda-grn.js +38 -23
  28. package/dist-server/controllers/render-kimeda-grn.js.map +1 -1
  29. package/dist-server/controllers/render-manifest.js +8 -9
  30. package/dist-server/controllers/render-manifest.js.map +1 -1
  31. package/dist-server/controllers/render-manual-do.js +15 -15
  32. package/dist-server/controllers/render-manual-do.js.map +1 -1
  33. package/dist-server/controllers/render-orientage-do.js +74 -28
  34. package/dist-server/controllers/render-orientage-do.js.map +1 -1
  35. package/dist-server/controllers/render-orientage-grn.js +25 -15
  36. package/dist-server/controllers/render-orientage-grn.js.map +1 -1
  37. package/dist-server/controllers/render-po.js +28 -19
  38. package/dist-server/controllers/render-po.js.map +1 -1
  39. package/dist-server/controllers/render-ro-do.js +139 -105
  40. package/dist-server/controllers/render-ro-do.js.map +1 -1
  41. package/dist-server/controllers/render-seebuu-grn.js +29 -19
  42. package/dist-server/controllers/render-seebuu-grn.js.map +1 -1
  43. package/dist-server/controllers/vas/vas-worksheet-controller.js +5 -5
  44. package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
  45. package/dist-server/controllers/worksheet-controller.js +75 -25
  46. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  47. package/dist-server/entities/warehouse-bizplace-onhand-inventory.js +2 -1
  48. package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -1
  49. package/dist-server/entities/worksheet-detail.js +14 -12
  50. package/dist-server/entities/worksheet-detail.js.map +1 -1
  51. package/dist-server/entities/worksheet-movement.js +1 -2
  52. package/dist-server/entities/worksheet-movement.js.map +1 -1
  53. package/dist-server/entities/worksheet.js +13 -13
  54. package/dist-server/entities/worksheet.js.map +1 -1
  55. package/dist-server/graphql/resolvers/pallet/pallet-outbound.js +1 -1
  56. package/dist-server/graphql/resolvers/pallet/pallet-outbound.js.map +1 -1
  57. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +6 -6
  58. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
  59. package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js +1 -1
  60. package/dist-server/graphql/resolvers/worksheet/cancel-draft-release-order.js.map +1 -1
  61. package/dist-server/graphql/resolvers/worksheet/check-inventory-release.js +6 -5
  62. package/dist-server/graphql/resolvers/worksheet/check-inventory-release.js.map +1 -1
  63. package/dist-server/graphql/resolvers/worksheet/check-stock-take-current-location.js +8 -8
  64. package/dist-server/graphql/resolvers/worksheet/check-stock-take-current-location.js.map +1 -1
  65. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +82 -80
  66. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
  67. package/dist-server/graphql/resolvers/worksheet/create-worksheet.js.map +1 -1
  68. package/dist-server/graphql/resolvers/worksheet/cross-dock-picking.js +5 -4
  69. package/dist-server/graphql/resolvers/worksheet/cross-dock-picking.js.map +1 -1
  70. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +5 -5
  71. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  72. package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js +5 -4
  73. package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js.map +1 -1
  74. package/dist-server/graphql/resolvers/worksheet/delete-worksheet.js +1 -1
  75. package/dist-server/graphql/resolvers/worksheet/delete-worksheet.js.map +1 -1
  76. package/dist-server/graphql/resolvers/worksheet/delivery-order-by-worksheet.js +83 -52
  77. package/dist-server/graphql/resolvers/worksheet/delivery-order-by-worksheet.js.map +1 -1
  78. package/dist-server/graphql/resolvers/worksheet/fetch-delivery-order-ro.js +169 -0
  79. package/dist-server/graphql/resolvers/worksheet/fetch-delivery-order-ro.js.map +1 -0
  80. package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js +67 -0
  81. package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-document.js.map +1 -0
  82. package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js +1 -34
  83. package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js.map +1 -1
  84. package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-worksheet-no.js.map +1 -1
  85. package/dist-server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.js +70 -0
  86. package/dist-server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.js.map +1 -0
  87. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js +34 -3
  88. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js.map +1 -1
  89. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.js +4 -4
  90. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.js.map +1 -1
  91. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js.map +1 -1
  92. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js +3 -3
  93. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js.map +1 -1
  94. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-return-worksheet.js.map +1 -1
  95. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-worksheet.js.map +1 -1
  96. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-putaway-worksheet.js.map +1 -1
  97. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js +14 -10
  98. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js.map +1 -1
  99. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.js +1 -1
  100. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.js.map +1 -1
  101. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.js +1 -1
  102. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.js.map +1 -1
  103. package/dist-server/graphql/resolvers/worksheet/having-vas.js +7 -7
  104. package/dist-server/graphql/resolvers/worksheet/having-vas.js.map +1 -1
  105. package/dist-server/graphql/resolvers/worksheet/index.js +5 -3
  106. package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
  107. package/dist-server/graphql/resolvers/worksheet/inspecting/activate-cycle-count.js.map +1 -1
  108. package/dist-server/graphql/resolvers/worksheet/inspecting/add-extra-pallet.js.map +1 -1
  109. package/dist-server/graphql/resolvers/worksheet/inspecting/check-missing-pallet.js.map +1 -1
  110. package/dist-server/graphql/resolvers/worksheet/inspecting/complete-inspection.js.map +1 -1
  111. package/dist-server/graphql/resolvers/worksheet/inspecting/inspecting.js.map +1 -1
  112. package/dist-server/graphql/resolvers/worksheet/inspecting/relocate-pallet.js.map +1 -1
  113. package/dist-server/graphql/resolvers/worksheet/inspecting/undo-inspection.js.map +1 -1
  114. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +18 -9
  115. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
  116. package/dist-server/graphql/resolvers/worksheet/loaded-inventories.js +6 -5
  117. package/dist-server/graphql/resolvers/worksheet/loaded-inventories.js.map +1 -1
  118. package/dist-server/graphql/resolvers/worksheet/loading/activate-loading.js.map +1 -1
  119. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +14 -14
  120. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
  121. package/dist-server/graphql/resolvers/worksheet/loading/loading.js.map +1 -1
  122. package/dist-server/graphql/resolvers/worksheet/loading/undo-loading.js.map +1 -1
  123. package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +11 -10
  124. package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
  125. package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js +5 -4
  126. package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js.map +1 -1
  127. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +3 -4
  128. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
  129. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +2 -2
  130. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
  131. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +1 -1
  132. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  133. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +16 -11
  134. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
  135. package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js.map +1 -1
  136. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +96 -22
  137. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  138. package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js +5 -5
  139. package/dist-server/graphql/resolvers/worksheet/palletizing-pallets.js.map +1 -1
  140. package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js +93 -81
  141. package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js.map +1 -1
  142. package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js +0 -19
  143. package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js.map +1 -1
  144. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +1 -1
  145. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
  146. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js.map +1 -1
  147. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js +11 -5
  148. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js.map +1 -1
  149. package/dist-server/graphql/resolvers/worksheet/picking/batch-picking.js.map +1 -1
  150. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +10 -4
  151. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  152. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +34 -38
  153. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  154. package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js +46 -35
  155. package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js.map +1 -1
  156. package/dist-server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.js +7 -2
  157. package/dist-server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.js.map +1 -1
  158. package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js +33 -16
  159. package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js.map +1 -1
  160. package/dist-server/graphql/resolvers/worksheet/picking/picking.js.map +1 -1
  161. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.js +4 -4
  162. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.js.map +1 -1
  163. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js +5 -8
  164. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js.map +1 -1
  165. package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js.map +1 -1
  166. package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js.map +1 -1
  167. package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js.map +1 -1
  168. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +6 -5
  169. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  170. package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js +10 -8
  171. package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js.map +1 -1
  172. package/dist-server/graphql/resolvers/worksheet/putaway/activate-putaway.js.map +1 -1
  173. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +4 -3
  174. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
  175. package/dist-server/graphql/resolvers/worksheet/putaway/putaway.js.map +1 -1
  176. package/dist-server/graphql/resolvers/worksheet/putaway/undo-putaway.js.map +1 -1
  177. package/dist-server/graphql/resolvers/worksheet/putaway-return/activate-putaway-return.js.map +1 -1
  178. package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js +2 -1
  179. package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js.map +1 -1
  180. package/dist-server/graphql/resolvers/worksheet/putaway-return/putaway-return.js.map +1 -1
  181. package/dist-server/graphql/resolvers/worksheet/putaway-return/undo-putaway-return.js.map +1 -1
  182. package/dist-server/graphql/resolvers/worksheet/putaway-returning-worksheet.js +3 -3
  183. package/dist-server/graphql/resolvers/worksheet/putaway-returning-worksheet.js.map +1 -1
  184. package/dist-server/graphql/resolvers/worksheet/putaway-worksheet.js +3 -3
  185. package/dist-server/graphql/resolvers/worksheet/putaway-worksheet.js.map +1 -1
  186. package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js +16 -11
  187. package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js.map +1 -1
  188. package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js +139 -149
  189. package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js.map +1 -1
  190. package/dist-server/graphql/resolvers/worksheet/relocate-pallet.js +1 -1
  191. package/dist-server/graphql/resolvers/worksheet/relocate-pallet.js.map +1 -1
  192. package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js +2 -2
  193. package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js.map +1 -1
  194. package/dist-server/graphql/resolvers/worksheet/return-worksheet.js +3 -3
  195. package/dist-server/graphql/resolvers/worksheet/return-worksheet.js.map +1 -1
  196. package/dist-server/graphql/resolvers/worksheet/returning/activate-return.js.map +1 -1
  197. package/dist-server/graphql/resolvers/worksheet/returning/complete-return.js.map +1 -1
  198. package/dist-server/graphql/resolvers/worksheet/returning/returning.js.map +1 -1
  199. package/dist-server/graphql/resolvers/worksheet/sorting/activate-sorting.js.map +1 -1
  200. package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js.map +1 -1
  201. package/dist-server/graphql/resolvers/worksheet/sorting/complete-worksheet-sorting.js.map +1 -1
  202. package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js.map +1 -1
  203. package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js.map +1 -1
  204. package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js +4 -4
  205. package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js.map +1 -1
  206. package/dist-server/graphql/resolvers/worksheet/transfer.js.map +1 -1
  207. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.js +8 -7
  208. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.js.map +1 -1
  209. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js +9 -8
  210. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js.map +1 -1
  211. package/dist-server/graphql/resolvers/worksheet/unloading/activate-unloading.js +4 -2
  212. package/dist-server/graphql/resolvers/worksheet/unloading/activate-unloading.js.map +1 -1
  213. package/dist-server/graphql/resolvers/worksheet/unloading/complete-product-scan-unload.js.map +1 -1
  214. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading-partially.js.map +1 -1
  215. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js +6 -2
  216. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
  217. package/dist-server/graphql/resolvers/worksheet/unloading/scan-product-unload.js.map +1 -1
  218. package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js.map +1 -1
  219. package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js.map +1 -1
  220. package/dist-server/graphql/resolvers/worksheet/unloading/undo-unloading.js.map +1 -1
  221. package/dist-server/graphql/resolvers/worksheet/unloading/unload.js.map +1 -1
  222. package/dist-server/graphql/resolvers/worksheet/unloading-return/activate-unloading-return.js.map +1 -1
  223. package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-return-partially.js.map +1 -1
  224. package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js +7 -3
  225. package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js.map +1 -1
  226. package/dist-server/graphql/resolvers/worksheet/unloading-return-worksheet.js +3 -3
  227. package/dist-server/graphql/resolvers/worksheet/unloading-return-worksheet.js.map +1 -1
  228. package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js +5 -5
  229. package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js.map +1 -1
  230. package/dist-server/graphql/resolvers/worksheet/update-worksheet.js +1 -1
  231. package/dist-server/graphql/resolvers/worksheet/update-worksheet.js.map +1 -1
  232. package/dist-server/graphql/resolvers/worksheet/vas/activate-vas.js.map +1 -1
  233. package/dist-server/graphql/resolvers/worksheet/vas/assign-vas-inventories.js.map +1 -1
  234. package/dist-server/graphql/resolvers/worksheet/vas/complete-vas.js.map +1 -1
  235. package/dist-server/graphql/resolvers/worksheet/vas/execute-vas.js.map +1 -1
  236. package/dist-server/graphql/resolvers/worksheet/vas/undo-vas-inventory.js.map +1 -1
  237. package/dist-server/graphql/resolvers/worksheet/vas/undo-vas.js.map +1 -1
  238. package/dist-server/graphql/resolvers/worksheet/vas-candidates.js +13 -12
  239. package/dist-server/graphql/resolvers/worksheet/vas-candidates.js.map +1 -1
  240. package/dist-server/graphql/resolvers/worksheet/vas-inventories.js +7 -6
  241. package/dist-server/graphql/resolvers/worksheet/vas-inventories.js.map +1 -1
  242. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +36 -18
  243. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
  244. package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.js +10 -3
  245. package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.js.map +1 -1
  246. package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.js +3 -2
  247. package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.js.map +1 -1
  248. package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.js +11 -3
  249. package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.js.map +1 -1
  250. package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.js.map +1 -1
  251. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js +3 -2
  252. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js.map +1 -1
  253. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js +2 -2
  254. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js.map +1 -1
  255. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js +1 -1
  256. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js.map +1 -1
  257. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.js +2 -1
  258. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.js.map +1 -1
  259. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.js +3 -3
  260. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.js.map +1 -1
  261. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.js.map +1 -1
  262. package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.js +2 -1
  263. package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.js.map +1 -1
  264. package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.js +7 -7
  265. package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.js.map +1 -1
  266. package/dist-server/graphql/resolvers/worksheet/vas-worksheet.js +11 -10
  267. package/dist-server/graphql/resolvers/worksheet/vas-worksheet.js.map +1 -1
  268. package/dist-server/graphql/resolvers/worksheet/worksheet-by-order-no.js +7 -4
  269. package/dist-server/graphql/resolvers/worksheet/worksheet-by-order-no.js.map +1 -1
  270. package/dist-server/graphql/resolvers/worksheet/worksheet-with-pagination.js +5 -5
  271. package/dist-server/graphql/resolvers/worksheet/worksheet-with-pagination.js.map +1 -1
  272. package/dist-server/graphql/resolvers/worksheet/worksheet.js +72 -42
  273. package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
  274. package/dist-server/graphql/resolvers/worksheet/worksheets.js +42 -17
  275. package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
  276. package/dist-server/graphql/resolvers/worksheet-detail/check-progressing-pallet.js +3 -3
  277. package/dist-server/graphql/resolvers/worksheet-detail/check-progressing-pallet.js.map +1 -1
  278. package/dist-server/graphql/resolvers/worksheet-detail/create-worksheet-detail.js +1 -1
  279. package/dist-server/graphql/resolvers/worksheet-detail/create-worksheet-detail.js.map +1 -1
  280. package/dist-server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.js +1 -1
  281. package/dist-server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.js.map +1 -1
  282. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +13 -10
  283. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
  284. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js +7 -5
  285. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js.map +1 -1
  286. package/dist-server/graphql/resolvers/worksheet-detail/generate-carton-id.js.map +1 -1
  287. package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js +3 -3
  288. package/dist-server/graphql/resolvers/worksheet-detail/generate-pallet-id.js.map +1 -1
  289. package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +5 -2
  290. package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js.map +1 -1
  291. package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js +1 -1
  292. package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
  293. package/dist-server/graphql/resolvers/worksheet-detail/index.js +2 -1
  294. package/dist-server/graphql/resolvers/worksheet-detail/index.js.map +1 -1
  295. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js +81 -0
  296. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -0
  297. package/dist-server/graphql/resolvers/worksheet-detail/update-worksheet-detail.js +2 -2
  298. package/dist-server/graphql/resolvers/worksheet-detail/update-worksheet-detail.js.map +1 -1
  299. package/dist-server/graphql/resolvers/worksheet-detail/worksheet-detail.js +2 -2
  300. package/dist-server/graphql/resolvers/worksheet-detail/worksheet-detail.js.map +1 -1
  301. package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js +1 -1
  302. package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js.map +1 -1
  303. package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details.js +2 -2
  304. package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details.js.map +1 -1
  305. package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js +1 -1
  306. package/dist-server/graphql/resolvers/worksheet-movement/create-worksheet-movement.js.map +1 -1
  307. package/dist-server/graphql/resolvers/worksheet-movement/delete-worksheet-movement.js.map +1 -1
  308. package/dist-server/graphql/resolvers/worksheet-movement/update-worksheet-movement.js +1 -1
  309. package/dist-server/graphql/resolvers/worksheet-movement/update-worksheet-movement.js.map +1 -1
  310. package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movement.js +1 -1
  311. package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movement.js.map +1 -1
  312. package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movements.js +1 -1
  313. package/dist-server/graphql/resolvers/worksheet-movement/worksheet-movements.js.map +1 -1
  314. package/dist-server/graphql/types/worksheet/batch-pick-worksheet-info.js +12 -0
  315. package/dist-server/graphql/types/worksheet/batch-pick-worksheet-info.js.map +1 -0
  316. package/dist-server/graphql/types/worksheet/delivery-order-info.js +3 -0
  317. package/dist-server/graphql/types/worksheet/delivery-order-info.js.map +1 -1
  318. package/dist-server/graphql/types/worksheet/delivery-order-ro.js +18 -0
  319. package/dist-server/graphql/types/worksheet/delivery-order-ro.js.map +1 -0
  320. package/dist-server/graphql/types/worksheet/index.js +26 -15
  321. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  322. package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js +11 -0
  323. package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js.map +1 -0
  324. package/dist-server/graphql/types/worksheet/sellercraft-document.js +11 -0
  325. package/dist-server/graphql/types/worksheet/sellercraft-document.js.map +1 -0
  326. package/dist-server/graphql/types/worksheet-detail/index.js +10 -0
  327. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  328. package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +1 -0
  329. package/dist-server/graphql/types/worksheet-detail/inventory-detail.js.map +1 -1
  330. package/dist-server/tsconfig.tsbuildinfo +1 -1
  331. package/dist-server/utils/inventory-util.js +26 -20
  332. package/dist-server/utils/inventory-util.js.map +1 -1
  333. package/dist-server/utils/worksheet-util.js +8 -6
  334. package/dist-server/utils/worksheet-util.js.map +1 -1
  335. package/package.json +17 -17
  336. package/server/controllers/ecommerce/sellercraft-controller.ts +282 -223
  337. package/server/controllers/inbound/unloading-returning-worksheet-controller.ts +9 -17
  338. package/server/controllers/inbound/unloading-worksheet-controller.ts +55 -66
  339. package/server/controllers/inspect/cycle-count-worksheet-controller.ts +1 -1
  340. package/server/controllers/outbound/packing-worksheet-controller.ts +25 -4
  341. package/server/controllers/outbound/picking-worksheet-controller.ts +292 -172
  342. package/server/controllers/outbound/returning-worksheet-controller.ts +23 -0
  343. package/server/controllers/outbound/sorting-worksheet-controller.ts +20 -20
  344. package/server/controllers/render-elccl-grn.ts +16 -11
  345. package/server/controllers/render-fm-grn.ts +32 -14
  346. package/server/controllers/render-grn.ts +31 -16
  347. package/server/controllers/render-invoices.ts +3 -3
  348. package/server/controllers/render-job-sheet.ts +13 -11
  349. package/server/controllers/render-kimeda-grn.ts +28 -13
  350. package/server/controllers/render-manifest.ts +25 -24
  351. package/server/controllers/render-manual-do.ts +9 -10
  352. package/server/controllers/render-orientage-do.ts +79 -30
  353. package/server/controllers/render-orientage-grn.ts +30 -20
  354. package/server/controllers/render-po.ts +31 -20
  355. package/server/controllers/render-ro-do.ts +151 -124
  356. package/server/controllers/render-seebuu-grn.ts +21 -11
  357. package/server/controllers/vas/vas-worksheet-controller.ts +19 -20
  358. package/server/controllers/worksheet-controller.ts +97 -27
  359. package/server/entities/warehouse-bizplace-onhand-inventory.ts +2 -1
  360. package/server/entities/worksheet-detail.ts +9 -0
  361. package/server/graphql/resolvers/pallet/pallet-outbound.ts +5 -8
  362. package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +8 -6
  363. package/server/graphql/resolvers/worksheet/cancel-draft-release-order.ts +4 -11
  364. package/server/graphql/resolvers/worksheet/check-inventory-release.ts +8 -7
  365. package/server/graphql/resolvers/worksheet/check-stock-take-current-location.ts +10 -8
  366. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +112 -138
  367. package/server/graphql/resolvers/worksheet/create-worksheet.ts +6 -8
  368. package/server/graphql/resolvers/worksheet/cross-dock-picking.ts +8 -7
  369. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +7 -7
  370. package/server/graphql/resolvers/worksheet/cycle-count-worksheet.ts +6 -6
  371. package/server/graphql/resolvers/worksheet/delete-worksheet.ts +5 -3
  372. package/server/graphql/resolvers/worksheet/delivery-order-by-worksheet.ts +87 -53
  373. package/server/graphql/resolvers/worksheet/fetch-delivery-order-ro.ts +190 -0
  374. package/server/graphql/resolvers/worksheet/fetch-sellercraft-document.ts +69 -0
  375. package/server/graphql/resolvers/worksheet/find-release-orders-by-task-no.ts +5 -45
  376. package/server/graphql/resolvers/worksheet/find-release-orders-by-worksheet-no.ts +5 -5
  377. package/server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.ts +80 -0
  378. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts +45 -5
  379. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.ts +11 -10
  380. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts +1 -1
  381. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +7 -14
  382. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-return-worksheet.ts +10 -4
  383. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-worksheet.ts +10 -4
  384. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-putaway-worksheet.ts +5 -3
  385. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +25 -29
  386. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.ts +6 -4
  387. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.ts +6 -4
  388. package/server/graphql/resolvers/worksheet/having-vas.ts +10 -8
  389. package/server/graphql/resolvers/worksheet/index.ts +7 -3
  390. package/server/graphql/resolvers/worksheet/inspecting/activate-cycle-count.ts +5 -3
  391. package/server/graphql/resolvers/worksheet/inspecting/add-extra-pallet.ts +4 -2
  392. package/server/graphql/resolvers/worksheet/inspecting/check-missing-pallet.ts +5 -3
  393. package/server/graphql/resolvers/worksheet/inspecting/complete-inspection.ts +5 -3
  394. package/server/graphql/resolvers/worksheet/inspecting/inspecting.ts +9 -3
  395. package/server/graphql/resolvers/worksheet/inspecting/relocate-pallet.ts +16 -4
  396. package/server/graphql/resolvers/worksheet/inspecting/undo-inspection.ts +5 -3
  397. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +34 -17
  398. package/server/graphql/resolvers/worksheet/loaded-inventories.ts +7 -6
  399. package/server/graphql/resolvers/worksheet/loading/activate-loading.ts +5 -3
  400. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +16 -16
  401. package/server/graphql/resolvers/worksheet/loading/loading.ts +5 -3
  402. package/server/graphql/resolvers/worksheet/loading/undo-loading.ts +5 -3
  403. package/server/graphql/resolvers/worksheet/loading-worksheet.ts +11 -11
  404. package/server/graphql/resolvers/worksheet/not-tally-target-inventories.ts +6 -6
  405. package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +14 -13
  406. package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +4 -4
  407. package/server/graphql/resolvers/worksheet/packing/packing.ts +3 -3
  408. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +21 -17
  409. package/server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.ts +2 -2
  410. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +102 -24
  411. package/server/graphql/resolvers/worksheet/palletizing-pallets.ts +10 -8
  412. package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +107 -97
  413. package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +3 -30
  414. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +3 -3
  415. package/server/graphql/resolvers/worksheet/picking/assign-picking-inventories.ts +23 -4
  416. package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +25 -17
  417. package/server/graphql/resolvers/worksheet/picking/batch-picking.ts +4 -2
  418. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +15 -6
  419. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +37 -42
  420. package/server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts +52 -42
  421. package/server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.ts +15 -6
  422. package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +49 -35
  423. package/server/graphql/resolvers/worksheet/picking/picking.ts +4 -2
  424. package/server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.ts +11 -6
  425. package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +10 -35
  426. package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +2 -2
  427. package/server/graphql/resolvers/worksheet/picking/undo-picking-assignment.ts +9 -3
  428. package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +2 -2
  429. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +11 -11
  430. package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +13 -13
  431. package/server/graphql/resolvers/worksheet/putaway/activate-putaway.ts +5 -3
  432. package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +6 -5
  433. package/server/graphql/resolvers/worksheet/putaway/putaway.ts +5 -3
  434. package/server/graphql/resolvers/worksheet/putaway/undo-putaway.ts +5 -3
  435. package/server/graphql/resolvers/worksheet/putaway-return/activate-putaway-return.ts +5 -3
  436. package/server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.ts +13 -6
  437. package/server/graphql/resolvers/worksheet/putaway-return/putaway-return.ts +5 -3
  438. package/server/graphql/resolvers/worksheet/putaway-return/undo-putaway-return.ts +5 -3
  439. package/server/graphql/resolvers/worksheet/putaway-returning-worksheet.ts +4 -6
  440. package/server/graphql/resolvers/worksheet/putaway-worksheet.ts +4 -6
  441. package/server/graphql/resolvers/worksheet/recommend-putway-location.ts +20 -19
  442. package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +154 -220
  443. package/server/graphql/resolvers/worksheet/relocate-pallet.ts +6 -4
  444. package/server/graphql/resolvers/worksheet/replace-picking-pallets.ts +3 -7
  445. package/server/graphql/resolvers/worksheet/return-worksheet.ts +4 -6
  446. package/server/graphql/resolvers/worksheet/returning/activate-return.ts +5 -3
  447. package/server/graphql/resolvers/worksheet/returning/complete-return.ts +5 -3
  448. package/server/graphql/resolvers/worksheet/returning/returning.ts +5 -3
  449. package/server/graphql/resolvers/worksheet/sorting/activate-sorting.ts +5 -3
  450. package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +7 -5
  451. package/server/graphql/resolvers/worksheet/sorting/complete-worksheet-sorting.ts +5 -3
  452. package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +9 -3
  453. package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +9 -3
  454. package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +5 -5
  455. package/server/graphql/resolvers/worksheet/transfer.ts +10 -12
  456. package/server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.ts +13 -7
  457. package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +9 -9
  458. package/server/graphql/resolvers/worksheet/unloading/activate-unloading.ts +9 -5
  459. package/server/graphql/resolvers/worksheet/unloading/complete-product-scan-unload.ts +5 -3
  460. package/server/graphql/resolvers/worksheet/unloading/complete-unloading-partially.ts +5 -3
  461. package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +8 -4
  462. package/server/graphql/resolvers/worksheet/unloading/scan-product-unload.ts +5 -3
  463. package/server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.ts +2 -2
  464. package/server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.ts +2 -2
  465. package/server/graphql/resolvers/worksheet/unloading/undo-unloading.ts +2 -2
  466. package/server/graphql/resolvers/worksheet/unloading/unload.ts +7 -7
  467. package/server/graphql/resolvers/worksheet/unloading-return/activate-unloading-return.ts +5 -3
  468. package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-return-partially.ts +5 -3
  469. package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.ts +9 -5
  470. package/server/graphql/resolvers/worksheet/unloading-return-worksheet.ts +4 -6
  471. package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +5 -7
  472. package/server/graphql/resolvers/worksheet/update-worksheet.ts +5 -5
  473. package/server/graphql/resolvers/worksheet/vas/activate-vas.ts +5 -3
  474. package/server/graphql/resolvers/worksheet/vas/assign-vas-inventories.ts +5 -3
  475. package/server/graphql/resolvers/worksheet/vas/complete-vas.ts +5 -3
  476. package/server/graphql/resolvers/worksheet/vas/execute-vas.ts +5 -3
  477. package/server/graphql/resolvers/worksheet/vas/undo-vas-inventory.ts +5 -3
  478. package/server/graphql/resolvers/worksheet/vas/undo-vas.ts +5 -3
  479. package/server/graphql/resolvers/worksheet/vas-candidates.ts +20 -17
  480. package/server/graphql/resolvers/worksheet/vas-inventories.ts +9 -7
  481. package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +36 -18
  482. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.ts +12 -5
  483. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.ts +6 -3
  484. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.ts +14 -6
  485. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.ts +5 -7
  486. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts +3 -2
  487. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts +8 -5
  488. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts +6 -16
  489. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.ts +5 -2
  490. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.ts +10 -8
  491. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.ts +3 -5
  492. package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.ts +6 -6
  493. package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.ts +10 -13
  494. package/server/graphql/resolvers/worksheet/vas-worksheet.ts +13 -11
  495. package/server/graphql/resolvers/worksheet/worksheet-by-order-no.ts +13 -8
  496. package/server/graphql/resolvers/worksheet/worksheet-with-pagination.ts +7 -5
  497. package/server/graphql/resolvers/worksheet/worksheet.ts +86 -32
  498. package/server/graphql/resolvers/worksheet/worksheets.ts +60 -19
  499. package/server/graphql/resolvers/worksheet-detail/check-progressing-pallet.ts +7 -8
  500. package/server/graphql/resolvers/worksheet-detail/create-worksheet-detail.ts +4 -6
  501. package/server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.ts +5 -6
  502. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +13 -19
  503. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +19 -27
  504. package/server/graphql/resolvers/worksheet-detail/generate-carton-id.ts +2 -4
  505. package/server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts +6 -6
  506. package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +7 -4
  507. package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +3 -3
  508. package/server/graphql/resolvers/worksheet-detail/index.ts +3 -1
  509. package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +164 -0
  510. package/server/graphql/resolvers/worksheet-detail/update-worksheet-detail.ts +8 -7
  511. package/server/graphql/resolvers/worksheet-detail/worksheet-detail.ts +6 -7
  512. package/server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.ts +5 -5
  513. package/server/graphql/resolvers/worksheet-detail/worksheet-details.ts +6 -7
  514. package/server/graphql/resolvers/worksheet-movement/create-worksheet-movement.ts +4 -3
  515. package/server/graphql/resolvers/worksheet-movement/delete-worksheet-movement.ts +3 -2
  516. package/server/graphql/resolvers/worksheet-movement/update-worksheet-movement.ts +2 -4
  517. package/server/graphql/resolvers/worksheet-movement/worksheet-movement.ts +3 -6
  518. package/server/graphql/resolvers/worksheet-movement/worksheet-movements.ts +4 -4
  519. package/server/graphql/types/worksheet/batch-pick-worksheet-info.ts +9 -0
  520. package/server/graphql/types/worksheet/delivery-order-info.ts +3 -0
  521. package/server/graphql/types/worksheet/delivery-order-ro.ts +15 -0
  522. package/server/graphql/types/worksheet/index.ts +49 -38
  523. package/server/graphql/types/worksheet/multiple-release-good-worksheet.ts +8 -0
  524. package/server/graphql/types/worksheet/sellercraft-document.ts +8 -0
  525. package/server/graphql/types/worksheet-detail/index.ts +10 -0
  526. package/server/graphql/types/worksheet-detail/inventory-detail.ts +1 -0
  527. package/server/utils/inventory-util.ts +20 -14
  528. package/server/utils/worksheet-util.ts +10 -6
  529. package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js +0 -25
  530. package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js.map +0 -1
  531. package/dist-server/graphql/types/worksheet/airwaybill.js +0 -11
  532. package/dist-server/graphql/types/worksheet/airwaybill.js.map +0 -1
  533. package/server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.ts +0 -30
  534. package/server/graphql/types/worksheet/airwaybill.ts +0 -7
@@ -17,39 +17,49 @@ const datetime_util_1 = require("../utils/datetime-util");
17
17
  const REPORT_API_URL = env_1.config.get('reportApiUrl', 'http://localhost:8888/rest/report/show_html');
18
18
  async function renderSeebuuGRN({ grnNo }, context) {
19
19
  // 1. find domain
20
- const domain = await (0, typeorm_1.getRepository)(shell_1.Domain).findOne({
20
+ const domain = await (0, shell_1.getRepository)(shell_1.Domain).findOne({
21
21
  where: { id: context.state.domain.id }
22
22
  });
23
23
  // 2. find grn
24
- const foundGRN = await (0, typeorm_1.getRepository)(sales_base_1.GoodsReceivalNote).findOne({
25
- where: { domain, name: grnNo },
24
+ const foundGRN = await (0, shell_1.getRepository)(sales_base_1.GoodsReceivalNote).findOne({
25
+ where: { domain: { id: domain.id }, name: grnNo },
26
26
  relations: ['domain', 'bizplace', 'bizplace.domain', 'bizplace.company', 'arrivalNotice']
27
27
  });
28
28
  // 3. find GAN
29
29
  const foundGAN = foundGRN.arrivalNotice;
30
30
  // 4. find customer bizplace
31
31
  const partnerBiz = foundGRN.bizplace;
32
- const partnerDomain = await (0, typeorm_1.getRepository)(auth_base_1.Partner).findOne({
32
+ const partnerDomain = await (0, shell_1.getRepository)(auth_base_1.Partner).findOne({
33
33
  where: { partnerDomain: partnerBiz.domain },
34
34
  relations: ['domain']
35
35
  });
36
36
  const domainOwner = partnerDomain.domain;
37
- const domainBizplace = await (0, typeorm_1.getRepository)(biz_base_1.Bizplace).findOne({
37
+ const domainBizplace = await (0, shell_1.getRepository)(biz_base_1.Bizplace).findOne({
38
38
  where: { domain: domainOwner },
39
39
  relations: ['company']
40
40
  });
41
41
  // 5. find domain contact point
42
- const foundCP = await (0, typeorm_1.getRepository)(biz_base_1.ContactPoint).findOne({
43
- where: { domain, bizplace: domainBizplace }
42
+ const foundCP = await (0, shell_1.getRepository)(biz_base_1.ContactPoint).findOne({
43
+ where: { domain: { id: domain.id }, bizplace: domainBizplace }
44
44
  });
45
45
  // 6. find unloading worksheet
46
- const foundWS = await (0, typeorm_1.getRepository)(entities_1.Worksheet).findOne({
47
- where: { domain, arrivalNotice: foundGAN, type: constants_1.WORKSHEET_TYPE.UNLOADING, status: sales_base_1.ORDER_STATUS.DONE },
46
+ const foundWS = await (0, shell_1.getRepository)(entities_1.Worksheet).findOne({
47
+ where: {
48
+ domain: { id: domain.id },
49
+ arrivalNotice: foundGAN,
50
+ type: constants_1.WORKSHEET_TYPE.UNLOADING,
51
+ status: sales_base_1.ORDER_STATUS.DONE
52
+ },
48
53
  relations: ['worksheetDetails', 'updater']
49
54
  });
50
55
  // find putaway worksheet
51
- const foundPutawayWS = await (0, typeorm_1.getRepository)(entities_1.Worksheet).findOne({
52
- where: { domain, arrivalNotice: foundGAN, type: constants_1.WORKSHEET_TYPE.PUTAWAY, status: sales_base_1.ORDER_STATUS.DONE },
56
+ const foundPutawayWS = await (0, shell_1.getRepository)(entities_1.Worksheet).findOne({
57
+ where: {
58
+ domain: { id: domain.id },
59
+ arrivalNotice: foundGAN,
60
+ type: constants_1.WORKSHEET_TYPE.PUTAWAY,
61
+ status: sales_base_1.ORDER_STATUS.DONE
62
+ },
53
63
  relations: ['worksheetDetails', 'updater']
54
64
  });
55
65
  let invItems;
@@ -82,26 +92,26 @@ async function renderSeebuuGRN({ grnNo }, context) {
82
92
  `, [foundGAN.id]);
83
93
  });
84
94
  // 7. find grn template based on category
85
- const foundTemplate = await (0, typeorm_1.getRepository)(attachment_base_1.Attachment).findOne({
86
- where: { domain, category: constants_1.TEMPLATE_TYPE.GRN_TEMPLATE }
95
+ const foundTemplate = await (0, shell_1.getRepository)(attachment_base_1.Attachment).findOne({
96
+ where: { domain: { id: domain.id }, category: constants_1.TEMPLATE_TYPE.GRN_TEMPLATE }
87
97
  });
88
98
  // 8. find grn logo
89
- const foundLogo = await (0, typeorm_1.getRepository)(attachment_base_1.Attachment).findOne({
99
+ const foundLogo = await (0, shell_1.getRepository)(attachment_base_1.Attachment).findOne({
90
100
  where: {
91
- domain,
101
+ domain: { id: domain.id },
92
102
  category: constants_1.TEMPLATE_TYPE.LOGO
93
103
  }
94
104
  });
95
105
  // 9. find signature
96
- const foundSignature = await (0, typeorm_1.getRepository)(attachment_base_1.Attachment).findOne({
106
+ const foundSignature = await (0, shell_1.getRepository)(attachment_base_1.Attachment).findOne({
97
107
  where: {
98
- domain,
108
+ domain: { id: domain.id },
99
109
  category: constants_1.TEMPLATE_TYPE.SIGNATURE
100
110
  }
101
111
  });
102
- const foundCop = await (0, typeorm_1.getRepository)(attachment_base_1.Attachment).findOne({
112
+ const foundCop = await (0, shell_1.getRepository)(attachment_base_1.Attachment).findOne({
103
113
  where: {
104
- domain,
114
+ domain: { id: domain.id },
105
115
  category: constants_1.TEMPLATE_TYPE.COP
106
116
  }
107
117
  });
@@ -1 +1 @@
1
- {"version":3,"file":"render-seebuu-grn.js","sourceRoot":"","sources":["../../server/controllers/render-seebuu-grn.ts"],"names":[],"mappings":"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","sourcesContent":["import FormData from 'form-data'\nimport fetch from 'node-fetch'\nimport { EntityManager, getManager, getRepository } from 'typeorm'\n\nimport { Attachment, STORAGE } from '@things-factory/attachment-base'\nimport { Partner } from '@things-factory/auth-base'\nimport { Bizplace, ContactPoint } from '@things-factory/biz-base'\nimport { config } from '@things-factory/env'\nimport { ArrivalNotice, GoodsReceivalNote, ORDER_STATUS } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\n\nimport { TEMPLATE_TYPE, WORKSHEET_TYPE } from '../constants'\nimport { Worksheet } from '../entities'\nimport { DateTimeConverter } from '../utils/datetime-util'\n\nconst REPORT_API_URL = config.get('reportApiUrl', 'http://localhost:8888/rest/report/show_html')\n\nexport async function renderSeebuuGRN({ grnNo }, context: any) {\n // 1. find domain\n const domain: Domain = await getRepository(Domain).findOne({\n where: { id: context.state.domain.id }\n })\n\n // 2. find grn\n const foundGRN: GoodsReceivalNote = await getRepository(GoodsReceivalNote).findOne({\n where: { domain, name: grnNo },\n relations: ['domain', 'bizplace', 'bizplace.domain', 'bizplace.company', 'arrivalNotice']\n })\n\n // 3. find GAN\n const foundGAN: ArrivalNotice = foundGRN.arrivalNotice\n\n // 4. find customer bizplace\n const partnerBiz: Bizplace = foundGRN.bizplace\n\n const partnerDomain: Partner = await getRepository(Partner).findOne({\n where: { partnerDomain: partnerBiz.domain },\n relations: ['domain']\n })\n\n const domainOwner: Domain = partnerDomain.domain\n const domainBizplace: Bizplace = await getRepository(Bizplace).findOne({\n where: { domain: domainOwner },\n relations: ['company']\n })\n\n // 5. find domain contact point\n const foundCP: ContactPoint = await getRepository(ContactPoint).findOne({\n where: { domain, bizplace: domainBizplace }\n })\n\n // 6. find unloading worksheet\n const foundWS: Worksheet = await getRepository(Worksheet).findOne({\n where: { domain, arrivalNotice: foundGAN, type: WORKSHEET_TYPE.UNLOADING, status: ORDER_STATUS.DONE },\n relations: ['worksheetDetails', 'updater']\n })\n\n // find putaway worksheet\n const foundPutawayWS: Worksheet = await getRepository(Worksheet).findOne({\n where: { domain, arrivalNotice: foundGAN, type: WORKSHEET_TYPE.PUTAWAY, status: ORDER_STATUS.DONE },\n relations: ['worksheetDetails', 'updater']\n })\n\n let invItems: any\n\n await getManager().transaction(async (trxMgr: EntityManager) => {\n invItems = await trxMgr.query(\n `\n select op.id, op.\"name\", op.description, op.\"type\", op.batch_id, op.adjusted_batch_id, op.adjusted_pallet_qty, op.packing_type, \n ih.uom, op.uom_value, ih.qty, op.pallet_qty, op.actual_pallet_qty, op.total_uom_value, op.release_qty, \n coalesce((select nett_weight from product_details prdw where prdw.product_id = op.product_id and prdw.packing_type = op.packing_type and prdw.packing_size = op.packing_size order by nett_weight desc limit 1),0) as unit_nett_weight,\n coalesce((select gross_weight from product_details prdw where prdw.product_id = op.product_id and prdw.packing_type = op.packing_type and prdw.packing_size = op.packing_size order by nett_weight desc limit 1),0) as unit_gross_weight,\n op.unit_price, op.unpack_uom_value, op.unpack_qty, op.discount_amt, op.tax_rate, op.misc_amt, \n op.adjusted_packing_type, op.manufacture_date, op.adjusted_uom, op.adjusted_uom_value, op.adjusted_pack_qty, op.adjusted_total_uom_value, \n op.batch_id_ref, op.adjusted_batch_id_ref, \n op.adjusted_unit_price, op.packing_size, op.release_uom_value,\n ih.expiry_date as expiration_date, p.sku as product_sku, p.name as product_name, p.description as product_description,\n case when ih.reusable_pallet_id notnull then concat(ih.qty, ' ', ih.packing_type, '(S) ', plt.name) else concat(ih.pallet, ' PALLET(S)') end as remark\n from order_products op \n left join (\n select product_id, batch_id, reusable_pallet_id, packing_type, sum(qty) as qty,\n sum(uom_value) as uom_value, uom, count(distinct pallet_id) as pallet,\n string_agg(distinct expiration_date::varchar,', ' order by expiration_date::varchar) as expiry_date \n from reduced_inventory_histories rih \n where ref_order_id::uuid = $1\n and transaction_type = 'UNLOADING' \n group by reusable_pallet_id, product_id, batch_id, packing_type, uom\n ) ih on op.product_id = ih.product_id and op.batch_id = ih.batch_id and op.packing_type = ih.packing_type and op.uom = ih.uom\n left join pallets plt on plt.id = ih.reusable_pallet_id\n inner join products p on op.product_id = p.id\n where op.arrival_notice_id::uuid = $1\n order by p.sku\n `,\n [foundGAN.id]\n )\n })\n\n // 7. find grn template based on category\n const foundTemplate: Attachment = await getRepository(Attachment).findOne({\n where: { domain, category: TEMPLATE_TYPE.GRN_TEMPLATE }\n })\n\n // 8. find grn logo\n const foundLogo: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain,\n category: TEMPLATE_TYPE.LOGO\n }\n })\n\n // 9. find signature\n const foundSignature: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain,\n category: TEMPLATE_TYPE.SIGNATURE\n }\n })\n\n const foundCop: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain,\n category: TEMPLATE_TYPE.COP\n }\n })\n\n const template = await STORAGE.readFile(foundTemplate.path, 'utf-8')\n\n let logo = null\n if (foundLogo?.path) {\n logo = 'data:' + foundLogo.mimetype + ';base64,' + (await STORAGE.readFile(foundLogo.path, 'base64'))\n }\n\n let signature = null\n if (foundSignature?.path) {\n signature = 'data:' + foundSignature.mimetype + ';base64,' + (await STORAGE.readFile(foundSignature.path, 'base64'))\n }\n\n let cop = null\n if (foundCop?.path) {\n cop = 'data:' + foundSignature.mimetype + ';base64,' + (await STORAGE.readFile(foundCop.path, 'base64'))\n }\n\n const data = {\n logo_url: logo,\n sign_url: signature,\n cop_url: cop,\n customer_biz: partnerBiz.name,\n customer_address: partnerBiz.address,\n company_domain: domainBizplace.company.name,\n company_phone: foundCP.phone,\n company_email: foundCP.email,\n company_brn: domainBizplace.company.brn,\n company_address: domainBizplace.company.address,\n order_no: foundGRN.name,\n gan_no: foundGAN.name,\n unload_date: DateTimeConverter.date(foundWS.endedAt),\n ref_no: `${foundGAN.refNo}`,\n ref_no1: foundGAN.refNo2 ? `${foundGAN.refNo2}` : '',\n ref_no2: foundGAN.refNo3 ? `${foundGAN.refNo3}` : '',\n received_date: DateTimeConverter.date(foundWS.endedAt),\n truck_no: foundGAN.truckNo || '',\n container_no: foundGAN.containerNo || '',\n unloaded_by: foundWS ? foundWS.updater.name : '',\n putaway_by: foundPutawayWS ? foundPutawayWS.updater.name : '',\n delivery_order_no: foundGAN.deliveryOrderNo ? foundGAN.deliveryOrderNo : '',\n product_list: invItems.map((item, idx) => {\n return {\n list_no: idx + 1,\n product_sku: `${item.product_sku}`,\n product_name: `${item.product_name}(${item.product_description})`,\n product_desc: item.product_description,\n product_nameOnly: item.product_name,\n product_type: item.packing_type,\n product_batch: item.batch_id,\n product_qty: item.qty,\n product_uom_value: `${Math.round(item.uom_value * 100) / 100} ${item.uom}`,\n product_unit_nett_weight: parseFloat(item.unit_nett_weight),\n product_total_nett_weight: parseFloat(item.unit_nett_weight) * parseFloat(item.qty),\n product_unit_gross_weight: parseFloat(item.unit_gross_weight),\n product_total_gross_weight: parseFloat(item.unit_gross_weight) * parseFloat(item.qty),\n pallet_qty: item.actual_pallet_qty,\n expiry_date: item.expiration_date,\n remark: (item.remark ? item.remark : '') + (item.issue ? ' [Issue]: ' + item.issue : '')\n }\n })\n }\n\n const formData = new FormData()\n formData.append('template', template)\n formData.append('jsonString', JSON.stringify(data))\n\n const response = await fetch(REPORT_API_URL, {\n method: 'POST',\n body: formData\n })\n\n return await response.text()\n}\n"]}
1
+ {"version":3,"file":"render-seebuu-grn.js","sourceRoot":"","sources":["../../server/controllers/render-seebuu-grn.ts"],"names":[],"mappings":"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","sourcesContent":["import FormData from 'form-data'\nimport fetch from 'node-fetch'\nimport { EntityManager, getManager } from 'typeorm'\n\nimport { Attachment, STORAGE } from '@things-factory/attachment-base'\nimport { Partner } from '@things-factory/auth-base'\nimport { Bizplace, ContactPoint } from '@things-factory/biz-base'\nimport { config } from '@things-factory/env'\nimport { ArrivalNotice, GoodsReceivalNote, ORDER_STATUS } from '@things-factory/sales-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { TEMPLATE_TYPE, WORKSHEET_TYPE } from '../constants'\nimport { Worksheet } from '../entities'\nimport { DateTimeConverter } from '../utils/datetime-util'\n\nconst REPORT_API_URL = config.get('reportApiUrl', 'http://localhost:8888/rest/report/show_html')\n\nexport async function renderSeebuuGRN({ grnNo }, context: ResolverContext) {\n // 1. find domain\n const domain: Domain = await getRepository(Domain).findOne({\n where: { id: context.state.domain.id }\n })\n\n // 2. find grn\n const foundGRN: GoodsReceivalNote = await getRepository(GoodsReceivalNote).findOne({\n where: { domain: { id: domain.id }, name: grnNo },\n relations: ['domain', 'bizplace', 'bizplace.domain', 'bizplace.company', 'arrivalNotice']\n })\n\n // 3. find GAN\n const foundGAN: ArrivalNotice = foundGRN.arrivalNotice\n\n // 4. find customer bizplace\n const partnerBiz: Bizplace = foundGRN.bizplace\n\n const partnerDomain: Partner = await getRepository(Partner).findOne({\n where: { partnerDomain: partnerBiz.domain },\n relations: ['domain']\n })\n\n const domainOwner: Domain = partnerDomain.domain\n const domainBizplace: Bizplace = await getRepository(Bizplace).findOne({\n where: { domain: domainOwner },\n relations: ['company']\n })\n\n // 5. find domain contact point\n const foundCP: ContactPoint = await getRepository(ContactPoint).findOne({\n where: { domain: { id: domain.id }, bizplace: domainBizplace }\n })\n\n // 6. find unloading worksheet\n const foundWS: Worksheet = await getRepository(Worksheet).findOne({\n where: {\n domain: { id: domain.id },\n arrivalNotice: foundGAN,\n type: WORKSHEET_TYPE.UNLOADING,\n status: ORDER_STATUS.DONE\n },\n relations: ['worksheetDetails', 'updater']\n })\n\n // find putaway worksheet\n const foundPutawayWS: Worksheet = await getRepository(Worksheet).findOne({\n where: {\n domain: { id: domain.id },\n arrivalNotice: foundGAN,\n type: WORKSHEET_TYPE.PUTAWAY,\n status: ORDER_STATUS.DONE\n },\n relations: ['worksheetDetails', 'updater']\n })\n\n let invItems: any\n\n await getManager().transaction(async (trxMgr: EntityManager) => {\n invItems = await trxMgr.query(\n `\n select op.id, op.\"name\", op.description, op.\"type\", op.batch_id, op.adjusted_batch_id, op.adjusted_pallet_qty, op.packing_type, \n ih.uom, op.uom_value, ih.qty, op.pallet_qty, op.actual_pallet_qty, op.total_uom_value, op.release_qty, \n coalesce((select nett_weight from product_details prdw where prdw.product_id = op.product_id and prdw.packing_type = op.packing_type and prdw.packing_size = op.packing_size order by nett_weight desc limit 1),0) as unit_nett_weight,\n coalesce((select gross_weight from product_details prdw where prdw.product_id = op.product_id and prdw.packing_type = op.packing_type and prdw.packing_size = op.packing_size order by nett_weight desc limit 1),0) as unit_gross_weight,\n op.unit_price, op.unpack_uom_value, op.unpack_qty, op.discount_amt, op.tax_rate, op.misc_amt, \n op.adjusted_packing_type, op.manufacture_date, op.adjusted_uom, op.adjusted_uom_value, op.adjusted_pack_qty, op.adjusted_total_uom_value, \n op.batch_id_ref, op.adjusted_batch_id_ref, \n op.adjusted_unit_price, op.packing_size, op.release_uom_value,\n ih.expiry_date as expiration_date, p.sku as product_sku, p.name as product_name, p.description as product_description,\n case when ih.reusable_pallet_id notnull then concat(ih.qty, ' ', ih.packing_type, '(S) ', plt.name) else concat(ih.pallet, ' PALLET(S)') end as remark\n from order_products op \n left join (\n select product_id, batch_id, reusable_pallet_id, packing_type, sum(qty) as qty,\n sum(uom_value) as uom_value, uom, count(distinct pallet_id) as pallet,\n string_agg(distinct expiration_date::varchar,', ' order by expiration_date::varchar) as expiry_date \n from reduced_inventory_histories rih \n where ref_order_id::uuid = $1\n and transaction_type = 'UNLOADING' \n group by reusable_pallet_id, product_id, batch_id, packing_type, uom\n ) ih on op.product_id = ih.product_id and op.batch_id = ih.batch_id and op.packing_type = ih.packing_type and op.uom = ih.uom\n left join pallets plt on plt.id = ih.reusable_pallet_id\n inner join products p on op.product_id = p.id\n where op.arrival_notice_id::uuid = $1\n order by p.sku\n `,\n [foundGAN.id]\n )\n })\n\n // 7. find grn template based on category\n const foundTemplate: Attachment = await getRepository(Attachment).findOne({\n where: { domain: { id: domain.id }, category: TEMPLATE_TYPE.GRN_TEMPLATE }\n })\n\n // 8. find grn logo\n const foundLogo: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: domain.id },\n category: TEMPLATE_TYPE.LOGO\n }\n })\n\n // 9. find signature\n const foundSignature: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: domain.id },\n category: TEMPLATE_TYPE.SIGNATURE\n }\n })\n\n const foundCop: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: domain.id },\n category: TEMPLATE_TYPE.COP\n }\n })\n\n const template = await STORAGE.readFile(foundTemplate.path, 'utf-8')\n\n let logo = null\n if (foundLogo?.path) {\n logo = 'data:' + foundLogo.mimetype + ';base64,' + (await STORAGE.readFile(foundLogo.path, 'base64'))\n }\n\n let signature = null\n if (foundSignature?.path) {\n signature = 'data:' + foundSignature.mimetype + ';base64,' + (await STORAGE.readFile(foundSignature.path, 'base64'))\n }\n\n let cop = null\n if (foundCop?.path) {\n cop = 'data:' + foundSignature.mimetype + ';base64,' + (await STORAGE.readFile(foundCop.path, 'base64'))\n }\n\n const data = {\n logo_url: logo,\n sign_url: signature,\n cop_url: cop,\n customer_biz: partnerBiz.name,\n customer_address: partnerBiz.address,\n company_domain: domainBizplace.company.name,\n company_phone: foundCP.phone,\n company_email: foundCP.email,\n company_brn: domainBizplace.company.brn,\n company_address: domainBizplace.company.address,\n order_no: foundGRN.name,\n gan_no: foundGAN.name,\n unload_date: DateTimeConverter.date(foundWS.endedAt),\n ref_no: `${foundGAN.refNo}`,\n ref_no1: foundGAN.refNo2 ? `${foundGAN.refNo2}` : '',\n ref_no2: foundGAN.refNo3 ? `${foundGAN.refNo3}` : '',\n received_date: DateTimeConverter.date(foundWS.endedAt),\n truck_no: foundGAN.truckNo || '',\n container_no: foundGAN.containerNo || '',\n unloaded_by: foundWS ? foundWS.updater.name : '',\n putaway_by: foundPutawayWS ? foundPutawayWS.updater.name : '',\n delivery_order_no: foundGAN.deliveryOrderNo ? foundGAN.deliveryOrderNo : '',\n product_list: invItems.map((item, idx) => {\n return {\n list_no: idx + 1,\n product_sku: `${item.product_sku}`,\n product_name: `${item.product_name}(${item.product_description})`,\n product_desc: item.product_description,\n product_nameOnly: item.product_name,\n product_type: item.packing_type,\n product_batch: item.batch_id,\n product_qty: item.qty,\n product_uom_value: `${Math.round(item.uom_value * 100) / 100} ${item.uom}`,\n product_unit_nett_weight: parseFloat(item.unit_nett_weight),\n product_total_nett_weight: parseFloat(item.unit_nett_weight) * parseFloat(item.qty),\n product_unit_gross_weight: parseFloat(item.unit_gross_weight),\n product_total_gross_weight: parseFloat(item.unit_gross_weight) * parseFloat(item.qty),\n pallet_qty: item.actual_pallet_qty,\n expiry_date: item.expiration_date,\n remark: (item.remark ? item.remark : '') + (item.issue ? ' [Issue]: ' + item.issue : '')\n }\n })\n }\n\n const formData = new FormData()\n formData.append('template', template)\n formData.append('jsonString', JSON.stringify(data))\n\n const response = await fetch(REPORT_API_URL, {\n method: 'POST',\n body: formData\n })\n\n return await response.text()\n}\n"]}
@@ -41,9 +41,8 @@ class VasWorksheetController extends worksheet_controller_1.WorksheetController
41
41
  }
42
42
  async assignInventories(worksheetDetailIds, inventories) {
43
43
  var _a, _b, _c;
44
- const worksheetDetails = await this.trxMgr
45
- .getRepository(entities_1.WorksheetDetail)
46
- .findByIds(worksheetDetailIds, {
44
+ const worksheetDetails = await this.trxMgr.getRepository(entities_1.WorksheetDetail).find({
45
+ where: { id: (0, typeorm_1.In)(worksheetDetailIds) },
47
46
  relations: [
48
47
  'bizplace',
49
48
  'worksheet',
@@ -199,7 +198,7 @@ class VasWorksheetController extends worksheet_controller_1.WorksheetController
199
198
  const bizplace = worksheetDetail.bizplace;
200
199
  const location = await this.trxMgr.getRepository(warehouse_base_1.Location).findOne({
201
200
  where: {
202
- domain: this.domain,
201
+ domain: { id: this.domain.id },
203
202
  name: locationName,
204
203
  type: (0, typeorm_1.In)([warehouse_base_1.LOCATION_TYPE.SHELF, warehouse_base_1.LOCATION_TYPE.BUFFER, warehouse_base_1.LOCATION_TYPE.FLOOR])
205
204
  },
@@ -422,7 +421,8 @@ class VasWorksheetController extends worksheet_controller_1.WorksheetController
422
421
  throw new Error(`Can't find inventory by pallet ID (${palletId})`);
423
422
  // 현재 작업 set에서 하나라도 모두 완료된 유형의 VAS가 존재할 경우
424
423
  // 해당 VAS를 처리한 pallet 리스트에 한하여 작업을 수행 해야함 (동일한 SET는 동일한 군집의 Pallet을 대상으로 처리되어야 하기 때문에)
425
- worksheet = await this.trxMgr.getRepository(entities_1.Worksheet).findOne(worksheet.id, {
424
+ worksheet = await this.trxMgr.getRepository(entities_1.Worksheet).findOne({
425
+ where: { id: worksheet.id },
426
426
  relations: [
427
427
  'worksheetDetails',
428
428
  'worksheetDetails.targetVas',
@@ -1 +1 @@
1
- {"version":3,"file":"vas-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/vas/vas-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, Equal, In, Not } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ArrivalNotice,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS,\n OrderNoGenerator,\n OrderVas,\n ReleaseGood,\n VAS,\n VasOrder\n} from '@things-factory/sales-base'\nimport {\n Inventory,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE,\n InventoryHistory,\n InventoryNoGenerator,\n Location,\n LOCATION_TYPE,\n Warehouse\n} from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport {\n completeRelabeling,\n completeRepackaging,\n completeRepalletizing,\n completeUnpacking,\n FeaturedInventoryInterface,\n RefOrderType\n} from '../../graphql/resolvers/worksheet/vas-transactions'\nimport { PackingUnits } from '../../graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging'\nimport { generateInventoryHistory } from '../../utils'\nimport { ReferenceOrderType, WorksheetController } from '../worksheet-controller'\n\ntype CompleteTransactionType = (trxMgr: EntityManager, orderVas: OrderVas, user: User) => Promise<void>\n\nexport class VasWorksheetController extends WorksheetController {\n private readonly COMPLETE_TRX_MAP: Record<string, CompleteTransactionType> = {\n 'vas-repalletizing': completeRepalletizing,\n 'vas-repack': completeRepackaging,\n 'vas-repack-relabel': completeRepackaging,\n 'vas-relabel': completeRelabeling,\n 'vas-unpack': completeUnpacking\n }\n\n async generateVasWorksheet(referenceOrder: ReferenceOrderType): Promise<Worksheet> {\n let orderStatus = referenceOrder.status\n let orderVASs: OrderVas[]\n\n if (referenceOrder instanceof ArrivalNotice) {\n const arrivalNotice: ArrivalNotice = await this.findRefOrder(ArrivalNotice, referenceOrder, ['orderVass'])\n orderVASs = arrivalNotice.orderVass\n } else if (referenceOrder instanceof ReleaseGood) {\n const releaseGood: ReleaseGood = await this.findRefOrder(ReleaseGood, referenceOrder, ['orderVass'])\n orderVASs = releaseGood.orderVass\n } else {\n const vasOrder: VasOrder = await this.findRefOrder(VasOrder, referenceOrder, ['orderVass'])\n orderVASs = vasOrder.orderVass\n orderStatus = ORDER_STATUS.READY_TO_EXECUTE\n }\n\n return await this.generateWorksheet(\n WORKSHEET_TYPE.VAS,\n referenceOrder,\n orderVASs,\n orderStatus,\n ORDER_VAS_STATUS.READY_TO_PROCESS\n )\n }\n\n async assignInventories(worksheetDetailIds: string[], inventories: Partial<Inventory>): Promise<void> {\n const worksheetDetails: WorksheetDetail[] = await this.trxMgr\n .getRepository(WorksheetDetail)\n .findByIds(worksheetDetailIds, {\n relations: [\n 'bizplace',\n 'worksheet',\n 'targetVas',\n 'targetVas.arrivalNotice',\n 'targetVas.releaseGood',\n 'targetVas.shippingOrder',\n 'targetVas.vasOrder',\n 'targetVas.vas',\n 'targetVas.targetProduct'\n ]\n })\n\n let seq: number = 0\n\n for (let worksheetDetail of worksheetDetails) {\n const bizplace: Bizplace = worksheetDetail.bizplace\n const worksheet: Worksheet = worksheetDetail.worksheet\n const targetVas: OrderVas = worksheetDetail.targetVas\n\n let newWorksheetDetail: Partial<WorksheetDetail> = Object.assign({}, worksheetDetail)\n delete newWorksheetDetail.id\n\n // get accumulated inventories qty\n const accInventoriesQty: number = inventories.reduce((acc, inv) => {\n return acc + inv.qty\n }, 0)\n\n let operationGuide = JSON.parse(targetVas.operationGuide)\n let vasOperationGuide = targetVas.vas?.operationGuide\n\n if (vasOperationGuide === 'vas-repack' || vasOperationGuide === 'vas-repack-relabel') {\n const mainInventory: Inventory = inventories[0]\n const featuredInvs: FeaturedInventoryInterface[] = []\n const foundInvs: Inventory[] = await this.trxMgr\n .getRepository(Inventory)\n .findByIds(inventories.filter(inv => inv.id !== mainInventory.id).map(inv => inv.id))\n\n /* Update lockedQty of featuredInvs */\n for (let inventory of foundInvs) {\n const transferQty: number = inventories.find(inv => inv.id === inventory.id).qty\n const transferUomValue: number = Math.round((inventory.uomValue / inventory.qty) * transferQty * 100) / 100\n\n inventory.lockedQty += transferQty\n inventory.lockedUomValue += transferUomValue\n\n await this.trxMgr.getRepository(Inventory).save(inventory)\n\n let featuredInv: FeaturedInventoryInterface = {\n palletId: inventory.palletId,\n originalQty: transferQty,\n originalUomValue: transferUomValue,\n packingSize: inventory.packingSize,\n uomValuePerQty: inventory.uomValue / (inventory.qty * inventory.packingSize)\n }\n\n switch (operationGuide.data?.packingUnit) {\n case PackingUnits.QTY:\n featuredInv.currentUnitQty = transferQty * inventory.packingSize\n break\n\n case PackingUnits.UOM:\n featuredInv.currentUomValue = transferUomValue\n break\n }\n\n featuredInvs.push(featuredInv)\n }\n\n /* assign featuredInvs inside operationGuide.data */\n operationGuide.data = {\n ...operationGuide.data,\n featuredInvs\n }\n\n /* assign main inventory as the only inventories */\n inventories = [mainInventory]\n }\n\n for (let inventory of inventories) {\n let newTargetVas: OrderVas = new OrderVas()\n\n const foundInventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne(inventory.id)\n if (!foundInventory) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(inventory.id))\n\n // assigned inventory qty that was passed from client side\n const assignedQty = inventory.qty\n const unitUomValue: number = foundInventory.uomValue / foundInventory.qty\n\n // update unpack qty for unpacking vas\n if (vasOperationGuide === 'vas-unpack') {\n operationGuide.data.unpackQty = Math.round(operationGuide.data.unpackQty / accInventoriesQty) * assignedQty\n }\n\n if (vasOperationGuide === 'vas-repack' || vasOperationGuide === 'vas-repack-relabel') {\n switch (operationGuide.data?.packingUnit) {\n case PackingUnits.UOM:\n newTargetVas.qty = 1\n newTargetVas.uomValue = targetVas.uomValue\n break\n\n default:\n newTargetVas.qty = accInventoriesQty\n newTargetVas.uomValue = accInventoriesQty * unitUomValue\n }\n } else {\n newTargetVas.qty = assignedQty\n newTargetVas.uomValue = assignedQty * unitUomValue\n }\n\n newTargetVas.set = targetVas.set\n newTargetVas.targetType = targetVas.targetType\n newTargetVas.targetBatchId = targetVas.targetBatchId\n newTargetVas.packingType = targetVas.packingType\n newTargetVas.operationGuide = operationGuide ? JSON.stringify(operationGuide) : null\n newTargetVas.type = targetVas.type\n newTargetVas.remark = targetVas.remark\n newTargetVas.status = targetVas.status\n newTargetVas.targetProduct = targetVas.targetProduct\n newTargetVas.vasOrder = targetVas.vasOrder\n newTargetVas.vas = targetVas.vas\n newTargetVas.domain = this.domain\n newTargetVas.name = OrderNoGenerator.orderVas()\n newTargetVas.inventory = foundInventory\n newTargetVas.bizplace = bizplace\n newTargetVas.creator = this.user\n newTargetVas.updater = this.user\n newTargetVas = await this.trxMgr.getRepository(OrderVas).save(newTargetVas)\n\n await this.createWorksheetDetails(worksheet, WORKSHEET_TYPE.VAS, [newTargetVas])\n seq++\n\n // update inventory locked qty & uom value\n const currentLockedQty: number = foundInventory.lockedQty || 0\n const currentLockedUomValue: number = foundInventory.lockedUomValue || 0\n\n await this.trxMgr.getRepository(Inventory).save({\n ...foundInventory,\n lockedQty: inventory.qty + currentLockedQty,\n lockedUomValue: inventory.qty * unitUomValue + currentLockedUomValue,\n updater: this.user\n })\n }\n\n await this.trxMgr.getRepository(WorksheetDetail).delete(worksheetDetail.id)\n await this.trxMgr.getRepository(OrderVas).delete(targetVas.id)\n }\n }\n\n async activateVAS(worksheetNo: string, vasWorksheetDetails: Partial<WorksheetDetail>[]): Promise<Worksheet> {\n const worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.VAS, [\n 'vasOrder',\n 'worksheetDetails',\n 'worksheetDetails.targetVas'\n ])\n\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n const targetVass: OrderVas[] = worksheetDetails.map((wsd: WorksheetDetail) => {\n let targetVas: OrderVas = wsd.targetVas\n targetVas.status = ORDER_VAS_STATUS.PROCESSING\n targetVas.updater = this.user\n return targetVas\n })\n\n // Update VAS Order if it's pure VAS Order (status: READY_TO_PROCESS => PROCESSING)\n let vasOrder: VasOrder = worksheet.vasOrder\n if (vasOrder?.id) {\n vasOrder.status = ORDER_STATUS.PROCESSING\n vasOrder.updater = this.user\n\n await this.updateRefOrder(vasOrder)\n }\n\n await this.updateOrderTargets(targetVass)\n return await this.activateWorksheet(worksheet, worksheetDetails, vasWorksheetDetails)\n }\n\n async unpackingWithPallet(\n worksheetDetailName: string,\n childProduct: Partial<Product>,\n unpackQty: number,\n unpackUomValue: number,\n palletId: string,\n locationName: string,\n refOrder: RefOrderType\n ): Promise<void> {\n await this.checkPalletDuplication(palletId)\n\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n type: WORKSHEET_TYPE.VAS,\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: ['bizplace', 'worksheet', 'worksheet.vasOrder', 'targetVas', 'targetVas.inventory']\n })\n if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))\n\n const targetVas: OrderVas = worksheetDetail.targetVas\n const bizplace: Bizplace = worksheetDetail.bizplace\n\n const location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: {\n domain: this.domain,\n name: locationName,\n type: In([LOCATION_TYPE.SHELF, LOCATION_TYPE.BUFFER, LOCATION_TYPE.FLOOR])\n },\n relations: ['warehouse']\n })\n if (!location) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(locationName))\n\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n\n // create new unpacked inventory\n let newInventory: Partial<Inventory> = new Inventory()\n newInventory.bizplace = bizplace\n newInventory.name = InventoryNoGenerator.inventoryName()\n newInventory.palletId = palletId\n newInventory.batchId = worksheetDetail.targetVas.targetBatchId\n newInventory.product = childProduct\n newInventory.packingType = childProduct.packingType\n newInventory.uom = childProduct.primaryUnit\n newInventory.remark = null\n newInventory.qty = unpackQty\n newInventory.uomValue = unpackUomValue * unpackQty\n newInventory.refOrderId = refOrder.id\n newInventory.warehouse = warehouse\n newInventory.location = location\n newInventory.zone = zone\n newInventory.orderVasId = targetVas.id\n newInventory.status = INVENTORY_STATUS.STORED\n\n newInventory = await this.transactionInventory(\n newInventory,\n refOrder,\n newInventory.qty,\n newInventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNPACKING\n )\n\n // find inventory history that might exist due to undo unpacking process\n const existInventoryHistories: InventoryHistory[] = await this.trxMgr.getRepository(InventoryHistory).find({\n where: {\n domain: this.domain,\n inventory: null,\n palletId\n },\n relations: ['domain', 'inventory']\n })\n\n // if found any, update the inventory id\n if (existInventoryHistories.length) {\n existInventoryHistories.forEach(async (invHistory: InventoryHistory) => {\n await this.trxMgr.getRepository(InventoryHistory).save({\n ...invHistory,\n inventory: newInventory\n })\n })\n\n newInventory = await this.trxMgr.getRepository(Inventory).save({\n ...newInventory,\n lastSeq: Math.max(...existInventoryHistories.map(invHist => invHist.seq)) + 1\n })\n }\n\n // add picking and terminated for unpacking in RO\n if (refOrder instanceof ReleaseGood) {\n newInventory.qty = 0\n newInventory.uomValue = 0\n newInventory = await this.transactionInventory(\n newInventory,\n refOrder,\n -newInventory.qty,\n -newInventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.PICKING\n )\n\n newInventory.status = INVENTORY_STATUS.TERMINATED\n await this.transactionInventory(newInventory, refOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)\n }\n\n // update actual qty and actual uom value of order_vass\n let actualQty: number = 0\n let actualUomValue: number = 0\n\n actualQty = Number(targetVas.actualQty) + Number(unpackQty)\n actualUomValue = Number(targetVas.actualUomValue) + Number(unpackUomValue)\n\n let newTargetVas: OrderVas = Object.assign({}, targetVas)\n newTargetVas.actualQty = actualQty\n newTargetVas.actualUomValue = actualUomValue\n\n await this.trxMgr.getRepository(Inventory).save(newInventory)\n await this.trxMgr.getRepository(OrderVas).save(newTargetVas)\n }\n\n async executeVAS(worksheetDetail: Partial<WorksheetDetail>, palletId?: string): Promise<void> {\n const worksheetDetailName = worksheetDetail.name\n let foundWorksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.VAS,\n [\n 'bizplace',\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.releaseGood',\n 'targetVas',\n 'targetVas.vas',\n 'targetVas.arrivalNotice',\n 'targetVas.releaseGood',\n 'targetVas.vasOrder',\n 'targetVas.targetProduct',\n 'targetVas.inventory'\n ]\n )\n const bizplace: Bizplace = foundWorksheetDetail.bizplace\n const worksheet: Worksheet = foundWorksheetDetail.worksheet\n\n if (palletId) {\n const inventory: Inventory = await this.checkPalletAcceptable(palletId, worksheet, foundWorksheetDetail)\n\n let targetVas: OrderVas = foundWorksheetDetail.targetVas\n const totalTargetQty: number = targetVas.qty\n // inventory assigment\n targetVas.inventory = inventory\n // 현재 작업 대상 target vas의 수량을 inventory의 수량 만큼 감소 시킴\n targetVas.qty = inventory.qty\n targetVas = await this.trxMgr.getRepository(OrderVas).save(targetVas)\n // 남은 수량이 있다면 새로운 worksheet detail과 target vas를 생성\n\n const remainQty: number = totalTargetQty - inventory.qty\n if (remainQty > 0) {\n let newTargetVas: Partial<OrderVas> = Object.assign({}, targetVas)\n delete newTargetVas.id\n newTargetVas.domain = this.domain\n newTargetVas.bizplace = bizplace\n newTargetVas.name = OrderNoGenerator.orderVas()\n newTargetVas.qty = remainQty\n newTargetVas.creator = this.user\n newTargetVas.updater = this.user\n newTargetVas = await this.trxMgr.getRepository(OrderVas).save(newTargetVas)\n\n // Create new worksheet detail\n await this.createWorksheetDetails(worksheet, WORKSHEET_TYPE.VAS, [newTargetVas], {\n status: foundWorksheetDetail.status\n })\n }\n }\n\n const targetVas: VasOrder = foundWorksheetDetail.targetVas\n if (!targetVas) throw new Error(`VAS doesn't exists`)\n\n const inventory: Inventory = foundWorksheetDetail.targetVas.inventory\n\n // reset lockedQty if there's inventory found\n if (\n inventory &&\n inventory.lockedQty >= targetVas.qty &&\n targetVas.vas.operationGuide &&\n targetVas.vas.operationGuide !== 'vas-repack' &&\n targetVas.vas.operationGuide !== 'vas-repack-relabel'\n ) {\n await this.trxMgr.getRepository(Inventory).save({\n ...inventory,\n lockedQty: inventory.lockedQty - targetVas.qty,\n lockedUomValue: inventory.lockedUomValue - targetVas.uomValue\n })\n }\n\n // 1. update status of worksheetDetail (EXECUTING => DONE)\n foundWorksheetDetail = Object.assign(foundWorksheetDetail, worksheetDetail)\n foundWorksheetDetail.status = WORKSHEET_STATUS.DONE\n foundWorksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(foundWorksheetDetail)\n\n // 2. update vas\n targetVas.status = ORDER_VAS_STATUS.COMPLETED\n targetVas.updater = this.user\n await this.updateOrderTargets([targetVas])\n }\n\n async undoVAS(worksheetDetail: Partial<WorksheetDetail>): Promise<void> {\n const worksheetDetailName: string = worksheetDetail.name\n worksheetDetail = await this.findWorksheetDetailByName(worksheetDetailName, [\n 'worksheet',\n 'targetVas',\n 'targetVas.vas',\n 'targetVas.vasOrder',\n 'targetVas.inventory'\n ])\n this.checkRecordValidity(worksheetDetail, { status: WORKSHEET_STATUS.DONE, type: WORKSHEET_TYPE.VAS })\n\n let targetVas: OrderVas = worksheetDetail.targetVas\n const inventory: Inventory = targetVas.inventory\n\n // update lockedQty if there's inventory found\n if (inventory) {\n await this.trxMgr.getRepository(Inventory).save({\n ...inventory,\n lockedQty: inventory.lockedQty + targetVas.qty,\n lockedUomValue: inventory.lockedUomValue + targetVas.uomValue\n })\n }\n\n targetVas.status = ORDER_VAS_STATUS.PROCESSING\n targetVas.updater = this.user\n await this.updateOrderTargets([targetVas])\n\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.issue = ''\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n\n async undoVasInventory(worksheetDetailName: string, palletId: string): Promise<void> {\n const worksheetDetail = await this.findWorksheetDetailByName(worksheetDetailName, [\n 'domain',\n 'bizplace',\n 'worksheet',\n 'targetVas',\n 'targetVas.vas',\n 'targetVas.vasOrder',\n 'targetVas.inventory'\n ])\n const bizplace: Bizplace = worksheetDetail.bizplace\n const targetVas: OrderVas = worksheetDetail.targetVas\n const { arrivalNotice, releaseGood, vasOrder } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder\n\n let vasInventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({\n where: {\n domain: this.domain,\n bizplace,\n orderVasId: targetVas.id,\n palletId\n }\n })\n\n let newTargetVas: OrderVas = new OrderVas()\n newTargetVas.id = targetVas.id\n newTargetVas.name = targetVas.name\n newTargetVas.description = targetVas.description\n newTargetVas.set = targetVas.set\n newTargetVas.targetType = targetVas.targetType\n newTargetVas.targetBatchId = targetVas.targetBatchId\n newTargetVas.packingType = targetVas.packingType\n newTargetVas.operationGuide = targetVas.operationGuide\n newTargetVas.type = targetVas.type\n newTargetVas.remark = targetVas.remark\n newTargetVas.status = targetVas.status\n newTargetVas.targetProduct = targetVas.targetProduct\n newTargetVas.vasOrder = targetVas.vasOrder\n newTargetVas.vas = targetVas.vas\n newTargetVas.domain = this.domain\n newTargetVas.name = targetVas.name\n newTargetVas.qty = targetVas.qty\n newTargetVas.uomValue = targetVas.uomValue\n newTargetVas.inventory = targetVas.inventory\n newTargetVas.bizplace = bizplace\n newTargetVas.creator = this.user\n newTargetVas.updater = this.user\n newTargetVas.actualQty = targetVas.actualQty - vasInventory.qty\n newTargetVas.actualUomValue =\n targetVas.actualUomValue - Math.round((vasInventory.uomValue / vasInventory.qty) * 100) / 100\n\n vasInventory.lastSeq++\n vasInventory.status = INVENTORY_STATUS.DELETED\n vasInventory = await this.transactionInventory(\n vasInventory,\n refOrder,\n -vasInventory.qty,\n -vasInventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNDO_UNPACKING\n )\n // vasInventory.qty = 0\n // vasInventory.weight = 0\n // vasInventory.uomValue = 0\n // vasInventory.updater = this.user\n\n await this.updateOrderTargets([newTargetVas])\n\n await this.trxMgr.getRepository(InventoryHistory).update({ inventory: vasInventory }, { inventory: null })\n await this.trxMgr.getRepository(Inventory).delete({ id: vasInventory.id })\n }\n\n private async checkPalletAcceptable(\n palletId: string,\n worksheet: Worksheet,\n worksheetDetail: WorksheetDetail\n ): Promise<Inventory> {\n // inventory가 존재해야함\n const inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({\n where: { domain: this.domain, palletId },\n relations: ['product']\n })\n if (!inventory) throw new Error(`Can't find inventory by pallet ID (${palletId})`)\n\n // 현재 작업 set에서 하나라도 모두 완료된 유형의 VAS가 존재할 경우\n // 해당 VAS를 처리한 pallet 리스트에 한하여 작업을 수행 해야함 (동일한 SET는 동일한 군집의 Pallet을 대상으로 처리되어야 하기 때문에)\n worksheet = await this.trxMgr.getRepository(Worksheet).findOne(worksheet.id, {\n relations: [\n 'worksheetDetails',\n 'worksheetDetails.targetVas',\n 'worksheetDetails.targetVas.inventory',\n 'worksheetDetails.targetVas.vas'\n ]\n })\n\n const vasIds: string[] = worksheet.worksheetDetails\n .filter((wsd: WorksheetDetail) => wsd.targetVas.set === worksheetDetail.targetVas.set)\n .map((wsd: WorksheetDetail) => wsd.targetVas.vas.id)\n\n let completedCnt: { [key: string]: number } = {}\n vasIds.forEach((vasId: string) => (completedCnt[vasId] = 0))\n worksheet.worksheetDetails.forEach((wsd: WorksheetDetail) => {\n if (wsd.status !== WORKSHEET_STATUS.DONE) {\n completedCnt[wsd.targetVas.vas.id]++\n }\n })\n let finishedVasId: string\n for (let vasId in completedCnt) {\n if (completedCnt[vasId] === 0) {\n finishedVasId = vasId\n break\n }\n }\n\n if (finishedVasId) {\n const availPalletIds: string[] = worksheet.worksheetDetails\n .filter((wsd: WorksheetDetail) => wsd.targetVas.vas.id === finishedVasId)\n .map((wsd: WorksheetDetail) => wsd.targetVas.inventory.palletId)\n\n if (availPalletIds.indexOf(inventory.palletId) >= 0) {\n return inventory\n } else {\n throw new Error(\n this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('execute VAS', `${palletId} is not suitable for doing this VAS`)\n )\n }\n }\n\n // refOrder에 따라 적절한 상태를 가지고 있어야함\n // Arrival Notice = 'PARTIALLY_UNLOADED or PUTTING_AWAY\n const refOrder: ArrivalNotice | ReleaseGood = worksheet.arrivalNotice || worksheet.releaseGood\n if (refOrder instanceof ArrivalNotice) {\n const acceptableStatus = [INVENTORY_STATUS.PARTIALLY_UNLOADED, INVENTORY_STATUS.PUTTING_AWAY]\n if (acceptableStatus.indexOf(inventory.status) < 0)\n throw new Error(`The pallet doesn't have right status for doing VAS`)\n } else if (refOrder instanceof ReleaseGood) {\n throw new Error('TODO: Status check for Release Good')\n }\n\n // target vas의 조건에 충족해야 함 (targetBatchId, targetProduct)\n const { targetBatchId, targetProduct } = worksheetDetail.targetVas\n if (targetBatchId && targetBatchId !== inventory.batchId) {\n throw new Error(`The pallet (${inventory.palletId}) doesn't have correct batch ID (${targetBatchId})`)\n }\n\n if (targetProduct?.id && targetProduct.id !== inventory.product.id) {\n throw new Error(`The pallet (${inventory.palletId}) doesn't have correct product (${targetProduct.name})`)\n }\n\n // reference order와 관계되어 있는 inventory여야 함\n if (refOrder instanceof ArrivalNotice) {\n if (inventory.refOrderId !== refOrder.id)\n throw new Error(`The pallet ${inventory.palletId} is not related with GAN (${refOrder.name})`)\n }\n\n // 다른 vas order set에 포함되어 있지 않아야함\n const relatedInvs: Inventory[] = worksheet.worksheetDetails\n .filter(\n (\n wsd: WorksheetDetail // 현재 작업대상이 아니고 현재 작업 대상과 같은 세트가 아니고 인벤토리 값이 있는\n ) =>\n wsd.id !== worksheetDetail.id &&\n wsd.targetVas.set !== worksheetDetail.targetVas.set &&\n wsd.targetVas.inventory\n )\n .map((wsd: WorksheetDetail) => wsd.targetVas.inventory)\n\n if (relatedInvs.find((relInv: Inventory) => relInv.palletId === inventory.palletId)) {\n throw new Error(`The pallet (${inventory.palletId}) is already assigned for another VAS SET`)\n }\n\n // 현재 작업유형에 동이한 pallet으로 처리된 이력이 없어야함\n const completedWSD: WorksheetDetail[] = worksheet.worksheetDetails.filter(\n (wsd: WorksheetDetail) =>\n wsd.status === WORKSHEET_STATUS.DONE &&\n wsd.targetVas.set === worksheetDetail.targetVas.set &&\n wsd.targetVas.vas.id === worksheetDetail.targetVas.vas.id\n )\n\n if (completedWSD.find((wsd: WorksheetDetail) => wsd.targetVas.inventory.palletId === palletId)) {\n throw new Error(\n this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('execute VAS', `VAS is finished for pallet (${palletId}) already`)\n )\n }\n\n return inventory\n }\n\n async completeVAS(orderNo: string, orderType: string, vasWorksheetDetails: WorksheetDetail[]): Promise<Worksheet> {\n const ENTITY_MAP: { [key: string]: ArrivalNotice | ReleaseGood | VasOrder } = {\n [ORDER_TYPES.ARRIVAL_NOTICE]: ArrivalNotice,\n [ORDER_TYPES.RELEASE_OF_GOODS]: ReleaseGood,\n [ORDER_TYPES.VAS_ORDER]: VasOrder\n }\n let refOrder: ReferenceOrderType = await this.findRefOrder(ENTITY_MAP[orderType], {\n domain: this.domain,\n name: orderNo\n })\n let worksheet: Worksheet = await this.findWorksheetByRefOrder(refOrder, WORKSHEET_TYPE.VAS, [\n 'worksheetDetails',\n 'worksheetDetails.targetVas',\n 'worksheetDetails.targetVas.vas',\n 'worksheetDetails.targetVas.inventory'\n ])\n\n const isPureVAS: boolean = refOrder instanceof VasOrder\n if (isPureVAS) {\n refOrder.status = ORDER_STATUS.DONE\n await this.updateRefOrder(refOrder)\n }\n\n // Do complete operation transactions if there it is\n let foundWorksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n let targetVASs: OrderVas[] = foundWorksheetDetails.map((wsd: WorksheetDetail) => wsd.targetVas)\n\n // assign issues brought from execute VAS page to foundWorksheetDetails\n foundWorksheetDetails = foundWorksheetDetails.map(worksheetDetail => {\n return {\n ...worksheetDetail,\n issue: vasWorksheetDetails.find(wsd => wsd.name === worksheetDetail.name).issue || null\n }\n })\n\n // reduce parent inventory qty if same parent is selected\n targetVASs = targetVASs.reduce((acc, curr) => {\n if (curr.inventory) {\n for (let i = 0; i < acc.length; i++) {\n if (acc[i].inventory?.id === curr.inventory?.id) {\n curr.inventory.qty -= acc[i].qty\n curr.inventory.uomValue -= acc[i].uomValue\n curr.inventory.lockedQty -= acc[i].qty\n curr.inventory.lockedUomValue -= acc[i].uomValue\n }\n }\n }\n\n acc.push(curr)\n\n return acc\n }, [])\n\n for (const targetVas of targetVASs) {\n const { issue }: { issue: string } = foundWorksheetDetails.find(\n (wsd: WorksheetDetail) => wsd.targetVas.id === targetVas.id\n )\n\n // if (targetVas.operationGuide && (!issue || (targetVas.vas.name.toUpperCase() == VAS.REPACKAGING && issue))) {\n // await this.doOperationTransaction(targetVas)\n // } /*else if (targetVas.operationGuide && targetVas.vas.name.toUpperCase() === VAS.REPACKAGING && issue) {\n // await this.doOperationTransaction(targetVas)\n // }*/\n\n if (targetVas.operationGuide && !issue) {\n await this.doOperationTransaction(targetVas)\n }\n\n if (targetVas.vas.name.toUpperCase() === VAS.UNPACKING && !(refOrder instanceof ArrivalNotice)) {\n // Update qty and uom value of parent inventory (only applies for pure vas and RO)\n const parentInventory: Inventory = targetVas.inventory\n let newParentInventory: Partial<Inventory> = Object.assign({}, parentInventory)\n newParentInventory.qty = parentInventory.qty - targetVas.qty\n newParentInventory.uomValue = Math.round((parentInventory.uomValue - targetVas.uomValue) * 100) / 100\n newParentInventory.lockedQty = parentInventory.lockedQty - targetVas.qty\n newParentInventory.lockedUomValue =\n Math.round((parentInventory.lockedUomValue - targetVas.uomValue) * 100) / 100\n\n // update qty and uomValue for VasOrder\n // if refOrder is from ReleaseGood, no need to update because this trxn is consider similar to LOADING trxn\n if (refOrder instanceof VasOrder) {\n await this.transactionInventory(\n newParentInventory,\n refOrder,\n -targetVas.qty,\n -targetVas.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNPACKED\n )\n } else if (refOrder instanceof ReleaseGood) {\n await generateInventoryHistory(\n newParentInventory,\n refOrder,\n INVENTORY_TRANSACTION_TYPE.UNPACKED,\n 0,\n 0,\n this.user,\n this.trxMgr\n )\n }\n\n // add TERMINATED status if inventory qty = 0\n if (newParentInventory.qty === 0) {\n newParentInventory.status = INVENTORY_STATUS.TERMINATED\n await this.transactionInventory(newParentInventory, refOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)\n }\n }\n }\n\n // update worksheet details if there is any issue found from the list\n if (foundWorksheetDetails.some((wsd: Partial<WorksheetDetail>) => wsd.issue)) {\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n foundWorksheetDetails = this.renewWorksheetDetails(worksheetDetails, foundWorksheetDetails, 'name', {\n updater: this.user\n })\n\n const worksheetDetailsWithIssue: WorksheetDetail[] = foundWorksheetDetails.filter(\n (wsd: WorksheetDetail) => wsd.issue\n ) as WorksheetDetail[]\n\n if (worksheetDetailsWithIssue.length) {\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetailsWithIssue)\n }\n }\n\n let orderStatus: string =\n refOrder instanceof ArrivalNotice\n ? ORDER_STATUS.READY_TO_UNLOAD\n : refOrder instanceof ReleaseGood\n ? ORDER_STATUS.LOADING\n : ORDER_STATUS.DONE\n\n worksheet = await this.completeWorksheet(worksheet, orderStatus)\n return worksheet\n }\n\n async doOperationTransaction(targetVas: OrderVas): Promise<void> {\n const operationGuide: string = targetVas.vas?.operationGuide\n if (operationGuide) {\n await this.COMPLETE_TRX_MAP[operationGuide](this.trxMgr, targetVas, this.user)\n }\n }\n}\n"]}
1
+ {"version":3,"file":"vas-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/vas/vas-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, Equal, In, Not } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ArrivalNotice,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS,\n OrderNoGenerator,\n OrderVas,\n ReleaseGood,\n VAS,\n VasOrder\n} from '@things-factory/sales-base'\nimport {\n Inventory,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE,\n InventoryHistory,\n InventoryNoGenerator,\n Location,\n LOCATION_TYPE\n} from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport {\n completeRelabeling,\n completeRepackaging,\n completeRepalletizing,\n completeUnpacking,\n FeaturedInventoryInterface,\n RefOrderType\n} from '../../graphql/resolvers/worksheet/vas-transactions'\nimport { PackingUnits } from '../../graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging'\nimport { generateInventoryHistory } from '../../utils'\nimport { ReferenceOrderType, WorksheetController } from '../worksheet-controller'\n\ntype CompleteTransactionType = (trxMgr: EntityManager, orderVas: OrderVas, user: User) => Promise<void>\n\nexport class VasWorksheetController extends WorksheetController {\n private readonly COMPLETE_TRX_MAP: Record<string, CompleteTransactionType> = {\n 'vas-repalletizing': completeRepalletizing,\n 'vas-repack': completeRepackaging,\n 'vas-repack-relabel': completeRepackaging,\n 'vas-relabel': completeRelabeling,\n 'vas-unpack': completeUnpacking\n }\n\n async generateVasWorksheet(referenceOrder: ReferenceOrderType): Promise<Worksheet> {\n let orderStatus = referenceOrder.status\n let orderVASs: OrderVas[]\n\n if (referenceOrder instanceof ArrivalNotice) {\n const arrivalNotice: ArrivalNotice = await this.findRefOrder(ArrivalNotice, referenceOrder, ['orderVass'])\n orderVASs = arrivalNotice.orderVass\n } else if (referenceOrder instanceof ReleaseGood) {\n const releaseGood: ReleaseGood = await this.findRefOrder(ReleaseGood, referenceOrder, ['orderVass'])\n orderVASs = releaseGood.orderVass\n } else {\n const vasOrder: VasOrder = await this.findRefOrder(VasOrder, referenceOrder, ['orderVass'])\n orderVASs = vasOrder.orderVass\n orderStatus = ORDER_STATUS.READY_TO_EXECUTE\n }\n\n return await this.generateWorksheet(\n WORKSHEET_TYPE.VAS,\n referenceOrder,\n orderVASs,\n orderStatus,\n ORDER_VAS_STATUS.READY_TO_PROCESS\n )\n }\n\n async assignInventories(worksheetDetailIds: string[], inventories: Partial<Inventory>): Promise<void> {\n const worksheetDetails: WorksheetDetail[] = await this.trxMgr.getRepository(WorksheetDetail).find({\n where: { id: In(worksheetDetailIds) },\n relations: [\n 'bizplace',\n 'worksheet',\n 'targetVas',\n 'targetVas.arrivalNotice',\n 'targetVas.releaseGood',\n 'targetVas.shippingOrder',\n 'targetVas.vasOrder',\n 'targetVas.vas',\n 'targetVas.targetProduct'\n ]\n })\n\n let seq: number = 0\n\n for (let worksheetDetail of worksheetDetails) {\n const bizplace: Bizplace = worksheetDetail.bizplace\n const worksheet: Worksheet = worksheetDetail.worksheet\n const targetVas: OrderVas = worksheetDetail.targetVas\n\n let newWorksheetDetail: Partial<WorksheetDetail> = Object.assign({}, worksheetDetail)\n delete newWorksheetDetail.id\n\n // get accumulated inventories qty\n const accInventoriesQty: number = inventories.reduce((acc, inv) => {\n return acc + inv.qty\n }, 0)\n\n let operationGuide = JSON.parse(targetVas.operationGuide)\n let vasOperationGuide = targetVas.vas?.operationGuide\n\n if (vasOperationGuide === 'vas-repack' || vasOperationGuide === 'vas-repack-relabel') {\n const mainInventory: Inventory = inventories[0]\n const featuredInvs: FeaturedInventoryInterface[] = []\n const foundInvs: Inventory[] = await this.trxMgr\n .getRepository(Inventory)\n .findByIds(inventories.filter(inv => inv.id !== mainInventory.id).map(inv => inv.id))\n\n /* Update lockedQty of featuredInvs */\n for (let inventory of foundInvs) {\n const transferQty: number = inventories.find(inv => inv.id === inventory.id).qty\n const transferUomValue: number = Math.round((inventory.uomValue / inventory.qty) * transferQty * 100) / 100\n\n inventory.lockedQty += transferQty\n inventory.lockedUomValue += transferUomValue\n\n await this.trxMgr.getRepository(Inventory).save(inventory)\n\n let featuredInv: FeaturedInventoryInterface = {\n palletId: inventory.palletId,\n originalQty: transferQty,\n originalUomValue: transferUomValue,\n packingSize: inventory.packingSize,\n uomValuePerQty: inventory.uomValue / (inventory.qty * inventory.packingSize)\n }\n\n switch (operationGuide.data?.packingUnit) {\n case PackingUnits.QTY:\n featuredInv.currentUnitQty = transferQty * inventory.packingSize\n break\n\n case PackingUnits.UOM:\n featuredInv.currentUomValue = transferUomValue\n break\n }\n\n featuredInvs.push(featuredInv)\n }\n\n /* assign featuredInvs inside operationGuide.data */\n operationGuide.data = {\n ...operationGuide.data,\n featuredInvs\n }\n\n /* assign main inventory as the only inventories */\n inventories = [mainInventory]\n }\n\n for (let inventory of inventories) {\n let newTargetVas: OrderVas = new OrderVas()\n\n const foundInventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne(inventory.id)\n if (!foundInventory) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(inventory.id))\n\n // assigned inventory qty that was passed from client side\n const assignedQty = inventory.qty\n const unitUomValue: number = foundInventory.uomValue / foundInventory.qty\n\n // update unpack qty for unpacking vas\n if (vasOperationGuide === 'vas-unpack') {\n operationGuide.data.unpackQty = Math.round(operationGuide.data.unpackQty / accInventoriesQty) * assignedQty\n }\n\n if (vasOperationGuide === 'vas-repack' || vasOperationGuide === 'vas-repack-relabel') {\n switch (operationGuide.data?.packingUnit) {\n case PackingUnits.UOM:\n newTargetVas.qty = 1\n newTargetVas.uomValue = targetVas.uomValue\n break\n\n default:\n newTargetVas.qty = accInventoriesQty\n newTargetVas.uomValue = accInventoriesQty * unitUomValue\n }\n } else {\n newTargetVas.qty = assignedQty\n newTargetVas.uomValue = assignedQty * unitUomValue\n }\n\n newTargetVas.set = targetVas.set\n newTargetVas.targetType = targetVas.targetType\n newTargetVas.targetBatchId = targetVas.targetBatchId\n newTargetVas.packingType = targetVas.packingType\n newTargetVas.operationGuide = operationGuide ? JSON.stringify(operationGuide) : null\n newTargetVas.type = targetVas.type\n newTargetVas.remark = targetVas.remark\n newTargetVas.status = targetVas.status\n newTargetVas.targetProduct = targetVas.targetProduct\n newTargetVas.vasOrder = targetVas.vasOrder\n newTargetVas.vas = targetVas.vas\n newTargetVas.domain = this.domain\n newTargetVas.name = OrderNoGenerator.orderVas()\n newTargetVas.inventory = foundInventory\n newTargetVas.bizplace = bizplace\n newTargetVas.creator = this.user\n newTargetVas.updater = this.user\n newTargetVas = await this.trxMgr.getRepository(OrderVas).save(newTargetVas)\n\n await this.createWorksheetDetails(worksheet, WORKSHEET_TYPE.VAS, [newTargetVas])\n seq++\n\n // update inventory locked qty & uom value\n const currentLockedQty: number = foundInventory.lockedQty || 0\n const currentLockedUomValue: number = foundInventory.lockedUomValue || 0\n\n await this.trxMgr.getRepository(Inventory).save({\n ...foundInventory,\n lockedQty: inventory.qty + currentLockedQty,\n lockedUomValue: inventory.qty * unitUomValue + currentLockedUomValue,\n updater: this.user\n })\n }\n\n await this.trxMgr.getRepository(WorksheetDetail).delete(worksheetDetail.id)\n await this.trxMgr.getRepository(OrderVas).delete(targetVas.id)\n }\n }\n\n async activateVAS(worksheetNo: string, vasWorksheetDetails: Partial<WorksheetDetail>[]): Promise<Worksheet> {\n const worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.VAS, [\n 'vasOrder',\n 'worksheetDetails',\n 'worksheetDetails.targetVas'\n ])\n\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n const targetVass: OrderVas[] = worksheetDetails.map((wsd: WorksheetDetail) => {\n let targetVas: OrderVas = wsd.targetVas\n targetVas.status = ORDER_VAS_STATUS.PROCESSING\n targetVas.updater = this.user\n return targetVas\n })\n\n // Update VAS Order if it's pure VAS Order (status: READY_TO_PROCESS => PROCESSING)\n let vasOrder: VasOrder = worksheet.vasOrder\n if (vasOrder?.id) {\n vasOrder.status = ORDER_STATUS.PROCESSING\n vasOrder.updater = this.user\n\n await this.updateRefOrder(vasOrder)\n }\n\n await this.updateOrderTargets(targetVass)\n return await this.activateWorksheet(worksheet, worksheetDetails, vasWorksheetDetails)\n }\n\n async unpackingWithPallet(\n worksheetDetailName: string,\n childProduct: Partial<Product>,\n unpackQty: number,\n unpackUomValue: number,\n palletId: string,\n locationName: string,\n refOrder: RefOrderType\n ): Promise<void> {\n await this.checkPalletDuplication(palletId)\n\n const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: {\n name: worksheetDetailName,\n type: WORKSHEET_TYPE.VAS,\n status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED))\n },\n relations: ['bizplace', 'worksheet', 'worksheet.vasOrder', 'targetVas', 'targetVas.inventory']\n })\n if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))\n\n const targetVas: OrderVas = worksheetDetail.targetVas\n const bizplace: Bizplace = worksheetDetail.bizplace\n\n const location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: {\n domain: { id: this.domain.id },\n name: locationName,\n type: In([LOCATION_TYPE.SHELF, LOCATION_TYPE.BUFFER, LOCATION_TYPE.FLOOR])\n },\n relations: ['warehouse']\n })\n if (!location) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(locationName))\n\n const warehouse = location.warehouse\n const zone: string = location.zone\n\n // create new unpacked inventory\n let newInventory: Partial<Inventory> = new Inventory()\n newInventory.bizplace = bizplace\n newInventory.name = InventoryNoGenerator.inventoryName()\n newInventory.palletId = palletId\n newInventory.batchId = worksheetDetail.targetVas.targetBatchId\n newInventory.product = childProduct\n newInventory.packingType = childProduct.packingType\n newInventory.uom = childProduct.primaryUnit\n newInventory.remark = null\n newInventory.qty = unpackQty\n newInventory.uomValue = unpackUomValue * unpackQty\n newInventory.refOrderId = refOrder.id\n newInventory.warehouse = warehouse\n newInventory.location = location\n newInventory.zone = zone\n newInventory.orderVasId = targetVas.id\n newInventory.status = INVENTORY_STATUS.STORED\n\n newInventory = await this.transactionInventory(\n newInventory,\n refOrder,\n newInventory.qty,\n newInventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNPACKING\n )\n\n // find inventory history that might exist due to undo unpacking process\n const existInventoryHistories: InventoryHistory[] = await this.trxMgr.getRepository(InventoryHistory).find({\n where: {\n domain: this.domain,\n inventory: null,\n palletId\n },\n relations: ['domain', 'inventory']\n })\n\n // if found any, update the inventory id\n if (existInventoryHistories.length) {\n existInventoryHistories.forEach(async (invHistory: InventoryHistory) => {\n await this.trxMgr.getRepository(InventoryHistory).save({\n ...invHistory,\n inventory: newInventory\n })\n })\n\n newInventory = await this.trxMgr.getRepository(Inventory).save({\n ...newInventory,\n lastSeq: Math.max(...existInventoryHistories.map(invHist => invHist.seq)) + 1\n })\n }\n\n // add picking and terminated for unpacking in RO\n if (refOrder instanceof ReleaseGood) {\n newInventory.qty = 0\n newInventory.uomValue = 0\n newInventory = await this.transactionInventory(\n newInventory,\n refOrder,\n -newInventory.qty,\n -newInventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.PICKING\n )\n\n newInventory.status = INVENTORY_STATUS.TERMINATED\n await this.transactionInventory(newInventory, refOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)\n }\n\n // update actual qty and actual uom value of order_vass\n let actualQty: number = 0\n let actualUomValue: number = 0\n\n actualQty = Number(targetVas.actualQty) + Number(unpackQty)\n actualUomValue = Number(targetVas.actualUomValue) + Number(unpackUomValue)\n\n let newTargetVas: OrderVas = Object.assign({}, targetVas)\n newTargetVas.actualQty = actualQty\n newTargetVas.actualUomValue = actualUomValue\n\n await this.trxMgr.getRepository(Inventory).save(newInventory)\n await this.trxMgr.getRepository(OrderVas).save(newTargetVas)\n }\n\n async executeVAS(worksheetDetail: Partial<WorksheetDetail>, palletId?: string): Promise<void> {\n const worksheetDetailName = worksheetDetail.name\n let foundWorksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.VAS,\n [\n 'bizplace',\n 'worksheet',\n 'worksheet.arrivalNotice',\n 'worksheet.releaseGood',\n 'targetVas',\n 'targetVas.vas',\n 'targetVas.arrivalNotice',\n 'targetVas.releaseGood',\n 'targetVas.vasOrder',\n 'targetVas.targetProduct',\n 'targetVas.inventory'\n ]\n )\n const bizplace: Bizplace = foundWorksheetDetail.bizplace\n const worksheet: Worksheet = foundWorksheetDetail.worksheet\n\n if (palletId) {\n const inventory: Inventory = await this.checkPalletAcceptable(palletId, worksheet, foundWorksheetDetail)\n\n let targetVas: OrderVas = foundWorksheetDetail.targetVas\n const totalTargetQty: number = targetVas.qty\n // inventory assigment\n targetVas.inventory = inventory\n // 현재 작업 대상 target vas의 수량을 inventory의 수량 만큼 감소 시킴\n targetVas.qty = inventory.qty\n targetVas = await this.trxMgr.getRepository(OrderVas).save(targetVas)\n // 남은 수량이 있다면 새로운 worksheet detail과 target vas를 생성\n\n const remainQty: number = totalTargetQty - inventory.qty\n if (remainQty > 0) {\n let newTargetVas: Partial<OrderVas> = Object.assign({}, targetVas)\n delete newTargetVas.id\n newTargetVas.domain = this.domain\n newTargetVas.bizplace = bizplace\n newTargetVas.name = OrderNoGenerator.orderVas()\n newTargetVas.qty = remainQty\n newTargetVas.creator = this.user\n newTargetVas.updater = this.user\n newTargetVas = await this.trxMgr.getRepository(OrderVas).save(newTargetVas)\n\n // Create new worksheet detail\n await this.createWorksheetDetails(worksheet, WORKSHEET_TYPE.VAS, [newTargetVas], {\n status: foundWorksheetDetail.status\n })\n }\n }\n\n const targetVas: VasOrder = foundWorksheetDetail.targetVas\n if (!targetVas) throw new Error(`VAS doesn't exists`)\n\n const inventory: Inventory = foundWorksheetDetail.targetVas.inventory\n\n // reset lockedQty if there's inventory found\n if (\n inventory &&\n inventory.lockedQty >= targetVas.qty &&\n targetVas.vas.operationGuide &&\n targetVas.vas.operationGuide !== 'vas-repack' &&\n targetVas.vas.operationGuide !== 'vas-repack-relabel'\n ) {\n await this.trxMgr.getRepository(Inventory).save({\n ...inventory,\n lockedQty: inventory.lockedQty - targetVas.qty,\n lockedUomValue: inventory.lockedUomValue - targetVas.uomValue\n })\n }\n\n // 1. update status of worksheetDetail (EXECUTING => DONE)\n foundWorksheetDetail = Object.assign(foundWorksheetDetail, worksheetDetail)\n foundWorksheetDetail.status = WORKSHEET_STATUS.DONE\n foundWorksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(foundWorksheetDetail)\n\n // 2. update vas\n targetVas.status = ORDER_VAS_STATUS.COMPLETED\n targetVas.updater = this.user\n await this.updateOrderTargets([targetVas])\n }\n\n async undoVAS(worksheetDetail: Partial<WorksheetDetail>): Promise<void> {\n const worksheetDetailName: string = worksheetDetail.name\n worksheetDetail = await this.findWorksheetDetailByName(worksheetDetailName, [\n 'worksheet',\n 'targetVas',\n 'targetVas.vas',\n 'targetVas.vasOrder',\n 'targetVas.inventory'\n ])\n this.checkRecordValidity(worksheetDetail, { status: WORKSHEET_STATUS.DONE, type: WORKSHEET_TYPE.VAS })\n\n let targetVas: OrderVas = worksheetDetail.targetVas\n const inventory: Inventory = targetVas.inventory\n\n // update lockedQty if there's inventory found\n if (inventory) {\n await this.trxMgr.getRepository(Inventory).save({\n ...inventory,\n lockedQty: inventory.lockedQty + targetVas.qty,\n lockedUomValue: inventory.lockedUomValue + targetVas.uomValue\n })\n }\n\n targetVas.status = ORDER_VAS_STATUS.PROCESSING\n targetVas.updater = this.user\n await this.updateOrderTargets([targetVas])\n\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.issue = ''\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n\n async undoVasInventory(worksheetDetailName: string, palletId: string): Promise<void> {\n const worksheetDetail = await this.findWorksheetDetailByName(worksheetDetailName, [\n 'domain',\n 'bizplace',\n 'worksheet',\n 'targetVas',\n 'targetVas.vas',\n 'targetVas.vasOrder',\n 'targetVas.inventory'\n ])\n const bizplace: Bizplace = worksheetDetail.bizplace\n const targetVas: OrderVas = worksheetDetail.targetVas\n const { arrivalNotice, releaseGood, vasOrder } = targetVas\n const refOrder: RefOrderType = arrivalNotice || releaseGood || vasOrder\n\n let vasInventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({\n where: {\n domain: this.domain,\n bizplace,\n orderVasId: targetVas.id,\n palletId\n }\n })\n\n let newTargetVas: OrderVas = new OrderVas()\n newTargetVas.id = targetVas.id\n newTargetVas.name = targetVas.name\n newTargetVas.description = targetVas.description\n newTargetVas.set = targetVas.set\n newTargetVas.targetType = targetVas.targetType\n newTargetVas.targetBatchId = targetVas.targetBatchId\n newTargetVas.packingType = targetVas.packingType\n newTargetVas.operationGuide = targetVas.operationGuide\n newTargetVas.type = targetVas.type\n newTargetVas.remark = targetVas.remark\n newTargetVas.status = targetVas.status\n newTargetVas.targetProduct = targetVas.targetProduct\n newTargetVas.vasOrder = targetVas.vasOrder\n newTargetVas.vas = targetVas.vas\n newTargetVas.domain = this.domain\n newTargetVas.name = targetVas.name\n newTargetVas.qty = targetVas.qty\n newTargetVas.uomValue = targetVas.uomValue\n newTargetVas.inventory = targetVas.inventory\n newTargetVas.bizplace = bizplace\n newTargetVas.creator = this.user\n newTargetVas.updater = this.user\n newTargetVas.actualQty = targetVas.actualQty - vasInventory.qty\n newTargetVas.actualUomValue =\n targetVas.actualUomValue - Math.round((vasInventory.uomValue / vasInventory.qty) * 100) / 100\n\n vasInventory.lastSeq++\n vasInventory.status = INVENTORY_STATUS.DELETED\n vasInventory = await this.transactionInventory(\n vasInventory,\n refOrder,\n -vasInventory.qty,\n -vasInventory.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNDO_UNPACKING\n )\n // vasInventory.qty = 0\n // vasInventory.weight = 0\n // vasInventory.uomValue = 0\n // vasInventory.updater = this.user\n\n await this.updateOrderTargets([newTargetVas])\n\n await this.trxMgr.getRepository(InventoryHistory).update({ inventory: vasInventory }, { inventory: null })\n await this.trxMgr.getRepository(Inventory).delete({ id: vasInventory.id })\n }\n\n private async checkPalletAcceptable(\n palletId: string,\n worksheet: Worksheet,\n worksheetDetail: WorksheetDetail\n ): Promise<Inventory> {\n // inventory가 존재해야함\n const inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({\n where: { domain: this.domain, palletId },\n relations: ['product']\n })\n if (!inventory) throw new Error(`Can't find inventory by pallet ID (${palletId})`)\n\n // 현재 작업 set에서 하나라도 모두 완료된 유형의 VAS가 존재할 경우\n // 해당 VAS를 처리한 pallet 리스트에 한하여 작업을 수행 해야함 (동일한 SET는 동일한 군집의 Pallet을 대상으로 처리되어야 하기 때문에)\n worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: { id: worksheet.id },\n relations: [\n 'worksheetDetails',\n 'worksheetDetails.targetVas',\n 'worksheetDetails.targetVas.inventory',\n 'worksheetDetails.targetVas.vas'\n ]\n })\n\n const vasIds: string[] = worksheet.worksheetDetails\n .filter((wsd: WorksheetDetail) => wsd.targetVas.set === worksheetDetail.targetVas.set)\n .map((wsd: WorksheetDetail) => wsd.targetVas.vas.id)\n\n let completedCnt: { [key: string]: number } = {}\n vasIds.forEach((vasId: string) => (completedCnt[vasId] = 0))\n worksheet.worksheetDetails.forEach((wsd: WorksheetDetail) => {\n if (wsd.status !== WORKSHEET_STATUS.DONE) {\n completedCnt[wsd.targetVas.vas.id]++\n }\n })\n let finishedVasId: string\n for (let vasId in completedCnt) {\n if (completedCnt[vasId] === 0) {\n finishedVasId = vasId\n break\n }\n }\n\n if (finishedVasId) {\n const availPalletIds: string[] = worksheet.worksheetDetails\n .filter((wsd: WorksheetDetail) => wsd.targetVas.vas.id === finishedVasId)\n .map((wsd: WorksheetDetail) => wsd.targetVas.inventory.palletId)\n\n if (availPalletIds.indexOf(inventory.palletId) >= 0) {\n return inventory\n } else {\n throw new Error(\n this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('execute VAS', `${palletId} is not suitable for doing this VAS`)\n )\n }\n }\n\n // refOrder에 따라 적절한 상태를 가지고 있어야함\n // Arrival Notice = 'PARTIALLY_UNLOADED or PUTTING_AWAY\n const refOrder: ArrivalNotice | ReleaseGood = worksheet.arrivalNotice || worksheet.releaseGood\n if (refOrder instanceof ArrivalNotice) {\n const acceptableStatus = [INVENTORY_STATUS.PARTIALLY_UNLOADED, INVENTORY_STATUS.PUTTING_AWAY]\n if (acceptableStatus.indexOf(inventory.status) < 0)\n throw new Error(`The pallet doesn't have right status for doing VAS`)\n } else if (refOrder instanceof ReleaseGood) {\n throw new Error('TODO: Status check for Release Good')\n }\n\n // target vas의 조건에 충족해야 함 (targetBatchId, targetProduct)\n const { targetBatchId, targetProduct } = worksheetDetail.targetVas\n if (targetBatchId && targetBatchId !== inventory.batchId) {\n throw new Error(`The pallet (${inventory.palletId}) doesn't have correct batch ID (${targetBatchId})`)\n }\n\n if (targetProduct?.id && targetProduct.id !== inventory.product.id) {\n throw new Error(`The pallet (${inventory.palletId}) doesn't have correct product (${targetProduct.name})`)\n }\n\n // reference order와 관계되어 있는 inventory여야 함\n if (refOrder instanceof ArrivalNotice) {\n if (inventory.refOrderId !== refOrder.id)\n throw new Error(`The pallet ${inventory.palletId} is not related with GAN (${refOrder.name})`)\n }\n\n // 다른 vas order set에 포함되어 있지 않아야함\n const relatedInvs: Inventory[] = worksheet.worksheetDetails\n .filter(\n (\n wsd: WorksheetDetail // 현재 작업대상이 아니고 현재 작업 대상과 같은 세트가 아니고 인벤토리 값이 있는\n ) =>\n wsd.id !== worksheetDetail.id &&\n wsd.targetVas.set !== worksheetDetail.targetVas.set &&\n wsd.targetVas.inventory\n )\n .map((wsd: WorksheetDetail) => wsd.targetVas.inventory)\n\n if (relatedInvs.find((relInv: Inventory) => relInv.palletId === inventory.palletId)) {\n throw new Error(`The pallet (${inventory.palletId}) is already assigned for another VAS SET`)\n }\n\n // 현재 작업유형에 동이한 pallet으로 처리된 이력이 없어야함\n const completedWSD: WorksheetDetail[] = worksheet.worksheetDetails.filter(\n (wsd: WorksheetDetail) =>\n wsd.status === WORKSHEET_STATUS.DONE &&\n wsd.targetVas.set === worksheetDetail.targetVas.set &&\n wsd.targetVas.vas.id === worksheetDetail.targetVas.vas.id\n )\n\n if (completedWSD.find((wsd: WorksheetDetail) => wsd.targetVas.inventory.palletId === palletId)) {\n throw new Error(\n this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('execute VAS', `VAS is finished for pallet (${palletId}) already`)\n )\n }\n\n return inventory\n }\n\n async completeVAS(orderNo: string, orderType: string, vasWorksheetDetails: WorksheetDetail[]): Promise<Worksheet> {\n const ENTITY_MAP: { [key: string]: ArrivalNotice | ReleaseGood | VasOrder } = {\n [ORDER_TYPES.ARRIVAL_NOTICE]: ArrivalNotice,\n [ORDER_TYPES.RELEASE_OF_GOODS]: ReleaseGood,\n [ORDER_TYPES.VAS_ORDER]: VasOrder\n }\n let refOrder: ReferenceOrderType = await this.findRefOrder(ENTITY_MAP[orderType], {\n domain: this.domain,\n name: orderNo\n })\n let worksheet: Worksheet = await this.findWorksheetByRefOrder(refOrder, WORKSHEET_TYPE.VAS, [\n 'worksheetDetails',\n 'worksheetDetails.targetVas',\n 'worksheetDetails.targetVas.vas',\n 'worksheetDetails.targetVas.inventory'\n ])\n\n const isPureVAS: boolean = refOrder instanceof VasOrder\n if (isPureVAS) {\n refOrder.status = ORDER_STATUS.DONE\n await this.updateRefOrder(refOrder)\n }\n\n // Do complete operation transactions if there it is\n let foundWorksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n let targetVASs: OrderVas[] = foundWorksheetDetails.map((wsd: WorksheetDetail) => wsd.targetVas)\n\n // assign issues brought from execute VAS page to foundWorksheetDetails\n foundWorksheetDetails = foundWorksheetDetails.map(worksheetDetail => {\n return {\n ...worksheetDetail,\n issue: vasWorksheetDetails.find(wsd => wsd.name === worksheetDetail.name).issue || null\n }\n })\n\n // reduce parent inventory qty if same parent is selected\n targetVASs = targetVASs.reduce((acc, curr) => {\n if (curr.inventory) {\n for (let i = 0; i < acc.length; i++) {\n if (acc[i].inventory?.id === curr.inventory?.id) {\n curr.inventory.qty -= acc[i].qty\n curr.inventory.uomValue -= acc[i].uomValue\n curr.inventory.lockedQty -= acc[i].qty\n curr.inventory.lockedUomValue -= acc[i].uomValue\n }\n }\n }\n\n acc.push(curr)\n\n return acc\n }, [])\n\n for (const targetVas of targetVASs) {\n const { issue }: { issue: string } = foundWorksheetDetails.find(\n (wsd: WorksheetDetail) => wsd.targetVas.id === targetVas.id\n )\n\n // if (targetVas.operationGuide && (!issue || (targetVas.vas.name.toUpperCase() == VAS.REPACKAGING && issue))) {\n // await this.doOperationTransaction(targetVas)\n // } /*else if (targetVas.operationGuide && targetVas.vas.name.toUpperCase() === VAS.REPACKAGING && issue) {\n // await this.doOperationTransaction(targetVas)\n // }*/\n\n if (targetVas.operationGuide && !issue) {\n await this.doOperationTransaction(targetVas)\n }\n\n if (targetVas.vas.name.toUpperCase() === VAS.UNPACKING && !(refOrder instanceof ArrivalNotice)) {\n // Update qty and uom value of parent inventory (only applies for pure vas and RO)\n const parentInventory: Inventory = targetVas.inventory\n let newParentInventory: Partial<Inventory> = Object.assign({}, parentInventory)\n newParentInventory.qty = parentInventory.qty - targetVas.qty\n newParentInventory.uomValue = Math.round((parentInventory.uomValue - targetVas.uomValue) * 100) / 100\n newParentInventory.lockedQty = parentInventory.lockedQty - targetVas.qty\n newParentInventory.lockedUomValue =\n Math.round((parentInventory.lockedUomValue - targetVas.uomValue) * 100) / 100\n\n // update qty and uomValue for VasOrder\n // if refOrder is from ReleaseGood, no need to update because this trxn is consider similar to LOADING trxn\n if (refOrder instanceof VasOrder) {\n await this.transactionInventory(\n newParentInventory,\n refOrder,\n -targetVas.qty,\n -targetVas.uomValue,\n INVENTORY_TRANSACTION_TYPE.UNPACKED\n )\n } else if (refOrder instanceof ReleaseGood) {\n await generateInventoryHistory(\n newParentInventory,\n refOrder,\n INVENTORY_TRANSACTION_TYPE.UNPACKED,\n 0,\n 0,\n this.user,\n this.trxMgr\n )\n }\n\n // add TERMINATED status if inventory qty = 0\n if (newParentInventory.qty === 0) {\n newParentInventory.status = INVENTORY_STATUS.TERMINATED\n await this.transactionInventory(newParentInventory, refOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)\n }\n }\n }\n\n // update worksheet details if there is any issue found from the list\n if (foundWorksheetDetails.some((wsd: Partial<WorksheetDetail>) => wsd.issue)) {\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n foundWorksheetDetails = this.renewWorksheetDetails(worksheetDetails, foundWorksheetDetails, 'name', {\n updater: this.user\n })\n\n const worksheetDetailsWithIssue: WorksheetDetail[] = foundWorksheetDetails.filter(\n (wsd: WorksheetDetail) => wsd.issue\n ) as WorksheetDetail[]\n\n if (worksheetDetailsWithIssue.length) {\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetailsWithIssue)\n }\n }\n\n let orderStatus: string =\n refOrder instanceof ArrivalNotice\n ? ORDER_STATUS.READY_TO_UNLOAD\n : refOrder instanceof ReleaseGood\n ? ORDER_STATUS.LOADING\n : ORDER_STATUS.DONE\n\n worksheet = await this.completeWorksheet(worksheet, orderStatus)\n return worksheet\n }\n\n async doOperationTransaction(targetVas: OrderVas): Promise<void> {\n const operationGuide: string = targetVas.vas?.operationGuide\n if (operationGuide) {\n await this.COMPLETE_TRX_MAP[operationGuide](this.trxMgr, targetVas, this.user)\n }\n }\n}\n"]}