@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,5 +1,7 @@
1
- import { buildQuery, ListParam, Domain } from '@things-factory/shell'
2
- import { IsNull, EntityManager } from 'typeorm'
1
+ import { EntityManager, IsNull } from 'typeorm'
2
+
3
+ import { buildQuery, Domain, ListParam } from '@things-factory/shell'
4
+
3
5
  import { OrganizationStaff as OrganizationStaffEntity } from '../../../entities'
4
6
 
5
7
  export const Query = {
@@ -15,7 +17,7 @@ export const Query = {
15
17
  async organizationStaffs(_: any, params: ListParam, context: any) {
16
18
  const { tx }: { tx: EntityManager } = context.state
17
19
 
18
- const queryBuilder = tx.getRepository(OrganizationStaffEntity).createQueryBuilder()
20
+ const queryBuilder = await tx.getRepository(OrganizationStaffEntity).createQueryBuilder()
19
21
  buildQuery(queryBuilder, params, context)
20
22
 
21
23
  queryBuilder
@@ -27,7 +29,14 @@ export const Query = {
27
29
  if (params.filters?.length > 0) queryBuilder.andWhere('OrganizationStaff.deletedAt IS NULL')
28
30
  else queryBuilder.where('OrganizationStaff.deletedAt IS NULL')
29
31
 
30
- const [items, total] = await queryBuilder.getManyAndCount()
32
+ let [items, total] = await queryBuilder.getManyAndCount()
33
+
34
+ items = items.map(item => {
35
+ return {
36
+ ...item,
37
+ organizationName: item.organization?.name
38
+ }
39
+ })
31
40
 
32
41
  return { items, total }
33
42
  }
@@ -0,0 +1,16 @@
1
+ import { getRepository } from 'typeorm'
2
+ import { PlantationSetting } from '../../../entities'
3
+
4
+ export const createPlantationSetting = {
5
+ async createPlantationSetting(_: any, { plantationSetting }, context: any) {
6
+ const { domain, user } = context.state
7
+
8
+ return await getRepository(PlantationSetting).save({
9
+ ...plantationSetting,
10
+ domain,
11
+ creator: user,
12
+ updater: user
13
+ })
14
+ }
15
+ }
16
+
@@ -0,0 +1,13 @@
1
+ import { getRepository } from 'typeorm'
2
+ import { PlantationSetting } from '../../../entities'
3
+
4
+ export const deletePlantationSetting = {
5
+ async deletePlantationSetting(_: any, { name }, context: any) {
6
+ const { domain, user } = context.state
7
+
8
+ await getRepository(PlantationSetting).delete({ domain, name })
9
+
10
+ return true
11
+ }
12
+ }
13
+
@@ -0,0 +1,16 @@
1
+ import { getRepository, In } from 'typeorm'
2
+ import { PlantationSetting } from '../../../entities'
3
+
4
+ export const deletePlantationSettings = {
5
+ async deletePlantationSettings(_: any, { names }, context: any) {
6
+ const { domain, user } = context.state
7
+
8
+ await getRepository(PlantationSetting).delete({
9
+ domain,
10
+ name: In(names)
11
+ })
12
+
13
+ return true
14
+ }
15
+ }
16
+
@@ -0,0 +1,19 @@
1
+ import { Query, PlantationSetting } from './plantation-setting-query'
2
+
3
+ import { updatePlantationSetting } from './update-plantation-setting'
4
+ import { updateMultiplePlantationSetting } from './update-multiple-plantation-setting'
5
+ import { createPlantationSetting } from './create-plantation-setting'
6
+ import { deletePlantationSetting } from './delete-plantation-setting'
7
+ import { deletePlantationSettings } from './delete-plantation-settings'
8
+
9
+ export const PlantationSettingResolver = {
10
+ PlantationSetting,
11
+ Query,
12
+ Mutation: {
13
+ ...updatePlantationSetting,
14
+ ...updateMultiplePlantationSetting,
15
+ ...createPlantationSetting,
16
+ ...deletePlantationSetting,
17
+ ...deletePlantationSettings
18
+ }
19
+ }
@@ -0,0 +1,38 @@
1
+ import { getRepository } from 'typeorm'
2
+ import { Domain, ListParam, convertListParams } from '@things-factory/shell'
3
+ import { User } from '@things-factory/auth-base'
4
+ import { PlantationSetting as PlantationSettingEntity } from '../../../entities'
5
+
6
+ export const Query = {
7
+ async plantationSetting(_: any, { name }, context: any) {
8
+ const { domain, user } = context.state
9
+ const repository = getRepository(PlantationSettingEntity)
10
+
11
+ return await repository.findOne({
12
+ where: { domain, name }
13
+ })
14
+ },
15
+
16
+ async plantationSettings(_: any, params: ListParam, context: any) {
17
+ const convertedParams = convertListParams(params)
18
+ const [items, total] = await getRepository(PlantationSettingEntity).findAndCount({
19
+ ...convertedParams
20
+ })
21
+
22
+ return { items, total }
23
+ }
24
+ }
25
+
26
+ export const PlantationSetting = {
27
+ async domain(plantationSetting) {
28
+ return await getRepository(Domain).findOne(plantationSetting.domainId)
29
+ },
30
+
31
+ async creator(plantationSetting) {
32
+ return await getRepository(User).findOne(plantationSetting.creatorId)
33
+ },
34
+
35
+ async updater(plantationSetting) {
36
+ return await getRepository(User).findOne(plantationSetting.updaterId)
37
+ }
38
+ }
@@ -0,0 +1,46 @@
1
+ import { getRepository } from 'typeorm'
2
+ import { PlantationSetting } from '../../../entities'
3
+
4
+ export const updateMultiplePlantationSetting = {
5
+ async updateMultiplePlantationSetting(_: any, { patches }, context: any) {
6
+ const { domain, user } = context.state
7
+
8
+ let results = []
9
+ const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
10
+ const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
11
+ const plantationSettingRepo = getRepository(PlantationSetting)
12
+
13
+ if (_createRecords.length > 0) {
14
+ for (let i = 0; i < _createRecords.length; i++) {
15
+ const newRecord = _createRecords[i]
16
+
17
+ const result = await plantationSettingRepo.save({
18
+ ...newRecord,
19
+ domain: domain,
20
+ creator: user,
21
+ updater: user,
22
+ })
23
+
24
+ results.push({ ...result, cuFlag: '+' })
25
+ }
26
+ }
27
+
28
+ if (_updateRecords.length > 0) {
29
+ for (let i = 0; i < _updateRecords.length; i++) {
30
+ const newRecord = _updateRecords[i]
31
+ const plantationSetting = await plantationSettingRepo.findOne({ domain, id: newRecord.id})
32
+
33
+ const result = await plantationSettingRepo.save({
34
+ ...plantationSetting,
35
+ ...newRecord,
36
+ updater: user
37
+ })
38
+
39
+ results.push({ ...result, cuFlag: 'M' })
40
+ }
41
+ }
42
+
43
+ return results
44
+ }
45
+ }
46
+
@@ -0,0 +1,19 @@
1
+ import { getRepository } from 'typeorm'
2
+ import { PlantationSetting } from '../../../entities'
3
+
4
+ export const updatePlantationSetting = {
5
+ async updatePlantationSetting(_: any, { name, patch }, context: any) {
6
+ const { domain, user } = context.state
7
+
8
+ const repository = getRepository(PlantationSetting)
9
+ const plantationSetting = await repository.findOne({
10
+ where: { domain, name }
11
+ })
12
+
13
+ return await repository.save({
14
+ ...plantationSetting,
15
+ ...patch,
16
+ updater: user
17
+ })
18
+ }
19
+ }
@@ -1,5 +1,7 @@
1
- import { ListParam } from '@things-factory/shell'
2
1
  import { EntityManager } from 'typeorm'
2
+
3
+ import { ListParam } from '@things-factory/shell'
4
+
3
5
  import { Block } from '../../../entities'
4
6
 
5
7
  export const dailyProductionReports = {
@@ -31,25 +33,42 @@ export const dailyProductionReports = {
31
33
  .findOneOrFail({ where: { id: params.filters.filter(x => x.name == 'block')[0].value } })
32
34
 
33
35
  await tx.query(`
34
- CREATE TEMP TABLE temp_records AS (
35
- select block_id, coalesce(sum(field_bunches),0) AS today_field_bunches,
36
- coalesce(sum(ramp_weight),0) AS today_ramp_weight,
36
+ CREATE TEMP TABLE temp_blocks on commit drop AS (
37
+ WITH RECURSIVE b AS (
38
+ SELECT $1::uuid as block_id, * FROM blocks b
39
+ WHERE id = $1::uuid
40
+ AND b.deleted_at IS null
41
+ UNION ALL
42
+ SELECT $1::uuid as block_id, cb.* FROM blocks cb
43
+ INNER JOIN b ON b.id = cb.parent_block_id
44
+ WHERE cb.deleted_at IS null
45
+ )
46
+ SELECT * FROM b
47
+ );
48
+ `, [block.id]
49
+ )
50
+
51
+ await tx.query(`
52
+ CREATE TEMP TABLE temp_records on commit drop AS (
53
+ select blk.block_id, coalesce(sum(field_bunches),0) AS today_field_bunches,
54
+ round(coalesce(sum(ramp_weight),0)::numeric,4) AS today_ramp_weight,
37
55
  sum(case when transaction_type = 'HARVEST' then field_bunches else 0 end) as today_bunch_harvest,
38
56
  sum(case when transaction_type = 'LOADING' then -field_bunches else 0 end) as today_bunch_collected,
39
- sum(case when transaction_type = 'LOADING' then ramp_weight else 0 end) as today_ramp_weight_collected,
40
- sum(case when transaction_type = 'DISPATCHMENT' then -ramp_weight else 0 end) as today_weight_dispatch,
57
+ round(sum(case when transaction_type = 'LOADING' then ramp_weight else 0 end)::numeric,4) as today_ramp_weight_collected,
58
+ round(sum(case when transaction_type = 'DISPATCHMENT' then -ramp_weight else 0 end)::numeric,4) as today_weight_dispatch,
41
59
  transaction_date
42
- from record_transactions t2
60
+ from record_transactions t2
61
+ inner join temp_blocks blk on blk.id = t2.block_id
43
62
  where transaction_date <= $1
44
- and block_id = $2
45
- group by block_id, transaction_date
63
+ group by blk.block_id, transaction_date
46
64
  )
47
- `,
48
- [toDateString, block.id])
65
+ `,
66
+ [toDateString]
67
+ )
49
68
 
50
69
  await tx.query(
51
70
  `
52
- create temp table temp_daily_production_data as (
71
+ create temp table temp_daily_production_data on commit drop as (
53
72
  select *,
54
73
  prev_bunch_bal_in_field + today_bunch_harvest as today_bunch_in_field,
55
74
  prev_bunch_bal_in_field + today_bunch_harvest - today_bunch_collected as today_bunch_bal_in_field,
@@ -88,60 +107,52 @@ export const dailyProductionReports = {
88
107
  order by transaction_date
89
108
  ) as dt on dt.transaction_date::date = md.dateDay
90
109
  LEFT JOIN (
91
- select sum(harvesting_round) AS today_harvesting_round, sum(coverage) AS today_hectare_cover, harvest_date from daily_harvests dh
110
+ select sum(harvesting_round) AS today_harvesting_round, sum(coverage) AS today_hectare_cover, harvest_date
111
+ from daily_harvests dh
112
+ inner join temp_blocks blk on blk.id = dh.block_id
92
113
  where harvest_date between $1 and $2
93
- and block_id = $3
94
- group by block_id, harvest_date
114
+ group by blk.block_id, harvest_date
95
115
  ) as thr ON thr.harvest_date::date = md.dateDay
96
116
  LEFT JOIN (
97
- select count(*) AS today_out_turn, dh.harvest_date from daily_harvest_details dhd
117
+ select count(*) AS today_out_turn, dh.harvest_date
118
+ from daily_harvest_details dhd
98
119
  inner join daily_harvests dh on dh.id = dhd.daily_harvest_id
120
+ inner join temp_blocks blk on blk.id = dh.block_id
99
121
  where dh.harvest_date between $1 and $2
100
- and block_id = $3
101
- GROUP BY dh.block_id, dh.harvest_date
122
+ GROUP BY blk.block_id, dh.harvest_date
102
123
  ) as tot ON tot.harvest_date::date = md.dateDay
103
124
  ) dt
104
125
  )`,
105
126
  [fromDateString, toDateString, block.id]
106
127
  )
107
128
 
108
- const result: any = await tx.query(
109
- `
129
+ const result: any = await tx.query(`
110
130
  select * from temp_daily_production_data dt
111
- `
112
- )
131
+ `)
113
132
 
114
- const total: any = await tx.query(
115
- `
133
+ const total: any = await tx.query(`
116
134
  select count(*) from temp_daily_production_data
117
- `
118
- )
119
-
120
- await tx.query(
121
- `
122
- drop table temp_daily_production_data, temp_records
123
- `
124
- )
135
+ `)
125
136
 
126
137
  let items = result.map(itm => {
127
138
  return {
128
139
  block: itm.block,
129
140
  dateDay: itm.date_day,
130
- diffInBunches: itm.diff_in_bunches,
131
- prevBunchBalInField: itm.prev_bunch_bal_in_field,
132
- prevWeightBalInRamp: itm.prev_weight_bal_in_ramp,
133
- toDateBunchHarvest: itm.to_date_bunch_harvest,
141
+ diffInBunches: parseFloat(itm.diff_in_bunches).toFixed(1),
142
+ prevBunchBalInField: parseFloat(itm.prev_bunch_bal_in_field).toFixed(1),
143
+ prevWeightBalInRamp: parseFloat(itm.prev_weight_bal_in_ramp).toFixed(4),
144
+ toDateBunchHarvest: parseFloat(itm.to_date_bunch_harvest).toFixed(1),
134
145
  toDateOutTurn: itm.to_date_out_turn,
135
- toDateWeightDispatch: itm.to_date_weight_dispatch,
136
- todayBunchBalInField: itm.today_bunch_bal_in_field,
137
- todayBunchCollected: itm.today_bunch_collected,
138
- todayBunchHarvest: itm.today_bunch_harvest,
139
- todayBunchInField: itm.today_bunch_in_field,
146
+ toDateWeightDispatch: parseFloat(itm.to_date_weight_dispatch).toFixed(4),
147
+ todayBunchBalInField: parseFloat(itm.today_bunch_bal_in_field).toFixed(1),
148
+ todayBunchCollected: parseFloat(itm.today_bunch_collected).toFixed(1),
149
+ todayBunchHarvest: parseFloat(itm.today_bunch_harvest).toFixed(1),
150
+ todayBunchInField: parseFloat(itm.today_bunch_in_field).toFixed(1),
140
151
  todayHarvestingRound: itm.today_harvesting_round,
141
- todayHectareCover: itm.today_hectare_cover,
152
+ todayHectareCover: parseFloat(itm.today_hectare_cover).toFixed(4),
142
153
  todayOutTurn: itm.today_out_turn,
143
- todayWeightBalInRamp: itm.today_weight_bal_in_ramp,
144
- todayWeightDispatch: itm.today_weight_dispatch
154
+ todayWeightBalInRamp: parseFloat(itm.today_weight_bal_in_ramp).toFixed(4),
155
+ todayWeightDispatch: parseFloat(itm.today_weight_dispatch).toFixed(4)
145
156
  }
146
157
  })
147
158
 
@@ -1,5 +1,7 @@
1
- import { ListParam } from '@things-factory/shell'
2
1
  import { EntityManager } from 'typeorm'
2
+
3
+ import { ListParam } from '@things-factory/shell'
4
+
3
5
  import { Block } from '../../../entities'
4
6
 
5
7
  export const dailyStaffHarvestReports = {
@@ -30,43 +32,49 @@ export const dailyStaffHarvestReports = {
30
32
  .getRepository(Block)
31
33
  .findOneOrFail({ where: { id: params.filters.filter(x => x.name == 'block')[0].value } })
32
34
 
35
+ await tx.query(`
36
+ CREATE TEMP TABLE temp_blocks on commit drop AS (
37
+ WITH RECURSIVE b AS (
38
+ SELECT $1::uuid as block_id, * FROM blocks b
39
+ WHERE id = $1::uuid
40
+ AND b.deleted_at IS null
41
+ UNION ALL
42
+ SELECT $1::uuid as block_id, cb.* FROM blocks cb
43
+ INNER JOIN b ON b.id = cb.parent_block_id
44
+ WHERE cb.deleted_at IS null
45
+ )
46
+ SELECT * FROM b
47
+ );
48
+ `, [block.id]
49
+ )
50
+
33
51
  await tx.query(
34
52
  `
35
- create temp table temp_daily_staff_harvest_data as (
53
+ create temp table temp_daily_staff_harvest_data on commit drop as (
36
54
  select "harvestDate"::varchar as "harvestDate", "blockName"::varchar, "staffName"::varchar, sum("totalBunchHarvested")::varchar as "totalBunchHarvested" from (
37
55
  select dh.harvest_date::date as "harvestDate", b2."name" as "blockName", os."name" as "staffName",
38
56
  dhd.total_bunch_harvested as "totalBunchHarvested"
39
57
  from daily_harvest_details dhd
40
58
  inner join daily_harvests dh on dh.id = dhd.daily_harvest_id
59
+ inner join temp_blocks blk on blk.id = dh.block_id
41
60
  inner join organization_staffs os on os.id = dhd.organization_staff_id
42
- inner join blocks b2 on b2.id = dh.block_id
43
- where dh.block_id = $1
44
- and dh.harvest_date::date between $2 and $3
61
+ inner join blocks b2 on b2.id = blk.block_id
62
+ where dh.harvest_date::date between $1 and $2
45
63
  ) as dt
46
64
  group by "harvestDate", "blockName", "staffName"
47
65
  order by "staffName", "harvestDate"
48
66
  )
49
67
  `,
50
- [block.id, fromDateString, toDateString]
68
+ [fromDateString, toDateString]
51
69
  )
52
70
 
53
- const result: any = await tx.query(
54
- `
71
+ const result: any = await tx.query(`
55
72
  select * from temp_daily_staff_harvest_data dt
56
- `
57
- )
73
+ `)
58
74
 
59
- const total: any = await tx.query(
60
- `
75
+ const total: any = await tx.query(`
61
76
  select count(*) from temp_daily_staff_harvest_data
62
- `
63
- )
64
-
65
- await tx.query(
66
- `
67
- drop table temp_daily_staff_harvest_data
68
- `
69
- )
77
+ `)
70
78
 
71
79
  return { items: result, total: total[0].count }
72
80
  } catch (error) {
@@ -1,14 +1,20 @@
1
1
  import { dailyProductionReports } from './daily-production-reports'
2
2
  import { monthlyProductionReports } from './monthly-production-reports'
3
+ import { monthlyDispatchSummaryReports } from './monthly-dispatch-summary-reports'
3
4
  import { yearlyProductionReports } from './yearly-production-reports'
4
5
  import { dailyStaffHarvestReports } from './daily-staff-harvest-reports'
6
+ import { monthlyBlockDispatchReports } from './monthly-block-dispatch-reports'
7
+ import { monthlyFfbSaleReports } from './monthly-ffb-sale-reports'
5
8
 
6
9
  export const ReportResolver = {
7
10
  Query: {
8
11
  ...dailyProductionReports,
9
12
  ...monthlyProductionReports,
13
+ ...monthlyDispatchSummaryReports,
10
14
  ...yearlyProductionReports,
11
- ...dailyStaffHarvestReports
15
+ ...dailyStaffHarvestReports,
16
+ ...monthlyBlockDispatchReports,
17
+ ...monthlyFfbSaleReports
12
18
  },
13
19
  Mutation: {}
14
20
  }
@@ -0,0 +1,112 @@
1
+ import { EntityManager, getRepository, Not, IsNull } from 'typeorm'
2
+
3
+ import { ListParam, Domain } from '@things-factory/shell'
4
+ import { Ramp } from '../../../entities'
5
+
6
+ export const monthlyBlockDispatchReports = {
7
+ async monthlyBlockDispatchReports(_: any, params: ListParam, context: any) {
8
+ try {
9
+ const { domain, tx }: { domain: Domain, tx: EntityManager } = context.state
10
+
11
+ let year = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[0])
12
+ let month = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[1])
13
+
14
+ let fromDate = new Date(year, month - 1, 1)
15
+ let toDate = new Date(year, month, 1)
16
+ toDate.setDate(toDate.getDate() - 1)
17
+
18
+ let fromDateString = [
19
+ fromDate.getFullYear().toString(),
20
+ String(fromDate.getMonth() + 1).padStart(2, '0'),
21
+ '01'
22
+ ].join('-')
23
+
24
+ let toDateString = [
25
+ toDate.getFullYear().toString(),
26
+ String(toDate.getMonth() + 1).padStart(2, '0'),
27
+ String(toDate.getDate()).padStart(2, '0')
28
+ ].join('-')
29
+
30
+ let ramps = await getRepository(Ramp).find({
31
+ where: { domain: domain.id, deletedAt: IsNull() },
32
+ relations: ['block']
33
+ })
34
+
35
+
36
+ // -- WHERE dd.dispatch_at::timestamp between $1::timestamp and $2::timestamp
37
+ // [fromDateString, toDateString]
38
+ await tx.query(`create extension if not exists tablefunc`)
39
+
40
+ await tx.query(
41
+ `
42
+ CREATE TEMP TABLE raw_block_dispatch ON COMMIT DROP AS (
43
+ SELECT dd.id, b.name AS block_name,
44
+ COALESCE(ddd.adjusted_weight, ddd.collected_ramp_weight, 0) AS weight
45
+ FROM daily_dispatches dd
46
+ INNER JOIN daily_dispatch_details ddd ON ddd.daily_dispatch_id = dd.id
47
+ INNER JOIN ramps r ON r.id = ddd.ramp_id
48
+ INNER JOIN blocks b ON b.id = r.block_id
49
+ WHERE dd.dispatch_at::timestamp between $1::timestamp and $2::timestamp
50
+ )
51
+ `, [fromDateString, toDateString]
52
+ )
53
+
54
+ await tx.query(
55
+ `
56
+ CREATE TEMP TABLE pivot_block_dispatch ON COMMIT DROP AS (
57
+ SELECT * FROM crosstab(
58
+ $$SELECT rbd.id, rbd.block_name, round(rbd.weight, 2 )::varchar FROM raw_block_dispatch rbd$$,
59
+ $$SELECT b.name FROM ramps r INNER JOIN blocks b ON b.id = r.block_id WHERE r.deleted_at IS NULL$$
60
+ ) AS ("id" uuid, ${ramps.map(ramp => `"${ramp.block.name}" varchar`).join(',')})
61
+ );
62
+ `)
63
+
64
+ await tx.query(
65
+ `
66
+ CREATE TEMP TABLE temp_monthly_production_data ON COMMIT DROP AS (
67
+ SELECT
68
+ ROW_NUMBER() OVER(
69
+ PARTITION BY dd.dispatch_at::date
70
+ ORDER BY dd.dispatch_at
71
+ ) as rn
72
+ , dd.id, COALESCE(c.name, 'UNKNOWN') AS "dispatchTo"
73
+ , dd.transport_no as "lorryNo"
74
+ , dd.driver_identification as "driverIdentification"
75
+ , TO_CHAR(dd.dispatch_at:: DATE, 'dd/mm/yyyy') as "date"
76
+ , row_to_json((SELECT d FROM (SELECT ${ramps.map(ramp => `pbd."${ramp.block.name}"`).join(',')}) d))::varchar as "blockData"
77
+ , (SELECT sum(weight) FROM raw_block_dispatch rbd WHERE rbd.id = dd.id) AS "today"
78
+ FROM daily_dispatches dd
79
+ INNER JOIN pivot_block_dispatch pbd ON pbd.id = dd.id
80
+ LEFT JOIN organizations c ON c.id = dd.dispatch_to_id
81
+ );
82
+ `
83
+ )
84
+
85
+ const result: any = await tx.query(
86
+ `
87
+ select "id", "dispatchTo", "lorryNo", "driverIdentification",
88
+ CASE WHEN "rn" = 1 THEN "date" ELSE '' END AS "date", "blockData", "today",
89
+ coalesce(sum(today) over (order by date asc rows between unbounded preceding and current row), 0) as "todate"
90
+ from temp_monthly_production_data dt
91
+ `
92
+ )
93
+
94
+ const total: any = await tx.query(
95
+ `
96
+ select count(*) from temp_monthly_production_data
97
+ `
98
+ )
99
+
100
+
101
+ return {
102
+ items: result.map(itm => {
103
+ return {
104
+ ...itm
105
+ }
106
+ }), total: total[0].count
107
+ }
108
+ } catch (error) {
109
+ throw error
110
+ }
111
+ }
112
+ }