@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,416 @@
1
+ import '@things-factory/form-ui'
2
+ import '@things-factory/grist-ui'
3
+
4
+ import gql from 'graphql-tag'
5
+ import { css, html } from 'lit-element'
6
+
7
+ import { i18next, localize } from '@things-factory/i18n-base'
8
+ import { client, CustomAlert, PageView } from '@things-factory/shell'
9
+ import { CommonButtonStyles, ScrollbarStyles } from '@things-factory/styles'
10
+ import { isMobileDevice } from '@things-factory/utils'
11
+
12
+ class MasterTruck extends localize(i18next)(PageView) {
13
+ static get styles() {
14
+ return [
15
+ ScrollbarStyles,
16
+ css`
17
+ :host {
18
+ display: flex;
19
+ flex-direction: column;
20
+ overflow: hidden;
21
+ }
22
+
23
+ search-form {
24
+ overflow: visible;
25
+ }
26
+
27
+ data-grist {
28
+ overflow-y: auto;
29
+ flex: 1;
30
+ }
31
+ `
32
+ ]
33
+ }
34
+
35
+ static get properties() {
36
+ return {
37
+ _searchFields: Array,
38
+ config: Object,
39
+ data: Object,
40
+ importHandler: Object
41
+ }
42
+ }
43
+
44
+ render() {
45
+ return html`
46
+ <search-form
47
+ id="search-form"
48
+ .fields=${this._searchFields}
49
+ initFocus="description"
50
+ @submit=${e => this.dataGrist.fetch()}
51
+ ></search-form>
52
+
53
+ <data-grist
54
+ .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
55
+ .config=${this.config}
56
+ .fetchHandler="${this.fetchHandler.bind(this)}"
57
+ ></data-grist>
58
+ `
59
+ }
60
+
61
+ get context() {
62
+ return {
63
+ title: i18next.t('title.truck'),
64
+ actions: [
65
+ {
66
+ title: i18next.t('button.save'),
67
+ action: this._saveTruck.bind(this),
68
+ ...CommonButtonStyles.save
69
+ },
70
+ {
71
+ title: i18next.t('button.delete'),
72
+ action: this._deleteTruck.bind(this),
73
+ ...CommonButtonStyles.delete
74
+ }
75
+ ],
76
+ exportable: {
77
+ name: i18next.t('title.staff'),
78
+ data: this._exportableData.bind(this)
79
+ },
80
+ importable: {
81
+ handler: this._importableData.bind(this)
82
+ }
83
+ }
84
+ }
85
+
86
+ async pageInitialized() {
87
+ const _companies = await this.fetchCompanies()
88
+
89
+ this._searchFields = [
90
+ {
91
+ label: i18next.t('field.truck_no'),
92
+ name: 'name',
93
+ type: 'text',
94
+ props: { searchOper: 'i_like' }
95
+ },
96
+ {
97
+ label: i18next.t('field.company'),
98
+ name: 'organizationId',
99
+ type: 'select',
100
+ options: [
101
+ { value: '' },
102
+ ..._companies
103
+ .map(company => {
104
+ return {
105
+ name: company.name,
106
+ value: company.id
107
+ }
108
+ })
109
+ .sort(this._compareValues('name', 'asc'))
110
+ ],
111
+ props: { searchOper: 'eq' }
112
+ }
113
+ ]
114
+
115
+ this.config = {
116
+ rows: { selectable: { multiple: true } },
117
+ pagination: { limit: 100, pages: [50, 100, 250] },
118
+ columns: [
119
+ { type: 'gutter', gutterName: 'dirty' },
120
+ { type: 'gutter', gutterName: 'sequence' },
121
+ { type: 'gutter', gutterName: 'row-selector', multiple: true },
122
+ {
123
+ type: 'string',
124
+ name: 'name',
125
+ header: i18next.t('field.truck_no'),
126
+ record: { editable: true },
127
+ imex: { header: i18next.t('field.truck_no'), key: 'name', width: 50, type: 'string' },
128
+ sortable: true,
129
+ width: 300
130
+ },
131
+ {
132
+ type: 'object',
133
+ name: 'organization',
134
+ header: i18next.t('field.company'),
135
+ record: {
136
+ editable: true,
137
+ options: {
138
+ queryName: 'organizations',
139
+ select: [
140
+ { name: 'id', hidden: true },
141
+ { name: 'name', header: i18next.t('field.name'), width: 350 },
142
+ { name: 'type', header: i18next.t('field.type'), width: 300 }
143
+ ]
144
+ }
145
+ },
146
+ sortable: true,
147
+ width: 200
148
+ },
149
+ {
150
+ type: 'datetime',
151
+ name: 'updatedAt',
152
+ header: i18next.t('field.updated_at'),
153
+ sortable: true,
154
+ width: 180
155
+ },
156
+ {
157
+ type: 'object',
158
+ name: 'updater',
159
+ header: i18next.t('field.updater'),
160
+ sortable: true,
161
+ width: 180
162
+ }
163
+ ]
164
+ }
165
+ }
166
+
167
+ pageUpdated(changes, lifecycle) {
168
+ if (this.active) {
169
+ this.dataGrist.fetch()
170
+ }
171
+ }
172
+
173
+ get searchForm() {
174
+ return this.shadowRoot.querySelector('search-form')
175
+ }
176
+
177
+ get dataGrist() {
178
+ return this.shadowRoot.querySelector('data-grist')
179
+ }
180
+
181
+ async fetchCompanies() {
182
+ const filters = []
183
+
184
+ const response = await client.query({
185
+ query: gql`
186
+ query organizations($filters: [Filter]) {
187
+ organizations(filters: $filters) {
188
+ items {
189
+ id
190
+ name
191
+ description
192
+ }
193
+ }
194
+ }
195
+ `,
196
+ variables: { filters }
197
+ })
198
+
199
+ return response.data.organizations.items
200
+ }
201
+
202
+ _importableData(records) {
203
+ setTimeout(() => {
204
+ openPopup(
205
+ html`
206
+ <import-pop-up
207
+ .records=${records}
208
+ .config=${{
209
+ rows: this.config.rows,
210
+ columns: [...this.config.columns.filter(column => column.imex !== undefined)]
211
+ }}
212
+ .importHandler="${this.importHandler.bind(this)}"
213
+ ></import-pop-up>
214
+ `,
215
+ {
216
+ backdrop: true,
217
+ size: 'large',
218
+ title: i18next.t('title.import')
219
+ }
220
+ )
221
+ }, 500)
222
+ }
223
+
224
+ _compareValues(key, order = 'asc') {
225
+ return function innerSort(a, b) {
226
+ if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
227
+ return 0
228
+ }
229
+
230
+ const varA = typeof a[key] === 'string' ? a[key].toUpperCase() : a[key]
231
+ const varB = typeof b[key] === 'string' ? b[key].toUpperCase() : b[key]
232
+
233
+ let comparison = 0
234
+ if (varA > varB) {
235
+ comparison = 1
236
+ } else if (varA < varB) {
237
+ comparison = -1
238
+ }
239
+ return order === 'desc' ? comparison * -1 : comparison
240
+ }
241
+ }
242
+
243
+ async fetchHandler({ page, limit, sorters = [] }) {
244
+ const filters = this.searchForm.queryFilters
245
+ const pagination = { page, limit }
246
+ const sortings = sorters
247
+
248
+ const response = await client.query({
249
+ query: gql`
250
+ query trucks($filters: [Filter], $pagination: Pagination, $sortings: [Sorting]) {
251
+ trucks(filters: $filters, pagination: $pagination, sortings: $sortings) {
252
+ items {
253
+ id
254
+ name
255
+ description
256
+ organization {
257
+ id
258
+ name
259
+ description
260
+ }
261
+ deletedAt
262
+ updatedAt
263
+ updater {
264
+ id
265
+ name
266
+ description
267
+ }
268
+ }
269
+ total
270
+ }
271
+ }
272
+ `,
273
+ variables: { filters, pagination, sortings }
274
+ })
275
+
276
+ return {
277
+ total: response.data.trucks.total || 0,
278
+ records: response.data.trucks.items || []
279
+ }
280
+ }
281
+
282
+ async importHandler(patches) {
283
+ const response = await client.mutate({
284
+ mutation: gql`
285
+ mutation updateMultipleTruck($patches: [TruckPatch]!) {
286
+ updateMultipleTruck(patches: $patches) {
287
+ name
288
+ }
289
+ }
290
+ `,
291
+ variables: { patches }
292
+ })
293
+
294
+ if (!response.errors) {
295
+ history.back()
296
+ this.dataGrist.fetch()
297
+ this._showToast({ message: i18next.t('text.data_imported_successfully') })
298
+ }
299
+ }
300
+
301
+ async _saveTruck() {
302
+ let patches = this.dataGrist.exportPatchList({ flagName: 'cuFlag' }).map(data => {
303
+ if (data?.organization?.id) {
304
+ data = { ...data, organization: { id: data.organization.id } }
305
+ }
306
+ return data
307
+ })
308
+
309
+ if (patches && patches.length) {
310
+ if (!patches?.length) {
311
+ CustomAlert({
312
+ title: i18next.t('text.nothing_changed'),
313
+ text: i18next.t('text.there_is_nothing_to_save')
314
+ })
315
+ } else {
316
+ const response = await client.mutate({
317
+ mutation: gql`
318
+ mutation updateMultipleTruck($patches: [TruckPatch]!) {
319
+ updateMultipleTruck(patches: $patches) {
320
+ name
321
+ }
322
+ }
323
+ `,
324
+ variables: { patches }
325
+ })
326
+
327
+ if (!response.errors) {
328
+ this.dataGrist.fetch()
329
+ this._showToast({ message: i18next.t('text.data_updated_successfully') })
330
+ }
331
+ }
332
+ }
333
+ }
334
+
335
+ async _deleteTruck() {
336
+ const ids = this.dataGrist.selected.map(record => record.id)
337
+ if (!ids?.length) {
338
+ CustomAlert({
339
+ title: i18next.t('text.nothing_selected'),
340
+ text: i18next.t('text.there_is_nothing_to_delete')
341
+ })
342
+ } else {
343
+ const answer = await CustomAlert({
344
+ type: 'warning',
345
+ title: i18next.t('button.delete'),
346
+ text: i18next.t('text.are_you_sure'),
347
+ confirmButton: { text: i18next.t('button.delete') },
348
+ cancelButton: { text: i18next.t('button.cancel') }
349
+ })
350
+
351
+ if (!answer.value) return
352
+
353
+ const response = await client.mutate({
354
+ mutation: gql`
355
+ mutation deleteTrucks($ids: [String]!) {
356
+ deleteTrucks(ids: $ids)
357
+ }
358
+ `,
359
+ variables: { ids }
360
+ })
361
+
362
+ if (!response.errors) {
363
+ this.dataGrist.fetch()
364
+ this._showToast({ message: i18next.t('text.data_deleted_successfully') })
365
+ }
366
+ }
367
+ }
368
+
369
+ get _columns() {
370
+ return this.config.columns
371
+ }
372
+
373
+ _exportableData() {
374
+ let records = []
375
+ if (this.dataGrist.selected && this.dataGrist.selected.length > 0) {
376
+ records = this.dataGrist.selected
377
+ } else {
378
+ records = this.dataGrist.data.records
379
+ }
380
+
381
+ var headerSetting = this.dataGrist._config.columns
382
+ .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
383
+ .map(column => {
384
+ return column.imex
385
+ })
386
+
387
+ var data = records.map(item => {
388
+ return {
389
+ id: item.id,
390
+ ...this._columns
391
+ .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
392
+ .reduce((record, column) => {
393
+ record[column.imex.key] = column.imex.key
394
+ .split('.')
395
+ .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
396
+ return record
397
+ }, {})
398
+ }
399
+ })
400
+
401
+ return { header: headerSetting, data: data }
402
+ }
403
+
404
+ _showToast({ type, message }) {
405
+ document.dispatchEvent(
406
+ new CustomEvent('notify', {
407
+ detail: {
408
+ type,
409
+ message
410
+ }
411
+ })
412
+ )
413
+ }
414
+ }
415
+
416
+ customElements.define('master-truck', MasterTruck)
@@ -1,81 +1,82 @@
1
- import { PageView, store } from '@things-factory/shell'
2
1
  import { css, html } from 'lit-element'
