<% require "se_travel.pl"; my $parameter = &vermittlung_encode_parameter; $parameter = &vermittlung_decode_parameter($parameter); $parameter =~ s/
/
/gi; return $parameter; %>
<% # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Detail-Informationen # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # my $sth = $TRAVEL{database}->prepare(qq( SELECT travel_zimmer.zid, travel_zimmer.name AS name, travel_zimmer.typ, travel_zimmer.etage, travel_zimmer.maxpers, travel_zimmer.sterne, travel_preisgruppe.name AS preisgruppe, MIN( IF(travel_zimmer.minpers = 2, travel_zeitraum.preis2, travel_zeitraum.preis1) ) AS min_preis, MAX( IF(travel_zimmer.minpers = 2, travel_zeitraum.preis2, travel_zeitraum.preis1) ) AS max_preis, MIN(travel_zeitraum.min) AS min_belegung, MAX(travel_zeitraum.min) AS max_belegung, travel_zimmer.merkmale, travel_zimmer.minpers, MIN(travel_zeitraum.verpflegung_ohne) AS min_ohne, MAX(travel_zeitraum.verpflegung_ohne) AS max_ohne, MIN(travel_zeitraum.verpflegung_uf) AS min_uf, MAX(travel_zeitraum.verpflegung_uf) AS max_uf, MIN(travel_zeitraum.verpflegung_hp) AS min_hp, MAX(travel_zeitraum.verpflegung_hp) AS max_hp, MIN(travel_zeitraum.verpflegung_vp) AS min_vp, MAX(travel_zeitraum.verpflegung_vp) AS max_vp, travel_zimmer.flaeche, travel_zimmer.endreinigung, travel_zimmer.bild, travel_zimmer.text FROM travel_zimmer LEFT JOIN travel_preisgruppe ON travel_preisgruppe.pid=travel_zimmer.preisgruppe LEFT JOIN travel_zeitraum ON travel_zeitraum.pid=travel_preisgruppe.pid WHERE travel_zimmer.gid='$in{gid}' AND travel_zimmer.zid='$in{zid}' GROUP BY travel_zimmer.zid ORDER BY travel_zimmer.typ, LPAD(travel_zimmer.name,25,"0") ASC )); $sth->execute || &mysql_error($sth); my $zimmer = $sth->fetchrow_hashref; my @zimmer = ( [ "Zimmer" => &_GetZimmerName($zimmer) ], [ "Zimmerart" => $TRAVEL{zimmertypen}->{$zimmer->{typ}} ], [ "Klassifizierung" => &_GetKlassifizierung($zimmer) ], [ "Flaeche" => &_GetFlaeche($zimmer) ], [ "Etage" => &_GetEtage($zimmer) ], [ "Belegung" => &_GetBelegung($zimmer) ], [ "Beschreibung" => $zimmer->{text} ], [ "Endreinigung" => &_GetEndreinigung($zimmer) ], [ "Merkmale" => &_GetMerkmale($zimmer) ], ); my @bild = split(/\|/, $zimmer->{bild}); $zimmer->{bild} = $bild[0]; require SE::Filer::Dateien; my $bild = getsizedImg( url => "$zimmer->{bild}", size => 200 ); my $bildspalte = $zimmer->{bild} && ( !$VERMIETER{tarif} || $VERMIETER{tarif} > 1 || $VERMIETER{sondertarif}) ? qq(Zimmerbild) : ""; my $bildClass = $bildspalte ? "" : qq(wide); my $out = qq(

