@things-factory/operato-pms 3.8.0 → 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 +2 -2
  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
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deletePlantationSettings = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const entities_1 = require("../../../entities");
6
+ exports.deletePlantationSettings = {
7
+ async deletePlantationSettings(_, { names }, context) {
8
+ const { domain, user } = context.state;
9
+ await (0, typeorm_1.getRepository)(entities_1.PlantationSetting).delete({
10
+ domain,
11
+ name: (0, typeorm_1.In)(names)
12
+ });
13
+ return true;
14
+ }
15
+ };
16
+ //# sourceMappingURL=delete-plantation-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-plantation-settings.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/plantation-setting/delete-plantation-settings.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,gDAAqD;AAExC,QAAA,wBAAwB,GAAG;IACtC,KAAK,CAAC,wBAAwB,CAAC,CAAM,EAAE,EAAE,KAAK,EAAE,EAAE,OAAY;QAC5D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,MAAM,IAAA,uBAAa,EAAC,4BAAiB,CAAC,CAAC,MAAM,CAAC;YAC1C,MAAM;YACN,IAAI,EAAE,IAAA,YAAE,EAAC,KAAK,CAAC;SAClB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlantationSettingResolver = void 0;
4
+ const plantation_setting_query_1 = require("./plantation-setting-query");
5
+ const update_plantation_setting_1 = require("./update-plantation-setting");
6
+ const update_multiple_plantation_setting_1 = require("./update-multiple-plantation-setting");
7
+ const create_plantation_setting_1 = require("./create-plantation-setting");
8
+ const delete_plantation_setting_1 = require("./delete-plantation-setting");
9
+ const delete_plantation_settings_1 = require("./delete-plantation-settings");
10
+ exports.PlantationSettingResolver = {
11
+ PlantationSetting: plantation_setting_query_1.PlantationSetting,
12
+ Query: plantation_setting_query_1.Query,
13
+ Mutation: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, update_plantation_setting_1.updatePlantationSetting), update_multiple_plantation_setting_1.updateMultiplePlantationSetting), create_plantation_setting_1.createPlantationSetting), delete_plantation_setting_1.deletePlantationSetting), delete_plantation_settings_1.deletePlantationSettings)
14
+ };
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/plantation-setting/index.ts"],"names":[],"mappings":";;;AAAA,yEAAqE;AAErE,2EAAqE;AACrE,6FAAsF;AACtF,2EAAqE;AACrE,2EAAqE;AACrE,6EAAuE;AAE1D,QAAA,yBAAyB,GAAG;IACvC,iBAAiB,EAAjB,4CAAiB;IACjB,KAAK,EAAL,gCAAK;IACL,QAAQ,4EACH,mDAAuB,GACvB,oEAA+B,GAC/B,mDAAuB,GACvB,mDAAuB,GACvB,qDAAwB,CAC5B;CACF,CAAA"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlantationSetting = exports.Query = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const shell_1 = require("@things-factory/shell");
6
+ const auth_base_1 = require("@things-factory/auth-base");
7
+ const entities_1 = require("../../../entities");
8
+ exports.Query = {
9
+ async plantationSetting(_, { name }, context) {
10
+ const { domain, user } = context.state;
11
+ const repository = (0, typeorm_1.getRepository)(entities_1.PlantationSetting);
12
+ return await repository.findOne({
13
+ where: { domain, name }
14
+ });
15
+ },
16
+ async plantationSettings(_, params, context) {
17
+ const convertedParams = (0, shell_1.convertListParams)(params);
18
+ const [items, total] = await (0, typeorm_1.getRepository)(entities_1.PlantationSetting).findAndCount(Object.assign({}, convertedParams));
19
+ return { items, total };
20
+ }
21
+ };
22
+ exports.PlantationSetting = {
23
+ async domain(plantationSetting) {
24
+ return await (0, typeorm_1.getRepository)(shell_1.Domain).findOne(plantationSetting.domainId);
25
+ },
26
+ async creator(plantationSetting) {
27
+ return await (0, typeorm_1.getRepository)(auth_base_1.User).findOne(plantationSetting.creatorId);
28
+ },
29
+ async updater(plantationSetting) {
30
+ return await (0, typeorm_1.getRepository)(auth_base_1.User).findOne(plantationSetting.updaterId);
31
+ }
32
+ };
33
+ //# sourceMappingURL=plantation-setting-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plantation-setting-query.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/plantation-setting/plantation-setting-query.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,iDAA4E;AAC5E,yDAAgD;AAChD,gDAAgF;AAEnE,QAAA,KAAK,GAAG;IACnB,KAAK,CAAC,iBAAiB,CAAC,CAAM,EAAE,EAAE,IAAI,EAAE,EAAE,OAAY;QACpD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QACtC,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,4BAAuB,CAAC,CAAA;QAEzD,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACxB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAY;QAC9D,MAAM,eAAe,GAAG,IAAA,yBAAiB,EAAC,MAAM,CAAC,CAAA;QACjD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,IAAA,uBAAa,EAAC,4BAAuB,CAAC,CAAC,YAAY,mBAC3E,eAAe,EAClB,CAAA;QAEF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;CACF,CAAA;AAEY,QAAA,iBAAiB,GAAG;IAC/B,KAAK,CAAC,MAAM,CAAC,iBAAiB;QAC5B,OAAO,MAAM,IAAA,uBAAa,EAAC,cAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,iBAAiB;QAC7B,OAAO,MAAM,IAAA,uBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,iBAAiB;QAC7B,OAAO,MAAM,IAAA,uBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;IACvE,CAAC;CACF,CAAA"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateMultiplePlantationSetting = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const entities_1 = require("../../../entities");
6
+ exports.updateMultiplePlantationSetting = {
7
+ async updateMultiplePlantationSetting(_, { patches }, context) {
8
+ const { domain, user } = context.state;
9
+ let results = [];
10
+ const _createRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === '+');
11
+ const _updateRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === 'M');
12
+ const plantationSettingRepo = (0, typeorm_1.getRepository)(entities_1.PlantationSetting);
13
+ if (_createRecords.length > 0) {
14
+ for (let i = 0; i < _createRecords.length; i++) {
15
+ const newRecord = _createRecords[i];
16
+ const result = await plantationSettingRepo.save(Object.assign(Object.assign({}, newRecord), { domain: domain, creator: user, updater: user }));
17
+ results.push(Object.assign(Object.assign({}, result), { cuFlag: '+' }));
18
+ }
19
+ }
20
+ if (_updateRecords.length > 0) {
21
+ for (let i = 0; i < _updateRecords.length; i++) {
22
+ const newRecord = _updateRecords[i];
23
+ const plantationSetting = await plantationSettingRepo.findOne({ domain, id: newRecord.id });
24
+ const result = await plantationSettingRepo.save(Object.assign(Object.assign(Object.assign({}, plantationSetting), newRecord), { updater: user }));
25
+ results.push(Object.assign(Object.assign({}, result), { cuFlag: 'M' }));
26
+ }
27
+ }
28
+ return results;
29
+ }
30
+ };
31
+ //# sourceMappingURL=update-multiple-plantation-setting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-multiple-plantation-setting.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,gDAAqD;AAExC,QAAA,+BAA+B,GAAG;IAC7C,KAAK,CAAC,+BAA+B,CAAC,CAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAY;QACrE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,IAAI,OAAO,GAAG,EAAE,CAAA;QAChB,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAA;QACzF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAA;QACzF,MAAM,qBAAqB,GAAG,IAAA,uBAAa,EAAC,4BAAiB,CAAC,CAAA;QAE9D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;gBAEnC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,iCAC1C,SAAS,KACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;gBAEF,OAAO,CAAC,IAAI,iCAAM,MAAM,KAAE,MAAM,EAAE,GAAG,IAAG,CAAA;aACzC;SACJ;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;gBACnC,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAC,CAAC,CAAA;gBAE1F,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,+CAC1C,iBAAiB,GACjB,SAAS,KACZ,OAAO,EAAE,IAAI,IACb,CAAA;gBAEF,OAAO,CAAC,IAAI,iCAAM,MAAM,KAAE,MAAM,EAAE,GAAG,IAAG,CAAA;aACzC;SACJ;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAA"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updatePlantationSetting = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const entities_1 = require("../../../entities");
6
+ exports.updatePlantationSetting = {
7
+ async updatePlantationSetting(_, { name, patch }, context) {
8
+ const { domain, user } = context.state;
9
+ const repository = (0, typeorm_1.getRepository)(entities_1.PlantationSetting);
10
+ const plantationSetting = await repository.findOne({
11
+ where: { domain, name }
12
+ });
13
+ return await repository.save(Object.assign(Object.assign(Object.assign({}, plantationSetting), patch), { updater: user }));
14
+ }
15
+ };
16
+ //# sourceMappingURL=update-plantation-setting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-plantation-setting.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/plantation-setting/update-plantation-setting.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,gDAAqD;AAExC,QAAA,uBAAuB,GAAG;IACrC,KAAK,CAAC,uBAAuB,CAAC,CAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAY;QACjE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,4BAAiB,CAAC,CAAA;QACnD,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YACjD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACxB,CAAC,CAAA;QAEF,OAAO,MAAM,UAAU,CAAC,IAAI,+CACvB,iBAAiB,GACjB,KAAK,KACR,OAAO,EAAE,IAAI,IACb,CAAA;IACJ,CAAC;CACF,CAAA"}
@@ -25,22 +25,36 @@ exports.dailyProductionReports = {
25
25
  .getRepository(entities_1.Block)
26
26
  .findOneOrFail({ where: { id: params.filters.filter(x => x.name == 'block')[0].value } });
27
27
  await tx.query(`
28
- CREATE TEMP TABLE temp_records AS (
29
- select block_id, coalesce(sum(field_bunches),0) AS today_field_bunches,
30
- coalesce(sum(ramp_weight),0) AS today_ramp_weight,
28
+ CREATE TEMP TABLE temp_blocks on commit drop AS (
29
+ WITH RECURSIVE b AS (
30
+ SELECT $1::uuid as block_id, * FROM blocks b
31
+ WHERE id = $1::uuid
32
+ AND b.deleted_at IS null
33
+ UNION ALL
34
+ SELECT $1::uuid as block_id, cb.* FROM blocks cb
35
+ INNER JOIN b ON b.id = cb.parent_block_id
36
+ WHERE cb.deleted_at IS null
37
+ )
38
+ SELECT * FROM b
39
+ );
40
+ `, [block.id]);
41
+ await tx.query(`
42
+ CREATE TEMP TABLE temp_records on commit drop AS (
43
+ select blk.block_id, coalesce(sum(field_bunches),0) AS today_field_bunches,
44
+ round(coalesce(sum(ramp_weight),0)::numeric,4) AS today_ramp_weight,
31
45
  sum(case when transaction_type = 'HARVEST' then field_bunches else 0 end) as today_bunch_harvest,
32
46
  sum(case when transaction_type = 'LOADING' then -field_bunches else 0 end) as today_bunch_collected,
33
- sum(case when transaction_type = 'LOADING' then ramp_weight else 0 end) as today_ramp_weight_collected,
34
- sum(case when transaction_type = 'DISPATCHMENT' then -ramp_weight else 0 end) as today_weight_dispatch,
47
+ round(sum(case when transaction_type = 'LOADING' then ramp_weight else 0 end)::numeric,4) as today_ramp_weight_collected,
48
+ round(sum(case when transaction_type = 'DISPATCHMENT' then -ramp_weight else 0 end)::numeric,4) as today_weight_dispatch,
35
49
  transaction_date
36
- from record_transactions t2
50
+ from record_transactions t2
51
+ inner join temp_blocks blk on blk.id = t2.block_id
37
52
  where transaction_date <= $1
38
- and block_id = $2
39
- group by block_id, transaction_date
53
+ group by blk.block_id, transaction_date
40
54
  )
41
- `, [toDateString, block.id]);
55
+ `, [toDateString]);
42
56
  await tx.query(`
43
- create temp table temp_daily_production_data as (
57
+ create temp table temp_daily_production_data on commit drop as (
44
58
  select *,
45
59
  prev_bunch_bal_in_field + today_bunch_harvest as today_bunch_in_field,
46
60
  prev_bunch_bal_in_field + today_bunch_harvest - today_bunch_collected as today_bunch_bal_in_field,
@@ -79,48 +93,47 @@ exports.dailyProductionReports = {
79
93
  order by transaction_date
80
94
  ) as dt on dt.transaction_date::date = md.dateDay
81
95
  LEFT JOIN (
82
- select sum(harvesting_round) AS today_harvesting_round, sum(coverage) AS today_hectare_cover, harvest_date from daily_harvests dh
96
+ select sum(harvesting_round) AS today_harvesting_round, sum(coverage) AS today_hectare_cover, harvest_date
97
+ from daily_harvests dh
98
+ inner join temp_blocks blk on blk.id = dh.block_id
83
99
  where harvest_date between $1 and $2
84
- and block_id = $3
85
- group by block_id, harvest_date
100
+ group by blk.block_id, harvest_date
86
101
  ) as thr ON thr.harvest_date::date = md.dateDay
87
102
  LEFT JOIN (
88
- select count(*) AS today_out_turn, dh.harvest_date from daily_harvest_details dhd
103
+ select count(*) AS today_out_turn, dh.harvest_date
104
+ from daily_harvest_details dhd
89
105
  inner join daily_harvests dh on dh.id = dhd.daily_harvest_id
106
+ inner join temp_blocks blk on blk.id = dh.block_id
90
107
  where dh.harvest_date between $1 and $2
91
- and block_id = $3
92
- GROUP BY dh.block_id, dh.harvest_date
108
+ GROUP BY blk.block_id, dh.harvest_date
93
109
  ) as tot ON tot.harvest_date::date = md.dateDay
94
110
  ) dt
95
111
  )`, [fromDateString, toDateString, block.id]);
96
112
  const result = await tx.query(`
97
113
  select * from temp_daily_production_data dt
98
- `);
114
+ `);
99
115
  const total = await tx.query(`
100
116
  select count(*) from temp_daily_production_data
101
- `);
102
- await tx.query(`
103
- drop table temp_daily_production_data, temp_records
104
- `);
117
+ `);
105
118
  let items = result.map(itm => {
106
119
  return {
107
120
  block: itm.block,
108
121
  dateDay: itm.date_day,
109
- diffInBunches: itm.diff_in_bunches,
110
- prevBunchBalInField: itm.prev_bunch_bal_in_field,
111
- prevWeightBalInRamp: itm.prev_weight_bal_in_ramp,
112
- toDateBunchHarvest: itm.to_date_bunch_harvest,
122
+ diffInBunches: parseFloat(itm.diff_in_bunches).toFixed(1),
123
+ prevBunchBalInField: parseFloat(itm.prev_bunch_bal_in_field).toFixed(1),
124
+ prevWeightBalInRamp: parseFloat(itm.prev_weight_bal_in_ramp).toFixed(4),
125
+ toDateBunchHarvest: parseFloat(itm.to_date_bunch_harvest).toFixed(1),
113
126
  toDateOutTurn: itm.to_date_out_turn,
114
- toDateWeightDispatch: itm.to_date_weight_dispatch,
115
- todayBunchBalInField: itm.today_bunch_bal_in_field,
116
- todayBunchCollected: itm.today_bunch_collected,
117
- todayBunchHarvest: itm.today_bunch_harvest,
118
- todayBunchInField: itm.today_bunch_in_field,
127
+ toDateWeightDispatch: parseFloat(itm.to_date_weight_dispatch).toFixed(4),
128
+ todayBunchBalInField: parseFloat(itm.today_bunch_bal_in_field).toFixed(1),
129
+ todayBunchCollected: parseFloat(itm.today_bunch_collected).toFixed(1),
130
+ todayBunchHarvest: parseFloat(itm.today_bunch_harvest).toFixed(1),
131
+ todayBunchInField: parseFloat(itm.today_bunch_in_field).toFixed(1),
119
132
  todayHarvestingRound: itm.today_harvesting_round,
120
- todayHectareCover: itm.today_hectare_cover,
133
+ todayHectareCover: parseFloat(itm.today_hectare_cover).toFixed(4),
121
134
  todayOutTurn: itm.today_out_turn,
122
- todayWeightBalInRamp: itm.today_weight_bal_in_ramp,
123
- todayWeightDispatch: itm.today_weight_dispatch
135
+ todayWeightBalInRamp: parseFloat(itm.today_weight_bal_in_ramp).toFixed(4),
136
+ todayWeightDispatch: parseFloat(itm.today_weight_dispatch).toFixed(4)
124
137
  };
125
138
  });
126
139
  return { items, total: total[0].count };
@@ -1 +1 @@
1
- {"version":3,"file":"daily-production-reports.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/report/daily-production-reports.ts"],"names":[],"mappings":";;;AAEA,gDAAyC;AAE5B,QAAA,sBAAsB,GAAG;IACpC,KAAK,CAAC,sBAAsB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAY;QAClE,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAA0B,OAAO,CAAC,KAAK,CAAA;YAEnD,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzF,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAE1F,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YAC3C,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;YACrC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;YAEpC,IAAI,cAAc,GAAG;gBACnB,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;gBACjC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBAChD,IAAI;aACL,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEX,IAAI,YAAY,GAAG;gBACjB,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;gBAC/B,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;aAC1C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEX,MAAM,KAAK,GAAG,MAAM,EAAE;iBACnB,aAAa,CAAC,gBAAK,CAAC;iBACpB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAE3F,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;;;;;OAcd,EACD,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;YAEzB,MAAM,EAAE,CAAC,KAAK,CACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAiCuC,cAAc,yBAAyB,YAAY;;;;;;;;;;;;;;;;;;;;YAoBtF,EACJ,CAAC,cAAc,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,CACzC,CAAA;YAED,MAAM,MAAM,GAAQ,MAAM,EAAE,CAAC,KAAK,CAChC;;WAEG,CACJ,CAAA;YAED,MAAM,KAAK,GAAQ,MAAM,EAAE,CAAC,KAAK,CAC/B;;WAEG,CACJ,CAAA;YAED,MAAM,EAAE,CAAC,KAAK,CACZ;;WAEG,CACJ,CAAA;YAED,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO;oBACL,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,OAAO,EAAE,GAAG,CAAC,QAAQ;oBACrB,aAAa,EAAE,GAAG,CAAC,eAAe;oBAClC,mBAAmB,EAAE,GAAG,CAAC,uBAAuB;oBAChD,mBAAmB,EAAE,GAAG,CAAC,uBAAuB;oBAChD,kBAAkB,EAAE,GAAG,CAAC,qBAAqB;oBAC7C,aAAa,EAAE,GAAG,CAAC,gBAAgB;oBACnC,oBAAoB,EAAE,GAAG,CAAC,uBAAuB;oBACjD,oBAAoB,EAAE,GAAG,CAAC,wBAAwB;oBAClD,mBAAmB,EAAE,GAAG,CAAC,qBAAqB;oBAC9C,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;oBAC1C,iBAAiB,EAAE,GAAG,CAAC,oBAAoB;oBAC3C,oBAAoB,EAAE,GAAG,CAAC,sBAAsB;oBAChD,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;oBAC1C,YAAY,EAAE,GAAG,CAAC,cAAc;oBAChC,oBAAoB,EAAE,GAAG,CAAC,wBAAwB;oBAClD,mBAAmB,EAAE,GAAG,CAAC,qBAAqB;iBAC/C,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;SACxC;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"daily-production-reports.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/report/daily-production-reports.ts"],"names":[],"mappings":"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"}
@@ -25,30 +25,41 @@ exports.dailyStaffHarvestReports = {
25
25
  .getRepository(entities_1.Block)
26
26
  .findOneOrFail({ where: { id: params.filters.filter(x => x.name == 'block')[0].value } });
27
27
  await tx.query(`
