@fleetbase/fleetops-engine 0.6.51 → 0.6.52

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 (360) hide show
  1. package/README.md +0 -2
  2. package/addon/components/cell/telematic-provider.hbs +16 -0
  3. package/addon/components/cell/telematic-provider.js +36 -0
  4. package/addon/components/cell/telematic-status.hbs +1 -0
  5. package/addon/components/cell/telematic-status.js +39 -0
  6. package/addon/components/device/manager.hbs +5 -6
  7. package/addon/components/device/manager.js +12 -15
  8. package/addon/components/driver/details.hbs +1 -1
  9. package/addon/components/fleet/vehicle-listing.js +1 -0
  10. package/addon/components/fuel-integration/form.hbs +200 -0
  11. package/addon/components/fuel-integration/form.js +242 -0
  12. package/addon/components/fuel-integration/hub.hbs +154 -0
  13. package/addon/components/fuel-integration/hub.js +165 -0
  14. package/addon/components/fuel-integration/matching-priority.hbs +76 -0
  15. package/addon/components/fuel-integration/matching-priority.js +145 -0
  16. package/addon/components/fuel-report/details.hbs +13 -1
  17. package/addon/components/issue/details.hbs +3 -57
  18. package/addon/components/issue/details.js +0 -96
  19. package/addon/components/layout/fleet-ops-sidebar.js +20 -2
  20. package/addon/components/map/drawer/device-event-listing.hbs +12 -2
  21. package/addon/components/map/drawer/driver-listing.hbs +14 -1
  22. package/addon/components/map/drawer/place-listing.hbs +14 -1
  23. package/addon/components/map/drawer/position-listing.hbs +12 -2
  24. package/addon/components/map/drawer/vehicle-listing.hbs +14 -1
  25. package/addon/components/modals/assigned-orders.hbs +40 -0
  26. package/addon/components/modals/attach-device.hbs +4 -3
  27. package/addon/components/modals/attach-telematic-device.hbs +25 -0
  28. package/addon/components/modals/attach-telematic-device.js +3 -0
  29. package/addon/components/modals/driver-assign-order.hbs +7 -58
  30. package/addon/components/modals/driver-assign-vehicle.hbs +10 -2
  31. package/addon/components/modals/fleet-assign-driver.hbs +18 -0
  32. package/addon/components/modals/fleet-assign-driver.js +3 -0
  33. package/addon/components/modals/fleet-assign-vehicle.hbs +18 -0
  34. package/addon/components/modals/fleet-assign-vehicle.js +3 -0
  35. package/addon/components/modals/telematic-connection-diagnostics.hbs +75 -0
  36. package/addon/components/modals/telematic-connection-diagnostics.js +287 -0
  37. package/addon/components/modals/vehicle-details.hbs +6 -1
  38. package/addon/components/modals/vehicle-form.hbs +8 -1
  39. package/addon/components/order/card.hbs +106 -0
  40. package/addon/components/order/card.js +257 -0
  41. package/addon/components/order/form/service-rate.hbs +2 -0
  42. package/addon/components/service-rate/form.hbs +3 -2
  43. package/addon/components/telematic/details.hbs +98 -87
  44. package/addon/components/telematic/details.js +230 -1
  45. package/addon/components/telematic/form.hbs +303 -72
  46. package/addon/components/telematic/form.js +519 -3
  47. package/addon/components/telematic/hub.hbs +149 -0
  48. package/addon/components/telematic/hub.js +142 -0
  49. package/addon/components/telematic/settings.hbs +152 -0
  50. package/addon/components/telematic/settings.js +45 -0
  51. package/addon/components/telematic/tab-empty-state.hbs +29 -0
  52. package/addon/components/telematic/tab-empty-state.js +33 -0
  53. package/addon/components/vehicle/details.hbs +6 -1
  54. package/addon/components/vehicle/form.hbs +2 -1
  55. package/addon/components/widget/fuel-providers.hbs +43 -0
  56. package/addon/components/widget/fuel-providers.js +27 -0
  57. package/addon/controllers/connectivity/devices/index/details.js +27 -1
  58. package/addon/controllers/connectivity/devices/index.js +14 -0
  59. package/addon/controllers/connectivity/fuel-providers/details/sync.js +18 -0
  60. package/addon/controllers/connectivity/fuel-providers/details/transactions.js +24 -0
  61. package/addon/controllers/connectivity/fuel-providers/details.js +69 -0
  62. package/addon/controllers/connectivity/fuel-providers/edit.js +24 -0
  63. package/addon/controllers/connectivity/fuel-providers/index.js +177 -0
  64. package/addon/controllers/connectivity/fuel-providers/new.js +37 -0
  65. package/addon/controllers/connectivity/telematics/details/attachments.js +247 -0
  66. package/addon/controllers/connectivity/telematics/details/devices.js +368 -0
  67. package/addon/controllers/connectivity/telematics/details/events.js +244 -0
  68. package/addon/controllers/connectivity/telematics/details/index.js +3 -0
  69. package/addon/controllers/connectivity/telematics/details/logs.js +43 -0
  70. package/addon/controllers/connectivity/telematics/details/sensors.js +270 -0
  71. package/addon/controllers/connectivity/telematics/details.js +149 -0
  72. package/addon/controllers/connectivity/telematics/{index/edit.js → edit.js} +15 -4
  73. package/addon/controllers/connectivity/telematics/index.js +25 -5
  74. package/addon/controllers/connectivity/telematics/{index/new.js → new.js} +8 -2
  75. package/addon/controllers/management/drivers/index/details.js +78 -1
  76. package/addon/controllers/management/drivers/index.js +39 -0
  77. package/addon/controllers/management/fleets/index/details.js +23 -1
  78. package/addon/controllers/management/fleets/index.js +6 -1
  79. package/addon/controllers/management/fuel-reports/index.js +37 -1
  80. package/addon/controllers/management/fuel-transactions/index/details.js +70 -0
  81. package/addon/controllers/management/fuel-transactions/index.js +240 -0
  82. package/addon/controllers/management/vehicles/index/details.js +32 -0
  83. package/addon/controllers/management/vehicles/index.js +26 -0
  84. package/addon/controllers/operations/orders/index.js +4 -0
  85. package/addon/controllers/settings/payments/index.js +5 -0
  86. package/addon/extension.js +10 -0
  87. package/addon/routes/connectivity/fuel-providers/details/index.js +7 -0
  88. package/addon/routes/connectivity/fuel-providers/details/matching.js +7 -0
  89. package/addon/routes/connectivity/fuel-providers/details/settings.js +7 -0
  90. package/addon/routes/connectivity/fuel-providers/details/sync.js +18 -0
  91. package/addon/routes/connectivity/fuel-providers/details/transactions.js +14 -0
  92. package/addon/routes/connectivity/fuel-providers/details.js +18 -0
  93. package/addon/routes/connectivity/fuel-providers/edit.js +18 -0
  94. package/addon/routes/connectivity/fuel-providers/index.js +20 -0
  95. package/addon/routes/connectivity/fuel-providers/new.js +3 -0
  96. package/addon/routes/connectivity/fuel-providers.js +3 -0
  97. package/addon/routes/connectivity/telematics/details/attachments.js +28 -0
  98. package/addon/routes/connectivity/telematics/details/devices.js +30 -0
  99. package/addon/routes/connectivity/telematics/details/events.js +33 -0
  100. package/addon/routes/connectivity/telematics/details/index.js +3 -0
  101. package/addon/routes/connectivity/telematics/details/logs.js +17 -0
  102. package/addon/routes/connectivity/telematics/details/sensors.js +29 -0
  103. package/addon/routes/connectivity/telematics/{index/details.js → details.js} +1 -1
  104. package/addon/routes/connectivity/telematics/{index/edit.js → edit.js} +1 -1
  105. package/addon/routes/connectivity/telematics/new.js +3 -0
  106. package/addon/routes/management/drivers/index/details/activity.js +3 -0
  107. package/addon/routes/management/fuel-reports/index.js +2 -0
  108. package/addon/routes/management/fuel-transactions/index/details.js +18 -0
  109. package/addon/routes/management/fuel-transactions/index.js +21 -0
  110. package/addon/routes/management/fuel-transactions.js +3 -0
  111. package/addon/routes.js +28 -9
  112. package/addon/services/device-actions.js +64 -1
  113. package/addon/services/device-event-actions.js +12 -1
  114. package/addon/services/driver-actions.js +147 -11
  115. package/addon/services/fleet-actions.js +66 -1
  116. package/addon/services/fuel-integration-actions.js +31 -0
  117. package/addon/services/issue-actions.js +1 -1
  118. package/addon/services/telematic-actions.js +9 -3
  119. package/addon/services/vehicle-actions.js +125 -0
  120. package/addon/styles/fleetops-engine.css +310 -34
  121. package/addon/templates/analytics/reports/index.hbs +19 -1
  122. package/addon/templates/connectivity/devices/index.hbs +19 -1
  123. package/addon/templates/connectivity/events/index.hbs +16 -1
  124. package/addon/templates/connectivity/fuel-providers/details/index.hbs +38 -0
  125. package/addon/templates/connectivity/fuel-providers/details/matching.hbs +13 -0
  126. package/addon/templates/connectivity/fuel-providers/details/settings.hbs +11 -0
  127. package/addon/templates/connectivity/fuel-providers/details/sync.hbs +48 -0
  128. package/addon/templates/connectivity/fuel-providers/details/transactions.hbs +21 -0
  129. package/addon/templates/connectivity/fuel-providers/details.hbs +51 -0
  130. package/addon/templates/connectivity/fuel-providers/edit.hbs +24 -0
  131. package/addon/templates/connectivity/fuel-providers/index.hbs +12 -0
  132. package/addon/templates/connectivity/fuel-providers/new.hbs +22 -0
  133. package/addon/templates/connectivity/fuel-providers.hbs +1 -0
  134. package/addon/templates/connectivity/sensors/index.hbs +19 -1
  135. package/addon/templates/connectivity/telematics/details/attachments.hbs +163 -0
  136. package/addon/templates/connectivity/telematics/details/devices.hbs +88 -0
  137. package/addon/templates/connectivity/telematics/details/events.hbs +101 -0
  138. package/addon/templates/connectivity/telematics/{index/details → details}/index.hbs +0 -1
  139. package/addon/templates/connectivity/telematics/details/logs.hbs +69 -0
  140. package/addon/templates/connectivity/telematics/details/sensors.hbs +88 -0
  141. package/addon/templates/connectivity/telematics/details.hbs +53 -0
  142. package/addon/templates/connectivity/telematics/edit.hbs +27 -0
  143. package/addon/templates/connectivity/telematics/index.hbs +6 -8
  144. package/addon/templates/connectivity/telematics/new.hbs +24 -0
  145. package/addon/templates/maintenance/equipment/index.hbs +19 -1
  146. package/addon/templates/maintenance/maintenances/index.hbs +15 -1
  147. package/addon/templates/maintenance/parts/index.hbs +19 -1
  148. package/addon/templates/maintenance/schedules/index.hbs +19 -1
  149. package/addon/templates/maintenance/work-orders/index.hbs +19 -1
  150. package/addon/templates/management/contacts/customers.hbs +15 -1
  151. package/addon/templates/management/contacts/index.hbs +19 -1
  152. package/addon/templates/management/drivers/index/details/activity.hbs +1 -0
  153. package/addon/templates/management/drivers/index.hbs +19 -1
  154. package/addon/templates/management/fleets/index.hbs +19 -1
  155. package/addon/templates/management/fuel-reports/index.hbs +19 -1
  156. package/addon/templates/management/fuel-transactions/index/details.hbs +73 -0
  157. package/addon/templates/management/fuel-transactions/index.hbs +58 -0
  158. package/addon/templates/management/fuel-transactions.hbs +1 -0
  159. package/addon/templates/management/issues/index.hbs +19 -1
  160. package/addon/templates/management/places/index.hbs +19 -1
  161. package/addon/templates/management/vehicles/index.hbs +19 -1
  162. package/addon/templates/management/vendors/index.hbs +19 -1
  163. package/addon/templates/management/vendors/integrated.hbs +13 -1
  164. package/addon/templates/operations/orders/index.hbs +19 -1
  165. package/addon/templates/operations/service-rates/index.hbs +19 -1
  166. package/addon/templates/settings/payments/index.hbs +15 -1
  167. package/addon/utils/fleet-ops-options.js +3 -0
  168. package/app/components/cell/telematic-provider.js +1 -0
  169. package/app/components/cell/telematic-status.js +1 -0
  170. package/app/components/fuel-integration/form.js +1 -0
  171. package/app/components/fuel-integration/hub.js +1 -0
  172. package/app/components/fuel-integration/matching-priority.js +1 -0
  173. package/app/components/modals/assigned-orders.js +1 -0
  174. package/app/components/modals/attach-telematic-device.js +1 -0
  175. package/app/components/modals/fleet-assign-driver.js +1 -0
  176. package/app/components/modals/fleet-assign-vehicle.js +1 -0
  177. package/app/components/modals/telematic-connection-diagnostics.js +1 -0
  178. package/app/components/order/card.js +1 -0
  179. package/app/components/telematic/hub.js +1 -0
  180. package/app/components/telematic/settings.js +1 -0
  181. package/app/components/telematic/tab-empty-state.js +1 -0
  182. package/app/components/widget/fuel-providers.js +1 -0
  183. package/app/controllers/connectivity/fuel-providers/details/sync.js +1 -0
  184. package/app/controllers/connectivity/{telematics/index/details/devices.js → fuel-providers/details/transactions.js} +1 -1
  185. package/app/controllers/connectivity/{telematics/index → fuel-providers}/details.js +1 -1
  186. package/app/controllers/connectivity/{telematics/index → fuel-providers}/edit.js +1 -1
  187. package/app/controllers/connectivity/{telematics/index/details → fuel-providers}/index.js +1 -1
  188. package/app/controllers/connectivity/{telematics/index → fuel-providers}/new.js +1 -1
  189. package/app/controllers/connectivity/telematics/details/attachments.js +1 -0
  190. package/app/controllers/connectivity/telematics/details/devices.js +1 -0
  191. package/app/controllers/connectivity/telematics/details/events.js +1 -0
  192. package/app/controllers/connectivity/telematics/details/index.js +1 -0
  193. package/app/controllers/connectivity/telematics/details/logs.js +1 -0
  194. package/app/controllers/connectivity/telematics/details/sensors.js +1 -0
  195. package/app/controllers/connectivity/telematics/details.js +1 -0
  196. package/app/controllers/connectivity/telematics/edit.js +1 -0
  197. package/app/controllers/connectivity/telematics/new.js +1 -0
  198. package/app/controllers/management/fuel-transactions/index/details.js +1 -0
  199. package/app/controllers/management/fuel-transactions/index.js +1 -0
  200. package/app/routes/connectivity/{telematics/index → fuel-providers}/details/index.js +1 -1
  201. package/app/routes/connectivity/{telematics/index/details/events.js → fuel-providers/details/matching.js} +1 -1
  202. package/app/routes/connectivity/fuel-providers/details/settings.js +1 -0
  203. package/app/routes/connectivity/fuel-providers/details/sync.js +1 -0
  204. package/app/routes/connectivity/{telematics/index/details/devices.js → fuel-providers/details/transactions.js} +1 -1
  205. package/app/routes/connectivity/{telematics/index → fuel-providers}/details.js +1 -1
  206. package/app/routes/connectivity/{telematics/index → fuel-providers}/edit.js +1 -1
  207. package/app/routes/connectivity/fuel-providers/index.js +1 -0
  208. package/app/routes/connectivity/{telematics/index → fuel-providers}/new.js +1 -1
  209. package/app/routes/connectivity/fuel-providers.js +1 -0
  210. package/app/routes/connectivity/telematics/details/attachments.js +1 -0
  211. package/app/routes/connectivity/telematics/details/devices.js +1 -0
  212. package/app/routes/connectivity/telematics/details/events.js +1 -0
  213. package/app/routes/connectivity/telematics/details/index.js +1 -0
  214. package/app/routes/connectivity/telematics/details/logs.js +1 -0
  215. package/app/routes/connectivity/telematics/details/sensors.js +1 -0
  216. package/app/routes/connectivity/telematics/details.js +1 -0
  217. package/app/routes/connectivity/telematics/edit.js +1 -0
  218. package/app/routes/connectivity/telematics/new.js +1 -0
  219. package/app/routes/management/drivers/index/details/activity.js +1 -0
  220. package/app/routes/management/fuel-transactions/index/details.js +1 -0
  221. package/app/routes/management/fuel-transactions/index.js +1 -0
  222. package/app/routes/management/fuel-transactions.js +1 -0
  223. package/app/services/fuel-integration-actions.js +1 -0
  224. package/app/templates/connectivity/{telematics/index → fuel-providers}/details/index.js +1 -1
  225. package/app/templates/connectivity/{telematics/index/details/events.js → fuel-providers/details/matching.js} +1 -1
  226. package/app/templates/connectivity/fuel-providers/details/settings.js +1 -0
  227. package/app/templates/connectivity/fuel-providers/details/sync.js +1 -0
  228. package/app/templates/connectivity/{telematics/index/details/devices.js → fuel-providers/details/transactions.js} +1 -1
  229. package/app/templates/connectivity/{telematics/index → fuel-providers}/details.js +1 -1
  230. package/app/templates/connectivity/{telematics/index → fuel-providers}/edit.js +1 -1
  231. package/app/templates/connectivity/fuel-providers/index.js +1 -0
  232. package/app/templates/connectivity/{telematics/index → fuel-providers}/new.js +1 -1
  233. package/app/templates/connectivity/fuel-providers.js +1 -0
  234. package/app/templates/connectivity/telematics/details/attachments.js +1 -0
  235. package/app/templates/connectivity/telematics/details/devices.js +1 -0
  236. package/app/templates/connectivity/telematics/details/events.js +1 -0
  237. package/app/templates/connectivity/telematics/details/index.js +1 -0
  238. package/app/templates/connectivity/telematics/details/logs.js +1 -0
  239. package/app/templates/connectivity/telematics/details/sensors.js +1 -0
  240. package/app/templates/connectivity/telematics/details.js +1 -0
  241. package/app/templates/connectivity/telematics/edit.js +1 -0
  242. package/app/templates/connectivity/telematics/new.js +1 -0
  243. package/app/templates/management/drivers/index/details/activity.js +1 -0
  244. package/app/templates/management/fuel-transactions/index/details.js +1 -0
  245. package/app/templates/management/fuel-transactions/index.js +1 -0
  246. package/app/templates/management/fuel-transactions.js +1 -0
  247. package/assets/images/telematics/providers/afaqy.webp +0 -0
  248. package/assets/images/telematics/providers/default.webp +0 -0
  249. package/assets/images/telematics/providers/flespi.webp +0 -0
  250. package/assets/images/telematics/providers/geotab.webp +0 -0
  251. package/assets/images/telematics/providers/safee.webp +0 -0
  252. package/assets/images/telematics/providers/samsara.webp +0 -0
  253. package/composer.json +1 -1
  254. package/extension.json +1 -1
  255. package/package.json +4 -4
  256. package/server/config/fuel-providers.php +42 -0
  257. package/server/config/telematics.php +139 -130
  258. package/server/migrations/2026_06_06_000001_harden_device_events_telematics_contract.php +59 -0
  259. package/server/migrations/2026_06_08_000001_create_fuel_provider_connections_table.php +37 -0
  260. package/server/migrations/2026_06_08_000002_create_fuel_provider_transactions_table.php +53 -0
  261. package/server/migrations/2026_06_08_000003_create_fuel_provider_sync_runs_table.php +40 -0
  262. package/server/migrations/2026_06_10_000001_add_fuel_card_number_to_vehicles_table.php +25 -0
  263. package/server/migrations/2026_06_10_000002_add_vehicle_identity_columns_to_fuel_provider_transactions_table.php +39 -0
  264. package/server/src/Contracts/FuelProvider.php +30 -0
  265. package/server/src/Contracts/TelematicProviderDescriptor.php +3 -1
  266. package/server/src/Events/FuelProviderTransactionImported.php +17 -0
  267. package/server/src/Events/FuelProviderTransactionMatched.php +17 -0
  268. package/server/src/Events/FuelProviderTransactionUnmatched.php +17 -0
  269. package/server/src/Events/FuelReportCreatedFromProvider.php +18 -0
  270. package/server/src/Http/Controllers/Internal/v1/AnalyticsController.php +6 -0
  271. package/server/src/Http/Controllers/Internal/v1/DeviceController.php +76 -2
  272. package/server/src/Http/Controllers/Internal/v1/DeviceEventController.php +44 -0
  273. package/server/src/Http/Controllers/Internal/v1/DriverController.php +158 -7
  274. package/server/src/Http/Controllers/Internal/v1/FuelProviderConnectionController.php +124 -0
  275. package/server/src/Http/Controllers/Internal/v1/FuelProviderSyncRunController.php +10 -0
  276. package/server/src/Http/Controllers/Internal/v1/FuelProviderTransactionController.php +76 -0
  277. package/server/src/Http/Controllers/Internal/v1/SensorController.php +1 -1
  278. package/server/src/Http/Controllers/Internal/v1/TelematicController.php +178 -15
  279. package/server/src/Http/Controllers/Internal/v1/VehicleController.php +165 -0
  280. package/server/src/Http/Controllers/TelematicWebhookController.php +103 -19
  281. package/server/src/Http/Filter/FuelProviderConnectionFilter.php +33 -0
  282. package/server/src/Http/Filter/FuelProviderSyncRunFilter.php +28 -0
  283. package/server/src/Http/Filter/FuelProviderTransactionFilter.php +59 -0
  284. package/server/src/Http/Filter/FuelReportFilter.php +10 -0
  285. package/server/src/Http/Resources/v1/Driver.php +15 -0
  286. package/server/src/Http/Resources/v1/FuelProviderConnection.php +30 -0
  287. package/server/src/Http/Resources/v1/FuelProviderSyncRun.php +36 -0
  288. package/server/src/Http/Resources/v1/FuelProviderTransaction.php +54 -0
  289. package/server/src/Http/Resources/v1/FuelReport.php +28 -22
  290. package/server/src/Http/Resources/v1/Index/Driver.php +26 -20
  291. package/server/src/Http/Resources/v1/Index/Vehicle.php +29 -22
  292. package/server/src/Http/Resources/v1/Vehicle.php +17 -0
  293. package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +2 -0
  294. package/server/src/Jobs/SyncFuelProviderTransactionsJob.php +57 -0
  295. package/server/src/Jobs/SyncTelematicDevicesJob.php +36 -6
  296. package/server/src/Jobs/TestTelematicConnectionJob.php +9 -22
  297. package/server/src/Models/Asset.php +2 -1
  298. package/server/src/Models/Contact.php +2 -1
  299. package/server/src/Models/Device.php +27 -4
  300. package/server/src/Models/DeviceEvent.php +40 -3
  301. package/server/src/Models/Driver.php +2 -1
  302. package/server/src/Models/Equipment.php +2 -1
  303. package/server/src/Models/Fleet.php +2 -1
  304. package/server/src/Models/FuelProviderConnection.php +60 -0
  305. package/server/src/Models/FuelProviderSyncRun.php +58 -0
  306. package/server/src/Models/FuelProviderTransaction.php +119 -0
  307. package/server/src/Models/FuelReport.php +16 -1
  308. package/server/src/Models/Part.php +2 -1
  309. package/server/src/Models/Sensor.php +21 -4
  310. package/server/src/Models/ServiceRate.php +39 -2
  311. package/server/src/Models/Vehicle.php +14 -2
  312. package/server/src/Models/Vendor.php +2 -1
  313. package/server/src/Providers/FleetOpsServiceProvider.php +10 -0
  314. package/server/src/Support/Analytics/FuelProviderSummary.php +42 -0
  315. package/server/src/Support/FuelProviders/FuelProviderDescriptor.php +55 -0
  316. package/server/src/Support/FuelProviders/FuelProviderRegistry.php +75 -0
  317. package/server/src/Support/FuelProviders/FuelProviderService.php +447 -0
  318. package/server/src/Support/FuelProviders/Providers/AbstractFuelProvider.php +98 -0
  319. package/server/src/Support/FuelProviders/Providers/PetroAppFuelProvider.php +167 -0
  320. package/server/src/Support/Telematics/Providers/AbstractProvider.php +27 -6
  321. package/server/src/Support/Telematics/Providers/AfaqyProvider.php +55 -26
  322. package/server/src/Support/Telematics/Providers/FlespiProvider.php +1 -0
  323. package/server/src/Support/Telematics/Providers/GeotabProvider.php +1 -0
  324. package/server/src/Support/Telematics/Providers/SafeeProvider.php +32 -22
  325. package/server/src/Support/Telematics/Providers/SamsaraProvider.php +3 -1
  326. package/server/src/Support/Telematics/TelematicService.php +340 -21
  327. package/server/src/routes.php +41 -4
  328. package/server/tests/FuelProviderRegistryTest.php +416 -0
  329. package/server/tests/ServiceRateAlgorithmWeightVariablesTest.php +44 -0
  330. package/server/tests/TelematicsHardeningTest.php +268 -0
  331. package/server/tests/VehicleDriverAssignmentTest.php +51 -0
  332. package/translations/ar-ae.yml +22 -0
  333. package/translations/bg-bg.yaml +72 -0
  334. package/translations/en-us.yaml +83 -0
  335. package/translations/es-pa.yaml +72 -0
  336. package/translations/fr-fr.yaml +72 -0
  337. package/translations/mn-mn.yaml +72 -0
  338. package/translations/pt-br.yaml +72 -0
  339. package/translations/ru-ru.yaml +72 -0
  340. package/translations/vi-vn.yaml +97 -0
  341. package/addon/controllers/connectivity/telematics/index/details/devices.js +0 -3
  342. package/addon/controllers/connectivity/telematics/index/details/events.js +0 -3
  343. package/addon/controllers/connectivity/telematics/index/details/index.js +0 -3
  344. package/addon/controllers/connectivity/telematics/index/details/sensors.js +0 -3
  345. package/addon/controllers/connectivity/telematics/index/details.js +0 -24
  346. package/addon/routes/connectivity/telematics/index/details/devices.js +0 -3
  347. package/addon/routes/connectivity/telematics/index/details/events.js +0 -3
  348. package/addon/routes/connectivity/telematics/index/details/index.js +0 -3
  349. package/addon/routes/connectivity/telematics/index/details/sensors.js +0 -3
  350. package/addon/routes/connectivity/telematics/index/new.js +0 -3
  351. package/addon/templates/connectivity/telematics/index/details/devices.hbs +0 -1
  352. package/addon/templates/connectivity/telematics/index/details/events.hbs +0 -1
  353. package/addon/templates/connectivity/telematics/index/details/sensors.hbs +0 -1
  354. package/addon/templates/connectivity/telematics/index/details.hbs +0 -14
  355. package/addon/templates/connectivity/telematics/index/edit.hbs +0 -12
  356. package/addon/templates/connectivity/telematics/index/new.hbs +0 -12
  357. package/app/controllers/connectivity/telematics/index/details/events.js +0 -1
  358. package/app/controllers/connectivity/telematics/index/details/sensors.js +0 -1
  359. package/app/routes/connectivity/telematics/index/details/sensors.js +0 -1
  360. package/app/templates/connectivity/telematics/index/details/sensors.js +0 -1
