@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,8 @@
1
+ import { Worksheet } from './worksheet'
2
+ import { WorksheetDetail } from './worksheet-detail'
3
+ import { WorksheetMovement } from './worksheet-movement'
4
+ import { WarehouseBizplaceOnhandInventory } from './warehouse-bizplace-onhand-inventory'
5
+
6
+ export const entities = [Worksheet, WorksheetDetail, WorksheetMovement, WarehouseBizplaceOnhandInventory]
7
+
8
+ export { Worksheet, WorksheetDetail, WorksheetMovement }
@@ -0,0 +1,148 @@
1
+ import { ViewColumn, ViewEntity } from 'typeorm'
2
+
3
+ @ViewEntity({
4
+ expression: `
5
+ select d.name as "domainName", b.name as "bizplaceName", src.* from (
6
+ WITH oi as (
7
+ select
8
+ oi.domain_id,
9
+ oi.bizplace_id,
10
+ SUM(oi.release_qty) AS release_qty,
11
+ SUM(oi.release_uom_value) AS release_uom_value,
12
+ oi.batch_id,
13
+ oi.batch_id_ref,
14
+ oi.product_id,
15
+ oi.packing_type,
16
+ oi.packing_size,
17
+ oi.uom
18
+ FROM
19
+ order_inventories oi
20
+ WHERE
21
+ (oi.status = 'PENDING' or oi.status = 'PENDING_RECEIVE' or oi.status = 'PENDING_WORKSHEET' or oi.status = 'PENDING_SPLIT')
22
+ AND oi.batch_id NOTNULL
23
+ AND oi.product_id NOTNULL
24
+ AND oi.packing_type NOTNULL
25
+ AND oi.packing_size NOTNULL
26
+ AND oi.inventory_id IS NULL
27
+ GROUP BY
28
+ oi.domain_id,
29
+ oi.bizplace_id,
30
+ oi.batch_id,
31
+ oi.batch_id_ref,
32
+ oi.product_id,
33
+ oi.packing_type,
34
+ oi.packing_size,
35
+ oi.uom
36
+ )
37
+ -- SINGLE ITEM INVENTORY QUERY
38
+ select
39
+ i.domain_id as "domainId",
40
+ i.bizplace_id as "bizplaceId",
41
+ i.packing_type as "packingType",
42
+ i.packing_size as "packingSize",
43
+ i.uom,
44
+ i.product_id as "productId",
45
+ null as "productBundleId",
46
+ COALESCE(SUM(COALESCE(i.qty, 0)) - SUM(COALESCE(i.locked_qty, 0)) - MAX(COALESCE(oi.release_qty, 0))) AS "remainQty",
47
+ COALESCE(SUM(COALESCE(i.uom_value, 0)) - SUM(COALESCE(i.locked_uom_value, 0)) - MAX(COALESCE(oi.release_uom_value, 0)), 0) AS "remainUomValue",
48
+ COALESCE(sum(COALESCE(i.qty, 0::double precision))) AS "qty",
49
+ COALESCE(sum(COALESCE(i.uom_value, 0::double precision))) AS "uomValue",
50
+ 'SINGLE' AS "groupType"
51
+ FROM inventories i
52
+ INNER JOIN locations l2 ON i.location_id = l2.id AND i.domain_id = l2.domain_id AND l2.type NOT IN ('QUARANTINE', 'RESERVE')
53
+ LEFT JOIN oi ON i.batch_id = oi.batch_id AND i.product_id = oi.product_id AND i.packing_type = oi.packing_type AND i.packing_size = oi.packing_size AND i.uom = oi.uom
54
+ WHERE i.status = 'STORED'
55
+ GROUP by
56
+ i.domain_id,
57
+ i.bizplace_id,
58
+ i.product_id,
59
+ i.packing_type,
60
+ i.packing_size,
61
+ i.uom
62
+ union all
63
+ -- BUNDLE ITEM INVENTORY QUERY
64
+ SELECT
65
+ pbs.domain_id as "domainId",
66
+ pbs.bizplace_id as "bizplaceId",
67
+ pb.packing_type as "packingType",
68
+ pb.packing_size as "packingSize",
69
+ 'UNIT' AS "uom",
70
+ null as "productId",
71
+ pb.id AS "productBundleId",
72
+ COALESCE(MIN(FLOOR(pbs."availableQty")),0) AS "remainQty",
73
+ COALESCE(MIN(FLOOR(pbs."availableUomValue")),0) AS "remainUomValue",
74
+ COALESCE(MIN(FLOOR(pbs."qty")), 0::double precision) AS "qty",
75
+ COALESCE(MIN(FLOOR(pbs."uomValue")), 0::double precision) AS "uomValue",
76
+ 'BUNDLE' AS "groupType"
77
+ FROM product_bundles pb
78
+ INNER JOIN (
79
+ SELECT i.domain_id, i.bizplace_id, pbs.product_id, pbs.product_bundle_id, min(pbs.bundle_qty),
80
+ (SUM(COALESCE(i.qty, 0)) - SUM(COALESCE(i.locked_qty, 0)) - MAX(COALESCE(oi.release_qty, 0))) / min(pbs.bundle_qty) AS "availableQty",
81
+ (SUM(COALESCE(i.uom_value, 0)) - SUM(COALESCE(i.locked_uom_value, 0)) - MAX(COALESCE(oi.release_uom_value, 0))) / min(pbs.bundle_qty) AS "availableUomValue",
82
+ (sum(COALESCE(i.qty, 0::double precision))) / min(pbs.bundle_qty)::double precision AS "qty",
83
+ (sum(COALESCE(i.uom_value, 0::double precision))) / min(pbs.bundle_qty)::double precision AS "uomValue"
84
+ FROM product_bundle_settings pbs
85
+ LEFT JOIN inventories i ON i.product_id = pbs.product_id AND i.status = 'STORED'
86
+ INNER JOIN locations l ON i.location_id = l.id AND i.domain_id = l.domain_id AND l.type NOT IN ('QUARANTINE', 'RESERVE')
87
+ LEFT JOIN oi ON oi.product_id = i.product_id
88
+ GROUP by
89
+ i.domain_id,
90
+ i.bizplace_id,
91
+ pbs.product_id,
92
+ pbs.product_bundle_id
93
+ ) pbs ON pbs.product_bundle_id = pb.id
94
+ GROUP BY
95
+ pbs.domain_id,
96
+ pbs.bizplace_id,
97
+ pb.packing_type,
98
+ pb.packing_size,
99
+ pb.name,
100
+ pb.sku,
101
+ pb.id
102
+ )
103
+ AS src
104
+ inner join domains d on d.id = src."domainId"
105
+ inner join bizplaces b on b.id = src."bizplaceId"
106
+ where src."remainQty" >= 0
107
+ and src."qty" > 0
108
+ order by src."domainId"
109
+ `
110
+ })
111
+
112
+ export class WarehouseBizplaceOnhandInventory {
113
+ @ViewColumn()
114
+ domainName: string
115
+
116
+ @ViewColumn()
117
+ bizplaceName: string
118
+
119
+ @ViewColumn()
120
+ domainId: string
121
+
122
+ @ViewColumn()
123
+ bizplaceId: string
124
+
125
+ @ViewColumn()
126
+ packingType: string
127
+
128
+ @ViewColumn()
129
+ packingSize: number
130
+
131
+ @ViewColumn()
132
+ uom: string
133
+
134
+ @ViewColumn()
135
+ productId: string
136
+
137
+ @ViewColumn()
138
+ productBundleId: string
139
+
140
+ @ViewColumn()
141
+ remainQty: number
142
+
143
+ @ViewColumn()
144
+ remainUomValue: number
145
+
146
+ @ViewColumn()
147
+ groupType: string
148
+ }
@@ -0,0 +1,106 @@
1
+ import { User } from '@things-factory/auth-base'
2
+ import { Bizplace, Worker } from '@things-factory/biz-base'
3
+ import { OrderInventory, OrderProduct, OrderVas } from '@things-factory/sales-base'
4
+ import { Domain } from '@things-factory/shell'
5
+ import { Location } from '@things-factory/warehouse-base'
6
+ import { Column, CreateDateColumn, Entity, Index, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'
7
+ import { Worksheet } from './worksheet'
8
+
9
+ @Entity()
10
+ @Index(
11
+ 'ix_worksheet-detail_0',
12
+ (worksheetDetail: WorksheetDetail) => [worksheetDetail.domain, worksheetDetail.bizplace, worksheetDetail.name],
13
+ { unique: true }
14
+ )
15
+ @Index(
16
+ 'ix_worksheet-detail_1',
17
+ (worksheetDetail: WorksheetDetail) => [worksheetDetail.targetInventory]
18
+ )
19
+ @Index(
20
+ 'ix_worksheet-detail_2',
21
+ (worksheetDetail: WorksheetDetail) => [worksheetDetail.id],
22
+ { unique: true }
23
+ )
24
+ export class WorksheetDetail {
25
+ @PrimaryGeneratedColumn('uuid')
26
+ id: string
27
+
28
+ @ManyToOne(type => Domain)
29
+ domain: Domain
30
+
31
+ @ManyToOne(type => Bizplace)
32
+ bizplace: Bizplace
33
+
34
+ @Column()
35
+ name: string
36
+
37
+ @Column({
38
+ nullable: true
39
+ })
40
+ description: string
41
+
42
+ /**
43
+ * @description Sequance for VAS Order
44
+ */
45
+ @Column({
46
+ nullable: true,
47
+ type: 'smallint',
48
+ default: 0
49
+ })
50
+ seq: number
51
+
52
+ @Column()
53
+ type: string
54
+
55
+ @Column()
56
+ status: string
57
+
58
+ @ManyToOne(type => Worksheet, {
59
+ nullable: false
60
+ })
61
+ worksheet: Worksheet
62
+
63
+ @ManyToOne(type => Worker)
64
+ worker: Worker
65
+
66
+ @ManyToOne(type => OrderProduct)
67
+ targetProduct: OrderProduct
68
+
69
+ @ManyToOne(type => OrderVas)
70
+ targetVas: OrderVas
71
+
72
+ @ManyToOne(type => OrderInventory)
73
+ targetInventory: OrderInventory
74
+
75
+ @ManyToOne(type => Location)
76
+ fromLocation: Location
77
+
78
+ @ManyToOne(type => Location)
79
+ toLocation: Location
80
+
81
+ @Column({
82
+ nullable: true
83
+ })
84
+ remark: string
85
+
86
+ @Column({
87
+ nullable: true
88
+ })
89
+ issue: string
90
+
91
+ @ManyToOne(type => User, {
92
+ nullable: true
93
+ })
94
+ creator: User
95
+
96
+ @ManyToOne(type => User, {
97
+ nullable: true
98
+ })
99
+ updater: User
100
+
101
+ @CreateDateColumn()
102
+ createdAt: Date
103
+
104
+ @UpdateDateColumn()
105
+ updatedAt: Date
106
+ }
@@ -0,0 +1,34 @@
1
+ import { Domain } from '@things-factory/shell'
2
+ import { Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'
3
+ import { Worksheet } from './worksheet'
4
+
5
+ @Entity()
6
+ @Index('ix_worksheet-movement_0', (worksheetMovement: WorksheetMovement) => [worksheetMovement.domain], {
7
+ unique: true
8
+ })
9
+ export class WorksheetMovement {
10
+ @PrimaryGeneratedColumn('uuid')
11
+ id: string
12
+
13
+ @ManyToOne(type => Domain)
14
+ domain: Domain
15
+
16
+ @Column({
17
+ nullable: true
18
+ })
19
+ date: Date
20
+
21
+ @ManyToOne(type => Worksheet)
22
+ worksheet: Worksheet
23
+
24
+ @Column({ nullable: true })
25
+ startTime: Date
26
+
27
+ @Column({ nullable: true })
28
+ endTime: Date
29
+
30
+ @Column({
31
+ nullable: true
32
+ })
33
+ description: string
34
+ }
@@ -0,0 +1,100 @@
1
+ import { User } from '@things-factory/auth-base'
2
+ import { Bizplace } from '@things-factory/biz-base'
3
+ import {
4
+ ArrivalNotice,
5
+ InventoryCheck,
6
+ ReleaseGood,
7
+ ShippingOrder,
8
+ VasOrder,
9
+ ReturnOrder
10
+ } from '@things-factory/sales-base'
11
+ import { Domain } from '@things-factory/shell'
12
+ import { Location } from '@things-factory/warehouse-base'
13
+ import {
14
+ Column,
15
+ CreateDateColumn,
16
+ Entity,
17
+ Index,
18
+ ManyToOne,
19
+ OneToMany,
20
+ PrimaryGeneratedColumn,
21
+ UpdateDateColumn
22
+ } from 'typeorm'
23
+ import { WorksheetDetail } from './worksheet-detail'
24
+
25
+ @Entity()
26
+ @Index('ix_worksheet_0', (worksheet: Worksheet) => [worksheet.domain, worksheet.bizplace, worksheet.name], {
27
+ unique: true
28
+ })
29
+ @Index('ix_worksheet_1', (worksheet: Worksheet) => [worksheet.arrivalNotice, worksheet.type])
30
+ @Index('ix_worksheet_2', (worksheet: Worksheet) => [worksheet.releaseGood, worksheet.type])
31
+ export class Worksheet {
32
+ @PrimaryGeneratedColumn('uuid')
33
+ id: string
34
+
35
+ @ManyToOne(type => Domain)
36
+ domain: Domain
37
+
38
+ @ManyToOne(type => Bizplace)
39
+ bizplace: Bizplace
40
+
41
+ @ManyToOne(type => ArrivalNotice)
42
+ arrivalNotice: ArrivalNotice
43
+
44
+ @ManyToOne(type => ReleaseGood)
45
+ releaseGood: ReleaseGood
46
+
47
+ @ManyToOne(type => ReturnOrder)
48
+ returnOrder: ReturnOrder
49
+
50
+ @ManyToOne(type => InventoryCheck)
51
+ inventoryCheck: InventoryCheck
52
+
53
+ @ManyToOne(type => VasOrder)
54
+ vasOrder: VasOrder
55
+
56
+ @ManyToOne(type => ShippingOrder)
57
+ shippingOrder: ShippingOrder
58
+
59
+ @ManyToOne(type => Location)
60
+ bufferLocation: Location
61
+
62
+ @Column()
63
+ name: string
64
+
65
+ @Column({ nullable: true })
66
+ description: string
67
+
68
+ @Column({ nullable: true })
69
+ taskNo: string
70
+
71
+ @Column()
72
+ type: string
73
+
74
+ @OneToMany(type => WorksheetDetail, worksheetDetail => worksheetDetail.worksheet)
75
+ worksheetDetails: WorksheetDetail[]
76
+
77
+ @Column()
78
+ status: string
79
+
80
+ @ManyToOne(type => User)
81
+ assignee: User
82
+
83
+ @Column({ nullable: true })
84
+ startedAt: Date
85
+
86
+ @Column({ nullable: true })
87
+ endedAt: Date
88
+
89
+ @ManyToOne(type => User, { nullable: true })
90
+ creator: User
91
+
92
+ @ManyToOne(type => User, { nullable: true })
93
+ updater: User
94
+
95
+ @CreateDateColumn()
96
+ createdAt: Date
97
+
98
+ @UpdateDateColumn()
99
+ updatedAt: Date
100
+ }
@@ -0,0 +1,7 @@
1
+ import * as typeDefs from './types'
2
+ import * as resolvers from './resolvers'
3
+
4
+ export const schema = {
5
+ typeDefs,
6
+ resolvers
7
+ }
@@ -0,0 +1,8 @@
1
+ import * as Worksheet from './worksheet'
2
+ import * as WorksheetDetail from './worksheet-detail'
3
+ import * as WorksheetMovement from './worksheet-movement'
4
+ import * as Pallet from './pallet'
5
+
6
+ export const queries = [Worksheet.Query, WorksheetDetail.Query, WorksheetMovement.Query]
7
+
8
+ export const mutations = [Worksheet.Mutation, WorksheetDetail.Mutation, WorksheetMovement.Mutation, Pallet.Mutation]
@@ -0,0 +1,7 @@
1
+ import { palletOutbound } from './pallet-outbound'
2
+
3
+ export const Mutation = {
4
+ ...palletOutbound
5
+ }
6
+
7
+ export const Query = {}
@@ -0,0 +1,92 @@
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 { ReleaseGood } from '@things-factory/sales-base'
6
+ import { Domain } from '@things-factory/shell'
7
+ import { Pallet, PalletHistory } from '@things-factory/warehouse-base'
8
+
9
+ export const palletOutbound = {
10
+ async palletOutbound(_: any, { refOrderNo, patches }, context: ResolverContext) {
11
+ const { tx, domain, user, bizplace } = context.state
12
+
13
+ const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
14
+ where: { name: refOrderNo },
15
+ relations: ['bizplace']
16
+ })
17
+
18
+ let palletPatches: Pallet[] =
19
+ patches.length > 0
20
+ ? await tx.getRepository(Pallet).find({
21
+ where: { id: In(patches.map(pallet => pallet.id)) },
22
+ relations: ['owner', 'holder', 'domain', 'creator', 'updater']
23
+ })
24
+ : []
25
+
26
+ let releasedPallets: Pallet[] = await tx.getRepository(Pallet).find({
27
+ where: { refOrderNo: refOrderNo },
28
+ relations: ['owner', 'holder', 'domain', 'creator', 'updater']
29
+ })
30
+
31
+ // get added pallets
32
+ let addedPallets: Pallet[] = palletPatches
33
+ .filter(e => e.refOrderNo == null)
34
+ .map(pallet => {
35
+ return {
36
+ ...pallet,
37
+ holder: releaseGood.bizplace,
38
+ refOrderNo: refOrderNo,
39
+ seq: pallet.seq + 1
40
+ }
41
+ })
42
+
43
+ // get removed pallets
44
+ let removedPallets: Pallet[] = releasedPallets
45
+ .filter(e => !palletPatches.find(patch => patch.id == e.id))
46
+ .map(pallet => {
47
+ return {
48
+ ...pallet,
49
+ holder: pallet.owner,
50
+ refOrderNo: null,
51
+ seq: pallet.seq - 1
52
+ }
53
+ })
54
+
55
+ // Add into pallet history for outbound
56
+ await Promise.all(
57
+ addedPallets.map(async pallet => {
58
+ let newHistory = {
59
+ ...pallet,
60
+ pallet: pallet,
61
+ domain: domain,
62
+ creator: user,
63
+ updater: user,
64
+ transactionType: 'OUTBOUND'
65
+ }
66
+ delete newHistory.id
67
+
68
+ await tx.getRepository(PalletHistory).save({
69
+ ...newHistory
70
+ })
71
+ })
72
+ )
73
+
74
+ // Roll back pallet history
75
+ await Promise.all(
76
+ removedPallets.map(async item => {
77
+ tx.getRepository(PalletHistory).delete({ name: item.name, seq: item.seq + 1 })
78
+ })
79
+ )
80
+
81
+ // Update Pallet data
82
+ await Promise.all(
83
+ [...addedPallets, ...removedPallets].map(async item => {
84
+ await tx.getRepository(Pallet).save({
85
+ ...item
86
+ })
87
+ })
88
+ )
89
+
90
+ return true
91
+ }
92
+ }
@@ -0,0 +1,137 @@
1
+ import { SelectQueryBuilder } from 'typeorm'
2
+
3
+ import { ORDER_INVENTORY_STATUS } from '@things-factory/sales-base'
4
+ import { getRepository } from '@things-factory/shell'
5
+ import { InventoryChange } from '@things-factory/warehouse-base'
6
+
7
+ import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
8
+ import { Worksheet, WorksheetDetail } from '../../../entities'
9
+
10
+ export const batchPickingWorksheetResolver = {
11
+ async batchPickingWorksheet(_: any, { taskNo, locationSortingRules }, context: ResolverContext) {
12
+ const { domain } = context.state
13
+ const worksheet: Worksheet = await getRepository(Worksheet).findOne({
14
+ where: {
15
+ domain: { id: domain.id },
16
+ taskNo,
17
+ type: WORKSHEET_TYPE.BATCH_PICKING,
18
+ status: WORKSHEET_STATUS.EXECUTING
19
+ },
20
+ relations: ['bizplace', 'bizplace.domain']
21
+ })
22
+
23
+ if (!worksheet) throw new Error(`Couldn't find picking worksheet - (${taskNo})`)
24
+
25
+ const qb: SelectQueryBuilder<WorksheetDetail> = getRepository(WorksheetDetail).createQueryBuilder('WSD')
26
+ qb.select('INV.id', 'inventoryId')
27
+ .addSelect('SUM(T_INV.releaseQty)', 'releaseQty')
28
+ .addSelect('SUM(T_INV.pickedQty)', 'pickedQty')
29
+ .addSelect('"INV".pallet_id', 'palletId')
30
+ .addSelect('"INV".carton_id', 'cartonId')
31
+ .addSelect('"INV".expiration_date', 'expirationDate')
32
+ .addSelect('"INV".batch_id', 'batchId')
33
+ .addSelect('"PROD".id', 'productId')
34
+ .addSelect('"PROD".name', 'productName')
35
+ .addSelect('"PROD".sku', 'productSku')
36
+ .addSelect('"PROD".description', 'productDescription')
37
+ .addSelect('"INV".qty', 'qty')
38
+ .addSelect('"INV".packing_type', 'packingType')
39
+ .addSelect('"INV".packing_size', 'packingSize')
40
+ .addSelect('"T_INV".batch_id', 'targetBatchId')
41
+ .addSelect('"T_INV".packing_type', 'targetPackingType')
42
+ .addSelect('LOC.name', 'locationName')
43
+ .addSelect('LOC.zone', 'zone')
44
+ .addSelect('LOC.row', 'row')
45
+ .addSelect('LOC.column', 'column')
46
+ .addSelect('LOC.shelf', 'shelf')
47
+ .addSelect('BIN_LOC.name', 'binLocationName')
48
+ .addSelect('WSD.status', 'status')
49
+ .leftJoin('WSD.targetInventory', 'T_INV')
50
+ .leftJoin('T_INV.inventory', 'INV')
51
+ .leftJoin('T_INV.product', 'PROD')
52
+ .leftJoin('T_INV.binLocation', 'BIN_LOC')
53
+ .leftJoin('INV.location', 'LOC')
54
+ .where('"WSD"."worksheet_id" = :worksheetId', { worksheetId: worksheet.id })
55
+ .andWhere('"WSD"."status" != :status', { status: WORKSHEET_STATUS.REPLACED })
56
+ .andWhere('"T_INV"."status" != :t_invstatus', { t_invstatus: ORDER_INVENTORY_STATUS.CANCELLED })
57
+ .groupBy('"INV".id')
58
+ .addGroupBy('"INV".pallet_id')
59
+ .addGroupBy('"INV".carton_id')
60
+ .addGroupBy('"INV".expiration_date')
61
+ .addGroupBy('"INV".batch_id')
62
+ .addGroupBy('"INV".qty')
63
+ .addGroupBy('"INV".packing_type')
64
+ .addGroupBy('"INV".packing_size')
65
+ .addGroupBy('"PROD".id')
66
+ .addGroupBy('"PROD".name')
67
+ .addGroupBy('"PROD".sku')
68
+ .addGroupBy('"PROD".description')
69
+ .addGroupBy('"T_INV".batch_id')
70
+ .addGroupBy('"T_INV".packing_type')
71
+ .addGroupBy('BIN_LOC.name')
72
+ .addGroupBy('LOC.name')
73
+ .addGroupBy('LOC.zone')
74
+ .addGroupBy('LOC.column')
75
+ .addGroupBy('LOC.row')
76
+ .addGroupBy('LOC.shelf')
77
+ .addGroupBy('WSD.status')
78
+
79
+ if (locationSortingRules?.length > 0) {
80
+ locationSortingRules.forEach((rule: { name: string; desc: boolean }) => {
81
+ qb.addOrderBy(`LOC.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
82
+ })
83
+ }
84
+
85
+ const items: any[] = await qb.getRawMany()
86
+
87
+ return {
88
+ worksheetInfo: {
89
+ startedAt: worksheet.startedAt,
90
+ bizplaceName: worksheet.bizplace.name,
91
+ partnerDomainId: worksheet.bizplace?.domain.id
92
+ },
93
+ worksheetDetailInfos: items.map(async (item: any) => {
94
+ const inventoryChangesCount: number = await getRepository(InventoryChange).count({
95
+ where: {
96
+ inventory: { id: item.inventoryId },
97
+ status: 'PENDING',
98
+ transactionType: 'MISSING'
99
+ },
100
+ relations: ['inventory', 'product']
101
+ })
102
+
103
+ return {
104
+ palletId: item?.palletId,
105
+ cartonId: item?.cartonId,
106
+ batchId: item?.batchId,
107
+ product: {
108
+ id: item?.productId,
109
+ name: item?.productName,
110
+ description: item?.productDescription,
111
+ sku: item?.productSku
112
+ },
113
+ qty: item?.qty,
114
+ releaseQty: item.releaseQty,
115
+ hasMissingInventoryChanges: inventoryChangesCount > 0 ? true : false,
116
+ status: item.status,
117
+ pickedQty: item.pickedQty,
118
+ packingType: item?.packingType,
119
+ packingSize: item?.packingSize,
120
+ expirationDate: item?.expirationDate,
121
+ location: { name: item?.locationName },
122
+ binLocation: { name: item?.binLocationName },
123
+ relatedOrderInv: {
124
+ batchId: item?.targetBatchId,
125
+ packingType: item?.targetPackingType,
126
+ product: {
127
+ id: item?.productId,
128
+ name: item?.productName,
129
+ description: item?.productDescription,
130
+ sku: item?.productSku
131
+ }
132
+ }
133
+ }
134
+ })
135
+ }
136
+ }
137
+ }
@@ -0,0 +1,20 @@
1
+ import { DraftReleaseGood, ORDER_STATUS } from '@things-factory/sales-base'
2
+
3
+ export const cancelDraftReleaseOrder = {
4
+ async cancelDraftReleaseOrder(_: any, { name }, context: ResolverContext) {
5
+ const { tx, domain, user } = context.state
6
+
7
+ const foundDRO: DraftReleaseGood = await tx.getRepository(DraftReleaseGood).findOne({
8
+ where: { domain: { id: domain.id }, name }
9
+ })
10
+
11
+ if (foundDRO) {
12
+ await tx.getRepository(DraftReleaseGood).save({
13
+ ...foundDRO,
14
+ status: ORDER_STATUS.CANCELLED,
15
+ updater: user
16
+ })
17
+ }
18
+ return
19
+ }
20
+ }