28
- create temp table temp_daily_staff_harvest_data as (
28
+ CREATE TEMP TABLE temp_blocks on commit drop AS (
29
+ WITH RECURSIVE b AS (
30
+ SELECT $1::uuid as block_id, * FROM blocks b
31
+ WHERE id = $1::uuid
32
+ AND b.deleted_at IS null
33
+ UNION ALL
34
+ SELECT $1::uuid as block_id, cb.* FROM blocks cb
35
+ INNER JOIN b ON b.id = cb.parent_block_id
36
+ WHERE cb.deleted_at IS null
37
+ )
38
+ SELECT * FROM b
39
+ );
40
+ `, [block.id]);
41
+ await tx.query(`
42
+ create temp table temp_daily_staff_harvest_data on commit drop as (
29
43
  select "harvestDate"::varchar as "harvestDate", "blockName"::varchar, "staffName"::varchar, sum("totalBunchHarvested")::varchar as "totalBunchHarvested" from (
30
44
  select dh.harvest_date::date as "harvestDate", b2."name" as "blockName", os."name" as "staffName",
31
45
  dhd.total_bunch_harvested as "totalBunchHarvested"
32
46
  from daily_harvest_details dhd
33
47
  inner join daily_harvests dh on dh.id = dhd.daily_harvest_id
48
+ inner join temp_blocks blk on blk.id = dh.block_id
34
49
  inner join organization_staffs os on os.id = dhd.organization_staff_id
35
- inner join blocks b2 on b2.id = dh.block_id
36
- where dh.block_id = $1
37
- and dh.harvest_date::date between $2 and $3
50
+ inner join blocks b2 on b2.id = blk.block_id
51
+ where dh.harvest_date::date between $1 and $2
38
52
  ) as dt
39
53
  group by "harvestDate", "blockName", "staffName"
40
54
  order by "staffName", "harvestDate"
41
55
  )
42
- `, [block.id, fromDateString, toDateString]);
56
+ `, [fromDateString, toDateString]);
43
57
  const result = await tx.query(`
44
58
  select * from temp_daily_staff_harvest_data dt
45
- `);
59
+ `);
46
60
  const total = await tx.query(`