$LANG{Detail_Information}

); $out .= qq($bildspalte ); $colspan = 0; foreach my $z (@zimmer) { $out .= qq( ) if $z->[1]; } $out .= qq(
$LANG{$z->[0]} $z->[1]
); $out .= $bildspalte ? qq(
) : ""; $out .= qq(
); # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Preise # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # my $zeitraum_filter_anfrage = !$in{off_zeitraum} && $in{feld_von_epoche} ? qq( AND ( TO_DAYS(travel_zeitraum.von) < TO_DAYS(FROM_UNIXTIME($in{feld_bis_epoche})) AND TO_DAYS(travel_zeitraum.bis) >= TO_DAYS(FROM_UNIXTIME($in{feld_von_epoche})) ) ) : ""; my $sth = $TRAVEL{database}->prepare( qq( SELECT travel_zeitraum.*, travel_zimmer.minpers AS belegung_min, travel_zimmer.maxpers AS belegung_max, IF(travel_zeitraum.min_A,travel_zeitraum.min_A,travel_zeitraum.min) AS min_A, DATE_FORMAT(travel_zeitraum.von,'%d.%m.%Y') AS zeitraum_von, DATE_FORMAT(ADDDATE(travel_zeitraum.bis,INTERVAL 1 DAY),'%d.%m.%Y') AS zeitraum_bis, UNIX_TIMESTAMP(travel_zeitraum.von) AS zeitraum_von_epoche, 1 FROM travel_zimmer LEFT JOIN travel_preisgruppe ON travel_preisgruppe.pid=travel_zimmer.preisgruppe LEFT JOIN travel_zeitraum ON travel_zeitraum.pid=travel_preisgruppe.pid WHERE travel_zimmer.gid='$in{gid}' AND travel_zimmer.zid='$in{zid}' AND travel_zeitraum.bis > NOW() $zeitraum_filter_anfrage ORDER BY travel_zeitraum.von ) ); $sth->execute || &mysql_error($sth); sub _UpdateKinderpreiseHash { my @hash = qw( k1_alter k2_alter k3_alter k1_ohne k1_uf k1_hp k1_vp k2_ohne k2_uf k2_hp k2_vp k3_ohne k3_uf k3_hp k3_vp ); my $buffer = shift; my $preise = shift; my $hash; foreach my $h ( @hash ) { $hash .= $preise->{$h} . "X"; } if ( ($buffer->{$hash}->{zeitraum_bis} ne "") && ($buffer->{$hash}->{zeitraum_bis} eq $preise->{zeitraum_von}) ) { $buffer->{$hash}->{zeitraum_bis} = $preise->{zeitraum_bis}; } else { $hash .= $preise->{zeitraum_bis} if ($buffer->{$hash}->{zeitraum_bis} ne ""); my %preise = %{$preise}; $buffer->{$hash} = \%preise; } } if ( $sth->rows ) { my @zeitraeume; my @verpflegungen = qw(ohne uf hp vp); my %text_verpflegung = ( ohne => "$LANG{Uebernachtung}", uf => "$LANG{Uebernachtung_mit_Fruehstueck}", hp => "$LANG{Uebernachtung_mit_Halbpension}", vp => "$LANG{Uebernachtung_mit_Vollpension}" ); my %text_verpflegung_kurz = ( ohne => "$LANG{ohne_Verpflegung}", uf => "$LANG{inkl_Fruehstueck}", hp => "$LANG{inkl_Halbpension}", vp => "$LANG{inkl_Vollpension}" ); my %kinderpreise_altersstufen; my %kinderpreise; # Zeiträume while ( my $zeitraum = $sth->fetchrow_hashref ) { my %zeitraum = ( "sql_hash" => $zeitraum, ); &_UpdateKinderpreiseHash(\%kinderpreise, $zeitraum); foreach ( reverse @verpflegungen ) { last unless ($zeitraum->{"verpflegung_$_"} eq ""); $zeitraum->{"verpflegung_$verpflegungen[0]"} = 0 if ($_ eq $verpflegungen[0]); } foreach my $i (1..3) { $kinderpreise_altersstufen{$zeitraum->{"k${i}_alter"}} = 1 if $zeitraum->{"k${i}_alter"} > 0; } # ---> Verpflegungen foreach my $verpflegung ( @verpflegungen ) { next if $zeitraum->{"verpflegung_$verpflegung"} eq ""; my %verpflegung = ( "name" => $verpflegung, "text" => $text_verpflegung{"$verpflegung"}, "text_kurz" => $text_verpflegung_kurz{"$verpflegung"}, ); my @naechte; foreach my $id ( qw(A B C D) ) { my %naechte = ( "min" => $zeitraum->{"min_$id"}, ); next unless $naechte{"min"}; my @preise; foreach my $personen ($zeitraum->{"belegung_min"} .. $zeitraum->{"belegung_max"}) { my $id_suffix = $id eq "A" ? "" : "_$id"; my $preis = $zeitraum->{"preis$personen$id_suffix"} + ( $zeitraum->{"verpflegung_$verpflegung"} * $personen ); $preis = sprintf ("%6.2f", $preis) if int($preis) != $preis; $preis =~ s/\./,/; $preise[$personen] = $preis; } $naechte{"preise"} = \@preise; push (@naechte, \%naechte); } foreach my $naechte (sort { $b->{"min"} <=> $a->{"min"} } @naechte) { unshift(@{$verpflegung{"naechte"}}, $naechte); if ( $zeitraum->{"min"} >= $naechte->{"min"} && ($in{"intage"} >= $zeitraum->{"min"} || $in{"intage"} eq "") ) { $naechte->{"min"} = $zeitraum->{"min"}; last; } } push (@{$zeitraum{"verpflegungen"}}, \%verpflegung); } # <--- Verpflegungen push(@zeitraeume, \%zeitraum); } # <--- Zeiträume my $preise; # ---> Erwachsene if (@zeitraeume > 0) { my $zeitraeume; foreach my $zeitraum_id (0..@zeitraeume-1) { my $zeitraum = $zeitraeume[$zeitraum_id]; $zeitraeume .= qq( ); foreach my $personen ($zeitraum->{"sql_hash"}->{"belegung_min"} .. $zeitraum->{"sql_hash"}->{"belegung_max"}) { my $pers = $personen == 1 ? qq( $LANG{Person}) : $personen < 10 ? qq( $LANG{Pers}) : ""; $zeitraeume .= qq( ); } $zeitraeume .= qq( ); my $class; foreach my $verpflegung (@{$zeitraum->{"verpflegungen"}}) { my $rowspan = @{$verpflegung->{"naechte"}}; my $verpflegung_html = qq(); $class = $class == 1 ? 2 : 1; foreach my $nacht (@{$verpflegung->{"naechte"}}) { $zeitraeume .= qq( $verpflegung_html ); foreach my $personen ($zeitraum->{"sql_hash"}->{"belegung_min"} .. $zeitraum->{"sql_hash"}->{"belegung_max"}) { $zeitraeume .= qq( ); } $zeitraeume .= qq( ); $verpflegung_html = ""; } } $zeitraeume .= qq(
$LANG{Zeitraum_von} $zeitraum->{sql_hash}->{zeitraum_von} $LANG{bis} $zeitraum->{sql_hash}->{zeitraum_bis}
$LANG{Leistung} $LANG{Aufenthalt}$personen$pers
$verpflegung->{"text"}
$LANG{ab} ${\&getLANG("x_Naechte", ["$nacht->{min}"])}$nacht->{"preise"}->[$personen] €
); } $preise .= qq(

$LANG{Preise_Erwachsene}

$zeitraeume
); } # <--- Erwachsene # ---> Kinder my @zeitraeume; foreach (sort { $kinderpreise{$a}->{zeitraum_von_epoche} <=> $kinderpreise{$b}->{zeitraum_von_epoche} } keys %kinderpreise) { my $objekt = $kinderpreise{$_}; my $kinderpreise_zeilen; my %zeitraum = ( objekt => $kinderpreise{$_}, ); foreach my $verpflegung ( @verpflegungen ) { my $kinderpreise_spalten; my %verpflegung = ( name => $verpflegung, text => $text_verpflegung{$verpflegung}, ); my @preise; foreach my $altersstufe (keys %kinderpreise_altersstufen) { foreach my $i (1..3) { next unless $objekt->{"k${i}_alter"} == $altersstufe; my $preis = $objekt->{"k${i}_$verpflegung"}; next if $preis eq ""; $preis = "kostenlos" if $preis == 0; $preis = sprintf("%6.2f €",$preis) if $preis =~ /[\d\.\,]/; $preis =~ s/\./,/g if $preis =~ /[\d\.\,]/; $preise[$altersstufe] = $preis; } } next if (@preise == 0); $verpflegung{"preise"} = \@preise; push (@{$zeitraum{"verpflegungen"}}, \%verpflegung); } push (@zeitraeume, \%zeitraum) if @{$zeitraum{"verpflegungen"}} > 0; } if (@zeitraeume > 0) { my $zeitraeume; my $colspan = (keys %kinderpreise_altersstufen) + 1; foreach my $zeitraum_id (0..@zeitraeume-1) { my $zeitraum = $zeitraeume[$zeitraum_id]; $zeitraeume .= qq( ); foreach my $altersstufe (sort {$a <=> $b} keys %kinderpreise_altersstufen) { $zeitraeume .= qq( ); } $zeitraeume .= qq( ); my $class; foreach my $verpflegung (@{$zeitraum->{"verpflegungen"}}) { $class = $class == 1 ? 2 : 1; $zeitraeume .= qq( ); foreach my $altersstufe (sort {$a <=> $b} keys %kinderpreise_altersstufen) { $zeitraeume .= qq( ); } $zeitraeume .= qq( ); } $zeitraeume .= qq(
$LANG{Zeitraum_von} $zeitraum->{objekt}->{zeitraum_von} $LANG{bis} $zeitraum->{objekt}->{zeitraum_bis}
$LANG{Leistung}$LANG{bis} $altersstufe $LANG{Jahre}
$verpflegung->{"text"}$verpflegung->{"preise"}->[$altersstufe]
); } $preise .= qq(

$LANG{Preise_Kinder}

$zeitraeume
); } # <--- Kinder $out .= $preise; } return $out; # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Funktionen # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub _GetKlassifizierung { return $_[0]->{sterne} > 0 ? viewSterne( sterne => $_[0]->{sterne}, xhtml => 1 ) : ""; } sub _GetFlaeche { return $_[0]->{flaeche} ? "$_[0]->{flaeche} m²" : ""; } sub _GetBelegung { my $pers = $_[0]->{minpers} == $_[0]->{maxpers} ? $_[0]->{minpers} : ($_[0]->{minpers} == 0 && $_[0]->{maxpers} == 1) ? 1 : "$_[0]->{minpers}-$_[0]->{maxpers}"; return getLANG("x_Personen", [$pers]); } sub _GetZimmerName { return $_[0]->{name} =~ /^\d+$/ ? "Nr. $_[0]->{name}" : $_[0]->{name}; } sub _GetMerkmale { return scalar getMerkmale( verwendung => "zimmer", format => "LISTE", zimmer => $_[0]->{zid}, order_by => "gruppe" ); } sub _GetEtage { my $zimmerdata = shift; return "" if $zimmerdata->{etage} eq ""; my ($etage, $dg); if ($zimmerdata->{etage} >= 100) { $zimmerdata->{etage} -= 100; $dg = "($LANG{Dachgeschoss})"; } $etage = qq($zimmerdata->{etage}. Stock $dg) if $zimmerdata->{etage} > 0; $etage = qq(Souterrain) if $zimmerdata->{etage} == -1; $etage = qq(Erdgeschoss) if $zimmerdata->{etage} == 0; return $etage; } sub _GetEndreinigung { return $_[0]->{endreinigung} =~ /^\d+/ ? $_[0]->{endreinigung} . " €" : undef if $SE{app} eq "hindelang.net"; return $_[0]->{endreinigung} =~ /^\d+/ ? $_[0]->{endreinigung} . " € ($LANG{im_Preis_exklusive})" : undef if $SE{app} eq "wasserburg-bodensee.de"; return $_[0]->{endreinigung} =~ /^\d+/ ? $_[0]->{endreinigung} . " € ($LANG{im_Preis_inklusive})" : undef; } %>

<% my $kurbeitrag = getKurbeitrag(); $priceHint = $LANG{alle_preise}." ".$LANG{je_nacht}." ".$kurbeitrag; $priceHint; %>