@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,80 @@
1
+ import { renderElcclGRN } from './controllers/render-elccl-grn'
2
+ import { renderGRN } from './controllers/render-grn'
3
+ import { renderJobSheet } from './controllers/render-job-sheet'
4
+ import { renderKimedaGRN } from './controllers/render-kimeda-grn'
5
+ import { renderManifest } from './controllers/render-manifest'
6
+ import { renderManualDO } from './controllers/render-manual-do'
7
+ import { renderOrientageDO } from './controllers/render-orientage-do'
8
+ import { renderOrientageGRN } from './controllers/render-orientage-grn'
9
+ import { renderRODO } from './controllers/render-ro-do'
10
+ import { renderSeebuuGRN } from './controllers/render-seebuu-grn'
11
+ import { renderFmGRN } from './controllers/render-fm-grn'
12
+ import { renderInvoices } from './controllers/render-invoices'
13
+ import { renderPO } from './controllers/render-po'
14
+
15
+
16
+ process.on('bootstrap-module-domain-private-route' as any, (app, routes) => {
17
+ routes.get('/view_document_ro_do/:doNo', async (context, next) => {
18
+ context.body = await renderRODO(context.params, context)
19
+ })
20
+
21
+ routes.get('/view_document_orientage_do/:doNo', async (context, next) => {
22
+ context.body = await renderOrientageDO(context.params, context)
23
+ })
24
+
25
+ routes.get('/view_document_manual_do/:doNo', async (context, next) => {
26
+ context.body = await renderManualDO(context.params, context)
27
+ })
28
+
29
+ routes.get('/view_elccl_grn/:grnNo', async (context, next) => {
30
+ context.body = await renderElcclGRN(context.params, context)
31
+ })
32
+
33
+ routes.get('/view_grn/:grnNo/:timezoneOffSet', async (context, next) => {
34
+ context.body = await renderGRN(context.params, context)
35
+ })
36
+
37
+ routes.get('/view_kimeda_grn/:grnNo/:timezoneOffSet', async (context, next) => {
38
+ context.body = await renderKimedaGRN(context.params, context)
39
+ })
40
+
41
+ routes.get('/view_orientage_grn/:grnNo', async (context, next) => {
42
+ context.body = await renderOrientageGRN(context.params, context)
43
+ })
44
+
45
+ routes.get('/view_seebuu_grn/:grnNo', async (context, next) => {
46
+ context.body = await renderSeebuuGRN(context.params, context)
47
+ })
48
+
49
+ routes.get('/view_fm_grn/:grnNo/:timezoneOffSet', async (context, next) => {
50
+ context.body = await renderFmGRN(context.params, context)
51
+ })
52
+
53
+ routes.get('/view_job_sheet/:ganNo/:timezoneOffSet', async (context, next) => {
54
+ context.body = await renderJobSheet(context.params, context)
55
+ })
56
+
57
+ routes.get('/view_manifest/:manifestNo', async (context, next) => {
58
+ context.body = await renderManifest(context.params, context)
59
+ })
60
+
61
+ routes.post('/view_invoices/:timezoneOffSet', async (context, next) => {
62
+ let req = context.request.body || {}
63
+ let timezoneOffSet = context.params.timezoneOffSet || 0
64
+
65
+ let data = await renderInvoices({ req, timezoneOffSet }, context)
66
+
67
+ context.type = 'application/json'
68
+ context.body = data
69
+ })
70
+
71
+ routes.post('/view_purchase_orders/:timezoneOffSet', async (context, next) => {
72
+ let req = context.request.body || {}
73
+ let timezoneOffSet = context.params.timezoneOffSet || 0
74
+
75
+ let data = await renderPO({ req, timezoneOffSet }, context)
76
+
77
+ context.type = 'application/json'
78
+ context.body = data
79
+ })
80
+ })
@@ -0,0 +1,54 @@
1
+ export class DateGenerator {
2
+ static generateDate() {
3
+ const today = new Date()
4
+ const year = today.getFullYear()
5
+ const month = today.getMonth()
6
+ const day = today.getDate()
7
+
8
+ const yy = String(year).substr(String(year).length - 2)
9
+ const mm = String(month + 1).padStart(2, '0')
10
+ const dd = String(day).padStart(2, '0')
11
+
12
+ return yy + mm + dd
13
+ }
14
+ }
15
+
16
+ export class DateTimeConverter {
17
+ static date(dateTime) {
18
+ let unloadDate = ''
19
+ if (dateTime) {
20
+ const unloadDateTime: Date = new Date(dateTime)
21
+ var year = unloadDateTime.getFullYear()
22
+
23
+ var month = (1 + unloadDateTime.getMonth()).toString()
24
+ month = month.length > 1 ? month : '0' + month
25
+
26
+ var day = unloadDateTime.getDate().toString()
27
+ day = day.length > 1 ? day : '0' + day
28
+
29
+ unloadDate = day + '-' + month + '-' + year
30
+ }
31
+ return unloadDate
32
+ }
33
+
34
+ static datetime(dateTime, timezone) {
35
+ let unloadDate = ''
36
+ if (dateTime) {
37
+ const datetime = Number(dateTime)
38
+ const timezoneOffset = timezone * 60000
39
+ const newUnloadDate = new Date(datetime - timezoneOffset).toISOString().slice(0, -1)
40
+
41
+ var dateTimeParts: any = newUnloadDate.split('T')
42
+
43
+ //handle date parts
44
+ var dateParts = dateTimeParts[0].split('-')
45
+ var newDate = DateTimeConverter.date(dateParts)
46
+
47
+ //handle time part
48
+ var timeParts = dateTimeParts[1].slice(0, -7)
49
+
50
+ unloadDate = newDate + ' ' + timeParts
51
+ }
52
+ return unloadDate
53
+ }
54
+ }
@@ -0,0 +1,4 @@
1
+ export * from './inventory-util'
2
+ export * from './worksheet-no-generator'
3
+ export * from './datetime-util'
4
+ export * from './worksheet-util'
@@ -0,0 +1,390 @@
1
+ import { EntityManager, Repository } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Bizplace } from '@things-factory/biz-base'
5
+ import { Product } from '@things-factory/product-base'
6
+ import { Domain, getRepository } from '@things-factory/shell'
7
+ import {
8
+ Inventory,
9
+ INVENTORY_STATUS,
10
+ InventoryHistory,
11
+ InventoryNoGenerator,
12
+ Location,
13
+ LOCATION_STATUS,
14
+ LOCATION_TYPE
15
+ } from '@things-factory/warehouse-base'
16
+
17
+ /**
18
+ * @description It will insert new record into inventory histories table.
19
+ * seq will be calculated based on number of records for one specific pallet id (provided by inventory object)
20
+ */
21
+ export async function generateInventoryHistory(
22
+ inventory: Inventory,
23
+ refOrder: any,
24
+ transactionType: string,
25
+ qty: number = 0,
26
+ uomValue: number = 0,
27
+ user: User,
28
+ trxMgr?: EntityManager,
29
+ targetInventory: Inventory = {} as any
30
+ ): Promise<InventoryHistory> {
31
+ const invHistoryRepo: Repository<InventoryHistory> =
32
+ trxMgr?.getRepository(InventoryHistory) || getRepository(InventoryHistory)
33
+ const invRepo: Repository<Inventory> = trxMgr?.getRepository(Inventory) || getRepository(Inventory)
34
+
35
+ if (!inventory?.id) throw new Error(`Can't find out ID of inventory.`)
36
+ if (!refOrder?.id || !refOrder.name) throw new Error(`Can't find out ID or Name of Reference Order`)
37
+ if (
38
+ !inventory?.domain ||
39
+ !inventory?.bizplace ||
40
+ !inventory?.product?.id ||
41
+ !inventory?.warehouse?.id ||
42
+ !inventory?.location?.id
43
+ ) {
44
+ inventory = await invRepo.findOne({
45
+ where: { id: inventory.id },
46
+ relations: ['domain', 'bizplace', 'product', 'warehouse', 'location']
47
+ })
48
+ }
49
+
50
+ const domain: Domain = inventory.domain
51
+ const location: Location = inventory.location
52
+
53
+ const seq: number = await invHistoryRepo.countBy({
54
+ domain: { id: inventory.domain.id },
55
+ palletId: inventory.palletId
56
+ })
57
+ let openingQty: number = 0
58
+ let openingUomValue: number = 0
59
+
60
+ if (seq) {
61
+ const lastInvHistory: InventoryHistory = await invHistoryRepo.findOneBy({
62
+ domain: { id: inventory.domain.id },
63
+ palletId: inventory.palletId,
64
+ seq: seq - 1
65
+ })
66
+
67
+ openingQty = lastInvHistory.openingQty + lastInvHistory.qty
68
+ openingUomValue = lastInvHistory.openingUomValue + lastInvHistory.uomValue
69
+ }
70
+
71
+ if (transactionType == 'PICKING' || transactionType == 'UNLOADING') {
72
+ // @ts-ignore
73
+ const [findSameOrderHistory, total]: InventoryHistory = await invHistoryRepo.findAndCountBy({
74
+ domain: { id: inventory.domain.id },
75
+ palletId: inventory.palletId,
76
+ refOrderId: refOrder.id
77
+ })
78
+
79
+ if (findSameOrderHistory) {
80
+ let prevTotalQty = 0
81
+ let prevTotalUomValue = 0
82
+ for (let oh of findSameOrderHistory) {
83
+ prevTotalQty += oh.qty
84
+ prevTotalUomValue += oh.uomValue
85
+ }
86
+ qty -= prevTotalQty
87
+ uomValue -= prevTotalUomValue
88
+ }
89
+ }
90
+
91
+ let inventoryHistory: InventoryHistory = new InventoryHistory()
92
+ inventoryHistory.name = InventoryNoGenerator.inventoryHistoryName()
93
+ inventoryHistory.description = inventory.description
94
+ inventoryHistory.seq = seq
95
+ inventoryHistory.palletId = inventory.palletId
96
+ inventoryHistory.cartonId = inventory.cartonId
97
+ inventoryHistory.batchId = inventory.batchId
98
+ inventoryHistory.batchIdRef = inventory.batchIdRef
99
+ inventoryHistory.status = inventory.status
100
+ inventoryHistory.transactionType = transactionType
101
+ inventoryHistory.refOrderId = refOrder?.id || null
102
+ inventoryHistory.orderNo = refOrder?.name || null
103
+ inventoryHistory.orderRefNo = refOrder?.refNo || null
104
+ inventoryHistory.inventory = inventory
105
+ ;(inventoryHistory as any).targetInventory = targetInventory as any
106
+ inventoryHistory.product = inventory.product
107
+ inventoryHistory.reusablePallet = inventory.reusablePallet
108
+ inventoryHistory.zone = inventory.zone
109
+ inventoryHistory.warehouse = inventory.warehouse
110
+ inventoryHistory.location = inventory.location
111
+ inventoryHistory.expirationDate = inventory.expirationDate
112
+ inventoryHistory.packingType = inventory.packingType
113
+ inventoryHistory.packingSize = inventory.packingSize
114
+ inventoryHistory.uom = inventory.uom
115
+ inventoryHistory.qty = qty
116
+ inventoryHistory.openingQty = openingQty
117
+ inventoryHistory.uomValue = uomValue
118
+ inventoryHistory.openingUomValue = openingUomValue
119
+ inventoryHistory.unitCost = inventory.unitCost
120
+ inventoryHistory.domain = inventory.domain
121
+ inventoryHistory.bizplace = inventory.bizplace
122
+ inventoryHistory.creator = user
123
+ inventoryHistory.updater = user
124
+ inventoryHistory.auxInfo3 = inventory.auxInfo3
125
+
126
+ inventoryHistory = await invHistoryRepo.save(inventoryHistory)
127
+
128
+ if (inventory.lastSeq !== seq) {
129
+ await invRepo.save({
130
+ id: inventory.id,
131
+ lastSeq: inventoryHistory.seq,
132
+ updater: user
133
+ })
134
+ }
135
+
136
+ await switchLocationStatus(domain, location, user, trxMgr)
137
+ return inventoryHistory
138
+ }
139
+
140
+ /**
141
+ * @description: Check location emptiness and update status of location
142
+ * @param domain
143
+ * @param location
144
+ * @param updater
145
+ * @param trxMgr
146
+ */
147
+ export async function switchLocationStatus(
148
+ domain: Domain,
149
+ location: Location,
150
+ updater: User,
151
+ trxMgr?: EntityManager
152
+ ): Promise<Location> {
153
+ const invRepo: Repository<Inventory> = trxMgr?.getRepository(Inventory) || getRepository(Inventory)
154
+ const locationRepo: Repository<Location> = trxMgr?.getRepository(Location) || getRepository(Location)
155
+ const allocatedItemsCnt: number = await invRepo.countBy({
156
+ domain: { id: domain.id },
157
+ status: INVENTORY_STATUS.STORED,
158
+ location: { id: location.id }
159
+ })
160
+
161
+ if (!allocatedItemsCnt && location.status !== LOCATION_STATUS.EMPTY) {
162
+ location = await locationRepo.save({
163
+ ...location,
164
+ status: LOCATION_STATUS.EMPTY,
165
+ updater
166
+ })
167
+ } else if (allocatedItemsCnt && location.status === LOCATION_STATUS.EMPTY) {
168
+ location = await locationRepo.save({
169
+ ...location,
170
+ status: LOCATION_STATUS.OCCUPIED,
171
+ updater
172
+ })
173
+ }
174
+
175
+ return location
176
+ }
177
+
178
+ export async function checkPalletDuplication(
179
+ domain: Domain,
180
+ bizplace: Bizplace,
181
+ palletId: string,
182
+ trxMgr?: EntityManager
183
+ ): Promise<boolean> {
184
+ const invRepo: Repository<Inventory> = trxMgr?.getRepository(Inventory) || getRepository(Inventory)
185
+ const duplicatedPalletCnt: number = await invRepo.countBy({
186
+ domain: { id: domain.id },
187
+ bizplace,
188
+ palletId
189
+ })
190
+
191
+ return Boolean(duplicatedPalletCnt)
192
+ }
193
+
194
+ /**
195
+ * @description Check whether inventory is same with passed conditions
196
+ * @param {Domain} domain
197
+ * @param {Bizplace} bizplace
198
+ * @param {String} palletId
199
+ * @param {String} batchId
200
+ * @param {String | Product} product
201
+ * @param {String} packingType
202
+ * @param {EntityManager} trxMgr
203
+ */
204
+ export async function checkPalletIdenticallity(
205
+ domain: Domain,
206
+ bizplace: Bizplace,
207
+ palletId: string,
208
+ batchId: string,
209
+ product: string | Product,
210
+ packingType: string,
211
+ trxMgr?: EntityManager
212
+ ): Promise<{ identicallity: boolean; errorMessage?: string }> {
213
+ const productRepo: Repository<Product> = trxMgr?.getRepository(Product) || getRepository(Product)
214
+ const invRepo: Repository<Inventory> = trxMgr?.getRepository(Inventory) || getRepository(Inventory)
215
+
216
+ if (typeof product === 'string') {
217
+ const foundProduct: Product = await productRepo.findOneBy({ id: product })
218
+ if (!foundProduct) throw new Error(`Failed to find product with ${product}`)
219
+ product = foundProduct
220
+ }
221
+
222
+ const inv: Inventory = await invRepo.findOne({
223
+ where: { domain: { id: domain.id }, bizplace: { id: bizplace.id }, palletId },
224
+ relations: ['product']
225
+ })
226
+
227
+ if (batchId !== inv.batchId) return { identicallity: false, errorMessage: `Batch ID is not matched with ${batchId}` }
228
+
229
+ if (product?.id !== inv?.product?.id)
230
+ return { identicallity: false, errorMessage: `Product is not matched with ${product.name}` }
231
+
232
+ if (packingType !== inv.packingType)
233
+ return { identicallity: false, errorMessage: `Packing Type is not matched with ${packingType}` }
234
+
235
+ return { identicallity: true }
236
+ }
237
+
238
+ /**
239
+ * @description: Get inventory based on picking strategy and sorting rule
240
+ * @param { worksheetId, batchId, bizplaceId, productId, packingType, pickingStrategy, locationSortingRules }
241
+ * @param trxMgr
242
+ */
243
+ export async function inventoriesByStrategy(
244
+ { worksheetId, batchId, bizplaceId, productId, packingType, packingSize, uom, pickingStrategy, locationSortingRules },
245
+ domain: Domain,
246
+ trxMgr: EntityManager
247
+ ) {
248
+ const qb = await trxMgr.getRepository(Inventory).createQueryBuilder('INV')
249
+ qb.innerJoinAndSelect('INV.product', 'PROD')
250
+ .innerJoinAndSelect('INV.location', 'LOC')
251
+ .addSelect(subQuery =>
252
+ subQuery
253
+ .select('COALESCE(SUM(release_qty), 0)', 'releaseQty')
254
+ .from('order_inventories', 'OI')
255
+ .where('"OI"."inventory_id" = "INV"."id"')
256
+ .andWhere("\"OI\".\"status\" IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')")
257
+ .andWhere('"OI"."ref_worksheet_id" <> :worksheetId', { worksheetId: worksheetId })
258
+ )
259
+ .addSelect(subQuery =>
260
+ subQuery
261
+ .select('COALESCE(SUM(release_uom_value), 0)', 'releaseUomValue')
262
+ .from('order_inventories', 'OI')
263
+ .where('"OI"."inventory_id" = "INV"."id"')
264
+ .andWhere("\"OI\".\"status\" IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')")
265
+ .andWhere('"OI"."ref_worksheet_id" <> :worksheetId', { worksheetId: worksheetId })
266
+ )
267
+ .andWhere('"INV"."domain_id" = :domainId')
268
+ .andWhere('"PROD"."id" = :productId')
269
+ .andWhere('"INV"."packing_type" = :packingType')
270
+ .andWhere('"INV"."packing_size" = :packingSize')
271
+ .andWhere('"INV"."uom" = :uom')
272
+ .andWhere('"INV"."status" = :status', { status: 'STORED' })
273
+ .andWhere('"LOC"."type" NOT IN (:...locationTypes)', {
274
+ locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]
275
+ })
276
+ .setParameters({
277
+ domainId: domain.id,
278
+ productId,
279
+ packingType,
280
+ packingSize,
281
+ uom
282
+ })
283
+
284
+ if (batchId !== '') {
285
+ qb.andWhere('"INV"."batch_id" = :batchId', { batchId })
286
+ }
287
+
288
+ if (bizplaceId) {
289
+ qb.andWhere('"INV"."bizplace_id" = :bizplaceId', { bizplaceId: bizplaceId })
290
+ }
291
+
292
+ let locIdx = 0
293
+
294
+ switch (pickingStrategy.toUpperCase()) {
295
+ case 'FIFO':
296
+ qb.orderBy('"INV"."created_at"', 'ASC')
297
+ if (locationSortingRules) {
298
+ for (const key in locationSortingRules) {
299
+ qb.addOrderBy(`LOC.${key}`, locationSortingRules[key])
300
+ }
301
+ }
302
+ break
303
+
304
+ case 'LIFO':
305
+ qb.orderBy('"INV"."created_at"', 'DESC')
306
+ if (locationSortingRules) {
307
+ for (const key in locationSortingRules) {
308
+ qb.addOrderBy(`LOC.${key}`, locationSortingRules[key])
309
+ }
310
+ }
311
+ break
312
+
313
+ case 'FEFO':
314
+ qb.orderBy('"INV"."expiration_date"', 'ASC')
315
+ qb.addOrderBy('"INV"."created_at"', 'ASC')
316
+ if (locationSortingRules) {
317
+ for (const key in locationSortingRules) {
318
+ qb.addOrderBy(`LOC.${key}`, locationSortingRules[key])
319
+ }
320
+ }
321
+ break
322
+
323
+ case 'FMFO':
324
+ qb.orderBy('"INV"."manufacture_date"', 'ASC')
325
+ qb.addOrderBy('"INV"."created_at"', 'ASC')
326
+ if (locationSortingRules) {
327
+ for (const key in locationSortingRules) {
328
+ qb.addOrderBy(`LOC.${key}`, locationSortingRules[key])
329
+ }
330
+ }
331
+ break
332
+
333
+ case 'LOCATION':
334
+ if (locationSortingRules) {
335
+ for (const key in locationSortingRules) {
336
+ if (locIdx === 0) {
337
+ qb.orderBy(`LOC.${key}`, locationSortingRules[key])
338
+ } else {
339
+ qb.addOrderBy(`LOC.${key}`, locationSortingRules[key])
340
+ }
341
+ ++locIdx
342
+ }
343
+ } else qb.orderBy('"LOC"."name"', 'DESC')
344
+ break
345
+ }
346
+
347
+ const { entities, raw } = await qb.getRawAndEntities()
348
+ const items = entities
349
+ .map((inv: Inventory, idx: number) => {
350
+ const qty: number = inv?.qty > 0 ? inv.qty : 0
351
+ const uomValue: number = inv?.uomValue > 0 ? inv.uomValue : 0
352
+ const lockedQty: number = inv.lockedQty || 0
353
+ const lockedUomValue: number = inv.lockedUomValue || 0
354
+ const releaseQty: number = parseInt(raw[idx].releaseQty) || 0
355
+ const releaseUomValue: number = parseFloat(raw[idx].releaseUomValue) || 0
356
+
357
+ return {
358
+ ...inv,
359
+ qty: qty - lockedQty - releaseQty,
360
+ uomValue: uomValue - lockedUomValue - releaseUomValue
361
+ }
362
+ })
363
+ .filter((inv: Inventory) => inv.qty > 0)
364
+
365
+ const total: number = await qb.getCount()
366
+ return { items, total }
367
+ }
368
+
369
+ export async function isInventoryExpiring(inventory: Inventory): Promise<boolean> {
370
+ if (!inventory.id) throw new Error('No inventory id provided')
371
+ let product: Product | undefined = inventory.product
372
+ if (!product) {
373
+ inventory = await getRepository(Inventory).findOne({
374
+ where: { id: inventory.id },
375
+ relations: ['product']
376
+ })
377
+ product = inventory.product
378
+ }
379
+
380
+ const { expirationDate } = inventory
381
+ const { isRequiredCheckExpiry, expirationPeriod } = product
382
+
383
+ if (!isRequiredCheckExpiry || !expirationPeriod || Number(expirationDate) <= 0) return false
384
+
385
+ let date: Date = new Date()
386
+ const acceptBefore: Date = new Date(date.setDate(date.getDate() + expirationPeriod))
387
+ const expiryDate: Date = new Date(expirationDate)
388
+
389
+ return expiryDate < acceptBefore
390
+ }