@things-factory/operato-pms 3.7.5 → 3.8.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/client/bootstrap.js +20 -7
  2. package/client/component/block-selector-popup.js +125 -24
  3. package/client/component/driver-selector-popup.js +223 -0
  4. package/client/component/mill-selector-popup.js +200 -0
  5. package/client/component/tracked-plantation-setting.js +113 -0
  6. package/client/component/truck-selector-popup.js +202 -0
  7. package/client/menu.js +34 -2
  8. package/client/pages/constants/index.js +1 -0
  9. package/client/pages/constants/organization.js +5 -0
  10. package/client/pages/dispatchment/daily-dispatch-detail.js +57 -18
  11. package/client/pages/dispatchment/dispatchment-create-record.js +140 -13
  12. package/client/pages/dispatchment/dispatchment-list.js +26 -34
  13. package/client/pages/harvesting/daily-harvesting-detail.js +55 -18
  14. package/client/pages/harvesting/edit-harvesting-record.js +89 -23
  15. package/client/pages/harvesting/harvesting-create-record.js +102 -16
  16. package/client/pages/harvesting/harvesting-list.js +58 -12
  17. package/client/pages/inventory/inventory-field-bunches.js +6 -4
  18. package/client/pages/loading/daily-loading-detail.js +47 -93
  19. package/client/pages/loading/edit-loading-record.js +75 -294
  20. package/client/pages/loading/loading-create-record.js +52 -329
  21. package/client/pages/loading/loading-list.js +20 -83
  22. package/client/pages/master/block.js +1 -0
  23. package/client/pages/master/company.js +26 -13
  24. package/client/pages/master/home.js +67 -65
  25. package/client/pages/master/ramp.js +1 -0
  26. package/client/pages/master/staff.js +54 -3
  27. package/client/pages/master/truck.js +416 -0
  28. package/client/pages/report/home.js +72 -65
  29. package/client/pages/report/report-daily-ffb-dispatch-and-production.js +393 -0
  30. package/client/pages/report/report-daily-production.js +38 -6
  31. package/client/pages/report/report-daily-staff-harvest.js +50 -5
  32. package/client/pages/report/report-ffb-tonnage-between-individual-block.js +393 -0
  33. package/client/pages/report/report-monthly-ffb-sale.js +413 -0
  34. package/client/pages/report/report-monthly-production.js +33 -4
  35. package/client/pages/report/report-yearly-production.js +24 -8
  36. package/client/pages/setting/home.js +107 -0
  37. package/client/pages/setting/plantation-setting.js +109 -0
  38. package/client/route.js +25 -0
  39. package/dist-server/constants/index.js +1 -0
  40. package/dist-server/constants/index.js.map +1 -1
  41. package/dist-server/constants/organization.js +9 -0
  42. package/dist-server/constants/organization.js.map +1 -0
  43. package/dist-server/controllers/render-dispatchment.js +1 -1
  44. package/dist-server/controllers/render-dispatchment.js.map +1 -1
  45. package/dist-server/entities/daily-dispatch.js +19 -4
  46. package/dist-server/entities/daily-dispatch.js.map +1 -1
  47. package/dist-server/entities/daily-harvest-detail.js +9 -11
  48. package/dist-server/entities/daily-harvest-detail.js.map +1 -1
  49. package/dist-server/entities/daily-harvest.js +16 -6
  50. package/dist-server/entities/daily-harvest.js.map +1 -1
  51. package/dist-server/entities/daily-loading-detail.js +14 -6
  52. package/dist-server/entities/daily-loading-detail.js.map +1 -1
  53. package/dist-server/entities/daily-loading.js +3 -11
  54. package/dist-server/entities/daily-loading.js.map +1 -1
  55. package/dist-server/entities/index.js +7 -1
  56. package/dist-server/entities/index.js.map +1 -1
  57. package/dist-server/entities/organization-staff.js +5 -1
  58. package/dist-server/entities/organization-staff.js.map +1 -1
  59. package/dist-server/entities/plantation-inventory.js +4 -10
  60. package/dist-server/entities/plantation-inventory.js.map +1 -1
  61. package/dist-server/entities/plantation-setting.js +76 -0
  62. package/dist-server/entities/plantation-setting.js.map +1 -0
  63. package/dist-server/entities/truck.js +77 -0
  64. package/dist-server/entities/truck.js.map +1 -0
  65. package/dist-server/graphql/resolvers/daily-dispatch/daily-dispatch-query.js +13 -2
  66. package/dist-server/graphql/resolvers/daily-dispatch/daily-dispatch-query.js.map +1 -1
  67. package/dist-server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.js +25 -11
  68. package/dist-server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.js.map +1 -1
  69. package/dist-server/graphql/resolvers/daily-dispatch/update-daily-dispatch.js +3 -2
  70. package/dist-server/graphql/resolvers/daily-dispatch/update-daily-dispatch.js.map +1 -1
  71. package/dist-server/graphql/resolvers/daily-harvest/daily-harvest-query.js +3 -1
  72. package/dist-server/graphql/resolvers/daily-harvest/daily-harvest-query.js.map +1 -1
  73. package/dist-server/graphql/resolvers/daily-harvest/generate-daily-harvest.js +21 -2
  74. package/dist-server/graphql/resolvers/daily-harvest/generate-daily-harvest.js.map +1 -1
  75. package/dist-server/graphql/resolvers/daily-harvest/update-daily-harvest.js +8 -2
  76. package/dist-server/graphql/resolvers/daily-harvest/update-daily-harvest.js.map +1 -1
  77. package/dist-server/graphql/resolvers/daily-loading/daily-loading-query.js +4 -6
  78. package/dist-server/graphql/resolvers/daily-loading/daily-loading-query.js.map +1 -1
  79. package/dist-server/graphql/resolvers/daily-loading/generate-daily-loading.js +20 -54
  80. package/dist-server/graphql/resolvers/daily-loading/generate-daily-loading.js.map +1 -1
  81. package/dist-server/graphql/resolvers/daily-loading/update-daily-loading.js +17 -105
  82. package/dist-server/graphql/resolvers/daily-loading/update-daily-loading.js.map +1 -1
  83. package/dist-server/graphql/resolvers/dashboard/dashboard-query.js +82 -0
  84. package/dist-server/graphql/resolvers/dashboard/dashboard-query.js.map +1 -0
  85. package/dist-server/graphql/resolvers/dashboard/index.js +8 -0
  86. package/dist-server/graphql/resolvers/dashboard/index.js.map +1 -0
  87. package/dist-server/graphql/resolvers/index.js +9 -6
  88. package/dist-server/graphql/resolvers/index.js.map +1 -1
  89. package/dist-server/graphql/resolvers/organization-staff/organization-staff-query.js +7 -3
  90. package/dist-server/graphql/resolvers/organization-staff/organization-staff-query.js.map +1 -1
  91. package/dist-server/graphql/resolvers/plantation-setting/create-plantation-setting.js +12 -0
  92. package/dist-server/graphql/resolvers/plantation-setting/create-plantation-setting.js.map +1 -0
  93. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-setting.js +13 -0
  94. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-setting.js.map +1 -0
  95. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-settings.js +16 -0
  96. package/dist-server/graphql/resolvers/plantation-setting/delete-plantation-settings.js.map +1 -0
  97. package/dist-server/graphql/resolvers/plantation-setting/index.js +15 -0
  98. package/dist-server/graphql/resolvers/plantation-setting/index.js.map +1 -0
  99. package/dist-server/graphql/resolvers/plantation-setting/plantation-setting-query.js +33 -0
  100. package/dist-server/graphql/resolvers/plantation-setting/plantation-setting-query.js.map +1 -0
  101. package/dist-server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.js +31 -0
  102. package/dist-server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.js.map +1 -0
  103. package/dist-server/graphql/resolvers/plantation-setting/update-plantation-setting.js +16 -0
  104. package/dist-server/graphql/resolvers/plantation-setting/update-plantation-setting.js.map +1 -0
  105. package/dist-server/graphql/resolvers/report/daily-production-reports.js +46 -33
  106. package/dist-server/graphql/resolvers/report/daily-production-reports.js.map +1 -1
  107. package/dist-server/graphql/resolvers/report/daily-staff-harvest-reports.js +21 -10
  108. package/dist-server/graphql/resolvers/report/daily-staff-harvest-reports.js.map +1 -1
  109. package/dist-server/graphql/resolvers/report/index.js +4 -1
  110. package/dist-server/graphql/resolvers/report/index.js.map +1 -1
  111. package/dist-server/graphql/resolvers/report/monthly-block-dispatch-reports.js +89 -0
  112. package/dist-server/graphql/resolvers/report/monthly-block-dispatch-reports.js.map +1 -0
  113. package/dist-server/graphql/resolvers/report/monthly-dispatch-summary-reports.js +89 -0
  114. package/dist-server/graphql/resolvers/report/monthly-dispatch-summary-reports.js.map +1 -0
  115. package/dist-server/graphql/resolvers/report/monthly-ffb-sale-reports.js +87 -0
  116. package/dist-server/graphql/resolvers/report/monthly-ffb-sale-reports.js.map +1 -0
  117. package/dist-server/graphql/resolvers/report/monthly-production-reports.js +46 -31
  118. package/dist-server/graphql/resolvers/report/monthly-production-reports.js.map +1 -1
  119. package/dist-server/graphql/resolvers/report/yearly-production-reports.js +38 -28
  120. package/dist-server/graphql/resolvers/report/yearly-production-reports.js.map +1 -1
  121. package/dist-server/graphql/resolvers/truck/delete-trucks.js +18 -0
  122. package/dist-server/graphql/resolvers/truck/delete-trucks.js.map +1 -0
  123. package/dist-server/graphql/resolvers/truck/index.js +12 -0
  124. package/dist-server/graphql/resolvers/truck/index.js.map +1 -0
  125. package/dist-server/graphql/resolvers/truck/truck-query.js +46 -0
  126. package/dist-server/graphql/resolvers/truck/truck-query.js.map +1 -0
  127. package/dist-server/graphql/resolvers/truck/update-multiple-truck.js +40 -0
  128. package/dist-server/graphql/resolvers/truck/update-multiple-truck.js.map +1 -0
  129. package/dist-server/graphql/types/daily-dispatch/daily-dispatch-patch.js +4 -1
  130. package/dist-server/graphql/types/daily-dispatch/daily-dispatch-patch.js.map +1 -1
  131. package/dist-server/graphql/types/daily-dispatch/daily-dispatch.js +4 -1
  132. package/dist-server/graphql/types/daily-dispatch/daily-dispatch.js.map +1 -1
  133. package/dist-server/graphql/types/daily-dispatch/index.js +6 -1
  134. package/dist-server/graphql/types/daily-dispatch/index.js.map +1 -1
  135. package/dist-server/graphql/types/daily-dispatch/new-daily-dispatch.js +4 -1
  136. package/dist-server/graphql/types/daily-dispatch/new-daily-dispatch.js.map +1 -1
  137. package/dist-server/graphql/types/daily-harvest/daily-harvest-patch.js +5 -2
  138. package/dist-server/graphql/types/daily-harvest/daily-harvest-patch.js.map +1 -1
  139. package/dist-server/graphql/types/daily-harvest/daily-harvest.js +3 -0
  140. package/dist-server/graphql/types/daily-harvest/daily-harvest.js.map +1 -1
  141. package/dist-server/graphql/types/daily-harvest/new-daily-harvest.js +4 -1
  142. package/dist-server/graphql/types/daily-harvest/new-daily-harvest.js.map +1 -1
  143. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.js +1 -0
  144. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.js.map +1 -1
  145. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail.js +1 -0
  146. package/dist-server/graphql/types/daily-harvest-detail/daily-harvest-detail.js.map +1 -1
  147. package/dist-server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.js +1 -0
  148. package/dist-server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.js.map +1 -1
  149. package/dist-server/graphql/types/daily-loading/daily-loading-patch.js +0 -2
  150. package/dist-server/graphql/types/daily-loading/daily-loading-patch.js.map +1 -1
  151. package/dist-server/graphql/types/daily-loading/daily-loading.js +0 -2
  152. package/dist-server/graphql/types/daily-loading/daily-loading.js.map +1 -1
  153. package/dist-server/graphql/types/daily-loading/new-daily-loading.js +0 -2
  154. package/dist-server/graphql/types/daily-loading/new-daily-loading.js.map +1 -1
  155. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-patch.js +6 -3
  156. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-patch.js.map +1 -1
  157. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail.js +3 -0
  158. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail.js.map +1 -1
  159. package/dist-server/graphql/types/daily-loading-detail/new-daily-loading-detail.js +6 -3
  160. package/dist-server/graphql/types/daily-loading-detail/new-daily-loading-detail.js.map +1 -1
  161. package/dist-server/graphql/types/dashboard/bunches-count.js +15 -0
  162. package/dist-server/graphql/types/dashboard/bunches-count.js.map +1 -0
  163. package/dist-server/graphql/types/dashboard/index.js +32 -0
  164. package/dist-server/graphql/types/dashboard/index.js.map +1 -0
  165. package/dist-server/graphql/types/dashboard/productions-overview.js +15 -0
  166. package/dist-server/graphql/types/dashboard/productions-overview.js.map +1 -0
  167. package/dist-server/graphql/types/dashboard/tonnage-bunches-inventories.js +14 -0
  168. package/dist-server/graphql/types/dashboard/tonnage-bunches-inventories.js.map +1 -0
  169. package/dist-server/graphql/types/dashboard/tonnage-production.js +17 -0
  170. package/dist-server/graphql/types/dashboard/tonnage-production.js.map +1 -0
  171. package/dist-server/graphql/types/dashboard/yield-production.js +17 -0
  172. package/dist-server/graphql/types/dashboard/yield-production.js.map +1 -0
  173. package/dist-server/graphql/types/index.js +9 -6
  174. package/dist-server/graphql/types/index.js.map +1 -1
  175. package/dist-server/graphql/types/organization-staff/organization-staff-patch.js +2 -0
  176. package/dist-server/graphql/types/organization-staff/organization-staff-patch.js.map +1 -1
  177. package/dist-server/graphql/types/organization-staff/organization-staff.js +3 -0
  178. package/dist-server/graphql/types/organization-staff/organization-staff.js.map +1 -1
  179. package/dist-server/graphql/types/plantation-setting/index.js +36 -0
  180. package/dist-server/graphql/types/plantation-setting/index.js.map +1 -0
  181. package/dist-server/graphql/types/plantation-setting/new-plantation-setting.js +16 -0
  182. package/dist-server/graphql/types/plantation-setting/new-plantation-setting.js.map +1 -0
  183. package/dist-server/graphql/types/plantation-setting/plantation-setting-list.js +14 -0
  184. package/dist-server/graphql/types/plantation-setting/plantation-setting-list.js.map +1 -0
  185. package/dist-server/graphql/types/plantation-setting/plantation-setting-patch.js +18 -0
  186. package/dist-server/graphql/types/plantation-setting/plantation-setting-patch.js.map +1 -0
  187. package/dist-server/graphql/types/plantation-setting/plantation-setting.js +22 -0
  188. package/dist-server/graphql/types/plantation-setting/plantation-setting.js.map +1 -0
  189. package/dist-server/graphql/types/report/index.js +20 -0
  190. package/dist-server/graphql/types/report/index.js.map +1 -1
  191. package/dist-server/graphql/types/report/monthly-block-dispatch-report-list.js +14 -0
  192. package/dist-server/graphql/types/report/monthly-block-dispatch-report-list.js.map +1 -0
  193. package/dist-server/graphql/types/report/monthly-block-dispatch-report.js +19 -0
  194. package/dist-server/graphql/types/report/monthly-block-dispatch-report.js.map +1 -0
  195. package/dist-server/graphql/types/report/monthly-dispatch-summary-report-list.js +14 -0
  196. package/dist-server/graphql/types/report/monthly-dispatch-summary-report-list.js.map +1 -0
  197. package/dist-server/graphql/types/report/monthly-dispatch-summary-report.js +25 -0
  198. package/dist-server/graphql/types/report/monthly-dispatch-summary-report.js.map +1 -0
  199. package/dist-server/graphql/types/report/monthly-ffb-sale-report-list.js +14 -0
  200. package/dist-server/graphql/types/report/monthly-ffb-sale-report-list.js.map +1 -0
  201. package/dist-server/graphql/types/report/monthly-ffb-sale-report.js +24 -0
  202. package/dist-server/graphql/types/report/monthly-ffb-sale-report.js.map +1 -0
  203. package/dist-server/graphql/types/truck/index.js +33 -0
  204. package/dist-server/graphql/types/truck/index.js.map +1 -0
  205. package/dist-server/graphql/types/truck/new-truck.js +14 -0
  206. package/dist-server/graphql/types/truck/new-truck.js.map +1 -0
  207. package/dist-server/graphql/types/truck/truck-list.js +14 -0
  208. package/dist-server/graphql/types/truck/truck-list.js.map +1 -0
  209. package/dist-server/graphql/types/truck/truck-patch.js +17 -0
  210. package/dist-server/graphql/types/truck/truck-patch.js.map +1 -0
  211. package/dist-server/graphql/types/truck/truck.js +22 -0
  212. package/dist-server/graphql/types/truck/truck.js.map +1 -0
  213. package/package.json +29 -29
  214. package/server/constants/index.ts +1 -0
  215. package/server/constants/organization.ts +5 -0
  216. package/server/controllers/render-dispatchment.ts +1 -1
  217. package/server/entities/daily-dispatch.ts +21 -5
  218. package/server/entities/daily-harvest-detail.ts +10 -11
  219. package/server/entities/daily-harvest.ts +16 -7
  220. package/server/entities/daily-loading-detail.ts +14 -6
  221. package/server/entities/daily-loading.ts +7 -11
  222. package/server/entities/index.ts +6 -0
  223. package/server/entities/organization-staff.ts +6 -1
  224. package/server/entities/plantation-inventory.ts +6 -10
  225. package/server/entities/plantation-setting.ts +60 -0
  226. package/server/entities/truck.ts +58 -0
  227. package/server/graphql/resolvers/daily-dispatch/daily-dispatch-query.ts +15 -2
  228. package/server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.ts +40 -14
  229. package/server/graphql/resolvers/daily-dispatch/update-daily-dispatch.ts +6 -2
  230. package/server/graphql/resolvers/daily-harvest/daily-harvest-query.ts +7 -2
  231. package/server/graphql/resolvers/daily-harvest/generate-daily-harvest.ts +50 -4
  232. package/server/graphql/resolvers/daily-harvest/update-daily-harvest.ts +12 -2
  233. package/server/graphql/resolvers/daily-loading/daily-loading-query.ts +6 -6
  234. package/server/graphql/resolvers/daily-loading/generate-daily-loading.ts +27 -109
  235. package/server/graphql/resolvers/daily-loading/update-daily-loading.ts +27 -213
  236. package/server/graphql/resolvers/dashboard/dashboard-query.ts +96 -0
  237. package/server/graphql/resolvers/dashboard/index.ts +5 -0
  238. package/server/graphql/resolvers/index.ts +10 -6
  239. package/server/graphql/resolvers/organization-staff/organization-staff-query.ts +13 -4
  240. package/server/graphql/resolvers/plantation-setting/create-plantation-setting.ts +16 -0
  241. package/server/graphql/resolvers/plantation-setting/delete-plantation-setting.ts +13 -0
  242. package/server/graphql/resolvers/plantation-setting/delete-plantation-settings.ts +16 -0
  243. package/server/graphql/resolvers/plantation-setting/index.ts +19 -0
  244. package/server/graphql/resolvers/plantation-setting/plantation-setting-query.ts +38 -0
  245. package/server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.ts +46 -0
  246. package/server/graphql/resolvers/plantation-setting/update-plantation-setting.ts +19 -0
  247. package/server/graphql/resolvers/report/daily-production-reports.ts +55 -44
  248. package/server/graphql/resolvers/report/daily-staff-harvest-reports.ts +28 -20
  249. package/server/graphql/resolvers/report/index.ts +7 -1
  250. package/server/graphql/resolvers/report/monthly-block-dispatch-reports.ts +112 -0
  251. package/server/graphql/resolvers/report/monthly-dispatch-summary-reports.ts +110 -0
  252. package/server/graphql/resolvers/report/monthly-ffb-sale-reports.ts +107 -0
  253. package/server/graphql/resolvers/report/monthly-production-reports.ts +54 -40
  254. package/server/graphql/resolvers/report/yearly-production-reports.ts +43 -38
  255. package/server/graphql/resolvers/truck/delete-trucks.ts +21 -0
  256. package/server/graphql/resolvers/truck/index.ts +12 -0
  257. package/server/graphql/resolvers/truck/truck-query.ts +52 -0
  258. package/server/graphql/resolvers/truck/update-multiple-truck.ts +55 -0
  259. package/server/graphql/types/daily-dispatch/daily-dispatch-patch.ts +4 -1
  260. package/server/graphql/types/daily-dispatch/daily-dispatch.ts +4 -1
  261. package/server/graphql/types/daily-dispatch/index.ts +6 -1
  262. package/server/graphql/types/daily-dispatch/new-daily-dispatch.ts +4 -1
  263. package/server/graphql/types/daily-harvest/daily-harvest-patch.ts +5 -2
  264. package/server/graphql/types/daily-harvest/daily-harvest.ts +3 -0
  265. package/server/graphql/types/daily-harvest/new-daily-harvest.ts +4 -1
  266. package/server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.ts +1 -0
  267. package/server/graphql/types/daily-harvest-detail/daily-harvest-detail.ts +1 -0
  268. package/server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.ts +1 -0
  269. package/server/graphql/types/daily-loading/daily-loading-patch.ts +0 -2
  270. package/server/graphql/types/daily-loading/daily-loading.ts +0 -2
  271. package/server/graphql/types/daily-loading/new-daily-loading.ts +0 -2
  272. package/server/graphql/types/daily-loading-detail/daily-loading-detail-patch.ts +6 -3
  273. package/server/graphql/types/daily-loading-detail/daily-loading-detail.ts +3 -0
  274. package/server/graphql/types/daily-loading-detail/new-daily-loading-detail.ts +6 -3
  275. package/server/graphql/types/dashboard/bunches-count.ts +9 -0
  276. package/server/graphql/types/dashboard/index.ts +17 -0
  277. package/server/graphql/types/dashboard/productions-overview.ts +9 -0
  278. package/server/graphql/types/dashboard/tonnage-bunches-inventories.ts +8 -0
  279. package/server/graphql/types/dashboard/tonnage-production.ts +11 -0
  280. package/server/graphql/types/dashboard/yield-production.ts +11 -0
  281. package/server/graphql/types/index.ts +10 -6
  282. package/server/graphql/types/organization-staff/organization-staff-patch.ts +2 -0
  283. package/server/graphql/types/organization-staff/organization-staff.ts +3 -0
  284. package/server/graphql/types/plantation-setting/index.ts +21 -0
  285. package/server/graphql/types/plantation-setting/new-plantation-setting.ts +10 -0
  286. package/server/graphql/types/plantation-setting/plantation-setting-list.ts +8 -0
  287. package/server/graphql/types/plantation-setting/plantation-setting-patch.ts +12 -0
  288. package/server/graphql/types/plantation-setting/plantation-setting.ts +16 -0
  289. package/server/graphql/types/report/index.ts +20 -0
  290. package/server/graphql/types/report/monthly-block-dispatch-report-list.ts +7 -0
  291. package/server/graphql/types/report/monthly-block-dispatch-report.ts +13 -0
  292. package/server/graphql/types/report/monthly-dispatch-summary-report-list.ts +7 -0
  293. package/server/graphql/types/report/monthly-dispatch-summary-report.ts +19 -0
  294. package/server/graphql/types/report/monthly-ffb-sale-report-list.ts +7 -0
  295. package/server/graphql/types/report/monthly-ffb-sale-report.ts +18 -0
  296. package/server/graphql/types/truck/index.ts +18 -0
  297. package/server/graphql/types/truck/new-truck.ts +8 -0
  298. package/server/graphql/types/truck/truck-list.ts +8 -0
  299. package/server/graphql/types/truck/truck-patch.ts +11 -0
  300. package/server/graphql/types/truck/truck.ts +16 -0
  301. package/things-factory.config.js +27 -1
  302. package/translations/en.json +78 -16
  303. package/translations/ko.json +77 -48
  304. package/translations/ms.json +74 -45
  305. package/translations/zh.json +77 -48
