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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +2 -0
  2. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  3. package/dist-server/graphql/resolvers/worksheet/vas-candidates.d.ts +2 -0
  4. package/dist-server/tsconfig.tsbuildinfo +1 -1
  5. package/dist-server/utils/inventory-util.d.ts +2 -0
  6. package/package.json +17 -17
  7. package/server/constants/index.ts +5 -0
  8. package/server/constants/rule-type.ts +4 -0
  9. package/server/constants/target-type.ts +6 -0
  10. package/server/constants/template.ts +12 -0
  11. package/server/constants/transaction-type.ts +9 -0
  12. package/server/constants/worksheet.ts +38 -0
  13. package/server/controllers/ecommerce/ecommerce-controller.ts +209 -0
  14. package/server/controllers/ecommerce/index.ts +2 -0
  15. package/server/controllers/ecommerce/sellercraft-controller.ts +358 -0
  16. package/server/controllers/inbound/index.ts +4 -0
  17. package/server/controllers/inbound/putaway-returning-worksheet-controller.ts +450 -0
  18. package/server/controllers/inbound/putaway-worksheet-controller.ts +454 -0
  19. package/server/controllers/inbound/unloading-returning-worksheet-controller.ts +291 -0
  20. package/server/controllers/inbound/unloading-worksheet-controller.ts +1400 -0
  21. package/server/controllers/index.ts +21 -0
  22. package/server/controllers/inspect/cycle-count-worksheet-controller.ts +537 -0
  23. package/server/controllers/inspect/index.ts +1 -0
  24. package/server/controllers/outbound/index.ts +5 -0
  25. package/server/controllers/outbound/loading-worksheet-controller.ts +377 -0
  26. package/server/controllers/outbound/packing-worksheet-controller.ts +449 -0
  27. package/server/controllers/outbound/picking-worksheet-controller.ts +1769 -0
  28. package/server/controllers/outbound/returning-worksheet-controller.ts +254 -0
  29. package/server/controllers/outbound/sorting-worksheet-controller.ts +554 -0
  30. package/server/controllers/render-elccl-grn.ts +228 -0
  31. package/server/controllers/render-fm-grn.ts +287 -0
  32. package/server/controllers/render-grn.ts +285 -0
  33. package/server/controllers/render-invoices.ts +201 -0
  34. package/server/controllers/render-job-sheet.ts +208 -0
  35. package/server/controllers/render-kimeda-grn.ts +185 -0
  36. package/server/controllers/render-manifest.ts +76 -0
  37. package/server/controllers/render-manual-do.ts +227 -0
  38. package/server/controllers/render-orientage-do.ts +376 -0
  39. package/server/controllers/render-orientage-grn.ts +191 -0
  40. package/server/controllers/render-po.ts +182 -0
  41. package/server/controllers/render-ro-do.ts +404 -0
  42. package/server/controllers/render-seebuu-grn.ts +208 -0
  43. package/server/controllers/vas/index.ts +1 -0
  44. package/server/controllers/vas/vas-worksheet-controller.ts +848 -0
  45. package/server/controllers/worksheet-controller.ts +1267 -0
  46. package/server/entities/index.ts +8 -0
  47. package/server/entities/warehouse-bizplace-onhand-inventory.ts +148 -0
  48. package/server/entities/worksheet-detail.ts +106 -0
  49. package/server/entities/worksheet-movement.ts +34 -0
  50. package/server/entities/worksheet.ts +100 -0
  51. package/server/graphql/index.ts +7 -0
  52. package/server/graphql/resolvers/index.ts +8 -0
  53. package/server/graphql/resolvers/pallet/index.ts +7 -0
  54. package/server/graphql/resolvers/pallet/pallet-outbound.ts +92 -0
  55. package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +137 -0
  56. package/server/graphql/resolvers/worksheet/cancel-draft-release-order.ts +20 -0
  57. package/server/graphql/resolvers/worksheet/check-inventory-release.ts +37 -0
  58. package/server/graphql/resolvers/worksheet/check-stock-take-current-location.ts +63 -0
  59. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +213 -0
  60. package/server/graphql/resolvers/worksheet/create-worksheet.ts +21 -0
  61. package/server/graphql/resolvers/worksheet/cross-dock-picking.ts +173 -0
  62. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +211 -0
  63. package/server/graphql/resolvers/worksheet/cycle-count-worksheet.ts +79 -0
  64. package/server/graphql/resolvers/worksheet/delete-worksheet.ts +21 -0
  65. package/server/graphql/resolvers/worksheet/delivery-order-by-worksheet.ts +104 -0
  66. package/server/graphql/resolvers/worksheet/fetch-delivery-order-ro.ts +191 -0
  67. package/server/graphql/resolvers/worksheet/fetch-sellercraft-document.ts +69 -0
  68. package/server/graphql/resolvers/worksheet/find-release-orders-by-task-no.ts +36 -0
  69. package/server/graphql/resolvers/worksheet/find-release-orders-by-worksheet-no.ts +29 -0
  70. package/server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.ts +80 -0
  71. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts +100 -0
  72. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-batch-picking-worksheet.ts +26 -0
  73. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts +51 -0
  74. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +17 -0
  75. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-return-worksheet.ts +69 -0
  76. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-partial-putaway-worksheet.ts +65 -0
  77. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-putaway-worksheet.ts +54 -0
  78. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +114 -0
  79. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-return-order-worksheet.ts +45 -0
  80. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-vas-order-worksheet.ts +35 -0
  81. package/server/graphql/resolvers/worksheet/generate-worksheet/index.ts +23 -0
  82. package/server/graphql/resolvers/worksheet/having-vas.ts +45 -0
  83. package/server/graphql/resolvers/worksheet/index.ts +142 -0
  84. package/server/graphql/resolvers/worksheet/inspecting/activate-cycle-count.ts +24 -0
  85. package/server/graphql/resolvers/worksheet/inspecting/add-extra-pallet.ts +49 -0
  86. package/server/graphql/resolvers/worksheet/inspecting/check-missing-pallet.ts +18 -0
  87. package/server/graphql/resolvers/worksheet/inspecting/complete-inspection.ts +41 -0
  88. package/server/graphql/resolvers/worksheet/inspecting/index.ts +17 -0
  89. package/server/graphql/resolvers/worksheet/inspecting/inspecting.ts +30 -0
  90. package/server/graphql/resolvers/worksheet/inspecting/relocate-pallet.ts +46 -0
  91. package/server/graphql/resolvers/worksheet/inspecting/undo-inspection.ts +23 -0
  92. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +150 -0
  93. package/server/graphql/resolvers/worksheet/loaded-inventories.ts +40 -0
  94. package/server/graphql/resolvers/worksheet/loading/activate-loading.ts +73 -0
  95. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +165 -0
  96. package/server/graphql/resolvers/worksheet/loading/index.ts +11 -0
  97. package/server/graphql/resolvers/worksheet/loading/loading.ts +46 -0
  98. package/server/graphql/resolvers/worksheet/loading/undo-loading.ts +25 -0
  99. package/server/graphql/resolvers/worksheet/loading-worksheet.ts +150 -0
  100. package/server/graphql/resolvers/worksheet/not-tally-target-inventories.ts +34 -0
  101. package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +69 -0
  102. package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +102 -0
  103. package/server/graphql/resolvers/worksheet/packing/index.ts +13 -0
  104. package/server/graphql/resolvers/worksheet/packing/packing.ts +59 -0
  105. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +70 -0
  106. package/server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.ts +24 -0
  107. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +378 -0
  108. package/server/graphql/resolvers/worksheet/palletizing-pallets.ts +142 -0
  109. package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +234 -0
  110. package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +40 -0
  111. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +98 -0
  112. package/server/graphql/resolvers/worksheet/picking/assign-picking-inventories.ts +50 -0
  113. package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +44 -0
  114. package/server/graphql/resolvers/worksheet/picking/batch-picking.ts +32 -0
  115. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +137 -0
  116. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +282 -0
  117. package/server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts +121 -0
  118. package/server/graphql/resolvers/worksheet/picking/index.ts +31 -0
  119. package/server/graphql/resolvers/worksheet/picking/my-picking-assignment-status.ts +35 -0
  120. package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +96 -0
  121. package/server/graphql/resolvers/worksheet/picking/picking.ts +55 -0
  122. package/server/graphql/resolvers/worksheet/picking/scan-product-batch-picking.ts +52 -0
  123. package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +25 -0
  124. package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +25 -0
  125. package/server/graphql/resolvers/worksheet/picking/undo-picking-assignment.ts +31 -0
  126. package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +24 -0
  127. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +147 -0
  128. package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +242 -0
  129. package/server/graphql/resolvers/worksheet/putaway/activate-putaway.ts +51 -0
  130. package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +105 -0
  131. package/server/graphql/resolvers/worksheet/putaway/index.ts +11 -0
  132. package/server/graphql/resolvers/worksheet/putaway/putaway.ts +26 -0
  133. package/server/graphql/resolvers/worksheet/putaway/undo-putaway.ts +25 -0
  134. package/server/graphql/resolvers/worksheet/putaway-return/activate-putaway-return.ts +55 -0
  135. package/server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.ts +38 -0
  136. package/server/graphql/resolvers/worksheet/putaway-return/index.ts +11 -0
  137. package/server/graphql/resolvers/worksheet/putaway-return/putaway-return.ts +30 -0
  138. package/server/graphql/resolvers/worksheet/putaway-return/undo-putaway-return.ts +29 -0
  139. package/server/graphql/resolvers/worksheet/putaway-returning-worksheet.ts +83 -0
  140. package/server/graphql/resolvers/worksheet/putaway-worksheet.ts +82 -0
  141. package/server/graphql/resolvers/worksheet/recommend-putway-location.ts +133 -0
  142. package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +186 -0
  143. package/server/graphql/resolvers/worksheet/relocate-pallet.ts +67 -0
  144. package/server/graphql/resolvers/worksheet/replace-picking-pallets.ts +127 -0
  145. package/server/graphql/resolvers/worksheet/return-worksheet.ts +70 -0
  146. package/server/graphql/resolvers/worksheet/returning/activate-return.ts +24 -0
  147. package/server/graphql/resolvers/worksheet/returning/complete-return.ts +39 -0
  148. package/server/graphql/resolvers/worksheet/returning/index.ts +9 -0
  149. package/server/graphql/resolvers/worksheet/returning/returning.ts +26 -0
  150. package/server/graphql/resolvers/worksheet/sorting/activate-sorting.ts +25 -0
  151. package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +40 -0
  152. package/server/graphql/resolvers/worksheet/sorting/complete-worksheet-sorting.ts +23 -0
  153. package/server/graphql/resolvers/worksheet/sorting/index.ts +13 -0
  154. package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +31 -0
  155. package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +32 -0
  156. package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +87 -0
  157. package/server/graphql/resolvers/worksheet/transfer.ts +176 -0
  158. package/server/graphql/resolvers/worksheet/unloaded-inventories-by-reusable-pallet.ts +54 -0
  159. package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +78 -0
  160. package/server/graphql/resolvers/worksheet/unloading/activate-unloading.ts +56 -0
  161. package/server/graphql/resolvers/worksheet/unloading/complete-product-scan-unload.ts +25 -0
  162. package/server/graphql/resolvers/worksheet/unloading/complete-unloading-partially.ts +25 -0
  163. package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +76 -0
  164. package/server/graphql/resolvers/worksheet/unloading/index.ts +21 -0
  165. package/server/graphql/resolvers/worksheet/unloading/scan-product-unload.ts +26 -0
  166. package/server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.ts +26 -0
  167. package/server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.ts +24 -0
  168. package/server/graphql/resolvers/worksheet/unloading/undo-unloading.ts +25 -0
  169. package/server/graphql/resolvers/worksheet/unloading/unload.ts +26 -0
  170. package/server/graphql/resolvers/worksheet/unloading-return/activate-unloading-return.ts +28 -0
  171. package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-return-partially.ts +29 -0
  172. package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.ts +91 -0
  173. package/server/graphql/resolvers/worksheet/unloading-return/index.ts +9 -0
  174. package/server/graphql/resolvers/worksheet/unloading-return-worksheet.ts +75 -0
  175. package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +98 -0
  176. package/server/graphql/resolvers/worksheet/update-worksheet.ts +25 -0
  177. package/server/graphql/resolvers/worksheet/vas/activate-vas.ts +25 -0
  178. package/server/graphql/resolvers/worksheet/vas/assign-vas-inventories.ts +25 -0
  179. package/server/graphql/resolvers/worksheet/vas/complete-vas.ts +72 -0
  180. package/server/graphql/resolvers/worksheet/vas/execute-vas.ts +31 -0
  181. package/server/graphql/resolvers/worksheet/vas/index.ts +15 -0
  182. package/server/graphql/resolvers/worksheet/vas/undo-vas-inventory.ts +24 -0
  183. package/server/graphql/resolvers/worksheet/vas/undo-vas.ts +24 -0
  184. package/server/graphql/resolvers/worksheet/vas-candidates.ts +177 -0
  185. package/server/graphql/resolvers/worksheet/vas-inventories.ts +41 -0
  186. package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +1182 -0
  187. package/server/graphql/resolvers/worksheet/vas-transactions/index.ts +5 -0
  188. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.ts +56 -0
  189. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/relabeling.ts +20 -0
  190. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.ts +27 -0
  191. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/repalletizing.ts +14 -0
  192. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/unpacking.ts +14 -0
  193. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/check-relabelable.ts +96 -0
  194. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/complete-relabeling.ts +93 -0
  195. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.ts +4 -0
  196. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/relabeling.ts +105 -0
  197. package/server/graphql/resolvers/worksheet/vas-transactions/relabeling/undo-relabeling.ts +40 -0
  198. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts +236 -0
  199. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.ts +3 -0
  200. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts +402 -0
  201. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts +166 -0
  202. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/complete-repalletizing.ts +116 -0
  203. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.ts +3 -0
  204. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/repalletizing.ts +167 -0
  205. package/server/graphql/resolvers/worksheet/vas-transactions/repalletizing/undo-repalletizing.ts +74 -0
  206. package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/complete-unpacking.ts +20 -0
  207. package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.ts +2 -0
  208. package/server/graphql/resolvers/worksheet/vas-transactions/unpacking/unpacking.ts +164 -0
  209. package/server/graphql/resolvers/worksheet/vas-worksheet.ts +110 -0
  210. package/server/graphql/resolvers/worksheet/worksheet-by-order-no.ts +43 -0
  211. package/server/graphql/resolvers/worksheet/worksheet-with-pagination.ts +46 -0
  212. package/server/graphql/resolvers/worksheet/worksheet.ts +330 -0
  213. package/server/graphql/resolvers/worksheet/worksheets.ts +493 -0
  214. package/server/graphql/resolvers/worksheet-detail/check-progressing-pallet.ts +22 -0
  215. package/server/graphql/resolvers/worksheet-detail/create-worksheet-detail.ts +38 -0
  216. package/server/graphql/resolvers/worksheet-detail/delete-worksheet-detail.ts +18 -0
  217. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +206 -0
  218. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +165 -0
  219. package/server/graphql/resolvers/worksheet-detail/generate-carton-id.ts +26 -0
  220. package/server/graphql/resolvers/worksheet-detail/generate-pallet-id.ts +94 -0
  221. package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +259 -0
  222. package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +142 -0
  223. package/server/graphql/resolvers/worksheet-detail/index.ts +34 -0
  224. package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +165 -0
  225. package/server/graphql/resolvers/worksheet-detail/update-worksheet-detail.ts +39 -0
  226. package/server/graphql/resolvers/worksheet-detail/worksheet-detail.ts +19 -0
  227. package/server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.ts +56 -0
  228. package/server/graphql/resolvers/worksheet-detail/worksheet-details.ts +21 -0
  229. package/server/graphql/resolvers/worksheet-movement/create-worksheet-movement.ts +17 -0
  230. package/server/graphql/resolvers/worksheet-movement/delete-worksheet-movement.ts +12 -0
  231. package/server/graphql/resolvers/worksheet-movement/index.ts +17 -0
  232. package/server/graphql/resolvers/worksheet-movement/update-worksheet-movement.ts +15 -0
  233. package/server/graphql/resolvers/worksheet-movement/worksheet-movement.ts +10 -0
  234. package/server/graphql/resolvers/worksheet-movement/worksheet-movements.ts +14 -0
  235. package/server/graphql/types/index.ts +15 -0
  236. package/server/graphql/types/pallet/index.ts +12 -0
  237. package/server/graphql/types/pallet/pallet.ts +7 -0
  238. package/server/graphql/types/worksheet/arrival-notice-worksheet.ts +8 -0
  239. package/server/graphql/types/worksheet/batch-pick-worksheet-info.ts +9 -0
  240. package/server/graphql/types/worksheet/contact-point-info.ts +12 -0
  241. package/server/graphql/types/worksheet/cycle-count-worksheet.ts +16 -0
  242. package/server/graphql/types/worksheet/delivery-info.ts +11 -0
  243. package/server/graphql/types/worksheet/delivery-order-info.ts +25 -0
  244. package/server/graphql/types/worksheet/delivery-order-ro.ts +15 -0
  245. package/server/graphql/types/worksheet/delivery-worksheet.ts +7 -0
  246. package/server/graphql/types/worksheet/executing-worksheet.ts +8 -0
  247. package/server/graphql/types/worksheet/find-release-orders-by-task-no.ts +8 -0
  248. package/server/graphql/types/worksheet/goods-delivery-note.ts +8 -0
  249. package/server/graphql/types/worksheet/index.ts +750 -0
  250. package/server/graphql/types/worksheet/inventory-check-worksheet.ts +7 -0
  251. package/server/graphql/types/worksheet/loaded-worksheet-detail.ts +9 -0
  252. package/server/graphql/types/worksheet/multiple-release-good-worksheet.ts +8 -0
  253. package/server/graphql/types/worksheet/my-picking-assignment-status.ts +9 -0
  254. package/server/graphql/types/worksheet/new-worksheet.ts +10 -0
  255. package/server/graphql/types/worksheet/picking-assignment-status.ts +9 -0
  256. package/server/graphql/types/worksheet/product-approval.ts +11 -0
  257. package/server/graphql/types/worksheet/release-good-worksheet.ts +8 -0
  258. package/server/graphql/types/worksheet/return-order-worksheet.ts +8 -0
  259. package/server/graphql/types/worksheet/sellercraft-document.ts +8 -0
  260. package/server/graphql/types/worksheet/vas-order-worksheet.ts +7 -0
  261. package/server/graphql/types/worksheet/vas-worksheet.ts +8 -0
  262. package/server/graphql/types/worksheet/worksheet-detail-info.ts +68 -0
  263. package/server/graphql/types/worksheet/worksheet-info.ts +33 -0
  264. package/server/graphql/types/worksheet/worksheet-list.ts +8 -0
  265. package/server/graphql/types/worksheet/worksheet-patch.ts +19 -0
  266. package/server/graphql/types/worksheet/worksheet-with-pagination.ts +9 -0
  267. package/server/graphql/types/worksheet/worksheet.ts +34 -0
  268. package/server/graphql/types/worksheet-detail/index.ts +81 -0
  269. package/server/graphql/types/worksheet-detail/inventory-detail.ts +39 -0
  270. package/server/graphql/types/worksheet-detail/new-worksheet-detail.ts +20 -0
  271. package/server/graphql/types/worksheet-detail/pallet-info.ts +8 -0
  272. package/server/graphql/types/worksheet-detail/worksheet-detail-list.ts +8 -0
  273. package/server/graphql/types/worksheet-detail/worksheet-detail-patch.ts +28 -0
  274. package/server/graphql/types/worksheet-detail/worksheet-detail.ts +29 -0
  275. package/server/graphql/types/worksheet-movement/index.ts +30 -0
  276. package/server/graphql/types/worksheet-movement/new-worksheet-movement.ts +8 -0
  277. package/server/graphql/types/worksheet-movement/worksheet-movement-list.ts +8 -0
  278. package/server/graphql/types/worksheet-movement/worksheet-movement-patch.ts +8 -0
  279. package/server/graphql/types/worksheet-movement/worksheet-movement.ts +10 -0
  280. package/server/index.ts +14 -0
  281. package/server/middlewares/index.ts +3 -0
  282. package/server/migrations/index.ts +9 -0
  283. package/server/routes.ts +80 -0
  284. package/server/utils/datetime-util.ts +54 -0
  285. package/server/utils/index.ts +4 -0
  286. package/server/utils/inventory-util.ts +390 -0
  287. package/server/utils/worksheet-no-generator.ts +206 -0
  288. package/server/utils/worksheet-util.ts +85 -0
