@things-factory/worksheet-base 5.0.13 → 6.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -1 +1 @@
1
- {"version":3,"file":"generate-batch-picking-worksheet-details-by-bulk.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, getRepository } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { inventoriesByStrategy, WorksheetNoGenerator } from '../../../utils'\n\nexport const generateBatchPickingWorksheetDetailsByBulkResolver = {\n async generateBatchPickingWorksheetDetailsByBulk(\n _: any,\n { worksheetId, bizplaceId, selectedItems },\n context: any\n ): Promise<Boolean> {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n\n try {\n let worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { id: worksheetId },\n relations: [\n 'releaseGood',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n // Only proceed if worksheet status IS \"DEACTIVATED\"\n if (worksheet.status != WORKSHEET_STATUS.DEACTIVATED) {\n return true\n }\n\n await getRepository(Worksheet).update(\n { domain, id: worksheetId },\n {\n status: WORKSHEET_STATUS.PROCESSING,\n updater: user,\n updatedAt: new Date()\n }\n )\n\n const inventoryAssignmentSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain, name: 'rule-for-inventory-assignment' }\n })\n\n await Promise.all(\n selectedItems.map(async (oi: OrderInventory & { pickingStrategy: string }) => {\n try {\n let pOrderInventories = tx.getRepository(OrderInventory).find({\n where: {\n refWorksheetId: worksheet.id,\n product: { id: oi.productId },\n batchId: oi.batchId,\n packingType: oi.packingType,\n packingSize: oi.packingSize,\n status: ORDER_INVENTORY_STATUS.PENDING_SPLIT\n },\n relations: ['product', 'releaseGood', 'bizplace', 'orderProduct'],\n order: {\n releaseQty: 'DESC'\n }\n })\n\n let pInventoryList = inventoriesByStrategy(\n {\n ...oi,\n worksheetId: worksheet.id,\n bizplaceId,\n locationSortingRules: inventoryAssignmentSetting ? JSON.parse(inventoryAssignmentSetting.value) : false\n },\n domain,\n tx\n )\n\n let idx = 0\n let [orderInventories, inventoryList] = await Promise.all([pOrderInventories, pInventoryList])\n\n for (let oiIdx = 0; oiIdx < orderInventories.length; oiIdx++) {\n const orderInventory: OrderInventory = orderInventories[oiIdx]\n\n let { releaseQty, releaseUomValue } = orderInventory\n\n while (releaseQty > 0 && idx < inventoryList.items.length) {\n let targetInventory: Inventory = await tx\n .getRepository(Inventory)\n .findOne({ where: { id: inventoryList.items[idx].id } })\n\n let inventoryAvailableQty = targetInventory.qty - (targetInventory?.lockedQty || 0)\n let inventoryAvailableUomValue = targetInventory.uomValue - (targetInventory?.lockedUomValue || 0)\n\n if (inventoryAvailableQty > 0) {\n let allocatedQty = 0,\n allocatedUomValue = 0\n if (inventoryAvailableQty < releaseQty) {\n idx = idx + 1\n allocatedQty = inventoryAvailableQty\n allocatedUomValue = inventoryAvailableUomValue\n } else {\n allocatedQty = releaseQty\n allocatedUomValue = releaseUomValue\n }\n\n releaseQty = releaseQty - allocatedQty\n releaseUomValue = releaseUomValue - allocatedUomValue\n\n //// Update inventory locked quantity\n let qbInv = tx\n .getRepository(Inventory)\n .createQueryBuilder('inv')\n .update(Inventory)\n .set({\n lockedUomValue: () => `COALESCE(locked_uom_value,0) + ${allocatedUomValue}`,\n lockedQty: () => `COALESCE(locked_qty,0) + ${allocatedQty}`\n })\n .where('id = :id', { id: targetInventory.id })\n await qbInv.execute()\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update(\n { id: orderInventory.orderProduct.id },\n { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user }\n )\n\n // Create new order inventory with status -> READY_TO_PICK, type -> RELEASE_OF_GOODS\n let newTargetInventory: OrderInventory = new OrderInventory()\n newTargetInventory = {\n domain: domain,\n bizplace: orderInventory.bizplace,\n name: OrderNoGenerator.orderInventory(),\n releaseGood: orderInventory.releaseGood,\n batchId: orderInventory.batchId,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n refWorksheetId: orderInventory.refWorksheetId,\n product: orderInventory.product,\n packingType: orderInventory.packingType,\n packingSize: parseFloat(orderInventory.packingSize),\n creator: user,\n inventory: targetInventory,\n releaseQty: allocatedQty,\n releaseUomValue: allocatedUomValue,\n uom: orderInventory.uom,\n orderProduct: orderInventory.orderProduct\n }\n newTargetInventory = await tx.getRepository(OrderInventory).save(newTargetInventory)\n\n // Generate Worksheet Detail with status -> DEACTIVATED, type -> BATCH_PICKING\n let newWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n newWorksheetDetail = {\n ...newWorksheetDetail,\n domain: domain,\n worksheet: worksheet,\n bizplace: orderInventory.bizplace,\n name: WorksheetNoGenerator.batchPickingDetail(),\n targetInventory: newTargetInventory,\n targetProduct: newTargetInventory.orderProduct,\n type: WORKSHEET_TYPE.BATCH_PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user\n }\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)\n } else {\n idx = idx + 1\n }\n }\n\n //Update Current Order Inventory status -> COMPLETE_SPLIT\n await tx\n .getRepository(OrderInventory)\n .update(\n { id: orderInventory.id },\n { status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, updater: user, updatedAt: new Date() }\n )\n }\n return { orderInventory: oi, status: 'success', message: null }\n } catch (error) {\n return { orderInventory: oi, status: 'error', message: error }\n }\n })\n )\n\n return true\n } catch (error) {\n throw error\n } finally {\n await getRepository(Worksheet).update(\n { domain, id: worksheetId },\n {\n status: WORKSHEET_STATUS.DEACTIVATED,\n updater: user,\n updatedAt: new Date()\n }\n )\n }\n }\n}\n"]}
1
+ {"version":3,"file":"generate-batch-picking-worksheet-details-by-bulk.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { getRepository } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { inventoriesByStrategy, WorksheetNoGenerator } from '../../../utils'\n\nexport const generateBatchPickingWorksheetDetailsByBulkResolver = {\n async generateBatchPickingWorksheetDetailsByBulk(\n _: any,\n { worksheetId, bizplaceId, selectedItems },\n context: ResolverContext\n ): Promise<Boolean> {\n const { tx, user, domain } = context.state\n\n try {\n let worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { id: worksheetId },\n relations: [\n 'releaseGood',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n // Only proceed if worksheet status IS \"DEACTIVATED\"\n if (worksheet.status != WORKSHEET_STATUS.DEACTIVATED) {\n return true\n }\n\n await getRepository(Worksheet).update(\n { domain, id: worksheetId },\n {\n status: WORKSHEET_STATUS.PROCESSING,\n updater: user,\n updatedAt: new Date()\n }\n )\n\n const inventoryAssignmentSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, name: 'rule-for-inventory-assignment' }\n })\n\n await Promise.all(\n selectedItems.map(async (oi: OrderInventory & { pickingStrategy: string }) => {\n try {\n let pOrderInventories = tx.getRepository(OrderInventory).find({\n where: {\n refWorksheetId: worksheet.id,\n product: { id: oi.productId },\n batchId: oi.batchId,\n packingType: oi.packingType,\n packingSize: oi.packingSize,\n status: ORDER_INVENTORY_STATUS.PENDING_SPLIT\n },\n relations: ['product', 'releaseGood', 'bizplace', 'orderProduct'],\n order: {\n releaseQty: 'DESC'\n }\n })\n\n let pInventoryList = inventoriesByStrategy(\n {\n ...oi,\n worksheetId: worksheet.id,\n bizplaceId,\n locationSortingRules: inventoryAssignmentSetting ? JSON.parse(inventoryAssignmentSetting.value) : false\n },\n domain,\n tx\n )\n\n let idx = 0\n let [orderInventories, inventoryList] = await Promise.all([pOrderInventories, pInventoryList])\n\n for (let oiIdx = 0; oiIdx < orderInventories.length; oiIdx++) {\n const orderInventory: OrderInventory = orderInventories[oiIdx]\n\n let { releaseQty, releaseUomValue } = orderInventory\n\n while (releaseQty > 0 && idx < inventoryList.items.length) {\n let targetInventory: Inventory = await tx\n .getRepository(Inventory)\n .findOne({ where: { id: inventoryList.items[idx].id } })\n\n let inventoryAvailableQty = targetInventory.qty - (targetInventory?.lockedQty || 0)\n let inventoryAvailableUomValue = targetInventory.uomValue - (targetInventory?.lockedUomValue || 0)\n\n if (inventoryAvailableQty > 0) {\n let allocatedQty = 0,\n allocatedUomValue = 0\n if (inventoryAvailableQty < releaseQty) {\n idx = idx + 1\n allocatedQty = inventoryAvailableQty\n allocatedUomValue = inventoryAvailableUomValue\n } else {\n allocatedQty = releaseQty\n allocatedUomValue = releaseUomValue\n }\n\n releaseQty = releaseQty - allocatedQty\n releaseUomValue = releaseUomValue - allocatedUomValue\n\n //// Update inventory locked quantity\n let qbInv = tx\n .getRepository(Inventory)\n .createQueryBuilder('inv')\n .update(Inventory)\n .set({\n lockedUomValue: () => `COALESCE(locked_uom_value,0) + ${allocatedUomValue}`,\n lockedQty: () => `COALESCE(locked_qty,0) + ${allocatedQty}`\n })\n .where('id = :id', { id: targetInventory.id })\n await qbInv.execute()\n\n // update order product status to ASSIGNED\n await tx.getRepository(OrderProduct).update({ id: orderInventory.orderProduct.id }, {\n status: ORDER_PRODUCT_STATUS.ASSIGNED as string,\n updater: user\n } as any)\n\n // Create new order inventory with status -> READY_TO_PICK, type -> RELEASE_OF_GOODS\n let newTargetInventory: OrderInventory = new OrderInventory()\n newTargetInventory = {\n domain: domain,\n bizplace: orderInventory.bizplace,\n name: OrderNoGenerator.orderInventory(),\n releaseGood: orderInventory.releaseGood,\n batchId: orderInventory.batchId,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n refWorksheetId: orderInventory.refWorksheetId,\n product: orderInventory.product,\n packingType: orderInventory.packingType,\n packingSize: parseFloat(orderInventory.packingSize),\n creator: user,\n inventory: targetInventory,\n releaseQty: allocatedQty,\n releaseUomValue: allocatedUomValue,\n uom: orderInventory.uom,\n orderProduct: orderInventory.orderProduct\n }\n newTargetInventory = await tx.getRepository(OrderInventory).save(newTargetInventory)\n\n // Generate Worksheet Detail with status -> DEACTIVATED, type -> BATCH_PICKING\n let newWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n newWorksheetDetail = {\n ...newWorksheetDetail,\n domain: domain,\n worksheet: worksheet,\n bizplace: orderInventory.bizplace,\n name: WorksheetNoGenerator.batchPickingDetail(),\n targetInventory: newTargetInventory,\n targetProduct: newTargetInventory.orderProduct,\n type: WORKSHEET_TYPE.BATCH_PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user\n }\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)\n } else {\n idx = idx + 1\n }\n }\n\n //Update Current Order Inventory status -> COMPLETE_SPLIT\n await tx.getRepository(OrderInventory).update({ id: orderInventory.id }, {\n status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT,\n updater: user,\n updatedAt: new Date()\n } as any)\n }\n return { orderInventory: oi, status: 'success', message: null }\n } catch (error) {\n return { orderInventory: oi, status: 'error', message: error }\n }\n })\n )\n\n return true\n } catch (error) {\n throw error\n } finally {\n await getRepository(Worksheet).update(\n { domain, id: worksheetId },\n {\n status: WORKSHEET_STATUS.DEACTIVATED,\n updater: user,\n updatedAt: new Date()\n }\n )\n }\n }\n}\n"]}
@@ -27,7 +27,7 @@ exports.generateBatchPickingWorksheetDetailsResolver = {
27
27
  // 2. Find all existing order inventory that is related to the product
28
28
  let prevOrdInvs = await tx.getRepository(sales_base_1.OrderInventory).find({
29
29
  where: {
30
- domain,
30
+ domain: { id: domain.id },
31
31
  refWorksheetId: worksheet.id,
32
32
  product: productId,
33
33
  batchId,
@@ -101,7 +101,7 @@ exports.generateBatchPickingWorksheetDetailsResolver = {
101
101
  // update order product status to ASSIGNED
102
102
  await tx
103
103
  .getRepository(sales_base_1.OrderProduct)
104
- .update({ id: prevOrdInv.orderProduct.id }, { status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED, updater: user });
104
+ .update(prevOrdInv.orderProduct, { status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED, updater: user });
105
105
  // Generate Worksheet Detail
106
106
  let newWorksheetDetail = new entities_1.WorksheetDetail();
107
107
  newWorksheetDetail = Object.assign(Object.assign({}, newWorksheetDetail), { domain: domain, worksheet: worksheet, bizplace: prevOrdInv.bizplace, name: utils_1.WorksheetNoGenerator.batchPickingDetail(), targetInventory: newTargetInventory, targetProduct: prevOrdInv.orderProduct, type: constants_1.WORKSHEET_TYPE.BATCH_PICKING, status: constants_1.WORKSHEET_STATUS.DEACTIVATED, creator: user });
@@ -113,9 +113,11 @@ exports.generateBatchPickingWorksheetDetailsResolver = {
113
113
  j = j + 1;
114
114
  }
115
115
  }
116
- await tx
117
- .getRepository(sales_base_1.OrderInventory)
118
- .update({ id: prevOrdInvs[i].id }, { status: sales_base_1.ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, updater: user, updatedAt: new Date() });
116
+ await tx.getRepository(sales_base_1.OrderInventory).update({ id: prevOrdInvs[i].id }, {
117
+ status: sales_base_1.ORDER_INVENTORY_STATUS.COMPLETE_SPLIT,
118
+ updater: user,
119
+ updatedAt: new Date()
120
+ });
119
121
  }
120
122
  }
121
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generate-batch-picking-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generateBatchPickingWorksheetDetailsResolver = {\n async generateBatchPickingWorksheetDetails(\n _: any,\n { worksheetNo, batchId, productId, packingType, worksheetDetails },\n context: any\n ): Promise<void> {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n\n // 1. Find Related Worksheet\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, domain },\n relations: [\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n // Only proceed if worksheet status IS \"DEACTIVATED\"\n if (worksheet.status != WORKSHEET_STATUS.DEACTIVATED) {\n return\n }\n\n // 2. Find all existing order inventory that is related to the product\n let prevOrdInvs: OrderInventory[] = await tx.getRepository(OrderInventory).find({\n where: {\n domain,\n refWorksheetId: worksheet.id,\n product: productId,\n batchId,\n packingType,\n status: ORDER_INVENTORY_STATUS.PENDING_SPLIT\n },\n relations: ['releaseGood', 'bizplace', 'orderProduct']\n })\n\n // Sort all release qty from highest to lowest\n prevOrdInvs = prevOrdInvs.sort(function (a, b) {\n return b.releaseQty - a.releaseQty\n })\n\n const selectedOrdInvs: OrderInventory[] = worksheetDetails\n .map((wsd: any) => wsd.targetInventory)\n .sort(function (a, b) {\n return b.releaseQty - a.releaseQty\n })\n\n let j = 0\n\n for (var i: number = 0; i < prevOrdInvs.length; i++) {\n let prevOrdInv: OrderInventory = prevOrdInvs[i] //PENDING_SPLIT\n let requiredQty: number = prevOrdInv.releaseQty\n let requiredUomValue: number = prevOrdInv.releaseUomValue\n\n while (j < selectedOrdInvs.length && requiredQty > 0) {\n let selectedOrdInv: any = selectedOrdInvs[j]\n let remainingQty: number = selectedOrdInv.releaseQty\n let remainingUomValue: number = selectedOrdInv.releaseUomValue\n\n if (remainingQty == 0) {\n j = j + 1\n continue\n }\n\n // Create new order inventory with new status -> READY_TO_PICK\n let newTargetInventory: OrderInventory = new OrderInventory()\n newTargetInventory.domain = domain\n newTargetInventory.bizplace = prevOrdInv.bizplace\n newTargetInventory.name = OrderNoGenerator.orderInventory()\n newTargetInventory.releaseGood = prevOrdInv.releaseGood\n newTargetInventory.batchId = prevOrdInv.batchId\n newTargetInventory.status = ORDER_INVENTORY_STATUS.READY_TO_PICK\n newTargetInventory.type = selectedOrdInv.type\n newTargetInventory.refWorksheetId = prevOrdInv.refWorksheetId\n newTargetInventory.product = await tx.getRepository(Product).findOne(productId)\n newTargetInventory.packingType = prevOrdInv.packingType\n newTargetInventory.packingSize = parseFloat(prevOrdInv.packingSize)\n newTargetInventory.creator = user\n newTargetInventory.uom = selectedOrdInv.uom\n newTargetInventory.orderProduct = prevOrdInv.orderProduct\n\n let inventory: Inventory = await tx.getRepository(Inventory).findOne(selectedOrdInv.inventory.id)\n\n const currentLockedQty: number = inventory.lockedQty\n const currentLockedUomValue: number = inventory.lockedUomValue\n\n // Negative means fulfilled, positive mean current inventory is insufficient to fulfil all qty\n const fulfiledQty: number = requiredQty - remainingQty // 2 - 5 || 2 - 2 || 2 - 1\n const fulfiledUomValue: number = Math.round((requiredUomValue - remainingUomValue) * 100) / 100\n\n newTargetInventory.inventory = inventory\n newTargetInventory.releaseQty = fulfiledQty <= 0 ? requiredQty : remainingQty\n newTargetInventory.releaseUomValue = fulfiledUomValue <= 0 ? requiredUomValue : remainingUomValue\n newTargetInventory = await tx.getRepository(OrderInventory).save(newTargetInventory)\n\n remainingQty = remainingQty - requiredQty\n remainingUomValue = Math.round((remainingUomValue - requiredUomValue) * 100) / 100\n\n requiredQty = fulfiledQty <= 0 ? 0 : fulfiledQty\n requiredUomValue = fulfiledUomValue <= 0 ? 0 : fulfiledUomValue\n\n await tx.getRepository(Inventory).update(\n { domain, id: inventory.id },\n {\n lockedQty: Boolean(currentLockedQty)\n ? newTargetInventory.releaseQty + currentLockedQty\n : newTargetInventory.releaseQty,\n lockedUomValue: Boolean(currentLockedUomValue)\n ? Math.round((newTargetInventory.releaseUomValue + currentLockedUomValue) * 100) / 100\n : newTargetInventory.releaseUomValue,\n updater: user,\n updatedAt: new Date()\n }\n )\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: prevOrdInv.orderProduct.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user })\n\n // Generate Worksheet Detail\n let newWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n newWorksheetDetail = {\n ...newWorksheetDetail,\n domain: domain,\n worksheet: worksheet,\n bizplace: prevOrdInv.bizplace,\n name: WorksheetNoGenerator.batchPickingDetail(),\n targetInventory: newTargetInventory,\n targetProduct: prevOrdInv.orderProduct,\n type: WORKSHEET_TYPE.BATCH_PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user\n }\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)\n\n selectedOrdInv.releaseQty = remainingQty <= 0 ? 0 : remainingQty\n selectedOrdInv.releaseUomValue = remainingUomValue <= 0 ? 0 : remainingUomValue\n\n // insufficient qty for current order inventory, use the next inventory qty\n if (selectedOrdInv.releaseQty == 0) {\n j = j + 1\n }\n }\n await tx\n .getRepository(OrderInventory)\n .update(\n { id: prevOrdInvs[i].id },\n { status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, updater: user, updatedAt: new Date() }\n )\n }\n }\n}\n"]}
1
+ {"version":3,"file":"generate-batch-picking-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generateBatchPickingWorksheetDetailsResolver = {\n async generateBatchPickingWorksheetDetails(\n _: any,\n { worksheetNo, batchId, productId, packingType, worksheetDetails },\n context: ResolverContext\n ): Promise<void> {\n const { tx, user, domain } = context.state\n\n // 1. Find Related Worksheet\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, domain },\n relations: [\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n // Only proceed if worksheet status IS \"DEACTIVATED\"\n if (worksheet.status != WORKSHEET_STATUS.DEACTIVATED) {\n return\n }\n\n // 2. Find all existing order inventory that is related to the product\n let prevOrdInvs: OrderInventory[] = await tx.getRepository(OrderInventory).find({\n where: {\n domain: { id: domain.id },\n refWorksheetId: worksheet.id,\n product: productId,\n batchId,\n packingType,\n status: ORDER_INVENTORY_STATUS.PENDING_SPLIT\n },\n relations: ['releaseGood', 'bizplace', 'orderProduct']\n })\n\n // Sort all release qty from highest to lowest\n prevOrdInvs = prevOrdInvs.sort(function (a, b) {\n return b.releaseQty - a.releaseQty\n })\n\n const selectedOrdInvs: OrderInventory[] = worksheetDetails\n .map((wsd: any) => wsd.targetInventory)\n .sort(function (a, b) {\n return b.releaseQty - a.releaseQty\n })\n\n let j = 0\n\n for (var i: number = 0; i < prevOrdInvs.length; i++) {\n let prevOrdInv: OrderInventory = prevOrdInvs[i] //PENDING_SPLIT\n let requiredQty: number = prevOrdInv.releaseQty\n let requiredUomValue: number = prevOrdInv.releaseUomValue\n\n while (j < selectedOrdInvs.length && requiredQty > 0) {\n let selectedOrdInv: any = selectedOrdInvs[j]\n let remainingQty: number = selectedOrdInv.releaseQty\n let remainingUomValue: number = selectedOrdInv.releaseUomValue\n\n if (remainingQty == 0) {\n j = j + 1\n continue\n }\n\n // Create new order inventory with new status -> READY_TO_PICK\n let newTargetInventory: OrderInventory = new OrderInventory()\n newTargetInventory.domain = domain\n newTargetInventory.bizplace = prevOrdInv.bizplace\n newTargetInventory.name = OrderNoGenerator.orderInventory()\n newTargetInventory.releaseGood = prevOrdInv.releaseGood\n newTargetInventory.batchId = prevOrdInv.batchId\n newTargetInventory.status = ORDER_INVENTORY_STATUS.READY_TO_PICK\n newTargetInventory.type = selectedOrdInv.type\n newTargetInventory.refWorksheetId = prevOrdInv.refWorksheetId\n newTargetInventory.product = await tx.getRepository(Product).findOne(productId)\n newTargetInventory.packingType = prevOrdInv.packingType\n newTargetInventory.packingSize = parseFloat(prevOrdInv.packingSize)\n newTargetInventory.creator = user\n newTargetInventory.uom = selectedOrdInv.uom\n newTargetInventory.orderProduct = prevOrdInv.orderProduct\n\n let inventory: Inventory = await tx.getRepository(Inventory).findOne(selectedOrdInv.inventory.id)\n\n const currentLockedQty: number = inventory.lockedQty\n const currentLockedUomValue: number = inventory.lockedUomValue\n\n // Negative means fulfilled, positive mean current inventory is insufficient to fulfil all qty\n const fulfiledQty: number = requiredQty - remainingQty // 2 - 5 || 2 - 2 || 2 - 1\n const fulfiledUomValue: number = Math.round((requiredUomValue - remainingUomValue) * 100) / 100\n\n newTargetInventory.inventory = inventory\n newTargetInventory.releaseQty = fulfiledQty <= 0 ? requiredQty : remainingQty\n newTargetInventory.releaseUomValue = fulfiledUomValue <= 0 ? requiredUomValue : remainingUomValue\n newTargetInventory = await tx.getRepository(OrderInventory).save(newTargetInventory)\n\n remainingQty = remainingQty - requiredQty\n remainingUomValue = Math.round((remainingUomValue - requiredUomValue) * 100) / 100\n\n requiredQty = fulfiledQty <= 0 ? 0 : fulfiledQty\n requiredUomValue = fulfiledUomValue <= 0 ? 0 : fulfiledUomValue\n\n await tx.getRepository(Inventory).update({ domain, id: inventory.id }, {\n lockedQty: Boolean(currentLockedQty)\n ? newTargetInventory.releaseQty + currentLockedQty\n : newTargetInventory.releaseQty,\n lockedUomValue: Boolean(currentLockedUomValue)\n ? Math.round((newTargetInventory.releaseUomValue + currentLockedUomValue) * 100) / 100\n : newTargetInventory.releaseUomValue,\n updater: user,\n updatedAt: new Date()\n } as any)\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update(prevOrdInv.orderProduct, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user } as any)\n\n // Generate Worksheet Detail\n let newWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n newWorksheetDetail = {\n ...newWorksheetDetail,\n domain: domain,\n worksheet: worksheet,\n bizplace: prevOrdInv.bizplace,\n name: WorksheetNoGenerator.batchPickingDetail(),\n targetInventory: newTargetInventory,\n targetProduct: prevOrdInv.orderProduct,\n type: WORKSHEET_TYPE.BATCH_PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user\n }\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)\n\n selectedOrdInv.releaseQty = remainingQty <= 0 ? 0 : remainingQty\n selectedOrdInv.releaseUomValue = remainingUomValue <= 0 ? 0 : remainingUomValue\n\n // insufficient qty for current order inventory, use the next inventory qty\n if (selectedOrdInv.releaseQty == 0) {\n j = j + 1\n }\n }\n await tx.getRepository(OrderInventory).update({ id: prevOrdInvs[i].id }, {\n status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT,\n updater: user,\n updatedAt: new Date()\n } as any)\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-carton-id.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-carton-id.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AAI5C,QAAA,wBAAwB,GAAG;IACtC,KAAK,CAAC,gBAAgB,CAAC,CAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAY;QAC7D,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAA0C,OAAO,CAAC,KAAK,CAAA;QAC3E,0BAA0B;QAC1B,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QAE3B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACvD,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAEvC,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;QACzB,IAAI,OAAO,GAAG,EAAE,CAAA;QAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,iBAAiB,GAAG,MAAM,IAAA,yBAAU,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;YAClF,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAA;SAC9C;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAA","sourcesContent":["import { generateId } from '@things-factory/id-rule-base'\nimport { Domain } from '@things-factory/shell'\nimport { EntityManager } from 'typeorm'\n\nexport const generateCartonIdResolver = {\n async generateCartonId(_: any, { printQty, type }, context: any) {\n const { tx, domain }: { tx: EntityManager; domain: Domain } = context.state\n // 1. get and set the date\n const today = new Date()\n const year = today.getFullYear()\n const month = today.getMonth()\n const day = today.getDate()\n\n const yy = String(year).substr(String(year).length - 2)\n const mm = String(month + 1).padStart(2, '0')\n const dd = String(day).padStart(2, '0')\n\n const date = yy + mm + dd\n let results = []\n\n for (let i = 0; i < printQty; i++) {\n const generatedPalletId = await generateId({ domain, type, seed: { date: date } })\n results.push({ cartonId: generatedPalletId })\n }\n\n return results\n }\n}\n"]}
1
+ {"version":3,"file":"generate-carton-id.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-carton-id.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AAE5C,QAAA,wBAAwB,GAAG;IACtC,KAAK,CAAC,gBAAgB,CAAC,CAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAwB;QACzE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QACpC,0BAA0B;QAC1B,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QAE3B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACvD,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAEvC,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;QACzB,IAAI,OAAO,GAAG,EAAE,CAAA;QAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,iBAAiB,GAAG,MAAM,IAAA,yBAAU,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;YAClF,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAA;SAC9C;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAA","sourcesContent":["import { generateId } from '@things-factory/id-rule-base'\n\nexport const generateCartonIdResolver = {\n async generateCartonId(_: any, { printQty, type }, context: ResolverContext) {\n const { tx, domain } = context.state\n // 1. get and set the date\n const today = new Date()\n const year = today.getFullYear()\n const month = today.getMonth()\n const day = today.getDate()\n\n const yy = String(year).substr(String(year).length - 2)\n const mm = String(month + 1).padStart(2, '0')\n const dd = String(day).padStart(2, '0')\n\n const date = yy + mm + dd\n let results = []\n\n for (let i = 0; i < printQty; i++) {\n const generatedPalletId = await generateId({ domain, type, seed: { date: date } })\n results.push({ cartonId: generatedPalletId })\n }\n\n return results\n }\n}\n"]}
@@ -6,7 +6,7 @@ const id_rule_base_1 = require("@things-factory/id-rule-base");
6
6
  const entities_1 = require("../../../entities");
7
7
  exports.generatePalletIdResolver = {
8
8
  async generatePalletId(_, { targets, type }, context) {
9
- var _a, _b, _c;
9
+ var _a, _b, _c, _d;
10
10
  const { tx, domain } = context.state;
11
11
  // 1. get date in yymmdd format
12
12
  const date = new Date().toJSON().slice(0, 10).replace(/-/g, '').slice(2, 8);
@@ -14,7 +14,7 @@ exports.generatePalletIdResolver = {
14
14
  // 2. get worksheet details
15
15
  const foundWorksheetDetails = await tx.getRepository(entities_1.WorksheetDetail).find({
16
16
  where: {
17
- domain,
17
+ domain: { id: domain.id },
18
18
  id: (0, typeorm_1.In)(targets.map(target => target.id))
19
19
  },
20
20
  relations: [
@@ -45,7 +45,7 @@ exports.generatePalletIdResolver = {
45
45
  let result = {};
46
46
  // 5. map all data to be returned
47
47
  if (foundWSD.targetProduct) {
48
- result = Object.assign(Object.assign({}, foundWSD.targetProduct), { bizplace: foundWSD.bizplace, orderProductRemark: foundWSD.targetProduct.remark, purchaseOrderNo: ((_b = (_a = foundWSD.targetProduct.arrivalNotice) === null || _a === void 0 ? void 0 : _a.purchaseOrder) === null || _b === void 0 ? void 0 : _b.name) || '', arrivalNoticeRefNo: ((_c = foundWSD.targetProduct.arrivalNotice) === null || _c === void 0 ? void 0 : _c.refNo) || '' });
48
+ result = Object.assign(Object.assign({}, foundWSD.targetProduct), { bizplace: foundWSD.bizplace, orderProductRemark: foundWSD.targetProduct.remark, purchaseOrderNo: ((_b = (_a = foundWSD.targetProduct.arrivalNotice) === null || _a === void 0 ? void 0 : _a.purchaseOrder) === null || _b === void 0 ? void 0 : _b.name) || '', arrivalNoticeRefNo: ((_c = foundWSD.targetProduct.arrivalNotice) === null || _c === void 0 ? void 0 : _c.refNo) || '', arrivalNoticeNo: ((_d = foundWSD.targetProduct.arrivalNotice) === null || _d === void 0 ? void 0 : _d.name) || '' });
49
49
  }
50
50
  else if (foundWSD.targetInventory) {
51
51
  result = Object.assign(Object.assign({}, foundWSD.targetInventory), { bizplace: foundWSD.bizplace, orderProductRemark: '', purchaseOrderNo: '', arrivalNoticeRefNo: '' });
@@ -1 +1 @@
1
- {"version":3,"file":"generate-pallet-id.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, In } from 'typeorm'\n\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Domain } from '@things-factory/shell'\n\nimport { WorksheetDetail } from '../../../entities'\n\nexport const generatePalletIdResolver = {\n async generatePalletId(_: any, { targets, type }, context: any) {\n const { tx, domain }: { tx: EntityManager; domain: Domain } = context.state\n // 1. get date in yymmdd format\n const date = new Date().toJSON().slice(0, 10).replace(/-/g, '').slice(2, 8)\n let results = []\n\n // 2. get worksheet details\n const foundWorksheetDetails: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({\n where: {\n domain,\n id: In(targets.map(target => target.id))\n },\n relations: [\n 'domain',\n 'bizplace',\n 'worksheet',\n 'worker',\n 'targetProduct',\n 'targetProduct.arrivalNotice',\n 'targetProduct.arrivalNotice.purchaseOrder',\n 'targetProduct.product',\n 'targetInventory',\n 'targetInventory.product',\n 'targetVas',\n 'targetVas.targetProduct'\n ]\n })\n\n // 3. from worksheet detail get product name, product type, batchid, packing type, bizplace\n if (!foundWorksheetDetails?.length) throw new Error('Unable to find worksheet details')\n else {\n for (let i = 0; i < foundWorksheetDetails.length; i++) {\n let foundWSD = foundWorksheetDetails[i]\n for (let idx = 0; idx < targets.length; idx++) {\n if (foundWSD.id === targets[idx].id) {\n // 4. generate pallet id based on print qty > call generateId resolver\n for (let i = 0; i < targets[idx].printQty; i++) {\n let result: any = {}\n // 5. map all data to be returned\n if (foundWSD.targetProduct) {\n result = {\n ...foundWSD.targetProduct,\n bizplace: foundWSD.bizplace,\n orderProductRemark: foundWSD.targetProduct.remark,\n purchaseOrderNo: foundWSD.targetProduct.arrivalNotice?.purchaseOrder?.name || '',\n arrivalNoticeRefNo: foundWSD.targetProduct.arrivalNotice?.refNo || ''\n }\n } else if (foundWSD.targetInventory) {\n result = {\n ...foundWSD.targetInventory,\n bizplace: foundWSD.bizplace,\n orderProductRemark: '',\n purchaseOrderNo: '',\n arrivalNoticeRefNo: ''\n }\n } else if (foundWSD.targetVas) {\n result = {\n ...foundWSD.targetVas,\n bizplace: foundWSD.bizplace,\n batchId: foundWSD.targetVas.targetBatchId,\n orderProductRemark: '',\n purchaseOrderNo: '',\n arrivalNoticeRefNo: ''\n }\n }\n\n results.push({\n ...result,\n palletId: await generateId({\n domain,\n type,\n seed: {\n batchId: result.batchId || '',\n date\n }\n })\n })\n }\n }\n }\n }\n }\n\n return results\n }\n}\n"]}
1
+ {"version":3,"file":"generate-pallet-id.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\n\nimport { generateId } from '@things-factory/id-rule-base'\n\nimport { WorksheetDetail } from '../../../entities'\n\nexport const generatePalletIdResolver = {\n async generatePalletId(_: any, { targets, type }, context: ResolverContext) {\n const { tx, domain } = context.state\n // 1. get date in yymmdd format\n const date = new Date().toJSON().slice(0, 10).replace(/-/g, '').slice(2, 8)\n let results = []\n\n // 2. get worksheet details\n const foundWorksheetDetails: WorksheetDetail[] = await tx.getRepository(WorksheetDetail).find({\n where: {\n domain: { id: domain.id },\n id: In(targets.map(target => target.id))\n },\n relations: [\n 'domain',\n 'bizplace',\n 'worksheet',\n 'worker',\n 'targetProduct',\n 'targetProduct.arrivalNotice',\n 'targetProduct.arrivalNotice.purchaseOrder',\n 'targetProduct.product',\n 'targetInventory',\n 'targetInventory.product',\n 'targetVas',\n 'targetVas.targetProduct'\n ]\n })\n\n // 3. from worksheet detail get product name, product type, batchid, packing type, bizplace\n if (!foundWorksheetDetails?.length) throw new Error('Unable to find worksheet details')\n else {\n for (let i = 0; i < foundWorksheetDetails.length; i++) {\n let foundWSD = foundWorksheetDetails[i]\n for (let idx = 0; idx < targets.length; idx++) {\n if (foundWSD.id === targets[idx].id) {\n // 4. generate pallet id based on print qty > call generateId resolver\n for (let i = 0; i < targets[idx].printQty; i++) {\n let result: any = {}\n // 5. map all data to be returned\n if (foundWSD.targetProduct) {\n result = {\n ...foundWSD.targetProduct,\n bizplace: foundWSD.bizplace,\n orderProductRemark: foundWSD.targetProduct.remark,\n purchaseOrderNo: foundWSD.targetProduct.arrivalNotice?.purchaseOrder?.name || '',\n arrivalNoticeRefNo: foundWSD.targetProduct.arrivalNotice?.refNo || '',\n arrivalNoticeNo: foundWSD.targetProduct.arrivalNotice?.name || ''\n }\n } else if (foundWSD.targetInventory) {\n result = {\n ...foundWSD.targetInventory,\n bizplace: foundWSD.bizplace,\n orderProductRemark: '',\n purchaseOrderNo: '',\n arrivalNoticeRefNo: ''\n }\n } else if (foundWSD.targetVas) {\n result = {\n ...foundWSD.targetVas,\n bizplace: foundWSD.bizplace,\n batchId: foundWSD.targetVas.targetBatchId,\n orderProductRemark: '',\n purchaseOrderNo: '',\n arrivalNoticeRefNo: ''\n }\n }\n\n results.push({\n ...result,\n palletId: await generateId({\n domain,\n type,\n seed: {\n batchId: result.batchId || '',\n date\n }\n })\n })\n }\n }\n }\n }\n }\n\n return results\n }\n}\n"]}
@@ -20,7 +20,7 @@ exports.generatePickingWorksheetDetailsResolver = {
20
20
  const worksheetId = worksheet.id;
21
21
  // 2. search for sorting rules
22
22
  const inventoryAssignmentSetting = await tx.getRepository(setting_base_1.Setting).findOne({
23
- where: { domain, name: 'rule-for-inventory-assignment' }
23
+ where: { domain: { id: domain.id }, name: 'rule-for-inventory-assignment' }
24
24
  });
25
25
  if (!locationSortingRules && inventoryAssignmentSetting) {
26
26
  locationSortingRules = [];
@@ -68,7 +68,10 @@ exports.generatePickingWorksheetDetailsResolver = {
68
68
  // update order product status to ASSIGNED
69
69
  await tx
70
70
  .getRepository(sales_base_1.OrderProduct)
71
- .update({ id: targetInventory.orderProduct.id }, { status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED, updater: user });
71
+ .update({ id: targetInventory.orderProduct.id }, {
72
+ status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED,
73
+ updater: user
74
+ });
72
75
  // 7. collect new worksheet details records
73
76
  const worksheetDetail = Object.assign(new entities_1.WorksheetDetail(), {
74
77
  domain,
@@ -1 +1 @@
1
- {"version":3,"file":"generate-picking-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderInventoryPatch,\n OrderNoGenerator,\n OrderProduct,\n ReleaseGood\n} from '@things-factory/sales-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\nimport { getInventoriesByStrategy, Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generatePickingWorksheetDetailsResolver = {\n async generatePickingWorksheetDetails(\n _: any,\n { bizplaceId, selectedItems, worksheetNo, locationSortingRules },\n context: any\n ): Promise<Boolean> {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n\n // 1. find related worksheet\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, status: WORKSHEET_STATUS.DEACTIVATED, domain },\n relations: ['releaseGood']\n })\n\n if (!worksheet) throw new Error('picking worksheet not found')\n const worksheetId = worksheet.id\n\n // 2. search for sorting rules\n const inventoryAssignmentSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain, name: 'rule-for-inventory-assignment' }\n })\n\n if (!locationSortingRules && inventoryAssignmentSetting) {\n locationSortingRules = []\n let locationSetting = JSON.parse(inventoryAssignmentSetting.value)\n for (const key in locationSetting) {\n locationSortingRules.push({ name: key, desc: locationSetting[key] == 'ASC' ? false : true })\n }\n }\n\n try {\n // 3. get all related inventories by strategy\n let inventories: any[] = await getInventoriesByStrategy(\n domain.id,\n bizplaceId,\n worksheetId,\n selectedItems,\n locationSortingRules,\n tx\n )\n\n // 4. get worksheet details\n let worksheetDetails: WorksheetDetail[] = selectedItems.reduce(\n (accWSD: WorksheetDetail[], oi: OrderInventoryPatch) => {\n const relatedInventories = inventories.filter(\n inv =>\n inv.productId == oi.productId &&\n inv.batchId == oi.batchId &&\n inv.packingType == oi.packingType &&\n inv.packingSize == oi.packingSize &&\n inv.uom == oi.uom &&\n inv.remainQty\n )\n\n if (\n relatedInventories.length &&\n oi.releaseQty <= inventories.reduce((totalQty: number, inv) => totalQty + inv.remainQty, 0)\n ) {\n let composedWSD: WorksheetDetail[] = _composeWorksheetDetails(\n domain,\n user,\n worksheet.releaseGood,\n bizplaceId,\n oi,\n relatedInventories\n )\n\n accWSD.push(...composedWSD)\n }\n\n return accWSD\n },\n []\n )\n\n let targetInventories: OrderInventory = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n // 5. remove existing worksheet details and its target inventory if there's any\n await _removeOldWorksheetDetails(targetInventories, worksheet.id, tx)\n\n targetInventories = await tx.getRepository(OrderInventory).save(targetInventories)\n\n let newWorksheetDetails: WorksheetDetail[] = []\n\n for (let i = 0, l = targetInventories.length; i < l; i++) {\n const targetInventory: OrderInventory = targetInventories[i]\n\n // 6. update inventory lockedQty and lockedUomValue\n await tx\n .createQueryBuilder()\n .update(Inventory)\n .set({\n lockedQty: () => `COALESCE(\"locked_qty\", 0) + ${targetInventory.releaseQty}`,\n lockedUomValue: () => `COALESCE(\"locked_uom_value\", 0) + ${targetInventory.releaseUomValue}`,\n updater: user\n })\n .where('id = :id', { id: targetInventory.inventory.id })\n .execute()\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: targetInventory.orderProduct.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user })\n\n // 7. collect new worksheet details records\n const worksheetDetail: WorksheetDetail = Object.assign(new WorksheetDetail(), {\n domain,\n bizplace: { id: bizplaceId },\n worksheet,\n name: WorksheetNoGenerator.pickingDetail(),\n seq: 0,\n targetInventory,\n targetProduct: targetInventory.orderProduct,\n type: WORKSHEET_TYPE.PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user,\n updater: user\n })\n\n newWorksheetDetails.push(worksheetDetail)\n }\n\n // 8. save worksheet details\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetails)\n\n return true\n } catch (error) {\n throw error\n }\n }\n}\n\nfunction _composeWorksheetDetails(\n domain: Domain,\n user: User,\n releaseGood: ReleaseGood,\n bizplaceId: string,\n record: OrderInventoryPatch,\n inventories: Inventory[]\n): WorksheetDetail[] {\n let leftReleaseQty: number = record.releaseQty\n let leftReleaseUomValue: number = record.releaseUomValue\n let compReleaseQty: number = 0\n let compReleaseUomValue: number = 0\n\n let worksheetDetails: Partial<WorksheetDetail[]> = []\n let idx = 0\n\n while (compReleaseQty < record.releaseQty) {\n const inv = inventories[idx]\n\n if (!inv) break\n\n let releaseQty: number = 0\n let releaseUomValue: number = 0\n\n if (inv.remainQty > leftReleaseQty) {\n compReleaseQty += leftReleaseQty\n compReleaseUomValue += leftReleaseUomValue\n releaseQty = leftReleaseQty\n releaseUomValue = leftReleaseUomValue\n } else {\n compReleaseQty += inv.remainQty\n compReleaseUomValue += inv.remainUomValue\n leftReleaseQty -= inv.remainQty\n leftReleaseUomValue -= inv.remainUomValue\n releaseQty = inv.remainQty\n releaseUomValue = inv.remainUomValue\n }\n\n let worksheetDetail: WorksheetDetail = Object.assign(new WorksheetDetail(), {\n targetInventory: {\n domain,\n bizplace: { id: bizplaceId },\n name: OrderNoGenerator.orderInventory(),\n releaseGood,\n inventory: { id: inv.id },\n product: { id: inv.productId },\n batchId: inv.batchId,\n batchIdRef: inv.batchIdRef,\n packingType: inv.packingType,\n packingSize: inv.packingSize,\n releaseQty,\n releaseUomValue,\n creator: user,\n updater: user,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n uom: record.uom,\n orderProduct: { id: inv.orderProductId }\n }\n })\n\n worksheetDetails.push(worksheetDetail)\n\n idx++\n }\n\n return worksheetDetails\n}\n\nasync function _removeOldWorksheetDetails(targetInventories: OrderInventory[], worksheetId: string, tx: EntityManager) {\n let orderProductJson = JSON.stringify(\n targetInventories.map((target: OrderInventory) => {\n return {\n product_id: target.product.id,\n batch_id: target.batchId,\n packing_type: target.packingType,\n packing_size: target.packingSize\n }\n })\n )\n\n // get worksheetDetail IDs and their targetInventory IDs\n let existingOIandWSD: WorksheetDetail[] = await tx.query(\n `\n SELECT wsd.id AS \"worksheetDetailId\", oi.id AS \"orderInventoryId\"\n FROM order_inventories oi \n INNER JOIN JSON_POPULATE_RECORDSET(NULL::order_products, $1) js ON oi.batch_id = js.batch_id \n AND oi.product_id = js.product_id \n AND oi.packing_type = js.packing_type\n AND oi.packing_size = js.packing_size\n LEFT JOIN worksheet_details wsd ON oi.id = wsd.target_inventory_id\n WHERE oi.release_good_id = $2\n `,\n [orderProductJson, worksheetId]\n )\n\n // if found the records then delete, so that we can create new records\n if (existingOIandWSD.length) {\n await tx.getRepository(WorksheetDetail).delete(existingOIandWSD.map((wsd: any) => wsd.worksheetDetailId))\n await tx.getRepository(OrderInventory).delete(existingOIandWSD.map((wsd: any) => wsd.orderInventoryId))\n }\n}\n"]}
1
+ {"version":3,"file":"generate-picking-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts"],"names":[],"mappings":";;;AAGA,2DASmC;AACnC,+DAAsD;AAEtD,mEAAoF;AAEpF,kDAAqE;AACrE,gDAA8D;AAC9D,0CAAqD;AAExC,QAAA,uCAAuC,GAAG;IACrD,KAAK,CAAC,+BAA+B,CACnC,CAAM,EACN,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,EAChE,OAAY;QAEZ,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE1C,4BAA4B;QAC5B,MAAM,SAAS,GAAc,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAS,CAAC,CAAC,OAAO,CAAC;YACrE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,4BAAgB,CAAC,WAAW,EAAE,MAAM,EAAE;YAC1E,SAAS,EAAE,CAAC,aAAa,CAAC;SAC3B,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC9D,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,CAAA;QAEhC,8BAA8B;QAC9B,MAAM,0BAA0B,GAAY,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAO,CAAC,CAAC,OAAO,CAAC;YAClF,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE;SAC5E,CAAC,CAAA;QAEF,IAAI,CAAC,oBAAoB,IAAI,0BAA0B,EAAE;YACvD,oBAAoB,GAAG,EAAE,CAAA;YACzB,IAAI,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAA;YAClE,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE;gBACjC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;aAC7F;SACF;QAED,IAAI;YACF,6CAA6C;YAC7C,IAAI,WAAW,GAAU,MAAM,IAAA,yCAAwB,EACrD,MAAM,CAAC,EAAE,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,EAAE,CACH,CAAA;YAED,2BAA2B;YAC3B,IAAI,gBAAgB,GAAsB,aAAa,CAAC,MAAM,CAC5D,CAAC,MAAyB,EAAE,EAAuB,EAAE,EAAE;gBACrD,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAC3C,GAAG,CAAC,EAAE,CACJ,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS;oBAC7B,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO;oBACzB,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW;oBACjC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW;oBACjC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG;oBACjB,GAAG,CAAC,SAAS,CAChB,CAAA;gBAED,IACE,kBAAkB,CAAC,MAAM;oBACzB,EAAE,CAAC,UAAU,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,QAAgB,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAC3F;oBACA,IAAI,WAAW,GAAsB,wBAAwB,CAC3D,MAAM,EACN,IAAI,EACJ,SAAS,CAAC,WAAW,EACrB,UAAU,EACV,EAAE,EACF,kBAAkB,CACnB,CAAA;oBAED,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAA;iBAC5B;gBAED,OAAO,MAAM,CAAA;YACf,CAAC,EACD,EAAE,CACH,CAAA;YAED,IAAI,iBAAiB,GAAmB,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YAE3G,+EAA+E;YAC/E,MAAM,0BAA0B,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAErE,iBAAiB,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YAElF,IAAI,mBAAmB,GAAsB,EAAE,CAAA;YAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxD,MAAM,eAAe,GAAmB,iBAAiB,CAAC,CAAC,CAAC,CAAA;gBAE5D,mDAAmD;gBACnD,MAAM,EAAE;qBACL,kBAAkB,EAAE;qBACpB,MAAM,CAAC,0BAAS,CAAC;qBACjB,GAAG,CAAC;oBACH,SAAS,EAAE,GAAG,EAAE,CAAC,+BAA+B,eAAe,CAAC,UAAU,EAAE;oBAC5E,cAAc,EAAE,GAAG,EAAE,CAAC,qCAAqC,eAAe,CAAC,eAAe,EAAE;oBAC5F,OAAO,EAAE,IAAI;iBACP,CAAC;qBACR,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;qBACvD,OAAO,EAAE,CAAA;gBAEZ,0CAA0C;gBAC1C,MAAM,EAAE;qBACL,aAAa,CAAC,yBAAY,CAAC;qBAC3B,MAAM,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE;oBAC/C,MAAM,EAAE,iCAAoB,CAAC,QAAQ;oBACrC,OAAO,EAAE,IAAI;iBACP,CAAC,CAAA;gBAEX,2CAA2C;gBAC3C,MAAM,eAAe,GAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,0BAAe,EAAE,EAAE;oBAC5E,MAAM;oBACN,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;oBAC5B,SAAS;oBACT,IAAI,EAAE,4BAAoB,CAAC,aAAa,EAAE;oBAC1C,GAAG,EAAE,CAAC;oBACN,eAAe;oBACf,aAAa,EAAE,eAAe,CAAC,YAAY;oBAC3C,IAAI,EAAE,0BAAc,CAAC,OAAO;oBAC5B,MAAM,EAAE,4BAAgB,CAAC,WAAW;oBACpC,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;gBAEF,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;aAC1C;YAED,4BAA4B;YAC5B,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YAEjE,OAAO,IAAI,CAAA;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA;AAED,SAAS,wBAAwB,CAC/B,MAAc,EACd,IAAU,EACV,WAAwB,EACxB,UAAkB,EAClB,MAA2B,EAC3B,WAAwB;IAExB,IAAI,cAAc,GAAW,MAAM,CAAC,UAAU,CAAA;IAC9C,IAAI,mBAAmB,GAAW,MAAM,CAAC,eAAe,CAAA;IACxD,IAAI,cAAc,GAAW,CAAC,CAAA;IAC9B,IAAI,mBAAmB,GAAW,CAAC,CAAA;IAEnC,IAAI,gBAAgB,GAA+B,EAAE,CAAA;IACrD,IAAI,GAAG,GAAG,CAAC,CAAA;IAEX,OAAO,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE;QACzC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAE5B,IAAI,CAAC,GAAG;YAAE,MAAK;QAEf,IAAI,UAAU,GAAW,CAAC,CAAA;QAC1B,IAAI,eAAe,GAAW,CAAC,CAAA;QAE/B,IAAI,GAAG,CAAC,SAAS,GAAG,cAAc,EAAE;YAClC,cAAc,IAAI,cAAc,CAAA;YAChC,mBAAmB,IAAI,mBAAmB,CAAA;YAC1C,UAAU,GAAG,cAAc,CAAA;YAC3B,eAAe,GAAG,mBAAmB,CAAA;SACtC;aAAM;YACL,cAAc,IAAI,GAAG,CAAC,SAAS,CAAA;YAC/B,mBAAmB,IAAI,GAAG,CAAC,cAAc,CAAA;YACzC,cAAc,IAAI,GAAG,CAAC,SAAS,CAAA;YAC/B,mBAAmB,IAAI,GAAG,CAAC,cAAc,CAAA;YACzC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAA;YAC1B,eAAe,GAAG,GAAG,CAAC,cAAc,CAAA;SACrC;QAED,IAAI,eAAe,GAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,0BAAe,EAAE,EAAE;YAC1E,eAAe,EAAE;gBACf,MAAM;gBACN,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;gBAC5B,IAAI,EAAE,6BAAgB,CAAC,cAAc,EAAE;gBACvC,WAAW;gBACX,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE;gBACzB,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE;gBAC9B,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,UAAU;gBACV,eAAe;gBACf,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,mCAAsB,CAAC,aAAa;gBAC5C,IAAI,EAAE,wBAAW,CAAC,gBAAgB;gBAClC,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,YAAY,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,cAAc,EAAE;aACzC;SACF,CAAC,CAAA;QAEF,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEtC,GAAG,EAAE,CAAA;KACN;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,iBAAmC,EAAE,WAAmB,EAAE,EAAiB;IACnH,IAAI,gBAAgB,GAAG,IAAI,CAAC,SAAS,CACnC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAsB,EAAE,EAAE;QAC/C,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;YAC7B,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,YAAY,EAAE,MAAM,CAAC,WAAW;YAChC,YAAY,EAAE,MAAM,CAAC,WAAW;SACjC,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IAED,wDAAwD;IACxD,IAAI,gBAAgB,GAAsB,MAAM,EAAE,CAAC,KAAK,CACtD;;;;;;;;;GASD,EACC,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAChC,CAAA;IAED,sEAAsE;IACtE,IAAI,gBAAgB,CAAC,MAAM,EAAE;QAC3B,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;QACzG,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAA;KACxG;AACH,CAAC","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderInventoryPatch,\n OrderNoGenerator,\n OrderProduct,\n ReleaseGood\n} from '@things-factory/sales-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\nimport { getInventoriesByStrategy, Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generatePickingWorksheetDetailsResolver = {\n async generatePickingWorksheetDetails(\n _: any,\n { bizplaceId, selectedItems, worksheetNo, locationSortingRules },\n context: any\n ): Promise<Boolean> {\n const { tx, user, domain } = context.state\n\n // 1. find related worksheet\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, status: WORKSHEET_STATUS.DEACTIVATED, domain },\n relations: ['releaseGood']\n })\n\n if (!worksheet) throw new Error('picking worksheet not found')\n const worksheetId = worksheet.id\n\n // 2. search for sorting rules\n const inventoryAssignmentSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, name: 'rule-for-inventory-assignment' }\n })\n\n if (!locationSortingRules && inventoryAssignmentSetting) {\n locationSortingRules = []\n let locationSetting = JSON.parse(inventoryAssignmentSetting.value)\n for (const key in locationSetting) {\n locationSortingRules.push({ name: key, desc: locationSetting[key] == 'ASC' ? false : true })\n }\n }\n\n try {\n // 3. get all related inventories by strategy\n let inventories: any[] = await getInventoriesByStrategy(\n domain.id,\n bizplaceId,\n worksheetId,\n selectedItems,\n locationSortingRules,\n tx\n )\n\n // 4. get worksheet details\n let worksheetDetails: WorksheetDetail[] = selectedItems.reduce(\n (accWSD: WorksheetDetail[], oi: OrderInventoryPatch) => {\n const relatedInventories = inventories.filter(\n inv =>\n inv.productId == oi.productId &&\n inv.batchId == oi.batchId &&\n inv.packingType == oi.packingType &&\n inv.packingSize == oi.packingSize &&\n inv.uom == oi.uom &&\n inv.remainQty\n )\n\n if (\n relatedInventories.length &&\n oi.releaseQty <= inventories.reduce((totalQty: number, inv) => totalQty + inv.remainQty, 0)\n ) {\n let composedWSD: WorksheetDetail[] = _composeWorksheetDetails(\n domain,\n user,\n worksheet.releaseGood,\n bizplaceId,\n oi,\n relatedInventories\n )\n\n accWSD.push(...composedWSD)\n }\n\n return accWSD\n },\n []\n )\n\n let targetInventories: OrderInventory = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n // 5. remove existing worksheet details and its target inventory if there's any\n await _removeOldWorksheetDetails(targetInventories, worksheet.id, tx)\n\n targetInventories = await tx.getRepository(OrderInventory).save(targetInventories)\n\n let newWorksheetDetails: WorksheetDetail[] = []\n\n for (let i = 0, l = targetInventories.length; i < l; i++) {\n const targetInventory: OrderInventory = targetInventories[i]\n\n // 6. update inventory lockedQty and lockedUomValue\n await tx\n .createQueryBuilder()\n .update(Inventory)\n .set({\n lockedQty: () => `COALESCE(\"locked_qty\", 0) + ${targetInventory.releaseQty}`,\n lockedUomValue: () => `COALESCE(\"locked_uom_value\", 0) + ${targetInventory.releaseUomValue}`,\n updater: user\n } as any)\n .where('id = :id', { id: targetInventory.inventory.id })\n .execute()\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: targetInventory.orderProduct.id }, {\n status: ORDER_PRODUCT_STATUS.ASSIGNED,\n updater: user\n } as any)\n\n // 7. collect new worksheet details records\n const worksheetDetail: WorksheetDetail = Object.assign(new WorksheetDetail(), {\n domain,\n bizplace: { id: bizplaceId },\n worksheet,\n name: WorksheetNoGenerator.pickingDetail(),\n seq: 0,\n targetInventory,\n targetProduct: targetInventory.orderProduct,\n type: WORKSHEET_TYPE.PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user,\n updater: user\n })\n\n newWorksheetDetails.push(worksheetDetail)\n }\n\n // 8. save worksheet details\n await tx.getRepository(WorksheetDetail).save(newWorksheetDetails)\n\n return true\n } catch (error) {\n throw error\n }\n }\n}\n\nfunction _composeWorksheetDetails(\n domain: Domain,\n user: User,\n releaseGood: ReleaseGood,\n bizplaceId: string,\n record: OrderInventoryPatch,\n inventories: Inventory[]\n): WorksheetDetail[] {\n let leftReleaseQty: number = record.releaseQty\n let leftReleaseUomValue: number = record.releaseUomValue\n let compReleaseQty: number = 0\n let compReleaseUomValue: number = 0\n\n let worksheetDetails: Partial<WorksheetDetail[]> = []\n let idx = 0\n\n while (compReleaseQty < record.releaseQty) {\n const inv = inventories[idx]\n\n if (!inv) break\n\n let releaseQty: number = 0\n let releaseUomValue: number = 0\n\n if (inv.remainQty > leftReleaseQty) {\n compReleaseQty += leftReleaseQty\n compReleaseUomValue += leftReleaseUomValue\n releaseQty = leftReleaseQty\n releaseUomValue = leftReleaseUomValue\n } else {\n compReleaseQty += inv.remainQty\n compReleaseUomValue += inv.remainUomValue\n leftReleaseQty -= inv.remainQty\n leftReleaseUomValue -= inv.remainUomValue\n releaseQty = inv.remainQty\n releaseUomValue = inv.remainUomValue\n }\n\n let worksheetDetail: WorksheetDetail = Object.assign(new WorksheetDetail(), {\n targetInventory: {\n domain,\n bizplace: { id: bizplaceId },\n name: OrderNoGenerator.orderInventory(),\n releaseGood,\n inventory: { id: inv.id },\n product: { id: inv.productId },\n batchId: inv.batchId,\n batchIdRef: inv.batchIdRef,\n packingType: inv.packingType,\n packingSize: inv.packingSize,\n releaseQty,\n releaseUomValue,\n creator: user,\n updater: user,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n uom: record.uom,\n orderProduct: { id: inv.orderProductId }\n }\n })\n\n worksheetDetails.push(worksheetDetail)\n\n idx++\n }\n\n return worksheetDetails\n}\n\nasync function _removeOldWorksheetDetails(targetInventories: OrderInventory[], worksheetId: string, tx: EntityManager) {\n let orderProductJson = JSON.stringify(\n targetInventories.map((target: OrderInventory) => {\n return {\n product_id: target.product.id,\n batch_id: target.batchId,\n packing_type: target.packingType,\n packing_size: target.packingSize\n }\n })\n )\n\n // get worksheetDetail IDs and their targetInventory IDs\n let existingOIandWSD: WorksheetDetail[] = await tx.query(\n `\n SELECT wsd.id AS \"worksheetDetailId\", oi.id AS \"orderInventoryId\"\n FROM order_inventories oi \n INNER JOIN JSON_POPULATE_RECORDSET(NULL::order_products, $1) js ON oi.batch_id = js.batch_id \n AND oi.product_id = js.product_id \n AND oi.packing_type = js.packing_type\n AND oi.packing_size = js.packing_size\n LEFT JOIN worksheet_details wsd ON oi.id = wsd.target_inventory_id\n WHERE oi.release_good_id = $2\n `,\n [orderProductJson, worksheetId]\n )\n\n // if found the records then delete, so that we can create new records\n if (existingOIandWSD.length) {\n await tx.getRepository(WorksheetDetail).delete(existingOIandWSD.map((wsd: any) => wsd.worksheetDetailId))\n await tx.getRepository(OrderInventory).delete(existingOIandWSD.map((wsd: any) => wsd.orderInventoryId))\n }\n}\n"]}
@@ -46,7 +46,7 @@ async function generateReleaseGoodWorksheetDetails(tx, domain, user, worksheetNo
46
46
  .getRepository(sales_base_1.OrderProduct)
47
47
  .findOne({ where: { id: (_a = wsd.targetProduct) === null || _a === void 0 ? void 0 : _a.id } });
48
48
  targetInventory = await tx.getRepository(sales_base_1.OrderInventory).save(Object.assign(Object.assign({}, targetInventory), { domain, bizplace: worksheet.bizplace, name: sales_base_1.OrderNoGenerator.orderInventory(), releaseGood: worksheet.releaseGood, inventory,
49
- batchId, batchIdRef: inventory.batchIdRef, status: sales_base_1.ORDER_INVENTORY_STATUS.READY_TO_PICK, product: await tx.getRepository(product_base_1.Product).findOne(productId), packingType,
49
+ batchId, batchIdRef: inventory.batchIdRef, status: sales_base_1.ORDER_INVENTORY_STATUS.READY_TO_PICK, product: await tx.getRepository(product_base_1.Product).findOneBy({ id: productId }), packingType,
50
50
  packingSize, orderProduct: targetProduct, creator: user, updater: user }));
51
51
  const currentLockedQty = inventory.lockedQty;
52
52
  const currentLockedUomValue = inventory.lockedUomValue;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-release-good-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generateReleaseGoodWorksheetDetailsResolver = {\n async generateReleaseGoodWorksheetDetails(\n _: any,\n { worksheetNo, batchId, productId, packingType, packingSize, worksheetDetails },\n context: any\n ): Promise<void> {\n const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state\n return await generateReleaseGoodWorksheetDetails(\n tx,\n domain,\n user,\n worksheetNo,\n batchId,\n productId,\n packingType,\n packingSize,\n worksheetDetails\n )\n }\n}\n\nexport async function generateReleaseGoodWorksheetDetails(\n tx: EntityManager,\n domain: Domain,\n user: User,\n worksheetNo: string,\n batchId: string,\n productId: string,\n packingType: string,\n packingSize: number,\n worksheetDetails: Partial<WorksheetDetail>[]\n): Promise<void> {\n // 1. Remove prev worksheet details if it's exists\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, domain },\n relations: [\n 'bizplace',\n 'releaseGood',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n const prevWSDs: WorksheetDetail[] = worksheet.worksheetDetails.filter((wsd: WorksheetDetail) => {\n const targetInv: OrderInventory = wsd.targetInventory\n if (targetInv.batchId === batchId && targetInv.product.id === productId && targetInv.packingType === packingType)\n return wsd.id\n })\n\n // TODO: Delete order inventories\n if (prevWSDs?.length) {\n const wsdIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.id)\n const prevOrderInvIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.targetInventory.id)\n await tx.getRepository(WorksheetDetail).delete(wsdIds)\n await tx.getRepository(OrderInventory).delete(prevOrderInvIds)\n }\n\n await Promise.all(\n worksheetDetails.map(async (wsd: WorksheetDetail) => {\n // 2. Create order inventory\n let targetInventory: OrderInventory = wsd.targetInventory\n const inventory: Inventory = await tx.getRepository(Inventory).findOne(targetInventory.inventory.id)\n\n let targetProduct: OrderProduct = await tx\n .getRepository(OrderProduct)\n .findOne({ where: { id: wsd.targetProduct?.id } })\n\n targetInventory = await tx.getRepository(OrderInventory).save({\n ...targetInventory,\n domain,\n bizplace: worksheet.bizplace,\n name: OrderNoGenerator.orderInventory(),\n releaseGood: worksheet.releaseGood,\n inventory,\n batchId,\n batchIdRef: inventory.batchIdRef,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n product: await tx.getRepository(Product).findOne(productId),\n packingType,\n packingSize,\n orderProduct: targetProduct,\n creator: user,\n updater: user\n })\n\n const currentLockedQty: any = inventory.lockedQty\n const currentLockedUomValue: any = inventory.lockedUomValue\n\n await tx.getRepository(Inventory).save({\n ...targetInventory.inventory,\n lockedQty: Boolean(currentLockedQty)\n ? targetInventory.releaseQty + currentLockedQty\n : targetInventory.releaseQty,\n lockedUomValue: Boolean(currentLockedUomValue)\n ? targetInventory.releaseUomValue + currentLockedUomValue\n : targetInventory.releaseUomValue,\n updater: user\n })\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: targetProduct?.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user })\n\n // 3. Create worksheet details\n await tx.getRepository(WorksheetDetail).save({\n ...wsd,\n domain,\n bizplace: worksheet.bizplace,\n worksheet,\n name: WorksheetNoGenerator.pickingDetail(),\n targetProduct,\n targetInventory,\n type: WORKSHEET_TYPE.PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user,\n updater: user\n })\n })\n )\n}\n"]}
1
+ {"version":3,"file":"generate-release-good-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const generateReleaseGoodWorksheetDetailsResolver = {\n async generateReleaseGoodWorksheetDetails(\n _: any,\n { worksheetNo, batchId, productId, packingType, packingSize, worksheetDetails },\n context: any\n ): Promise<void> {\n const { tx, domain, user } = context.state\n return await generateReleaseGoodWorksheetDetails(\n tx,\n domain,\n user,\n worksheetNo,\n batchId,\n productId,\n packingType,\n packingSize,\n worksheetDetails\n )\n }\n}\n\nexport async function generateReleaseGoodWorksheetDetails(\n tx: EntityManager,\n domain: Domain,\n user: User,\n worksheetNo: string,\n batchId: string,\n productId: string,\n packingType: string,\n packingSize: number,\n worksheetDetails: Partial<WorksheetDetail>[]\n): Promise<void> {\n // 1. Remove prev worksheet details if it's exists\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, domain },\n relations: [\n 'bizplace',\n 'releaseGood',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.product'\n ]\n })\n\n const prevWSDs: WorksheetDetail[] = worksheet.worksheetDetails.filter((wsd: WorksheetDetail) => {\n const targetInv: OrderInventory = wsd.targetInventory\n if (targetInv.batchId === batchId && targetInv.product.id === productId && targetInv.packingType === packingType)\n return wsd.id\n })\n\n // TODO: Delete order inventories\n if (prevWSDs?.length) {\n const wsdIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.id)\n const prevOrderInvIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.targetInventory.id)\n await tx.getRepository(WorksheetDetail).delete(wsdIds)\n await tx.getRepository(OrderInventory).delete(prevOrderInvIds)\n }\n\n await Promise.all(\n worksheetDetails.map(async (wsd: WorksheetDetail) => {\n // 2. Create order inventory\n let targetInventory: OrderInventory = wsd.targetInventory\n const inventory: Inventory = await tx.getRepository(Inventory).findOne(targetInventory.inventory.id)\n\n let targetProduct: OrderProduct = await tx\n .getRepository(OrderProduct)\n .findOne({ where: { id: wsd.targetProduct?.id } })\n\n targetInventory = await tx.getRepository(OrderInventory).save({\n ...targetInventory,\n domain,\n bizplace: worksheet.bizplace,\n name: OrderNoGenerator.orderInventory(),\n releaseGood: worksheet.releaseGood,\n inventory,\n batchId,\n batchIdRef: inventory.batchIdRef,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n product: await tx.getRepository(Product).findOneBy({ id: productId }),\n packingType,\n packingSize,\n orderProduct: targetProduct,\n creator: user,\n updater: user\n })\n\n const currentLockedQty: any = inventory.lockedQty\n const currentLockedUomValue: any = inventory.lockedUomValue\n\n await tx.getRepository(Inventory).save({\n ...targetInventory.inventory,\n lockedQty: Boolean(currentLockedQty)\n ? targetInventory.releaseQty + currentLockedQty\n : targetInventory.releaseQty,\n lockedUomValue: Boolean(currentLockedUomValue)\n ? targetInventory.releaseUomValue + currentLockedUomValue\n : targetInventory.releaseUomValue,\n updater: user\n })\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: targetProduct?.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user } as any)\n\n // 3. Create worksheet details\n await tx.getRepository(WorksheetDetail).save({\n ...wsd,\n domain,\n bizplace: worksheet.bizplace,\n worksheet,\n name: WorksheetNoGenerator.pickingDetail(),\n targetProduct,\n targetInventory,\n type: WORKSHEET_TYPE.PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user,\n updater: user\n })\n })\n )\n}\n"]}
@@ -10,10 +10,11 @@ const generate_carton_id_1 = require("./generate-carton-id");
10
10
  const generate_pallet_id_1 = require("./generate-pallet-id");
11
11
  const generate_picking_worksheet_details_1 = require("./generate-picking-worksheet-details");
12
12
  const generate_release_good_worksheet_details_1 = require("./generate-release-good-worksheet-details");
13
+ const regenerate_release_good_worksheet_details_1 = require("./regenerate-release-good-worksheet-details");
13
14
  const update_worksheet_detail_1 = require("./update-worksheet-detail");
14
15
  const worksheet_detail_1 = require("./worksheet-detail");
15
16
  const worksheet_details_1 = require("./worksheet-details");
16
17
  const worksheet_details_by_product_group_1 = require("./worksheet-details-by-product-group");
17
18
  exports.Query = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, worksheet_details_1.worksheetDetailsResolver), worksheet_detail_1.worksheetDetailResolver), worksheet_details_by_product_group_1.worksheetDetailsByProductGroupResolver), check_progressing_pallet_1.checkProgressingPalletResolver), generate_pallet_id_1.generatePalletIdResolver), generate_carton_id_1.generateCartonIdResolver);
18
- exports.Mutation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, update_worksheet_detail_1.updateWorksheetDetail), create_worksheet_detail_1.createWorksheetDetail), delete_worksheet_detail_1.deleteWorksheetDetail), generate_batch_picking_worksheet_details_1.generateBatchPickingWorksheetDetailsResolver), generate_batch_picking_worksheet_details_by_bulk_1.generateBatchPickingWorksheetDetailsByBulkResolver), generate_picking_worksheet_details_1.generatePickingWorksheetDetailsResolver), generate_release_good_worksheet_details_1.generateReleaseGoodWorksheetDetailsResolver);
19
+ exports.Mutation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, update_worksheet_detail_1.updateWorksheetDetail), create_worksheet_detail_1.createWorksheetDetail), delete_worksheet_detail_1.deleteWorksheetDetail), generate_batch_picking_worksheet_details_1.generateBatchPickingWorksheetDetailsResolver), generate_batch_picking_worksheet_details_by_bulk_1.generateBatchPickingWorksheetDetailsByBulkResolver), generate_picking_worksheet_details_1.generatePickingWorksheetDetailsResolver), generate_release_good_worksheet_details_1.generateReleaseGoodWorksheetDetailsResolver), regenerate_release_good_worksheet_details_1.regenerateReleaseGoodWorksheetDetailsResolver);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/index.ts"],"names":[],"mappings":";;;AAAA,yEAA2E;AAC3E,uEAAiE;AACjE,uEAAiE;AACjE,yGAAyG;AACzG,yHAAuH;AACvH,6DAA+D;AAC/D,6DAA+D;AAC/D,6FAA8F;AAC9F,uGAAuG;AACvG,uEAAiE;AACjE,yDAA4D;AAC5D,2DAA8D;AAC9D,6FAA6F;AAEhF,QAAA,KAAK,2FACb,4CAAwB,GACxB,0CAAuB,GACvB,2EAAsC,GACtC,yDAA8B,GAC9B,6CAAwB,GACxB,6CAAwB,EAC5B;AAEY,QAAA,QAAQ,yGAChB,+CAAqB,GACrB,+CAAqB,GACrB,+CAAqB,GACrB,uFAA4C,GAC5C,qGAAkD,GAClD,4EAAuC,GACvC,qFAA2C,EAC/C","sourcesContent":["import { checkProgressingPalletResolver } from './check-progressing-pallet'\nimport { createWorksheetDetail } from './create-worksheet-detail'\nimport { deleteWorksheetDetail } from './delete-worksheet-detail'\nimport { generateBatchPickingWorksheetDetailsResolver } from './generate-batch-picking-worksheet-details'\nimport { generateBatchPickingWorksheetDetailsByBulkResolver } from './generate-batch-picking-worksheet-details-by-bulk'\nimport { generateCartonIdResolver } from './generate-carton-id'\nimport { generatePalletIdResolver } from './generate-pallet-id'\nimport { generatePickingWorksheetDetailsResolver } from './generate-picking-worksheet-details'\nimport { generateReleaseGoodWorksheetDetailsResolver } from './generate-release-good-worksheet-details'\nimport { updateWorksheetDetail } from './update-worksheet-detail'\nimport { worksheetDetailResolver } from './worksheet-detail'\nimport { worksheetDetailsResolver } from './worksheet-details'\nimport { worksheetDetailsByProductGroupResolver } from './worksheet-details-by-product-group'\n\nexport const Query = {\n ...worksheetDetailsResolver,\n ...worksheetDetailResolver,\n ...worksheetDetailsByProductGroupResolver,\n ...checkProgressingPalletResolver,\n ...generatePalletIdResolver,\n ...generateCartonIdResolver\n}\n\nexport const Mutation = {\n ...updateWorksheetDetail,\n ...createWorksheetDetail,\n ...deleteWorksheetDetail,\n ...generateBatchPickingWorksheetDetailsResolver,\n ...generateBatchPickingWorksheetDetailsByBulkResolver,\n ...generatePickingWorksheetDetailsResolver,\n ...generateReleaseGoodWorksheetDetailsResolver\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/index.ts"],"names":[],"mappings":";;;AAAA,yEAA2E;AAC3E,uEAAiE;AACjE,uEAAiE;AACjE,yGAAyG;AACzG,yHAAuH;AACvH,6DAA+D;AAC/D,6DAA+D;AAC/D,6FAA8F;AAC9F,uGAAuG;AACvG,2GAA2G;AAC3G,uEAAiE;AACjE,yDAA4D;AAC5D,2DAA8D;AAC9D,6FAA6F;AAEhF,QAAA,KAAK,2FACb,4CAAwB,GACxB,0CAAuB,GACvB,2EAAsC,GACtC,yDAA8B,GAC9B,6CAAwB,GACxB,6CAAwB,EAC5B;AAEY,QAAA,QAAQ,uHAChB,+CAAqB,GACrB,+CAAqB,GACrB,+CAAqB,GACrB,uFAA4C,GAC5C,qGAAkD,GAClD,4EAAuC,GACvC,qFAA2C,GAC3C,yFAA6C,EACjD","sourcesContent":["import { checkProgressingPalletResolver } from './check-progressing-pallet'\nimport { createWorksheetDetail } from './create-worksheet-detail'\nimport { deleteWorksheetDetail } from './delete-worksheet-detail'\nimport { generateBatchPickingWorksheetDetailsResolver } from './generate-batch-picking-worksheet-details'\nimport { generateBatchPickingWorksheetDetailsByBulkResolver } from './generate-batch-picking-worksheet-details-by-bulk'\nimport { generateCartonIdResolver } from './generate-carton-id'\nimport { generatePalletIdResolver } from './generate-pallet-id'\nimport { generatePickingWorksheetDetailsResolver } from './generate-picking-worksheet-details'\nimport { generateReleaseGoodWorksheetDetailsResolver } from './generate-release-good-worksheet-details'\nimport { regenerateReleaseGoodWorksheetDetailsResolver } from './regenerate-release-good-worksheet-details'\nimport { updateWorksheetDetail } from './update-worksheet-detail'\nimport { worksheetDetailResolver } from './worksheet-detail'\nimport { worksheetDetailsResolver } from './worksheet-details'\nimport { worksheetDetailsByProductGroupResolver } from './worksheet-details-by-product-group'\n\nexport const Query = {\n ...worksheetDetailsResolver,\n ...worksheetDetailResolver,\n ...worksheetDetailsByProductGroupResolver,\n ...checkProgressingPalletResolver,\n ...generatePalletIdResolver,\n ...generateCartonIdResolver\n}\n\nexport const Mutation = {\n ...updateWorksheetDetail,\n ...createWorksheetDetail,\n ...deleteWorksheetDetail,\n ...generateBatchPickingWorksheetDetailsResolver,\n ...generateBatchPickingWorksheetDetailsByBulkResolver,\n ...generatePickingWorksheetDetailsResolver,\n ...generateReleaseGoodWorksheetDetailsResolver,\n ...regenerateReleaseGoodWorksheetDetailsResolver\n}\n"]}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.regenerateReleaseGoodWorksheetDetails = exports.regenerateReleaseGoodWorksheetDetailsResolver = void 0;
4
+ const product_base_1 = require("@things-factory/product-base");
5
+ const sales_base_1 = require("@things-factory/sales-base");
6
+ const warehouse_base_1 = require("@things-factory/warehouse-base");
7
+ const constants_1 = require("../../../constants");
8
+ const entities_1 = require("../../../entities");
9
+ const utils_1 = require("../../../utils");
10
+ exports.regenerateReleaseGoodWorksheetDetailsResolver = {
11
+ async regenerateReleaseGoodWorksheetDetails(_, { worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails }, context) {
12
+ const { tx, domain, user } = context.state;
13
+ return await regenerateReleaseGoodWorksheetDetails(tx, domain, user, worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails);
14
+ }
15
+ };
16
+ async function regenerateReleaseGoodWorksheetDetails(tx, domain, user, worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails) {
17
+ // 1. Remove prev worksheet details if it's exists
18
+ const worksheet = await tx.getRepository(entities_1.Worksheet).findOne({
19
+ where: { name: worksheetNo, domain },
20
+ relations: [
21
+ 'bizplace',
22
+ 'releaseGood',
23
+ 'worksheetDetails',
24
+ 'worksheetDetails.targetInventory',
25
+ 'worksheetDetails.targetInventory.inventory',
26
+ 'worksheetDetails.targetInventory.product',
27
+ 'worksheetDetails.targetInventory.releaseGood',
28
+ 'worksheetDetails.targetInventory.orderProduct',
29
+ 'worksheetDetails.targetInventory.bizplace'
30
+ ]
31
+ });
32
+ const prevWSDs = worksheet.worksheetDetails.filter((wsd) => {
33
+ const targetInv = wsd.targetInventory;
34
+ if (targetInv.orderProductId === orderProductId)
35
+ return wsd.id;
36
+ });
37
+ // TODO: Update prev inventory locked qty and delete order inventories
38
+ if (prevWSDs === null || prevWSDs === void 0 ? void 0 : prevWSDs.length) {
39
+ const wsdIds = prevWSDs.map((wsd) => wsd.id);
40
+ const prevOrderInvIds = prevWSDs.map((wsd) => wsd.targetInventory.id);
41
+ const prevOrderInventories = prevWSDs.map((wsd) => wsd.targetInventory);
42
+ await Promise.all(prevOrderInventories.map(async (prevOI) => {
43
+ if (prevOI === null || prevOI === void 0 ? void 0 : prevOI.inventory) {
44
+ await tx.getRepository(warehouse_base_1.Inventory).update({ id: prevOI.inventory.id }, {
45
+ lockedQty: prevOI.inventory.lockedQty - prevOI.releaseQty,
46
+ lockedUomValue: prevOI.inventory.lockedUomValue - prevOI.releaseUomValue
47
+ });
48
+ }
49
+ }));
50
+ await tx.getRepository(entities_1.WorksheetDetail).delete(wsdIds);
51
+ await tx.getRepository(sales_base_1.OrderInventory).delete(prevOrderInvIds);
52
+ }
53
+ await Promise.all(worksheetDetails.map(async (wsd) => {
54
+ // 2. Create order inventory
55
+ let targetInventory = wsd.targetInventory;
56
+ const inventory = await tx.getRepository(warehouse_base_1.Inventory).findOne(targetInventory.inventory.id);
57
+ let targetProduct = await tx
58
+ .getRepository(sales_base_1.OrderProduct)
59
+ .findOne({ where: { id: wsd.targetProduct.id }, relations: ['releaseGood'] });
60
+ targetInventory = await tx.getRepository(sales_base_1.OrderInventory).save(Object.assign(Object.assign({}, targetInventory), { domain, bizplace: worksheet.bizplace, name: sales_base_1.OrderNoGenerator.orderInventory(), releaseGood: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING ? targetProduct.releaseGood : worksheet.releaseGood, inventory, batchId: inventory.batchId, batchIdRef: inventory.batchIdRef, status: sales_base_1.ORDER_INVENTORY_STATUS.READY_TO_PICK, product: await tx.getRepository(product_base_1.Product).findOneBy({ id: productId }), packingType,
61
+ packingSize, orderProduct: targetProduct, refWorksheetId: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING ? worksheet.id : null, creator: user, updater: user }));
62
+ const currentLockedQty = inventory.lockedQty;
63
+ const currentLockedUomValue = inventory.lockedUomValue;
64
+ await tx.getRepository(warehouse_base_1.Inventory).save(Object.assign(Object.assign({}, targetInventory.inventory), { lockedQty: Boolean(currentLockedQty)
65
+ ? targetInventory.releaseQty + currentLockedQty
66
+ : targetInventory.releaseQty, lockedUomValue: Boolean(currentLockedUomValue)
67
+ ? targetInventory.releaseUomValue + currentLockedUomValue
68
+ : targetInventory.releaseUomValue, updater: user }));
69
+ // update order product status to ASSIGNED
70
+ await tx
71
+ .getRepository(sales_base_1.OrderProduct)
72
+ .update({ id: targetProduct.id }, { status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED, updater: user });
73
+ // 3. Create worksheet details
74
+ await tx.getRepository(entities_1.WorksheetDetail).save(Object.assign(Object.assign({}, wsd), { domain, bizplace: worksheet.bizplace, worksheet, name: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING
75
+ ? utils_1.WorksheetNoGenerator.batchPickingDetail()
76
+ : utils_1.WorksheetNoGenerator.pickingDetail(), targetProduct,
77
+ targetInventory, type: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING ? constants_1.WORKSHEET_TYPE.BATCH_PICKING : constants_1.WORKSHEET_TYPE.PICKING, status: constants_1.WORKSHEET_STATUS.DEACTIVATED, creator: user, updater: user }));
78
+ }));
79
+ }
80
+ exports.regenerateReleaseGoodWorksheetDetails = regenerateReleaseGoodWorksheetDetails;
81
+ //# sourceMappingURL=regenerate-release-good-worksheet-details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regenerate-release-good-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts"],"names":[],"mappings":";;;AAGA,+DAAsD;AACtD,2DAMmC;AAEnC,mEAA0D;AAE1D,kDAAqE;AACrE,gDAA8D;AAC9D,0CAAqD;AAExC,QAAA,6CAA6C,GAAG;IAC3D,KAAK,CAAC,qCAAqC,CACzC,CAAM,EACN,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,EAC/F,OAAY;QAEZ,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,OAAO,MAAM,qCAAqC,CAChD,EAAE,EACF,MAAM,EACN,IAAI,EACJ,WAAW,EACX,OAAO,EACP,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,gBAAgB,CACjB,CAAA;IACH,CAAC;CACF,CAAA;AAEM,KAAK,UAAU,qCAAqC,CACzD,EAAiB,EACjB,MAAc,EACd,IAAU,EACV,WAAmB,EACnB,OAAe,EACf,SAAiB,EACjB,WAAmB,EACnB,WAAmB,EACnB,cAAsB,EACtB,gBAA4C;IAE5C,kDAAkD;IAClD,MAAM,SAAS,GAAc,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAS,CAAC,CAAC,OAAO,CAAC;QACrE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;QACpC,SAAS,EAAE;YACT,UAAU;YACV,aAAa;YACb,kBAAkB;YAClB,kCAAkC;YAClC,4CAA4C;YAC5C,0CAA0C;YAC1C,8CAA8C;YAC9C,+CAA+C;YAC/C,2CAA2C;SAC5C;KACF,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAsB,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAoB,EAAE,EAAE;QAC7F,MAAM,SAAS,GAAmB,GAAG,CAAC,eAAe,CAAA;QACrD,IAAI,SAAS,CAAC,cAAc,KAAK,cAAc;YAAE,OAAO,GAAG,CAAC,EAAE,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,sEAAsE;IACtE,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE;QACpB,MAAM,MAAM,GAAa,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACvE,MAAM,eAAe,GAAa,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QAChG,MAAM,oBAAoB,GAAqB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAC1G,MAAM,OAAO,CAAC,GAAG,CACf,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACtC,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE;gBACrB,MAAO,EAAE,CAAC,aAAa,CAAC,0BAAS,CAA2B,CAAC,MAAM,CACjE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAC3B;oBACE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU;oBACzD,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC,eAAe;iBACzE,CACF,CAAA;aACF;QACH,CAAC,CAAC,CACH,CAAA;QAED,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACtD,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;KAC/D;IAED,MAAM,OAAO,CAAC,GAAG,CACf,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAoB,EAAE,EAAE;QAClD,4BAA4B;QAC5B,IAAI,eAAe,GAAmB,GAAG,CAAC,eAAe,CAAA;QACzD,MAAM,SAAS,GAAc,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAEpG,IAAI,aAAa,GAAiB,MAAM,EAAE;aACvC,aAAa,CAAC,yBAAY,CAAC;aAC3B,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;QAE/E,eAAe,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,iCACxD,eAAe,KAClB,MAAM,EACN,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAC5B,IAAI,EAAE,6BAAgB,CAAC,cAAc,EAAE,EACvC,WAAW,EAAE,SAAS,CAAC,IAAI,IAAI,0BAAc,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAC/G,SAAS,EACT,OAAO,EAAE,SAAS,CAAC,OAAO,EAC1B,UAAU,EAAE,SAAS,CAAC,UAAU,EAChC,MAAM,EAAE,mCAAsB,CAAC,aAAa,EAC5C,OAAO,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAO,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EACrE,WAAW;YACX,WAAW,EACX,YAAY,EAAE,aAAa,EAC3B,cAAc,EAAE,SAAS,CAAC,IAAI,IAAI,0BAAc,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EACpF,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;QAEF,MAAM,gBAAgB,GAAQ,SAAS,CAAC,SAAS,CAAA;QACjD,MAAM,qBAAqB,GAAQ,SAAS,CAAC,cAAc,CAAA;QAE3D,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,IAAI,iCACjC,eAAe,CAAC,SAAS,KAC5B,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC;gBAClC,CAAC,CAAC,eAAe,CAAC,UAAU,GAAG,gBAAgB;gBAC/C,CAAC,CAAC,eAAe,CAAC,UAAU,EAC9B,cAAc,EAAE,OAAO,CAAC,qBAAqB,CAAC;gBAC5C,CAAC,CAAC,eAAe,CAAC,eAAe,GAAG,qBAAqB;gBACzD,CAAC,CAAC,eAAe,CAAC,eAAe,EACnC,OAAO,EAAE,IAAI,IACb,CAAA;QAEF,0CAA0C;QAC1C,MAAM,EAAE;aACL,aAAa,CAAC,yBAAY,CAAC;aAC3B,MAAM,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,iCAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAS,CAAC,CAAA;QAEpG,8BAA8B;QAC9B,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,iCACvC,GAAG,KACN,MAAM,EACN,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAC5B,SAAS,EACT,IAAI,EACF,SAAS,CAAC,IAAI,IAAI,0BAAc,CAAC,aAAa;gBAC5C,CAAC,CAAC,4BAAoB,CAAC,kBAAkB,EAAE;gBAC3C,CAAC,CAAC,4BAAoB,CAAC,aAAa,EAAE,EAC1C,aAAa;YACb,eAAe,EACf,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,0BAAc,CAAC,aAAa,CAAC,CAAC,CAAC,0BAAc,CAAC,aAAa,CAAC,CAAC,CAAC,0BAAc,CAAC,OAAO,EAC5G,MAAM,EAAE,4BAAgB,CAAC,WAAW,EACpC,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;IACJ,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AA3HD,sFA2HC","sourcesContent":["import { EntityManager, Repository } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const regenerateReleaseGoodWorksheetDetailsResolver = {\n async regenerateReleaseGoodWorksheetDetails(\n _: any,\n { worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails },\n context: any\n ): Promise<void> {\n const { tx, domain, user } = context.state\n return await regenerateReleaseGoodWorksheetDetails(\n tx,\n domain,\n user,\n worksheetNo,\n batchId,\n productId,\n packingType,\n packingSize,\n orderProductId,\n worksheetDetails\n )\n }\n}\n\nexport async function regenerateReleaseGoodWorksheetDetails(\n tx: EntityManager,\n domain: Domain,\n user: User,\n worksheetNo: string,\n batchId: string,\n productId: string,\n packingType: string,\n packingSize: number,\n orderProductId: string,\n worksheetDetails: Partial<WorksheetDetail>[]\n): Promise<void> {\n // 1. Remove prev worksheet details if it's exists\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, domain },\n relations: [\n 'bizplace',\n 'releaseGood',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product',\n 'worksheetDetails.targetInventory.releaseGood',\n 'worksheetDetails.targetInventory.orderProduct',\n 'worksheetDetails.targetInventory.bizplace'\n ]\n })\n\n const prevWSDs: WorksheetDetail[] = worksheet.worksheetDetails.filter((wsd: WorksheetDetail) => {\n const targetInv: OrderInventory = wsd.targetInventory\n if (targetInv.orderProductId === orderProductId) return wsd.id\n })\n\n // TODO: Update prev inventory locked qty and delete order inventories\n if (prevWSDs?.length) {\n const wsdIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.id)\n const prevOrderInvIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.targetInventory.id)\n const prevOrderInventories: OrderInventory[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.targetInventory)\n await Promise.all(\n prevOrderInventories.map(async prevOI => {\n if (prevOI?.inventory) {\n await (tx.getRepository(Inventory) as Repository<Inventory>).update(\n { id: prevOI.inventory.id },\n {\n lockedQty: prevOI.inventory.lockedQty - prevOI.releaseQty,\n lockedUomValue: prevOI.inventory.lockedUomValue - prevOI.releaseUomValue\n }\n )\n }\n })\n )\n\n await tx.getRepository(WorksheetDetail).delete(wsdIds)\n await tx.getRepository(OrderInventory).delete(prevOrderInvIds)\n }\n\n await Promise.all(\n worksheetDetails.map(async (wsd: WorksheetDetail) => {\n // 2. Create order inventory\n let targetInventory: OrderInventory = wsd.targetInventory\n const inventory: Inventory = await tx.getRepository(Inventory).findOne(targetInventory.inventory.id)\n\n let targetProduct: OrderProduct = await tx\n .getRepository(OrderProduct)\n .findOne({ where: { id: wsd.targetProduct.id }, relations: ['releaseGood'] })\n\n targetInventory = await tx.getRepository(OrderInventory).save({\n ...targetInventory,\n domain,\n bizplace: worksheet.bizplace,\n name: OrderNoGenerator.orderInventory(),\n releaseGood: worksheet.type == WORKSHEET_TYPE.BATCH_PICKING ? targetProduct.releaseGood : worksheet.releaseGood,\n inventory,\n batchId: inventory.batchId,\n batchIdRef: inventory.batchIdRef,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n product: await tx.getRepository(Product).findOneBy({ id: productId }),\n packingType,\n packingSize,\n orderProduct: targetProduct,\n refWorksheetId: worksheet.type == WORKSHEET_TYPE.BATCH_PICKING ? worksheet.id : null,\n creator: user,\n updater: user\n })\n\n const currentLockedQty: any = inventory.lockedQty\n const currentLockedUomValue: any = inventory.lockedUomValue\n\n await tx.getRepository(Inventory).save({\n ...targetInventory.inventory,\n lockedQty: Boolean(currentLockedQty)\n ? targetInventory.releaseQty + currentLockedQty\n : targetInventory.releaseQty,\n lockedUomValue: Boolean(currentLockedUomValue)\n ? targetInventory.releaseUomValue + currentLockedUomValue\n : targetInventory.releaseUomValue,\n updater: user\n })\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: targetProduct.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user } as any)\n\n // 3. Create worksheet details\n await tx.getRepository(WorksheetDetail).save({\n ...wsd,\n domain,\n bizplace: worksheet.bizplace,\n worksheet,\n name:\n worksheet.type == WORKSHEET_TYPE.BATCH_PICKING\n ? WorksheetNoGenerator.batchPickingDetail()\n : WorksheetNoGenerator.pickingDetail(),\n targetProduct,\n targetInventory,\n type: worksheet.type == WORKSHEET_TYPE.BATCH_PICKING ? WORKSHEET_TYPE.BATCH_PICKING : WORKSHEET_TYPE.PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user,\n updater: user\n })\n })\n )\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.updateWorksheetDetail = void 0;
4
- const biz_base_1 = require("@things-factory/biz-base");
5
4
  const typeorm_1 = require("typeorm");
5
+ const biz_base_1 = require("@things-factory/biz-base");
6
6
  const sales_base_1 = require("@things-factory/sales-base");
7
7
  const entities_1 = require("../../../entities");
8
8
  exports.updateWorksheetDetail = {
@@ -10,7 +10,7 @@ exports.updateWorksheetDetail = {
10
10
  const { tx, user, domain } = context.state;
11
11
  const worksheetDetail = await tx.getRepository(entities_1.WorksheetDetail).findOne({
12
12
  where: {
13
- domain,
13
+ domain: { id: domain.id },
14
14
  bizplace: (0, typeorm_1.In)(await (0, biz_base_1.getPermittedBizplaceIds)(domain, user)),
15
15
  id
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"update-worksheet-detail.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/update-worksheet-detail.ts"],"names":[],"mappings":";;;AAEA,uDAA0E;AAC1E,qCAA4B;AAC5B,2DAAmE;AAEnE,gDAAmD;AAEtC,QAAA,qBAAqB,GAAG;IACnC,KAAK,CAAC,qBAAqB,CAAC,CAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAY;QAC7D,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,MAAM,eAAe,GAAoB,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,OAAO,CAAC;YACvF,KAAK,EAAE;gBACL,MAAM;gBACN,QAAQ,EAAE,IAAA,YAAE,EAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzD,EAAE;aACH;SACF,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;YACnC,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,iBAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;SACvE;QAED,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE;YACjD,KAAK,CAAC,aAAa,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,yBAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;SAC3F;QAED,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE;YACzC,KAAK,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,qBAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;SAC/E;QAED,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,+CAC9C,eAAe,GACf,KAAK,KACR,OAAO,EAAE,IAAI,IACb,CAAA;IACJ,CAAC;CACF,CAAA","sourcesContent":["import { Domain } from '@things-factory/shell'\nimport { EntityManager } from 'typeorm'\nimport { getPermittedBizplaceIds, Worker } from '@things-factory/biz-base'\nimport { In } from 'typeorm'\nimport { OrderProduct, OrderVas } from '@things-factory/sales-base'\nimport { User } from '@things-factory/auth-base'\nimport { WorksheetDetail } from '../../../entities'\n\nexport const updateWorksheetDetail = {\n async updateWorksheetDetail(_: any, { id, patch }, context: any) {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n const worksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n domain,\n bizplace: In(await getPermittedBizplaceIds(domain, user)),\n id\n }\n })\n\n if (patch.worker && patch.worker.id) {\n patch.worker = await tx.getRepository(Worker).findOne(patch.worker.id)\n }\n\n if (patch.targetProduct && patch.targetProduct.id) {\n patch.targetProduct = await tx.getRepository(OrderProduct).findOne(patch.targetProduct.id)\n }\n\n if (patch.targetVas && patch.targetVas.id) {\n patch.targetVas = await tx.getRepository(OrderVas).findOne(patch.targetVas.id)\n }\n\n return await tx.getRepository(WorksheetDetail).save({\n ...worksheetDetail,\n ...patch,\n updater: user\n })\n }\n}\n"]}
1
+ {"version":3,"file":"update-worksheet-detail.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/update-worksheet-detail.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAG3C,uDAA0E;AAC1E,2DAAmE;AAGnE,gDAAmD;AAEtC,QAAA,qBAAqB,GAAG;IACnC,KAAK,CAAC,qBAAqB,CAAC,CAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAwB;QACzE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,eAAe,GAAoB,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,OAAO,CAAC;YACvF,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;gBACzB,QAAQ,EAAE,IAAA,YAAE,EAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzD,EAAE;aACH;SACF,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;YACnC,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,iBAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;SACvE;QAED,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE;YACjD,KAAK,CAAC,aAAa,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,yBAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;SAC3F;QAED,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE;YACzC,KAAK,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,qBAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;SAC/E;QAED,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,+CAC9C,eAAe,GACf,KAAK,KACR,OAAO,EAAE,IAAI,IACb,CAAA;IACJ,CAAC;CACF,CAAA","sourcesContent":["import { EntityManager, In } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { getPermittedBizplaceIds, Worker } from '@things-factory/biz-base'\nimport { OrderProduct, OrderVas } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\n\nimport { WorksheetDetail } from '../../../entities'\n\nexport const updateWorksheetDetail = {\n async updateWorksheetDetail(_: any, { id, patch }, context: ResolverContext) {\n const { tx, user, domain } = context.state\n const worksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({\n where: {\n domain: { id: domain.id },\n bizplace: In(await getPermittedBizplaceIds(domain, user)),\n id\n }\n })\n\n if (patch.worker && patch.worker.id) {\n patch.worker = await tx.getRepository(Worker).findOne(patch.worker.id)\n }\n\n if (patch.targetProduct && patch.targetProduct.id) {\n patch.targetProduct = await tx.getRepository(OrderProduct).findOne(patch.targetProduct.id)\n }\n\n if (patch.targetVas && patch.targetVas.id) {\n patch.targetVas = await tx.getRepository(OrderVas).findOne(patch.targetVas.id)\n }\n\n return await tx.getRepository(WorksheetDetail).save({\n ...worksheetDetail,\n ...patch,\n updater: user\n })\n }\n}\n"]}
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.worksheetDetailResolver = void 0;
4
- const biz_base_1 = require("@things-factory/biz-base");
5
4
  const typeorm_1 = require("typeorm");
5
+ const biz_base_1 = require("@things-factory/biz-base");
6
6
  const entities_1 = require("../../../entities");
7
7
  exports.worksheetDetailResolver = {
8
8
  async worksheetDetail(_, { name }, context) {
9
9
  const { tx, user, domain } = context.state;
10
10
  tx.getRepository(entities_1.WorksheetDetail).findOne({
11
11
  where: {
12
- domain,
12
+ domain: { id: domain.id },
13
13
  bizplace: (0, typeorm_1.In)(await (0, biz_base_1.getPermittedBizplaceIds)(domain, user)),
14
14
  name
15
15
  },