) : ""; my $belegung = qq($zimmerdata->{minpers} - $zimmerdata->{maxpers} Personen); $belegung = qq($zimmerdata->{minpers} Personen) if $zimmerdata->{minpers} == $zimmerdata->{maxpers}; $belegung = qq($zimmerdata->{minpers} Person) if $zimmerdata->{maxpers} == 1; $out .= qq(
<% require "se_travel.pl"; my $parameter = &vermittlung_encode_parameter; my $out = &vermittlung_decode_parameter($parameter); return qq(
$out

); %> <% # alle zimmer zeigen 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; my $old_zimmertyp; my $zimmerdata = $sth->fetchrow_hashref; ## . . . . . . . . . . . . . . . . . . . . . . . . . . . ## mache eine auflistung der merkmale #my $last_merkmal; #my @merkmale; #foreach my $merkmal ( getMerkmale( verwendung => "zimmer", online => 1 ) ) { # if ( substr($zimmerdata->{merkmale},$merkmal->{id}-1,1) eq "1") { # push @merkmale, # ($merkmal->{gruppe} ne $last_merkmal->{gruppe} ? "$merkmal->{gruppe}: " : "") # . $merkmal->{name}; # $last_merkmal = $merkmal; # } #} #my $merkmale = join ", ", @merkmale; ## . . . . . . . . . . . . . . . . . . . . . . . . . . . my $merkmale = getMerkmale( format => "LISTE", online => 1, zimmer => $in{zid}, order_by => "gruppe", ); $out .= qq( ); my $bild = (split(/\|/,$zimmerdata->{bild}))[0]; my $bildspalte = -s "../se_data/_filebank/$bild" && $zimmerdata->{bild} ? qq(

Detail-Information
$bildspalte ); my $sterne = viewSterne( sterne => $zimmerdata->{sterne} ); $out .= qq( ) if $sterne; $out .= qq( ) if $zimmerdata->{flaeche}; my $etage = &travel_etage($zimmerdata); $out .= qq( ) if $etage ne ""; my $inkl = " (im Preis inkl.)" if $SE{app} eq "pfronten.de"; $out .= qq( ) if $zimmerdata->{endreinigung} > 0; $out .= qq(
Zimmer $zimmerdata->{name}
Zimmerart $TRAVEL{zimmertypen}->{ $zimmerdata->{typ} }
Klassifizierung $sterne
Fläche $zimmerdata->{flaeche} m²
Etage $etage
Endreinigung $inkl $zimmerdata->{endreinigung} €
Belegung $belegung
Beschreibung $zimmerdata->{text}
Merkmale $merkmale
); # ------------------------------------------- # # Preisinformation visualisieren # # ------------------------------------------- my $zeitraum_filter_anfrage; $zeitraum_filter_anfrage = 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})) ) ) unless $in{off_zeitraum} || $in{feld_von_epoche} eq ""; 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); if ($sth->rows) { my $c = 1; my $html_preise; my $html_kinderpreise; my $html_debug; my @felder_preise = qw(preisX preisX_B preisX_C preisX_D); my @felder_min = qw(min_A min_B min_C min_D); my @felder_essen = qw(verpflegung_ohne verpflegung_uf verpflegung_hp verpflegung_vp); my %text_essen = ( verpflegung_ohne => "Übernachtung", verpflegung_uf => "Übernachtung mit Frühstück", verpflegung_hp => "Übernachtung mit Halbpension", verpflegung_vp => "Übernachtung mit Vollpension"); my %text_essen_kurz = ( verpflegung_ohne => "ohne Verpflegung", verpflegung_uf => "mit Frühstück", verpflegung_hp => "mit Halbpension", verpflegung_vp => "mit Vollpension"); my %kinderpreise_altersstufen; my @kinderpreise_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 %kinderpreise_buffer; my ($belegung_min, $belegung_max); while ( my $preise = $sth->fetchrow_hashref ) { my $kinderpreise_hash; foreach my $h ( @kinderpreise_hash ) { $kinderpreise_hash .= $preise->{$h} . "X"; } if ( $kinderpreise_buffer{$kinderpreise_hash}->{zeitraum_bis} ne "" && $kinderpreise_buffer{$kinderpreise_hash}->{zeitraum_bis} eq $preise->{zeitraum_von} ) { $kinderpreise_buffer{$kinderpreise_hash}->{zeitraum_bis} = $preise->{zeitraum_bis}; } else { $kinderpreise_hash .= $preise->{zeitraum_bis} if $kinderpreise_buffer{$kinderpreise_hash}->{zeitraum_bis} ne ""; $kinderpreise_buffer{$kinderpreise_hash} = $preise; } my $span_gesamt = $preise->{belegung_max} - $preise->{belegung_min} + 3; $html_preise .= qq( Zeitraum vom $preise->{zeitraum_von} bis $preise->{zeitraum_bis} ); $preise->{verpflegung_ohne} = 0 if $preise->{verpflegung_ohne} eq "" && $preise->{verpflegung_uf} eq "" && $preise->{verpflegung_hp} eq "" && $preise->{verpflegung_vp} eq ""; # wenn OV vergessen wurde foreach $n_kinder (0..3) { $kinderpreise_altersstufen{$preise->{"k${n_kinder}_alter"}} = 1 if $preise->{"k${n_kinder}_alter"} > 0; } my $color; foreach $n_essen (0..3) { if ($preise->{$felder_essen[$n_essen]} ne "") { my (%mindest_temp, $mindest_anzahl); foreach $n_preise (0..3) { $mindest_temp{$n_preise} = $preise->{$felder_min[$n_preise]}; } # Nur Preise über dem Mindestaufenthalt zeigen, aber auch den ersten niedrigsten, mit der Beschriftung Mindestaufenthalt my @mindest; foreach $mm (sort { my $aa=$mindest_temp{$a}; my $bb=$mindest_temp{$b}; $bb <=> $aa } keys %mindest_temp) { my $naechte = $mindest_temp{$mm}; next unless $naechte; $mindest_anzahl++; $mindest[$mm] = $naechte; #$html_debug .= qq(
  • $mm .. $preise->{min} .. $naechte); if ( $preise->{min} >= $naechte && ($in{intage} >= $preise->{min} || $in{intage} eq "") ) { $mindest[$mm] = $preise->{min}; last; } } if ($mindest_anzahl) { $color = $color ne "preise" ? "preise" : "preise2"; my $done; my @reihenfolge = qw(0 1 2 3); foreach $n_preise ( sort { my $aa=$mindest[$a]; my $bb=$mindest[$b]; $aa <=> $bb } @reihenfolge ) { my $min = $mindest[$n_preise]; if ($min) { $html_preise .= qq( ); $html_preise .= qq( $text_essen{$felder_essen[$n_essen]}) unless $done; $html_preise .= $min == 1 ? qq( ab 1 Nacht ) : qq( ab $min Nächte ); foreach $p ($preise->{belegung_min} .. $preise->{belegung_max}) { my $ps = $felder_preise[$n_preise]; $ps =~ s/X/$p/i; my $preis = $preise->{$ps} + ( $preise->{$felder_essen[$n_essen]} * $p ); $preis = sprintf ("%6.2f", $preis) if $preis =~ /\./; $preis =~ s/\./,/g; $html_preise .= $preis ? qq($preis € ) : qq( ); } $html_preise .= qq( ); $done++; } } } } } $c++; $belegung_min = $preise->{belegung_min}; $belegung_max = $preise->{belegung_max}; } my $html_preise_header .= qq( Zeitraum / Leistung Aufenthalt); foreach $p ($belegung_min .. $belegung_max) { $html_preise_header .= qq($p Person) if $p == 1; $html_preise_header .= qq($p Pers.) if $p > 1 && $p < 10; $html_preise_header .= qq($p) if $p >= 10; } $html_preise_header .= qq(); # # Kinderpreise visualisieren # my @kinder_felder_essen = qw(ohne uf hp vp); my %kinder_text_essen = ( ohne => "Übernachtung", uf => "Übernachtung mit Frühstück", hp => "Übernachtung mit Halbpension", vp => "Übernachtung mit Vollpension"); my $span_gesamt = 3 + keys %kinderpreise_altersstufen; foreach (sort { my $aa = $kinderpreise_buffer{$a}->{zeitraum_von_epoche}; my $bb = $kinderpreise_buffer{$b}->{zeitraum_von_epoche}; $aa <=> $bb} keys %kinderpreise_buffer) { my $objekt = $kinderpreise_buffer{$_}; my $color; my $kinderpreise_zeilen; foreach $n_essen (0..3) { my $kinderpreise_spalten; my $kinderpreise_anzahl; $color = $color ne "preise" ? "preise" : "preise2"; foreach $altersstufe (sort {$a <=> $b} keys %kinderpreise_altersstufen) { my $preis; foreach $n (1..3) { $preis = $objekt->{"k${n}_$kinder_felder_essen[$n_essen]"} if $objekt->{"k${n}_alter"} == $altersstufe }; $preis = "kostenlos" if $preis == 0 && $preis ne ""; $preis = sprintf("%6.2f €",$preis) if $preis =~ /[\d\.\,]/; $preis =~ s/\./,/g if $preis =~ /[\d\.\,]/; $kinderpreise_anzahl++ if $preis ne ""; $kinderpreise_spalten .= qq($preis); } $kinderpreise_zeilen .= qq( $kinder_text_essen{$kinder_felder_essen[$n_essen]}$kinderpreise_spalten) if $kinderpreise_anzahl; } $html_kinderpreise .= qq( Zeitraum vom $objekt->{zeitraum_von} bis $objekt->{zeitraum_bis} $kinderpreise_zeilen) if $kinderpreise_zeilen; } my $html_kinderpreise_header; $html_kinderpreise_header .= qq(Zeitraum / Leistung); foreach $altersstufe (sort {$a <=> $b} keys %kinderpreise_altersstufen) { $html_kinderpreise_header .= qq(bis $altersstufe Jahre); } $html_kinderpreise_header .= qq(); $out .= qq( ); my $extra = ' zzgl. Kurbeitrag' unless $SE{app} eq 'hoernerdoerfer.de'; $out .= qq( $html_debug
    Preise Erwachsene
    $html_preise_header $html_preise

    Alle Preise je Nacht$extra

    ); $out .= qq(
    Preise Kinder
    $html_kinderpreise_header $html_kinderpreise

    Alle Preise je Nacht$extra

    ) if $html_kinderpreise; } sub travel_gen_href { my $href; foreach my $key (keys %{$_[0]}) { $in{$key} = $_[0]->{$key}; } foreach my $key (sort keys %in) { $in{$key} =~ s/\0/\|/g; $href .= "&$key=$in{$key}" if $key ne "" && $key !~ /(page|action|seite)/; } return $href; } sub travel_etage { my $zimmerdata = shift; return "" if $zimmerdata->{etage} eq ""; my ($etage, $dg); if ($zimmerdata->{etage} >= 100) { $zimmerdata->{etage} -= 100; $dg = "(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; } $out; %>