3
2
  import { connect } from 'pwa-helpers/connect-mixin.js'
4
3
 
4
+ import { PageView, store } from '@things-factory/shell'
5
+
5
6
  class ReportHome extends connect(store)(PageView) {
6
7
  static get styles() {
7
8
  return [
8
9
  css`
9
- :host {
10
- display: block;
11
- background-color: var(--main-section-background-color);
12
- padding: var(--padding-wide);
10
+ :host {
11
+ display: block;
12
+ background-color: var(--main-section-background-color);
13
+ padding: var(--padding-wide);
13
14
 
14
- overflow: auto;
15
- }
16
- [message] {
17
- padding: 40px 20px 0 20px;
18
- max-width: var(--content-container-max-width);
19
- font-size: 18px;
20
- color: var(--secondary-color);
21
- text-align: justify;
22
- }
23
- [message] strong {
24
- display: block;
25
- font-size: 2.5rem;
26
- color: var(--primary-color);
27
- }
28
- [message] img {
29
- float: right;
30
- width: 450px;
31
- max-width: 90%;
32
- display: block;
33
- margin: auto;
34
- margin-top: 20px;
35
- }
36
- [message] ul {
37
- margin: var(--margin-default) 0;
38
- padding: 0;
39
- list-style: circle inside;
40
- }
41
- [message] a {
42
- color: var(--secondary-text-color);
43
- font-size: 0.9rem;
44
- }
45
- [message] a:hover {
46
- font-weight: bold;
47
- color: var(--primary-color);
48
- }
49
- [button-primary] {
50
- display: block;
51
- background-color: var(--button-primary-background-color);
52
- border: var(--button-border);
53
- border-radius: var(--button-border-radius);
54
- margin-top: var(--margin-wide);
55
- padding: var(--button-padding);
56
- color: var(--button-primary-color);
57
- font: var(--button-primary-font);
58
- text-transform: var(--button-text-transform);
59
- text-decoration: none;
60
- }
61
- [button-primary]:hover {
62
- background-color: var(--button-primary-active-background-color);
63
- box-shadow: var(--button-active-box-shadow);
64
- }
65
- @media screen and (max-width: 480px) {
15
+ overflow: auto;
16
+ }
66
17
  [message] {
67
- padding-top: 10px;
68
- font-size: 15px;
18
+ padding: 40px 20px 0 20px;
19
+ max-width: var(--content-container-max-width);
20
+ font-size: 18px;
21
+ color: var(--secondary-color);
22
+ text-align: justify;
69
23
  }
70
24
  [message] strong {
71
- font-size: 1.6rem;
25
+ display: block;
26
+ font-size: 2.5rem;
27
+ color: var(--primary-color);
72
28
  }
73
29
  [message] img {
74
- float: none;
75
- width: 90%;
30
+ float: right;
31
+ width: 450px;
32
+ max-width: 90%;
33
+ display: block;
34
+ margin: auto;
35
+ margin-top: 20px;
76
36
  }
77
- }
78
- `
37
+ [message] ul {
38
+ margin: var(--margin-default) 0;
39
+ padding: 0;
40
+ list-style: circle inside;
41
+ }
42
+ [message] a {
43
+ color: var(--secondary-text-color);
44
+ font-size: 0.9rem;
45
+ }
46
+ [message] a:hover {
47
+ font-weight: bold;
48
+ color: var(--primary-color);
49
+ }
50
+ [button-primary] {
51
+ display: block;
52
+ background-color: var(--button-primary-background-color);
53
+ border: var(--button-border);
54
+ border-radius: var(--button-border-radius);
55
+ margin-top: var(--margin-wide);
56
+ padding: var(--button-padding);
57
+ color: var(--button-primary-color);
58
+ font: var(--button-primary-font);
59
+ text-transform: var(--button-text-transform);
60
+ text-decoration: none;
61
+ }
62
+ [button-primary]:hover {
63
+ background-color: var(--button-primary-active-background-color);
64
+ box-shadow: var(--button-active-box-shadow);
65
+ }
66
+ @media screen and (max-width: 480px) {
67
+ [message] {
68
+ padding-top: 10px;
69
+ font-size: 15px;
70
+ }
71
+ [message] strong {
72
+ font-size: 1.6rem;
73
+ }
74
+ [message] img {
75
+ float: none;
76
+ width: 90%;
77
+ }
78
+ }
79
+ `
79
80
  ]
80
81
  }
81
82
 
@@ -92,11 +93,17 @@ class ReportHome extends connect(store)(PageView) {
92
93
  render() {
93
94
  return html`
94
95
  <div message>
95
- <img src="/assets/images/image-api.png" />
96
+ <img src="/assets/images/image-api.png" />
96
97
  <strong>Plantation Report</strong>
97
98
  OPERATO allows plantation user to generate plantation report based on daily/monthly/annually.
98
99
  <ul>
99
100
  <li><a href="report-daily-production">Daily Production Report</a></li>
101
+ <li><a href="report-daily-staff-harvest">Daily Staff Harvest Report</a></li>
102
+ <li><a href="report-monthly-production">Monthly Production Report</a></li>
103
+ <li><a href="report-yearly-production">Yearly Production Report</a></li>
104
+ <li><a href="report-daily-ffb-dispatch-and-production">Daily FFB Dispatch And Production Report</a></li>
105
+ <li><a href="report-monthly-ffb-sale">Monthly FFB Sale</a></li>
106
+ <li><a href="report-ffb-tonnage-between-individual-block">FFB Tonnage Between Individual Block</a></li>
100
107
  </ul>
101
108
  </div>
102
109
  `