@things-factory/operato-pms 3.7.5 → 3.8.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/client/bootstrap.js +20 -7
  2. package/client/component/block-selector-popup.js +125 -24
  3. package/client/component/driver-selector-popup.js +223 -0
  4. package/client/component/mill-selector-popup.js +200 -0
  5. package/client/component/tracked-plantation-setting.js +113 -0
  6. package/client/component/truck-selector-popup.js +202 -0
  7. package/client/menu.js +34 -2
  8. package/client/pages/constants/index.js +1 -0
  9. package/client/pages/constants/organization.js +5 -0
  10. package/client/pages/dispatchment/daily-dispatch-detail.js +57 -18
  11. package/client/pages/dispatchment/dispatchment-create-record.js +140 -13
  12. package/client/pages/dispatchment/dispatchment-list.js +26 -34
  13. package/client/pages/harvesting/daily-harvesting-detail.js +55 -18
  14. package/client/pages/harvesting/edit-harvesting-record.js +89 -23
  15. package/client/pages/harvesting/harvesting-create-record.js +102 -16
  16. package/client/pages/harvesting/harvesting-list.js +58 -12
  17. package/client/pages/inventory/inventory-field-bunches.js +6 -4
  18. package/client/pages/loading/daily-loading-detail.js +47 -93
  19. package/client/pages/loading/edit-loading-record.js +75 -294
  20. package/client/pages/loading/loading-create-record.js +52 -329
  21. package/client/pages/loading/loading-list.js +20 -83
  22. package/client/pages/master/block.js +1 -0
  23. package/client/pages/master/company.js +26 -13
  24. package/client/pages/master/home.js +67 -65
  25. package/client/pages/master/ramp.js +1 -0
  26. package/client/pages/master/staff.js +54 -3
  27. package/client/pages/master/truck.js +416 -0
  28. package/client/pages/report/home.js +72 -65
  29. package/client/pages/report/report-daily-ffb-dispatch-and-production.js +393 -0
  30. package/client/pages/report/report-daily-production.js +38 -6
  31. package/client/pages/report/report-daily-staff-harvest.js +50 -5
  32. package/client/pages/report/report-ffb-tonnage-between-individual-block.js +393 -0
  33. package/client/pages/report/report-monthly-ffb-sale.js +413 -0
  34. package/client/pages/report/report-monthly-production.js +33 -4
  35. package/client/pages/report/report-yearly-production.js +24 -8
  36. package/client/pages/setting/home.js +107 -0
  37. package/client/pages/setting/plantation-setting.js +109 -0
  38. package/client/route.js +25 -0
  39. package/dist-server/constants/index.js +1 -0
  40. package/dist-server/constants/index.js.map +1 -1
  41. package/dist-server/constants/organization.js +9 -0
  42. package/dist-server/constants/organization.js.map +1 -0
  43. package/dist-server/controllers/render-dispatchment.js +1 -1
  44. package/dist-server/controllers/render-dispatchment.js.map +1 -1
  45. package/dist-server/entities/daily-dispatch.js +19 -4
  46. package/dist-server/entities/daily-dispatch.js.map +1 -1
  47. package/dist-server/entities/daily-harvest-detail.js +9 -11
  48. package/dist-server/entities/daily-harvest-detail.js.map +1 -1
  49. package/dist-server/entities/daily-harvest.js +16 -6
  50. package/dist-server/entities/daily-harvest.js.map +1 -1
  51. package/dist-server/entities/daily-loading-detail.js +14 -6
  52. package/dist-server/entities/daily-loading-detail.js.map +1 -1
  53. package/dist-server/entities/daily-loading.js +3 -11
  54. package/dist-server/entities/daily-loading.js.map +1 -1
  55. package/dist-server/entities/index.js +7 -1
  56. package/dist-server/entities/index.js.map +1 -1
  57. package/dist-server/entities/organization-staff.js +5 -1
  58. package/dist-server/entities/organization-staff.js.map +1 -1
  59. package/dist-server/entities/plantation-inventory.js +4 -10
  60. package/dist-server/entities/plantation-inventory.js.map +1 -1
  61. package/dist-server/entities/plantation-setting.js +76 -0
  62. package/dist-server/entities/plantation-setting.js.map +1 -0
  63. package/dist-server/entities/truck.js +77 -0
  64. package/dist-server/entities/truck.js.map +1 -0
  65. package/dist-server/graphql/resolvers/daily-dispatch/daily-dispatch-query.js +13 -2
  66. package/dist-server/graphql/resolvers/daily-dispatch/daily-dispatch-query.js.map +1 -1
  67. package/dist-server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.js +25 -11
  68. package/dist-server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.js.map +1 -1
  69. package/dist-server/graphql/resolvers/daily-dispatch/update-daily-dispatch.js +3 -2
  70. package/dist-server/graphql/resolvers/daily-dispatch/update-daily-dispatch.js.map +1 -1
  71. package/dist-server/graphql/resolvers/daily-harvest/daily-harvest-query.js +3 -1
  72. package/dist-server/graphql/resolvers/daily-harvest/daily-harvest-query.js.map +1 -1
  73. package/dist-server/graphql/resolvers/daily-harvest/generate-daily-harvest.js +21 -2
  74. package/dist-server/graphql/resolvers/daily-harvest/generate-daily-harvest.js.map +1 -1
  75. package/dist-server/graphql/resolvers/daily-harvest/update-daily-harvest.js +8 -2
  76. package/dist-server/graphql/resolvers/daily-harvest/update-daily-harvest.js.map +1 -1
  77. package/dist-server/graphql/resolvers/daily-loading/daily-loading-query.js +4 -6
  78. package/dist-server/graphql/resolvers/daily-loading/daily-loading-query.js.map +1 -1
  79. package/dist-server/graphql/resolvers/daily-loading/generate-daily-loading.js +20 -54
  80. package/dist-server/graphql/resolvers/daily-loading/generate-daily-loading.js.map +1 -1
  81. package/dist-server/graphql/resolvers/daily-loading/update-daily-loading.js +17 -105
  82. package/dist-server/graphql/resolvers/daily-loading/update-daily-loading.js.map +1 -1
  83. package/dist-server/graphql/resolvers/dashboard/dashboard-query.js +82 -0
  84. package/dist-server/graphql/resolvers/dashboard/dashboard-query.js.map +1 -0
  85. package/dist-server/graphql/resolvers/dashboard/index.js +8 -0
  86. package/dist-server/graphql/resolvers/dashboard/index.js.map +1 -0
  87. package/dist-server/graphql/resolvers/index.js +9 -6
  88. package/dist-server/graphql/resolvers/index.js.map +1 -1
  89. package/dist-server/graphql/resolvers/organization-staff/organization-staff-query.js +7 -3
  90. package/dist-server/graphql/resolvers/organization-staff/organization-staff-query.js.map +1 -1
  91. package/dist-server/graphql/resolvers/plantation-setting/create-plantation-setting.js +12 -0
  92. package/dist-server/graphql/resolvers/plantation-setting/create-plantation-setting.js.map +1 -0
  93. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-setting.js +13 -0
  94. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-setting.js.map +1 -0
  95. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-settings.js +16 -0
  96. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-settings.js.map +1 -0
  97. package/dist-server/graphql/resolvers/plantation-setting/index.js +15 -0
  98. package/dist-server/graphql/resolvers/plantation-setting/index.js.map +1 -0
  99. package/dist-server/graphql/resolvers/plantation-setting/plantation-setting-query.js +33 -0
  100. package/dist-server/graphql/resolvers/plantation-setting/plantation-setting-query.js.map +1 -0
  101. package/dist-server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.js +31 -0
  102. package/dist-server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.js.map +1 -0
  103. package/dist-server/graphql/resolvers/plantation-setting/update-plantation-setting.js +16 -0
  104. package/dist-server/graphql/resolvers/plantation-setting/update-plantation-setting.js.map +1 -0
  105. package/dist-server/graphql/resolvers/report/daily-production-reports.js +46 -33
  106. package/dist-server/graphql/resolvers/report/daily-production-reports.js.map +1 -1
  107. package/dist-server/graphql/resolvers/report/daily-staff-harvest-reports.js +21 -10
  108. package/dist-server/graphql/resolvers/report/daily-staff-harvest-reports.js.map +1 -1
  109. package/dist-server/graphql/resolvers/report/index.js +4 -1
  110. package/dist-server/graphql/resolvers/report/index.js.map +1 -1
  111. package/dist-server/graphql/resolvers/report/monthly-block-dispatch-reports.js +89 -0
  112. package/dist-server/graphql/resolvers/report/monthly-block-dispatch-reports.js.map +1 -0
  113. package/dist-server/graphql/resolvers/report/monthly-dispatch-summary-reports.js +89 -0
  114. package/dist-server/graphql/resolvers/report/monthly-dispatch-summary-reports.js.map +1 -0
  115. package/dist-server/graphql/resolvers/report/monthly-ffb-sale-reports.js +87 -0
  116. package/dist-server/graphql/resolvers/report/monthly-ffb-sale-reports.js.map +1 -0
  117. package/dist-server/graphql/resolvers/report/monthly-production-reports.js +46 -31
  118. package/dist-server/graphql/resolvers/report/monthly-production-reports.js.map +1 -1
  119. package/dist-server/graphql/resolvers/report/yearly-production-reports.js +38 -28
  120. package/dist-server/graphql/resolvers/report/yearly-production-reports.js.map +1 -1
  121. package/dist-server/graphql/resolvers/truck/delete-trucks.js +18 -0
  122. package/dist-server/graphql/resolvers/truck/delete-trucks.js.map +1 -0
  123. package/dist-server/graphql/resolvers/truck/index.js +12 -0
  124. package/dist-server/graphql/resolvers/truck/index.js.map +1 -0
  125. package/dist-server/graphql/resolvers/truck/truck-query.js +46 -0
  126. package/dist-server/graphql/resolvers/truck/truck-query.js.map +1 -0
  127. package/dist-server/graphql/resolvers/truck/update-multiple-truck.js +40 -0
  128. package/dist-server/graphql/resolvers/truck/update-multiple-truck.js.map +1 -0
  129. package/dist-server/graphql/types/daily-dispatch/daily-dispatch-patch.js +4 -1
  130. package/dist-server/graphql/types/daily-dispatch/daily-dispatch-patch.js.map +1 -1
  131. package/dist-server/graphql/types/daily-dispatch/daily-dispatch.js +4 -1
  132. package/dist-server/graphql/types/daily-dispatch/daily-dispatch.js.map +1 -1
  133. package/dist-server/graphql/types/daily-dispatch/index.js +6 -1
  134. package/dist-server/graphql/types/daily-dispatch/index.js.map +1 -1
  135. package/dist-server/graphql/types/daily-dispatch/new-daily-dispatch.js +4 -1
  136. package/dist-server/graphql/types/daily-dispatch/new-daily-dispatch.js.map +1 -1
  137. package/dist-server/graphql/types/daily-harvest/daily-harvest-patch.js +5 -2
  138. package/dist-server/graphql/types/daily-harvest/daily-harvest-patch.js.map +1 -1
  139. package/dist-server/graphql/types/daily-harvest/daily-harvest.js +3 -0
  140. package/dist-server/graphql/types/daily-harvest/daily-harvest.js.map +1 -1
  141. package/dist-server/graphql/types/daily-harvest/new-daily-harvest.js +4 -1
  142. package/dist-server/graphql/types/daily-harvest/new-daily-harvest.js.map +1 -1
  143. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.js +1 -0
  144. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.js.map +1 -1
  145. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail.js +1 -0
  146. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail.js.map +1 -1
  147. package/dist-server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.js +1 -0
  148. package/dist-server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.js.map +1 -1
  149. package/dist-server/graphql/types/daily-loading/daily-loading-patch.js +0 -2
  150. package/dist-server/graphql/types/daily-loading/daily-loading-patch.js.map +1 -1
  151. package/dist-server/graphql/types/daily-loading/daily-loading.js +0 -2
  152. package/dist-server/graphql/types/daily-loading/daily-loading.js.map +1 -1
  153. package/dist-server/graphql/types/daily-loading/new-daily-loading.js +0 -2
  154. package/dist-server/graphql/types/daily-loading/new-daily-loading.js.map +1 -1
  155. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-patch.js +6 -3
  156. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-patch.js.map +1 -1
  157. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail.js +3 -0
  158. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail.js.map +1 -1
  159. package/dist-server/graphql/types/daily-loading-detail/new-daily-loading-detail.js +6 -3
  160. package/dist-server/graphql/types/daily-loading-detail/new-daily-loading-detail.js.map +1 -1
  161. package/dist-server/graphql/types/dashboard/bunches-count.js +15 -0
  162. package/dist-server/graphql/types/dashboard/bunches-count.js.map +1 -0
  163. package/dist-server/graphql/types/dashboard/index.js +32 -0
  164. package/dist-server/graphql/types/dashboard/index.js.map +1 -0
  165. package/dist-server/graphql/types/dashboard/productions-overview.js +15 -0
  166. package/dist-server/graphql/types/dashboard/productions-overview.js.map +1 -0
  167. package/dist-server/graphql/types/dashboard/tonnage-bunches-inventories.js +14 -0
  168. package/dist-server/graphql/types/dashboard/tonnage-bunches-inventories.js.map +1 -0
  169. package/dist-server/graphql/types/dashboard/tonnage-production.js +17 -0
  170. package/dist-server/graphql/types/dashboard/tonnage-production.js.map +1 -0
  171. package/dist-server/graphql/types/dashboard/yield-production.js +17 -0
  172. package/dist-server/graphql/types/dashboard/yield-production.js.map +1 -0
  173. package/dist-server/graphql/types/index.js +9 -6
  174. package/dist-server/graphql/types/index.js.map +1 -1
  175. package/dist-server/graphql/types/organization-staff/organization-staff-patch.js +2 -0
  176. package/dist-server/graphql/types/organization-staff/organization-staff-patch.js.map +1 -1
  177. package/dist-server/graphql/types/organization-staff/organization-staff.js +3 -0
  178. package/dist-server/graphql/types/organization-staff/organization-staff.js.map +1 -1
  179. package/dist-server/graphql/types/plantation-setting/index.js +36 -0
  180. package/dist-server/graphql/types/plantation-setting/index.js.map +1 -0
  181. package/dist-server/graphql/types/plantation-setting/new-plantation-setting.js +16 -0
  182. package/dist-server/graphql/types/plantation-setting/new-plantation-setting.js.map +1 -0
  183. package/dist-server/graphql/types/plantation-setting/plantation-setting-list.js +14 -0
  184. package/dist-server/graphql/types/plantation-setting/plantation-setting-list.js.map +1 -0
  185. package/dist-server/graphql/types/plantation-setting/plantation-setting-patch.js +18 -0
  186. package/dist-server/graphql/types/plantation-setting/plantation-setting-patch.js.map +1 -0
  187. package/dist-server/graphql/types/plantation-setting/plantation-setting.js +22 -0
  188. package/dist-server/graphql/types/plantation-setting/plantation-setting.js.map +1 -0
  189. package/dist-server/graphql/types/report/index.js +20 -0
  190. package/dist-server/graphql/types/report/index.js.map +1 -1
  191. package/dist-server/graphql/types/report/monthly-block-dispatch-report-list.js +14 -0
  192. package/dist-server/graphql/types/report/monthly-block-dispatch-report-list.js.map +1 -0
  193. package/dist-server/graphql/types/report/monthly-block-dispatch-report.js +19 -0
  194. package/dist-server/graphql/types/report/monthly-block-dispatch-report.js.map +1 -0
  195. package/dist-server/graphql/types/report/monthly-dispatch-summary-report-list.js +14 -0
  196. package/dist-server/graphql/types/report/monthly-dispatch-summary-report-list.js.map +1 -0
  197. package/dist-server/graphql/types/report/monthly-dispatch-summary-report.js +25 -0
  198. package/dist-server/graphql/types/report/monthly-dispatch-summary-report.js.map +1 -0
  199. package/dist-server/graphql/types/report/monthly-ffb-sale-report-list.js +14 -0
  200. package/dist-server/graphql/types/report/monthly-ffb-sale-report-list.js.map +1 -0
  201. package/dist-server/graphql/types/report/monthly-ffb-sale-report.js +24 -0
  202. package/dist-server/graphql/types/report/monthly-ffb-sale-report.js.map +1 -0
  203. package/dist-server/graphql/types/truck/index.js +33 -0
  204. package/dist-server/graphql/types/truck/index.js.map +1 -0
  205. package/dist-server/graphql/types/truck/new-truck.js +14 -0
  206. package/dist-server/graphql/types/truck/new-truck.js.map +1 -0
  207. package/dist-server/graphql/types/truck/truck-list.js +14 -0
  208. package/dist-server/graphql/types/truck/truck-list.js.map +1 -0
  209. package/dist-server/graphql/types/truck/truck-patch.js +17 -0
  210. package/dist-server/graphql/types/truck/truck-patch.js.map +1 -0
  211. package/dist-server/graphql/types/truck/truck.js +22 -0
  212. package/dist-server/graphql/types/truck/truck.js.map +1 -0
  213. package/package.json +29 -29
  214. package/server/constants/index.ts +1 -0
  215. package/server/constants/organization.ts +5 -0
  216. package/server/controllers/render-dispatchment.ts +1 -1
  217. package/server/entities/daily-dispatch.ts +21 -5
  218. package/server/entities/daily-harvest-detail.ts +10 -11
  219. package/server/entities/daily-harvest.ts +16 -7
  220. package/server/entities/daily-loading-detail.ts +14 -6
  221. package/server/entities/daily-loading.ts +7 -11
  222. package/server/entities/index.ts +6 -0
  223. package/server/entities/organization-staff.ts +6 -1
  224. package/server/entities/plantation-inventory.ts +6 -10
  225. package/server/entities/plantation-setting.ts +60 -0
  226. package/server/entities/truck.ts +58 -0
  227. package/server/graphql/resolvers/daily-dispatch/daily-dispatch-query.ts +15 -2
  228. package/server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.ts +40 -14
  229. package/server/graphql/resolvers/daily-dispatch/update-daily-dispatch.ts +6 -2
  230. package/server/graphql/resolvers/daily-harvest/daily-harvest-query.ts +7 -2
  231. package/server/graphql/resolvers/daily-harvest/generate-daily-harvest.ts +50 -4
  232. package/server/graphql/resolvers/daily-harvest/update-daily-harvest.ts +12 -2
  233. package/server/graphql/resolvers/daily-loading/daily-loading-query.ts +6 -6
  234. package/server/graphql/resolvers/daily-loading/generate-daily-loading.ts +27 -109
  235. package/server/graphql/resolvers/daily-loading/update-daily-loading.ts +27 -213
  236. package/server/graphql/resolvers/dashboard/dashboard-query.ts +96 -0
  237. package/server/graphql/resolvers/dashboard/index.ts +5 -0
  238. package/server/graphql/resolvers/index.ts +10 -6
  239. package/server/graphql/resolvers/organization-staff/organization-staff-query.ts +13 -4
  240. package/server/graphql/resolvers/plantation-setting/create-plantation-setting.ts +16 -0
  241. package/server/graphql/resolvers/plantation-setting/delete-plantation-setting.ts +13 -0
  242. package/server/graphql/resolvers/plantation-setting/delete-plantation-settings.ts +16 -0
  243. package/server/graphql/resolvers/plantation-setting/index.ts +19 -0
  244. package/server/graphql/resolvers/plantation-setting/plantation-setting-query.ts +38 -0
  245. package/server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.ts +46 -0
  246. package/server/graphql/resolvers/plantation-setting/update-plantation-setting.ts +19 -0
  247. package/server/graphql/resolvers/report/daily-production-reports.ts +55 -44
  248. package/server/graphql/resolvers/report/daily-staff-harvest-reports.ts +28 -20
  249. package/server/graphql/resolvers/report/index.ts +7 -1
  250. package/server/graphql/resolvers/report/monthly-block-dispatch-reports.ts +112 -0
  251. package/server/graphql/resolvers/report/monthly-dispatch-summary-reports.ts +110 -0
  252. package/server/graphql/resolvers/report/monthly-ffb-sale-reports.ts +107 -0
  253. package/server/graphql/resolvers/report/monthly-production-reports.ts +54 -40
  254. package/server/graphql/resolvers/report/yearly-production-reports.ts +43 -38
  255. package/server/graphql/resolvers/truck/delete-trucks.ts +21 -0
  256. package/server/graphql/resolvers/truck/index.ts +12 -0
  257. package/server/graphql/resolvers/truck/truck-query.ts +52 -0
  258. package/server/graphql/resolvers/truck/update-multiple-truck.ts +55 -0
  259. package/server/graphql/types/daily-dispatch/daily-dispatch-patch.ts +4 -1
  260. package/server/graphql/types/daily-dispatch/daily-dispatch.ts +4 -1
  261. package/server/graphql/types/daily-dispatch/index.ts +6 -1
  262. package/server/graphql/types/daily-dispatch/new-daily-dispatch.ts +4 -1
  263. package/server/graphql/types/daily-harvest/daily-harvest-patch.ts +5 -2
  264. package/server/graphql/types/daily-harvest/daily-harvest.ts +3 -0
  265. package/server/graphql/types/daily-harvest/new-daily-harvest.ts +4 -1
  266. package/server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.ts +1 -0
  267. package/server/graphql/types/daily-harvest-detail/daily-harvest-detail.ts +1 -0
  268. package/server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.ts +1 -0
  269. package/server/graphql/types/daily-loading/daily-loading-patch.ts +0 -2
  270. package/server/graphql/types/daily-loading/daily-loading.ts +0 -2
  271. package/server/graphql/types/daily-loading/new-daily-loading.ts +0 -2
  272. package/server/graphql/types/daily-loading-detail/daily-loading-detail-patch.ts +6 -3
  273. package/server/graphql/types/daily-loading-detail/daily-loading-detail.ts +3 -0
  274. package/server/graphql/types/daily-loading-detail/new-daily-loading-detail.ts +6 -3
  275. package/server/graphql/types/dashboard/bunches-count.ts +9 -0
  276. package/server/graphql/types/dashboard/index.ts +17 -0
  277. package/server/graphql/types/dashboard/productions-overview.ts +9 -0
  278. package/server/graphql/types/dashboard/tonnage-bunches-inventories.ts +8 -0
  279. package/server/graphql/types/dashboard/tonnage-production.ts +11 -0
  280. package/server/graphql/types/dashboard/yield-production.ts +11 -0
  281. package/server/graphql/types/index.ts +10 -6
  282. package/server/graphql/types/organization-staff/organization-staff-patch.ts +2 -0
  283. package/server/graphql/types/organization-staff/organization-staff.ts +3 -0
  284. package/server/graphql/types/plantation-setting/index.ts +21 -0
  285. package/server/graphql/types/plantation-setting/new-plantation-setting.ts +10 -0
  286. package/server/graphql/types/plantation-setting/plantation-setting-list.ts +8 -0
  287. package/server/graphql/types/plantation-setting/plantation-setting-patch.ts +12 -0
  288. package/server/graphql/types/plantation-setting/plantation-setting.ts +16 -0
  289. package/server/graphql/types/report/index.ts +20 -0
  290. package/server/graphql/types/report/monthly-block-dispatch-report-list.ts +7 -0
  291. package/server/graphql/types/report/monthly-block-dispatch-report.ts +13 -0
  292. package/server/graphql/types/report/monthly-dispatch-summary-report-list.ts +7 -0
  293. package/server/graphql/types/report/monthly-dispatch-summary-report.ts +19 -0
  294. package/server/graphql/types/report/monthly-ffb-sale-report-list.ts +7 -0
  295. package/server/graphql/types/report/monthly-ffb-sale-report.ts +18 -0
  296. package/server/graphql/types/truck/index.ts +18 -0
  297. package/server/graphql/types/truck/new-truck.ts +8 -0
  298. package/server/graphql/types/truck/truck-list.ts +8 -0
  299. package/server/graphql/types/truck/truck-patch.ts +11 -0
  300. package/server/graphql/types/truck/truck.ts +16 -0
  301. package/things-factory.config.js +27 -1
  302. package/translations/en.json +78 -16
  303. package/translations/ko.json +77 -48
  304. package/translations/ms.json +74 -45
  305. package/translations/zh.json +77 -48
