@fleetbase/fleetops-engine 0.6.38 → 0.6.40

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 (432) hide show
  1. package/addon/components/activity/form.hbs +2 -12
  2. package/addon/components/activity/logic-builder.hbs +1 -1
  3. package/addon/components/custom-entity/form.hbs +4 -20
  4. package/addon/components/device/form.hbs +3 -15
  5. package/addon/components/device/panel-header.hbs +13 -2
  6. package/addon/components/driver/details.hbs +33 -2
  7. package/addon/components/driver/form.hbs +42 -0
  8. package/addon/components/driver/panel-header.hbs +8 -1
  9. package/addon/components/driver/schedule.hbs +115 -76
  10. package/addon/components/driver/schedule.js +349 -157
  11. package/addon/components/driver-onboard-settings.hbs +2 -8
  12. package/addon/components/entity-field-editing-settings.hbs +2 -5
  13. package/addon/components/equipment/card.hbs +49 -0
  14. package/addon/components/equipment/card.js +6 -0
  15. package/addon/components/equipment/details.hbs +83 -44
  16. package/addon/components/equipment/form.hbs +111 -41
  17. package/addon/components/equipment/form.js +78 -10
  18. package/addon/components/equipment/panel-header.hbs +36 -0
  19. package/addon/components/equipment/panel-header.js +2 -0
  20. package/addon/components/fleet/driver-listing.hbs +3 -1
  21. package/addon/components/fleet/vehicle-listing.hbs +4 -7
  22. package/addon/components/fleet-panel/vehicle-listing.hbs +1 -6
  23. package/addon/components/fuel-report/form.hbs +1 -5
  24. package/addon/components/layout/fleet-ops-sidebar.hbs +43 -38
  25. package/addon/components/layout/fleet-ops-sidebar.js +103 -24
  26. package/addon/components/maintenance/cost-panel.hbs +176 -0
  27. package/addon/components/maintenance/cost-panel.js +241 -0
  28. package/addon/components/maintenance/details.hbs +123 -60
  29. package/addon/components/maintenance/form.hbs +138 -78
  30. package/addon/components/maintenance/form.js +131 -6
  31. package/addon/components/maintenance/panel-header.hbs +31 -0
  32. package/addon/components/maintenance/panel-header.js +2 -0
  33. package/addon/components/maintenance-schedule/details.hbs +260 -0
  34. package/addon/components/maintenance-schedule/details.js +158 -0
  35. package/addon/components/maintenance-schedule/form.hbs +287 -0
  36. package/addon/components/maintenance-schedule/form.js +199 -0
  37. package/addon/components/map/container.hbs +1 -1
  38. package/addon/components/map/drawer/device-event-listing.hbs +1 -1
  39. package/addon/components/map/drawer/driver-listing.hbs +1 -6
  40. package/addon/components/map/drawer/place-listing.hbs +1 -6
  41. package/addon/components/map/drawer/vehicle-listing.hbs +1 -6
  42. package/addon/components/map/drawer.hbs +8 -1
  43. package/addon/components/map/leaflet-live-map.hbs +2 -1
  44. package/addon/components/map/toolbar/visibility-control-panel.hbs +1 -1
  45. package/addon/components/map/toolbar.hbs +4 -29
  46. package/addon/components/modals/add-driver-shift.hbs +155 -0
  47. package/addon/components/modals/add-driver-shift.js +210 -0
  48. package/addon/components/modals/bulk-assign-orders.hbs +67 -0
  49. package/addon/components/modals/driver-shift.hbs +43 -0
  50. package/addon/components/modals/driver-shift.js +56 -0
  51. package/addon/components/modals/entity-form.hbs +5 -28
  52. package/addon/components/modals/orchestrator-import.hbs +351 -0
  53. package/addon/components/modals/orchestrator-import.js +807 -0
  54. package/addon/components/modals/order-config-new-status.hbs +1 -5
  55. package/addon/components/modals/scheduling-conflict.hbs +47 -0
  56. package/addon/components/modals/scheduling-conflict.js +53 -0
  57. package/addon/components/modals/send-work-order.hbs +91 -0
  58. package/addon/components/modals/send-work-order.js +3 -0
  59. package/addon/components/modals/service-area-form.hbs +1 -6
  60. package/addon/components/modals/set-driver-availability.hbs +50 -0
  61. package/addon/components/modals/set-driver-availability.js +57 -0
  62. package/addon/components/modals/update-order-activity.hbs +13 -9
  63. package/addon/components/modals/user-form.hbs +1 -5
  64. package/addon/components/modals/vehicle-form.hbs +17 -102
  65. package/addon/components/modals/vendor-form.hbs +15 -82
  66. package/addon/components/orchestrator/card-fields-settings.hbs +76 -0
  67. package/addon/components/orchestrator/card-fields-settings.js +134 -0
  68. package/addon/components/orchestrator/order-pool.hbs +264 -0
  69. package/addon/components/orchestrator/order-pool.js +394 -0
  70. package/addon/components/orchestrator/phase-builder.hbs +162 -0
  71. package/addon/components/orchestrator/phase-builder.js +162 -0
  72. package/addon/components/orchestrator/plan-viewer.hbs +278 -0
  73. package/addon/components/orchestrator/plan-viewer.js +342 -0
  74. package/addon/components/orchestrator/resource-panel.hbs +301 -0
  75. package/addon/components/orchestrator/resource-panel.js +106 -0
  76. package/addon/components/orchestrator-workbench.hbs +318 -0
  77. package/addon/components/orchestrator-workbench.js +1088 -0
  78. package/addon/components/order/details/custom-fields.hbs +10 -1
  79. package/addon/components/order/details/detail.hbs +37 -2
  80. package/addon/components/order/details/detail.js +0 -1
  81. package/addon/components/order/details/integrated-vendor-details.hbs +4 -4
  82. package/addon/components/order/details/notes.hbs +1 -7
  83. package/addon/components/order/details/route.hbs +1 -5
  84. package/addon/components/order/form/details.hbs +44 -10
  85. package/addon/components/order/form/details.js +57 -0
  86. package/addon/components/order/form/notes.hbs +1 -7
  87. package/addon/components/order/form/payload.hbs +1 -7
  88. package/addon/components/order/form/route.hbs +3 -15
  89. package/addon/components/order/header.hbs +1 -7
  90. package/addon/components/order/route-editor.hbs +4 -25
  91. package/addon/components/order/schedule-card.hbs +102 -95
  92. package/addon/components/order/schedule-card.js +8 -3
  93. package/addon/components/order-config-manager/details.hbs +2 -10
  94. package/addon/components/order-config-manager/entities.hbs +1 -7
  95. package/addon/components/order-config-manager.hbs +1 -6
  96. package/addon/components/part/card.hbs +49 -0
  97. package/addon/components/part/card.js +6 -0
  98. package/addon/components/part/details.hbs +102 -56
  99. package/addon/components/part/form.hbs +131 -56
  100. package/addon/components/part/form.js +78 -11
  101. package/addon/components/part/panel-header.hbs +36 -0
  102. package/addon/components/part/panel-header.js +2 -0
  103. package/addon/components/place/form.hbs +1 -7
  104. package/addon/components/sensor/details.hbs +1 -1
  105. package/addon/components/sensor/form.hbs +5 -3
  106. package/addon/components/sensor/panel-header.hbs +8 -1
  107. package/addon/components/service-area/form.hbs +1 -6
  108. package/addon/components/service-rate/form.hbs +12 -60
  109. package/addon/components/telematic/form.hbs +6 -2
  110. package/addon/components/vehicle/details/maintenance-history.hbs +42 -0
  111. package/addon/components/vehicle/details/maintenance-history.js +32 -0
  112. package/addon/components/vehicle/details/schedules.hbs +40 -0
  113. package/addon/components/vehicle/details/schedules.js +32 -0
  114. package/addon/components/vehicle/details/work-orders.hbs +42 -0
  115. package/addon/components/vehicle/details/work-orders.js +32 -0
  116. package/addon/components/vehicle/details.hbs +52 -0
  117. package/addon/components/vehicle/form.hbs +51 -0
  118. package/addon/components/vehicle/panel-header.hbs +19 -49
  119. package/addon/components/warranty/details.hbs +3 -2
  120. package/addon/components/warranty/form.hbs +3 -17
  121. package/addon/components/work-order/details.hbs +135 -40
  122. package/addon/components/work-order/form.hbs +178 -45
  123. package/addon/components/work-order/form.js +197 -4
  124. package/addon/components/work-order/panel-header.hbs +31 -0
  125. package/addon/components/work-order/panel-header.js +2 -0
  126. package/addon/controllers/connectivity/devices/index/details.js +1 -1
  127. package/addon/controllers/maintenance/equipment/index/details/index.js +0 -1
  128. package/addon/controllers/maintenance/equipment/index/details.js +36 -1
  129. package/addon/controllers/maintenance/equipment/index/edit.js +56 -1
  130. package/addon/controllers/maintenance/equipment/index/new.js +32 -1
  131. package/addon/controllers/maintenance/equipment/index.js +127 -113
  132. package/addon/controllers/maintenance/maintenances/index/details/index.js +3 -0
  133. package/addon/controllers/maintenance/maintenances/index/details.js +54 -0
  134. package/addon/controllers/maintenance/maintenances/index/edit.js +68 -0
  135. package/addon/controllers/maintenance/maintenances/index/new.js +34 -0
  136. package/addon/controllers/maintenance/maintenances/index.js +191 -0
  137. package/addon/controllers/maintenance/parts/index/details/index.js +0 -1
  138. package/addon/controllers/maintenance/parts/index/details.js +36 -1
  139. package/addon/controllers/maintenance/parts/index/edit.js +56 -1
  140. package/addon/controllers/maintenance/parts/index/new.js +32 -1
  141. package/addon/controllers/maintenance/parts/index.js +135 -113
  142. package/addon/controllers/maintenance/schedules/index/details.js +115 -0
  143. package/addon/controllers/maintenance/schedules/index/edit.js +41 -0
  144. package/addon/controllers/maintenance/schedules/index/new.js +33 -0
  145. package/addon/controllers/maintenance/schedules/index.js +280 -0
  146. package/addon/controllers/maintenance/work-orders/index/details.js +41 -1
  147. package/addon/controllers/maintenance/work-orders/index/edit.js +67 -1
  148. package/addon/controllers/maintenance/work-orders/index/new.js +43 -1
  149. package/addon/controllers/maintenance/work-orders/index.js +105 -113
  150. package/addon/controllers/management/drivers/index/details.js +6 -1
  151. package/addon/controllers/management/vehicles/index/details.js +65 -0
  152. package/addon/controllers/management/vehicles/index.js +18 -0
  153. package/addon/controllers/operations/orchestrator.js +10 -0
  154. package/addon/controllers/operations/orders/index.js +6 -0
  155. package/addon/controllers/operations/scheduler/fleet-schedule.js +341 -0
  156. package/addon/controllers/operations/scheduler/index.js +799 -275
  157. package/addon/controllers/operations/scheduler.js +21 -0
  158. package/addon/controllers/settings/orchestrator.js +70 -0
  159. package/addon/controllers/settings/scheduling.js +155 -0
  160. package/addon/extension.js +19 -0
  161. package/addon/instance-initializers/register-vroom-allocation.js +27 -0
  162. package/addon/models/maintenance-schedule.js +61 -0
  163. package/addon/routes/maintenance/equipment/index/details.js +27 -1
  164. package/addon/routes/maintenance/equipment/index/edit.js +27 -1
  165. package/addon/routes/maintenance/maintenances/index/details/index.js +3 -0
  166. package/addon/routes/maintenance/maintenances/index/details.js +29 -0
  167. package/addon/routes/maintenance/maintenances/index/edit.js +29 -0
  168. package/addon/routes/maintenance/maintenances/index/new.js +3 -0
  169. package/addon/routes/maintenance/maintenances/index.js +23 -0
  170. package/addon/routes/maintenance/maintenances.js +3 -0
  171. package/addon/routes/maintenance/parts/index/details.js +27 -1
  172. package/addon/routes/maintenance/parts/index/edit.js +27 -1
  173. package/addon/routes/maintenance/schedules/index/details/index.js +2 -0
  174. package/addon/routes/maintenance/schedules/index/details/work-orders.js +11 -0
  175. package/addon/routes/maintenance/schedules/index/details.js +25 -0
  176. package/addon/routes/maintenance/schedules/index/edit.js +25 -0
  177. package/addon/routes/maintenance/schedules/index/new.js +2 -0
  178. package/addon/routes/maintenance/schedules/index.js +21 -0
  179. package/addon/routes/maintenance/schedules.js +2 -0
  180. package/addon/routes/maintenance/work-orders/index/details.js +27 -1
  181. package/addon/routes/maintenance/work-orders/index/edit.js +27 -1
  182. package/addon/routes/management/vehicles/index/details/maintenance-history.js +3 -0
  183. package/addon/routes/management/vehicles/index/details/schedules.js +3 -0
  184. package/addon/routes/management/vehicles/index/details/work-orders.js +3 -0
  185. package/addon/routes/operations/orchestrator.js +23 -0
  186. package/addon/routes/operations/scheduler/fleet-schedule.js +28 -0
  187. package/addon/routes/operations/scheduler/index.js +48 -26
  188. package/addon/routes/operations/scheduler.js +14 -1
  189. package/addon/routes/settings/orchestrator.js +27 -0
  190. package/addon/routes/settings/scheduling.js +3 -0
  191. package/addon/routes.js +31 -1
  192. package/addon/services/driver-actions.js +40 -7
  193. package/addon/services/driver-scheduling.js +4 -1
  194. package/addon/services/equipment-actions.js +15 -5
  195. package/addon/services/leaflet-map-manager.js +14 -6
  196. package/addon/services/maintenance-actions.js +17 -14
  197. package/addon/services/maintenance-schedule-actions.js +118 -0
  198. package/addon/services/orchestration-engine-interface.js +49 -0
  199. package/addon/services/orchestration-engine.js +74 -0
  200. package/addon/services/order-actions.js +15 -0
  201. package/addon/services/order-allocation.js +116 -0
  202. package/addon/services/part-actions.js +12 -2
  203. package/addon/services/scheduling.js +316 -0
  204. package/addon/services/vehicle-actions.js +70 -7
  205. package/addon/services/vroom-allocation-engine.js +45 -0
  206. package/addon/services/work-order-actions.js +79 -0
  207. package/addon/styles/fleetops-engine.css +1658 -0
  208. package/addon/templates/analytics/reports/index/edit.hbs +1 -1
  209. package/addon/templates/analytics/reports/index/new.hbs +1 -1
  210. package/addon/templates/application.hbs +6 -1
  211. package/addon/templates/connectivity/devices/index/details/events.hbs +0 -1
  212. package/addon/templates/connectivity/devices.hbs +0 -1
  213. package/addon/templates/connectivity/events/index/details.hbs +0 -1
  214. package/addon/templates/connectivity/events.hbs +0 -1
  215. package/addon/templates/connectivity/sensors.hbs +0 -1
  216. package/addon/templates/connectivity/telematics/index/details/devices.hbs +0 -1
  217. package/addon/templates/connectivity/telematics/index/details/events.hbs +0 -1
  218. package/addon/templates/connectivity/telematics/index/details/sensors.hbs +0 -1
  219. package/addon/templates/connectivity/telematics.hbs +0 -1
  220. package/addon/templates/connectivity/tracking.hbs +0 -1
  221. package/addon/templates/connectivity.hbs +0 -1
  222. package/addon/templates/maintenance/equipment/index/details/index.hbs +1 -2
  223. package/addon/templates/maintenance/equipment/index/details.hbs +15 -2
  224. package/addon/templates/maintenance/equipment/index/edit.hbs +12 -2
  225. package/addon/templates/maintenance/equipment/index/new.hbs +1 -2
  226. package/addon/templates/maintenance/equipment/index.hbs +48 -13
  227. package/addon/templates/maintenance/equipment.hbs +0 -1
  228. package/addon/templates/maintenance/maintenances/index/details/index.hbs +1 -0
  229. package/addon/templates/maintenance/maintenances/index/details.hbs +15 -0
  230. package/addon/templates/maintenance/maintenances/index/edit.hbs +12 -0
  231. package/addon/templates/maintenance/maintenances/index/new.hbs +11 -0
  232. package/addon/templates/maintenance/maintenances/index.hbs +14 -0
  233. package/addon/templates/maintenance/maintenances.hbs +1 -0
  234. package/addon/templates/maintenance/parts/index/details/index.hbs +1 -2
  235. package/addon/templates/maintenance/parts/index/details.hbs +15 -2
  236. package/addon/templates/maintenance/parts/index/edit.hbs +12 -2
  237. package/addon/templates/maintenance/parts/index/new.hbs +1 -2
  238. package/addon/templates/maintenance/parts/index.hbs +48 -13
  239. package/addon/templates/maintenance/parts.hbs +0 -1
  240. package/addon/templates/maintenance/schedules/index/details/index.hbs +1 -0
  241. package/addon/templates/maintenance/schedules/index/details/work-orders.hbs +39 -0
  242. package/addon/templates/maintenance/schedules/index/details.hbs +14 -0
  243. package/addon/templates/maintenance/schedules/index/edit.hbs +12 -0
  244. package/addon/templates/maintenance/schedules/index/new.hbs +11 -0
  245. package/addon/templates/maintenance/schedules/index.hbs +40 -0
  246. package/addon/templates/maintenance/schedules.hbs +1 -0
  247. package/addon/templates/maintenance/work-orders/index/details.hbs +2 -1
  248. package/addon/templates/maintenance/work-orders/index/edit.hbs +2 -4
  249. package/addon/templates/maintenance/work-orders/index/new.hbs +1 -2
  250. package/addon/templates/maintenance/work-orders.hbs +0 -1
  251. package/addon/templates/management/contacts/customers/edit.hbs +1 -2
  252. package/addon/templates/management/contacts/customers/new.hbs +1 -2
  253. package/addon/templates/management/contacts/customers.hbs +1 -1
  254. package/addon/templates/management/contacts/index/edit.hbs +1 -2
  255. package/addon/templates/management/contacts/index/new.hbs +1 -2
  256. package/addon/templates/management/drivers/index/details/orders.hbs +0 -1
  257. package/addon/templates/management/drivers/index/edit.hbs +1 -2
  258. package/addon/templates/management/drivers/index/new.hbs +1 -2
  259. package/addon/templates/management/fleets/index/edit.hbs +1 -2
  260. package/addon/templates/management/fleets/index/new.hbs +1 -2
  261. package/addon/templates/management/fleets/index.hbs +1 -2
  262. package/addon/templates/management/fuel-reports/index/edit.hbs +1 -2
  263. package/addon/templates/management/fuel-reports/index/new.hbs +1 -2
  264. package/addon/templates/management/fuel-reports/index.hbs +1 -2
  265. package/addon/templates/management/issues/index/edit.hbs +1 -2
  266. package/addon/templates/management/issues/index/new.hbs +1 -2
  267. package/addon/templates/management/issues/index.hbs +1 -2
  268. package/addon/templates/management/places/index/details/activity.hbs +0 -1
  269. package/addon/templates/management/places/index/details/comments.hbs +0 -1
  270. package/addon/templates/management/places/index/details/documents.hbs +0 -1
  271. package/addon/templates/management/places/index/details/map.hbs +0 -1
  272. package/addon/templates/management/places/index/details/operations.hbs +0 -1
  273. package/addon/templates/management/places/index/details/performance.hbs +0 -1
  274. package/addon/templates/management/places/index/details/rules.hbs +0 -1
  275. package/addon/templates/management/vehicles/index/details/equipment.hbs +0 -1
  276. package/addon/templates/management/vehicles/index/details/maintenance-history.hbs +2 -0
  277. package/addon/templates/management/vehicles/index/details/schedules.hbs +2 -0
  278. package/addon/templates/management/vehicles/index/details/work-orders.hbs +2 -0
  279. package/addon/templates/management/vehicles/index/details.hbs +1 -1
  280. package/addon/templates/management/vehicles/index/edit.hbs +1 -2
  281. package/addon/templates/management/vehicles/index/new.hbs +1 -2
  282. package/addon/templates/management/vendors/index/edit.hbs +1 -2
  283. package/addon/templates/management/vendors/index/new.hbs +1 -2
  284. package/addon/templates/management/vendors/index.hbs +1 -2
  285. package/addon/templates/management/vendors/integrated.hbs +1 -2
  286. package/addon/templates/operations/orchestrator.hbs +1 -0
  287. package/addon/templates/operations/orders/index.hbs +6 -1
  288. package/addon/templates/operations/scheduler/fleet-schedule.hbs +41 -0
  289. package/addon/templates/operations/scheduler/index.hbs +147 -88
  290. package/addon/templates/operations/scheduler.hbs +7 -1
  291. package/addon/templates/settings/avatars.hbs +1 -1
  292. package/addon/templates/settings/orchestrator.hbs +65 -0
  293. package/addon/templates/settings/payments/index.hbs +1 -5
  294. package/addon/templates/settings/scheduling.hbs +82 -0
  295. package/addon/utils/create-full-calendar-event-from-order.js +52 -14
  296. package/addon/utils/create-full-calendar-event-from-schedule-item.js +50 -0
  297. package/addon/utils/fleet-ops-options.js +254 -0
  298. package/addon/utils/route-colors.js +99 -0
  299. package/addon/utils/to-calendar-date.js +70 -0
  300. package/app/components/driver/schedule.js +1 -0
  301. package/app/components/maintenance/cost-panel.js +1 -0
  302. package/app/components/maintenance/panel-header.js +1 -0
  303. package/app/components/maintenance-schedule/details.js +1 -0
  304. package/app/components/maintenance-schedule/form.js +1 -0
  305. package/app/components/modals/add-driver-shift.js +1 -0
  306. package/app/components/modals/bulk-assign-orders.js +1 -0
  307. package/app/components/modals/driver-shift.js +1 -0
  308. package/app/components/modals/orchestrator-import.js +1 -0
  309. package/app/components/modals/scheduling-conflict.js +1 -0
  310. package/app/components/modals/send-work-order.js +1 -0
  311. package/app/components/modals/set-driver-availability.js +1 -0
  312. package/app/components/orchestrator/card-fields-settings.js +1 -0
  313. package/app/components/orchestrator/order-pool.js +1 -0
  314. package/app/components/orchestrator/phase-builder.js +1 -0
  315. package/app/components/orchestrator/plan-viewer.js +1 -0
  316. package/app/components/orchestrator/resource-panel.js +1 -0
  317. package/app/components/orchestrator-workbench.js +1 -0
  318. package/app/components/vehicle/details/maintenance-history.js +1 -0
  319. package/app/components/vehicle/details/schedules.js +1 -0
  320. package/app/components/vehicle/details/work-orders.js +1 -0
  321. package/app/controllers/operations/orchestrator.js +1 -0
  322. package/app/controllers/settings/orchestrator.js +1 -0
  323. package/app/controllers/settings/scheduling.js +1 -0
  324. package/app/routes/operations/orchestrator.js +1 -0
  325. package/app/routes/settings/orchestrator.js +1 -0
  326. package/app/routes/settings/scheduling.js +1 -0
  327. package/app/services/maintenance-schedule-actions.js +1 -0
  328. package/app/services/orchestration-engine-interface.js +1 -0
  329. package/app/services/orchestration-engine.js +1 -0
  330. package/app/services/order-allocation.js +1 -0
  331. package/app/services/scheduling.js +1 -0
  332. package/app/services/vroom-allocation-engine.js +1 -0
  333. package/app/templates/settings/scheduling.js +1 -0
  334. package/app/utils/create-full-calendar-event-from-schedule-item.js +1 -0
  335. package/app/utils/route-colors.js +1 -0
  336. package/composer.json +4 -2
  337. package/extension.json +1 -1
  338. package/package.json +6 -5
  339. package/server/config/fleetops.php +20 -1
  340. package/server/migrations/2025_08_28_054927_create_parts_table.php +2 -2
  341. package/server/migrations/2025_08_28_054932_add_public_id_to_maintenance_tables.php +45 -0
  342. package/server/migrations/2025_09_01_000001_create_maintenance_schedules_table.php +88 -0
  343. package/server/migrations/2026_04_01_000001_fix_monetary_columns_in_parts_table.php +48 -0
  344. package/server/migrations/2026_04_01_000003_add_photo_uuid_to_equipment_and_parts_tables.php +61 -0
  345. package/server/migrations/2026_04_01_000004_add_public_id_to_equipments_table.php +38 -0
  346. package/server/migrations/2026_04_01_000005_add_missing_columns_to_parts_table.php +67 -0
  347. package/server/migrations/2026_04_04_000001_add_reminder_offsets_to_maintenance_schedules.php +44 -0
  348. package/server/migrations/2026_04_08_000001_add_orchestrator_columns_to_vehicles_table.php +53 -0
  349. package/server/migrations/2026_04_08_000002_add_orchestrator_columns_to_drivers_table.php +41 -0
  350. package/server/migrations/2026_04_08_000003_add_orchestrator_columns_to_orders_table.php +38 -0
  351. package/server/migrations/2026_04_08_000004_add_orchestrator_columns_to_payloads_table.php +38 -0
  352. package/server/migrations/2026_04_08_000005_add_orchestrator_columns_to_waypoints_table.php +38 -0
  353. package/server/migrations/2026_04_09_000001_create_manifests_table.php +48 -0
  354. package/server/migrations/2026_04_09_000002_create_manifest_stops_table.php +48 -0
  355. package/server/migrations/2026_04_09_000003_add_manifest_uuid_to_orders_table.php +28 -0
  356. package/server/migrations/2026_04_13_000001_add_pod_notes_columns_to_waypoints_table.php +39 -0
  357. package/server/migrations/2026_04_14_000001_drop_redundant_capacity_columns_from_payloads_table.php +42 -0
  358. package/server/migrations/2026_04_14_000002_rename_capacity_columns_on_vehicles_table.php +48 -0
  359. package/server/resources/views/mail/maintenance-schedule-reminder.blade.php +59 -0
  360. package/server/resources/views/mail/work-order-dispatched.blade.php +67 -0
  361. package/server/src/Auth/Schemas/FleetOps.php +44 -0
  362. package/server/src/Console/Commands/ProcessMaintenanceTriggers.php +150 -0
  363. package/server/src/Console/Commands/SendMaintenanceReminders.php +128 -0
  364. package/server/src/Http/Controllers/Api/v1/OrderController.php +15 -2
  365. package/server/src/Http/Controllers/Api/v1/VehicleController.php +18 -2
  366. package/server/src/Http/Controllers/Internal/v1/DriverController.php +1 -0
  367. package/server/src/Http/Controllers/Internal/v1/EquipmentController.php +27 -0
  368. package/server/src/Http/Controllers/Internal/v1/LiveController.php +9 -2
  369. package/server/src/Http/Controllers/Internal/v1/MaintenanceController.php +165 -0
  370. package/server/src/Http/Controllers/Internal/v1/MaintenanceScheduleController.php +304 -0
  371. package/server/src/Http/Controllers/Internal/v1/ManifestController.php +138 -0
  372. package/server/src/Http/Controllers/Internal/v1/OrchestrationController.php +975 -0
  373. package/server/src/Http/Controllers/Internal/v1/OrderController.php +42 -0
  374. package/server/src/Http/Controllers/Internal/v1/PartController.php +27 -0
  375. package/server/src/Http/Controllers/Internal/v1/SettingController.php +118 -0
  376. package/server/src/Http/Controllers/Internal/v1/Traits/DriverSchedulingTrait.php +214 -0
  377. package/server/src/Http/Controllers/Internal/v1/WorkOrderController.php +68 -0
  378. package/server/src/Http/Resources/v1/Driver.php +1 -0
  379. package/server/src/Http/Resources/v1/Maintenance.php +138 -0
  380. package/server/src/Http/Resources/v1/MaintenanceSchedule.php +137 -0
  381. package/server/src/Http/Resources/v1/Orchestrator/Order.php +116 -0
  382. package/server/src/Http/Resources/v1/Order.php +7 -4
  383. package/server/src/Http/Resources/v1/Waypoint.php +7 -0
  384. package/server/src/Http/Resources/v1/WorkOrder.php +136 -0
  385. package/server/src/Imports/EquipmentImport.php +32 -0
  386. package/server/src/Imports/MaintenanceImport.php +32 -0
  387. package/server/src/Imports/MaintenanceScheduleImport.php +32 -0
  388. package/server/src/Imports/PartImport.php +32 -0
  389. package/server/src/Imports/WorkOrderImport.php +32 -0
  390. package/server/src/Jobs/ProcessAllocationJob.php +119 -0
  391. package/server/src/Listeners/HandleDeliveryCompletion.php +47 -0
  392. package/server/src/Listeners/NotifyDriverOnShiftChange.php +63 -0
  393. package/server/src/Mail/MaintenanceScheduleReminder.php +68 -0
  394. package/server/src/Mail/WorkOrderDispatched.php +58 -0
  395. package/server/src/Models/Asset.php +2 -2
  396. package/server/src/Models/Device.php +1 -1
  397. package/server/src/Models/Driver.php +82 -4
  398. package/server/src/Models/Equipment.php +62 -2
  399. package/server/src/Models/Maintenance.php +127 -9
  400. package/server/src/Models/MaintenanceSchedule.php +353 -0
  401. package/server/src/Models/Manifest.php +214 -0
  402. package/server/src/Models/ManifestStop.php +162 -0
  403. package/server/src/Models/Order.php +70 -0
  404. package/server/src/Models/OrderConfig.php +5 -2
  405. package/server/src/Models/Part.php +69 -3
  406. package/server/src/Models/Place.php +1 -1
  407. package/server/src/Models/Sensor.php +1 -1
  408. package/server/src/Models/ServiceQuote.php +1 -1
  409. package/server/src/Models/Vehicle.php +18 -1
  410. package/server/src/Models/Warranty.php +1 -1
  411. package/server/src/Models/Waypoint.php +7 -1
  412. package/server/src/Models/WorkOrder.php +122 -12
  413. package/server/src/Notifications/DriverShiftChanged.php +110 -0
  414. package/server/src/Observers/WorkOrderObserver.php +107 -0
  415. package/server/src/Orchestration/Contracts/OrchestrationEngineInterface.php +63 -0
  416. package/server/src/Orchestration/Engines/DriverAssignmentEngine.php +265 -0
  417. package/server/src/Orchestration/Engines/GreedyOrchestrationEngine.php +155 -0
  418. package/server/src/Orchestration/Engines/RouteSequencingEngine.php +272 -0
  419. package/server/src/Orchestration/Engines/VroomOrchestrationEngine.php +192 -0
  420. package/server/src/Orchestration/OrchestrationEngineRegistry.php +83 -0
  421. package/server/src/Orchestration/Support/OrchestrationPayloadBuilder.php +380 -0
  422. package/server/src/Providers/EventServiceProvider.php +7 -1
  423. package/server/src/Providers/FleetOpsServiceProvider.php +42 -15
  424. package/server/src/routes.php +65 -4
  425. package/translations/ar-ae.yml +44 -12
  426. package/translations/bg-bg.yaml +51 -10
  427. package/translations/en-us.yaml +444 -1
  428. package/translations/fr-fr.yaml +51 -10
  429. package/translations/mn-mn.yaml +51 -10
  430. package/translations/pt-br.yaml +51 -10
  431. package/translations/ru-ru.yaml +51 -10
  432. package/translations/vi-vn.yaml +48 -12
