wip: transportation services with discount

This commit is contained in:
Björn Fromme
2025-09-10 14:08:44 +02:00
parent a3ea02a136
commit 5469c834a6
3 changed files with 9 additions and 9 deletions
-1
View File
@@ -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);
});
+2
View File
@@ -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'));
@@ -406,15 +406,14 @@ class ParticipantFieldOptionsProvider extends AbstractFieldOptionsProvider
{
$label = $service->label;
// Transportation type indicators removed for cleaner labels
// 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 (null === $service->price || 0.0 === $service->price) {
return $service->label;
}
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