Sixième Étoile — Documentation

Configuration → Behaviour

Complete field-to-behaviour mapping for OrganizationPricingSettings — every field, its default, and exactly where the engine reads it.

OrganizationPricingSettings is the single configuration object the engine receives at calculation time. This page maps every field to the behaviour it controls, grouped by concern.

Admin UI reference: the operator-facing configuration screens are documented in Operators — Pricing Config (FR410).


Base Rate Fields

FieldTypeDefaultWhere it is used
baseRatePerKmnumberDynamic base price: distanceKm × baseRatePerKm / (1 − margin/100)
baseRatePerHournumberDynamic base price: durationMin / 60 × baseRatePerHour / (1 − margin/100)
targetMarginPercentnumberDenominator of both base price formulas; also used in profitability calculations

Both rate fields fall back from VehicleCategory.baseRatePerKm / baseRatePerHour first.


Cost Model Fields

FieldTypeDefaultWhere it is used
fuelConsumptionL100kmnumber | undefined8.0Fuel cost: (distKm / 100) × consumption × pricePerLiter; level 3 in the four-level resolution chain
fuelPricePerLiternumber | undefined1.789 (DIESEL)Fuel cost: overrides CollectAPI and cache results; level 3 in the fuel price chain
tollCostPerKmnumber | undefined0.15Toll estimate fallback: distKm × tollCostPerKm; used when Google Routes and TollGuru APIs return no data
wearCostPerKmnumber | undefined0.10Wear cost: distKm × wearCostPerKm
driverHourlyCostnumber | undefined25.00Driver cost: (durationMin / 60) × driverHourlyCost
emptyReturnCostPercentnumber | undefined100Scaling factor applied to Segment C internal cost: returnCost × (emptyReturnCostPercent / 100)

Profitability Thresholds

FieldTypeDefaultWhere it is used
greenMarginThresholdnumber | undefined20ProfitabilityIndicator = "green" when marginPercent ≥ greenMarginThreshold
orangeMarginThresholdnumber | undefined0ProfitabilityIndicator = "orange" when marginPercent ≥ orangeMarginThreshold; "red" below

Zone Conflict and Multiplier Fields

FieldTypeDefaultWhere it is used
zoneConflictStrategyZoneConflictStrategy | nullspecificity orderresolveZoneConflict(): selects one zone when a point falls in multiple overlapping zones
zoneMultiplierAggregationStrategyZoneMultiplierAggregationStrategy | null"MAX"applyZoneMultiplier(): determines which of pickup/dropoff multiplier is used

Valid values — zoneConflictStrategy: "PRIORITY" "MOST_EXPENSIVE" "CLOSEST" "COMBINED".

Valid values — zoneMultiplierAggregationStrategy: "MAX" "PICKUP_ONLY" "DROPOFF_ONLY" "AVERAGE".


Client Difficulty Multiplier

FieldTypeDefaultWhere it is used
difficultyMultipliersRecord<string, number> | null{1:0.85, 2:0.92, 3:1.0, 4:1.15, 5:1.30}Applied to private contacts with a non-null difficultyScore; skipped for AGENCY / PARTNER contacts

Price Rounding

FieldTypeDefaultWhere it is used
roundingRulestring | null"NONE"applyPriceRounding(): rounds the client TTC price after all multipliers; HT back-calculated from rounded TTC via decimal.js

Valid values: "NONE" "CEIL_1" "CEIL_5" "CEIL_10" "FLOOR_5" "FLOOR_10" "ROUND_5" / "NEAREST_5" "ROUND_10" / "NEAREST_10".


Short-Trip Pricing

FieldTypeDefaultWhere it is used
minimumTripPriceHtnumber | nullnullHard floor applied after all calculations; prevents pricing below a minimum revenue per trip
shortTripThresholdKmnumber | nullnullDistance below which shortTripMultiplier is applied
shortTripMultipliernumber | nullnullMultiplier applied to base price when distance < threshold

Excursion Pricing

FieldTypeDefaultWhere it is used
excursionMinimumHoursnumber | undefinedMinimum billable hours for excursion trips
excursionSurchargePercentnumber | undefinedPercentage surcharge added on top of excursion price
excursionBaseFeenumber | undefinedFixed base fee added to every excursion quote
excursionMinimumPricenumber | undefinedPrice floor for excursion trips
excursionRatePerKmnumber | undefinedPer-km rate used for excursion distance-based pricing