@@ -0,0 +1,113 @@
1
+ import '@material/mwc-formfield'
2
+ import '@material/mwc-switch'
3
+
4
+ import gql from 'graphql-tag'
5
+ import { css, html, LitElement } from 'lit-element'
6
+
7
+ import { i18next, localize } from '@things-factory/i18n-base'
8
+ import { client } from '@things-factory/shell'
9
+
10
+ class TrackedPlantationSetting extends localize(i18next)(LitElement) {
11
+ static get styles() {
12
+ return css`
13
+ [field-2column] {
14
+ background-color: var(--theme-white-color);
15
+ margin: var(--margin-wide) 0;
16
+ padding: var(--padding-wide);
17
+ border-radius: var(--border-radius);
18
+ box-shadow: var(--box-shadow);
19
+ max-width: var(--input-container-max-width);
20
+ }
21
+ [field-2column] mwc-button {
22
+ margin: var(--input-margin);
23
+ }
24
+ [field] {
25
+ display: flex;
26
+ flex-direction: column;
27
+ padding-bottom: var(--padding-default);
28
+ }
29
+ [grid-span] {
30
+ grid-column: span 2;
31
+ }
32
+
33
+ label {
34
+ display: flex;
35
+ flex-direction: column;
36
+
37
+ font: var(--label-font);
38
+ color: var(--label-color);
39
+ text-transform: var(--label-text-transform);
40
+ }
41
+
42
+ @media screen and (max-width: 480px) {
43
+ div {
44
+ display: grid;
45
+ }
46
+ [field] {
47
+ grid-column: span 2;
48
+ }
49
+ }
50
+ `
51
+ }
52
+
53
+ static get properties() {
54
+ return {
55
+ plantationSetting: Object,
56
+ category: String
57
+ }
58
+ }
59
+
60
+ render() {
61
+ const trackedInventorySetting = this.plantationSetting
62
+ return html`
63
+ <div field-2column>
64
+ <mwc-formfield label=${i18next.t('label.allow tracked inventory')}>
65
+ <mwc-switch
66
+ label="allow tracked inventory"
67
+ ?checked=${trackedInventorySetting?.value}
68
+ @change=${e => this.onchange(e)}
69
+ ></mwc-switch>
70
+ </mwc-formfield>
71
+ </div>
72
+ `
73
+ }
74
+
75
+ async onchange(e) {
76
+ try {
77
+ const target = e.target
78
+ const on = target.checked
79
+
80
+ const response = await client.mutate({
81
+ mutation: gql`
82
+ mutation updatePlantationSetting($name: String!, $patch: PlantationSettingPatch!) {
83
+ updatePlantationSetting(name: $name, patch: $patch) {
84
+ id
85
+ name
86
+ }
87
+ }
88
+ `,
89
+ variables: { name: this.plantationSetting.name, patch: { category: this.category, value: on.toString() } }
90
+ })
91
+
92
+ if (!response.errors) {
93
+ this.showToast({ message: i18next.t('text.data_updated_successfully') })
94
+ await this.dispatchEvent(new CustomEvent('fetch-settings'))
95
+ }
96
+ } catch (e) {
97
+ this.showToast(e)
98
+ }
99
+ }
100
+
101
+ showToast({ type, message }) {
102
+ document.dispatchEvent(
103
+ new CustomEvent('notify', {
104
+ detail: {
105
+ type,
106
+ message
107
+ }
108
+ })
109
+ )
110
+ }
111
+ }
112
+
113
+ window.customElements.define('tracked-plantation-setting', TrackedPlantationSetting)
@@ -0,0 +1,202 @@
1
+ import '@things-factory/grist-ui'
2
+ import '@things-factory/import-ui'
3
+ import '@things-factory/form-ui'
4
+
5
+ import gql from 'graphql-tag'
6
+ import { css, html, LitElement } from 'lit-element'
7
+
8
+ import { i18next, localize } from '@things-factory/i18n-base'
9
+ import { client } from '@things-factory/shell'
10
+ import { ScrollbarStyles } from '@things-factory/styles'
11
+ import { isMobileDevice } from '@things-factory/utils'
12
+
13
+ class TruckSelectorPopup extends localize(i18next)(LitElement) {
14
+ static get properties() {
15
+ return {
16
+ _searchFields: Array,
17
+ gristConfig: Object
18
+ }
19
+ }
20
+
21
+ static get styles() {
22
+ return [
23
+ ScrollbarStyles,
24
+ css`
25
+ :host {
26
+ display: flex;
27
+ flex-direction: column;
28
+ overflow: hidden;
29
+ background-color: white;
30
+ }
31
+
32
+ search-form {
33
+ overflow: visible;
34
+ }
35
+ .grist {
36
+ display: flex;
37
+ flex-direction: column;
38
+ flex: 1;
39
+ overflow-y: auto;
40
+ }
41
+ .grist-container {
42
+ overflow-y: hidden;
43
+ display: flex;
44
+ flex: 1;
45
+ }
46
+ data-grist {
47
+ overflow-y: hidden;
48
+ flex: 1;
49
+ }
50
+ h2 {
51
+ padding: var(--subtitle-padding);
52
+ font: var(--subtitle-font);
53
+ color: var(--subtitle-text-color);
54
+ border-bottom: var(--subtitle-border-bottom);
55
+ }
56
+ .grist h2 {
57
+ font: var(--grist-title-font);
58
+ }
59
+ .button-container {
60
+ padding: var(--button-container-padding);
61
+ margin: var(--button-container-margin);
62
+ text-align: var(--button-container-align);
63
+ background-color: var(--button-container-background);
64
+ height: var(--button-container-height);
65
+ }
66
+ .button-container button {
67
+ background-color: var(--button-container-button-background-color);
68
+ border-radius: var(--button-container-button-border-radius);
69
+ height: var(--button-container-button-height);
70
+ border: var(--button-container-button-border);
71
+ margin: var(--button-container-button-margin);
72
+
73
+ padding: var(--button-padding);
74
+ color: var(--theme-white-color);
75
+ font: var(--button-font);
76
+ text-transform: var(--button-text-transform);
77
+ }
78
+ .button-container button:hover,
79
+ .button-container button:active {
80
+ background-color: var(--button-background-focus-color);
81
+ }
82
+ [danger] {
83
+ --mdc-theme-primary: var(--mdc-danger-button-primary-color);
84
+ }
85
+ `
86
+ ]
87
+ }
88
+
89
+ render() {
90
+ return html`
91
+ <search-form id="search-form" .fields=${this._searchFields} @submit=${() => this.dataGrist.fetch()}></search-form>
92
+
93
+ <div class="grist">
94
+ <data-grist
95
+ .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
96
+ .config="${this.gristConfig}"
97
+ .fetchHandler="${this.fetchHandler.bind(this)}"
98
+ ></data-grist>
99
+ </div>
100
+
101
+ <div class="button-container">
102
+ <mwc-button
103
+ raised
104
+ danger
105
+ @click=${() => {
106
+ history.back()
107
+ }}
108
+ >
109
+ ${i18next.t('button.cancel')}
110
+ </mwc-button>
111
+ <mwc-button raised @click=${this._select.bind(this)}>${i18next.t('button.confirm')}</mwc-button>
112
+ </div>
113
+ `
114
+ }
115
+
116
+ updated(changes) {
117
+ if (this.active) {
118
+ this.dataGrist.fetch()
119
+ }
120
+ }
121
+
122
+ firstUpdated() {
123
+ this._searchFields = [
124
+ {
125
+ label: i18next.t('label.name'),
126
+ name: 'name',
127
+ type: 'text',
128
+ props: { searchOper: 'i_like' }
129
+ }
130
+ ]
131
+
132
+ this.gristConfig = {
133
+ pagination: { infinite: true },
134
+ rows: {
135
+ selectable: { multiple: false },
136
+ appendable: false
137
+ },
138
+ columns: [
139
+ { type: 'gutter', gutterName: 'sequence' },
140
+ { type: 'gutter', gutterName: 'row-selector', multiple: false },
141
+ {
142
+ type: 'string',
143
+ name: 'id',
144
+ hidden: true
145
+ },
146
+ {
147
+ type: 'string',
148
+ name: 'name',
149
+ header: i18next.t('field.lorry_no'),
150
+ width: 180
151
+ }
152
+ ]
153
+ }
154
+ }
155
+
156
+ get searchForm() {
157
+ return this.shadowRoot.querySelector('search-form')
158
+ }
159
+
160
+ get dataGrist() {
161
+ return this.shadowRoot.querySelector('data-grist')
162
+ }
163
+
164
+ async fetchHandler({ sorters = [] }) {
165
+ const filters = [...this.searchForm.queryFilters]
166
+ const sortings = sorters
167
+
168
+ const response = await client.query({
169
+ query: gql`
170
+ query trucks($filters: [Filter], $sortings: [Sorting]) {
171
+ trucks(filters: $filters, sortings: $sortings) {
172
+ items {
173
+ id
174
+ name
175
+ }
176
+ total
177
+ }
178
+ }
179
+ `,
180
+ variables: { filters, sortings }
181
+ })
182
+
183
+ return {
184
+ total: response.data.trucks.total || 0,
185
+ records: response.data.trucks.items || []
186
+ }
187
+ }
188
+
189
+ _select() {
190
+ const selectedDriver = this.dataGrist.selected[0]
191
+ if (selectedDriver) {
192
+ this.dispatchEvent(new CustomEvent('selected', { detail: this.dataGrist.selected[0] }))
193
+ history.back()
194
+ } else {
195
+ document.dispatchEvent(
196
+ new CustomEvent('notify', { detail: { message: i18next.t('text.truck_is_not_selected') } })
197
+ )
198
+ }
199
+ }
200
+ }
201
+
202
+ window.customElements.define('truck-selector-popup', TruckSelectorPopup)
package/client/menu.js CHANGED
@@ -23,6 +23,11 @@ const MENUS = [
23
23
  name: 'staff',
24
24
  path: 'master-staff',
25
25
  icon: 'people_alt'
26
+ },
27
+ {
28
+ name: 'truck',
29
+ path: 'master-truck',
30
+ icon: 'local_shipping'
26
31
  }
