@things-factory/operato-pms 3.7.5 → 3.8.13

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 (305) hide show
  1. package/client/bootstrap.js +20 -7
  2. package/client/component/block-selector-popup.js +125 -24
  3. package/client/component/driver-selector-popup.js +223 -0
  4. package/client/component/mill-selector-popup.js +200 -0
  5. package/client/component/tracked-plantation-setting.js +113 -0
  6. package/client/component/truck-selector-popup.js +202 -0
  7. package/client/menu.js +34 -2
  8. package/client/pages/constants/index.js +1 -0
  9. package/client/pages/constants/organization.js +5 -0
  10. package/client/pages/dispatchment/daily-dispatch-detail.js +57 -18
  11. package/client/pages/dispatchment/dispatchment-create-record.js +140 -13
  12. package/client/pages/dispatchment/dispatchment-list.js +26 -34
  13. package/client/pages/harvesting/daily-harvesting-detail.js +55 -18
  14. package/client/pages/harvesting/edit-harvesting-record.js +89 -23
  15. package/client/pages/harvesting/harvesting-create-record.js +102 -16
  16. package/client/pages/harvesting/harvesting-list.js +58 -12
  17. package/client/pages/inventory/inventory-field-bunches.js +6 -4
  18. package/client/pages/loading/daily-loading-detail.js +47 -93
  19. package/client/pages/loading/edit-loading-record.js +75 -294
  20. package/client/pages/loading/loading-create-record.js +52 -329
  21. package/client/pages/loading/loading-list.js +20 -83
  22. package/client/pages/master/block.js +1 -0
  23. package/client/pages/master/company.js +26 -13
  24. package/client/pages/master/home.js +67 -65
  25. package/client/pages/master/ramp.js +1 -0
  26. package/client/pages/master/staff.js +54 -3
  27. package/client/pages/master/truck.js +416 -0
  28. package/client/pages/report/home.js +72 -65
  29. package/client/pages/report/report-daily-ffb-dispatch-and-production.js +393 -0
  30. package/client/pages/report/report-daily-production.js +38 -6
  31. package/client/pages/report/report-daily-staff-harvest.js +50 -5
  32. package/client/pages/report/report-ffb-tonnage-between-individual-block.js +393 -0
  33. package/client/pages/report/report-monthly-ffb-sale.js +413 -0
  34. package/client/pages/report/report-monthly-production.js +33 -4
  35. package/client/pages/report/report-yearly-production.js +24 -8
  36. package/client/pages/setting/home.js +107 -0
  37. package/client/pages/setting/plantation-setting.js +109 -0
  38. package/client/route.js +25 -0
  39. package/dist-server/constants/index.js +1 -0
  40. package/dist-server/constants/index.js.map +1 -1
  41. package/dist-server/constants/organization.js +9 -0
  42. package/dist-server/constants/organization.js.map +1 -0
  43. package/dist-server/controllers/render-dispatchment.js +1 -1
  44. package/dist-server/controllers/render-dispatchment.js.map +1 -1
  45. package/dist-server/entities/daily-dispatch.js +19 -4
  46. package/dist-server/entities/daily-dispatch.js.map +1 -1
  47. package/dist-server/entities/daily-harvest-detail.js +9 -11
  48. package/dist-server/entities/daily-harvest-detail.js.map +1 -1
  49. package/dist-server/entities/daily-harvest.js +16 -6
  50. package/dist-server/entities/daily-harvest.js.map +1 -1
  51. package/dist-server/entities/daily-loading-detail.js +14 -6
  52. package/dist-server/entities/daily-loading-detail.js.map +1 -1
  53. package/dist-server/entities/daily-loading.js +3 -11
  54. package/dist-server/entities/daily-loading.js.map +1 -1
  55. package/dist-server/entities/index.js +7 -1
  56. package/dist-server/entities/index.js.map +1 -1
  57. package/dist-server/entities/organization-staff.js +5 -1
  58. package/dist-server/entities/organization-staff.js.map +1 -1
  59. package/dist-server/entities/plantation-inventory.js +4 -10
  60. package/dist-server/entities/plantation-inventory.js.map +1 -1
  61. package/dist-server/entities/plantation-setting.js +76 -0
  62. package/dist-server/entities/plantation-setting.js.map +1 -0
  63. package/dist-server/entities/truck.js +77 -0
  64. package/dist-server/entities/truck.js.map +1 -0
  65. package/dist-server/graphql/resolvers/daily-dispatch/daily-dispatch-query.js +13 -2
  66. package/dist-server/graphql/resolvers/daily-dispatch/daily-dispatch-query.js.map +1 -1
  67. package/dist-server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.js +25 -11
  68. package/dist-server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.js.map +1 -1
  69. package/dist-server/graphql/resolvers/daily-dispatch/update-daily-dispatch.js +3 -2
  70. package/dist-server/graphql/resolvers/daily-dispatch/update-daily-dispatch.js.map +1 -1
  71. package/dist-server/graphql/resolvers/daily-harvest/daily-harvest-query.js +3 -1
  72. package/dist-server/graphql/resolvers/daily-harvest/daily-harvest-query.js.map +1 -1
  73. package/dist-server/graphql/resolvers/daily-harvest/generate-daily-harvest.js +21 -2
  74. package/dist-server/graphql/resolvers/daily-harvest/generate-daily-harvest.js.map +1 -1
  75. package/dist-server/graphql/resolvers/daily-harvest/update-daily-harvest.js +8 -2
  76. package/dist-server/graphql/resolvers/daily-harvest/update-daily-harvest.js.map +1 -1
  77. package/dist-server/graphql/resolvers/daily-loading/daily-loading-query.js +4 -6
  78. package/dist-server/graphql/resolvers/daily-loading/daily-loading-query.js.map +1 -1
  79. package/dist-server/graphql/resolvers/daily-loading/generate-daily-loading.js +20 -54
  80. package/dist-server/graphql/resolvers/daily-loading/generate-daily-loading.js.map +1 -1
  81. package/dist-server/graphql/resolvers/daily-loading/update-daily-loading.js +17 -105
  82. package/dist-server/graphql/resolvers/daily-loading/update-daily-loading.js.map +1 -1
  83. package/dist-server/graphql/resolvers/dashboard/dashboard-query.js +82 -0
  84. package/dist-server/graphql/resolvers/dashboard/dashboard-query.js.map +1 -0
  85. package/dist-server/graphql/resolvers/dashboard/index.js +8 -0
  86. package/dist-server/graphql/resolvers/dashboard/index.js.map +1 -0
  87. package/dist-server/graphql/resolvers/index.js +9 -6
  88. package/dist-server/graphql/resolvers/index.js.map +1 -1
  89. package/dist-server/graphql/resolvers/organization-staff/organization-staff-query.js +7 -3
  90. package/dist-server/graphql/resolvers/organization-staff/organization-staff-query.js.map +1 -1
  91. package/dist-server/graphql/resolvers/plantation-setting/create-plantation-setting.js +12 -0
  92. package/dist-server/graphql/resolvers/plantation-setting/create-plantation-setting.js.map +1 -0
  93. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-setting.js +13 -0
  94. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-setting.js.map +1 -0
  95. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-settings.js +16 -0
  96. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-settings.js.map +1 -0
  97. package/dist-server/graphql/resolvers/plantation-setting/index.js +15 -0
  98. package/dist-server/graphql/resolvers/plantation-setting/index.js.map +1 -0
  99. package/dist-server/graphql/resolvers/plantation-setting/plantation-setting-query.js +33 -0
  100. package/dist-server/graphql/resolvers/plantation-setting/plantation-setting-query.js.map +1 -0
  101. package/dist-server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.js +31 -0
  102. package/dist-server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.js.map +1 -0
  103. package/dist-server/graphql/resolvers/plantation-setting/update-plantation-setting.js +16 -0
  104. package/dist-server/graphql/resolvers/plantation-setting/update-plantation-setting.js.map +1 -0
  105. package/dist-server/graphql/resolvers/report/daily-production-reports.js +46 -33
  106. package/dist-server/graphql/resolvers/report/daily-production-reports.js.map +1 -1
  107. package/dist-server/graphql/resolvers/report/daily-staff-harvest-reports.js +21 -10
  108. package/dist-server/graphql/resolvers/report/daily-staff-harvest-reports.js.map +1 -1
  109. package/dist-server/graphql/resolvers/report/index.js +4 -1
  110. package/dist-server/graphql/resolvers/report/index.js.map +1 -1
  111. package/dist-server/graphql/resolvers/report/monthly-block-dispatch-reports.js +89 -0
  112. package/dist-server/graphql/resolvers/report/monthly-block-dispatch-reports.js.map +1 -0
  113. package/dist-server/graphql/resolvers/report/monthly-dispatch-summary-reports.js +89 -0
  114. package/dist-server/graphql/resolvers/report/monthly-dispatch-summary-reports.js.map +1 -0
  115. package/dist-server/graphql/resolvers/report/monthly-ffb-sale-reports.js +87 -0
  116. package/dist-server/graphql/resolvers/report/monthly-ffb-sale-reports.js.map +1 -0
  117. package/dist-server/graphql/resolvers/report/monthly-production-reports.js +46 -31
  118. package/dist-server/graphql/resolvers/report/monthly-production-reports.js.map +1 -1
  119. package/dist-server/graphql/resolvers/report/yearly-production-reports.js +38 -28
  120. package/dist-server/graphql/resolvers/report/yearly-production-reports.js.map +1 -1
  121. package/dist-server/graphql/resolvers/truck/delete-trucks.js +18 -0
  122. package/dist-server/graphql/resolvers/truck/delete-trucks.js.map +1 -0
  123. package/dist-server/graphql/resolvers/truck/index.js +12 -0
  124. package/dist-server/graphql/resolvers/truck/index.js.map +1 -0
  125. package/dist-server/graphql/resolvers/truck/truck-query.js +46 -0
  126. package/dist-server/graphql/resolvers/truck/truck-query.js.map +1 -0
  127. package/dist-server/graphql/resolvers/truck/update-multiple-truck.js +40 -0
  128. package/dist-server/graphql/resolvers/truck/update-multiple-truck.js.map +1 -0
  129. package/dist-server/graphql/types/daily-dispatch/daily-dispatch-patch.js +4 -1
  130. package/dist-server/graphql/types/daily-dispatch/daily-dispatch-patch.js.map +1 -1
  131. package/dist-server/graphql/types/daily-dispatch/daily-dispatch.js +4 -1
  132. package/dist-server/graphql/types/daily-dispatch/daily-dispatch.js.map +1 -1
  133. package/dist-server/graphql/types/daily-dispatch/index.js +6 -1
  134. package/dist-server/graphql/types/daily-dispatch/index.js.map +1 -1
  135. package/dist-server/graphql/types/daily-dispatch/new-daily-dispatch.js +4 -1
  136. package/dist-server/graphql/types/daily-dispatch/new-daily-dispatch.js.map +1 -1
  137. package/dist-server/graphql/types/daily-harvest/daily-harvest-patch.js +5 -2
  138. package/dist-server/graphql/types/daily-harvest/daily-harvest-patch.js.map +1 -1
  139. package/dist-server/graphql/types/daily-harvest/daily-harvest.js +3 -0
  140. package/dist-server/graphql/types/daily-harvest/daily-harvest.js.map +1 -1
  141. package/dist-server/graphql/types/daily-harvest/new-daily-harvest.js +4 -1
  142. package/dist-server/graphql/types/daily-harvest/new-daily-harvest.js.map +1 -1
  143. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.js +1 -0
  144. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.js.map +1 -1
  145. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail.js +1 -0
  146. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail.js.map +1 -1
  147. package/dist-server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.js +1 -0
  148. package/dist-server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.js.map +1 -1
  149. package/dist-server/graphql/types/daily-loading/daily-loading-patch.js +0 -2
  150. package/dist-server/graphql/types/daily-loading/daily-loading-patch.js.map +1 -1
  151. package/dist-server/graphql/types/daily-loading/daily-loading.js +0 -2
  152. package/dist-server/graphql/types/daily-loading/daily-loading.js.map +1 -1
  153. package/dist-server/graphql/types/daily-loading/new-daily-loading.js +0 -2
  154. package/dist-server/graphql/types/daily-loading/new-daily-loading.js.map +1 -1
  155. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-patch.js +6 -3
  156. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-patch.js.map +1 -1
  157. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail.js +3 -0
  158. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail.js.map +1 -1
  159. package/dist-server/graphql/types/daily-loading-detail/new-daily-loading-detail.js +6 -3
  160. package/dist-server/graphql/types/daily-loading-detail/new-daily-loading-detail.js.map +1 -1
  161. package/dist-server/graphql/types/dashboard/bunches-count.js +15 -0
  162. package/dist-server/graphql/types/dashboard/bunches-count.js.map +1 -0
  163. package/dist-server/graphql/types/dashboard/index.js +32 -0
  164. package/dist-server/graphql/types/dashboard/index.js.map +1 -0
  165. package/dist-server/graphql/types/dashboard/productions-overview.js +15 -0
  166. package/dist-server/graphql/types/dashboard/productions-overview.js.map +1 -0
  167. package/dist-server/graphql/types/dashboard/tonnage-bunches-inventories.js +14 -0
  168. package/dist-server/graphql/types/dashboard/tonnage-bunches-inventories.js.map +1 -0
  169. package/dist-server/graphql/types/dashboard/tonnage-production.js +17 -0
  170. package/dist-server/graphql/types/dashboard/tonnage-production.js.map +1 -0
  171. package/dist-server/graphql/types/dashboard/yield-production.js +17 -0
  172. package/dist-server/graphql/types/dashboard/yield-production.js.map +1 -0
  173. package/dist-server/graphql/types/index.js +9 -6
  174. package/dist-server/graphql/types/index.js.map +1 -1
  175. package/dist-server/graphql/types/organization-staff/organization-staff-patch.js +2 -0
  176. package/dist-server/graphql/types/organization-staff/organization-staff-patch.js.map +1 -1
  177. package/dist-server/graphql/types/organization-staff/organization-staff.js +3 -0
  178. package/dist-server/graphql/types/organization-staff/organization-staff.js.map +1 -1
  179. package/dist-server/graphql/types/plantation-setting/index.js +36 -0
  180. package/dist-server/graphql/types/plantation-setting/index.js.map +1 -0
  181. package/dist-server/graphql/types/plantation-setting/new-plantation-setting.js +16 -0
  182. package/dist-server/graphql/types/plantation-setting/new-plantation-setting.js.map +1 -0
  183. package/dist-server/graphql/types/plantation-setting/plantation-setting-list.js +14 -0
  184. package/dist-server/graphql/types/plantation-setting/plantation-setting-list.js.map +1 -0
  185. package/dist-server/graphql/types/plantation-setting/plantation-setting-patch.js +18 -0
  186. package/dist-server/graphql/types/plantation-setting/plantation-setting-patch.js.map +1 -0
  187. package/dist-server/graphql/types/plantation-setting/plantation-setting.js +22 -0
  188. package/dist-server/graphql/types/plantation-setting/plantation-setting.js.map +1 -0
  189. package/dist-server/graphql/types/report/index.js +20 -0
  190. package/dist-server/graphql/types/report/index.js.map +1 -1
  191. package/dist-server/graphql/types/report/monthly-block-dispatch-report-list.js +14 -0
  192. package/dist-server/graphql/types/report/monthly-block-dispatch-report-list.js.map +1 -0
  193. package/dist-server/graphql/types/report/monthly-block-dispatch-report.js +19 -0
  194. package/dist-server/graphql/types/report/monthly-block-dispatch-report.js.map +1 -0
  195. package/dist-server/graphql/types/report/monthly-dispatch-summary-report-list.js +14 -0
  196. package/dist-server/graphql/types/report/monthly-dispatch-summary-report-list.js.map +1 -0
  197. package/dist-server/graphql/types/report/monthly-dispatch-summary-report.js +25 -0
  198. package/dist-server/graphql/types/report/monthly-dispatch-summary-report.js.map +1 -0
  199. package/dist-server/graphql/types/report/monthly-ffb-sale-report-list.js +14 -0
  200. package/dist-server/graphql/types/report/monthly-ffb-sale-report-list.js.map +1 -0
  201. package/dist-server/graphql/types/report/monthly-ffb-sale-report.js +24 -0
  202. package/dist-server/graphql/types/report/monthly-ffb-sale-report.js.map +1 -0
  203. package/dist-server/graphql/types/truck/index.js +33 -0
  204. package/dist-server/graphql/types/truck/index.js.map +1 -0
  205. package/dist-server/graphql/types/truck/new-truck.js +14 -0
  206. package/dist-server/graphql/types/truck/new-truck.js.map +1 -0
  207. package/dist-server/graphql/types/truck/truck-list.js +14 -0
  208. package/dist-server/graphql/types/truck/truck-list.js.map +1 -0
  209. package/dist-server/graphql/types/truck/truck-patch.js +17 -0
  210. package/dist-server/graphql/types/truck/truck-patch.js.map +1 -0
  211. package/dist-server/graphql/types/truck/truck.js +22 -0
  212. package/dist-server/graphql/types/truck/truck.js.map +1 -0
  213. package/package.json +29 -29
  214. package/server/constants/index.ts +1 -0
  215. package/server/constants/organization.ts +5 -0
  216. package/server/controllers/render-dispatchment.ts +1 -1
  217. package/server/entities/daily-dispatch.ts +21 -5
  218. package/server/entities/daily-harvest-detail.ts +10 -11
  219. package/server/entities/daily-harvest.ts +16 -7
  220. package/server/entities/daily-loading-detail.ts +14 -6
  221. package/server/entities/daily-loading.ts +7 -11
  222. package/server/entities/index.ts +6 -0
  223. package/server/entities/organization-staff.ts +6 -1
  224. package/server/entities/plantation-inventory.ts +6 -10
  225. package/server/entities/plantation-setting.ts +60 -0
  226. package/server/entities/truck.ts +58 -0
  227. package/server/graphql/resolvers/daily-dispatch/daily-dispatch-query.ts +15 -2
  228. package/server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.ts +40 -14
  229. package/server/graphql/resolvers/daily-dispatch/update-daily-dispatch.ts +6 -2
  230. package/server/graphql/resolvers/daily-harvest/daily-harvest-query.ts +7 -2
  231. package/server/graphql/resolvers/daily-harvest/generate-daily-harvest.ts +50 -4
  232. package/server/graphql/resolvers/daily-harvest/update-daily-harvest.ts +12 -2
  233. package/server/graphql/resolvers/daily-loading/daily-loading-query.ts +6 -6
  234. package/server/graphql/resolvers/daily-loading/generate-daily-loading.ts +27 -109
  235. package/server/graphql/resolvers/daily-loading/update-daily-loading.ts +27 -213
  236. package/server/graphql/resolvers/dashboard/dashboard-query.ts +96 -0
  237. package/server/graphql/resolvers/dashboard/index.ts +5 -0
  238. package/server/graphql/resolvers/index.ts +10 -6
  239. package/server/graphql/resolvers/organization-staff/organization-staff-query.ts +13 -4
  240. package/server/graphql/resolvers/plantation-setting/create-plantation-setting.ts +16 -0
  241. package/server/graphql/resolvers/plantation-setting/delete-plantation-setting.ts +13 -0
  242. package/server/graphql/resolvers/plantation-setting/delete-plantation-settings.ts +16 -0
  243. package/server/graphql/resolvers/plantation-setting/index.ts +19 -0
  244. package/server/graphql/resolvers/plantation-setting/plantation-setting-query.ts +38 -0
  245. package/server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.ts +46 -0
  246. package/server/graphql/resolvers/plantation-setting/update-plantation-setting.ts +19 -0
  247. package/server/graphql/resolvers/report/daily-production-reports.ts +55 -44
  248. package/server/graphql/resolvers/report/daily-staff-harvest-reports.ts +28 -20
  249. package/server/graphql/resolvers/report/index.ts +7 -1
  250. package/server/graphql/resolvers/report/monthly-block-dispatch-reports.ts +112 -0
  251. package/server/graphql/resolvers/report/monthly-dispatch-summary-reports.ts +110 -0
  252. package/server/graphql/resolvers/report/monthly-ffb-sale-reports.ts +107 -0
  253. package/server/graphql/resolvers/report/monthly-production-reports.ts +54 -40
  254. package/server/graphql/resolvers/report/yearly-production-reports.ts +43 -38
  255. package/server/graphql/resolvers/truck/delete-trucks.ts +21 -0
  256. package/server/graphql/resolvers/truck/index.ts +12 -0
  257. package/server/graphql/resolvers/truck/truck-query.ts +52 -0
  258. package/server/graphql/resolvers/truck/update-multiple-truck.ts +55 -0
  259. package/server/graphql/types/daily-dispatch/daily-dispatch-patch.ts +4 -1
  260. package/server/graphql/types/daily-dispatch/daily-dispatch.ts +4 -1
  261. package/server/graphql/types/daily-dispatch/index.ts +6 -1
  262. package/server/graphql/types/daily-dispatch/new-daily-dispatch.ts +4 -1
  263. package/server/graphql/types/daily-harvest/daily-harvest-patch.ts +5 -2
  264. package/server/graphql/types/daily-harvest/daily-harvest.ts +3 -0
  265. package/server/graphql/types/daily-harvest/new-daily-harvest.ts +4 -1
  266. package/server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.ts +1 -0
  267. package/server/graphql/types/daily-harvest-detail/daily-harvest-detail.ts +1 -0
  268. package/server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.ts +1 -0
  269. package/server/graphql/types/daily-loading/daily-loading-patch.ts +0 -2
  270. package/server/graphql/types/daily-loading/daily-loading.ts +0 -2
  271. package/server/graphql/types/daily-loading/new-daily-loading.ts +0 -2
  272. package/server/graphql/types/daily-loading-detail/daily-loading-detail-patch.ts +6 -3
  273. package/server/graphql/types/daily-loading-detail/daily-loading-detail.ts +3 -0
  274. package/server/graphql/types/daily-loading-detail/new-daily-loading-detail.ts +6 -3
  275. package/server/graphql/types/dashboard/bunches-count.ts +9 -0
  276. package/server/graphql/types/dashboard/index.ts +17 -0
  277. package/server/graphql/types/dashboard/productions-overview.ts +9 -0
  278. package/server/graphql/types/dashboard/tonnage-bunches-inventories.ts +8 -0
  279. package/server/graphql/types/dashboard/tonnage-production.ts +11 -0
  280. package/server/graphql/types/dashboard/yield-production.ts +11 -0
  281. package/server/graphql/types/index.ts +10 -6
  282. package/server/graphql/types/organization-staff/organization-staff-patch.ts +2 -0
  283. package/server/graphql/types/organization-staff/organization-staff.ts +3 -0
  284. package/server/graphql/types/plantation-setting/index.ts +21 -0
  285. package/server/graphql/types/plantation-setting/new-plantation-setting.ts +10 -0
  286. package/server/graphql/types/plantation-setting/plantation-setting-list.ts +8 -0
  287. package/server/graphql/types/plantation-setting/plantation-setting-patch.ts +12 -0
  288. package/server/graphql/types/plantation-setting/plantation-setting.ts +16 -0
  289. package/server/graphql/types/report/index.ts +20 -0
  290. package/server/graphql/types/report/monthly-block-dispatch-report-list.ts +7 -0
  291. package/server/graphql/types/report/monthly-block-dispatch-report.ts +13 -0
  292. package/server/graphql/types/report/monthly-dispatch-summary-report-list.ts +7 -0
  293. package/server/graphql/types/report/monthly-dispatch-summary-report.ts +19 -0
  294. package/server/graphql/types/report/monthly-ffb-sale-report-list.ts +7 -0
  295. package/server/graphql/types/report/monthly-ffb-sale-report.ts +18 -0
  296. package/server/graphql/types/truck/index.ts +18 -0
  297. package/server/graphql/types/truck/new-truck.ts +8 -0
  298. package/server/graphql/types/truck/truck-list.ts +8 -0
  299. package/server/graphql/types/truck/truck-patch.ts +11 -0
  300. package/server/graphql/types/truck/truck.ts +16 -0
  301. package/things-factory.config.js +27 -1
  302. package/translations/en.json +78 -16
  303. package/translations/ko.json +77 -48
  304. package/translations/ms.json +74 -45
  305. package/translations/zh.json +77 -48