Mise à disposition (DISPO) Pricing

FieldTypeDefaultWhere it is used
dispoIncludedKmPerHournumber | undefinedFree km per hour of dispo; excess billed at dispoOverageRatePerKm
dispoOverageRatePerKmnumber | undefinedRate applied per km above the included km for the booked duration
madTimeBucketsMadTimeBucketData[] | undefinedTime-bucket based pricing catalogue for DISPO; matched on vehicleCategoryId + durationHours
timeBucketInterpolationStrategyTimeBucketInterpolationStrategy | nullHow the engine selects a bucket when no exact match exists: "ROUND_UP" "ROUND_DOWN" "PROPORTIONAL"
autoSwitchToMADboolean | undefinedWhen true, the engine may auto-switch a long-wait transfer to a DISPO quote
airportWaitingTimeMinutesnumber | undefinedStandard airport wait buffer added to mission duration for cost calculation

Round-Trip Settings

FieldTypeDefaultWhere it is used
autoSwitchRoundTripToMADboolean | undefinedWhen true, long round-trips with high waiting time are converted to DISPO
roundTripBuffernumber | nullExtra minutes added to the gap between legs when deciding round-trip mode
maxReturnDistanceKmnumber | nullMaximum empty-return distance before flagging for review
minWaitingTimeForSeparateTransfersnumber | nullMinimum waiting time (minutes) to treat a round-trip as two separate transfer legs

Transit Discount

FieldTypeDefaultWhere it is used
transitDiscountEnabledboolean | undefinedfalseEnables automatic discount when trip passes through configured transit zones
transitDiscountPercentnumber | undefinedPercentage discount applied when transit zone is matched
transitZoneCodesstring[] | undefinedZone codes that qualify for the transit discount

Dense Zone Settings

FieldTypeDefaultWhere it is used
denseZoneSpeedThresholdnumber | nullSpeed (km/h) below which a zone is considered dense; affects time estimation
denseZoneCodesstring[] | undefinedZone codes explicitly marked as dense

Staffing and Compliance

FieldTypeDefaultWhere it is used
staffingSelectionPolicyStaffingSelectionPolicy | nullSelects which compliance staffing arrangement to use: "CHEAPEST" "FASTEST" "PREFER_INTERNAL"
staffingCostParametersExtendedStaffingCostParameters | nullOverride costs for relay driver, double-crew, and multi-day staffing scenarios

Default Estimation (No Vehicle Assigned)

FieldTypeDefaultWhere it is used
enableDefaultEstimationboolean | undefinedWhen true, uses default distance/duration estimates when no vehicle is assigned
defaultEstimationDistanceKmnumber | undefinedDefault service distance used for estimation
defaultEstimationDurationMinutesnumber | undefinedDefault service duration used for estimation
defaultOperatingBaseIdstring | null | undefinedDefault base ID used for shadow calculation when no vehicle is assigned
estimationFallbackStrategyEstimationFallbackStrategy | undefinedRate resolution order when estimating: "CATEGORY_THEN_GLOBAL_THEN_FIXED" "GLOBAL_THEN_CATEGORY_THEN_FIXED" "FIXED_ONLY"

Quick reference — what field to change for common goals

GoalField(s)
Change the dynamic base price levelbaseRatePerKm, baseRatePerHour, targetMarginPercent
Change internal cost modelfuelConsumptionL100km, tollCostPerKm, wearCostPerKm, driverHourlyCost
Change profitability thresholdsgreenMarginThreshold, orangeMarginThreshold
Add zone price roundingroundingRule
Enforce a minimum priceminimumTripPriceHt
Surcharge or discount short tripsshortTripThresholdKm, shortTripMultiplier
Adjust empty return cost weightingemptyReturnCostPercent
Control how overlapping zones are resolvedzoneConflictStrategy
Control which zone multiplier winszoneMultiplierAggregationStrategy
Tune client difficulty multipliersdifficultyMultipliers
Select compliance staffingstaffingSelectionPolicy, staffingCostParameters

See also

Was this page helpful?

On this page