27
32
  ]
28
33
  },
@@ -104,6 +109,11 @@ const MENUS = [
104
109
  path: 'report-daily-production',
105
110
  icon: 'insert_chart'
106
111
  },
112
+ {
113
+ name: 'daily staff harvest report',
114
+ path: 'report-daily-staff-harvest',
115
+ icon: 'insert_chart'
116
+ },
107
117
  {
108
118
  name: 'monthly production report',
109
119
  path: 'report-monthly-production',
@@ -115,9 +125,31 @@ const MENUS = [
115
125
  icon: 'insert_chart'
116
126
  },
117
127
  {
118
- name: 'daily staff harvest report',
119
- path: 'report-daily-staff-harvest',
128
+ name: 'daily FFB dispatch and production report',
129
+ path: 'report-daily-ffb-dispatch-and-production',
120
130
  icon: 'insert_chart'
131
+ },
132
+ {
133
+ name: 'monthly FFB sale report',
134
+ path: 'report-monthly-ffb-sale',
135
+ icon: 'insert_chart'
136
+ },
137
+ {
138
+ name: 'FFB tonnage between individual block report',
139
+ path: 'report-ffb-tonnage-between-individual-block',
140
+ icon: 'insert_chart'
141
+ }
142
+ ]
143
+ },
144
+ {
145
+ name: 'settings',
146
+ path: 'setting-home',
147
+ icon: 'settings',
148
+ menus: [
149
+ {
150
+ name: 'plantation inventory',
151
+ path: 'plantation-setting',
152
+ icon: 'fact_check'
121
153
  }
122
154
  ]
123
155
  }
