@things-factory/operato-pms 4.3.671 → 4.3.673

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 (457) hide show
  1. package/dist-server/constants/block.js +8 -0
  2. package/dist-server/constants/block.js.map +1 -0
  3. package/dist-server/constants/index.js +25 -0
  4. package/dist-server/constants/index.js.map +1 -0
  5. package/dist-server/constants/inventory.js +12 -0
  6. package/dist-server/constants/inventory.js.map +1 -0
  7. package/dist-server/constants/master.js +12 -0
  8. package/dist-server/constants/master.js.map +1 -0
  9. package/dist-server/constants/organization.js +9 -0
  10. package/dist-server/constants/organization.js.map +1 -0
  11. package/dist-server/constants/ramp.js +12 -0
  12. package/dist-server/constants/ramp.js.map +1 -0
  13. package/dist-server/constants/record.js +8 -0
  14. package/dist-server/constants/record.js.map +1 -0
  15. package/dist-server/constants/template.js +7 -0
  16. package/dist-server/constants/template.js.map +1 -0
  17. package/dist-server/constants/transaction.js +13 -0
  18. package/dist-server/constants/transaction.js.map +1 -0
  19. package/dist-server/controllers/index.js +18 -0
  20. package/dist-server/controllers/index.js.map +1 -0
  21. package/dist-server/controllers/render-dispatchment.js +53 -0
  22. package/dist-server/controllers/render-dispatchment.js.map +1 -0
  23. package/dist-server/entities/block-detail.js +91 -0
  24. package/dist-server/entities/block-detail.js.map +1 -0
  25. package/dist-server/entities/block.js +79 -0
  26. package/dist-server/entities/block.js.map +1 -0
  27. package/dist-server/entities/daily-block-detail.js +79 -0
  28. package/dist-server/entities/daily-block-detail.js.map +1 -0
  29. package/dist-server/entities/daily-dispatch-detail.js +93 -0
  30. package/dist-server/entities/daily-dispatch-detail.js.map +1 -0
  31. package/dist-server/entities/daily-dispatch.js +119 -0
  32. package/dist-server/entities/daily-dispatch.js.map +1 -0
  33. package/dist-server/entities/daily-harvest-detail.js +81 -0
  34. package/dist-server/entities/daily-harvest-detail.js.map +1 -0
  35. package/dist-server/entities/daily-harvest.js +117 -0
  36. package/dist-server/entities/daily-harvest.js.map +1 -0
  37. package/dist-server/entities/daily-loading-detail.js +95 -0
  38. package/dist-server/entities/daily-loading-detail.js.map +1 -0
  39. package/dist-server/entities/daily-loading-ramp.js +75 -0
  40. package/dist-server/entities/daily-loading-ramp.js.map +1 -0
  41. package/dist-server/entities/daily-loading.js +91 -0
  42. package/dist-server/entities/daily-loading.js.map +1 -0
  43. package/dist-server/entities/index.js +60 -0
  44. package/dist-server/entities/index.js.map +1 -0
  45. package/dist-server/entities/organization-staff.js +85 -0
  46. package/dist-server/entities/organization-staff.js.map +1 -0
  47. package/dist-server/entities/organization.js +70 -0
  48. package/dist-server/entities/organization.js.map +1 -0
  49. package/dist-server/entities/plantation-inventory.js +81 -0
  50. package/dist-server/entities/plantation-inventory.js.map +1 -0
  51. package/dist-server/entities/plantation-setting.js +76 -0
  52. package/dist-server/entities/plantation-setting.js.map +1 -0
  53. package/dist-server/entities/ramp-block-history.js +93 -0
  54. package/dist-server/entities/ramp-block-history.js.map +1 -0
  55. package/dist-server/entities/ramp.js +75 -0
  56. package/dist-server/entities/ramp.js.map +1 -0
  57. package/dist-server/entities/record-transaction.js +108 -0
  58. package/dist-server/entities/record-transaction.js.map +1 -0
  59. package/dist-server/entities/truck.js +77 -0
  60. package/dist-server/entities/truck.js.map +1 -0
  61. package/dist-server/graphql/index.js +34 -0
  62. package/dist-server/graphql/index.js.map +1 -0
  63. package/dist-server/graphql/resolvers/block/block-query.js +33 -0
  64. package/dist-server/graphql/resolvers/block/block-query.js.map +1 -0
  65. package/dist-server/graphql/resolvers/block/delete-blocks.js +32 -0
  66. package/dist-server/graphql/resolvers/block/delete-blocks.js.map +1 -0
  67. package/dist-server/graphql/resolvers/block/index.js +11 -0
  68. package/dist-server/graphql/resolvers/block/index.js.map +1 -0
  69. package/dist-server/graphql/resolvers/block/update-multiple-block.js +52 -0
  70. package/dist-server/graphql/resolvers/block/update-multiple-block.js.map +1 -0
  71. package/dist-server/graphql/resolvers/block-detail/block-detail-query.js +45 -0
  72. package/dist-server/graphql/resolvers/block-detail/block-detail-query.js.map +1 -0
  73. package/dist-server/graphql/resolvers/block-detail/delete-block-details.js +18 -0
  74. package/dist-server/graphql/resolvers/block-detail/delete-block-details.js.map +1 -0
  75. package/dist-server/graphql/resolvers/block-detail/index.js +12 -0
  76. package/dist-server/graphql/resolvers/block-detail/index.js.map +1 -0
  77. package/dist-server/graphql/resolvers/block-detail/update-multiple-block-detail.js +39 -0
  78. package/dist-server/graphql/resolvers/block-detail/update-multiple-block-detail.js.map +1 -0
  79. package/dist-server/graphql/resolvers/daily-block-detail/create-daily-block-detail.js +11 -0
  80. package/dist-server/graphql/resolvers/daily-block-detail/create-daily-block-detail.js.map +1 -0
  81. package/dist-server/graphql/resolvers/daily-block-detail/daily-block-detail-query.js +33 -0
  82. package/dist-server/graphql/resolvers/daily-block-detail/daily-block-detail-query.js.map +1 -0
  83. package/dist-server/graphql/resolvers/daily-block-detail/delete-daily-block-detail.js +12 -0
  84. package/dist-server/graphql/resolvers/daily-block-detail/delete-daily-block-detail.js.map +1 -0
  85. package/dist-server/graphql/resolvers/daily-block-detail/delete-daily-block-details.js +16 -0
  86. package/dist-server/graphql/resolvers/daily-block-detail/delete-daily-block-details.js.map +1 -0
  87. package/dist-server/graphql/resolvers/daily-block-detail/index.js +14 -0
  88. package/dist-server/graphql/resolvers/daily-block-detail/index.js.map +1 -0
  89. package/dist-server/graphql/resolvers/daily-block-detail/update-daily-block-detail.js +14 -0
  90. package/dist-server/graphql/resolvers/daily-block-detail/update-daily-block-detail.js.map +1 -0
  91. package/dist-server/graphql/resolvers/daily-block-detail/update-multiple-daily-block-detail.js +30 -0
  92. package/dist-server/graphql/resolvers/daily-block-detail/update-multiple-daily-block-detail.js.map +1 -0
  93. package/dist-server/graphql/resolvers/daily-dispatch/daily-dispatch-query.js +74 -0
  94. package/dist-server/graphql/resolvers/daily-dispatch/daily-dispatch-query.js.map +1 -0
  95. package/dist-server/graphql/resolvers/daily-dispatch/delete-daily-dispatch.js +74 -0
  96. package/dist-server/graphql/resolvers/daily-dispatch/delete-daily-dispatch.js.map +1 -0
  97. package/dist-server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.js +144 -0
  98. package/dist-server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.js.map +1 -0
  99. package/dist-server/graphql/resolvers/daily-dispatch/index.js +12 -0
  100. package/dist-server/graphql/resolvers/daily-dispatch/index.js.map +1 -0
  101. package/dist-server/graphql/resolvers/daily-dispatch/update-daily-dispatch.js +72 -0
  102. package/dist-server/graphql/resolvers/daily-dispatch/update-daily-dispatch.js.map +1 -0
  103. package/dist-server/graphql/resolvers/daily-dispatch-detail/daily-dispatch-detail-query.js +34 -0
  104. package/dist-server/graphql/resolvers/daily-dispatch-detail/daily-dispatch-detail-query.js.map +1 -0
  105. package/dist-server/graphql/resolvers/daily-dispatch-detail/index.js +9 -0
  106. package/dist-server/graphql/resolvers/daily-dispatch-detail/index.js.map +1 -0
  107. package/dist-server/graphql/resolvers/daily-harvest/daily-harvest-query.js +64 -0
  108. package/dist-server/graphql/resolvers/daily-harvest/daily-harvest-query.js.map +1 -0
  109. package/dist-server/graphql/resolvers/daily-harvest/delete-daily-harvest.js +38 -0
  110. package/dist-server/graphql/resolvers/daily-harvest/delete-daily-harvest.js.map +1 -0
  111. package/dist-server/graphql/resolvers/daily-harvest/generate-daily-harvest.js +104 -0
  112. package/dist-server/graphql/resolvers/daily-harvest/generate-daily-harvest.js.map +1 -0
  113. package/dist-server/graphql/resolvers/daily-harvest/index.js +12 -0
  114. package/dist-server/graphql/resolvers/daily-harvest/index.js.map +1 -0
  115. package/dist-server/graphql/resolvers/daily-harvest/update-daily-harvest.js +98 -0
  116. package/dist-server/graphql/resolvers/daily-harvest/update-daily-harvest.js.map +1 -0
  117. package/dist-server/graphql/resolvers/daily-harvest-detail/daily-harvest-detail-query.js +32 -0
  118. package/dist-server/graphql/resolvers/daily-harvest-detail/daily-harvest-detail-query.js.map +1 -0
  119. package/dist-server/graphql/resolvers/daily-harvest-detail/index.js +9 -0
  120. package/dist-server/graphql/resolvers/daily-harvest-detail/index.js.map +1 -0
  121. package/dist-server/graphql/resolvers/daily-loading/daily-loading-query.js +62 -0
  122. package/dist-server/graphql/resolvers/daily-loading/daily-loading-query.js.map +1 -0
  123. package/dist-server/graphql/resolvers/daily-loading/delete-daily-loading.js +36 -0
  124. package/dist-server/graphql/resolvers/daily-loading/delete-daily-loading.js.map +1 -0
  125. package/dist-server/graphql/resolvers/daily-loading/generate-daily-loading.js +94 -0
  126. package/dist-server/graphql/resolvers/daily-loading/generate-daily-loading.js.map +1 -0
  127. package/dist-server/graphql/resolvers/daily-loading/index.js +12 -0
  128. package/dist-server/graphql/resolvers/daily-loading/index.js.map +1 -0
  129. package/dist-server/graphql/resolvers/daily-loading/update-daily-loading.js +86 -0
  130. package/dist-server/graphql/resolvers/daily-loading/update-daily-loading.js.map +1 -0
  131. package/dist-server/graphql/resolvers/daily-loading-detail/daily-loading-detail-query.js +32 -0
  132. package/dist-server/graphql/resolvers/daily-loading-detail/daily-loading-detail-query.js.map +1 -0
  133. package/dist-server/graphql/resolvers/daily-loading-detail/index.js +9 -0
  134. package/dist-server/graphql/resolvers/daily-loading-detail/index.js.map +1 -0
  135. package/dist-server/graphql/resolvers/daily-loading-ramp/daily-loading-ramp-query.js +29 -0
  136. package/dist-server/graphql/resolvers/daily-loading-ramp/daily-loading-ramp-query.js.map +1 -0
  137. package/dist-server/graphql/resolvers/daily-loading-ramp/delete-daily-loading-ramp.js +12 -0
  138. package/dist-server/graphql/resolvers/daily-loading-ramp/delete-daily-loading-ramp.js.map +1 -0
  139. package/dist-server/graphql/resolvers/daily-loading-ramp/index.js +11 -0
  140. package/dist-server/graphql/resolvers/daily-loading-ramp/index.js.map +1 -0
  141. package/dist-server/graphql/resolvers/daily-loading-ramp/update-daily-loading-ramp.js +15 -0
  142. package/dist-server/graphql/resolvers/daily-loading-ramp/update-daily-loading-ramp.js.map +1 -0
  143. package/dist-server/graphql/resolvers/dashboard/dashboard-query.js +204 -0
  144. package/dist-server/graphql/resolvers/dashboard/dashboard-query.js.map +1 -0
  145. package/dist-server/graphql/resolvers/dashboard/index.js +8 -0
  146. package/dist-server/graphql/resolvers/dashboard/index.js.map +1 -0
  147. package/dist-server/graphql/resolvers/index.js +36 -0
  148. package/dist-server/graphql/resolvers/index.js.map +1 -0
  149. package/dist-server/graphql/resolvers/organization/delete-organizations.js +32 -0
  150. package/dist-server/graphql/resolvers/organization/delete-organizations.js.map +1 -0
  151. package/dist-server/graphql/resolvers/organization/index.js +11 -0
  152. package/dist-server/graphql/resolvers/organization/index.js.map +1 -0
  153. package/dist-server/graphql/resolvers/organization/organization-query.js +32 -0
  154. package/dist-server/graphql/resolvers/organization/organization-query.js.map +1 -0
  155. package/dist-server/graphql/resolvers/organization/update-multiple-organization.js +33 -0
  156. package/dist-server/graphql/resolvers/organization/update-multiple-organization.js.map +1 -0
  157. package/dist-server/graphql/resolvers/organization-staff/delete-organization-staffs.js +18 -0
  158. package/dist-server/graphql/resolvers/organization-staff/delete-organization-staffs.js.map +1 -0
  159. package/dist-server/graphql/resolvers/organization-staff/index.js +11 -0
  160. package/dist-server/graphql/resolvers/organization-staff/index.js.map +1 -0
  161. package/dist-server/graphql/resolvers/organization-staff/organization-staff-query.js +37 -0
  162. package/dist-server/graphql/resolvers/organization-staff/organization-staff-query.js.map +1 -0
  163. package/dist-server/graphql/resolvers/organization-staff/update-multiple-organization-staff.js +44 -0
  164. package/dist-server/graphql/resolvers/organization-staff/update-multiple-organization-staff.js.map +1 -0
  165. package/dist-server/graphql/resolvers/plantation-inventory/index.js +9 -0
  166. package/dist-server/graphql/resolvers/plantation-inventory/index.js.map +1 -0
  167. package/dist-server/graphql/resolvers/plantation-inventory/plantation-inventory-query.js +31 -0
  168. package/dist-server/graphql/resolvers/plantation-inventory/plantation-inventory-query.js.map +1 -0
  169. package/dist-server/graphql/resolvers/plantation-setting/create-plantation-setting.js +12 -0
  170. package/dist-server/graphql/resolvers/plantation-setting/create-plantation-setting.js.map +1 -0
  171. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-setting.js +13 -0
  172. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-setting.js.map +1 -0
  173. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-settings.js +16 -0
  174. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-settings.js.map +1 -0
  175. package/dist-server/graphql/resolvers/plantation-setting/index.js +15 -0
  176. package/dist-server/graphql/resolvers/plantation-setting/index.js.map +1 -0
  177. package/dist-server/graphql/resolvers/plantation-setting/plantation-setting-query.js +33 -0
  178. package/dist-server/graphql/resolvers/plantation-setting/plantation-setting-query.js.map +1 -0
  179. package/dist-server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.js +31 -0
  180. package/dist-server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.js.map +1 -0
  181. package/dist-server/graphql/resolvers/plantation-setting/update-plantation-setting.js +16 -0
  182. package/dist-server/graphql/resolvers/plantation-setting/update-plantation-setting.js.map +1 -0
  183. package/dist-server/graphql/resolvers/ramp/delete-ramps.js +23 -0
  184. package/dist-server/graphql/resolvers/ramp/delete-ramps.js.map +1 -0
  185. package/dist-server/graphql/resolvers/ramp/index.js +11 -0
  186. package/dist-server/graphql/resolvers/ramp/index.js.map +1 -0
  187. package/dist-server/graphql/resolvers/ramp/ramp-query.js +32 -0
  188. package/dist-server/graphql/resolvers/ramp/ramp-query.js.map +1 -0
  189. package/dist-server/graphql/resolvers/ramp/update-multiple-ramp.js +45 -0
  190. package/dist-server/graphql/resolvers/ramp/update-multiple-ramp.js.map +1 -0
  191. package/dist-server/graphql/resolvers/record-transaction/index.js +9 -0
  192. package/dist-server/graphql/resolvers/record-transaction/index.js.map +1 -0
  193. package/dist-server/graphql/resolvers/record-transaction/record-transaction-query.js +30 -0
  194. package/dist-server/graphql/resolvers/record-transaction/record-transaction-query.js.map +1 -0
  195. package/dist-server/graphql/resolvers/report/daily-ffb-dispatch-production-reports.js +155 -0
  196. package/dist-server/graphql/resolvers/report/daily-ffb-dispatch-production-reports.js.map +1 -0
  197. package/dist-server/graphql/resolvers/report/daily-production-reports.js +244 -0
  198. package/dist-server/graphql/resolvers/report/daily-production-reports.js.map +1 -0
  199. package/dist-server/graphql/resolvers/report/daily-staff-harvest-reports.js +71 -0
  200. package/dist-server/graphql/resolvers/report/daily-staff-harvest-reports.js.map +1 -0
  201. package/dist-server/graphql/resolvers/report/index.js +16 -0
  202. package/dist-server/graphql/resolvers/report/index.js.map +1 -0
  203. package/dist-server/graphql/resolvers/report/monthly-block-dispatch-reports.js +96 -0
  204. package/dist-server/graphql/resolvers/report/monthly-block-dispatch-reports.js.map +1 -0
  205. package/dist-server/graphql/resolvers/report/monthly-dispatch-summary-reports.js +95 -0
  206. package/dist-server/graphql/resolvers/report/monthly-dispatch-summary-reports.js.map +1 -0
  207. package/dist-server/graphql/resolvers/report/monthly-ffb-sale-reports.js +100 -0
  208. package/dist-server/graphql/resolvers/report/monthly-ffb-sale-reports.js.map +1 -0
  209. package/dist-server/graphql/resolvers/report/monthly-production-reports.js +109 -0
  210. package/dist-server/graphql/resolvers/report/monthly-production-reports.js.map +1 -0
  211. package/dist-server/graphql/resolvers/report/yearly-production-reports.js +96 -0
  212. package/dist-server/graphql/resolvers/report/yearly-production-reports.js.map +1 -0
  213. package/dist-server/graphql/resolvers/truck/delete-trucks.js +18 -0
  214. package/dist-server/graphql/resolvers/truck/delete-trucks.js.map +1 -0
  215. package/dist-server/graphql/resolvers/truck/index.js +12 -0
  216. package/dist-server/graphql/resolvers/truck/index.js.map +1 -0
  217. package/dist-server/graphql/resolvers/truck/truck-query.js +46 -0
  218. package/dist-server/graphql/resolvers/truck/truck-query.js.map +1 -0
  219. package/dist-server/graphql/resolvers/truck/update-multiple-truck.js +40 -0
  220. package/dist-server/graphql/resolvers/truck/update-multiple-truck.js.map +1 -0
  221. package/dist-server/graphql/types/block/block-list.js +14 -0
  222. package/dist-server/graphql/types/block/block-list.js.map +1 -0
  223. package/dist-server/graphql/types/block/block-patch.js +19 -0
  224. package/dist-server/graphql/types/block/block-patch.js.map +1 -0
  225. package/dist-server/graphql/types/block/block.js +24 -0
  226. package/dist-server/graphql/types/block/block.js.map +1 -0
  227. package/dist-server/graphql/types/block/index.js +37 -0
  228. package/dist-server/graphql/types/block/index.js.map +1 -0
  229. package/dist-server/graphql/types/block/new-block.js +14 -0
  230. package/dist-server/graphql/types/block/new-block.js.map +1 -0
  231. package/dist-server/graphql/types/block-detail/block-detail-list.js +14 -0
  232. package/dist-server/graphql/types/block-detail/block-detail-list.js.map +1 -0
  233. package/dist-server/graphql/types/block-detail/block-detail-patch.js +22 -0
  234. package/dist-server/graphql/types/block-detail/block-detail-patch.js.map +1 -0
  235. package/dist-server/graphql/types/block-detail/block-detail.js +27 -0
  236. package/dist-server/graphql/types/block-detail/block-detail.js.map +1 -0
  237. package/dist-server/graphql/types/block-detail/index.js +37 -0
  238. package/dist-server/graphql/types/block-detail/index.js.map +1 -0
  239. package/dist-server/graphql/types/block-detail/new-block-detail.js +19 -0
  240. package/dist-server/graphql/types/block-detail/new-block-detail.js.map +1 -0
  241. package/dist-server/graphql/types/daily-block-detail/daily-block-detail-list.js +14 -0
  242. package/dist-server/graphql/types/daily-block-detail/daily-block-detail-list.js.map +1 -0
  243. package/dist-server/graphql/types/daily-block-detail/daily-block-detail-patch.js +16 -0
  244. package/dist-server/graphql/types/daily-block-detail/daily-block-detail-patch.js.map +1 -0
  245. package/dist-server/graphql/types/daily-block-detail/daily-block-detail.js +24 -0
  246. package/dist-server/graphql/types/daily-block-detail/daily-block-detail.js.map +1 -0
  247. package/dist-server/graphql/types/daily-block-detail/index.js +40 -0
  248. package/dist-server/graphql/types/daily-block-detail/index.js.map +1 -0
  249. package/dist-server/graphql/types/daily-block-detail/new-daily-block-detail.js +14 -0
  250. package/dist-server/graphql/types/daily-block-detail/new-daily-block-detail.js.map +1 -0
  251. package/dist-server/graphql/types/daily-dispatch/daily-dispatch-list.js +14 -0
  252. package/dist-server/graphql/types/daily-dispatch/daily-dispatch-list.js.map +1 -0
  253. package/dist-server/graphql/types/daily-dispatch/daily-dispatch-patch.js +28 -0
  254. package/dist-server/graphql/types/daily-dispatch/daily-dispatch-patch.js.map +1 -0
  255. package/dist-server/graphql/types/daily-dispatch/daily-dispatch.js +33 -0
  256. package/dist-server/graphql/types/daily-dispatch/daily-dispatch.js.map +1 -0
  257. package/dist-server/graphql/types/daily-dispatch/index.js +43 -0
  258. package/dist-server/graphql/types/daily-dispatch/index.js.map +1 -0
  259. package/dist-server/graphql/types/daily-dispatch/new-daily-dispatch.js +26 -0
  260. package/dist-server/graphql/types/daily-dispatch/new-daily-dispatch.js.map +1 -0
  261. package/dist-server/graphql/types/daily-dispatch-detail/daily-dispatch-detail-list.js +14 -0
  262. package/dist-server/graphql/types/daily-dispatch-detail/daily-dispatch-detail-list.js.map +1 -0
  263. package/dist-server/graphql/types/daily-dispatch-detail/daily-dispatch-detail-patch.js +22 -0
  264. package/dist-server/graphql/types/daily-dispatch-detail/daily-dispatch-detail-patch.js.map +1 -0
  265. package/dist-server/graphql/types/daily-dispatch-detail/daily-dispatch-detail.js +27 -0
  266. package/dist-server/graphql/types/daily-dispatch-detail/daily-dispatch-detail.js.map +1 -0
  267. package/dist-server/graphql/types/daily-dispatch-detail/index.js +33 -0
  268. package/dist-server/graphql/types/daily-dispatch-detail/index.js.map +1 -0
  269. package/dist-server/graphql/types/daily-dispatch-detail/new-daily-dispatch-detail.js +18 -0
  270. package/dist-server/graphql/types/daily-dispatch-detail/new-daily-dispatch-detail.js.map +1 -0
  271. package/dist-server/graphql/types/daily-harvest/daily-harvest-list.js +14 -0
  272. package/dist-server/graphql/types/daily-harvest/daily-harvest-list.js.map +1 -0
  273. package/dist-server/graphql/types/daily-harvest/daily-harvest-patch.js +23 -0
  274. package/dist-server/graphql/types/daily-harvest/daily-harvest-patch.js.map +1 -0
  275. package/dist-server/graphql/types/daily-harvest/daily-harvest.js +33 -0
  276. package/dist-server/graphql/types/daily-harvest/daily-harvest.js.map +1 -0
  277. package/dist-server/graphql/types/daily-harvest/index.js +38 -0
  278. package/dist-server/graphql/types/daily-harvest/index.js.map +1 -0
  279. package/dist-server/graphql/types/daily-harvest/new-daily-harvest.js +21 -0
  280. package/dist-server/graphql/types/daily-harvest/new-daily-harvest.js.map +1 -0
  281. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail-list.js +14 -0
  282. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail-list.js.map +1 -0
  283. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.js +17 -0
  284. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.js.map +1 -0
  285. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail.js +26 -0
  286. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail.js.map +1 -0
  287. package/dist-server/graphql/types/daily-harvest-detail/index.js +33 -0
  288. package/dist-server/graphql/types/daily-harvest-detail/index.js.map +1 -0
  289. package/dist-server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.js +16 -0
  290. package/dist-server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.js.map +1 -0
  291. package/dist-server/graphql/types/daily-loading/daily-loading-list.js +14 -0
  292. package/dist-server/graphql/types/daily-loading/daily-loading-list.js.map +1 -0
  293. package/dist-server/graphql/types/daily-loading/daily-loading-patch.js +14 -0
  294. package/dist-server/graphql/types/daily-loading/daily-loading-patch.js.map +1 -0
  295. package/dist-server/graphql/types/daily-loading/daily-loading.js +27 -0
  296. package/dist-server/graphql/types/daily-loading/daily-loading.js.map +1 -0
  297. package/dist-server/graphql/types/daily-loading/index.js +38 -0
  298. package/dist-server/graphql/types/daily-loading/index.js.map +1 -0
  299. package/dist-server/graphql/types/daily-loading/new-daily-loading.js +14 -0
  300. package/dist-server/graphql/types/daily-loading/new-daily-loading.js.map +1 -0
  301. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-list.js +14 -0
  302. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-list.js.map +1 -0
  303. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-patch.js +22 -0
  304. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-patch.js.map +1 -0
  305. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail.js +29 -0
  306. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail.js.map +1 -0
  307. package/dist-server/graphql/types/daily-loading-detail/index.js +33 -0
  308. package/dist-server/graphql/types/daily-loading-detail/index.js.map +1 -0
  309. package/dist-server/graphql/types/daily-loading-detail/new-daily-loading-detail.js +19 -0
  310. package/dist-server/graphql/types/daily-loading-detail/new-daily-loading-detail.js.map +1 -0
  311. package/dist-server/graphql/types/daily-loading-ramp/daily-loading-ramp-list.js +14 -0
  312. package/dist-server/graphql/types/daily-loading-ramp/daily-loading-ramp-list.js.map +1 -0
  313. package/dist-server/graphql/types/daily-loading-ramp/daily-loading-ramp-patch.js +19 -0
  314. package/dist-server/graphql/types/daily-loading-ramp/daily-loading-ramp-patch.js.map +1 -0
  315. package/dist-server/graphql/types/daily-loading-ramp/daily-loading-ramp.js +23 -0
  316. package/dist-server/graphql/types/daily-loading-ramp/daily-loading-ramp.js.map +1 -0
  317. package/dist-server/graphql/types/daily-loading-ramp/index.js +37 -0
  318. package/dist-server/graphql/types/daily-loading-ramp/index.js.map +1 -0
  319. package/dist-server/graphql/types/daily-loading-ramp/new-daily-loading-ramp.js +17 -0
  320. package/dist-server/graphql/types/daily-loading-ramp/new-daily-loading-ramp.js.map +1 -0
  321. package/dist-server/graphql/types/dashboard/bunches-count.js +15 -0
  322. package/dist-server/graphql/types/dashboard/bunches-count.js.map +1 -0
  323. package/dist-server/graphql/types/dashboard/index.js +36 -0
  324. package/dist-server/graphql/types/dashboard/index.js.map +1 -0
  325. package/dist-server/graphql/types/dashboard/productions-overview.js +15 -0
  326. package/dist-server/graphql/types/dashboard/productions-overview.js.map +1 -0
  327. package/dist-server/graphql/types/dashboard/tonnage-bunches-inventories.js +14 -0
  328. package/dist-server/graphql/types/dashboard/tonnage-bunches-inventories.js.map +1 -0
  329. package/dist-server/graphql/types/dashboard/tonnage-production.js +17 -0
  330. package/dist-server/graphql/types/dashboard/tonnage-production.js.map +1 -0
  331. package/dist-server/graphql/types/dashboard/yield-production.js +17 -0
  332. package/dist-server/graphql/types/dashboard/yield-production.js.map +1 -0
  333. package/dist-server/graphql/types/index.js +36 -0
  334. package/dist-server/graphql/types/index.js.map +1 -0
  335. package/dist-server/graphql/types/organization/index.js +37 -0
  336. package/dist-server/graphql/types/organization/index.js.map +1 -0
  337. package/dist-server/graphql/types/organization/new-organization.js +15 -0
  338. package/dist-server/graphql/types/organization/new-organization.js.map +1 -0
  339. package/dist-server/graphql/types/organization/organization-list.js +14 -0
  340. package/dist-server/graphql/types/organization/organization-list.js.map +1 -0
  341. package/dist-server/graphql/types/organization/organization-patch.js +17 -0
  342. package/dist-server/graphql/types/organization/organization-patch.js.map +1 -0
  343. package/dist-server/graphql/types/organization/organization.js +22 -0
  344. package/dist-server/graphql/types/organization/organization.js.map +1 -0
  345. package/dist-server/graphql/types/organization-staff/index.js +38 -0
  346. package/dist-server/graphql/types/organization-staff/index.js.map +1 -0
  347. package/dist-server/graphql/types/organization-staff/new-organization-staff.js +14 -0
  348. package/dist-server/graphql/types/organization-staff/new-organization-staff.js.map +1 -0
  349. package/dist-server/graphql/types/organization-staff/organization-staff-list.js +14 -0
  350. package/dist-server/graphql/types/organization-staff/organization-staff-list.js.map +1 -0
  351. package/dist-server/graphql/types/organization-staff/organization-staff-patch.js +21 -0
  352. package/dist-server/graphql/types/organization-staff/organization-staff-patch.js.map +1 -0
  353. package/dist-server/graphql/types/organization-staff/organization-staff.js +27 -0
  354. package/dist-server/graphql/types/organization-staff/organization-staff.js.map +1 -0
  355. package/dist-server/graphql/types/plantation-inventory/index.js +33 -0
  356. package/dist-server/graphql/types/plantation-inventory/index.js.map +1 -0
  357. package/dist-server/graphql/types/plantation-inventory/new-plantation-inventory.js +14 -0
  358. package/dist-server/graphql/types/plantation-inventory/new-plantation-inventory.js.map +1 -0
  359. package/dist-server/graphql/types/plantation-inventory/plantation-inventory-list.js +14 -0
  360. package/dist-server/graphql/types/plantation-inventory/plantation-inventory-list.js.map +1 -0
  361. package/dist-server/graphql/types/plantation-inventory/plantation-inventory-patch.js +16 -0
  362. package/dist-server/graphql/types/plantation-inventory/plantation-inventory-patch.js.map +1 -0
  363. package/dist-server/graphql/types/plantation-inventory/plantation-inventory.js +28 -0
  364. package/dist-server/graphql/types/plantation-inventory/plantation-inventory.js.map +1 -0
  365. package/dist-server/graphql/types/plantation-setting/index.js +40 -0
  366. package/dist-server/graphql/types/plantation-setting/index.js.map +1 -0
  367. package/dist-server/graphql/types/plantation-setting/new-plantation-setting.js +16 -0
  368. package/dist-server/graphql/types/plantation-setting/new-plantation-setting.js.map +1 -0
  369. package/dist-server/graphql/types/plantation-setting/plantation-setting-list.js +14 -0
  370. package/dist-server/graphql/types/plantation-setting/plantation-setting-list.js.map +1 -0
  371. package/dist-server/graphql/types/plantation-setting/plantation-setting-patch.js +18 -0
  372. package/dist-server/graphql/types/plantation-setting/plantation-setting-patch.js.map +1 -0
  373. package/dist-server/graphql/types/plantation-setting/plantation-setting.js +22 -0
  374. package/dist-server/graphql/types/plantation-setting/plantation-setting.js.map +1 -0
  375. package/dist-server/graphql/types/ramp/index.js +37 -0
  376. package/dist-server/graphql/types/ramp/index.js.map +1 -0
  377. package/dist-server/graphql/types/ramp/new-ramp.js +14 -0
  378. package/dist-server/graphql/types/ramp/new-ramp.js.map +1 -0
  379. package/dist-server/graphql/types/ramp/ramp-list.js +14 -0
  380. package/dist-server/graphql/types/ramp/ramp-list.js.map +1 -0
  381. package/dist-server/graphql/types/ramp/ramp-patch.js +18 -0
  382. package/dist-server/graphql/types/ramp/ramp-patch.js.map +1 -0
  383. package/dist-server/graphql/types/ramp/ramp.js +23 -0
  384. package/dist-server/graphql/types/ramp/ramp.js.map +1 -0
  385. package/dist-server/graphql/types/record-transaction/index.js +33 -0
  386. package/dist-server/graphql/types/record-transaction/index.js.map +1 -0
  387. package/dist-server/graphql/types/record-transaction/new-record-transaction.js +14 -0
  388. package/dist-server/graphql/types/record-transaction/new-record-transaction.js.map +1 -0
  389. package/dist-server/graphql/types/record-transaction/record-transaction-list.js +14 -0
  390. package/dist-server/graphql/types/record-transaction/record-transaction-list.js.map +1 -0
  391. package/dist-server/graphql/types/record-transaction/record-transaction-patch.js +16 -0
  392. package/dist-server/graphql/types/record-transaction/record-transaction-patch.js.map +1 -0
  393. package/dist-server/graphql/types/record-transaction/record-transaction.js +30 -0
  394. package/dist-server/graphql/types/record-transaction/record-transaction.js.map +1 -0
  395. package/dist-server/graphql/types/report/daily-ffb-dispatch-production-report-list.js +14 -0
  396. package/dist-server/graphql/types/report/daily-ffb-dispatch-production-report-list.js.map +1 -0
  397. package/dist-server/graphql/types/report/daily-ffb-dispatch-production-report.js +15 -0
  398. package/dist-server/graphql/types/report/daily-ffb-dispatch-production-report.js.map +1 -0
  399. package/dist-server/graphql/types/report/daily-production-report-list.js +14 -0
  400. package/dist-server/graphql/types/report/daily-production-report-list.js.map +1 -0
  401. package/dist-server/graphql/types/report/daily-production-report.js +29 -0
  402. package/dist-server/graphql/types/report/daily-production-report.js.map +1 -0
  403. package/dist-server/graphql/types/report/daily-staff-harvest-report-list.js +14 -0
  404. package/dist-server/graphql/types/report/daily-staff-harvest-report-list.js.map +1 -0
  405. package/dist-server/graphql/types/report/daily-staff-harvest-report.js +16 -0
  406. package/dist-server/graphql/types/report/daily-staff-harvest-report.js.map +1 -0
  407. package/dist-server/graphql/types/report/index.js +81 -0
  408. package/dist-server/graphql/types/report/index.js.map +1 -0
  409. package/dist-server/graphql/types/report/monthly-block-dispatch-report-list.js +14 -0
  410. package/dist-server/graphql/types/report/monthly-block-dispatch-report-list.js.map +1 -0
  411. package/dist-server/graphql/types/report/monthly-block-dispatch-report.js +19 -0
  412. package/dist-server/graphql/types/report/monthly-block-dispatch-report.js.map +1 -0
  413. package/dist-server/graphql/types/report/monthly-dispatch-summary-report-list.js +14 -0
  414. package/dist-server/graphql/types/report/monthly-dispatch-summary-report-list.js.map +1 -0
  415. package/dist-server/graphql/types/report/monthly-dispatch-summary-report.js +25 -0
  416. package/dist-server/graphql/types/report/monthly-dispatch-summary-report.js.map +1 -0
  417. package/dist-server/graphql/types/report/monthly-ffb-sale-report-list.js +14 -0
  418. package/dist-server/graphql/types/report/monthly-ffb-sale-report-list.js.map +1 -0
  419. package/dist-server/graphql/types/report/monthly-ffb-sale-report.js +24 -0
  420. package/dist-server/graphql/types/report/monthly-ffb-sale-report.js.map +1 -0
  421. package/dist-server/graphql/types/report/monthly-production-report-list.js +14 -0
  422. package/dist-server/graphql/types/report/monthly-production-report-list.js.map +1 -0
  423. package/dist-server/graphql/types/report/monthly-production-report.js +31 -0
  424. package/dist-server/graphql/types/report/monthly-production-report.js.map +1 -0
  425. package/dist-server/graphql/types/report/yearly-production-report-list.js +14 -0
  426. package/dist-server/graphql/types/report/yearly-production-report-list.js.map +1 -0
  427. package/dist-server/graphql/types/report/yearly-production-report.js +24 -0
  428. package/dist-server/graphql/types/report/yearly-production-report.js.map +1 -0
  429. package/dist-server/graphql/types/truck/index.js +37 -0
  430. package/dist-server/graphql/types/truck/index.js.map +1 -0
  431. package/dist-server/graphql/types/truck/new-truck.js +14 -0
  432. package/dist-server/graphql/types/truck/new-truck.js.map +1 -0
  433. package/dist-server/graphql/types/truck/truck-list.js +14 -0
  434. package/dist-server/graphql/types/truck/truck-list.js.map +1 -0
  435. package/dist-server/graphql/types/truck/truck-patch.js +17 -0
  436. package/dist-server/graphql/types/truck/truck-patch.js.map +1 -0
  437. package/dist-server/graphql/types/truck/truck.js +22 -0
  438. package/dist-server/graphql/types/truck/truck.js.map +1 -0
  439. package/dist-server/index.js +22 -0
  440. package/dist-server/index.js.map +1 -0
  441. package/dist-server/middlewares/index.js +8 -0
  442. package/dist-server/middlewares/index.js.map +1 -0
  443. package/dist-server/migrations/index.js +12 -0
  444. package/dist-server/migrations/index.js.map +1 -0
  445. package/dist-server/routes.js +10 -0
  446. package/dist-server/routes.js.map +1 -0
  447. package/dist-server/utils/core-values.js +91 -0
  448. package/dist-server/utils/core-values.js.map +1 -0
  449. package/dist-server/utils/datetime-util.js +36 -0
  450. package/dist-server/utils/datetime-util.js.map +1 -0
  451. package/dist-server/utils/index.js +21 -0
  452. package/dist-server/utils/index.js.map +1 -0
  453. package/dist-server/utils/no-generator.js +50 -0
  454. package/dist-server/utils/no-generator.js.map +1 -0
  455. package/dist-server/utils/transaction-util.js +119 -0
  456. package/dist-server/utils/transaction-util.js.map +1 -0
  457. package/package.json +30 -30
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dailyFfbDispatchProductionReports = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const entities_1 = require("../../../entities");
6
+ exports.dailyFfbDispatchProductionReports = {
7
+ async dailyFfbDispatchProductionReports(_, 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
+ let organizations = await (0, typeorm_1.getRepository)(entities_1.Organization).find({
30
+ where: { domain: domain.id, deletedAt: (0, typeorm_1.IsNull)() }
31
+ });
32
+ let blocks = await tx.getRepository(entities_1.Block).query(`
33
+ SELECT b.id, b.name FROM ramps r
34
+ INNER JOIN blocks b ON b.id = r.block_id
35
+ WHERE b.deleted_at IS NULL
36
+ AND r.domain_id = $1
37
+ GROUP BY b.id, b.name
38
+ `, [domain.id]);
39
+ // -- WHERE dd.dispatch_at::timestamp between $1::timestamp and $2::timestamp
40
+ // [fromDateString, toDateString]
41
+ await tx.query(`create extension if not exists tablefunc`);
42
+ await tx.query(`
43
+ CREATE TEMP TABLE raw_block_dispatch ON COMMIT DROP AS (
44
+ SELECT
45
+ "name",
46
+ "dispatch_at",
47
+ SUM(weight::numeric) AS weight
48
+ FROM (
49
+ SELECT * FROM (
50
+ SELECT
51
+ rbh.id,
52
+ COALESCE(b.name, 'unknown') AS name,
53
+ 1 AS "rank",
54
+ rbh.transaction_date::date AS dispatch_at,
55
+ CASE
56
+ WHEN rbh.transaction_type = 'DISPATCH' AND rbh.weight < 0 THEN ABS(rbh.weight)
57
+ WHEN rbh.transaction_type IN ('REVERSE_DISPATCH', 'TONNAGE_VARIANCE') THEN ABS(rbh.weight)
58
+ ELSE 0
59
+ END AS weight
60
+ FROM ramp_block_histories rbh
61
+ INNER JOIN blocks b ON b.id = rbh.block_id
62
+ WHERE rbh.transaction_type IN ('DISPATCH', 'REVERSE_DISPATCH', 'TONNAGE_VARIANCE')
63
+ AND rbh.transaction_date::date BETWEEN $1 AND $2
64
+ AND b.deleted_at IS NULL
65
+ UNION
66
+ SELECT
67
+ dd.id,
68
+ COALESCE(c.name, 'unknown') AS name,
69
+ CASE WHEN c.name IS NULL THEN 3 ELSE 2 END AS "rank",
70
+ dd.dispatch_at::date AS dispatch_at,
71
+ COALESCE(
72
+ (SELECT SUM(COALESCE(ddd.adjusted_weight, ddd.collected_ramp_weight, 0))
73
+ FROM daily_dispatch_details ddd
74
+ WHERE ddd.daily_dispatch_id = dd.id), 0
75
+ ) AS weight
76
+ FROM daily_dispatches dd
77
+ LEFT JOIN organizations c ON c.id = dd.dispatch_to_id
78
+ WHERE dd.dispatch_at::date BETWEEN $1 AND $2
79
+ AND dd.deleted_at IS NULL
80
+ ) foo
81
+ ORDER BY "rank", "name", "dispatch_at"
82
+ ) foo
83
+ GROUP BY "name", "dispatch_at"
84
+ ORDER BY name, "dispatch_at"
85
+ );
86
+ `, [fromDateString, toDateString]);
87
+ await tx.query(`
88
+ create temp table cross_column ON COMMIT DROP as (
89
+ SELECT b.name FROM blocks b
90
+ WHERE 1=1
91
+ AND b.domain_id = $1
92
+ AND b.deleted_at is null
93
+ GROUP BY b.id, b.name
94
+ UNION
95
+ SELECT c.name FROM organizations c
96
+ where c.deleted_at is null
97
+ )
98
+ `, [domain.id]);
99
+ let definedCrossColumn = await tx.query(`
100
+ select string_agg(concat('"', name, '"'),',') as columns from cross_column
101
+ `);
102
+ await tx.query(`
103
+ CREATE TEMP TABLE pivot_block_dispatch ON COMMIT DROP AS (
104
+ SELECT * FROM crosstab(
105
+ $$
106
+ SELECT rbd."dispatch_at", rbd."name",
107
+ CONCAT('today: ', round(rbd.weight,2)::varchar, ' | todate: ', round(coalesce(sum(rbd.weight) over (PARTITION BY "name" ORDER BY name, dispatch_at asc rows between unbounded preceding and current row), 0),2)::varchar) AS weight
108
+ FROM raw_block_dispatch rbd
109
+ ORDER BY rbd."dispatch_at", rbd."name"
110
+ $$,
111
+ $$
112
+ SELECT name from cross_column
113
+ $$
114
+ ) AS (dispatch_at date, ${definedCrossColumn[0].columns
115
+ .split(',')
116
+ .map(itm => {
117
+ return itm + ' varchar';
118
+ })
119
+ .join(',')} )
120
+ );
121
+ `);
122
+ await tx.query(`
123
+ CREATE TEMP TABLE temp_monthly_production_data ON COMMIT DROP AS (
124
+ SELECT TO_CHAR(md.dateDay:: DATE, 'dd/mm/yyyy') as "date"
125
+ , row_to_json((SELECT d FROM (SELECT ${definedCrossColumn[0].columns
126
+ .split(',')
127
+ .map(itm => {
128
+ return 'pbd.' + itm;
129
+ })
130
+ .join(',')}) d))::varchar as "blockData"
131
+ , (SELECT sum(weight) FROM raw_block_dispatch rbd WHERE rbd.dispatch_at = pbd.dispatch_at) AS "today"
132
+ FROM (select generate_series((date '${fromDateString}')::timestamp, (date '${toDateString}')::timestamp, interval '1 day')::date as dateDay) as md
133
+ LEFT JOIN pivot_block_dispatch pbd on pbd.dispatch_at::date = md.dateDay
134
+ );
135
+ `);
136
+ const result = await tx.query(`
137
+ select "date", "blockData", "today"
138
+ from temp_monthly_production_data dt
139
+ `);
140
+ const total = await tx.query(`
141
+ select count(*) from temp_monthly_production_data
142
+ `);
143
+ return {
144
+ items: result.map(itm => {
145
+ return Object.assign({}, itm);
146
+ }),
147
+ total: total[0].count
148
+ };
149
+ }
150
+ catch (error) {
151
+ throw error;
152
+ }
153
+ }
154
+ };
155
+ //# sourceMappingURL=daily-ffb-dispatch-production-reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daily-ffb-dispatch-production-reports.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/report/daily-ffb-dispatch-production-reports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dailyProductionReports = void 0;
4
+ const entities_1 = require("../../../entities");
5
+ exports.dailyProductionReports = {
6
+ async dailyProductionReports(_, params, context) {
7
+ try {
8
+ const { tx } = context.state;
9
+ let year = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[0]);
10
+ let month = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[1]);
11
+ let fromDate = new Date(year, month - 1, 1);
12
+ let toDate = new Date(year, month, 1);
13
+ toDate.setDate(toDate.getDate() - 1);
14
+ let fromDateString = [
15
+ fromDate.getFullYear().toString(),
16
+ String(fromDate.getMonth() + 1).padStart(2, '0'),
17
+ '01'
18
+ ].join('-');
19
+ let toDateString = [
20
+ toDate.getFullYear().toString(),
21
+ String(toDate.getMonth() + 1).padStart(2, '0'),
22
+ String(toDate.getDate()).padStart(2, '0')
23
+ ].join('-');
24
+ const block = await tx
25
+ .getRepository(entities_1.Block)
26
+ .findOneOrFail({ where: { id: params.filters.filter(x => x.name == 'block')[0].value } });
27
+ await tx.query(`
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 *
44
+ FROM (
45
+ select
46
+ blk.block_id,
47
+ COALESCE(
48
+ SUM(
49
+ CASE
50
+ WHEN transaction_type = 'HARVEST' THEN field_bunches
51
+ WHEN transaction_type IN ('LOADING', 'LOADING_ADJUSTMENT') THEN -field_bunches
52
+ ELSE 0
53
+ END
54
+ ), 0
55
+ ) AS today_field_bunches,
56
+ round(coalesce(sum(ramp_weight),0)::numeric,4) AS today_ramp_weight,
57
+ sum(case when transaction_type = 'HARVEST' or transaction_type = 'BUNCHES_ADJUSTMENT' then field_bunches else 0 end) as today_bunch_harvest,
58
+ sum(case when transaction_type = 'LOADING' or transaction_type = 'LOADING_ADJUSTMENT' then -field_bunches else 0 end) as today_bunch_collected,
59
+ round(sum(case when transaction_type = 'LOADING' and transaction_type = 'LOADING_ADJUSTMENT' then ramp_weight else 0 end)::numeric,4) as today_ramp_weight_collected,
60
+ --round(sum(case when transaction_type = 'DISPATCHMENT' then -ramp_weight else 0 end)::numeric,4) as today_weight_dispatch,
61
+ transaction_date
62
+ from record_transactions t2
63
+ inner join temp_blocks blk on blk.id = t2.block_id
64
+ where transaction_date <= $1
65
+ and t2.deleted_at is null
66
+ group by blk.block_id, transaction_date
67
+ ) src
68
+ )
69
+ `, [toDateString]);
70
+ await tx.query(`
71
+ CREATE TEMP TABLE temp_daily_production_data ON COMMIT DROP AS (
72
+ SELECT
73
+ *,
74
+ COALESCE(SUM(today_bunch_harvest) OVER (ORDER BY date_day ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0) AS to_date_bunch_harvest,
75
+ COALESCE(SUM(today_bunch_collected) OVER (ORDER BY date_day ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0) AS to_date_bunch_collected,
76
+ COALESCE(SUM(today_ramp_weight_collected) OVER (ORDER BY date_day ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0) AS to_date_ramp_weight_collected,
77
+ COALESCE(SUM(today_weight_dispatch) OVER (ORDER BY date_day ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0) AS to_date_weight_dispatch,
78
+ prev_bunch_bal_in_field + today_bunch_harvest AS today_bunch_in_field,
79
+ prev_bunch_bal_in_field + today_bunch_harvest + today_bunch_collected AS today_bunch_bal_in_field,
80
+ prev_weight_bal_in_ramp + today_ramp_weight_collected - today_weight_dispatch AS today_weight_bal_in_ramp
81
+ FROM (
82
+ SELECT
83
+ EXTRACT(DAY FROM md.dateDay) AS date_day,
84
+ COALESCE(
85
+ (SELECT SUM(today_field_bunches)
86
+ FROM temp_records t2
87
+ WHERE transaction_date::timestamp < md.dateDay
88
+ AND transaction_date BETWEEN $1 AND $2
89
+ ), 0
90
+ ) AS prev_bunch_bal_in_field,
91
+ COALESCE(
92
+ (SELECT SUM(today_ramp_weight)
93
+ FROM temp_records t2
94
+ WHERE transaction_date::timestamp < md.dateDay
95
+ AND transaction_date BETWEEN $1 AND $2
96
+ ), 0
97
+ ) AS prev_weight_bal_in_ramp,
98
+ COALESCE(today_bunch_harvest, 0) AS today_bunch_harvest,
99
+ COALESCE(today_bunch_collected, 0) AS today_bunch_collected,
100
+ COALESCE(today_ramp_weight_collected, 0) AS today_ramp_weight_collected,
101
+ COALESCE(
102
+ (SELECT SUM(
103
+ CASE
104
+ WHEN rbh.transaction_type = 'DISPATCH' AND rbh.weight < 0 THEN ABS(rbh.weight)
105
+ WHEN rbh.transaction_type IN ('REVERSE_DISPATCH', 'TONNAGE_VARIANCE') THEN ABS(rbh.weight)
106
+ ELSE 0
107
+ END
108
+ )
109
+ FROM ramp_block_histories rbh
110
+ INNER JOIN temp_blocks blk ON blk.id = rbh.block_id
111
+ WHERE rbh.transaction_date::timestamp = md.dateDay
112
+ AND rbh.transaction_type IN ('DISPATCH', 'REVERSE_DISPATCH', 'TONNAGE_VARIANCE')
113
+ ), 0
114
+ ) AS today_weight_dispatch,
115
+ COALESCE(tot.today_out_turn, 0) AS today_out_turn,
116
+ COALESCE(SUM(tot.today_out_turn) OVER (ORDER BY dateDay ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0) AS to_date_out_turn,
117
+ (SELECT name FROM blocks b2 WHERE id = $3) AS block,
118
+ COALESCE(thr.today_harvesting_round, 0) AS today_harvesting_round,
119
+ COALESCE(thr.today_hectare_cover, 0) AS today_hectare_cover
120
+ FROM
121
+ (SELECT generate_series((DATE '${fromDateString}')::timestamp, (DATE '${toDateString}')::timestamp, INTERVAL '1 day')::date AS dateDay) AS md
122
+ LEFT JOIN (
123
+ SELECT *
124
+ FROM temp_records trx
125
+ WHERE transaction_date BETWEEN $1 AND $2
126
+ ORDER BY transaction_date
127
+ ) AS dt ON dt.transaction_date::date = md.dateDay
128
+ LEFT JOIN (
129
+ SELECT
130
+ SUM(harvesting_round) AS today_harvesting_round,
131
+ SUM(coverage) AS today_hectare_cover,
132
+ harvest_date
133
+ FROM daily_harvests dh
134
+ INNER JOIN temp_blocks blk ON blk.id = dh.block_id
135
+ WHERE harvest_date BETWEEN $1 AND $2
136
+ AND dh.deleted_at IS NULL
137
+ GROUP BY blk.block_id, harvest_date
138
+ ) AS thr ON thr.harvest_date::date = md.dateDay
139
+ LEFT JOIN (
140
+ SELECT
141
+ COUNT(*) AS today_out_turn,
142
+ dh.harvest_date
143
+ FROM daily_harvest_details dhd
144
+ INNER JOIN daily_harvests dh ON dh.id = dhd.daily_harvest_id
145
+ INNER JOIN temp_blocks blk ON blk.id = dh.block_id
146
+ WHERE dh.harvest_date BETWEEN $1 AND $2
147
+ AND dhd.deleted_at IS NULL
148
+ GROUP BY blk.block_id, dh.harvest_date
149
+ ) AS tot ON tot.harvest_date::date = md.dateDay
150
+ ) dt
151
+ );`, [fromDateString, toDateString, block.id]);
152
+ const result = await tx.query(`
153
+ select * from temp_daily_production_data dt
154
+ `);
155
+ const total = await tx.query(`
156
+ select count(*) from temp_daily_production_data
157
+ `);
158
+ let items = result.map(itm => {
159
+ return {
160
+ block: itm.block,
161
+ dateDay: itm.date_day,
162
+ diffInBunches: parseFloat(itm.diff_in_bunches).toFixed(1),
163
+ prevBunchBalInField: parseFloat(itm.prev_bunch_bal_in_field).toFixed(1),
164
+ prevWeightBalInRamp: parseFloat(itm.prev_weight_bal_in_ramp).toFixed(4),
165
+ toDateBunchHarvest: parseFloat(itm.to_date_bunch_harvest).toFixed(1),
166
+ toDateOutTurn: itm.to_date_out_turn,
167
+ toDateWeightDispatch: parseFloat(itm.to_date_weight_dispatch).toFixed(4),
168
+ todayBunchBalInField: parseFloat(itm.today_bunch_bal_in_field).toFixed(1),
169
+ todayBunchCollected: parseFloat(itm.today_bunch_collected).toFixed(1),
170
+ todayBunchHarvest: parseFloat(itm.today_bunch_harvest).toFixed(1),
171
+ todayBunchInField: parseFloat(itm.today_bunch_in_field).toFixed(1),
172
+ todayHarvestingRound: itm.today_harvesting_round,
173
+ todayHectareCover: parseFloat(itm.today_hectare_cover).toFixed(4),
174
+ todayOutTurn: itm.today_out_turn,
175
+ todayWeightBalInRamp: parseFloat(itm.today_weight_bal_in_ramp).toFixed(4),
176
+ todayWeightDispatch: parseFloat(itm.today_weight_dispatch).toFixed(4)
177
+ };
178
+ });
179
+ // updateAllData()
180
+ return { items, total: total[0].count };
181
+ }
182
+ catch (error) {
183
+ throw error;
184
+ }
185
+ }
186
+ };
187
+ // async function updateAllData() {
188
+ // await getManager().transaction(async txMgr => {
189
+ // let data = await txMgr.query(`
190
+ // SELECT * FROM (
191
+ // SELECT uuid_generate_v4() AS id, DATE(dd.dispatch_at)::varchar AS transaction_date, 'DISPATCH' AS transaction_type, dd.dispatch_at AS created_at, dd.dispatch_at AS updated_at,
192
+ // ddd.collected_ramp_weight AS dispatch_weight, '980f20a0-747c-4d04-a870-97a09f6ba807' AS domain_id, ddd.ramp_id, '0933baea-e099-494b-9791-3dfe805731f0' AS creator_id, '0933baea-e099-494b-9791-3dfe805731f0' AS updater_id,
193
+ // dd.id as daily_dispatch_id
194
+ // FROM daily_dispatch_details ddd
195
+ // INNER JOIN daily_dispatches dd ON dd.id = ddd.daily_dispatch_id
196
+ // WHERE dd.dispatch_at >='2023-07-01 00:00:00.000'
197
+ // AND dd.deleted_at IS null
198
+ // ) src ORDER BY src.ramp_id, src.transaction_date
199
+ // `)
200
+ // // await data.forEach(async dt => {
201
+ // for (let dtIdx = 0; dtIdx < data.length; dtIdx++) {
202
+ // const dt = data[dtIdx];
203
+ // let rampBlockHistory = await txMgr.query(`
204
+ // SELECT * FROM (
205
+ // SELECT *, ROW_NUMBER () OVER (PARTITION BY ramp_id, block_id ORDER BY transaction_date desc, transaction_type) AS rn FROM ramp_block_histories
206
+ // WHERE ramp_id =$1 AND transaction_date <= $2
207
+ // ) foo WHERE rn = 1
208
+ // `, [dt.ramp_id, dt.transaction_date])
209
+ // let totalRampWeight: number = rampBlockHistory.reduce((total, currentValue) => {
210
+ // total += currentValue.previous_weight + currentValue.weight
211
+ // return total
212
+ // }, 0)
213
+ // for (let index = 0; index < rampBlockHistory.length; index++) {
214
+ // const dt2 = rampBlockHistory[index];
215
+ // let currentRampBlockWeight = dt2.previous_weight + dt2.weight
216
+ // let percentage = parseFloat((currentRampBlockWeight / totalRampWeight).toFixed(4))
217
+ // let weight = (-dt.dispatch_weight * percentage).toFixed(4)
218
+ // // insert into ramp_block_histories (id,transaction_type, creator_id, updater_id, transaction_date, created_at, updated_at, weight, domain_id, block_id, ramp_id)
219
+ // let processedData = await txMgr.query(`
220
+ // insert into ramp_block_histories (id, transaction_type, creator_id, updater_id, transaction_date, created_at, updated_at, domain_id, ramp_id, weight, previous_weight, current_weight, block_id, daily_dispatch_id)
221
+ // SELECT uuid_generate_v4() AS id, 'DISPATCH' AS transaction_type,
222
+ // '0933baea-e099-494b-9791-3dfe805731f0' AS creator_id, '0933baea-e099-494b-9791-3dfe805731f0' AS updater_id,
223
+ // $1 AS transaction_date, $2 AS created_at, $3 AS updated_at,
224
+ // $4 AS domain_id, $5 AS ramp_id,
225
+ // $6 AS weight,
226
+ // $7 AS previous_weight,
227
+ // $8 AS current_weight,
228
+ // $9 AS block_id,
229
+ // $10 AS daily_dispatch_id
230
+ // `, [dt.transaction_date, dt2.created_at, dt2.updated_at, dt.domain_id, dt.ramp_id, parseFloat(weight), parseFloat(currentRampBlockWeight), parseFloat(currentRampBlockWeight) + parseFloat(weight), dt2.block_id, dt.daily_dispatch_id])
231
+ // // await txMgr.query(`
232
+ // // SELECT * FROM (
233
+ // // SELECT *, ROW_NUMBER () OVER (PARTITION BY ramp_id, block_id ORDER BY transaction_date desc) AS rn FROM ramp_block_histories
234
+ // // WHERE ramp_id =$1 AND transaction_date <= $2
235
+ // // ) foo WHERE rn = 1
236
+ // // `, [dt.ramp_id, dt.transaction_date]
237
+ // // )
238
+ // let x = dt2
239
+ // }
240
+ // let x = rampBlockHistory
241
+ // };
242
+ // })
243
+ // }
244
+ //# sourceMappingURL=daily-production-reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daily-production-reports.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/report/daily-production-reports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dailyStaffHarvestReports = void 0;
4
+ const entities_1 = require("../../../entities");
5
+ exports.dailyStaffHarvestReports = {
6
+ async dailyStaffHarvestReports(_, params, context) {
7
+ try {
8
+ const { tx } = context.state;
9
+ let year = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[0]);
10
+ let month = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[1]);
11
+ let fromDate = new Date(year, month - 1, 1);
12
+ let toDate = new Date(year, month, 1);
13
+ toDate.setDate(toDate.getDate() - 1);
14
+ let fromDateString = [
15
+ fromDate.getFullYear().toString(),
16
+ String(fromDate.getMonth() + 1).padStart(2, '0'),
17
+ '01'
18
+ ].join('-');
19
+ let toDateString = [
20
+ toDate.getFullYear().toString(),
21
+ String(toDate.getMonth() + 1).padStart(2, '0'),
22
+ String(toDate.getDate()).padStart(2, '0')
23
+ ].join('-');
24
+ const block = await tx
25
+ .getRepository(entities_1.Block)
26
+ .findOneOrFail({ where: { id: params.filters.filter(x => x.name == 'block')[0].value } });
27
+ await tx.query(`
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 (
43
+ select "harvestDate"::varchar as "harvestDate", "blockName"::varchar, "staffName"::varchar, sum("totalBunchHarvested")::varchar as "totalBunchHarvested" from (
44
+ select dh.harvest_date::date as "harvestDate", b2."name" as "blockName", os."name" as "staffName",
45
+ dhd.total_bunch_harvested as "totalBunchHarvested"
46
+ from daily_harvest_details dhd
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
49
+ inner join organization_staffs os on os.id = dhd.organization_staff_id
50
+ inner join blocks b2 on b2.id = blk.block_id
51
+ where dh.harvest_date::date between $1 and $2
52
+ and dhd.deleted_at is null
53
+ ) as dt
54
+ group by "harvestDate", "blockName", "staffName"
55
+ order by "staffName", "harvestDate"
56
+ )
57
+ `, [fromDateString, toDateString]);
58
+ const result = await tx.query(`
59
+ select * from temp_daily_staff_harvest_data dt
60
+ `);
61
+ const total = await tx.query(`
62
+ select count(*) from temp_daily_staff_harvest_data
63
+ `);
64
+ return { items: result, total: total[0].count };
65
+ }
66
+ catch (error) {
67
+ throw error;
68
+ }
69
+ }
70
+ };
71
+ //# sourceMappingURL=daily-staff-harvest-reports.js.map
@@ -0,0 +1 @@
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,CACZ;;;;;;;;;;;;;OAaD,EACC,CAAC,KAAK,CAAC,EAAE,CAAC,CACX,CAAA;YAED,MAAM,EAAE,CAAC,KAAK,CACZ;;;;;;;;;;;;;;;;WAgBG,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"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReportResolver = void 0;
4
+ const daily_production_reports_1 = require("./daily-production-reports");
5
+ const monthly_production_reports_1 = require("./monthly-production-reports");
6
+ const monthly_dispatch_summary_reports_1 = require("./monthly-dispatch-summary-reports");
7
+ const yearly_production_reports_1 = require("./yearly-production-reports");
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");
11
+ const daily_ffb_dispatch_production_reports_1 = require("./daily-ffb-dispatch-production-reports");
12
+ exports.ReportResolver = {
13
+ Query: Object.assign(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), daily_ffb_dispatch_production_reports_1.dailyFfbDispatchProductionReports),
14
+ Mutation: {}
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
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;AAClE,mGAA2F;AAE9E,QAAA,cAAc,GAAG;IAC5B,KAAK,sHACA,iDAAsB,GACtB,qDAAwB,GACxB,gEAA6B,GAC7B,mDAAuB,GACvB,sDAAwB,GACxB,4DAA2B,GAC3B,gDAAqB,GACrB,yEAAiC,CACrC;IACD,QAAQ,EAAE,EAAE;CACb,CAAA"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.monthlyBlockDispatchReports = void 0;
4
+ const entities_1 = require("../../../entities");
5
+ exports.monthlyBlockDispatchReports = {
6
+ async monthlyBlockDispatchReports(_, params, context) {
7
+ try {
8
+ const { domain, tx } = context.state;
9
+ let year = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[0]);
10
+ let month = parseInt(params.filters.filter(x => x.name == 'month')[0].value.split('-')[1]);
11
+ let fromDate = new Date(year, month - 1, 1);
12
+ let toDate = new Date(year, month, 1);
13
+ toDate.setDate(toDate.getDate() - 1);
14
+ let fromDateString = [
15
+ fromDate.getFullYear().toString(),
16
+ String(fromDate.getMonth() + 1).padStart(2, '0'),
17
+ '01'
18
+ ].join('-');
19
+ let toDateString = [
20
+ toDate.getFullYear().toString(),
21
+ String(toDate.getMonth() + 1).padStart(2, '0'),
22
+ String(toDate.getDate()).padStart(2, '0')
23
+ ].join('-');
24
+ let blocks = await tx.getRepository(entities_1.Block).query(`
25
+ SELECT b.id, b.name FROM ramps r
26
+ INNER JOIN blocks b ON b.id = r.block_id
27
+ WHERE b.deleted_at IS NULL
28
+ AND r.domain_id = $1
29
+ GROUP BY b.id, b.name
30
+ `, [domain.id]);
31
+ // -- WHERE dd.dispatch_at::timestamp between $1::timestamp and $2::timestamp
32
+ // [fromDateString, toDateString]
33
+ await tx.query(`create extension if not exists tablefunc`);
34
+ await tx.query(`
35
+ CREATE TEMP TABLE raw_block_dispatch ON COMMIT DROP AS (
36
+ SELECT dd.id, b.name AS block_name,
37
+ COALESCE(ddd.adjusted_weight, ddd.collected_ramp_weight, 0) AS weight
38
+ FROM daily_dispatches dd
39
+ INNER JOIN daily_dispatch_details ddd ON ddd.daily_dispatch_id = dd.id
40
+ INNER JOIN ramps r ON r.id = ddd.ramp_id
41
+ INNER JOIN blocks b ON b.id = r.block_id
42
+ WHERE dd.dispatch_at::timestamp between $1::timestamp and $2::timestamp
43
+ AND dd.deleted_at is null
44
+ AND ddd.deleted_at is null
45
+ )
46
+ `, [fromDateString, toDateString]);
47
+ await tx.query(`
48
+ CREATE TEMP TABLE pivot_block_dispatch ON COMMIT DROP AS (
49
+ SELECT * FROM crosstab(
50
+ $$SELECT rbd.id, rbd.block_name, round(rbd.weight, 2 )::varchar FROM raw_block_dispatch rbd$$,
51
+ $$SELECT b.name FROM ramps r INNER JOIN blocks b ON b.id = r.block_id WHERE r.deleted_at IS NULL AND r.domain_id = '${domain.id}' GROUP BY b.id, b.name$$
52
+ ) AS ("id" uuid, ${blocks.map(block => `"${block.name}" varchar`).join(',')})
53
+ );
54
+ `);
55
+ await tx.query(`
56
+ CREATE TEMP TABLE temp_monthly_production_data ON COMMIT DROP AS (
57
+ SELECT
58
+ ROW_NUMBER() OVER(
59
+ PARTITION BY dd.dispatch_at::date
60
+ ORDER BY dd.dispatch_at
61
+ ) as rn
62
+ , dd.id, COALESCE(c.name, 'UNKNOWN') AS "dispatchTo"
63
+ , dd.transport_no as "lorryNo"
64
+ , dd.driver_identification as "driverIdentification"
65
+ , TO_CHAR(dd.dispatch_at:: DATE, 'dd/mm/yyyy') as "date"
66
+ , row_to_json((SELECT d FROM (SELECT ${blocks
67
+ .map(block => `pbd."${block.name}"`)
68
+ .join(',')}) d))::varchar as "blockData"
69
+ , (SELECT sum(weight) FROM raw_block_dispatch rbd WHERE rbd.id = dd.id) AS "today"
70
+ FROM daily_dispatches dd
71
+ INNER JOIN pivot_block_dispatch pbd ON pbd.id = dd.id
72
+ LEFT JOIN organizations c ON c.id = dd.dispatch_to_id
73
+ );
74
+ `);
75
+ const result = await tx.query(`
76
+ select "id", "dispatchTo", "lorryNo", "driverIdentification",
77
+ CASE WHEN "rn" = 1 THEN "date" ELSE '' END AS "date", "blockData", "today",
78
+ coalesce(sum(today) over (order by date asc rows between unbounded preceding and current row), 0) as "todate"
79
+ from temp_monthly_production_data dt
80
+ `);
81
+ const total = await tx.query(`
82
+ select count(*) from temp_monthly_production_data
83
+ `);
84
+ return {
85
+ items: result.map(itm => {
86
+ return Object.assign({}, itm);
87
+ }),
88
+ total: total[0].count
89
+ };
90
+ }
91
+ catch (error) {
92
+ throw error;
93
+ }
94
+ }
95
+ };
96
+ //# 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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"}