@@ -23,21 +23,22 @@ class FleetOpsServiceProvider extends CoreServiceProvider
23
23
  * @var array
24
24
  */
25
25
  public $observers = [
26
- \Fleetbase\FleetOps\Models\Order::class => \Fleetbase\FleetOps\Observers\OrderObserver::class,
27
- \Fleetbase\FleetOps\Models\Payload::class => \Fleetbase\FleetOps\Observers\PayloadObserver::class,
28
- \Fleetbase\FleetOps\Models\Place::class => \Fleetbase\FleetOps\Observers\PlaceObserver::class,
29
- \Fleetbase\FleetOps\Models\ServiceRate::class => \Fleetbase\FleetOps\Observers\ServiceRateObserver::class,
30
- \Fleetbase\FleetOps\Models\PurchaseRate::class => \Fleetbase\FleetOps\Observers\PurchaseRateObserver::class,
31
- \Fleetbase\FleetOps\Models\ServiceArea::class => \Fleetbase\FleetOps\Observers\ServiceAreaObserver::class,
32
- \Fleetbase\FleetOps\Models\TrackingNumber::class => \Fleetbase\FleetOps\Observers\TrackingNumberObserver::class,
33
- \Fleetbase\FleetOps\Models\Driver::class => \Fleetbase\FleetOps\Observers\DriverObserver::class,
34
- \Fleetbase\FleetOps\Models\Vehicle::class => \Fleetbase\FleetOps\Observers\VehicleObserver::class,
35
- \Fleetbase\FleetOps\Models\Fleet::class => \Fleetbase\FleetOps\Observers\FleetObserver::class,
36
- \Fleetbase\FleetOps\Models\Contact::class => \Fleetbase\FleetOps\Observers\ContactObserver::class,
37
- \Fleetbase\Models\User::class => \Fleetbase\FleetOps\Observers\UserObserver::class,
38
- \Fleetbase\Models\Company::class => \Fleetbase\FleetOps\Observers\CompanyObserver::class,
39
- \Fleetbase\Models\CompanyUser::class => \Fleetbase\FleetOps\Observers\CompanyUserObserver::class,
40
- \Fleetbase\Models\Category::class => \Fleetbase\FleetOps\Observers\CategoryObserver::class,
26
+ \Fleetbase\FleetOps\Models\Order::class => \Fleetbase\FleetOps\Observers\OrderObserver::class,
27
+ \Fleetbase\FleetOps\Models\Payload::class => \Fleetbase\FleetOps\Observers\PayloadObserver::class,
28
+ \Fleetbase\FleetOps\Models\Place::class => \Fleetbase\FleetOps\Observers\PlaceObserver::class,
29
+ \Fleetbase\FleetOps\Models\ServiceRate::class => \Fleetbase\FleetOps\Observers\ServiceRateObserver::class,
30
+ \Fleetbase\FleetOps\Models\PurchaseRate::class => \Fleetbase\FleetOps\Observers\PurchaseRateObserver::class,
31
+ \Fleetbase\FleetOps\Models\ServiceArea::class => \Fleetbase\FleetOps\Observers\ServiceAreaObserver::class,
32
+ \Fleetbase\FleetOps\Models\TrackingNumber::class => \Fleetbase\FleetOps\Observers\TrackingNumberObserver::class,
33
+ \Fleetbase\FleetOps\Models\Driver::class => \Fleetbase\FleetOps\Observers\DriverObserver::class,
34
+ \Fleetbase\FleetOps\Models\Vehicle::class => \Fleetbase\FleetOps\Observers\VehicleObserver::class,
35
+ \Fleetbase\FleetOps\Models\Fleet::class => \Fleetbase\FleetOps\Observers\FleetObserver::class,
36
+ \Fleetbase\FleetOps\Models\Contact::class => \Fleetbase\FleetOps\Observers\ContactObserver::class,
37
+ \Fleetbase\Models\User::class => \Fleetbase\FleetOps\Observers\UserObserver::class,
38
+ \Fleetbase\Models\Company::class => \Fleetbase\FleetOps\Observers\CompanyObserver::class,
39
+ \Fleetbase\Models\CompanyUser::class => \Fleetbase\FleetOps\Observers\CompanyUserObserver::class,
40
+ \Fleetbase\Models\Category::class => \Fleetbase\FleetOps\Observers\CategoryObserver::class,
41
+ \Fleetbase\FleetOps\Models\WorkOrder::class => \Fleetbase\FleetOps\Observers\WorkOrderObserver::class,
41
42
  ];