@@ -1,16 +1,10 @@
1
+ import { EntityManager, getRepository, Repository } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
4
  import { Domain } from '@things-factory/shell'
3
- import { EntityManager, getRepository, Repository } from 'typeorm'
5
+
4
6
  import { INVENTORY_STATUS, INVENTORY_TYPE, RECORD_STATUS, TRANSACTION_TYPE } from '../../../constants'
5
- import {
6
- Block,
7
- DailyLoading,
8
- DailyLoadingDetail,
9
- DailyLoadingRamp,
10
- OrganizationStaff,
11
- PlantationInventory,
12
- Ramp
13
- } from '../../../entities'
7
+ import { Block, DailyLoading, DailyLoadingDetail, PlantationInventory, Ramp, Truck } from '../../../entities'
14
8
  import { generateTransactionHistory, NoGenerator } from '../../../utils'
15
9
 
16
10
  export const generateDailyLoading = {
@@ -18,26 +12,19 @@ export const generateDailyLoading = {
18
12
  const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state
19
13
 
20
14
  let dailyLoadingDetails: DailyLoadingDetail[] = dailyLoading.dailyLoadingDetails
21
- let dailyLoadingRamps: DailyLoadingRamp[] = dailyLoading.dailyLoadingRamps
22
15
 
23
- const block: Block = await tx.getRepository(Block).findOne({
24
- where: { name: dailyLoading.block }
25
- })
16
+ const totalWeight: number = dailyLoadingDetails.reduce(function (prev, cur) {
17
+ return prev + cur.totalBunchWeight
18
+ }, 0)
26
19
 
27
- // get sum of bunch loaded from all trip
28
20
  const totalBunch: number = dailyLoadingDetails.reduce(function (prev, cur) {
29
21
  return prev + cur.totalBunchLoaded
30
22
  }, 0)
31
23
 
32
- const totalWeight: number = dailyLoadingDetails.reduce(function (prev, cur) {
33
- return prev + cur.totalBunchWeight
34
- }, 0)
35
-
36
24
  // 1. Create daily loading
37
25
  let newDailyLoading: DailyLoading = new DailyLoading()
38
26
  newDailyLoading.name = NoGenerator.dailyLoading()
39
27
  newDailyLoading.domain = domain
40
- newDailyLoading.block = block
41
28
  newDailyLoading.loadingDate = dailyLoading.loadingDate
42
29
  newDailyLoading.totalBunch = totalBunch
43
30
  newDailyLoading.totalWeight = totalWeight
@@ -57,20 +44,6 @@ export const generateDailyLoading = {
57
44
  tx
58
45
  )
59
46
 
60
- // 2. Create daily loading ramp
61
- dailyLoadingRamps = await addDailyLoadingRamps(
62
- domain,
63
- newDailyLoading,
64
- dailyLoadingRamps.map((record: DailyLoadingRamp) => {
65
- return { ...record }
66
- }),
67
- user,
68
- tx
69
- )
70
-
71
- // 3. Deduct bunches inventory in field and add ramp tonnage
72
- await updatePlantationInventory(domain, newDailyLoading, dailyLoadingRamps, block, user, tx)
73
-
74
47
  return newDailyLoading
75
48
  }
76
49
  }