@@ -1,2 +1,3 @@
1
1
  export * from './record'
2
2
  export * from './inventory'
3
+ export * from './organization'
@@ -0,0 +1,5 @@
1
+ export const ORGANIZATION_TYPES = {
2
+ OWNER: { name: 'owner', value: 'OWNER' },
3
+ CONTRACTOR: { name: 'contractor', value: 'CONTRACTOR' },
4
+ MILL: { name: 'mill', value: 'MILL' }
5
+ }
@@ -90,11 +90,6 @@ class DailyDispatchDetail extends localize(i18next)(PageView) {
90
90
  action: this._adjustTonnage.bind(this),
91
91
  ...CommonButtonStyles.edit
92
92
  },
93
- // {
94
- // title: i18next.t('button.print'),
95
- // action: this._renderAndPrintDocument.bind(this),
96
- // ...CommonButtonStyles.print
97
- // },
98
93
  {
99
94
  title: i18next.t('button.delete'),
100
95
  action: this._deleteDispatchmentRecord.bind(this),
@@ -128,6 +123,12 @@ class DailyDispatchDetail extends localize(i18next)(PageView) {
128
123
 
129
124
  <label>${i18next.t('label.destination')}</label>
130
125
  <input name="dispatchTo" readonly />
126
+
127
+ <label>${i18next.t('label.chit_no')}</label>
128
+ <input name="chitNo" />
129
+
130
+ <label>${i18next.t('label.percentage')}</label>
131
+ <input name="percentage" type="number" min="0" />
131
132
  </fieldset>
132
133
  </form>
133
134
 
@@ -160,6 +161,14 @@ class DailyDispatchDetail extends localize(i18next)(PageView) {
160
161
  return this.shadowRoot.querySelector('data-grist#dispatchment-grist')
161
162
  }
162
163
 
164
+ get chitNoInput() {
165
+ return this.shadowRoot.querySelector('input[name=chitNo]')
166
+ }
167
+
168
+ get percentageInput() {
169
+ return this.shadowRoot.querySelector('input[name=percentage]')
170
+ }
171
+
163
172
  pageInitialized() {
164
173
  this.dispatchGristConfig = {
165
174
  pagination: { infinite: true },
@@ -189,10 +198,16 @@ class DailyDispatchDetail extends localize(i18next)(PageView) {
189
198
  {
190
199
  type: 'float',
191
200
  name: 'adjustedWeight',
192
- header: i18next.t('field.adjusted_tonnage'),
201
+ header: i18next.t('field.mill_tonnage'),
193
202
  record: { editable: true },
194
203
  width: 140
195
204
  },
205
+ {
206
+ type: 'float',
207
+ name: 'variance',
208
+ header: i18next.t('field.variance_%'),
209
+ width: 140
210
+ },
196
211
  {
197
212
  type: 'string',
198
213
  name: 'remark',
@@ -240,9 +255,10 @@ class DailyDispatchDetail extends localize(i18next)(PageView) {
240
255
  dailyDispatch(name: $name) {
241
256
  name
242
257
  dispatchAt
243
- dispatchTo
244
258
  totalTonnageRelease
245
259
  transportNo
260
+ chitNo
261
+ percentage
246
262
  driverIdentification
247
263
  externalDriver
248
264
  driver {
@@ -250,6 +266,10 @@ class DailyDispatchDetail extends localize(i18next)(PageView) {
250
266
  name
251
267
  staffId
252
268
  }
269
+ dispatchTo {
270
+ id
271
+ name
272
+ }
253
273
  status
254
274
  dailyDispatchDetails {
255
275
  name
@@ -275,14 +295,18 @@ class DailyDispatchDetail extends localize(i18next)(PageView) {
275
295
  this._status = dailyDispatch.status
276
296
  this._fillUpDispatchForm({
277
297
  ...dailyDispatch,
278
- driver: dailyDispatch.externalDriver ? dailyDispatch.externalDriver : dailyDispatch.driver.name
298
+ driver: dailyDispatch.externalDriver ? dailyDispatch.externalDriver : dailyDispatch.driver.name,
299
+ dispatchTo: dailyDispatch.dispatchTo?.name
279
300
  })
280
301
 
281
302
  this.dispatchData = {
282
303
  records: (dailyDispatchDetails || []).map(detail => {
283
304
  return {
284
305
  ...detail,
285
- rampName: detail.ramp && detail.ramp.name
306
+ rampName: detail.ramp && detail.ramp.name,
307
+ variance: parseFloat(
308
+ (((detail?.adjustedWeight || 0) - detail.collectedRampWeight) / detail.collectedRampWeight) * 100
309
+ ).toFixed(2)
286
310
  }
287
311
  })
288
312
  }
@@ -340,13 +364,28 @@ class DailyDispatchDetail extends localize(i18next)(PageView) {
340
364
 
341
365
  const response = await client.mutate({
342
366
  mutation: gql`
343
- mutation updateDailyDispatch($name: String!, $dailyDispatchDetails: [DailyDispatchDetailPatch]) {
344
- updateDailyDispatch(name: $name, dailyDispatchDetails: $dailyDispatchDetails) {
367
+ mutation updateDailyDispatch(
368
+ $name: String!
369
+ $chitNo: String
370
+ $percentage: Float
371
+ $dailyDispatchDetails: [DailyDispatchDetailPatch]
372
+ ) {
373
+ updateDailyDispatch(
374
+ name: $name
375
+ chitNo: $chitNo
376
+ percentage: $percentage
377
+ dailyDispatchDetails: $dailyDispatchDetails
378
+ ) {
345
379
  name
346
380
  }
347
381
  }
348
382
  `,
349
- variables: { name: this._dispatchNo, dailyDispatchDetails }
383
+ variables: {
384
+ name: this._dispatchNo,
385
+ chitNo: this.chitNoInput?.value,
386
+ percentage: parseFloat(this.percentageInput?.value),
387
+ dailyDispatchDetails
388
+ }
350
389
  })
351
390
 
352
391
  if (!response.errors) {
@@ -371,14 +410,14 @@ class DailyDispatchDetail extends localize(i18next)(PageView) {
371
410
  }
372
411
 
373
412
  _validateAdjustmentData() {
413
+ if (this.percentageInput?.value) {
414
+ if (this.percentageInput?.value < 0 || isNaN(this.percentageInput.value)) {
415
+ throw new Error(i18next.t('text.invalid_percentage_value'))
416
+ }
417
+ }
418
+
374
419
  if (this.dispatchmentGrist.dirtyData.records.filter(record => record.adjustedWeight > 0).length == 0)
375
420
  throw new Error(i18next.t('text.no_adjustment_can_be_submitted'))
376
-
377
- if (
378
- this.dispatchmentGrist.dirtyData.records.filter(record => record.adjustedWeight == record.collectedRampWeight)
379
- .length
380
- )
381
- throw new Error(i18next.t('text.there_are_adjusted_value_same_as_initial_tonnage'))
382
421
  }
383
422
 
384
423
  _fillupForm(form, data) {