diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-01-19 00:15:53 +0100 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-01-19 00:15:53 +0100 |
commit | 33cc19fca4c95c58e067e8e2df9bdf427be434e4 (patch) | |
tree | c238fdd563e2288b637f4f4e98b3e23d8d5655a4 | |
parent | 5075461af23c7016f045450808b4302d4109934f (diff) |
Add basic support for discounts (BahnCard 25 / 50 / 100)
-rwxr-xr-x | bin/dbris | 6 | ||||
-rw-r--r-- | lib/Travel/Routing/DE/DBRIS.pm | 26 |
2 files changed, 32 insertions, 0 deletions
@@ -16,6 +16,7 @@ use Travel::Routing::DE::DBRIS; my ( $date, $time, $from, $to ); my $mots; +my $discounts; my $developer_mode; my ( $json_output, $raw_json_output ); my $use_cache = 1; @@ -33,6 +34,7 @@ my $output_reset = -t STDOUT ? "\033[0m" : q{}; GetOptions( 'd|date=s' => \$date, + 'D|discounts=s' => \$discounts, 'h|help' => sub { show_help(0) }, 'm|modes-of-transit=s' => \$mots, 't|time=s' => \$time, @@ -134,6 +136,10 @@ if ($mots) { $opt{modes_of_transit} = [ split( qr{, *}, $mots ) ]; } +if ($discounts) { + $opt{discounts} = [ split( qr{, *}, $discounts ) ]; +} + sub show_help { my ($code) = @_; diff --git a/lib/Travel/Routing/DE/DBRIS.pm b/lib/Travel/Routing/DE/DBRIS.pm index aa4a476..4a984f3 100644 --- a/lib/Travel/Routing/DE/DBRIS.pm +++ b/lib/Travel/Routing/DE/DBRIS.pm @@ -81,6 +81,32 @@ sub new { deutschlandTicketVorhanden => \0 }; + if ( @{ $conf{discount} // [] } ) { + $req->{reisende}[0]{ermaessigungen} = []; + } + for my $discount ( @{ $conf{discounts} // [] } ) { + my ( $type, $class ); + for my $num (qw(25 50 100)) { + if ( $discount eq "bc${num}" ) { + $type = "BAHNCARD${num}"; + $class = 'KLASSE_2'; + } + elsif ( $discount eq "bc${num}-first" ) { + $type = "BAHNCARD${num}"; + $class = 'KLASSE_1'; + } + } + if ($type) { + push( + @{ $req->{reisende}[0]{ermaessigungen} }, + { + art => $type, + klasse => $class, + } + ); + } + } + $self->{strptime_obj} //= DateTime::Format::Strptime->new( pattern => '%Y-%m-%dT%H:%M:%S', time_zone => 'Europe/Berlin', |