@@ -82,8 +55,10 @@ export async function addDailyLoadingDetail(
82
55
  user: User,
83
56
  tx?: EntityManager
84
57
  ): Promise<DailyLoadingDetail[]> {
85
- const organizationStaffRepo: Repository<OrganizationStaff> =
86
- tx?.getRepository(OrganizationStaff) || getRepository(OrganizationStaff)
58
+ const truckRepo: Repository<Truck> = tx?.getRepository(Truck) || getRepository(Truck)
59
+ const blockRepo: Repository<Block> = tx?.getRepository(Block) || getRepository(Block)
60
+ const rampRepo: Repository<Ramp> = tx?.getRepository(Ramp) || getRepository(Ramp)
61
+
87
62
  const dailyLoadingDetailRepo: Repository<DailyLoadingDetail> =
88
63
  tx?.getRepository(DailyLoadingDetail) || getRepository(DailyLoadingDetail)
89
64
 
@@ -93,97 +68,40 @@ export async function addDailyLoadingDetail(
93
68
  ...record,
94
69
  domain,
95
70
  name: NoGenerator.dailyLoadingDetail(),
96
- organizationStaff: await organizationStaffRepo.findOne({ id: record.organizationStaff.id }),
97
- dailyLoading: newDailyLoading,
98
- creator: user,
99
- updater: user
100
- }
101
- })
102
- )
103
-
104
- return await dailyLoadingDetailRepo.save(dailyLoadingDetails)
105
- }
106
-
107
- export async function addDailyLoadingRamps(
108
- domain: Domain,
109
- newDailyLoading: DailyLoading,
110
- dailyLoadingRamps: DailyLoadingRamp[],
111
- user: User,
112
- tx?: EntityManager
113
- ): Promise<DailyLoadingRamp[]> {
114
- const rampRepo: Repository<Ramp> = tx?.getRepository(Ramp) || getRepository(Ramp)
115
- const dailyLoadingRampRepo: Repository<DailyLoadingRamp> =
116
- tx?.getRepository(DailyLoadingRamp) || getRepository(DailyLoadingRamp)
117
-
118
- dailyLoadingRamps = await Promise.all(
119
- dailyLoadingRamps.map(async (record: DailyLoadingRamp) => {
120
- return {
121
- ...record,
122
- domain,
123
- name: NoGenerator.dailyLoadingRamp(),
71
+ truck: await truckRepo.findOne({ id: record.truck.id }),
72
+ block: await blockRepo.findOne({ id: record.block.id }),
124
73
  ramp: await rampRepo.findOne({ id: record.ramp.id }),
125
74
  dailyLoading: newDailyLoading,
126
- creator: user,
127
- updater: user
75
+ creator: user
128
76
  }
129
77
  })
130
78
  )
131
79
 
132
- return await dailyLoadingRampRepo.save(dailyLoadingRamps)
80
+ dailyLoadingDetails = await dailyLoadingDetailRepo.save(dailyLoadingDetails)
81
+ await updatePlantationInventory(domain, newDailyLoading, dailyLoadingDetails, user, tx)
82
+
83
+ return dailyLoadingDetails
133
84
  }
