From 58ec94eaeb70473f615e6a145f3fa84eccd36222 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 7 Jan 2026 19:45:12 +0100 Subject: [PATCH] fix: exclude pickup surcharge when self-organized outbound --- src/Service/ParticipantPricingCalculator.php | 7 ++++++- src/Service/ServicePricingCalculator.php | 8 ++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Service/ParticipantPricingCalculator.php b/src/Service/ParticipantPricingCalculator.php index 5fe592b..8e3bf4d 100644 --- a/src/Service/ParticipantPricingCalculator.php +++ b/src/Service/ParticipantPricingCalculator.php @@ -230,7 +230,12 @@ class ParticipantPricingCalculator } } - if (null !== $participant->pickup && null !== $participant->pickup->price) { + // Pickup pricing - only charged when outbound transportation is bus + // BusProNet API ignores pickup surcharges for self-organized (PKW) outbound + $hasOutboundBus = null !== $participant->transportationOutbound + && 'BUS' === $participant->transportationOutbound->subType; + + if ($hasOutboundBus && null !== $participant->pickup && null !== $participant->pickup->price) { $serviceTotal += $participant->pickup->price; } diff --git a/src/Service/ServicePricingCalculator.php b/src/Service/ServicePricingCalculator.php index d367f4f..c4355cf 100644 --- a/src/Service/ServicePricingCalculator.php +++ b/src/Service/ServicePricingCalculator.php @@ -129,8 +129,12 @@ class ServicePricingCalculator } } - // Pickup pricing (unified for both directions) - if (null !== $participant->pickup && null !== $participant->pickup->price) { + // Pickup pricing - only charged when outbound transportation is bus + // BusProNet API ignores pickup surcharges for self-organized (PKW) outbound + $hasOutboundBus = null !== $participant->transportationOutbound + && 'BUS' === $participant->transportationOutbound->subType; + + if ($hasOutboundBus && null !== $participant->pickup && null !== $participant->pickup->price) { if ($participant->pickup->price < 0) { $participantTransportationDiscountCost += $participant->pickup->price; } else {