@@ -0,0 +1,31 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Domain } from '@things-factory/shell'
5
+
6
+ import { SortingWorksheetController } from '../../../../controllers'
7
+
8
+ export const scanProductSortingResolver = {
9
+ async scanProductSorting(
10
+ _: any,
11
+ { taskNo, releaseGoodNo, productBarcode, serialNumber, toteNo },
12
+ context: ResolverContext
13
+ ) {
14
+ const { tx, domain, user } = context.state
15
+ await scanProductSorting(tx, domain, user, taskNo, releaseGoodNo, productBarcode, serialNumber, toteNo)
16
+ }
17
+ }
18
+
19
+ export async function scanProductSorting(
20
+ tx: EntityManager,
21
+ domain: Domain,
22
+ user: User,
23
+ taskNo: string,
24
+ releaseGoodNo: string,
25
+ productBarcode?: string,
26
+ serialNumber?: string,
27
+ toteNo?: string
28
+ ) {
29
+ const worksheetController: SortingWorksheetController = new SortingWorksheetController(tx, domain, user)
30
+ await worksheetController.scanProductSorting(taskNo, releaseGoodNo, productBarcode, serialNumber, toteNo)
31
+ }
@@ -0,0 +1,32 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Domain } from '@things-factory/shell'
5
+
6
+ import { SortingWorksheetController } from '../../../../controllers'
7
+
8
+ export const sortingProductResolver = {
9
+ async sortingProduct(
10
+ _: any,
11
+ { taskNo, releaseGoodNo, productId, sortingQty, serialNumber, toteNo },
12
+ context: ResolverContext
13
+ ) {
14
+ const { tx, domain, user } = context.state
15
+ await sortingProduct(tx, domain, user, taskNo, releaseGoodNo, productId, sortingQty, serialNumber, toteNo)
16
+ }
17
+ }
18
+
19
+ export async function sortingProduct(
20
+ tx: EntityManager,
21
+ domain: Domain,
22
+ user: User,
23
+ taskNo: string,
24
+ releaseGoodNo: string,
25
+ productId: string,
26
+ sortingQty: number,
27
+ serialNumber?: string,
28
+ toteNo?: string
29
+ ) {
30
+ const worksheetController: SortingWorksheetController = new SortingWorksheetController(tx, domain, user)
31
+ await worksheetController.sortingProduct(taskNo, releaseGoodNo, productId, sortingQty, serialNumber, toteNo)
32
+ }
@@ -0,0 +1,87 @@
1
+ import { SelectQueryBuilder } from 'typeorm'
2
+
3
+ import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
4
+ import { getRepository } from '@things-factory/shell'
5
+
6
+ import { WORKSHEET_TYPE } from '../../../constants'
7
+ import { fetchExecutingBatchWorksheet } from '../../../utils'
8
+
9
+ export const sortingWorksheetResolver = {
10
+ async sortingWorksheet(_: any, { releaseGoodNo, taskNo }, context: ResolverContext) {
11
+ const { domain } = context.state
12
+ const releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({
13
+ where: { domain: { id: domain.id }, name: releaseGoodNo, status: ORDER_STATUS.SORTING },
14
+ relations: ['bizplace', 'bizplace.domain']
15
+ })
16
+ if (!releaseGood) throw new Error(`Couldn't find sorting worksheet by order no (${releaseGoodNo})`)
17
+
18
+ const worksheet = await fetchExecutingBatchWorksheet(
19
+ domain,
20
+ taskNo,
21
+ releaseGood.bizplace,
22
+ ['bizplace'],
23
+ WORKSHEET_TYPE.SORTING
24
+ )
25
+
26
+ const qb: SelectQueryBuilder<OrderInventory> = getRepository(OrderInventory).createQueryBuilder('OI')
27
+ qb.select('SUM(OI.releaseQty)', 'releaseQty')
28
+ .addSelect('SUM(OI.sortedQty)', 'sortedQty')
29
+ .addSelect(`string_agg(CONCAT(BIN.name, '(', OI.releaseQty, ')' ), ' ')`, 'binRemarks')
30
+ .addSelect('PROD.id', 'productId')
31
+ .addSelect('PROD.name', 'productName')
32
+ .addSelect('PROD.sku', 'productSku')
33
+ .addSelect('PROD.description', 'productDescription')
34
+ .addSelect('PROD.isRequireSerialNumberScanningOutbound', 'isRequireSerialNumberScanningOutbound')
35
+ .addSelect('OI.batch_id', 'batchId')
36
+ .addSelect('OI.packing_type', 'packingType')
37
+ .addSelect('OI.packing_size', 'packingSize')
38
+ .addSelect('INV.expiration_date', 'expirationDate')
39
+ .leftJoin('OI.product', 'PROD')
40
+ .leftJoin('OI.inventory', 'INV')
41
+ .leftJoin('OI.binLocation', 'BIN')
42
+ .where('OI.release_good_id = :releaseGoodId', { releaseGoodId: releaseGood?.id })
43
+ .andWhere('OI.status <> :releaseGoodStatus', { releaseGoodStatus: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT })
44
+ .groupBy('PROD.id')
45
+ .addGroupBy('PROD.name')
46
+ .addGroupBy('PROD.sku')
47
+ .addGroupBy('PROD.description')
48
+ .addGroupBy('PROD.isRequireSerialNumberScanningOutbound')
49
+ .addGroupBy('INV.expiration_date')
50
+ .addGroupBy('OI.batch_id')
51
+ .addGroupBy('OI.packing_type')
52
+ .addGroupBy('OI.packing_size')
53
+ .orderBy('PROD.sku', 'ASC')
54
+
55
+ const items: any[] = await qb.getRawMany()
56
+
57
+ return {
58
+ worksheetInfo: {
59
+ bizplaceName: releaseGood.bizplace.name,
60
+ partnerDomainId: releaseGood.bizplace?.domain.id,
61
+ startedAt: worksheet.startedAt,
62
+ refNo: releaseGood.refNo,
63
+ refNo2: releaseGood.refNo2,
64
+ refNo3: releaseGood.refNo3,
65
+ releaseGood
66
+ },
67
+ worksheetDetailInfos: items.map((item: any) => {
68
+ return {
69
+ batchId: item?.batchId,
70
+ productId: item?.productId,
71
+ productSku: item?.productSku,
72
+ productName: item?.productName,
73
+ productDescription: item?.productDescription,
74
+ isRequireSerialNumberScanningOutbound: item?.isRequireSerialNumberScanningOutbound,
75
+ releaseQty: item.releaseQty,
76
+ sortedQty: item.sortedQty,
77
+ status: item.status,
78
+ expirationDate: item?.expirationDate,
79
+ packingType: item?.packingType,
80
+ packingSize: item?.packingSize,
81
+ binRemarks: item?.binRemarks,
82
+ releaseGood
83
+ }
84
+ })
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,176 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Bizplace } from '@things-factory/biz-base'
5
+ import { ORDER_PRODUCT_STATUS, OrderInventory } from '@things-factory/sales-base'
6
+ import { Domain } from '@things-factory/shell'
7
+ import {
8
+ Inventory,
9
+ INVENTORY_STATUS,
10
+ INVENTORY_TRANSACTION_TYPE,
11
+ InventoryHistory,
12
+ InventoryNoGenerator
13
+ } from '@things-factory/warehouse-base'
14
+
15
+ import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
16
+ import { Worksheet, WorksheetDetail } from '../../../entities'
17
+
18
+ export const transfer = {
19
+ async transfer(_: any, { palletId, toPalletId, qty }, context: ResolverContext) {
20
+ const { tx, domain, bizplace, user } = context.state
21
+
22
+ // 1. get to inventory
23
+ let toInventory: Inventory = await tx.getRepository(Inventory).findOne({
24
+ where: { domain: { id: domain.id }, palletId: toPalletId },
25
+ relations: ['bizplace', 'product', 'warehouse', 'location']
26
+ })
27
+ if (!toInventory) throw new Error(`to pallet doesn't exists`)
28
+
29
+ // 2. get from inventory
30
+ let fromInventory: Inventory = await tx.getRepository(Inventory).findOne({
31
+ where: { domain: { id: domain.id }, palletId },
32
+ relations: ['bizplace', 'product', 'warehouse', 'location']
33
+ })
34
+ if (!fromInventory) throw new Error(`from pallet doesn't exists`)
35
+ if (toInventory.batchId !== fromInventory.batchId) throw new Error(`Can't transfer to different batch`)
36
+
37
+ // 3. get worksheet & worksheet detail
38
+ const worksheetDetail: WorksheetDetail = await tx.getRepository(WorksheetDetail).findOne({
39
+ where: {
40
+ domain: { id: domain.id },
41
+ targetInventory: { id: fromInventory.id },
42
+ status: WORKSHEET_STATUS.EXECUTING,
43
+ type: WORKSHEET_TYPE.PUTAWAY
44
+ },
45
+ relations: ['worksheet', 'targetInventory']
46
+ })
47
+ if (!worksheetDetail) throw new Error(`Worksheet Detail doesn't exists`)
48
+ const worksheet: Worksheet = worksheetDetail.worksheet
49
+ if (!worksheet) throw new Error(`Worksheet doesn't exists`)
50
+ let targetInventory: OrderInventory = worksheetDetail.targetInventory
51
+
52
+ // 4. transfer qty
53
+ // 4. 1) if result < 0
54
+ // - throw error
55
+ const leftQty = fromInventory.qty - qty
56
+ if (leftQty < 0) throw new Error(`Invalid qty, can't exceed limitation`)
57
+
58
+ // 4. 2) if result == 0
59
+ if (leftQty == 0) {
60
+ // - plus qty to (toInventory)
61
+ await tx.getRepository(Inventory).save({
62
+ ...toInventory,
63
+ qty: toInventory.qty + qty,
64
+ lastSeq: toInventory.lastSeq + 1,
65
+ updater: user
66
+ })
67
+ // - add inventory history
68
+ //@ts-ignore
69
+ delete toInventory.id
70
+ await tx.getRepository(InventoryHistory).save({
71
+ ...toInventory,
72
+ domain: domain,
73
+ name: InventoryNoGenerator.inventoryHistoryName(),
74
+ product: toInventory.product,
75
+ warehouse: toInventory.warehouse,
76
+ location: toInventory.location,
77
+ seq: toInventory.lastSeq,
78
+ transactionType: INVENTORY_TRANSACTION_TYPE.TRANSFERED_IN,
79
+ creator: user,
80
+ updater: user
81
+ })
82
+ // - update (fromInventory)
83
+ await tx.getRepository(Inventory).save({
84
+ ...fromInventory,
85
+ qty: leftQty, // 0
86
+ status: INVENTORY_STATUS.TERMINATED,
87
+ lastSeq: fromInventory.lastSeq + 1,
88
+ updater: user
89
+ })
90
+
91
+ await tx.getRepository(OrderInventory).save({
92
+ ...targetInventory,
93
+ status: ORDER_PRODUCT_STATUS.TERMINATED
94
+ })
95
+
96
+ fromInventory = await tx.getRepository(Inventory).findOne({
97
+ where: { id: fromInventory.id },
98
+ relations: ['bizplace', 'product', 'warehouse', 'location']
99
+ })
100
+
101
+ // - add inventory history
102
+ await tx.getRepository(InventoryHistory).save({
103
+ ...fromInventory,
104
+ name: InventoryNoGenerator.inventoryHistoryName(),
105
+ product: fromInventory.product,
106
+ warehouse: fromInventory.warehouse,
107
+ location: fromInventory.location,
108
+ seq: fromInventory.lastSeq,
109
+ transactionType: INVENTORY_TRANSACTION_TYPE.TRANSFERED_OUT,
110
+ creator: user,
111
+ updater: user
112
+ })
113
+
114
+ // - update worksheetDetail (EXECUTING => DONE)
115
+ await tx.getRepository(WorksheetDetail).save({
116
+ ...worksheetDetail,
117
+ status: WORKSHEET_STATUS.DONE,
118
+ updater: user
119
+ })
120
+ }
121
+ // 4. 3) if result > 0
122
+ else if (leftQty > 0) {
123
+ await tx.getRepository(Inventory).save({
124
+ ...toInventory,
125
+ qty: toInventory.qty + qty,
126
+ lastSeq: toInventory.lastSeq + 1,
127
+ updater: user
128
+ })
129
+
130
+ toInventory = await tx.getRepository(Inventory).findOne({
131
+ where: { id: toInventory.id },
132
+ relations: ['bizplace', 'product', 'warehouse', 'location']
133
+ })
134
+ // - add inventory history
135
+ //@ts-ignore
136
+ delete toInventory.id
137
+ await tx.getRepository(InventoryHistory).save({
138
+ ...toInventory,
139
+ domain,
140
+ name: InventoryNoGenerator.inventoryHistoryName(),
141
+ product: toInventory.product,
142
+ warehouse: toInventory.warehouse,
143
+ location: toInventory.location,
144
+ seq: toInventory.lastSeq,
145
+ transactionType: INVENTORY_TRANSACTION_TYPE.TRANSFERED_IN,
146
+ creator: user,
147
+ updater: user
148
+ })
149
+
150
+ await tx.getRepository(Inventory).save({
151
+ ...fromInventory,
152
+ qty: leftQty,
153
+ lastSeq: fromInventory.lastSeq + 1,
154
+ updater: user
155
+ })
156
+
157
+ fromInventory = await tx.getRepository(Inventory).findOne({
158
+ where: { id: fromInventory.id },
159
+ relations: ['bizplace', 'product', 'warehouse', 'location']
160
+ })
161
+
162
+ // - add inventory history
163
+ await tx.getRepository(InventoryHistory).save({
164
+ ...fromInventory,
165
+ name: InventoryNoGenerator.inventoryHistoryName(),
166
+ product: fromInventory.product,
167
+ warehouse: fromInventory.warehouse,
168
+ location: fromInventory.location,
169
+ seq: fromInventory.lastSeq,
170
+ transactionType: INVENTORY_TRANSACTION_TYPE.TRANSFERED_OUT,
171
+ creator: user,
172
+ updater: user
173
+ })
174
+ }
175
+ }
176
+ }
@@ -0,0 +1,54 @@
1
+ import { In } from 'typeorm'
2
+
3
+ //@ts-ignore
4
+ import { ArrivalNotice, Bizplace } from '@things-factory/sales-base'
5
+ import { getRepository } from '@things-factory/shell'
6
+ import { Inventory, INVENTORY_STATUS, Pallet } from '@things-factory/warehouse-base'
7
+
8
+ import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
9
+ import { WorksheetDetail } from '../../../entities'
10
+
11
+ export const unloadedInventoriesByReusablePallet = {
12
+ async unloadedInventoriesByReusablePallet(
13
+ _: any,
14
+ { reusablePalletId, worksheetDetailName },
15
+ context: ResolverContext
16
+ ) {
17
+ const { domain } = context.state
18
+ const foundWorksheetDetail: WorksheetDetail = await getRepository(WorksheetDetail).findOne({
19
+ where: {
20
+ domain: { id: domain.id },
21
+ name: worksheetDetailName,
22
+ type: WORKSHEET_TYPE.UNLOADING,
23
+ status: In([WORKSHEET_STATUS.EXECUTING, WORKSHEET_STATUS.PARTIALLY_UNLOADED])
24
+ },
25
+ relations: ['bizplace', 'targetProduct', 'worksheet', 'worksheet.arrivalNotice', 'worksheet.bufferLocation']
26
+ })
27
+
28
+ if (!foundWorksheetDetail) return []
29
+
30
+ let foundReusablePallet: Pallet
31
+
32
+ foundReusablePallet = await getRepository(Pallet).findOne({
33
+ where: {
34
+ domain: { id: domain.id },
35
+ name: reusablePalletId
36
+ },
37
+ relations: ['domain']
38
+ })
39
+
40
+ let arrivalNotice: ArrivalNotice = foundWorksheetDetail.worksheet.arrivalNotice
41
+ let customerBizplace: Bizplace = foundWorksheetDetail.bizplace
42
+ return await getRepository(Inventory).find({
43
+ where: {
44
+ domain: { id: domain.id },
45
+ bizplace: { id: customerBizplace.id },
46
+ batchId: foundWorksheetDetail.targetProduct.batchId,
47
+ refOrderId: arrivalNotice.id,
48
+ reusablePallet: foundReusablePallet,
49
+ status: INVENTORY_STATUS.UNLOADED
50
+ },
51
+ relations: ['reusablePallet', 'product']
52
+ })
53
+ }
54
+ }
@@ -0,0 +1,78 @@
1
+ import { In } from 'typeorm'
2
+
3
+ //@ts-ignore
4
+ import { ArrivalNotice, Bizplace, ReturnOrder } from '@things-factory/sales-base'
5
+ import { getRepository } from '@things-factory/shell'
6
+ import { Inventory, INVENTORY_STATUS } from '@things-factory/warehouse-base'
7
+
8
+ import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
9
+ import { WorksheetDetail } from '../../../entities'
10
+
11
+ export const unloadedInventories = {
12
+ async unloadedInventories(_: any, { worksheetDetailNames }, context: ResolverContext) {
13
+ const { domain } = context.state
14
+ const foundWorksheetDetails: WorksheetDetail[] = await getRepository(WorksheetDetail).find({
15
+ where: {
16
+ domain: { id: domain.id },
17
+ name: In(worksheetDetailNames),
18
+ type: In([WORKSHEET_TYPE.UNLOADING, WORKSHEET_TYPE.UNLOADING_RETURN]),
19
+ status: In([WORKSHEET_STATUS.EXECUTING, WORKSHEET_STATUS.PARTIALLY_UNLOADED])
20
+ },
21
+ relations: [
22
+ 'bizplace',
23
+ 'targetProduct',
24
+ 'targetInventory',
25
+ 'worksheet',
26
+ 'worksheet.arrivalNotice',
27
+ 'worksheet.returnOrder',
28
+ 'worksheet.bufferLocation'
29
+ ]
30
+ })
31
+
32
+ if (!foundWorksheetDetails?.length) return []
33
+
34
+ const arrivalNotice: ArrivalNotice = foundWorksheetDetails[0].worksheet.arrivalNotice
35
+ const returnOrder: ReturnOrder = foundWorksheetDetails[0].worksheet.returnOrder
36
+ const customerBizplace: Bizplace = foundWorksheetDetails[0].bizplace
37
+ if (arrivalNotice) {
38
+ let foundInv = await getRepository(Inventory).find({
39
+ where: {
40
+ domain: { id: domain.id },
41
+ bizplace: { id: customerBizplace.id },
42
+ refOrderId: arrivalNotice.id,
43
+ batchId: In(foundWorksheetDetails.map(wsd => wsd.targetProduct.batchId)),
44
+ location: In(foundWorksheetDetails.map(wsd => wsd.worksheet.bufferLocation.id)),
45
+ orderProductId: In(foundWorksheetDetails.map(wsd => wsd.targetProduct.id)),
46
+ status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED])
47
+ },
48
+ relations: ['reusablePallet', 'product', 'bizplace']
49
+ })
50
+ const items = foundInv.map((inv: Inventory) => {
51
+ const expirationDate: Date = inv.expirationDate ? new Date(inv.expirationDate) : null
52
+ const manufactureDate: Date = inv.manufactureDate ? new Date(inv.manufactureDate) : null
53
+ return {
54
+ ...inv,
55
+ expirationDate: expirationDate,
56
+ manufactureDate: manufactureDate
57
+ }
58
+ })
59
+
60
+ return items
61
+ }
62
+
63
+ if (returnOrder) {
64
+ return await getRepository(Inventory).find({
65
+ where: {
66
+ domain: { id: domain.id },
67
+ bizplace: { id: customerBizplace.id },
68
+ refOrderId: returnOrder.id,
69
+ batchId: In(foundWorksheetDetails.map(wsd => wsd.targetInventory.batchId)),
70
+ location: In(foundWorksheetDetails.map(wsd => wsd.worksheet.bufferLocation.id)),
71
+ orderInventoryId: In(foundWorksheetDetails.map(wsd => wsd.targetInventory.id)),
72
+ status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED])
73
+ },
74
+ relations: ['reusablePallet', 'product', 'bizplace']
75
+ })
76
+ }
77
+ }
78
+ }
@@ -0,0 +1,56 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { ArrivalNotice } from '@things-factory/sales-base'
5
+ import { Domain } from '@things-factory/shell'
6
+
7
+ import { WORKSHEET_TYPE } from '../../../../constants'
8
+ import { UnloadingWorksheetController, UnloadingWorksheetDetail } from '../../../../controllers'
9
+ import { Worksheet } from '../../../../entities'
10
+ import { activatePicking } from '../picking/activate-picking'
11
+ import { worksheetByOrderNo } from '../worksheet-by-order-no'
12
+
13
+ export const activateUnloadingResolver = {
14
+ async activateUnloading(_: any, { worksheetNo, unloadingWorksheetDetails }, context: ResolverContext) {
15
+ const { tx, domain, user } = context.state
16
+ let unloadingWS: Worksheet = await activateUnloading(tx, domain, user, worksheetNo, unloadingWorksheetDetails)
17
+
18
+ if (!unloadingWS?.arrivalNotice?.id) {
19
+ unloadingWS = await tx.getRepository(Worksheet).findOne({
20
+ where: { id: unloadingWS.id },
21
+ relations: ['arrivalNotice']
22
+ })
23
+ }
24
+
25
+ let arrivalNotice: ArrivalNotice = unloadingWS.arrivalNotice
26
+ const crossDocking: boolean = arrivalNotice.crossDocking
27
+
28
+ if (crossDocking) {
29
+ arrivalNotice = await tx.getRepository(ArrivalNotice).findOne({
30
+ where: { id: arrivalNotice.id },
31
+ relations: ['releaseGood']
32
+ })
33
+ const releaseGood = arrivalNotice.releaseGood
34
+ const { name: pickingWorksheetNo } = await worksheetByOrderNo(
35
+ domain,
36
+ releaseGood.name,
37
+ WORKSHEET_TYPE.PICKING,
38
+ tx
39
+ )
40
+ await activatePicking(tx, domain, user, pickingWorksheetNo)
41
+ }
42
+
43
+ return unloadingWS
44
+ }
45
+ }
46
+
47
+ export async function activateUnloading(
48
+ tx: EntityManager,
49
+ domain: Domain,
50
+ user: User,
51
+ worksheetNo: string,
52
+ unloadingWorksheetDetails: UnloadingWorksheetDetail[]
53
+ ): Promise<Worksheet> {
54
+ const worksheetController: UnloadingWorksheetController = new UnloadingWorksheetController(tx, domain, user)
55
+ return await worksheetController.activateUnloading(worksheetNo, unloadingWorksheetDetails)
56
+ }
@@ -0,0 +1,25 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Domain } from '@things-factory/shell'
5
+ import { Inventory } from '@things-factory/warehouse-base'
6
+
7
+ import { UnloadingWorksheetController } from '../../../../controllers'
8
+
9
+ export const completeProductScanUnloadResolver = {
10
+ async completeProductScanUnload(_: any, { worksheetDetailName, inventory }, context: ResolverContext) {
11
+ const { tx, domain, user } = context.state
12
+ await completeProductScanUnload(tx, domain, user, worksheetDetailName, inventory)
13
+ }
14
+ }
15
+
16
+ async function completeProductScanUnload(
17
+ tx: EntityManager,
18
+ domain: Domain,
19
+ user: User,
20
+ worksheetDetailName: string,
21
+ inventory: Partial<Inventory>
22
+ ): Promise<void> {
23
+ const worksheetController: UnloadingWorksheetController = new UnloadingWorksheetController(tx, domain, user)
24
+ await worksheetController.completeProductScanUnload(worksheetDetailName, inventory)
25
+ }
@@ -0,0 +1,25 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Domain } from '@things-factory/shell'
5
+
6
+ import { UnloadingWorksheetController } from '../../../../controllers'
7
+ import { WorksheetDetail } from '../../../../entities'
8
+
9
+ export const completeUnloadingPartiallyResolver = {
10
+ async completeUnloadingPartially(_: any, { arrivalNoticeNo, worksheetDetail }, context: ResolverContext) {
11
+ const { tx, domain, user } = context.state
12
+ await completeUnloadingPartially(tx, domain, user, arrivalNoticeNo, worksheetDetail)
13
+ }
14
+ }
15
+
16
+ export async function completeUnloadingPartially(
17
+ tx: EntityManager,
18
+ domain: Domain,
19
+ user: User,
20
+ arrivalNoticeNo: string,
21
+ unloadingWorksheetDetail: Partial<WorksheetDetail>[]
22
+ ): Promise<void> {
23
+ const worksheetController: UnloadingWorksheetController = new UnloadingWorksheetController(tx, domain, user)
24
+ await worksheetController.completeUnloadingPartially(arrivalNoticeNo, unloadingWorksheetDetail)
25
+ }
@@ -0,0 +1,76 @@
1
+ import { EntityManager, In } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Bizplace } from '@things-factory/biz-base'
5
+ import { ArrivalNotice, generateGoodsReceivalNote } from '@things-factory/sales-base'
6
+ import { Domain } from '@things-factory/shell'
7
+ import { Inventory, INVENTORY_STATUS } from '@things-factory/warehouse-base'
8
+
9
+ import { WORKSHEET_STATUS } from '../../../../constants'
10
+ import { PutawayWorksheetController, UnloadingWorksheetController } from '../../../../controllers'
11
+ import { Worksheet, WorksheetDetail } from '../../../../entities'
12
+
13
+ export const completeUnloadingResolver = {
14
+ async completeUnloading(_: any, { arrivalNoticeNo, worksheetDetails }, context: ResolverContext) {
15
+ const { tx, domain, user } = context.state
16
+ await completeUnloading(tx, domain, user, arrivalNoticeNo, worksheetDetails)
17
+
18
+ const arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({
19
+ where: { domain: { id: domain.id }, name: arrivalNoticeNo },
20
+ relations: [
21
+ 'purchaseOrder',
22
+ 'bizplace',
23
+ 'bizplace.domain',
24
+ 'bizplace.company',
25
+ 'bizplace.company.domain',
26
+ 'orderProducts',
27
+ 'orderProducts.product',
28
+ 'orderProducts.product.productDetails',
29
+ 'orderProducts.product.productDetails.childProductDetail'
30
+ ]
31
+ })
32
+
33
+ const putawayWSCtrl: PutawayWorksheetController = new PutawayWorksheetController(tx, domain, user)
34
+ let putawayWorksheet: Worksheet
35
+
36
+ const inventories: Inventory[] = await tx.getRepository(Inventory).find({
37
+ where: {
38
+ domain: { id: domain.id },
39
+ refOrderId: arrivalNotice.id,
40
+ status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED])
41
+ }
42
+ })
43
+
44
+ putawayWorksheet = await putawayWSCtrl.generatePutawayWorksheet(arrivalNotice.name, inventories)
45
+
46
+ if (putawayWorksheet.status === WORKSHEET_STATUS.DEACTIVATED) {
47
+ await putawayWSCtrl.activatePutaway(putawayWorksheet.name, putawayWorksheet.worksheetDetails)
48
+ }
49
+
50
+ //@ts-ignore
51
+ const bizplaceId: Bizplace = arrivalNotice.bizplace.id
52
+ //@ts-ignore
53
+ await generateGoodsReceivalNote({ refNo: arrivalNoticeNo, customer: bizplaceId }, domain, user, tx)
54
+
55
+ const worksheetController: UnloadingWorksheetController = new UnloadingWorksheetController(tx, domain, user)
56
+ if (context.header && context.header.referer) {
57
+ worksheetController.notifyToOfficeAdmin({
58
+ title: `Unloading Completed (${arrivalNotice.bizplace.name}, ${arrivalNotice.name})`,
59
+ body: `${arrivalNotice.name} is ready for putaway`,
60
+ url: context.header.referer,
61
+ data: { url: context.header.referer }
62
+ })
63
+ }
64
+ }
65
+ }
66
+
67
+ export async function completeUnloading(
68
+ tx: EntityManager,
69
+ domain: Domain,
70
+ user: User,
71
+ arrivalNoticeNo: string,
72
+ unloadingWorksheetDetails: Partial<WorksheetDetail>[]
73
+ ): Promise<void> {
74
+ const worksheetController: UnloadingWorksheetController = new UnloadingWorksheetController(tx, domain, user)
75
+ await worksheetController.completeUnloading(arrivalNoticeNo, unloadingWorksheetDetails)
76
+ }
@@ -0,0 +1,21 @@
1
+ import { activateUnloadingResolver } from './activate-unloading'
2
+ import { completeProductScanUnloadResolver } from './complete-product-scan-unload'
3
+ import { completeUnloadingResolver } from './complete-unloading'
4
+ import { completeUnloadingPartiallyResolver } from './complete-unloading-partially'
5
+ import { scanProductUnloadResolver } from './scan-product-unload'
6
+ import { scanSerialNumberUnloadResolver } from './scan-serial-number-unload'
7
+ import { undoSerialNumberUnloadResolver } from './undo-serial-number-unload'
8
+ import { undoUnloadingResolver } from './undo-unloading'
9
+ import { unloadResolver } from './unload'
10
+
11
+ export const Mutations = {
12
+ ...activateUnloadingResolver,
13
+ ...scanProductUnloadResolver,
14
+ ...scanSerialNumberUnloadResolver,
15
+ ...unloadResolver,
16
+ ...undoUnloadingResolver,
17
+ ...undoSerialNumberUnloadResolver,
18
+ ...completeProductScanUnloadResolver,
19
+ ...completeUnloadingResolver,
20
+ ...completeUnloadingPartiallyResolver
21
+ }