47
61
  select count(*) from temp_daily_staff_harvest_data
48
- `);
49
- await tx.query(`
50
- drop table temp_daily_staff_harvest_data
51
- `);
62
+ `);
52
63
  return { items: result, total: total[0].count };
53
64
  }
54
65
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"daily-staff-harvest-reports.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/report/daily-staff-harvest-reports.ts"],"names":[],"mappings":";;;AAEA,gDAAyC;AAE5B,QAAA,wBAAwB,GAAG;IACtC,KAAK,CAAC,wBAAwB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAY;QACpE,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAA0B,OAAO,CAAC,KAAK,CAAA;YAEnD,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzF,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAE1F,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YAC3C,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;YACrC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;YAEpC,IAAI,cAAc,GAAG;gBACnB,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;gBACjC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBAChD,IAAI;aACL,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEX,IAAI,YAAY,GAAG;gBACjB,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;gBAC/B,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;aAC1C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEX,MAAM,KAAK,GAAG,MAAM,EAAE;iBACnB,aAAa,CAAC,gBAAK,CAAC;iBACpB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAE3F,MAAM,EAAE,CAAC,KAAK,CACZ;;;;;;;;;;;;;;;WAeG,EACH,CAAC,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,CACzC,CAAA;YAED,MAAM,MAAM,GAAQ,MAAM,EAAE,CAAC,KAAK,CAChC;;WAEG,CACJ,CAAA;YAED,MAAM,KAAK,GAAQ,MAAM,EAAE,CAAC,KAAK,CAC/B;;WAEG,CACJ,CAAA;YAED,MAAM,EAAE,CAAC,KAAK,CACZ;;WAEG,CACJ,CAAA;YAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;SAChD;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"daily-staff-harvest-reports.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/report/daily-staff-harvest-reports.ts"],"names":[],"mappings":";;;AAIA,gDAAyC;AAE5B,QAAA,wBAAwB,GAAG;IACtC,KAAK,CAAC,wBAAwB,CAAC,CAAM,EAAE,MAAiB,EAAE,OAAY;QACpE,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAA0B,OAAO,CAAC,KAAK,CAAA;YAEnD,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzF,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAE1F,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YAC3C,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;YACrC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;YAEpC,IAAI,cAAc,GAAG;gBACnB,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;gBACjC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBAChD,IAAI;aACL,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEX,IAAI,YAAY,GAAG;gBACjB,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;gBAC/B,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;aAC1C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEX,MAAM,KAAK,GAAG,MAAM,EAAE;iBACnB,aAAa,CAAC,gBAAK,CAAC;iBACpB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAE3F,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;;;;OAad,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CACZ,CAAA;YAED,MAAM,EAAE,CAAC,KAAK,CACZ;;;;;;;;;;;;;;;WAeG,EACH,CAAC,cAAc,EAAE,YAAY,CAAC,CAC/B,CAAA;YAED,MAAM,MAAM,GAAQ,MAAM,EAAE,CAAC,KAAK,CAAC;;OAElC,CAAC,CAAA;YAEF,MAAM,KAAK,GAAQ,MAAM,EAAE,CAAC,KAAK,CAAC;;OAEjC,CAAC,CAAA;YAEF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;SAChD;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;CACF,CAAA"}
@@ -3,10 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ReportResolver = void 0;
4
4
  const daily_production_reports_1 = require("./daily-production-reports");