134
85
 
135
86
  export async function updatePlantationInventory(
136
87
  domain: Domain,
137
88
  newDailyLoading: DailyLoading,
138
- dailyLoadingRamps: DailyLoadingRamp[],
139
- block: Block,
89
+ dailyLoadingDetails: DailyLoadingDetail[],
140
90
  user: User,
141
91
  tx?: EntityManager
142
92
  ): Promise<void> {
143
93
  const plantationInvRepo: Repository<PlantationInventory> =
144
94
  tx?.getRepository(PlantationInventory) || getRepository(PlantationInventory)
145
95
 
146
- const rampRepo: Repository<Ramp> = tx?.getRepository(Ramp) || getRepository(Ramp)
147
-
148
- let existingBunchesInventory: PlantationInventory = await plantationInvRepo.findOne({
149
- where: { domain, block, type: INVENTORY_TYPE.FIELD_BUNCHES },
150
- relations: ['domain', 'block']
151
- })
152
-
153
- const currentFieldBunches: number = existingBunchesInventory.totalBunches
154
- const loadedFieldBunches: number = newDailyLoading.totalBunch
155
-
156
- // deduct field bunches
157
- if (loadedFieldBunches > currentFieldBunches) throw new Error('Insufficient Bunches in Field to be Loaded')
158
- existingBunchesInventory.totalBunches = currentFieldBunches - loadedFieldBunches
159
- existingBunchesInventory.updater = user
160
- existingBunchesInventory = await plantationInvRepo.save(existingBunchesInventory)
161
-
162
- await generateTransactionHistory(
163
- existingBunchesInventory,
164
- newDailyLoading.id,
165
- newDailyLoading.name,
166
- TRANSACTION_TYPE.BUNCHES_ADJUSTMENT,
167
- newDailyLoading.loadingDate,
168
- -loadedFieldBunches,
169
- 0,
170
- user,
171
- tx
172
- )
173
-
174
96
  await Promise.all(
175
- dailyLoadingRamps.map(async (record: any) => {
176
- let ramp: Ramp = await rampRepo.findOne({
177
- where: { domain, id: record.ramp.id }
178
- })
179
-
97
+ dailyLoadingDetails.map(async (dailyLoadingDetail: any) => {
180
98
  let existingRampTonnage: PlantationInventory = await plantationInvRepo.findOne({
181
- where: { domain, type: INVENTORY_TYPE.RAMP_TONNAGE, ramp },
99
+ where: { domain, type: INVENTORY_TYPE.RAMP_TONNAGE, ramp: dailyLoadingDetail.ramp },
182
100
  relations: ['domain', 'block', 'ramp']
183
101
  })
184
102
 
185
103
  if (existingRampTonnage) {
186
- existingRampTonnage.totalTonnage = existingRampTonnage.totalTonnage + record.totalBunchWeight
104
+ existingRampTonnage.totalTonnage = existingRampTonnage.totalTonnage + dailyLoadingDetail.totalBunchWeight
187
105
  existingRampTonnage.updater = user
188
106
  await plantationInvRepo.save(existingRampTonnage)
189
107
 
@@ -194,7 +112,7 @@ export async function updatePlantationInventory(
194
112
  TRANSACTION_TYPE.LOADING,
195
113
  newDailyLoading.loadingDate,
196
114
  0,
197
- record.totalBunchWeight,
115
+ dailyLoadingDetail.totalBunchWeight,
198
116
  user,
199
117
  tx
200
118
  )
@@ -202,11 +120,11 @@ export async function updatePlantationInventory(
202
120
  let plantationInventory: PlantationInventory = new PlantationInventory()
203
121
  plantationInventory.domain = domain
204
122
  plantationInventory.name = NoGenerator.rampTonnageName()
205
- plantationInventory.block = block
123
+ plantationInventory.block = dailyLoadingDetail.block
206
124
  plantationInventory.type = INVENTORY_TYPE.RAMP_TONNAGE
207
- plantationInventory.totalTonnage = record.totalBunchWeight
125
+ plantationInventory.totalTonnage = dailyLoadingDetail.totalBunchWeight
208
126
  plantationInventory.status = INVENTORY_STATUS.STORED
209
- plantationInventory.ramp = ramp
127
+ plantationInventory.ramp = dailyLoadingDetail.ramp
210
128
  plantationInventory.creator = user
211
129
  plantationInventory = await plantationInvRepo.save(plantationInventory)
212
130
 
@@ -217,7 +135,7 @@ export async function updatePlantationInventory(
217
135
  TRANSACTION_TYPE.LOADING,
218
136
  newDailyLoading.loadingDate,
219
137
  0,
220
- record.totalBunchWeight,
138
+ dailyLoadingDetail.totalBunchWeight,
221
139
  user,
222
140
  tx
223
141
  )
@@ -1,17 +1,10 @@
1
+ import { EntityManager, getRepository, Repository } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
4
  import { Domain } from '@things-factory/shell'
3
- import { EntityManager, getRepository, Repository } from 'typeorm'
4
- import { INVENTORY_TYPE, INVENTORY_STATUS, TRANSACTION_TYPE } from '../../../constants'
5
- import {
6
- Block,
7
- DailyLoading,
8
- DailyLoadingDetail,
9
- DailyLoadingRamp,
10
- Ramp,
11
- OrganizationStaff,
12
- PlantationInventory
13
- } from '../../../entities'
14
- import { NoGenerator, generateTransactionHistory } from '../../../utils'
5
+
6
+ import { Block, DailyLoading, DailyLoadingDetail, PlantationInventory, Ramp, Truck } from '../../../entities'
7
+ import { NoGenerator } from '../../../utils'
15
8
 
16
9
  export const updateDailyLoading = {
17
10
  async updateDailyLoading(_: any, { name, dailyLoadingPatch }, context: any) {
@@ -21,23 +14,13 @@ export const updateDailyLoading = {
21
14
  let dailyLoading: DailyLoading = await dailyLoadingRepo.findOne({
22
15
  where: { name },
23
16
  relations: [
24
- 'block',
25
17
  'dailyLoadingDetails',
26
- 'dailyLoadingDetails.organizationStaff',
27
- 'dailyLoadingRamps',
28
- 'dailyLoadingRamps.ramp'
18
+ 'dailyLoadingDetails.truck',
19
+ 'dailyLoadingDetails.ramp',
20
+ 'dailyLoadingDetails.block'
29
21
  ]
30
22
  })
31
23
 
32
- const block: Block = await tx.getRepository(Block).findOne({
33
- where: { name: dailyLoadingPatch.block }
34
- })
35
-
36
- const {
37
- totalBunch: prevLoadedBunch,
38
- totalWeight: prevLoadedTonnage
39
- }: { totalBunch: number; totalWeight: number } = dailyLoading
40
-
41
24
  // get sum of bunch loaded from all trip
42
25
  var totalBunch: number = dailyLoadingPatch.dailyLoadingDetails.reduce(function (prev, cur) {
43
26
  return prev + cur.totalBunchLoaded
@@ -47,7 +30,6 @@ export const updateDailyLoading = {
47
30
  return prev + cur.totalBunchWeight
48
31
  }, 0)
49
32
 
50
- dailyLoading.block = block
51
33
  dailyLoading.totalBunch = totalBunch
52
34
  dailyLoading.totalWeight = totalWeight
53
35
  dailyLoading.loadingDate = dailyLoadingPatch.loadingDate
@@ -56,8 +38,6 @@ export const updateDailyLoading = {
56
38
 
57
39
  // 2. Create daily loading detail
58
40
  await updateDailyLoadingDetail(domain, dailyLoading, dailyLoadingPatch.dailyLoadingDetails, user, tx)
59
- await updateDailyLoadingRamp(domain, dailyLoading, dailyLoadingPatch.dailyLoadingRamps, user, tx)
60
- await updatePlantationInventory(domain, dailyLoading, prevLoadedBunch, prevLoadedTonnage, block, user, tx)
61
41
 
62
42
  return dailyLoading
63
43
  }
@@ -70,8 +50,9 @@ export async function updateDailyLoadingDetail(
70
50
  user: User,
71
51
  tx?: EntityManager
72
52
  ): Promise<void> {
73
- const organizationStaffRepo: Repository<OrganizationStaff> =
74
- tx?.getRepository(OrganizationStaff) || getRepository(OrganizationStaff)
53
+ const truckRepo: Repository<Truck> = tx?.getRepository(Truck) || getRepository(Truck)
54
+ const blockRepo: Repository<Block> = tx?.getRepository(Block) || getRepository(Block)
55
+ const rampRepo: Repository<Ramp> = tx?.getRepository(Ramp) || getRepository(Ramp)
75
56
  const dailyLoadingDetailRepo: Repository<DailyLoadingDetail> =
76
57
  tx?.getRepository(DailyLoadingDetail) || getRepository(DailyLoadingDetail)
77
58
 
@@ -90,22 +71,22 @@ export async function updateDailyLoadingDetail(
90
71
  dailyLoadingDetails.map(async (record: DailyLoadingDetail) => {
91
72
  const foundDailyLoadingDetailPatch = dailyLoadingDetailPatches.find(detail => detail.name === record.name)
92
73
 
93
- const foundStaff: OrganizationStaff = await organizationStaffRepo.findOne({
94
- where: { id: foundDailyLoadingDetailPatch.organizationStaff.id }
95
- })
96
-
97
74
  return {
98
75
  ...record,
99
76
  dailyLoading,
100
- organizationStaff: foundStaff,
101
- totalBunchLoaded: foundDailyLoadingDetailPatch.totalBunchLoaded,
102
- totalBunchWeight: foundDailyLoadingDetailPatch.totalBunchWeight,
103
- remark: foundDailyLoadingDetailPatch.remark,
77
+ truck: await truckRepo.findOne({ id: record.truck.id }),
78
+ block: await blockRepo.findOne({ id: record.block.id }),
79
+ ramp: await rampRepo.findOne({ id: record.ramp.id }),
80
+ totalBunchLoaded: foundDailyLoadingDetailPatch?.totalBunchLoaded || 0,
81
+ totalBunchWeight: foundDailyLoadingDetailPatch?.totalBunchWeight || 0,
82
+ remark: foundDailyLoadingDetailPatch?.remark || null,
104
83
  updater: user
105
84
  }
106
85
  })
107
86
  )
108
- await dailyLoadingDetailRepo.save(updatedDailyLoadingDetails)
87
+ updatedDailyLoadingDetails = await dailyLoadingDetailRepo.save(updatedDailyLoadingDetails)
88
+
89
+ // await updatePlantationInventory(domain, dailyLoading, updatedDailyLoadingDetails, user, tx)
109
90
  }
110
91
 
111
92
  if (newDailyLoadingDetail?.length > 0) {
@@ -114,14 +95,13 @@ export async function updateDailyLoadingDetail(
114
95
  let newDailyLoadingDetail: DailyLoadingDetail = new DailyLoadingDetail()
115
96
  newDailyLoadingDetail.domain = domain
116
97
  newDailyLoadingDetail.name = NoGenerator.dailyLoadingDetail()
117
- newDailyLoadingDetail.organizationStaff = await organizationStaffRepo.findOne({
118
- id: dailyLoadingDetail.organizationStaff.id
119
- })
120
- newDailyLoadingDetail.totalBunchLoaded = dailyLoadingDetail.totalBunchLoaded
121
- newDailyLoadingDetail.totalBunchWeight = dailyLoadingDetail.totalBunchWeight
122
- newDailyLoadingDetail.remark = dailyLoadingDetail.remark
98
+ newDailyLoadingDetail.truck = await truckRepo.findOne({ id: dailyLoadingDetail.truck.id })
99
+ newDailyLoadingDetail.block = await blockRepo.findOne({ id: dailyLoadingDetail.block.id })
100
+ newDailyLoadingDetail.ramp = await rampRepo.findOne({ id: dailyLoadingDetail.ramp.id })
101
+ newDailyLoadingDetail.totalBunchLoaded = dailyLoadingDetail?.totalBunchLoaded || 0
102
+ newDailyLoadingDetail.totalBunchWeight = dailyLoadingDetail?.totalBunchWeight || 0
103
+ newDailyLoadingDetail.remark = dailyLoadingDetail?.remark || null
123
104
  newDailyLoadingDetail.creator = user
124
- newDailyLoadingDetail.updater = user
125
105
  newDailyLoadingDetail.dailyLoading = dailyLoading
126
106
 
127
107
  await dailyLoadingDetailRepo.save(newDailyLoadingDetail)
@@ -130,70 +110,10 @@ export async function updateDailyLoadingDetail(
130
110
  }
131
111
  }
132
112
 
133
- export async function updateDailyLoadingRamp(
134
- domain: Domain,
135
- dailyLoading: DailyLoading,
136
- dailyLoadingRampPatches: DailyLoadingRamp[],
137
- user: User,
138
- tx?: EntityManager
139
- ): Promise<void> {
140
- const rampRepo: Repository<Ramp> = tx?.getRepository(Ramp) || getRepository(Ramp)
141
- const dailyLoadingRampRepo: Repository<DailyLoadingRamp> =
142
- tx?.getRepository(DailyLoadingRamp) || getRepository(DailyLoadingRamp)
143
-
144
- let updatedDailyLoadingRamps: any[] = []
145
- const dailyLoadingRamps: DailyLoadingRamp[] = dailyLoading.dailyLoadingRamps
146
- const existingDailyLoadingRamps: DailyLoadingRamp[] = dailyLoadingRampPatches.filter(detail => detail.name !== null)
147
-
148
- // new row added in client side
149
- const newDailyLoadingRamps: DailyLoadingRamp[] = dailyLoadingRampPatches.filter(detail => detail.name === null)
150
-
151
- if (existingDailyLoadingRamps?.length > 0) {
152
- // TODO: delete function for removing data
153
- updatedDailyLoadingRamps = await Promise.all(
154
- dailyLoadingRamps.map(async (dailyLoadingRamp: DailyLoadingRamp) => {
155
- const foundDailyLoadingRampPatch = dailyLoadingRampPatches.find(detail => detail.name === dailyLoadingRamp.name)
156
-
157
- const foundRamp: Ramp = await rampRepo.findOne({
158
- where: { id: foundDailyLoadingRampPatch.ramp.id }
159
- })
160
-
161
- return {
162
- ...dailyLoadingRamp,
163
- dailyLoading,
164
- ramp: foundRamp,
165
- totalBunchWeight: foundDailyLoadingRampPatch.totalBunchWeight,
166
- updater: user
167
- }
168
- })
169
- )
170
- await dailyLoadingRampRepo.save(updatedDailyLoadingRamps)
171
- }
172
-
173
- if (newDailyLoadingRamps?.length > 0) {
174
- await Promise.all(
175
- newDailyLoadingRamps.map(async (dailyLoadingRamp: DailyLoadingRamp) => {
176
- let newDailyLoadingRamp: DailyLoadingRamp = new DailyLoadingRamp()
177
- newDailyLoadingRamp.domain = domain
178
- newDailyLoadingRamp.name = NoGenerator.dailyLoadingDetail()
179
- newDailyLoadingRamp.ramp = await rampRepo.findOne({ id: dailyLoadingRamp.ramp.id })
180
- newDailyLoadingRamp.totalBunchWeight = dailyLoadingRamp.totalBunchWeight
181
- newDailyLoadingRamp.creator = user
182
- newDailyLoadingRamp.updater = user
183
- newDailyLoadingRamp.dailyLoading = dailyLoading
184
-
185
- await dailyLoadingRampRepo.save(newDailyLoadingRamp)
186
- })
187
- )
188
- }
189
- }
190
-
191
113
  export async function updatePlantationInventory(
192
114
  domain: Domain,
193
115
  dailyLoading: DailyLoading,
194
- prevLoadedBunch: number,
195
- prevLoadedTonnage: number,
196
- block: Block,
116
+ updatedDailyLoadingDetails: DailyLoadingDetail[],
197
117
  user: User,
198
118
  tx?: EntityManager
199
119
  ): Promise<void> {
@@ -201,110 +121,4 @@ export async function updatePlantationInventory(
201
121
  tx?.getRepository(PlantationInventory) || getRepository(PlantationInventory)
202
122
 
203
123
  const rampRepo: Repository<Ramp> = tx?.getRepository(Ramp) || getRepository(Ramp)
204
-
205
- let existingBunchesInventory: PlantationInventory = await plantationInvRepo.findOne({
206
- where: { domain, block, type: INVENTORY_TYPE.FIELD_BUNCHES },
207
- relations: ['domain', 'block']
208
- })
209
-
210
- const originBunchesInventory: number = existingBunchesInventory.totalBunches + prevLoadedBunch
211
- const loadedFieldBunches: number = dailyLoading.totalBunch
212
-
213
- if (!existingBunchesInventory) throw new Error('Unable to find plantation bunches inventory')
214
- existingBunchesInventory.totalBunches = originBunchesInventory - loadedFieldBunches
215
- existingBunchesInventory.updater = user
216
- existingBunchesInventory = await plantationInvRepo.save(existingBunchesInventory)
217
-
218
- await generateTransactionHistory(
219
- existingBunchesInventory,
220
- dailyLoading.id,
221
- dailyLoading.name,
222
- TRANSACTION_TYPE.BUNCHES_ADJUSTMENT,
223
- dailyLoading.loadingDate,
224
- prevLoadedBunch,
225
- 0,
226
- user,
227
- tx
228
- )
229
-
230
- await generateTransactionHistory(
231
- existingBunchesInventory,
232
- dailyLoading.id,
233
- dailyLoading.name,
234
- TRANSACTION_TYPE.BUNCHES_ADJUSTMENT,
235
- dailyLoading.loadingDate,
236
- -loadedFieldBunches,
237
- 0,
238
- user,
239
- tx
240
- )
241
-
242
- await Promise.all(
243
- dailyLoading.dailyLoadingRamps.map(async (record: any) => {
244
- const ramp: Ramp = await rampRepo.findOne({
245
- where: { domain, id: record.ramp.id }
246
- })
247
-
248
- let existingRampTonnage: PlantationInventory = await plantationInvRepo.findOne({
249
- where: { domain, type: INVENTORY_TYPE.RAMP_TONNAGE, ramp },
250
- relations: ['domain', 'block', 'ramp']
251
- })
252
-
253
- const originRampTonnage: number = existingRampTonnage.totalTonnage - prevLoadedTonnage
254
- const loadedRampTonnage: number = dailyLoading.totalWeight
255
-
256
- if (existingRampTonnage) {
257
- existingRampTonnage.totalTonnage = originRampTonnage - loadedRampTonnage
258
- existingRampTonnage.updater = user
259
- await plantationInvRepo.save(existingRampTonnage)
260
-
261
- await generateTransactionHistory(
262
- existingRampTonnage,
263
- dailyLoading.id,
264
- dailyLoading.name,
265
- TRANSACTION_TYPE.TONNAGE_ADJUSTMENT,
266
- dailyLoading.loadingDate,
267
- 0,
268
- -prevLoadedTonnage,
269
- user,
270
- tx
271
- )
272
-
273
- await generateTransactionHistory(
274
- existingRampTonnage,
275
- dailyLoading.id,
276
- dailyLoading.name,
277
- TRANSACTION_TYPE.TONNAGE_ADJUSTMENT,
278
- dailyLoading.loadingDate,
279
- 0,
280
- loadedRampTonnage,
281
- user,
282
- tx
283
- )
284
- } else {
285
- let plantationInventory: PlantationInventory = new PlantationInventory()
286
- plantationInventory.domain = domain
287
- plantationInventory.name = NoGenerator.rampTonnageName()
288
- plantationInventory.block = block
289
- plantationInventory.type = INVENTORY_TYPE.RAMP_TONNAGE
290
- plantationInventory.totalTonnage = record.totalBunchWeight
291
- plantationInventory.status = INVENTORY_STATUS.STORED
292
- plantationInventory.ramp = ramp
293
- plantationInventory.creator = user
294
- plantationInventory = await plantationInvRepo.save(plantationInventory)
295
-
296
- await generateTransactionHistory(
297
- plantationInventory,
298
- dailyLoading.id,
299
- dailyLoading.name,
300
- TRANSACTION_TYPE.LOADING,
301
- dailyLoading.loadingDate,
302
- 0,
303
- record.totalBunchWeight,
304
- user,
305
- tx
306
- )
307
- }
308
- })
309
- )
310
124
  }
@@ -0,0 +1,96 @@
1
+ // import { EntityManager } from 'typeorm'
2
+
3
+ // import { buildQuery, ListParam } from '@things-factory/shell'
4
+
5
+ export const Query = {
6
+ /**
7
+ * @param blockId: id of the block
8
+ * @param yearAndMonth: the format will be something like 202001; combination of year 2020 and month 01
9
+ * @returns tonnage data with its sorted date
10
+ */
11
+ async monthlyTonnageProductions(_: any, { blockId, yearAndMonth }, context: any) {
12
+ if (blockId == 'ALL_BLOCKS') {
13
+ // should remove block filter
14
+ // 'ALL_BLOCKS' was hardcoded from dashboard
15
+ }
16
+
17
+ const year: string = yearAndMonth.substring(0, 4)
18
+ const month: string = yearAndMonth.substring(4)
19
+
20
+ let data = []
21
+
22
+ for (let i = 1, l = new Date(Number(year), Number(month), 0).getDate(); i <= l; i++) {
23
+ let theDate = new Date(`${year}-${month}-${i}`)
24
+ theDate.setHours(8, 0, 0, 0)
25
+
26
+ data.push({
27
+ blockId,
28
+ tonnage: Math.floor(Math.random() * 1000) + 200, // generate random value within 200-1000
29
+ year,
30
+ month,
31
+ date: theDate.toLocaleString('default', { day: '2-digit', month: 'short' })
32
+ })
33
+ }
34
+
35
+ return data.sort((a, b) => (a.date > b.date ? 1 : -1))
36
+ },
37
+
38
+ async monthlyYields(_: any, { blockId, yearAndMonth }, context: any) {
39
+ if (blockId == 'ALL_BLOCKS') {
40
+ // should remove block filter
41
+ // 'ALL_BLOCKS' was hardcoded from dashboard
42
+ }
43
+
44
+ const year: string = yearAndMonth.substring(0, 4)
45
+ const month: string = yearAndMonth.substring(4)
46
+
47
+ let data = []
48
+
49
+ for (let i = 1, l = new Date(Number(year), Number(month), 0).getDate(); i <= l; i++) {
50
+ let theDate = new Date(`${year}-${month}-${i}`)
51
+ theDate.setHours(8, 0, 0, 0)
52
+
53
+ data.push({
54
+ blockId,
55
+ yield: Math.floor(Math.random() * 1000) + 200, // generate random value within 200-1000
56
+ year,
57
+ month,
58
+ date: theDate.toLocaleString('default', { day: '2-digit', month: 'short' })
59
+ })
60
+ }
61
+
62
+ return data.sort((a, b) => (a.date > b.date ? 1 : -1))
63
+ },
64
+
65
+ async weeklyBunchesCount(_: any, { targetDate }, context: any) {
66
+ if (!targetDate || targetDate == '') targetDate = new Date()
67
+
68
+ let bunchesCount = []
69
+
70
+ for (let i = 0; i < 7; i++) {
71
+ bunchesCount.push({
72
+ date: new Date(targetDate).toLocaleString('default', { day: '2-digit', month: 'short' }),
73
+ harvestedCount: Math.floor(Math.random() * 1000) + 500,
74
+ collectedCount: Math.floor(Math.random() * 500) + 50
75
+ })
76
+ targetDate.setDate(targetDate.getDate() - 1)
77
+ }
78
+
79
+ return bunchesCount.reverse()
80
+ },
81
+
82
+ async tonnageAndBunchesInventories(_: any, { something }, context: any) {
83
+ return {
84
+ bunches: Math.floor(Math.random() * 10000) + 500,
85
+ tonnage: Math.floor(Math.random() * 10000) + 500
86
+ }
87
+ },
88
+
89
+ async productionsOverview(_: any, { something }, context: any) {
90
+ return {
91
+ averageBunchWeight: Math.floor(Math.random() * 150) + 70,
92
+ bunchesCount: Math.floor(Math.random() * 10000) + 500,
93
+ tonnageWeighed: Math.floor(Math.random() * 10000) + 500
94
+ }
95
+ }
96
+ }
@@ -0,0 +1,5 @@
1
+ import { Query } from './dashboard-query'
2
+
3
+ export const DashboardResolver = {
4
+ Query
5
+ }
@@ -1,16 +1,20 @@
1
- export * from './block'
2
1
  export * from './block-detail'
2
+ export * from './block'
3
3
  export * from './daily-block-detail'
4
- export * from './daily-dispatch'
5
4
  export * from './daily-dispatch-detail'
6
- export * from './daily-harvest'
5
+ export * from './daily-dispatch'
7
6
  export * from './daily-harvest-detail'
8
- export * from './daily-loading'
7
+ export * from './daily-harvest'
9
8
  export * from './daily-loading-detail'
10
9
  export * from './daily-loading-ramp'
11
- export * from './organization'
10
+ export * from './daily-loading'
11
+ export * from './dashboard'
12
12
  export * from './organization-staff'
13
+ export * from './organization'
13
14
  export * from './plantation-inventory'
15
+ export * from './plantation-setting'
14
16
  export * from './ramp'
15
- export * from './report'
16
17
  export * from './record-transaction'
18
+ export * from './report'
19
+
20
+ export * from './truck'