@fleetbase/fleetops-engine 0.6.70 → 0.6.72
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.
- package/RELEASE.md +18 -47
- package/addon/components/admin/tracking-page-settings.hbs +56 -0
- package/addon/components/admin/tracking-page-settings.js +67 -0
- package/addon/components/device/form.hbs +2 -2
- package/addon/components/driver/details.hbs +1 -1
- package/addon/components/driver/form.hbs +1 -1
- package/addon/components/equipment/form.hbs +1 -1
- package/addon/components/layout/fleet-ops-sidebar.js +11 -3
- package/addon/components/maintenance/form.hbs +3 -3
- package/addon/components/map/google-live-map.js +2 -2
- package/addon/components/map/leaflet-live-map.js +45 -32
- package/addon/components/orchestrator/phase-builder.js +2 -1
- package/addon/components/orchestrator-workbench.hbs +7 -1
- package/addon/components/orchestrator-workbench.js +16 -2
- package/addon/components/order/details/activity.hbs +8 -6
- package/addon/components/order/details/activity.js +9 -0
- package/addon/components/order/details.hbs +29 -0
- package/addon/components/order/details.js +26 -0
- package/addon/components/order/form/details.hbs +30 -4
- package/addon/components/order/form/details.js +46 -0
- package/addon/components/order/form/route.hbs +5 -3
- package/addon/components/order/form/route.js +24 -1
- package/addon/components/order/form.hbs +12 -0
- package/addon/components/order/form.js +21 -1
- package/addon/components/order/kanban.js +72 -0
- package/addon/components/order-config-manager/activity-flow.js +45 -10
- package/addon/components/order-config-manager/lifecycle.hbs +250 -0
- package/addon/components/order-config-manager/lifecycle.js +358 -0
- package/addon/components/order-config-manager.js +5 -1
- package/addon/components/service-rate/details.hbs +1 -1
- package/addon/components/service-rate/form.hbs +1 -1
- package/addon/components/tracking-page/full-view.hbs +276 -0
- package/addon/components/tracking-page/full-view.js +474 -0
- package/addon/components/tracking-page/locale-selector.js +30 -0
- package/addon/components/tracking-page/map.hbs +44 -0
- package/addon/components/tracking-page/map.js +328 -0
- package/addon/components/tracking-page/order-list.hbs +35 -0
- package/addon/components/tracking-page/public-view.hbs +60 -0
- package/addon/components/tracking-page/settings-preview.hbs +21 -0
- package/addon/components/tracking-page/settings-preview.js +23 -0
- package/addon/components/tracking-page/verify-panel.hbs +109 -0
- package/addon/components/tracking-page.hbs +142 -0
- package/addon/components/tracking-page.js +564 -0
- package/addon/components/trailer/form.hbs +2 -2
- package/addon/components/vehicle/form.hbs +3 -3
- package/addon/components/warranty/form.hbs +2 -2
- package/addon/components/widget/live-fleet.js +54 -6
- package/addon/components/widget/proof-of-delivery.hbs +49 -0
- package/addon/components/widget/proof-of-delivery.js +62 -0
- package/addon/components/work-order/form.hbs +3 -3
- package/addon/controllers/analytics/reports/index.js +10 -1
- package/addon/controllers/connectivity/devices/index/details.js +1 -0
- package/addon/controllers/connectivity/devices/index.js +8 -2
- package/addon/controllers/connectivity/events/index.js +31 -1
- package/addon/controllers/connectivity/sensors/index/details.js +1 -1
- package/addon/controllers/connectivity/sensors/index.js +37 -1
- package/addon/controllers/maintenance/equipment/index/details.js +2 -2
- package/addon/controllers/maintenance/equipment/index.js +28 -9
- package/addon/controllers/maintenance/inspection-forms/index.js +32 -12
- package/addon/controllers/maintenance/inspection-submissions/index/details.js +2 -1
- package/addon/controllers/maintenance/inspection-submissions/index.js +49 -9
- package/addon/controllers/maintenance/maintenances/index/details.js +2 -0
- package/addon/controllers/maintenance/maintenances/index.js +20 -1
- package/addon/controllers/maintenance/parts/index/details.js +2 -2
- package/addon/controllers/maintenance/parts/index.js +28 -8
- package/addon/controllers/maintenance/schedules/index.js +33 -4
- package/addon/controllers/maintenance/work-orders/index/details.js +3 -3
- package/addon/controllers/maintenance/work-orders/index.js +39 -8
- package/addon/controllers/management/contacts/customers.js +13 -0
- package/addon/controllers/management/contacts/index.js +43 -1
- package/addon/controllers/management/drivers/index/details.js +1 -0
- package/addon/controllers/management/drivers/index.js +32 -2
- package/addon/controllers/management/fleets/index/details.js +1 -0
- package/addon/controllers/management/fleets/index.js +39 -1
- package/addon/controllers/management/fuel-reports/index.js +22 -2
- package/addon/controllers/management/fuel-transactions/index.js +43 -7
- package/addon/controllers/management/issues/index/details.js +1 -0
- package/addon/controllers/management/issues/index.js +22 -2
- package/addon/controllers/management/places/index.js +36 -1
- package/addon/controllers/management/trailers/index/details.js +1 -0
- package/addon/controllers/management/trailers/index.js +50 -2
- package/addon/controllers/management/vehicles/index/details.js +1 -0
- package/addon/controllers/management/vehicles/index.js +33 -2
- package/addon/controllers/management/vendors/index.js +26 -2
- package/addon/controllers/operations/orders/index/details.js +50 -7
- package/addon/controllers/operations/orders/index.js +59 -4
- package/addon/controllers/operations/scheduler/index.js +45 -14
- package/addon/controllers/operations/service-rates/index.js +15 -1
- package/addon/controllers/settings/index.js +6 -0
- package/addon/controllers/settings/map.js +75 -0
- package/addon/controllers/settings/orchestrator.js +8 -6
- package/addon/controllers/settings/tracking-page.js +212 -0
- package/addon/extension.js +97 -1
- package/addon/helpers/parcel-box-image.js +16 -0
- package/addon/routes/operations/orders/index/details.js +1 -0
- package/addon/routes/operations/orders/index/new.js +5 -4
- package/addon/routes/operations/scheduler/index.js +1 -1
- package/addon/routes/settings/tracking-page.js +31 -0
- package/addon/routes.js +1 -0
- package/addon/services/contact-actions.js +1 -0
- package/addon/services/customer-actions.js +2 -1
- package/addon/services/device-actions.js +1 -0
- package/addon/services/device-event-actions.js +1 -0
- package/addon/services/driver-actions.js +4 -13
- package/addon/services/equipment-actions.js +1 -0
- package/addon/services/fleet-actions.js +1 -0
- package/addon/services/fuel-report-actions.js +1 -0
- package/addon/services/inspection-form-actions.js +1 -0
- package/addon/services/inspection-submission-actions.js +1 -0
- package/addon/services/integrated-vendor-actions.js +1 -0
- package/addon/services/issue-actions.js +1 -0
- package/addon/services/location.js +69 -21
- package/addon/services/maintenance-actions.js +1 -0
- package/addon/services/maintenance-schedule-actions.js +2 -1
- package/addon/services/map-settings.js +28 -0
- package/addon/services/order-actions.js +7 -0
- package/addon/services/order-allocation.js +1 -1
- package/addon/services/order-presentation.js +129 -0
- package/addon/services/part-actions.js +1 -0
- package/addon/services/place-actions.js +1 -0
- package/addon/services/sensor-actions.js +1 -0
- package/addon/services/service-area-actions.js +1 -0
- package/addon/services/service-rate-actions.js +1 -0
- package/addon/services/telematic-actions.js +1 -0
- package/addon/services/trailer-actions.js +4 -14
- package/addon/services/vehicle-actions.js +4 -13
- package/addon/services/vendor-actions.js +1 -0
- package/addon/services/work-order-actions.js +1 -0
- package/addon/services/zone-actions.js +1 -0
- package/addon/styles/fleetops-engine.css +1391 -0
- package/addon/templates/analytics/reports/index/details.hbs +1 -0
- package/addon/templates/analytics/reports/index.hbs +1 -0
- package/addon/templates/connectivity/devices/index/details.hbs +1 -0
- package/addon/templates/connectivity/devices/index.hbs +1 -0
- package/addon/templates/connectivity/events/index.hbs +1 -0
- package/addon/templates/connectivity/sensors/index/details.hbs +1 -0
- package/addon/templates/connectivity/sensors/index.hbs +1 -0
- package/addon/templates/maintenance/equipment/index/details.hbs +1 -0
- package/addon/templates/maintenance/equipment/index.hbs +2 -0
- package/addon/templates/maintenance/inspection-forms/index/details.hbs +1 -0
- package/addon/templates/maintenance/inspection-forms/index.hbs +1 -0
- package/addon/templates/maintenance/inspection-submissions/index/details.hbs +1 -0
- package/addon/templates/maintenance/inspection-submissions/index.hbs +1 -0
- package/addon/templates/maintenance/maintenances/index/details.hbs +1 -0
- package/addon/templates/maintenance/maintenances/index.hbs +1 -0
- package/addon/templates/maintenance/parts/index/details.hbs +1 -0
- package/addon/templates/maintenance/parts/index.hbs +2 -0
- package/addon/templates/maintenance/schedules/index/details.hbs +1 -0
- package/addon/templates/maintenance/schedules/index.hbs +2 -0
- package/addon/templates/maintenance/work-orders/index/details.hbs +1 -0
- package/addon/templates/maintenance/work-orders/index.hbs +1 -0
- package/addon/templates/management/contacts/customers/details.hbs +1 -0
- package/addon/templates/management/contacts/customers.hbs +1 -0
- package/addon/templates/management/contacts/index/details.hbs +1 -0
- package/addon/templates/management/contacts/index.hbs +1 -0
- package/addon/templates/management/contacts.hbs +1 -0
- package/addon/templates/management/drivers/index/details.hbs +1 -0
- package/addon/templates/management/drivers/index.hbs +2 -0
- package/addon/templates/management/fleets/index/details.hbs +1 -0
- package/addon/templates/management/fleets/index.hbs +1 -0
- package/addon/templates/management/fuel-reports/index/details.hbs +1 -0
- package/addon/templates/management/fuel-reports/index.hbs +1 -0
- package/addon/templates/management/fuel-transactions/index.hbs +1 -0
- package/addon/templates/management/issues/index/details.hbs +1 -0
- package/addon/templates/management/issues/index.hbs +1 -0
- package/addon/templates/management/places/index/details.hbs +1 -0
- package/addon/templates/management/places/index.hbs +1 -0
- package/addon/templates/management/trailers/index/details.hbs +1 -0
- package/addon/templates/management/trailers/index.hbs +2 -0
- package/addon/templates/management/vehicles/index/details.hbs +1 -0
- package/addon/templates/management/vehicles/index.hbs +2 -0
- package/addon/templates/management/vendors/index/details.hbs +1 -0
- package/addon/templates/management/vendors/index.hbs +2 -0
- package/addon/templates/management/vendors/integrated.hbs +1 -0
- package/addon/templates/operations/orders/index/details.hbs +1 -0
- package/addon/templates/operations/orders/index.hbs +1 -0
- package/addon/templates/operations/service-rates/index/details.hbs +1 -0
- package/addon/templates/operations/service-rates/index.hbs +1 -0
- package/addon/templates/settings/map.hbs +46 -0
- package/addon/templates/settings/tracking-page.hbs +318 -0
- package/addon/utils/identity-cell-resource.js +2 -56
- package/addon/utils/map-default-view.js +132 -0
- package/addon/utils/normalize-order-config-flow.js +6 -1
- package/addon/utils/placeholder-images.js +4 -69
- package/addon/utils/resource-descriptors/assets.js +2 -57
- package/addon/utils/resource-descriptors/helpers.js +23 -122
- package/addon/utils/resource-descriptors/operations.js +2 -61
- package/addon/utils/resource-descriptors/people.js +3 -142
- package/addon/utils/resource-descriptors/shared.js +18 -0
- package/addon/utils/tracking-live-source.js +123 -0
- package/addon/utils/tracking-page-theme.js +123 -0
- package/app/components/admin/tracking-page-settings.js +1 -0
- package/app/components/tracking-page/full-view.js +1 -0
- package/app/components/tracking-page/locale-selector.js +1 -0
- package/app/components/tracking-page/map.js +1 -0
- package/app/components/tracking-page/order-list.js +1 -0
- package/app/components/tracking-page/public-view.js +1 -0
- package/app/components/tracking-page/settings-preview.js +1 -0
- package/app/components/tracking-page/verify-panel.js +1 -0
- package/app/components/tracking-page.js +1 -0
- package/app/components/widget/proof-of-delivery.js +1 -0
- package/app/controllers/settings/tracking-page.js +1 -0
- package/app/helpers/parcel-box-image.js +1 -0
- package/app/routes/settings/tracking-page.js +1 -0
- package/app/services/order-presentation.js +1 -0
- package/app/templates/settings/tracking-page.js +1 -0
- package/app/utils/map-default-view.js +1 -0
- package/app/utils/tracking-live-source.js +1 -0
- package/app/utils/tracking-page-theme.js +1 -0
- package/composer.json +2 -2
- package/extension.json +1 -1
- package/package.json +4 -4
- package/scripts/pest-bootstrap.php +4 -0
- package/server/config/fleetops.php +4 -0
- package/server/migrations/2026_10_08_000001_create_tracking_sessions_tables.php +51 -0
- package/server/migrations/2026_10_10_000001_add_trashed_index_to_device_events.php +40 -0
- package/server/migrations/2026_10_10_000002_add_trashed_index_to_positions.php +40 -0
- package/server/migrations/2026_10_12_000001_add_deleted_at_to_tracking_sessions_tables.php +32 -0
- package/server/resources/views/labels/default.php +2 -2
- package/server/resources/views/labels/entity-label.php +2 -2
- package/server/resources/views/labels/waypoint-label.php +2 -2
- package/server/src/Auth/Schemas/FleetOps.php +5 -0
- package/server/src/Console/Commands/ProcessOperationalAlerts.php +1 -0
- package/server/src/Console/Commands/PruneTelematicsData.php +101 -26
- package/server/src/Events/OrderChanged.php +257 -0
- package/server/src/Events/OrderDriverUnassigned.php +68 -0
- package/server/src/Exceptions/OrderEditLockedException.php +32 -0
- package/server/src/Expansions/CompanyExpansion.php +3 -2
- package/server/src/Expansions/UserExpansion.php +12 -10
- package/server/src/Http/Controllers/Api/v1/CustomerController.php +108 -18
- package/server/src/Http/Controllers/Api/v1/DriverController.php +95 -10
- package/server/src/Http/Controllers/Api/v1/EntityController.php +66 -0
- package/server/src/Http/Controllers/Api/v1/FleetController.php +10 -4
- package/server/src/Http/Controllers/Api/v1/OrderController.php +139 -36
- package/server/src/Http/Controllers/Api/v1/PayloadController.php +76 -8
- package/server/src/Http/Controllers/Api/v1/PlaceController.php +3 -3
- package/server/src/Http/Controllers/Api/v1/TrackingNumberController.php +6 -32
- package/server/src/Http/Controllers/Api/v1/VehicleController.php +5 -0
- package/server/src/Http/Controllers/Internal/v1/ContactController.php +3 -0
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +10 -0
- package/server/src/Http/Controllers/Internal/v1/FleetController.php +16 -2
- package/server/src/Http/Controllers/Internal/v1/InspectionSubmissionController.php +13 -8
- package/server/src/Http/Controllers/Internal/v1/IssueController.php +2 -0
- package/server/src/Http/Controllers/Internal/v1/MaintenanceController.php +4 -2
- package/server/src/Http/Controllers/Internal/v1/OrchestrationController.php +93 -11
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +118 -28
- package/server/src/Http/Controllers/Internal/v1/PositionController.php +22 -0
- package/server/src/Http/Controllers/Internal/v1/ProofController.php +55 -4
- package/server/src/Http/Controllers/Internal/v1/SettingController.php +303 -10
- package/server/src/Http/Controllers/Internal/v1/TrailerController.php +1 -0
- package/server/src/Http/Controllers/Internal/v1/VehicleController.php +1 -0
- package/server/src/Http/Controllers/Public/TrackingController.php +518 -0
- package/server/src/Http/Filter/ContactFilter.php +1 -1
- package/server/src/Http/Filter/InspectionFormFilter.php +23 -0
- package/server/src/Http/Filter/InspectionSubmissionFilter.php +23 -0
- package/server/src/Http/Filter/MaintenanceFilter.php +23 -0
- package/server/src/Http/Filter/OrderFilter.php +39 -4
- package/server/src/Http/Filter/ProofFilter.php +18 -0
- package/server/src/Http/Filter/RouteFilter.php +18 -0
- package/server/src/Http/Filter/TelematicFilter.php +23 -0
- package/server/src/Http/Filter/WarrantyFilter.php +23 -0
- package/server/src/Http/Requests/CancelOrderRequest.php +2 -1
- package/server/src/Http/Resources/v1/Concerns/ResolvesPublicRelationFields.php +14 -1
- package/server/src/Http/Resources/v1/Index/Customer.php +18 -0
- package/server/src/Http/Resources/v1/Index/Order.php +11 -2
- package/server/src/Http/Resources/v1/PublicOrderTracking.php +153 -0
- package/server/src/Http/Resources/v1/TrackingNumber.php +8 -34
- package/server/src/Http/Resources/v1/Zone.php +31 -23
- package/server/src/Jobs/FinalizeApiOrderCreation.php +3 -1
- package/server/src/Jobs/ProcessAllocationJob.php +16 -6
- package/server/src/Jobs/PublishTrackingUpdate.php +50 -0
- package/server/src/Listeners/HandleGeofenceEntered.php +31 -15
- package/server/src/Listeners/HandleOrderCanceled.php +9 -1
- package/server/src/Listeners/HandleUserRemovedFromCompany.php +2 -1
- package/server/src/Listeners/PublishTrackingUpdates.php +27 -0
- package/server/src/Mail/CustomerCredentialsMail.php +4 -2
- package/server/src/Models/AssetConnection.php +3 -0
- package/server/src/Models/Contact.php +3 -0
- package/server/src/Models/Device.php +28 -0
- package/server/src/Models/DeviceEvent.php +7 -0
- package/server/src/Models/Driver.php +20 -7
- package/server/src/Models/Entity.php +12 -4
- package/server/src/Models/Fleet.php +11 -32
- package/server/src/Models/FleetDriver.php +3 -0
- package/server/src/Models/FleetVehicle.php +3 -0
- package/server/src/Models/FuelReport.php +5 -13
- package/server/src/Models/Issue.php +4 -16
- package/server/src/Models/Order.php +234 -11
- package/server/src/Models/OrderConfig.php +129 -0
- package/server/src/Models/Payload.php +227 -35
- package/server/src/Models/Place.php +7 -1
- package/server/src/Models/ServiceArea.php +7 -0
- package/server/src/Models/ServiceRate.php +7 -17
- package/server/src/Models/TrackingNumber.php +109 -6
- package/server/src/Models/TrackingSession.php +33 -0
- package/server/src/Models/TrackingSessionGrant.php +22 -0
- package/server/src/Models/TrackingStatus.php +6 -0
- package/server/src/Models/Vehicle.php +21 -2
- package/server/src/Models/Vendor.php +7 -0
- package/server/src/Models/Waypoint.php +13 -4
- package/server/src/Notifications/OrderAssigned.php +2 -1
- package/server/src/Notifications/OrderCanceled.php +7 -1
- package/server/src/Notifications/OrderChanged.php +87 -0
- package/server/src/Notifications/OrderCompleted.php +2 -1
- package/server/src/Notifications/OrderDispatchFailed.php +2 -1
- package/server/src/Notifications/OrderDispatched.php +2 -1
- package/server/src/Notifications/OrderFailed.php +2 -1
- package/server/src/Notifications/OrderUnassigned.php +66 -0
- package/server/src/Notifications/WaypointCompleted.php +2 -1
- package/server/src/Observers/CompanyUserObserver.php +8 -7
- package/server/src/Observers/DriverObserver.php +6 -1
- package/server/src/Observers/OrderObserver.php +141 -1
- package/server/src/Observers/TrackingNumberObserver.php +18 -6
- package/server/src/Observers/UserObserver.php +2 -1
- package/server/src/Observers/VehicleObserver.php +8 -3
- package/server/src/Orchestration/Engines/RouteSequencingEngine.php +21 -3
- package/server/src/Orchestration/Engines/VroomOrchestrationEngine.php +38 -8
- package/server/src/Orchestration/OrchestrationEngineRegistry.php +61 -1
- package/server/src/Orchestration/Support/OrchestratorSettings.php +61 -0
- package/server/src/Orchestration/Support/RouteMetrics.php +165 -0
- package/server/src/Providers/EventServiceProvider.php +11 -0
- package/server/src/Providers/FleetOpsServiceProvider.php +13 -0
- package/server/src/Support/ApiCacheThrottle.php +76 -0
- package/server/src/Support/LiveOrderQuery.php +3 -1
- package/server/src/Support/OrderEdit.php +365 -0
- package/server/src/Support/OrderEditPolicy.php +292 -0
- package/server/src/Support/ProfileAccountManager.php +54 -1
- package/server/src/Support/ResolvesOrderServiceStops.php +5 -0
- package/server/src/Support/SocketChannels.php +346 -0
- package/server/src/Support/Telematics/TelematicService.php +7 -2
- package/server/src/Support/Telematics/Telemetry/Inbox.php +8 -1
- package/server/src/Support/TrackingChannel.php +55 -0
- package/server/src/Support/TrackingCode.php +242 -0
- package/server/src/Support/TrackingPage/TrackingAccess.php +356 -0
- package/server/src/Support/TrackingPage/TrackingPageConfig.php +264 -0
- package/server/src/Support/TrackingPage/TrackingRecipient.php +111 -0
- package/server/src/Support/TrackingPage/TrackingResolver.php +201 -0
- package/server/src/Support/TrackingPage/TrackingTarget.php +40 -0
- package/server/src/Support/TrackingPage/TrackingView.php +543 -0
- package/server/src/Support/TrackingPublisher.php +261 -0
- package/server/src/Support/TrackingScope.php +182 -0
- package/server/src/Support/TrackingUpdate.php +402 -0
- package/server/src/Support/Utils.php +15 -3
- package/server/src/Traits/HasTrackingNumber.php +2 -0
- package/server/src/routes.php +39 -7
- package/server/tests/ApiCustomerControllerContractsTest.php +54 -7
- package/server/tests/ApiDriverPasswordContractsTest.php +25 -21
- package/server/tests/ApiEntityControllerContractsTest.php +84 -0
- package/server/tests/ApiOrderControllerContractsTest.php +245 -0
- package/server/tests/ApiPayloadControllerContractsTest.php +121 -0
- package/server/tests/ApiPlaceControllerContractsTest.php +1 -1
- package/server/tests/ApiTrackingNumberControllerContractsTest.php +6 -9
- package/server/tests/CompactResourceSerializationTest.php +23 -59
- package/server/tests/ControllerFilterContractsTest.php +1 -1
- package/server/tests/CustomerContactIdentitySafetyTest.php +1 -1
- package/server/tests/EventContractsTest.php +26 -60
- package/server/tests/ExpansionContractsTest.php +15 -2
- package/server/tests/Feature/Http/Api/CustomerControllerHelperSeamsTest.php +29 -3
- package/server/tests/Feature/Http/Api/DriverControllerAuthFlowsTest.php +23 -0
- package/server/tests/Feature/Http/Api/OrderControllerNearbyFiltersTest.php +16 -16
- package/server/tests/Feature/Http/Api/OrderControllerQueryFiltersTest.php +41 -14
- package/server/tests/Feature/Http/Api/TrackingNumberControllerHelpersTest.php +57 -22
- package/server/tests/Feature/Http/Internal/DriverControllerCreateRecordTest.php +23 -9
- package/server/tests/Feature/Http/Internal/OrchestrationControllerContractsTest.php +171 -1
- package/server/tests/Feature/Http/Internal/OrderControllerActivityFlowsTest.php +72 -0
- package/server/tests/Feature/Http/Internal/OrderControllerContractsTest.php +110 -14
- package/server/tests/Feature/Http/Internal/OrderControllerCreateRecordTest.php +26 -0
- package/server/tests/Feature/Http/Internal/OrderControllerHelpersTest.php +7 -5
- package/server/tests/Feature/Http/Internal/PositionControllerReplayChannelTest.php +135 -0
- package/server/tests/Feature/Http/Internal/ProofControllerContractsTest.php +3 -3
- package/server/tests/Feature/Http/Internal/ProofControllerRecentTest.php +170 -0
- package/server/tests/Feature/Http/Public/TrackingControllerTest.php +495 -0
- package/server/tests/IndexCustomerPhotoTest.php +151 -0
- package/server/tests/ModelAccessorContractsTest.php +4 -3
- package/server/tests/NotificationAndMailContractsTest.php +5 -8
- package/server/tests/ObserverContractsTest.php +72 -10
- package/server/tests/OrderActivityFlowRegressionTest.php +3 -2
- package/server/tests/OrderConfigLifecycleTest.php +120 -0
- package/server/tests/OrderFilterExecutionTest.php +167 -2
- package/server/tests/ProcessAllocationJobContractsTest.php +20 -0
- package/server/tests/PublicOrderTrackingResourceTest.php +221 -0
- package/server/tests/QueueJobContractsTest.php +2 -1
- package/server/tests/RequestContractsTest.php +1 -1
- package/server/tests/RouteRegistrationExecutionTest.php +26 -0
- package/server/tests/RouteSequencingEngineTest.php +17 -0
- package/server/tests/SettingControllerContractsTest.php +110 -0
- package/server/tests/Support/TrackingPageDatabase.php +200 -0
- package/server/tests/TenantScopingTest.php +206 -0
- package/server/tests/TrackingPageSettingsTest.php +343 -0
- package/server/tests/Unit/Console/PruneTelematicsDataCommandTest.php +51 -0
- package/server/tests/Unit/Events/OrderDispatchFailedTest.php +2 -1
- package/server/tests/Unit/Http/Filter/ContactFilterAddressTest.php +61 -0
- package/server/tests/Unit/Http/Resources/IndexOrderResourceTest.php +30 -0
- package/server/tests/Unit/Jobs/FinalizeApiOrderCreationDispatchGuardTest.php +266 -0
- package/server/tests/Unit/Listeners/HandleGeofenceEnteredTest.php +182 -22
- package/server/tests/Unit/Listeners/HandleUserRemovedFromCompanyTest.php +5 -0
- package/server/tests/Unit/Models/DriverAssignVehicleTest.php +81 -0
- package/server/tests/Unit/Models/FleetTest.php +4 -3
- package/server/tests/Unit/Models/OrderCancelReasonTest.php +143 -0
- package/server/tests/Unit/Models/OrderPayloadConfigAndDistanceTest.php +60 -0
- package/server/tests/Unit/Models/OrderPayloadRouteTest.php +4 -2
- package/server/tests/Unit/Models/PayloadTest.php +18 -4
- package/server/tests/Unit/Models/ServiceRatePersistenceAndServicabilityTest.php +2 -2
- package/server/tests/Unit/Models/TrackingNumberTest.php +67 -6
- package/server/tests/Unit/Models/VehicleTest.php +16 -2
- package/server/tests/Unit/Models/WaypointTest.php +4 -3
- package/server/tests/Unit/Notifications/OrderChangeNotificationsTest.php +59 -0
- package/server/tests/Unit/Notifications/TerminalOrderNotificationsTest.php +3 -3
- package/server/tests/Unit/Observers/DriverDeletionCleanupTest.php +158 -0
- package/server/tests/Unit/Observers/FleetOpsCompanyUserAndServiceAreaObserversTest.php +20 -0
- package/server/tests/Unit/Observers/ObserverListenerSeamsTest.php +3 -3
- package/server/tests/Unit/Observers/OrderAssignmentObserverTest.php +100 -0
- package/server/tests/Unit/Observers/OrderDeleteCascadeTest.php +213 -0
- package/server/tests/Unit/Observers/VehicleObserverDeleteTest.php +67 -0
- package/server/tests/Unit/Orchestration/EngineSelectionAndRouteMetricsTest.php +336 -0
- package/server/tests/Unit/Orchestration/Engines/VroomOrchestrationEngineLifecycleTest.php +8 -1
- package/server/tests/Unit/Support/ApiCacheDependenciesTest.php +347 -0
- package/server/tests/Unit/Support/OrderEditPolicyTest.php +156 -0
- package/server/tests/Unit/Support/OrderOperationsTest.php +514 -0
- package/server/tests/Unit/Support/OsrmProofAndIssueFilterTest.php +4 -3
- package/server/tests/Unit/Support/ProfileAccountManagerTest.php +141 -0
- package/server/tests/Unit/Support/QuerySeamsTest.php +5 -1
- package/server/tests/Unit/Support/SocketChannelsTest.php +396 -0
- package/server/tests/Unit/Support/TrackingChannelTest.php +232 -0
- package/server/tests/Unit/Support/TrackingCodeTest.php +186 -0
- package/server/tests/Unit/Support/TrackingPage/TrackingAccessTest.php +200 -0
- package/server/tests/Unit/Support/TrackingPage/TrackingRecipientTest.php +51 -0
- package/server/tests/Unit/Support/TrackingPage/TrackingResolverTest.php +181 -0
- package/server/tests/Unit/Support/TrackingPage/TrackingViewTest.php +479 -0
- package/server/tests/Unit/Support/TrackingPublisherTest.php +425 -0
- package/server/tests/Unit/Support/TrackingUpdateTest.php +363 -0
- package/server/tests/Unit/Support/UtilsAdditionalTest.php +9 -0
- package/server/tests/Unit/Support/UtilsGeoMatrixAndVendorTest.php +25 -0
- package/server/tests/VehicleResourceContractsTest.php +46 -0
- package/server/tests/VroomOrchestrationEngineTest.php +34 -1
- package/server/tests/ZoneGeofenceSettingsResourceTest.php +121 -0
- package/translations/ar-ae.yml +274 -0
- package/translations/bg-bg.yaml +274 -0
- package/translations/en-us.yaml +347 -0
- package/translations/es-pa.yaml +274 -0
- package/translations/fr-fr.yaml +274 -0
- package/translations/mn-mn.yaml +274 -0
- package/translations/pt-br.yaml +274 -0
- package/translations/ru-ru.yaml +276 -2
- package/translations/uk-ua.yaml +275 -1
- package/translations/vi-vn.yaml +274 -0
- package/addon/components/cell/contact-identity.hbs +0 -1
- package/addon/components/cell/customer-identity.hbs +0 -1
- package/addon/components/cell/driver-identity.hbs +0 -1
- package/addon/components/cell/fleet-identity.hbs +0 -1
- package/addon/components/cell/order-identity.hbs +0 -1
- package/addon/components/cell/place-identity.hbs +0 -1
- package/addon/components/cell/vehicle-identity.hbs +0 -1
- package/addon/components/cell/vendor-identity.hbs +0 -1
- package/addon/components/contact/pill.hbs +0 -24
- package/addon/components/contact/summary.hbs +0 -1
- package/addon/components/customer/pill.hbs +0 -24
- package/addon/components/customer/summary.hbs +0 -1
- package/addon/components/driver/pill.hbs +0 -24
- package/addon/components/driver/summary.hbs +0 -1
- package/addon/components/fleet/pill.hbs +0 -24
- package/addon/components/fleet/summary.hbs +0 -1
- package/addon/components/order/pill.hbs +0 -24
- package/addon/components/order/summary.hbs +0 -1
- package/addon/components/place/pill.hbs +0 -24
- package/addon/components/place/summary.hbs +0 -1
- package/addon/components/select-option/contact.hbs +0 -12
- package/addon/components/select-option/customer.hbs +0 -12
- package/addon/components/select-option/driver.hbs +0 -12
- package/addon/components/select-option/fleet.hbs +0 -12
- package/addon/components/select-option/order.hbs +0 -12
- package/addon/components/select-option/place.hbs +0 -12
- package/addon/components/select-option/vehicle.hbs +0 -12
- package/addon/components/select-option/vendor.hbs +0 -12
- package/addon/components/vehicle/pill.hbs +0 -24
- package/addon/components/vehicle/summary.hbs +0 -1
- package/addon/components/vendor/pill.hbs +0 -24
- package/addon/components/vendor/summary.hbs +0 -1
- package/app/components/cell/contact-identity.js +0 -1
- package/app/components/cell/customer-identity.js +0 -1
- package/app/components/cell/driver-identity.js +0 -1
- package/app/components/cell/fleet-identity.js +0 -1
- package/app/components/cell/order-identity.js +0 -1
- package/app/components/cell/place-identity.js +0 -1
- package/app/components/cell/vehicle-identity.js +0 -1
- package/app/components/cell/vendor-identity.js +0 -1
- package/app/components/contact/pill.js +0 -1
- package/app/components/contact/summary.js +0 -1
- package/app/components/customer/pill.js +0 -1
- package/app/components/customer/summary.js +0 -1
- package/app/components/driver/pill.js +0 -1
- package/app/components/driver/summary.js +0 -1
- package/app/components/fleet/pill.js +0 -1
- package/app/components/fleet/summary.js +0 -1
- package/app/components/order/pill.js +0 -1
- package/app/components/order/summary.js +0 -1
- package/app/components/place/pill.js +0 -1
- package/app/components/place/summary.js +0 -1
- package/app/components/select-option/contact.js +0 -1
- package/app/components/select-option/customer.js +0 -1
- package/app/components/select-option/driver.js +0 -1
- package/app/components/select-option/fleet.js +0 -1
- package/app/components/select-option/order.js +0 -1
- package/app/components/select-option/place.js +0 -1
- package/app/components/select-option/vehicle.js +0 -1
- package/app/components/select-option/vendor.js +0 -1
- package/app/components/vehicle/pill.js +0 -1
- package/app/components/vehicle/summary.js +0 -1
- package/app/components/vendor/pill.js +0 -1
- package/app/components/vendor/summary.js +0 -1
|
@@ -15,7 +15,22 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
15
15
|
@service intl;
|
|
16
16
|
|
|
17
17
|
/** query params */
|
|
18
|
-
@tracked queryParams = [
|
|
18
|
+
@tracked queryParams = this.fleetActions.queryParamsFor([
|
|
19
|
+
'page',
|
|
20
|
+
'limit',
|
|
21
|
+
'sort',
|
|
22
|
+
'query',
|
|
23
|
+
'public_id',
|
|
24
|
+
'zone',
|
|
25
|
+
'service_area',
|
|
26
|
+
'parent_fleet',
|
|
27
|
+
'vendor',
|
|
28
|
+
'created_by',
|
|
29
|
+
'updated_by',
|
|
30
|
+
'status',
|
|
31
|
+
'task',
|
|
32
|
+
'name',
|
|
33
|
+
]);
|
|
19
34
|
@tracked page = 1;
|
|
20
35
|
@tracked limit;
|
|
21
36
|
@tracked sort = '-created_at';
|
|
@@ -33,11 +48,13 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
33
48
|
get actionButtons() {
|
|
34
49
|
return [
|
|
35
50
|
{
|
|
51
|
+
id: 'refresh',
|
|
36
52
|
icon: 'refresh',
|
|
37
53
|
onClick: this.fleetActions.refresh,
|
|
38
54
|
helpText: this.intl.t('common.refresh'),
|
|
39
55
|
},
|
|
40
56
|
{
|
|
57
|
+
id: 'create',
|
|
41
58
|
text: this.intl.t('common.new'),
|
|
42
59
|
type: 'primary',
|
|
43
60
|
icon: 'plus',
|
|
@@ -45,6 +62,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
45
62
|
permission: 'fleet-ops create fleet',
|
|
46
63
|
},
|
|
47
64
|
{
|
|
65
|
+
id: 'import',
|
|
48
66
|
text: this.intl.t('common.import'),
|
|
49
67
|
type: 'magic',
|
|
50
68
|
icon: 'upload',
|
|
@@ -52,6 +70,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
52
70
|
permission: 'fleet-ops import fleet',
|
|
53
71
|
},
|
|
54
72
|
{
|
|
73
|
+
id: 'export',
|
|
55
74
|
text: this.intl.t('common.export'),
|
|
56
75
|
icon: 'long-arrow-up',
|
|
57
76
|
iconClass: 'rotate-icon-45',
|
|
@@ -68,6 +87,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
68
87
|
|
|
69
88
|
return [
|
|
70
89
|
{
|
|
90
|
+
id: 'bulk-delete',
|
|
71
91
|
label: this.intl.t('common.delete-selected-count', { count: selected.length }),
|
|
72
92
|
class: 'text-red-500',
|
|
73
93
|
fn: this.fleetActions.bulkDelete,
|
|
@@ -80,6 +100,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
80
100
|
get columns() {
|
|
81
101
|
return [
|
|
82
102
|
{
|
|
103
|
+
id: 'name',
|
|
83
104
|
sticky: true,
|
|
84
105
|
label: this.intl.t('column.name'),
|
|
85
106
|
valuePath: 'name',
|
|
@@ -93,6 +114,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
93
114
|
filterComponent: 'filter/string',
|
|
94
115
|
},
|
|
95
116
|
{
|
|
117
|
+
id: 'service-area-name',
|
|
96
118
|
label: this.intl.t('column.service-area'),
|
|
97
119
|
cellComponent: 'cell/service-area-identity',
|
|
98
120
|
permission: 'fleet-ops view service-area',
|
|
@@ -107,6 +129,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
107
129
|
model: 'service-area',
|
|
108
130
|
},
|
|
109
131
|
{
|
|
132
|
+
id: 'parent-fleet-name',
|
|
110
133
|
label: this.intl.t('column.parent-fleet'),
|
|
111
134
|
cellComponent: 'cell/fleet-identity',
|
|
112
135
|
permission: 'fleet-ops view fleet',
|
|
@@ -120,6 +143,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
120
143
|
model: 'fleet',
|
|
121
144
|
},
|
|
122
145
|
{
|
|
146
|
+
id: 'vendor-name',
|
|
123
147
|
label: this.intl.t('column.vendor'),
|
|
124
148
|
cellComponent: 'cell/vendor-identity',
|
|
125
149
|
permission: 'fleet-ops view vendor',
|
|
@@ -134,6 +158,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
134
158
|
model: 'vendor',
|
|
135
159
|
},
|
|
136
160
|
{
|
|
161
|
+
id: 'zone-name',
|
|
137
162
|
label: this.intl.t('column.zone'),
|
|
138
163
|
cellComponent: 'cell/zone-identity',
|
|
139
164
|
permission: 'fleet-ops view zone',
|
|
@@ -147,6 +172,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
147
172
|
model: 'zone',
|
|
148
173
|
},
|
|
149
174
|
{
|
|
175
|
+
id: 'public-id',
|
|
150
176
|
label: this.intl.t('column.id'),
|
|
151
177
|
valuePath: 'public_id',
|
|
152
178
|
cellComponent: 'click-to-copy',
|
|
@@ -158,6 +184,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
158
184
|
filterComponent: 'filter/string',
|
|
159
185
|
},
|
|
160
186
|
{
|
|
187
|
+
id: 'drivers-count',
|
|
161
188
|
label: this.intl.t('column.manpower'),
|
|
162
189
|
valuePath: 'drivers_count',
|
|
163
190
|
resizable: true,
|
|
@@ -165,6 +192,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
165
192
|
filterable: false,
|
|
166
193
|
},
|
|
167
194
|
{
|
|
195
|
+
id: 'drivers-online-count',
|
|
168
196
|
label: this.intl.t('column.active-manpower'),
|
|
169
197
|
valuePath: 'drivers_online_count',
|
|
170
198
|
hidden: true,
|
|
@@ -173,6 +201,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
173
201
|
filterable: false,
|
|
174
202
|
},
|
|
175
203
|
{
|
|
204
|
+
id: 'task',
|
|
176
205
|
label: this.intl.t('column.task'),
|
|
177
206
|
valuePath: 'task',
|
|
178
207
|
cellComponent: 'table/cell/base',
|
|
@@ -182,6 +211,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
182
211
|
filterComponent: 'filter/string',
|
|
183
212
|
},
|
|
184
213
|
{
|
|
214
|
+
id: 'status',
|
|
185
215
|
label: this.intl.t('column.status'),
|
|
186
216
|
valuePath: 'status',
|
|
187
217
|
cellComponent: 'table/cell/status',
|
|
@@ -194,6 +224,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
194
224
|
filterOptions: fleetOpsOptions('fleetStatuses'),
|
|
195
225
|
},
|
|
196
226
|
{
|
|
227
|
+
id: 'created-at',
|
|
197
228
|
label: this.intl.t('column.created-at'),
|
|
198
229
|
valuePath: 'createdAt',
|
|
199
230
|
sortParam: 'created_at',
|
|
@@ -203,6 +234,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
203
234
|
filterComponent: 'filter/date',
|
|
204
235
|
},
|
|
205
236
|
{
|
|
237
|
+
id: 'updated-at',
|
|
206
238
|
label: this.intl.t('column.updated-at'),
|
|
207
239
|
valuePath: 'updatedAt',
|
|
208
240
|
sortParam: 'updated_at',
|
|
@@ -213,6 +245,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
213
245
|
filterComponent: 'filter/date',
|
|
214
246
|
},
|
|
215
247
|
{
|
|
248
|
+
id: 'row-actions',
|
|
216
249
|
label: '',
|
|
217
250
|
cellComponent: 'table/cell/dropdown',
|
|
218
251
|
ddButtonText: false,
|
|
@@ -225,21 +258,25 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
225
258
|
width: 60,
|
|
226
259
|
actions: [
|
|
227
260
|
{
|
|
261
|
+
id: 'view',
|
|
228
262
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.fleet') }),
|
|
229
263
|
fn: this.fleetActions.transition.view,
|
|
230
264
|
permission: 'fleet-ops view fleet',
|
|
231
265
|
},
|
|
232
266
|
{
|
|
267
|
+
id: 'edit',
|
|
233
268
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.fleet') }),
|
|
234
269
|
fn: this.fleetActions.transition.edit,
|
|
235
270
|
permission: 'fleet-ops update fleet',
|
|
236
271
|
},
|
|
237
272
|
{
|
|
273
|
+
id: 'assign-driver',
|
|
238
274
|
label: this.intl.t('fleet.actions.assign-driver'),
|
|
239
275
|
permission: 'fleet-ops assign-driver-for fleet',
|
|
240
276
|
fn: this.fleetActions.assignDriver,
|
|
241
277
|
},
|
|
242
278
|
{
|
|
279
|
+
id: 'assign-vehicle',
|
|
243
280
|
label: this.intl.t('fleet.actions.assign-vehicle'),
|
|
244
281
|
permission: 'fleet-ops assign-vehicle-for fleet',
|
|
245
282
|
fn: this.fleetActions.assignVehicle,
|
|
@@ -248,6 +285,7 @@ export default class ManagementFleetsIndexController extends Controller {
|
|
|
248
285
|
separator: true,
|
|
249
286
|
},
|
|
250
287
|
{
|
|
288
|
+
id: 'delete',
|
|
251
289
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.fleet') }),
|
|
252
290
|
fn: this.fleetActions.delete,
|
|
253
291
|
permission: 'fleet-ops delete fleet',
|
|
@@ -10,7 +10,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
10
10
|
@service intl;
|
|
11
11
|
|
|
12
12
|
/** query params */
|
|
13
|
-
@tracked queryParams = [
|
|
13
|
+
@tracked queryParams = this.fuelReportActions.queryParamsFor([
|
|
14
14
|
'page',
|
|
15
15
|
'limit',
|
|
16
16
|
'sort',
|
|
@@ -27,7 +27,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
27
27
|
'country',
|
|
28
28
|
'volume',
|
|
29
29
|
'odometer',
|
|
30
|
-
];
|
|
30
|
+
]);
|
|
31
31
|
@tracked page = 1;
|
|
32
32
|
@tracked limit;
|
|
33
33
|
@tracked sort = '-created_at';
|
|
@@ -47,11 +47,13 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
47
47
|
get actionButtons() {
|
|
48
48
|
return [
|
|
49
49
|
{
|
|
50
|
+
id: 'refresh',
|
|
50
51
|
icon: 'refresh',
|
|
51
52
|
onClick: this.fuelReportActions.refresh,
|
|
52
53
|
helpText: this.intl.t('common.refresh'),
|
|
53
54
|
},
|
|
54
55
|
{
|
|
56
|
+
id: 'create',
|
|
55
57
|
text: this.intl.t('common.new'),
|
|
56
58
|
type: 'primary',
|
|
57
59
|
icon: 'plus',
|
|
@@ -59,6 +61,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
59
61
|
permission: 'fleet-ops create fuel-report',
|
|
60
62
|
},
|
|
61
63
|
{
|
|
64
|
+
id: 'import',
|
|
62
65
|
text: this.intl.t('common.import'),
|
|
63
66
|
type: 'magic',
|
|
64
67
|
icon: 'upload',
|
|
@@ -66,6 +69,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
66
69
|
permission: 'fleet-ops import fuel-report',
|
|
67
70
|
},
|
|
68
71
|
{
|
|
72
|
+
id: 'export',
|
|
69
73
|
text: this.intl.t('common.export'),
|
|
70
74
|
icon: 'long-arrow-up',
|
|
71
75
|
iconClass: 'rotate-icon-45',
|
|
@@ -82,6 +86,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
82
86
|
|
|
83
87
|
return [
|
|
84
88
|
{
|
|
89
|
+
id: 'bulk-delete',
|
|
85
90
|
label: this.intl.t('common.delete-selected-count', { count: selected.length }),
|
|
86
91
|
class: 'text-red-500',
|
|
87
92
|
fn: this.fuelReportActions.bulkDelete,
|
|
@@ -94,6 +99,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
94
99
|
get columns() {
|
|
95
100
|
return [
|
|
96
101
|
{
|
|
102
|
+
id: 'public-id',
|
|
97
103
|
sticky: true,
|
|
98
104
|
label: this.intl.t('column.id'),
|
|
99
105
|
valuePath: 'public_id',
|
|
@@ -106,6 +112,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
106
112
|
filterComponent: 'filter/string',
|
|
107
113
|
},
|
|
108
114
|
{
|
|
115
|
+
id: 'reporter-name',
|
|
109
116
|
label: this.intl.t('column.reporter'),
|
|
110
117
|
valuePath: 'reporter_name',
|
|
111
118
|
cellComponent: 'table/cell/user-identity',
|
|
@@ -120,6 +127,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
120
127
|
model: 'user',
|
|
121
128
|
},
|
|
122
129
|
{
|
|
130
|
+
id: 'driver-name',
|
|
123
131
|
label: this.intl.t('column.driver'),
|
|
124
132
|
valuePath: 'driver_name',
|
|
125
133
|
cellComponent: 'cell/driver-identity',
|
|
@@ -136,6 +144,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
136
144
|
model: 'driver',
|
|
137
145
|
},
|
|
138
146
|
{
|
|
147
|
+
id: 'vehicle-name',
|
|
139
148
|
label: this.intl.t('column.vehicle'),
|
|
140
149
|
valuePath: 'vehicle_name',
|
|
141
150
|
cellComponent: 'cell/vehicle-identity',
|
|
@@ -153,6 +162,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
153
162
|
modelNamePath: 'displayName',
|
|
154
163
|
},
|
|
155
164
|
{
|
|
165
|
+
id: 'status',
|
|
156
166
|
label: this.intl.t('column.status'),
|
|
157
167
|
valuePath: 'status',
|
|
158
168
|
cellComponent: 'table/cell/status',
|
|
@@ -163,6 +173,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
163
173
|
filterOptions: ['draft', 'pending-approval', 'approved', 'rejected', 'revised', 'submitted', 'in-review', 'confirmed', 'processed', 'archived', 'cancelled'],
|
|
164
174
|
},
|
|
165
175
|
{
|
|
176
|
+
id: 'source',
|
|
166
177
|
label: 'Source',
|
|
167
178
|
valuePath: 'source',
|
|
168
179
|
resizable: true,
|
|
@@ -172,6 +183,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
172
183
|
filterOptions: ['manual', 'import', 'fuel_provider'],
|
|
173
184
|
},
|
|
174
185
|
{
|
|
186
|
+
id: 'provider',
|
|
175
187
|
label: 'Provider',
|
|
176
188
|
valuePath: 'provider',
|
|
177
189
|
resizable: true,
|
|
@@ -180,6 +192,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
180
192
|
filterComponent: 'filter/string',
|
|
181
193
|
},
|
|
182
194
|
{
|
|
195
|
+
id: 'volume',
|
|
183
196
|
label: this.intl.t('column.volume'),
|
|
184
197
|
valuePath: 'volume',
|
|
185
198
|
cellComponent: 'click-to-copy',
|
|
@@ -190,6 +203,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
190
203
|
filterComponent: 'filter/string',
|
|
191
204
|
},
|
|
192
205
|
{
|
|
206
|
+
id: 'odometer',
|
|
193
207
|
label: this.intl.t('column.odometer'),
|
|
194
208
|
valuePath: 'odometer',
|
|
195
209
|
cellComponent: 'click-to-copy',
|
|
@@ -200,6 +214,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
200
214
|
filterComponent: 'filter/string',
|
|
201
215
|
},
|
|
202
216
|
{
|
|
217
|
+
id: 'created-at',
|
|
203
218
|
label: this.intl.t('column.created-at'),
|
|
204
219
|
valuePath: 'createdAt',
|
|
205
220
|
sortParam: 'created_at',
|
|
@@ -209,6 +224,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
209
224
|
filterComponent: 'filter/date',
|
|
210
225
|
},
|
|
211
226
|
{
|
|
227
|
+
id: 'updated-at',
|
|
212
228
|
label: this.intl.t('column.updated-at'),
|
|
213
229
|
valuePath: 'updatedAt',
|
|
214
230
|
sortParam: 'updated_at',
|
|
@@ -219,6 +235,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
219
235
|
filterComponent: 'filter/date',
|
|
220
236
|
},
|
|
221
237
|
{
|
|
238
|
+
id: 'row-actions',
|
|
222
239
|
label: '',
|
|
223
240
|
cellComponent: 'table/cell/dropdown',
|
|
224
241
|
ddButtonText: false,
|
|
@@ -231,11 +248,13 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
231
248
|
width: 60,
|
|
232
249
|
actions: [
|
|
233
250
|
{
|
|
251
|
+
id: 'view',
|
|
234
252
|
label: this.intl.t('common.view-resource', { resource: this.intl.t('resource.fuel-report') }),
|
|
235
253
|
fn: this.fuelReportActions.transition.view,
|
|
236
254
|
permission: 'fleet-ops view fuel-report',
|
|
237
255
|
},
|
|
238
256
|
{
|
|
257
|
+
id: 'edit',
|
|
239
258
|
label: this.intl.t('common.edit-resource', { resource: this.intl.t('resource.fuel-report') }),
|
|
240
259
|
fn: this.fuelReportActions.transition.edit,
|
|
241
260
|
permission: 'fleet-ops update fuel-report',
|
|
@@ -244,6 +263,7 @@ export default class ManagementFuelReportsIndexController extends Controller {
|
|
|
244
263
|
separator: true,
|
|
245
264
|
},
|
|
246
265
|
{
|
|
266
|
+
id: 'delete',
|
|
247
267
|
label: this.intl.t('common.delete-resource', { resource: this.intl.t('resource.fuel-report') }),
|
|
248
268
|
fn: this.fuelReportActions.delete,
|
|
249
269
|
permission: 'fleet-ops delete fuel-report',
|
|
@@ -63,11 +63,13 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
63
63
|
get actionButtons() {
|
|
64
64
|
return [
|
|
65
65
|
{
|
|
66
|
+
id: 'refresh',
|
|
66
67
|
icon: 'refresh',
|
|
67
68
|
onClick: this.refresh,
|
|
68
69
|
helpText: 'Refresh',
|
|
69
70
|
},
|
|
70
71
|
{
|
|
72
|
+
id: 'fuel-integrations',
|
|
71
73
|
icon: 'gas-pump',
|
|
72
74
|
text: 'Fuel Integrations',
|
|
73
75
|
onClick: () => this.hostRouter.transitionTo('console.fleet-ops.connectivity.fuel-providers.index'),
|
|
@@ -85,6 +87,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
85
87
|
|
|
86
88
|
return [
|
|
87
89
|
{
|
|
90
|
+
id: 'bulk-reprocess',
|
|
88
91
|
label: `Reprocess ${selected.length} selected`,
|
|
89
92
|
fn: () => this.confirmAction('reprocess', selected),
|
|
90
93
|
permission: 'fleet-ops update fuel-provider-transaction',
|
|
@@ -95,6 +98,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
95
98
|
get columns() {
|
|
96
99
|
return [
|
|
97
100
|
{
|
|
101
|
+
id: 'provider-transaction-id',
|
|
98
102
|
sticky: true,
|
|
99
103
|
label: 'Transaction',
|
|
100
104
|
valuePath: 'provider_transaction_id',
|
|
@@ -107,6 +111,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
107
111
|
filterComponent: 'filter/string',
|
|
108
112
|
},
|
|
109
113
|
{
|
|
114
|
+
id: 'provider',
|
|
110
115
|
label: 'Provider',
|
|
111
116
|
valuePath: 'provider',
|
|
112
117
|
resizable: true,
|
|
@@ -115,6 +120,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
115
120
|
filterComponent: 'filter/string',
|
|
116
121
|
},
|
|
117
122
|
{
|
|
123
|
+
id: 'sync-status',
|
|
118
124
|
label: 'Status',
|
|
119
125
|
valuePath: 'sync_status',
|
|
120
126
|
cellComponent: 'fuel-transaction-status',
|
|
@@ -125,6 +131,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
125
131
|
filterOptions: ['imported', 'matched', 'unmatched', 'reviewed', 'ignored', 'duplicate', 'error'],
|
|
126
132
|
},
|
|
127
133
|
{
|
|
134
|
+
id: 'vehicle-name',
|
|
128
135
|
label: 'Vehicle',
|
|
129
136
|
valuePath: 'vehicle_name',
|
|
130
137
|
cellComponent: 'cell/vehicle-identity',
|
|
@@ -139,28 +146,33 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
139
146
|
modelNamePath: 'displayName',
|
|
140
147
|
},
|
|
141
148
|
{
|
|
149
|
+
id: 'vehicle-card-id',
|
|
142
150
|
label: 'Card / Internal',
|
|
143
151
|
valuePath: 'vehicle_card_id',
|
|
144
152
|
resizable: true,
|
|
145
153
|
},
|
|
146
154
|
{
|
|
155
|
+
id: 'trip-number',
|
|
147
156
|
label: 'Trip',
|
|
148
157
|
valuePath: 'trip_number',
|
|
149
158
|
resizable: true,
|
|
150
159
|
hidden: true,
|
|
151
160
|
},
|
|
152
161
|
{
|
|
162
|
+
id: 'station-name',
|
|
153
163
|
label: 'Station',
|
|
154
164
|
valuePath: 'station_name',
|
|
155
165
|
resizable: true,
|
|
156
166
|
},
|
|
157
167
|
{
|
|
168
|
+
id: 'volume',
|
|
158
169
|
label: 'Liters',
|
|
159
170
|
valuePath: 'volume',
|
|
160
171
|
resizable: true,
|
|
161
172
|
sortable: true,
|
|
162
173
|
},
|
|
163
174
|
{
|
|
175
|
+
id: 'amount',
|
|
164
176
|
label: 'Amount',
|
|
165
177
|
valuePath: 'amount',
|
|
166
178
|
cellComponent: 'table/cell/currency',
|
|
@@ -168,6 +180,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
168
180
|
sortable: true,
|
|
169
181
|
},
|
|
170
182
|
{
|
|
183
|
+
id: 'fuel-report-id',
|
|
171
184
|
label: 'Fuel Report',
|
|
172
185
|
valuePath: 'fuel_report_id',
|
|
173
186
|
cellComponent: 'cell/fuel-report-identity',
|
|
@@ -177,6 +190,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
177
190
|
resizable: true,
|
|
178
191
|
},
|
|
179
192
|
{
|
|
193
|
+
id: 'transaction-at',
|
|
180
194
|
label: 'Date',
|
|
181
195
|
valuePath: 'transactionAt',
|
|
182
196
|
sortParam: 'transaction_at',
|
|
@@ -187,6 +201,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
187
201
|
filterComponent: 'filter/date',
|
|
188
202
|
},
|
|
189
203
|
{
|
|
204
|
+
id: 'row-actions',
|
|
190
205
|
label: '',
|
|
191
206
|
cellComponent: 'table/cell/dropdown',
|
|
192
207
|
ddButtonText: false,
|
|
@@ -198,14 +213,35 @@ export default class ManagementFuelTransactionsIndexController extends Controlle
|
|
|
198
213
|
sticky: 'right',
|
|
199
214
|
width: 60,
|
|
200
215
|
actions: [
|
|
201
|
-
{ label: 'Review Details', fn: this.openDetails, permission: 'fleet-ops view fuel-provider-transaction' },
|
|
202
|
-
{
|
|
216
|
+
{ id: 'open-details', label: 'Review Details', fn: this.openDetails, permission: 'fleet-ops view fuel-provider-transaction' },
|
|
217
|
+
{
|
|
218
|
+
id: 'open-fuel-report',
|
|
219
|
+
label: 'Open Fuel Report',
|
|
220
|
+
fn: this.openFuelReport,
|
|
221
|
+
isVisible: (transaction) => Boolean(transaction.fuel_report_id),
|
|
222
|
+
permission: 'fleet-ops view fuel-report',
|
|
223
|
+
},
|
|
203
224
|
{ separator: true },
|
|
204
|
-
{ label: 'Match to Vehicle', fn: this.matchVehicle, permission: 'fleet-ops update fuel-provider-transaction' },
|
|
205
|
-
{ label: 'Match to Order', fn: this.matchOrder, permission: 'fleet-ops update fuel-provider-transaction' },
|
|
206
|
-
{
|
|
207
|
-
|
|
208
|
-
|
|
225
|
+
{ id: 'match-vehicle', label: 'Match to Vehicle', fn: this.matchVehicle, permission: 'fleet-ops update fuel-provider-transaction' },
|
|
226
|
+
{ id: 'match-order', label: 'Match to Order', fn: this.matchOrder, permission: 'fleet-ops update fuel-provider-transaction' },
|
|
227
|
+
{
|
|
228
|
+
id: 'reprocess',
|
|
229
|
+
label: 'Reprocess / Rematch',
|
|
230
|
+
fn: (transaction) => this.confirmAction('reprocess', transaction),
|
|
231
|
+
permission: 'fleet-ops update fuel-provider-transaction',
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
id: 'ignore',
|
|
235
|
+
label: 'Ignore Transaction',
|
|
236
|
+
fn: (transaction) => this.confirmAction('ignored', transaction),
|
|
237
|
+
permission: 'fleet-ops review fuel-provider-transaction',
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
id: 'mark-reviewed',
|
|
241
|
+
label: 'Mark Reviewed',
|
|
242
|
+
fn: (transaction) => this.confirmAction('reviewed', transaction),
|
|
243
|
+
permission: 'fleet-ops review fuel-provider-transaction',
|
|
244
|
+
},
|
|
209
245
|
],
|
|
210
246
|
sortable: false,
|
|
211
247
|
filterable: false,
|
|
@@ -20,6 +20,7 @@ export default class ManagementIssuesIndexDetailsController extends Controller {
|
|
|
20
20
|
fn: () => this.hostRouter.transitionTo('console.fleet-ops.management.issues.index.edit', this.model),
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
+
id: 'more',
|
|
23
24
|
icon: 'ellipsis',
|
|
24
25
|
type: 'default',
|
|
25
26
|
items: this.issueActions.workflowItems(this.model, () => this.refreshIssue()),
|