5
5
  const monthly_production_reports_1 = require("./monthly-production-reports");
6
+ const monthly_dispatch_summary_reports_1 = require("./monthly-dispatch-summary-reports");
6
7
  const yearly_production_reports_1 = require("./yearly-production-reports");
7
8
  const daily_staff_harvest_reports_1 = require("./daily-staff-harvest-reports");
9
+ const monthly_block_dispatch_reports_1 = require("./monthly-block-dispatch-reports");
10
+ const monthly_ffb_sale_reports_1 = require("./monthly-ffb-sale-reports");
8
11
  exports.ReportResolver = {
9
- Query: Object.assign(Object.assign(Object.assign(Object.assign({}, daily_production_reports_1.dailyProductionReports), monthly_production_reports_1.monthlyProductionReports), yearly_production_reports_1.yearlyProductionReports), daily_staff_harvest_reports_1.dailyStaffHarvestReports),
12
+ Query: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, daily_production_reports_1.dailyProductionReports), monthly_production_reports_1.monthlyProductionReports), monthly_dispatch_summary_reports_1.monthlyDispatchSummaryReports), yearly_production_reports_1.yearlyProductionReports), daily_staff_harvest_reports_1.dailyStaffHarvestReports), monthly_block_dispatch_reports_1.monthlyBlockDispatchReports), monthly_ffb_sale_reports_1.monthlyFfbSaleReports),
10
13
  Mutation: {}