@@ -1,13 +1,14 @@
1
- import { MultiColumnFormStyles } from '@things-factory/form-ui'
2
1
  import '@things-factory/grist-ui'
2
+ import '../../component/block-selector-popup'
3
+
4
+ import gql from 'graphql-tag'
5
+ import { css, html } from 'lit-element'
6
+
7
+ import { MultiColumnFormStyles } from '@things-factory/form-ui'
3
8
  import { i18next, localize } from '@things-factory/i18n-base'
4
9
  import { client, CustomAlert, navigate, PageView } from '@things-factory/shell'
5
10
  import { CommonButtonStyles } from '@things-factory/styles'
6
11
  import { isMobileDevice } from '@things-factory/utils'
7
- import gql from 'graphql-tag'
8
- import { css, html } from 'lit-element'
9
- import '../../component/block-selector-popup'
10
- import { INVENTORY_TYPE } from '../constants'
11
12
 
12
13
  class EditLoadingRecord extends localize(i18next)(PageView) {
13
14
  static get properties() {
@@ -99,20 +100,9 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
99
100
  return html`
100
101
  <form name="dailyLoading" class="multi-column-form" autocomplete="off">
101
102
  <fieldset>
102
- <legend>${i18next.t('title.daily_loading_record')}</legend>
103
- <label>${i18next.t('label.loading_date')}</label>
103
+ <legend>${i18next.t('title.field_loading_contractor_daily_loading_record')}</legend>
104
+ <label>${i18next.t('label.date')}</label>
104
105
  <input type="date" name="loadingDate" required />
105
-
106
- <label>${i18next.t('label.block')}</label>
107
- <input name="block" readonly />
108
-
109
- <label>${i18next.t('label.current_bunch_at_field')}</label>
110
- <input
111
- type="number"
112
- name="totalBunches"
113
- value="${this.totalBunchesAvailable ? this.totalBunchesAvailable : 0}"
114
- readonly
115
- />
116
106
  </fieldset>
117
107
  </form>
118
108
 
@@ -127,44 +117,14 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
127
117
  .data="${this.loadingData}"
128
118
  @record-change="${this._onRecordChangeHandler.bind(this)}"
129
119
  ></data-grist>
130
-
131
- <h2><mwc-icon>list_alt</mwc-icon>${i18next.t('title.ramp_loading_data')}</h2>
132
-
133
- <data-grist
134
- id="ramp-grist"
135
- .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
136
- .config=${this.rampGristConfig}
137
- .data="${this.rampData}"
138
- ></data-grist>
139
120
  </div>
140
121
  </div>
141
-
142
- <form name="loadingSummary" class="multi-column-form" autocomplete="off">
143
- <fieldset>
144
- <label>${i18next.t('label.total_bunch_loaded')}</label>
145
- <input
146
- type="number"
147
- name="totalBunchLoaded"
148
- value="${this.totalBunchLoaded ? this.totalBunchLoaded : 0}"
149
- readonly
150
- />
151
-
152
- <label>${i18next.t('label.total_tonnage_loaded')}</label>
153
- <input
154
- type="number"
155
- name="totalWeight"
156
- value="${this.totalTonnageAvailable ? this.totalTonnageAvailable : 0}"
157
- readonly
158
- />
159
- </fieldset>
160
- </form>
161
122
  `
162
123
  }
163
124
 
164
125
  constructor() {
165
126
  super()
166
127
  this.loadingData = { records: [] }
167
- this.rampData = { records: [] }
168
128
  }
169
129
 
170
130
  get loadingForm() {
@@ -175,31 +135,11 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
175
135
  return this.shadowRoot.querySelector('data-grist#loading-grist')
176
136
  }
177
137
 
178
- get rampGrist() {
179
- return this.shadowRoot.querySelector('data-grist#ramp-grist')
180
- }
181
-
182
- get blockInput() {
183
- return this.shadowRoot.querySelector('input[name=block]')
184
- }
185
-
186
- get bunchesInput() {
187
- return this.shadowRoot.querySelector('input[name=totalBunches]')
188
- }
189
-
190
- get bunchLoadedInput() {
191
- return this.shadowRoot.querySelector('input[name=totalBunchLoaded]')
192
- }
193
-
194
- get tonnageInput() {
195
- return this.shadowRoot.querySelector('input[name=totalWeight]')
196
- }
197
-
198
- async pageInitialized() {
138
+ pageInitialized() {
199
139
  this.loadingGristConfig = {
200
140
  pagination: { infinite: true },
201
141
  list: {
202
- fields: ['organizationStaff', 'totalBunch', 'totalWeight', 'remark']
142
+ fields: ['truck', 'block', 'totalBunchLoaded', 'totalBunchWeight', 'ramp', 'remark']
203
143
  },
204
144
  columns: [
205
145
  { type: 'gutter', gutterName: 'sequence' },
@@ -210,69 +150,75 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
210
150
  },
211
151
  {
212
152
  type: 'object',
213
- name: 'organizationStaff',
214
- header: i18next.t('field.trip'),
153
+ name: 'truck',
154
+ header: i18next.t('field.truck_no'),
215
155
  record: {
216
156
  editable: true,
217
- align: 'center',
218
157
  options: {
219
- queryName: 'organizationStaffs',
158
+ queryName: 'trucks',
220
159
  select: [
221
160
  { name: 'id', hidden: true },
222
161
  { name: 'name', header: i18next.t('field.name'), width: 200 }
223
162
  ],
224
- list: { fields: ['name', 'description'] }
163
+ list: { fields: ['name'] }
225
164
  }
226
165
  },
227
- width: 300
166
+ width: 130
228
167
  },
229
168
  {
230
- type: 'integer',
169
+ type: 'object',
170
+ name: 'block',
171
+ header: i18next.t('field.block'),
172
+ record: {
173
+ editable: true,
174
+ options: {
175
+ queryName: 'blocks',
176
+ select: [
177
+ { name: 'id', hidden: true },
178
+ { name: 'name', header: i18next.t('field.name'), width: 200 }
179
+ ],
180
+ list: { fields: ['name'] }
181
+ }
182
+ },
183
+ width: 130
184
+ },
185
+ {
186
+ type: 'float',
231
187
  name: 'totalBunchLoaded',
232
- header: i18next.t('field.total_no_of_bunches'),
188
+ header: i18next.t('field.total_bunch'),
233
189
  record: { editable: true },
234
190
  width: 150
235
191
  },
236
192
  {
237
193
  type: 'float',
238
194
  name: 'totalBunchWeight',
239
- header: i18next.t('field.total_weight_loaded'),
195
+ header: i18next.t('field.total_tonnage'),
240
196
  record: { editable: true },
241
197
  width: 150
242
198
  },
243
- {
244
- type: 'string',
245
- name: 'remark',
246
- header: i18next.t('field.remarks'),
247
- record: { editable: true, align: 'center' },
248
- width: 300
249
- }
250
- ]
251
- }
252
-
253
- this.rampGristConfig = {
254
- pagination: { infinite: true },
255
- list: {
256
- fields: ['ramp', 'totalBunchWeight']
257
- },
258
- columns: [
259
- { type: 'gutter', gutterName: 'sequence' },
260
- {
261
- type: 'string',
262
- name: 'name',
263
- hidden: true
264
- },
265
199
  {
266
200
  type: 'object',
267
201
  name: 'ramp',
268
202
  header: i18next.t('field.ramp'),
269
- width: 300
203
+ record: {
204
+ editable: true,
205
+ options: {
206
+ queryName: 'ramps',
207
+ select: [
208
+ { name: 'id', hidden: true },
209
+ { name: 'name', header: i18next.t('field.name'), width: 200 }
210
+ ],
211
+ list: { fields: ['name'] }
212
+ }
213
+ },
214
+ width: 130
270
215
  },
271
216
  {
272
- type: 'float',
273
- name: 'totalBunchWeight',
274
- header: i18next.t('field.total_weight_loaded'),
275
- width: 150
217
+ type: 'string',
218
+ name: 'remark',
219
+ header: i18next.t('field.remarks'),
220
+ record: { editable: true },
221
+ width: 300
276
222
  }
277
223
  ]
278
224
  }
@@ -280,82 +226,19 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
280
226
 
281
227
  _onRecordChangeHandler(event) {
282
228
  try {
283
- this._checkStaffDuplication()
284
-
285
- if (!this.blockInput?.value) throw new Error(i18next.t('text.kindly_select_a_block_first'))
286
-
287
229
  let changeRecord = event.detail.after
288
230
  const changedColumn = event.detail.column.name
289
- let { totalBunchLoaded, totalBunchWeight } = changeRecord
290
-
291
- if (changedColumn === 'totalBunchLoaded') {
292
- const sumOfTotalBunchLoaded = this.loadingGrist.dirtyData.records.reduce((total, currentValue) => {
293
- total += currentValue.totalBunchLoaded
294
- return total
295
- }, 0)
296
-
297
- const newTotalAvailableBunches =
298
- this.totalBunchesAvailable + this.storedTotalBunchLoaded - sumOfTotalBunchLoaded
299
-
300
- this.totalBunchLoaded = sumOfTotalBunchLoaded
301
-
302
- if (newTotalAvailableBunches < 0) {
303
- throw new Error(i18next.t('text.insufficient_bunches_to_be_loaded'))
304
- }
305
- this.bunchesInput.value = newTotalAvailableBunches
306
- this.bunchLoadedInput.value = this.totalBunchLoaded
307
-
308
- if (!totalBunchLoaded || totalBunchLoaded < 0)
309
- throw new Error(i18next.t('text.total_bunches_loaded_should_be_positive'))
310
- }
311
-
231
+ let { totalBunchWeight, totalBunchLoaded } = changeRecord
312
232
  if (changedColumn === 'totalBunchWeight') {
313
233
  if (!totalBunchWeight || totalBunchWeight < 0) {
314
- throw new Error(i18next.t('text.total_bunch_weight_should_be_positive'))
234
+ throw new Error(i18next.t('text.x_should_be_positive', { x: i18next.t('label.total_tonnage') }))
315
235
  }
316
- const sumOfTotalTonnage = this.loadingGrist.dirtyData.records.reduce((total, currentValue) => {
317
- total += currentValue.totalBunchWeight
318
- return total
319
- }, 0)
320
-
321
- const newTotalAvailableTonnage = this.totalTonnageAvailable + sumOfTotalTonnage
322
- this.tonnageInput.value = newTotalAvailableTonnage
323
236
  }
324
- } catch (e) {
325
- const beforeValue = event.detail.before && event.detail.before[event.detail.column.name]
326
- if (beforeValue) {
327
- event.detail.after[event.detail.column.name] = beforeValue
328
- } else {
329
- delete event.detail.after[event.detail.column.name]
330
- }
331
-
332
- this._showToast(e)
333
- }
334
- }
335
-
336
- _onRampRecordChangeHandler(event) {
337
- try {
338
- this._checkRampDuplication()
339
- let changeRecord = event.detail.after
340
- const changedColumn = event.detail.column.name
341
- let { totalBunchWeight } = changeRecord
342
-
343
- if (changedColumn === 'totalBunchWeight') {
344
- const sumOfLoadedWeight = this.loadingGrist.dirtyData.records.reduce((total, currentValue) => {
345
- total += currentValue.totalBunchWeight
346
- return total
347
- }, 0)
348
-
349
- const sumOfRampWeight = this.rampGrist.dirtyData.records.reduce((total, currentValue) => {
350
- total += currentValue.totalBunchWeight
351
- return total
352
- }, 0)
353
237
 
354
- if (sumOfRampWeight > sumOfLoadedWeight)
355
- throw new Error(i18next.t('text.insufficient_weight_to_be_allocated_into_ramp'))
356
-
357
- if (!totalBunchWeight || totalBunchWeight < 0)
358
- throw new Error(i18next.t('text.total_bunches_loaded_should_be_positive'))
238
+ if (changedColumn === 'totalBunchLoaded') {
239
+ if (totalBunchLoaded < 0) {
240
+ throw new Error(i18next.t('text.x_should_be_positive', { x: i18next.t('label.total_bunch') }))
241
+ }
359
242
  }
360
243
  } catch (e) {
361
244
  const beforeValue = event.detail.before && event.detail.before[event.detail.column.name]
@@ -369,70 +252,40 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
369
252
  }
370
253
  }
371
254
 
372
- _checkStaffDuplication() {
373
- // organization staff
374
- let isDuplicated = false
375
- const completedRows = this.loadingGrist.dirtyData.records
376
- .filter(record => record.organizationStaff.id)
377
- .map(record => `${record.organizationStaff.id}`)
378
-
379
- completedRows.forEach((row, idx, rows) => {
380
- if (rows.lastIndexOf(row) !== idx) {
381
- isDuplicated = true
382
- }
383
- })
384
-
385
- if (isDuplicated) {
386
- throw new Error(i18next.t('text.there_is_duplicated_staff_in_record'))
387
- }
388
- }
389
-
390
255
  async pageUpdated(changes) {
391
256
  if (this.active) {
392
257
  this._loadingNo = changes.resourceId || this._loadingNo || ''
393
258
  await this._fetchLoadingRecord()
394
- await this._fetchBunchesInField()
395
259
  this.updateContext()
396
260
  }
397
261
  }
398
262
 
399
263
  async _fetchLoadingRecord() {
400
- if (!this._loadingNo) {
401
- CustomAlert({
402
- title: i18next.t('text.no_records'),
403
- text: i18next.t('text.unable_to_find_loading_record')
404
- })
405
- }
264
+ if (!this._loadingNo) return
406
265
 
407
266
  const response = await client.query({
408
267
  query: gql`
409
268
  query dailyLoading($name: String!) {
410
269
  dailyLoading(name: $name) {
411
270
  name
412
- block {
413
- id
414
- name
415
- description
416
- }
417
271
  loadingDate
418
272
  totalBunch
419
273
  totalWeight
420
274
  status
421
- dailyLoadingRamps {
275
+ dailyLoadingDetails {
422
276
  name
277
+ totalBunchLoaded
423
278
  totalBunchWeight
279
+ remark
280
+ truck {
281
+ id
282
+ name
283
+ }
424
284
  ramp {
425
285
  id
426
286
  name
427
- description
428
287
  }
429
- }
430
- dailyLoadingDetails {
431
- name
432
- totalBunchLoaded
433
- totalBunchWeight
434
- remark
435
- organizationStaff {
288
+ block {
436
289
  id
437
290
  name
438
291
  }
@@ -445,64 +298,13 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
445
298
 
446
299
  if (!response.errors) {
447
300
  const { dailyLoading } = response.data
448
- const { dailyLoadingRamps, dailyLoadingDetails } = dailyLoading
301
+ const { dailyLoadingDetails } = dailyLoading
449
302
 
450
303
  this._status = dailyLoading.status
451
- this._blockId = dailyLoading.block.id
452
- this._fillupLoadingForm({ ...dailyLoading, block: dailyLoading.block.name })
304
+ this._fillupLoadingForm({ ...dailyLoading })
453
305
  this.loadingData = {
454
- records: dailyLoadingDetails.map(detail => {
455
- return {
456
- ...detail,
457
- staffName: detail.organizationStaff && detail.organizationStaff.name
458
- }
459
- })
460
- }
461
-
462
- this.rampData = {
463
- records: dailyLoadingRamps.map(loadingRamp => {
464
- return {
465
- ...loadingRamp,
466
- ...loadingRamp.ramp
467
- }
468
- })
306
+ records: dailyLoadingDetails
469
307
  }
470
-
471
- this.totalTonnageAvailable = dailyLoadingRamps.reduce((total, currentValue) => {
472
- total += currentValue.totalBunchWeight
473
- return total
474
- }, 0)
475
-
476
- this.storedTotalBunchLoaded = dailyLoadingDetails.reduce((total, currentValue) => {
477
- total += currentValue.totalBunchLoaded
478
- return total
479
- }, 0)
480
-
481
- this.totalBunchLoaded = this.storedTotalBunchLoaded
482
- }
483
- }
484
-
485
- async _fetchBunchesInField() {
486
- const response = await client.query({
487
- query: gql`
488
- query plantationInventory($blockId: String!, $type: String!) {
489
- plantationInventory(blockId: $blockId, type: $type) {
490
- id
491
- block {
492
- id
493
- name
494
- description
495
- }
496
- totalBunches
497
- updatedAt
498
- }
499
- }
500
- `,
501
- variables: { blockId: this._blockId, type: INVENTORY_TYPE.FIELD_BUNCHES.value }
502
- })
503
-
504
- if (!response.errors) {
505
- this.totalBunchesAvailable = response.data.plantationInventory.totalBunches
506
308
  }
507
309
  }
508
310
 
@@ -521,10 +323,7 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
521
323
  if (!result.value) return
522
324
 
523
325
  let dailyLoadingPatch = this._getFormInfo()
524
- delete dailyLoadingPatch.totalBunches
525
- delete dailyLoadingPatch.totalWeight
526
326
  dailyLoadingPatch.dailyLoadingDetails = this._getLoadingDetails()
527
- dailyLoadingPatch.dailyLoadingRamps = this._getLoadingRampDetails()
528
327
 
529
328
  const response = await client.mutate({
530
329
  mutation: gql`
@@ -556,14 +355,6 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
556
355
  // no records
557
356
  if (!this.loadingGrist.dirtyData.records || !this.loadingGrist.dirtyData.records.length)
558
357
  throw new Error(i18next.t('text.no_records'))
559
-
560
- // required field (batchId, packingType, weight, unit, packQty, palletQty)
561
- if (
562
- this.loadingGrist.dirtyData.records.filter(
563
- record => !record.organizationStaff || !record.totalBunchLoaded || !record.totalBunchWeight
564
- ).length
565
- )
566
- throw new Error(i18next.t('text.empty_value_in_list'))
567
358
  }
568
359
 
569
360
  _getFormInfo() {
@@ -573,9 +364,11 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
573
364
  _getLoadingDetails() {
574
365
  return this.loadingGrist.dirtyData.records.map(record => {
575
366
  let dailyLoadingDetails = {
576
- organizationStaff: { id: record.organizationStaff.id, name: record.organizationStaff.name },
577
- name: record?.name ? record.name : null,
578
- totalBunchLoaded: Number(record.totalBunchLoaded),
367
+ name: record.name,
368
+ truck: { id: record.truck.id, name: record.truck.name },
369
+ block: { id: record.block.id, name: record.block.name },
370
+ ramp: { id: record.ramp.id, name: record.ramp.name },
371
+ totalBunchLoaded: Number(record?.totalBunchLoaded || 0),
579
372
  totalBunchWeight: Number(record.totalBunchWeight),
580
373
  remark: record?.remark ? record.remark : null
581
374
  }
@@ -584,18 +377,6 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
584
377
  })
585
378
  }
586
379
 
587
- _getLoadingRampDetails() {
588
- return this.rampGrist.dirtyData.records.map(record => {
589
- let dailyLoadingRamps = {
590
- ramp: { id: record.ramp.id, name: record.ramp.name },
591
- name: record?.name ? record.name : null,
592
- totalBunchWeight: Number(record.totalBunchWeight)
593
- }
594
-
595
- return dailyLoadingRamps
596
- })
597
- }
598
-
599
380
  _fillupLoadingForm(data) {
600
381
  this._fillupForm(this.loadingForm, data)
601
382
  }