@@ -11,5 +11,23 @@
11
11
  @actionButtons={{this.actionButtons}}
12
12
  @bulkActions={{this.bulkActions}}
13
13
  @controller={{this}}
14
+ @emptyStateComponent={{component
15
+ "table/empty-state"
16
+ icon="gas-pump"
17
+ title="No fuel reports yet"
18
+ description="Create fuel reports to track vehicle fuel usage, cost, and supporting transaction records."
19
+ filteredTitle="No fuel reports match your filters"
20
+ filteredDescription="Adjust the search or filters to find another fuel report."
21
+ primaryText="New fuel report"
22
+ primaryIcon="plus"
23
+ primaryAction=this.fuelReportActions.transition.create
24
+ secondaryText="Import"
25
+ secondaryIcon="upload"
26
+ secondaryAction=this.fuelReportActions.import
27
+ docsSlug="fleet-ops/resources/fuel-reports/overview"
28
+ docsTitle="Fuel reports guide"
29
+ docsText="Fuel reports guide"
30
+ docsSource="fleet-ops-empty-fuel-reports"
31
+ }}
14
32
  />
15
- {{outlet}}
33
+ {{outlet}}
@@ -0,0 +1,73 @@
1
+ <div class="flex h-full flex-col bg-gray-50 dark:bg-gray-900">
2
+ <section class="flex-shrink-0 border-b border-gray-200 bg-white px-4 py-4 shadow-sm dark:border-gray-700 dark:bg-gray-900 md:px-6">
3
+ <div class="flex flex-col gap-3 md:flex-row md:items-start md:justify-between">
4
+ <div class="min-w-0">
5
+ <div class="text-xs font-semibold uppercase text-gray-400 dark:text-gray-500">Fuel transaction review</div>
6
+ <h1 class="truncate text-lg font-bold text-gray-900 dark:text-gray-100">{{@model.provider_transaction_id}}</h1>
7
+ <div class="mt-2 flex flex-wrap gap-2 text-xs text-gray-500 dark:text-gray-300">
8
+ <Badge @status={{@model.sync_status}}>{{@model.sync_status}}</Badge>
9
+ <span>{{@model.provider}}</span>
10
+ <span>{{n-a (format-date-fns @model.transaction_at "dd MMM yyyy HH:mm")}}</span>
11
+ <span>{{n-a @model.station_name}}</span>
12
+ </div>
13
+ </div>
14
+ <div class="flex flex-wrap items-center gap-2">
15
+ <Button @icon="arrow-left" @text="Back" @size="sm" @onClick={{transition-to "management.fuel-transactions.index"}} />
16
+ <Button @icon="rotate" @text="Reprocess" @type="primary" @size="sm" @isLoading={{this.reprocess.isRunning}} @onClick={{perform this.reprocess}} />
17
+ </div>
18
+ </div>
19
+ </section>
20
+
21
+ <div class="min-h-0 flex-1 overflow-y-auto p-4 md:p-6">
22
+ <div class="mx-auto grid w-full max-w-7xl grid-cols-1 gap-4 lg:grid-cols-3">
23
+ <section class="rounded-md border border-gray-200 bg-white p-4 shadow-sm dark:border-gray-700 dark:bg-gray-800 lg:col-span-2">
24
+ <h2 class="text-sm font-bold text-gray-900 dark:text-gray-100">Provider Bill Data</h2>
25
+ <div class="mt-4 grid grid-cols-1 gap-3 md:grid-cols-3">
26
+ <div class="rounded-md border border-gray-200 p-3 dark:border-gray-700"><div class="text-xs text-gray-500">Vehicle/Card</div><div class="mt-1 font-semibold text-gray-900 dark:text-gray-100">{{n-a @model.vehicle_card_id}}</div></div>
27
+ <div class="rounded-md border border-gray-200 p-3 dark:border-gray-700"><div class="text-xs text-gray-500">Liters</div><div class="mt-1 font-semibold text-gray-900 dark:text-gray-100">{{n-a @model.volume}}</div></div>
28
+ <div class="rounded-md border border-gray-200 p-3 dark:border-gray-700"><div class="text-xs text-gray-500">Amount</div><div class="mt-1 font-semibold text-gray-900 dark:text-gray-100">{{n-a @model.amount}} {{@model.currency}}</div></div>
29
+ <div class="rounded-md border border-gray-200 p-3 dark:border-gray-700"><div class="text-xs text-gray-500">Vehicle</div><div class="mt-1 font-semibold text-gray-900 dark:text-gray-100">{{n-a @model.vehicle_name}}</div></div>
30
+ <div class="rounded-md border border-gray-200 p-3 dark:border-gray-700"><div class="text-xs text-gray-500">Trip</div><div class="mt-1 font-semibold text-gray-900 dark:text-gray-100">{{n-a @model.trip_number}}</div></div>
31
+ <div class="rounded-md border border-gray-200 p-3 dark:border-gray-700"><div class="text-xs text-gray-500">Fuel Report</div><div class="mt-1 font-semibold text-gray-900 dark:text-gray-100">{{n-a @model.fuel_report_id}}</div></div>
32
+ </div>
33
+
34
+ <div class="mt-4 grid grid-cols-1 gap-4 lg:grid-cols-2">
35
+ <div>
36
+ <h3 class="text-xs font-bold uppercase text-gray-400">Normalized Payload</h3>
37
+ <pre class="mt-2 max-h-80 overflow-auto rounded-md bg-gray-900 p-3 text-[11px] leading-5 text-gray-100">{{this.normalizedPayloadJson}}</pre>
38
+ </div>
39
+ <div>
40
+ <h3 class="text-xs font-bold uppercase text-gray-400">Raw Payload</h3>
41
+ <pre class="mt-2 max-h-80 overflow-auto rounded-md bg-gray-900 p-3 text-[11px] leading-5 text-gray-100">{{this.rawPayloadJson}}</pre>
42
+ </div>
43
+ </div>
44
+ </section>
45
+
46
+ <aside class="space-y-4">
47
+ <section class="rounded-md border border-gray-200 bg-white p-4 shadow-sm dark:border-gray-700 dark:bg-gray-800">
48
+ <h2 class="text-sm font-bold text-gray-900 dark:text-gray-100">Manual Match</h2>
49
+ <p class="mt-1 text-xs leading-5 text-gray-500 dark:text-gray-300">Use a FleetOps UUID or public ID when automatic matching cannot identify the vehicle or order.</p>
50
+ <div class="mt-3 space-y-3 no-input-group-padding">
51
+ <InputGroup @name="Vehicle ID">
52
+ <Input class="form-input w-full" @value={{this.vehicleId}} {{on "input" this.setVehicleId}} />
53
+ </InputGroup>
54
+ <Button @icon="truck" @text="Match Vehicle" @type="primary" @size="sm" @isLoading={{this.matchVehicle.isRunning}} @disabled={{not this.vehicleId}} @onClick={{perform this.matchVehicle}} />
55
+ <InputGroup @name="Order / Trip ID">
56
+ <Input class="form-input w-full" @value={{this.orderId}} {{on "input" this.setOrderId}} />
57
+ </InputGroup>
58
+ <Button @icon="route" @text="Match Order" @size="sm" @isLoading={{this.matchOrder.isRunning}} @disabled={{not this.orderId}} @onClick={{perform this.matchOrder}} />
59
+ </div>
60
+ </section>
61
+
62
+ <section class="rounded-md border border-gray-200 bg-white p-4 shadow-sm dark:border-gray-700 dark:bg-gray-800">
63
+ <h2 class="text-sm font-bold text-gray-900 dark:text-gray-100">Review State</h2>
64
+ <p class="mt-1 text-xs leading-5 text-gray-500 dark:text-gray-300">Mark noisy provider records as reviewed or ignored without deleting the audit ledger.</p>
65
+ <div class="mt-3 flex flex-wrap gap-2">
66
+ <Button @icon="check" @text="Mark Reviewed" @size="sm" @isLoading={{this.review.isRunning}} @onClick={{perform this.review "reviewed"}} />
67
+ <Button @icon="ban" @text="Ignore" @type="danger" @size="sm" @isLoading={{this.review.isRunning}} @onClick={{perform this.review "ignored"}} />
68
+ </div>
69
+ </section>
70
+ </aside>
71
+ </div>
72
+ </div>
73
+ </div>
@@ -0,0 +1,58 @@
1
+ <div class="flex h-full flex-col bg-gray-50 dark:bg-gray-900">
2
+ <section class="flex-shrink-0 border-b border-gray-200 bg-white px-4 py-4 shadow-sm dark:border-gray-700 dark:bg-gray-900 md:px-6">
3
+ <div class="flex flex-col gap-2 md:flex-row md:items-start md:justify-between">
4
+ <div>
5
+ <div class="text-xs font-semibold uppercase text-gray-400 dark:text-gray-500">Fuel transaction ledger</div>
6
+ <h1 class="text-lg font-bold text-gray-900 dark:text-gray-100">{{t "menu.fuel-transactions"}}</h1>
7
+ <p class="mt-1 max-w-4xl text-sm leading-5 text-gray-500 dark:text-gray-300">
8
+ Imported fuel card bills and provider purchase records are reviewed here before, during, and after they match to vehicles, trips, and linked Fuel Reports.
9
+ </p>
10
+ </div>
11
+ </div>
12
+ </section>
13
+
14
+ <div class="min-h-0 flex-1 overflow-y-auto p-4 md:p-6">
15
+ {{#if this.hasRecords}}
16
+ <Layout::Resource::Tabular
17
+ @resource="fuel-provider-transaction"
18
+ @title={{t "menu.fuel-transactions"}}
19
+ @searchQuery={{this.query}}
20
+ @data={{@model}}
21
+ @columns={{this.columns}}
22
+ @page={{this.page}}
23
+ @onPageChange={{fn (mut this.page)}}
24
+ @setupTable={{fn (mut this.table)}}
25
+ @actionButtons={{this.actionButtons}}
26
+ @bulkActions={{this.bulkActions}}
27
+ @controller={{this}}
28
+ @emptyStateComponent={{component
29
+ "table/empty-state"
30
+ icon="receipt"
31
+ title="No fuel transactions"
32
+ description="Imported fuel card bills and provider purchase records appear here after provider syncs complete."
33
+ filteredTitle="No transactions match your filters"
34
+ filteredDescription="Adjust the search or filters to review other imported transactions."
35
+ primaryText="Refresh"
36
+ primaryIcon="refresh"
37
+ primaryAction=this.refresh
38
+ docsSlug="fleet-ops/resources/fuel-reports/overview"
39
+ docsTitle="Fuel reports guide"
40
+ docsText="Fuel reports guide"
41
+ }}
42
+ />
43
+ {{else}}
44
+ <section class="rounded-md border border-dashed border-gray-300 bg-white p-8 text-center shadow-sm dark:border-gray-700 dark:bg-gray-800">
45
+ <div class="mx-auto flex h-11 w-11 items-center justify-center rounded-md bg-blue-50 text-blue-600 dark:bg-blue-900/20 dark:text-blue-300">
46
+ <FaIcon @icon="receipt" />
47
+ </div>
48
+ <h2 class="mt-3 text-sm font-bold text-gray-900 dark:text-gray-100">{{this.emptyStateTitle}}</h2>
49
+ <p class="mx-auto mt-1 max-w-2xl text-xs leading-5 text-gray-500 dark:text-gray-300">{{this.emptyStateMessage}}</p>
50
+ <div class="mt-4 flex flex-wrap items-center justify-center gap-2">
51
+ <Button @icon="gas-pump" @text="Open Fuel Integrations" @type="primary" @size="sm" @onClick={{transition-to "connectivity.fuel-providers.index"}} />
52
+ <Button @icon="refresh" @text="Refresh" @size="sm" @onClick={{this.refresh}} />
53
+ </div>
54
+ </section>
55
+ {{/if}}
56
+ </div>
57
+ </div>
58
+ {{outlet}}
@@ -0,0 +1 @@
1
+ {{outlet}}
@@ -11,5 +11,23 @@
11
11
  @actionButtons={{this.actionButtons}}
12
12
  @bulkActions={{this.bulkActions}}
13
13
  @controller={{this}}
14
+ @emptyStateComponent={{component
15
+ "table/empty-state"
16
+ icon="triangle-exclamation"
17
+ title="No issues reported"
18
+ description="Track vehicle, driver, facility, and service issues here so follow-up work stays visible."
19
+ filteredTitle="No issues match your filters"
20
+ filteredDescription="Clear the search or filters to review other reported issues."
21
+ primaryText="New issue"
22
+ primaryIcon="plus"
23
+ primaryAction=this.issueActions.transition.create
24
+ secondaryText="Import"
25
+ secondaryIcon="upload"
26
+ secondaryAction=this.issueActions.import
27
+ docsSlug="fleet-ops/resources/issues/overview"
28
+ docsTitle="Issues guide"
29
+ docsText="Issues guide"
30
+ docsSource="fleet-ops-empty-issues"
31
+ }}
14
32
  />
15
- {{outlet}}
33
+ {{outlet}}
@@ -10,5 +10,23 @@
10
10
  @actionButtons={{this.actionButtons}}
11
11
  @bulkActions={{this.bulkActions}}
12
12
  @controller={{this}}
13
+ @emptyStateComponent={{component
14
+ "table/empty-state"
15
+ icon="location-dot"
16
+ title="Add your first place"
17
+ description="Places keep frequent pickup, dropoff, facility, and service locations ready for orders and routing."
18
+ filteredTitle="No places match your filters"
19
+ filteredDescription="Adjust the search or filters to find another saved location."
20
+ primaryText="New place"
21
+ primaryIcon="plus"
22
+ primaryAction=this.placeActions.transition.create
23
+ secondaryText="Import"
24
+ secondaryIcon="upload"
25
+ secondaryAction=this.placeActions.import
26
+ docsSlug="fleet-ops/resources/places/overview"
27
+ docsTitle="Places guide"
28
+ docsText="Places guide"
29
+ docsSource="fleet-ops-empty-places"
30
+ }}
13
31
  />
14
- {{outlet}}
32
+ {{outlet}}
@@ -12,6 +12,24 @@
12
12
  @actionButtons={{this.actionButtons}}
13
13
  @bulkActions={{this.bulkActions}}
14
14
  @controller={{this}}
15
+ @emptyStateComponent={{component
16
+ "table/empty-state"
17
+ icon="truck"
18
+ title="Add your first vehicle"
19
+ description="Vehicles connect assignments, live tracking, fleet capacity, maintenance, and compliance history."
20
+ filteredTitle="No vehicles match your filters"
21
+ filteredDescription="Adjust the search or filters to find another vehicle."
22
+ primaryText="New vehicle"
23
+ primaryIcon="plus"
24
+ primaryAction=this.vehicleActions.transition.create
25
+ secondaryText="Import"
26
+ secondaryIcon="upload"
27
+ secondaryAction=this.vehicleActions.import
28
+ docsSlug="fleet-ops/resources/vehicles/overview"
29
+ docsTitle="Vehicles guide"
30
+ docsText="Vehicle guide"
31
+ docsSource="fleet-ops-empty-vehicles"
32
+ }}
15
33
  />
16
34
  {{else}}
17
35
  <Layout::Section::Header @title={{t "resource.vehicles"}} @actionsWrapperClass="space-x-1">
@@ -46,4 +64,4 @@
46
64
  </Layout::Resource::CardsGrid>
47
65
  </Layout::Section::Body>
48
66
  {{/if}}
49
- {{outlet}}
67
+ {{outlet}}
@@ -11,5 +11,23 @@
11
11
  @actionButtons={{this.actionButtons}}
12
12
  @bulkActions={{this.bulkActions}}
13
13
  @controller={{this}}
14
+ @emptyStateComponent={{component
15
+ "table/empty-state"
16
+ icon="building"
17
+ title="Add your first vendor"
18
+ description="Vendors let your team manage external carriers, service providers, and operational partners."
19
+ filteredTitle="No vendors match your filters"
20
+ filteredDescription="Adjust the search or filters to find another vendor."
21
+ primaryText="New vendor"
22
+ primaryIcon="plus"
23
+ primaryAction=this.vendorActions.transition.create
24
+ secondaryText="Import"
25
+ secondaryIcon="upload"
26
+ secondaryAction=this.vendorActions.import
27
+ docsSlug="fleet-ops/resources/vendors/overview"
28
+ docsTitle="Vendors guide"
29
+ docsText="Vendor guide"
30
+ docsSource="fleet-ops-empty-vendors"
31
+ }}
14
32
  />
15
- {{outlet}}
33
+ {{outlet}}
@@ -11,5 +11,17 @@
11
11
  @actionButtons={{this.actionButtons}}
12
12
  @bulkActions={{this.bulkActions}}
13
13
  @controller={{this}}
14
+ @emptyStateComponent={{component
15
+ "table/empty-state"
16
+ icon="plug"
17
+ title="No integrated vendors yet"
18
+ description="Integrated vendor records appear here after vendor integrations are connected and synchronized."
19
+ filteredTitle="No integrated vendors match your filters"
20
+ filteredDescription="Adjust the search or filters to find another integrated vendor."
21
+ docsSlug="fleet-ops/resources/vendors/integrated-vendors"
22
+ docsTitle="Integrated vendors guide"
23
+ docsText="Integrated vendors guide"
24
+ docsSource="fleet-ops-empty-integrated-vendors"
25
+ }}
14
26
  />
15
- {{outlet}}
27
+ {{outlet}}
@@ -47,6 +47,24 @@
47
47
  @filterPickerGridCols="3"
48
48
  @filterPickerWidth="700px"
49
49
  @controller={{this}}
50
+ @emptyStateComponent={{component
51
+ "table/empty-state"
52
+ icon="paper-plane"
53
+ title="Create your first order"
54
+ description="Orders are the center of FleetOps: plan routes, assign drivers and vehicles, track progress, and collect proof."
55
+ filteredTitle="No orders match your filters"
56
+ filteredDescription="Adjust the search, bulk search, or filters to find another order."
57
+ primaryText="New order"
58
+ primaryIcon="plus"
59
+ primaryAction=this.orderActions.transition.create
60
+ secondaryText="Import"
61
+ secondaryIcon="upload"
62
+ secondaryAction=this.importOrders
63
+ docsSlug="fleet-ops/operations/orders/overview"
64
+ docsTitle="Orders guide"
65
+ docsText="Order guide"
66
+ docsSource="fleet-ops-empty-orders"
67
+ }}
50
68
  @tfootVerticalOffset="7"
51
69
  @tfootVerticalOffsetElements="#next-view-section-subheader,.next-table-wrapper > table > thead,.next-map-container-topbar"
52
70
  />
@@ -88,4 +106,4 @@
88
106
  </Layout::Section::Body>
89
107
  {{/if}}
90
108
 
91
- {{outlet}}
109
+ {{outlet}}
@@ -10,5 +10,23 @@
10
10
  @actionButtons={{this.actionButtons}}
11
11
  @bulkActions={{this.bulkActions}}
12
12
  @controller={{this}}
13
+ @emptyStateComponent={{component
14
+ "table/empty-state"
15
+ icon="route"
16
+ title="Set up your first service rate"
17
+ description="Service rates define how FleetOps prices routes, zones, distance, and other service rules."
18
+ filteredTitle="No service rates match your filters"
19
+ filteredDescription="Adjust the search or filters to find another service rate."
20
+ primaryText="New service rate"
21
+ primaryIcon="plus"
22
+ primaryAction=this.serviceRateActions.transition.create
23
+ secondaryText="Refresh"
24
+ secondaryIcon="refresh"
25
+ secondaryAction=this.serviceRateActions.refresh
26
+ docsSlug="fleet-ops/operations/service-rates/overview"
27
+ docsTitle="Service rates guide"
28
+ docsText="Service rates guide"
29
+ docsSource="fleet-ops-empty-service-rates"
30
+ }}
13
31
  />
14
- {{outlet}}
32
+ {{outlet}}
@@ -28,6 +28,20 @@
28
28
  @paginationMeta={{@model.meta}}
29
29
  @page={{this.page}}
30
30
  @onPageChange={{fn (mut this.page)}}
31
+ @emptyStateComponent={{component
32
+ "table/empty-state"
33
+ icon="credit-card"
34
+ title="No payment transactions yet"
35
+ description="Completed customer payments will appear here once Stripe starts sending transaction records."
36
+ filteredTitle="No payments match your filters"
37
+ filteredDescription="Adjust filters or refresh the page to review other payment transactions."
38
+ primaryText="Refresh"
39
+ primaryIcon="refresh"
40
+ primaryAction=this.refreshPayments
41
+ docsSlug="fleet-ops/settings/payments"
42
+ docsTitle="Payments guide"
43
+ docsText="Payments guide"
44
+ }}
31
45
  />
32
46
  {{else}}
33
47
  <div class="container">
@@ -62,4 +76,4 @@
62
76
  </div>
63
77
  {{/if}}
64
78
  {{/if}}
65
- </Layout::Section::Body>
79
+ </Layout::Section::Body>
@@ -495,10 +495,13 @@ export const sensorTypes = [
495
495
  ];
496
496
 
497
497
  export const deviceStatuses = [
498
+ { label: 'Never Connected', value: 'never_connected', description: 'Device has not reported a provider heartbeat yet.' },
498
499
  { label: 'Inactive', value: 'inactive', description: 'Device record exists but has not yet been activated or assigned.' },
499
500
  { label: 'Active', value: 'active', description: 'Device is online and actively communicating with the platform.' },
500
501
  { label: 'Online', value: 'online', description: 'Device is currently connected and transmitting live data.' },
502
+ { label: 'Recently Offline', value: 'recently_offline', description: 'Device stopped reporting recently and may reconnect without intervention.' },
501
503
  { label: 'Offline', value: 'offline', description: 'Device is powered off or has not transmitted data within the expected interval.' },
504
+ { label: 'Long Offline', value: 'long_offline', description: 'Device has not reported telemetry for more than a day.' },
502
505
  { label: 'Sleeping', value: 'sleeping', description: 'Device in low-power mode awaiting wake event or scheduled reporting interval.' },
503
506
  { label: 'Idle', value: 'idle', description: 'Device is powered and connected but not moving or transmitting new telemetry.' },
504
507
  { label: 'Maintenance', value: 'maintenance', description: 'Device is undergoing repair, firmware update, or service maintenance.' },
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/cell/telematic-provider';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/cell/telematic-status';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/fuel-integration/form';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/fuel-integration/hub';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/fuel-integration/matching-priority';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/modals/assigned-orders';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/modals/attach-telematic-device';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/modals/fleet-assign-driver';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/modals/fleet-assign-vehicle';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/modals/telematic-connection-diagnostics';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/order/card';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/telematic/hub';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/telematic/settings';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/telematic/tab-empty-state';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/widget/fuel-providers';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/fuel-providers/details/sync';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/index/details/devices';
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/fuel-providers/details/transactions';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/index/details';
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/fuel-providers/details';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/index/edit';
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/fuel-providers/edit';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/index/details/index';
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/fuel-providers/index';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/index/new';
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/fuel-providers/new';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/details/attachments';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/details/devices';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/details/events';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/details/index';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/details/logs';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/details/sensors';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/details';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/edit';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/connectivity/telematics/new';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/management/fuel-transactions/index/details';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/controllers/management/fuel-transactions/index';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/index/details/index';
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/fuel-providers/details/index';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/index/details/events';
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/fuel-providers/details/matching';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/fuel-providers/details/settings';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/fuel-providers/details/sync';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/index/details/devices';
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/fuel-providers/details/transactions';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/index/details';
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/fuel-providers/details';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/index/edit';
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/fuel-providers/edit';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/fuel-providers/index';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/index/new';
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/fuel-providers/new';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/fuel-providers';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/details/attachments';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/details/devices';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/details/events';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/details/index';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/details/logs';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/details/sensors';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/details';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/edit';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/connectivity/telematics/new';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/management/drivers/index/details/activity';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/management/fuel-transactions/index/details';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/management/fuel-transactions/index';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/routes/management/fuel-transactions';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/services/fuel-integration-actions';
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/templates/connectivity/telematics/index/details/index';
1
+ export { default } from '@fleetbase/fleetops-engine/templates/connectivity/fuel-providers/details/index';