11
14
  };
12
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/report/index.ts"],"names":[],"mappings":";;;AAAA,yEAAmE;AACnE,6EAAuE;AACvE,2EAAqE;AACrE,+EAAwE;AAE3D,QAAA,cAAc,GAAG;IAC5B,KAAK,8DACA,iDAAsB,GACtB,qDAAwB,GACxB,mDAAuB,GACvB,sDAAwB,CAC5B;IACD,QAAQ,EAAE,EAAE;CACb,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/report/index.ts"],"names":[],"mappings":";;;AAAA,yEAAmE;AACnE,6EAAuE;AACvE,yFAAkF;AAClF,2EAAqE;AACrE,+EAAwE;AACxE,qFAA8E;AAC9E,yEAAkE;AAErD,QAAA,cAAc,GAAG;IAC5B,KAAK,wGACA,iDAAsB,GACtB,qDAAwB,GACxB,gEAA6B,GAC7B,mDAAuB,GACvB,sDAAwB,GACxB,4DAA2B,GAC3B,gDAAqB,CACzB;IACD,QAAQ,EAAE,EAAE;CACb,CAAA"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.monthlyBlockDispatchReports = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const entities_1 = require("../../../entities");
6
+ exports.monthlyBlockDispatchReports = {
7
+ async monthlyBlockDispatchReports(_, params, context) {
8
+ try {
9
+ const { domain, tx } = context.state;
10
+ let year = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[0]);
11
+ let month = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[1]);
12
+ let fromDate = new Date(year, month - 1, 1);
13
+ let toDate = new Date(year, month, 1);
14
+ toDate.setDate(toDate.getDate() - 1);
15
+ let fromDateString = [
16
+ fromDate.getFullYear().toString(),
17
+ String(fromDate.getMonth() + 1).padStart(2, '0'),
18
+ '01'
19
+ ].join('-');
20
+ let toDateString = [
21
+ toDate.getFullYear().toString(),
22
+ String(toDate.getMonth() + 1).padStart(2, '0'),
23
+ String(toDate.getDate()).padStart(2, '0')
24
+ ].join('-');
25
+ let ramps = await (0, typeorm_1.getRepository)(entities_1.Ramp).find({
26
+ where: { domain: domain.id, deletedAt: (0, typeorm_1.IsNull)() },
27
+ relations: ['block']
28
+ });
29
+ // -- WHERE dd.dispatch_at::timestamp between $1::timestamp and $2::timestamp
30
+ // [fromDateString, toDateString]
31
+ await tx.query(`create extension if not exists tablefunc`);
32
+ await tx.query(`
33
+ CREATE TEMP TABLE raw_block_dispatch ON COMMIT DROP AS (
34
+ SELECT dd.id, b.name AS block_name,
35
+ COALESCE(ddd.adjusted_weight, ddd.collected_ramp_weight, 0) AS weight
36
+ FROM daily_dispatches dd
37
+ INNER JOIN daily_dispatch_details ddd ON ddd.daily_dispatch_id = dd.id
38
+ INNER JOIN ramps r ON r.id = ddd.ramp_id
39
+ INNER JOIN blocks b ON b.id = r.block_id
40
+ WHERE dd.dispatch_at::timestamp between $1::timestamp and $2::timestamp
41
+ )
42
+ `, [fromDateString, toDateString]);
43
+ await tx.query(`
44
+ CREATE TEMP TABLE pivot_block_dispatch ON COMMIT DROP AS (
45
+ SELECT * FROM crosstab(
46
+ $$SELECT rbd.id, rbd.block_name, round(rbd.weight, 2 )::varchar FROM raw_block_dispatch rbd$$,
47
+ $$SELECT b.name FROM ramps r INNER JOIN blocks b ON b.id = r.block_id WHERE r.deleted_at IS NULL$$
48
+ ) AS ("id" uuid, ${ramps.map(ramp => `"${ramp.block.name}" varchar`).join(',')})
49
+ );
50
+ `);
51
+ await tx.query(`
52
+ CREATE TEMP TABLE temp_monthly_production_data ON COMMIT DROP AS (
53
+ SELECT
54
+ ROW_NUMBER() OVER(
55
+ PARTITION BY dd.dispatch_at::date
56
+ ORDER BY dd.dispatch_at
57
+ ) as rn
58
+ , dd.id, COALESCE(c.name, 'UNKNOWN') AS "dispatchTo"
59
+ , dd.transport_no as "lorryNo"
60
+ , dd.driver_identification as "driverIdentification"
61
+ , TO_CHAR(dd.dispatch_at:: DATE, 'dd/mm/yyyy') as "date"
62
+ , row_to_json((SELECT d FROM (SELECT ${ramps.map(ramp => `pbd."${ramp.block.name}"`).join(',')}) d))::varchar as "blockData"
63
+ , (SELECT sum(weight) FROM raw_block_dispatch rbd WHERE rbd.id = dd.id) AS "today"
64
+ FROM daily_dispatches dd
65
+ INNER JOIN pivot_block_dispatch pbd ON pbd.id = dd.id
66
+ LEFT JOIN organizations c ON c.id = dd.dispatch_to_id
67
+ );
68
+ `);
69
+ const result = await tx.query(`
70
+ select "id", "dispatchTo", "lorryNo", "driverIdentification",
71
+ CASE WHEN "rn" = 1 THEN "date" ELSE '' END AS "date", "blockData", "today",
72
+ coalesce(sum(today) over (order by date asc rows between unbounded preceding and current row), 0) as "todate"
73
+ from temp_monthly_production_data dt
74
+ `);
75
+ const total = await tx.query(`
76
+ select count(*) from temp_monthly_production_data
77
+ `);
78
+ return {
79
+ items: result.map(itm => {
80
+ return Object.assign({}, itm);
81
+ }), total: total[0].count
82
+ };
83
+ }
84
+ catch (error) {
85
+ throw error;
86
+ }
87
+ }
88
+ };
89
+ //# sourceMappingURL=monthly-block-dispatch-reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monthly-block-dispatch-reports.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/report/monthly-block-dispatch-reports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.monthlyDispatchSummaryReports = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const entities_1 = require("../../../entities");
6
+ exports.monthlyDispatchSummaryReports = {
7
+ async monthlyDispatchSummaryReports(_, params, context) {
8
+ try {
9
+ const { domain, tx } = context.state;
10
+ let year = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[0]);
11
+ let month = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[1]);
12
+ let fromDate = new Date(year, month - 1, 1);
13
+ let toDate = new Date(year, month, 1);
14
+ toDate.setDate(toDate.getDate() - 1);
15
+ let fromDateString = [
16
+ fromDate.getFullYear().toString(),
17
+ String(fromDate.getMonth() + 1).padStart(2, '0'),
18
+ '01'
19
+ ].join('-');
20
+ let toDateString = [
21
+ toDate.getFullYear().toString(),
22
+ String(toDate.getMonth() + 1).padStart(2, '0'),
23
+ String(toDate.getDate()).padStart(2, '0')
24
+ ].join('-');
25
+ const org = await tx
26
+ .getRepository(entities_1.Organization)
27
+ .findOneOrFail({ where: { domain: domain.id, deletedAt: (0, typeorm_1.IsNull)(), id: params.filters.filter(x => x.name == 'organization')[0].value } });
28
+ await tx.query(`
29
+ CREATE TEMP TABLE raw_dispatch ON COMMIT DROP AS (
30
+ SELECT dd.*,
31
+ COALESCE((SELECT SUM(COALESCE(ddd.adjusted_weight, ddd.collected_ramp_weight, 0)) FROM daily_dispatch_details ddd WHERE ddd.daily_dispatch_id = dd.id),0) AS tonnage
32
+ FROM daily_dispatches dd
33
+ WHERE dd.dispatch_at::timestamp between $1::timestamp and $2::timestamp
34
+ AND dd.dispatch_to_id = $3
35
+ );
36
+ `, [fromDateString, toDateString, org.id]);
37
+ await tx.query(`
38
+ CREATE TEMP TABLE temp_monthly_dispatch_to_mill_data ON COMMIT DROP AS (
39
+ SELECT "id", dispatch_at AS "dispatchAt", transport_no AS "lorryNo",
40
+ driver_identification AS "driverIdentification", chit_no AS "chitNo", round(COALESCE(percentage,0)::numeric, 2)::varchar AS "percentage",
41
+ COALESCE(diapatch_to_name, 'UNKNOWN') AS "dispatchTo", "tonnage",
42
+ CASE WHEN reverse_rn = 1 THEN round((coalesce(sum(percentage) over (PARTITION BY dispatch_to_id, dispatch_at::date ORDER BY dispatch_at asc rows between unbounded preceding and current row), 0)/forward_rn)::numeric,2)::varchar ELSE '' END AS "todayAvg",
43
+ CASE WHEN reverse_rn = 1 THEN round((coalesce(sum(percentage) over (PARTITION BY dispatch_to_id ORDER BY dispatch_at asc rows between unbounded preceding and current row), 0)/forward_rn)::numeric,2)::varchar ELSE '' END AS "todateAvg",
44
+ CASE WHEN reverse_rn = 1 THEN round(coalesce(sum(tonnage) over (PARTITION BY dispatch_to_id, dispatch_at::date ORDER BY dispatch_at asc rows between unbounded preceding and current row), 0),2)::varchar ELSE '' END AS "today",
45
+ CASE WHEN reverse_rn = 1 THEN round(coalesce(sum(tonnage) over (PARTITION BY dispatch_to_id ORDER BY dispatch_at asc rows between unbounded preceding and current row), 0),2)::varchar ELSE '' END AS "todate"
46
+ FROM (
47
+ SELECT
48
+ ROW_NUMBER() OVER(
49
+ PARTITION BY rbd.dispatch_to_id, rbd.dispatch_at::date
50
+ ORDER BY rbd.dispatch_at ASC
51
+ ) as forward_rn
52
+ , ROW_NUMBER() OVER(
53
+ PARTITION BY rbd.dispatch_to_id, rbd.dispatch_at::date
54
+ ORDER BY rbd.dispatch_at DESC
55
+ ) as reverse_rn
56
+ , rbd.id
57
+ , rbd.dispatch_at
58
+ , rbd.transport_no
59
+ , rbd.driver_identification
60
+ , rbd.external_driver
61
+ , rbd.chit_no
62
+ , rbd.percentage
63
+ , rbd.dispatch_to_id
64
+ , c.name AS diapatch_to_name
65
+ , rbd.tonnage
66
+ FROM raw_dispatch rbd
67
+ LEFT JOIN organizations c ON c.id = rbd.dispatch_to_id
68
+ ORDER BY rbd.dispatch_to_id, rbd.dispatch_at
69
+ ) src
70
+ );
71
+ `);
72
+ const result = await tx.query(`
73
+ select * from temp_monthly_dispatch_to_mill_data dt
74
+ `);
75
+ const total = await tx.query(`
76
+ select count(*) from temp_monthly_dispatch_to_mill_data
77
+ `);
78
+ return {
79
+ items: result.map(itm => {
80
+ return Object.assign({}, itm);
81
+ }), total: total[0].count
82
+ };
83
+ }
84
+ catch (error) {
85
+ throw error;
86
+ }
87
+ }
88
+ };
89
+ //# sourceMappingURL=monthly-dispatch-summary-reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monthly-dispatch-summary-reports.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/report/monthly-dispatch-summary-reports.ts"],"names":[],"mappings":"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"}