Update MMS43 pricing

This commit is contained in:
Arnaud Delcasse
2025-10-08 09:00:12 +02:00
parent 77f7b00b8f
commit 9b091bc041
2 changed files with 241 additions and 4 deletions

View File

@@ -7,14 +7,30 @@ func NewMMS43PricingService() (*MMS43PricingService, error) {
}
func (s *MMS43PricingService) Prices(params PricingParams) (map[string]Price, error) {
// Calculate passenger price
var passengerAmount float64
// First 2 trips are free (1 return trip or 2 outward trips)
freeTripsRemaining := 2 - params.Beneficiary.History
if freeTripsRemaining > 0 {
// Trip is free
passengerAmount = 0.0
} else {
// Price is 0.15€/km for passenger distance (convert meters to km)
passengerAmount = 0.15 * (float64(params.SharedMobility.PassengerDistance) / 1000.0)
}
// Driver indemnification is always 0.30€/km for driver distance (convert meters to km)
driverAmount := 0.30 * (float64(params.SharedMobility.DriverDistance) / 1000.0)
return map[string]Price{
"passenger": {
Amount: 0.32 * float64(params.SharedMobility.PassengerDistance),
Currency: "EUR/2",
Amount: passengerAmount,
Currency: "EUR",
},
"driver": {
Amount: 0.32 * float64(params.SharedMobility.DriverDistance),
Currency: "EUR/2",
Amount: driverAmount,
Currency: "EUR",
},
}, nil
}