42
43
 
43
44
  /**
@@ -61,6 +62,8 @@ class FleetOpsServiceProvider extends CoreServiceProvider
61
62
  \Fleetbase\FleetOps\Console\Commands\SendDriverNotification::class,
62
63
  \Fleetbase\FleetOps\Console\Commands\ReplayVehicleLocations::class,
63
64
  \Fleetbase\FleetOps\Console\Commands\TestEmail::class,
65
+ \Fleetbase\FleetOps\Console\Commands\ProcessMaintenanceTriggers::class,
66
+ \Fleetbase\FleetOps\Console\Commands\SendMaintenanceReminders::class,
64
67
  ];
65
68
 
66
69
  /**
@@ -80,6 +83,13 @@ class FleetOpsServiceProvider extends CoreServiceProvider
80
83
  {
81
84
  $this->app->register(CoreServiceProvider::class);
82
85
  $this->app->register(ReportSchemaServiceProvider::class);
86
+
87
+ // Register the OrchestrationEngineRegistry as a singleton so that engines
88
+ // registered from any service provider share the same instance.
89
+ $this->app->singleton(
90
+ \Fleetbase\FleetOps\Orchestration\OrchestrationEngineRegistry::class,
91
+ fn () => new \Fleetbase\FleetOps\Orchestration\OrchestrationEngineRegistry()
92
+ );
83
93
  }
84
94
 
85
95
  /**
@@ -98,9 +108,26 @@ class FleetOpsServiceProvider extends CoreServiceProvider
98
108
  $schedule->command('fleetops:dispatch-adhoc')->everyMinute()->withoutOverlapping()->storeOutputInDb();
99
109
  $schedule->command('fleetops:update-estimations')->everyTenMinutes()->withoutOverlapping();
100
110
  $schedule->command('fleetops:purge-service-quotes')->daily()->withoutOverlapping();
111
+ $schedule->command('fleetops:process-maintenance-triggers')->daily()->withoutOverlapping()->storeOutputInDb();
112
+ $schedule->command('fleetops:send-maintenance-reminders')->daily()->withoutOverlapping()->storeOutputInDb();
101
113
  });
102
114
  $this->registerNotifications();
103
115
  $this->registerExpansionsFrom(__DIR__ . '/../Expansions');
116
+
117
+ // Register built-in orchestration engines.
118
+ // Third-party engines can register themselves by resolving the
119
+ // OrchestrationEngineRegistry singleton from their own service providers.
120
+ $this->app->resolving(
121
+ \Fleetbase\FleetOps\Orchestration\OrchestrationEngineRegistry::class,
122
+ function (\Fleetbase\FleetOps\Orchestration\OrchestrationEngineRegistry $registry) {
123
+ if (!$registry->has('vroom')) {
124
+ $registry->register(new \Fleetbase\FleetOps\Orchestration\Engines\VroomOrchestrationEngine());
125
+ }
126
+ if (!$registry->has('greedy')) {
127
+ $registry->register(new \Fleetbase\FleetOps\Orchestration\Engines\GreedyOrchestrationEngine());
128
+ }
129
+ }
130
+ );
104
131
  $this->loadRoutesFrom(__DIR__ . '/../routes.php');
105
132
  $this->loadMigrationsFrom(__DIR__ . '/../../migrations');
106
133
  $this->loadViewsFrom(__DIR__ . '/../../resources/views', 'fleetops');
@@ -278,6 +278,11 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
278
278
  $router->match(['get', 'post'], 'export', $controller('export'));
279
279
  $router->delete('bulk-delete', $controller('bulkDelete'));
280
280
  $router->post('import', $controller('import'));
281
+ // Driver scheduling endpoints
282
+ $router->get('{id}/schedule-items', $controller('scheduleItems'));
283
+ $router->get('{id}/availabilities', $controller('availabilities'));
284
+ $router->get('{id}/hos-status', $controller('hosStatus'));
285
+ $router->get('{id}/active-shift', $controller('activeShift'));
281
286
  }
282
287
  );
283
288
  $router->fleetbaseRoutes('entities');
@@ -337,6 +342,8 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
337
342
  $router->patch('cancel', $controller('cancel'));
338
343
  $router->patch('dispatch', $controller('dispatchOrder'));
339
344
  $router->patch('start', $controller('start'));
345
+ // Scheduler: set scheduled_at + driver without triggering dispatch
346
+ $router->patch('schedule', $controller('scheduleOrder'));
340
347
  $router->delete('bulk-delete', $controller('bulkDelete'));
341
348
  $router->match(['get', 'post'], 'export', $controller('export'));
342
349
  }
@@ -423,10 +430,30 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
423
430
  $router->post('{id}/test-connection', $controller('testConnection'));
424
431
  $router->post('{key}/test-credentials', $controller('testCredentials'));
425
432
  });
426
- $router->fleetbaseRoutes('work-orders');
427
- $router->fleetbaseRoutes('maintenance');
428
- $router->fleetbaseRoutes('equipment');
429
- $router->fleetbaseRoutes('parts');
433
+ $router->fleetbaseRoutes('maintenance-schedules', function ($router, $controller) {
434
+ $router->post('import', $controller('import'));
435
+ $router->post('{id}/pause', $controller('pause'));
436
+ $router->post('{id}/resume', $controller('resume'));
437
+ $router->post('{id}/trigger', $controller('trigger'));
438
+ $router->get('calendar-feed', $controller('calendarFeed'));
439
+ $router->get('{id}/ical', $controller('ical'));
440
+ });
441
+ $router->fleetbaseRoutes('work-orders', function ($router, $controller) {
442
+ $router->post('import', $controller('import'));
443
+ $router->post('{id}/send', $controller('sendEmail'));
444
+ });
445
+ $router->fleetbaseRoutes('maintenances', function ($router, $controller) {
446
+ $router->post('import', $controller('import'));
447
+ $router->post('{id}/line-items', $controller('addLineItem'));
448
+ $router->put('{id}/line-items/{index}', $controller('updateLineItem'));
449
+ $router->delete('{id}/line-items/{index}', $controller('removeLineItem'));
450
+ });
451
+ $router->fleetbaseRoutes('equipment', function ($router, $controller) {
452
+ $router->post('import', $controller('import'));
453
+ });
454
+ $router->fleetbaseRoutes('parts', function ($router, $controller) {
455
+ $router->post('import', $controller('import'));
456
+ });
430
457
  $router->fleetbaseRoutes('warranties');
431
458
  $router->group(
432
459
  ['prefix' => 'query'],
@@ -503,6 +530,12 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
503
530
  $router->post('notification-settings', 'SettingController@saveNotificationSettings');
504
531
  $router->get('routing-settings', 'SettingController@getRoutingSettings');
505
532
  $router->post('routing-settings', 'SettingController@saveRoutingSettings');
533
+ $router->get('scheduling-settings', 'SettingController@getSchedulingSettings');
534
+ $router->post('scheduling-settings', 'SettingController@saveSchedulingSettings');
535
+ $router->get('orchestrator-settings', 'SettingController@getOrchestratorSettings');
536
+ $router->post('orchestrator-settings', 'SettingController@saveOrchestratorSettings');
537
+ $router->get('orchestrator-card-fields', 'SettingController@getOrchestratorCardFields');
538
+ $router->post('orchestrator-card-fields', 'SettingController@saveOrchestratorCardFields');
506
539
  }
507
540
  );
508
541
  $router->group(
@@ -511,6 +544,34 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
511
544
  $router->get('/', 'MetricsController@all');
512
545
  }
513
546
  );
547
+ $router->group(
548
+ ['prefix' => 'orchestrator'],
549
+ function ($router) {
550
+ $router->get('orders', 'OrchestrationController@orders');
551
+ $router->post('run', 'OrchestrationController@run');
552
+ $router->post('commit', 'OrchestrationController@commit');
553
+ $router->get('preview', 'OrchestrationController@preview');
554
+ $router->get('engines', 'OrchestrationController@engines');
555
+ $router->post('import-orders', 'OrchestrationController@importOrders');
556
+ $router->get('order-config-fields', 'OrchestrationController@orderConfigFields');
557
+ }
558
+ );
559
+ $router->group(
560
+ ['prefix' => 'manifests'],
561
+ function ($router) {
562
+ $router->get('/', 'ManifestController@index');
563
+ $router->get('{id}', 'ManifestController@show');
564
+ $router->post('{id}/cancel', 'ManifestController@cancel');
565
+ $router->delete('{id}', 'ManifestController@destroy');
566
+ }
567
+ );
568
+ $router->group(
569
+ ['prefix' => 'manifest-stops'],
570
+ function ($router) {
571
+ $router->get('{id}', 'ManifestController@showStop');
572
+ $router->patch('{id}', 'ManifestController@updateStop');
573
+ }
574
+ );
514
575
  }
515
576
  );
516
577
  }
@@ -373,7 +373,6 @@ fleet-ops:
373
373
  modal-title: إنشاء مجموعة حقل مخصصة جديدة
374
374
  group-name: اسم المجموعة
375
375
  assign-driver:
376
- select-driver: اختر السائق
377
376
  select-assign: اختر السائق لتعيينه
378
377
  clone-config-form:
379
378
  name: اسم التكوين
@@ -433,7 +432,6 @@ fleet-ops:
433
432
  fuel-report-details:
434
433
  fuel: الوقود/ الحجم
435
434
  fuel-report-form:
436
- select-driver: اختر السائق
437
435
  select-vehicle: اختر المركبة
438
436
  volume: الحجم
439
437
  volume-text: اختر الوحدة المترية وحجم الوقود للإبلاغ عنه.
@@ -459,7 +457,6 @@ fleet-ops:
459
457
  select-reporter: اختر المُبلغ
460
458
  assigned: مُعين إلى
461
459
  select-assignee: اختر المُعين
462
- select-driver: اختر السائق
463
460
  select-vehicle: اختر المركبة
464
461
  select-type: اختر النوع
465
462
  select-category: اختر الفئة
@@ -492,7 +489,6 @@ fleet-ops:
492
489
  tags: علامات التكوين
493
490
  add-tags: أضف علامات
494
491
  order-assign-driver:
495
- select-driver: اختر السائق
496
492
  select-assign: اختر السائق لتعيينه
497
493
  order-config-new-status:
498
494
  new-status: حالة جديدة
@@ -511,7 +507,6 @@ fleet-ops:
511
507
  select-facilitator: اختر الميسر
512
508
  assign-driver: تعيين السائق
513
509
  assign-driver-text: قم بتعيين السائق الذي سيتم إرسال الطلب إليه.
514
- select-driver: اختر السائق
515
510
  assign-vehicle: تعيين المركبة
516
511
  assign-vehicle-text: قم بتعيين المركبة التي سيتم تنفيذ الطلب بها.
517
512
  select-vehicle: اختر المركبة
@@ -634,7 +629,6 @@ fleet-ops:
634
629
  make: صنع المركبة
635
630
  model: طراز المركبة
636
631
  year: سنة المركبة
637
- select-driver: اختر السائق
638
632
  body: نوع هيكل المركبة
639
633
  doors: عدد الأبواب
640
634
  type: نوع قيادة المركبة
@@ -722,7 +716,6 @@ fleet-ops:
722
716
  vehicle-assigned: المركبة
723
717
  no-driver: لا يوجد سائق
724
718
  no-vehicle: لا توجد مركبة
725
- select-driver: اختر السائق
726
719
  select-vehicle: اختر المركبة
727
720
  widget:
728
721
  fleet-ops-quickstart:
@@ -839,7 +832,6 @@ fleet-ops:
839
832
  cancel-edit-fuel-report: إلغاء تحرير تقرير الوقود
840
833
  cancel-new-fuel-report: إلغاء تقرير الوقود الجديد
841
834
  select-reporter: اختر المراسل
842
- select-driver: اختر السائق
843
835
  select-vehicle: اختر المركبة
844
836
  select-fuel-report: اختر حالة تقرير الوقود
845
837
  odometer: عداد المسافات
@@ -874,7 +866,6 @@ fleet-ops:
874
866
  assigned: تم التعيين إلى
875
867
  select-assign: اختر المعين
876
868
  select-reporter: اختر المراسل
877
- select-driver: اختر السائق
878
869
  select-vehicle: اختر المركبة
879
870
  type: نوع المشكلة
880
871
  select-type: اختر نوع المشكلة
@@ -1070,7 +1061,6 @@ fleet-ops:
1070
1061
  vehicle-year: سنة المركبة
1071
1062
  driver-assigned: السائق المعين
1072
1063
  vehicle-assigned: المركبة المعينة
1073
- select-driver: اختر السائق
1074
1064
  select-vehicle: اختر المركبة
1075
1065
  avatar: الصورة الرمزية
1076
1066
  select-map-avatar: اختر الصورة الرمزية للخريطة
@@ -1353,7 +1343,6 @@ fleet-ops:
1353
1343
  no-service-info-text: لا توجد عروض خدمة.
1354
1344
  input-order-info-text: أدخل مسار الطلب لعرض عروض الخدمة.
1355
1345
  notes-title: ملاحظات
1356
- notes-placeholder: أدخل ملاحظات الطلب هنا....
1357
1346
  success-message: تم إنشاء الطلب الجديد {orderId}
1358
1347
  warning-message: لا توجد ملفات في قائمة الانتظار للتحميل!
1359
1348
  import-success: تم الاستيراد بنجاح.
@@ -1434,7 +1423,6 @@ fleet-ops:
1434
1423
  order-title: ملصق الطلب
1435
1424
  waypoint-title: ملصق نقطة التوقف
1436
1425
  proof-of-delivery: إثبات التسليم
1437
- notes-placeholder: أدخل ملاحظات الطلب هنا....
1438
1426
  save-order-note: حفظ ملاحظة الطلب
1439
1427
  order-notes-updated: تم تحديث ملاحظات الطلب.
1440
1428
  config:
@@ -1571,3 +1559,47 @@ fleet-ops:
1571
1559
  settings:
1572
1560
  navigator-app:
1573
1561
  navigator-app-settings: إعدادات تطبيق الملاحة
1562
+
1563
+ scheduler:
1564
+ add-shift: Add Shift
1565
+ create-shift: Create Shift
1566
+ edit-shift: Edit Shift
1567
+ delete-shift: Delete Shift
1568
+ delete-shift-confirm: Are you sure you want to delete this shift? This action cannot be undone.
1569
+ shift-created: Shift created successfully.
1570
+ shift-updated: Shift updated successfully.
1571
+ shift-title: Shift Title
1572
+ shift-title-placeholder: e.g. Morning Delivery Run
1573
+ shift-start: Shift Start
1574
+ shift-end: Shift End
1575
+ shift-notes-placeholder: Optional notes about this shift
1576
+ select-start-datetime: Select start date & time
1577
+ select-end-datetime: Select end date & time
1578
+ select-driver: Select Driver
1579
+ upcoming-shifts: Upcoming Shifts
1580
+ no-upcoming-shifts: No upcoming shifts scheduled.
1581
+ hours-of-service: Hours of Service
1582
+ daily-driving-hours: Daily Driving Hours
1583
+ weekly-hours: Weekly Hours
1584
+ compliance-status: Compliance Status
1585
+ set-availability: Set Availability
1586
+ availability-set: Availability saved successfully.
1587
+ availability-time-off: Availability & Time Off
1588
+ no-availability-restrictions: No availability restrictions set.
1589
+ available: Available
1590
+ unavailable: Unavailable
1591
+ unavailable-time-off: Unavailable / Time Off
1592
+ availability-type: Availability Type
1593
+ request-time-off: Request Time Off
1594
+ submit-request: Submit Request
1595
+ time-off-requested: Time off request submitted.
1596
+ delete-availability: Delete Availability
1597
+ delete-availability-confirm: Are you sure you want to remove this availability record?
1598
+ availability-deleted: Availability record removed.
1599
+ start-date: Start Date
1600
+ end-date: End Date
1601
+ select-start-date: Select start date
1602
+ select-end-date: Select end date
1603
+ reason: Reason
1604
+ reason-placeholder: e.g. Personal appointment
1605
+ notes-placeholder: Optional additional notes
@@ -28,6 +28,8 @@ common:
28
28
  select-resource-filter-by: Изберете {resource} за филтриране
29
29
  table-view: Табличен изглед
30
30
  grid-view: Мрежов изглед
31
+ calendar-view: Изглед Календар
32
+ change-layout: Промяна на оформлението
31
33
  livemap: Жива карта
32
34
  tracking: Проследяване
33
35
  activity: Активност
@@ -37,6 +39,13 @@ common:
37
39
  edit-address: Редактиране на адрес
38
40
  new-address: Нов адрес
39
41
  select-address: Избор на адрес
42
+ save: Save
43
+ save-changes: Save Changes
44
+ done: Done
45
+ delete: Delete
46
+ overview: Overview
47
+ notes: Notes
48
+ schedule: Schedule
40
49
  menu:
41
50
  operations: Операции
42
51
  dashboard: Табло
@@ -436,7 +445,6 @@ device:
436
445
  warranty: Гаранция
437
446
  warranty-placeholder: Изберете гаранция
438
447
  notes: Бележки
439
- notes-placeholder: Бележки
440
448
  entity:
441
449
  fields:
442
450
  declare: Декларирай
@@ -567,7 +575,6 @@ order:
567
575
  invalid-coordinates: Невалидни координати!
568
576
  items-drop: Артикулите се оставят на
569
577
  loading-message: Зареждане на оферти за услуги...
570
- notes-placeholder: Въведете бележки за поръчката тук....
571
578
  notes-title: Бележки
572
579
  optimize-route: Оптимизирай маршрута
573
580
  optimize-route-help-text: Fleetbase автоматично ще оптимизира маршрута.
@@ -695,7 +702,6 @@ order:
695
702
  vehicle-assigned: Превозно средство
696
703
  no-driver: Без шофьор
697
704
  no-vehicle: Без превозно средство
698
- select-driver: Изберете шофьор
699
705
  select-vehicle: Изберете превозно средство
700
706
  kanban:
701
707
  status-updated: Активността на поръчката е актуализирана на статус {status}.
@@ -945,7 +951,6 @@ vehicle:
945
951
  make: Марка
946
952
  model: Модел
947
953
  plate-number: Регистрационен номер
948
- select-driver: Изберете шофьор
949
954
  upload-new-photo: Качете нова снимка
950
955
  vehicle-make: Марка на превозното средство
951
956
  vehicle-model: Модел на превозното средство
@@ -1192,12 +1197,53 @@ scheduler:
1192
1197
  scheduled-orders: Насрочени поръчки
1193
1198
  unauthorized-to-schedule: Нямате права да насрочвате поръчки.
1194
1199
  scheduling-for: Насрочване за {orderId}
1200
+ add-shift: Add Shift
1201
+ create-shift: Create Shift
1202
+ edit-shift: Edit Shift
1203
+ delete-shift: Delete Shift
1204
+ delete-shift-confirm: Are you sure you want to delete this shift? This action cannot be undone.
1205
+ shift-created: Shift created successfully.
1206
+ shift-updated: Shift updated successfully.
1207
+ shift-title: Shift Title
1208
+ shift-title-placeholder: e.g. Morning Delivery Run
1209
+ shift-start: Shift Start
1210
+ shift-end: Shift End
1211
+ shift-notes-placeholder: Optional notes about this shift
1212
+ select-start-datetime: Select start date & time
1213
+ select-end-datetime: Select end date & time
1214
+ select-driver: Select Driver
1215
+ upcoming-shifts: Upcoming Shifts
1216
+ no-upcoming-shifts: No upcoming shifts scheduled.
1217
+ hours-of-service: Hours of Service
1218
+ daily-driving-hours: Daily Driving Hours
1219
+ weekly-hours: Weekly Hours
1220
+ compliance-status: Compliance Status
1221
+ set-availability: Set Availability
1222
+ availability-set: Availability saved successfully.
1223
+ availability-time-off: Availability & Time Off
1224
+ no-availability-restrictions: No availability restrictions set.
1225
+ available: Available
1226
+ unavailable: Unavailable
1227
+ unavailable-time-off: Unavailable / Time Off
1228
+ availability-type: Availability Type
1229
+ request-time-off: Request Time Off
1230
+ submit-request: Submit Request
1231
+ time-off-requested: Time off request submitted.
1232
+ delete-availability: Delete Availability
1233
+ delete-availability-confirm: Are you sure you want to remove this availability record?
1234
+ availability-deleted: Availability record removed.
1235
+ start-date: Start Date
1236
+ end-date: End Date
1237
+ select-start-date: Select start date
1238
+ select-end-date: Select end date
1239
+ reason: Reason
1240
+ reason-placeholder: e.g. Personal appointment
1241
+ notes-placeholder: Optional additional notes
1195
1242
  modals:
1196
1243
  new-custom-field-group:
1197
1244
  modal-title: Създаване на нова група персонализирани полета
1198
1245
  group-name: Име на групата
1199
1246
  assign-driver:
1200
- select-driver: Изберете шофьор
1201
1247
  select-assign: Изберете шофьор за назначаване
1202
1248
  clone-config-form:
1203
1249
  name: Име на конфигурацията
@@ -1258,7 +1304,6 @@ modals:
1258
1304
  fuel-report-details:
1259
1305
  fuel: Гориво/Обем
1260
1306
  fuel-report-form:
1261
- select-driver: Изберете шофьор
1262
1307
  select-vehicle: Изберете превозно средство
1263
1308
  volume: Обем
1264
1309
  volume-text: Изберете мерната единица и обема на горивото за докладване.
@@ -1285,7 +1330,6 @@ modals:
1285
1330
  select-reporter: Изберете докладчик
1286
1331
  assigned: Назначено на
1287
1332
  select-assignee: Изберете назначен
1288
- select-driver: Изберете шофьор
1289
1333
  select-vehicle: Изберете превозно средство
1290
1334
  select-type: Изберете тип
1291
1335
  select-category: Изберете категория
@@ -1320,7 +1364,6 @@ modals:
1320
1364
  tags: Етикети на конфигурацията
1321
1365
  add-tags: Добавяне на етикети
1322
1366
  order-assign-driver:
1323
- select-driver: Изберете шофьор
1324
1367
  select-assign: Изберете шофьор за присвояване
1325
1368
  order-config-new-status:
1326
1369
  new-status: Нов статус
@@ -1345,7 +1388,6 @@ modals:
1345
1388
  select-facilitator: Изберете фасилитатор
1346
1389
  assign-driver: Назначете шофьор
1347
1390
  assign-driver-text: Назначете шофьора, на когото ще бъде изпратена тази поръчка.
1348
- select-driver: Изберете шофьор
1349
1391
  assign-vehicle: Назначете превозно средство
1350
1392
  assign-vehicle-text: Назначете превозното средство, с което ще се изпълни тази
1351
1393
  поръчка.
@@ -1480,7 +1522,6 @@ modals:
1480
1522
  make: Марка на превозното средство
1481
1523
  model: Модел на превозното средство
1482
1524
  year: Година на превозното средство
1483
- select-driver: Изберете шофьор
1484
1525
  body: Тип каросерия на превозното средство
1485
1526
  doors: Брой врати
1486
1527
  type: Тип задвижване на превозното средство