diff --git a/src/BusProNet/Model/Travel.php b/src/BusProNet/Model/Travel.php index 5d6a8c3..babd402 100644 --- a/src/BusProNet/Model/Travel.php +++ b/src/BusProNet/Model/Travel.php @@ -151,7 +151,6 @@ class Travel { $services = array_filter($this->transportationServices, function (Service $service) use ($direction, $filterAvailable) { return $direction === $service->direction - && $service->price >= 0 && (false === $filterAvailable || $service->available > 0 || null === $service->available); }); diff --git a/src/BusProNet/XmlParser/TravelParser.php b/src/BusProNet/XmlParser/TravelParser.php index 503bab1..40ca784 100644 --- a/src/BusProNet/XmlParser/TravelParser.php +++ b/src/BusProNet/XmlParser/TravelParser.php @@ -178,6 +178,8 @@ class TravelParser extends AbstractParser $service->label = $this->getStringOrNullValue($serviceNode->filterXPath('//text')); $service->direction = $this->getStringOrNullValue($serviceNode->filterXPath('//richtung')); $service->status = $this->getStringOrNullValue($serviceNode->filterXPath('//status')); + $service->price = $this + ->stringToFloat($this->getStringOrNullValue($serviceNode->filterXPath('//preis'))); // Parse optional description from hinweis node $description = $this->getStringOrNullValue($serviceNode->filterXPath('//hinweis')); diff --git a/src/Form/Service/ParticipantFieldOptionsProvider.php b/src/Form/Service/ParticipantFieldOptionsProvider.php index 68c093f..f68620a 100644 --- a/src/Form/Service/ParticipantFieldOptionsProvider.php +++ b/src/Form/Service/ParticipantFieldOptionsProvider.php @@ -406,15 +406,14 @@ class ParticipantFieldOptionsProvider extends AbstractFieldOptionsProvider { $label = $service->label; - // Transportation type indicators removed for cleaner labels + if (null === $service->price || 0.0 === $service->price) { + return $service->label; + } - // Add pricing with discount indication - if (null !== $service->price) { - if ($service->price > 0) { - $label .= sprintf(' (+€%.2f)', $service->price); - } elseif ($service->price < 0) { - $label .= sprintf(' (-€%.2f Discount)', abs($service->price)); - } + if ($service->price > 0) { + $label .= sprintf(' (€%s)', number_format($service->price, 2, ',', '.')); + } else { + $label .= sprintf(' (-%s€ Rabatt)', number_format(abs($service->price), 2, ',', '.')); } // Add availability warning if limited