<% use SE::Travel::SearchEngine; $in{groupmode} = "zimmer"; my $suche = SE::Travel::SearchEngine->new(\%in); my $sql = $suche->sql; my $nurbetrieb .= qq( travel_betriebe.gid = "$in{gid}" AND ); $sql =~ s/WHERE/WHERE $nurbetrieb/; my $sth = $TRAVEL{database}->prepare($sql); $sth->execute; $TEMP{freie_zimmer} = {}; while (my $b = $sth->fetchrow_hashref) { $TEMP{freie_zimmer}{$b->{zid}} = $b->{preis_mindestaufenthalt}; } require "se_travel.pl"; my $parameter = &vermittlung_encode_parameter; my $out = &vermittlung_decode_parameter($parameter); return qq(
$out

); %> <% my $a = $in{feld_von_epoche}; my $b = $in{feld_bis_epoche}; # Normalize "von" my ($sek,$min,$std,$mtag,$mon,$jahr,$wtag,$jtag,$isdst) = localtime($a); $a = timelocal(0,0,12,$mtag,$mon,$jahr) if $a; # Normalize "bis" my ($sek,$min,$std,$mtag,$mon,$jahr,$wtag,$jtag,$isdst) = localtime($b); $b = timelocal(0,0,12,$mtag,$mon,$jahr) if $b; # "Jetzt" holen my ($sek,$min,$std,$mtag,$mon,$jahr,$wtag,$jtag,$isdst) = localtime(time); my $jetzt = timelocal(0,0,12,$mtag,$mon,$jahr); # eingabefehler korrigieren $a = $jetzt if $a <= $jetzt; # von fehlt oder ist in vergangenheit, auf heute setzen $b = $a + 60*60*24*3 if $b < $jetzt && $in{intage} eq "" ; # bis fehlt, bis = von + 3 Tage wenn keine Dauer $in{feld_von_epoche} = $a; $in{feld_bis_epoche} = $b; # alle zimmer zeigen my $sth = $TRAVEL{database}->prepare(qq( SELECT travel_zimmer.zid, travel_zimmer.name AS name, travel_zimmer.typ, travel_zimmer.maxpers, travel_preisgruppe.name AS preisgruppe, MIN( CASE WHEN "$in{intage}" >= travel_zeitraum.min_D AND min_D IS NOT NULL AND min_D > 0 THEN CASE travel_zimmer.minpers WHEN 1 THEN travel_zeitraum.preis1_D WHEN 2 THEN travel_zeitraum.preis2_D WHEN 3 THEN travel_zeitraum.preis3_D WHEN 4 THEN travel_zeitraum.preis4_D WHEN 5 THEN travel_zeitraum.preis5_D WHEN 6 THEN travel_zeitraum.preis6_D WHEN 7 THEN travel_zeitraum.preis7_D WHEN 8 THEN travel_zeitraum.preis8_D WHEN 9 THEN travel_zeitraum.preis9_D END WHEN "$in{intage}" >= travel_zeitraum.min_C AND min_C IS NOT NULL AND min_C > 0 THEN CASE travel_zimmer.minpers WHEN 1 THEN travel_zeitraum.preis1_C WHEN 2 THEN travel_zeitraum.preis2_C WHEN 3 THEN travel_zeitraum.preis3_C WHEN 4 THEN travel_zeitraum.preis4_C WHEN 5 THEN travel_zeitraum.preis5_C WHEN 6 THEN travel_zeitraum.preis6_C WHEN 7 THEN travel_zeitraum.preis7_C WHEN 8 THEN travel_zeitraum.preis8_C WHEN 9 THEN travel_zeitraum.preis9_C END WHEN "$in{intage}" >= travel_zeitraum.min_B AND min_B IS NOT NULL AND min_B > 0 THEN CASE travel_zimmer.minpers WHEN 1 THEN travel_zeitraum.preis1_B WHEN 2 THEN travel_zeitraum.preis2_B WHEN 3 THEN travel_zeitraum.preis3_B WHEN 4 THEN travel_zeitraum.preis4_B WHEN 5 THEN travel_zeitraum.preis5_B WHEN 6 THEN travel_zeitraum.preis6_B WHEN 7 THEN travel_zeitraum.preis7_B WHEN 8 THEN travel_zeitraum.preis8_B WHEN 9 THEN travel_zeitraum.preis9_B END ELSE CASE travel_zimmer.minpers WHEN 1 THEN travel_zeitraum.preis1 WHEN 2 THEN travel_zeitraum.preis2 WHEN 3 THEN travel_zeitraum.preis3 WHEN 4 THEN travel_zeitraum.preis4 WHEN 5 THEN travel_zeitraum.preis5 WHEN 6 THEN travel_zeitraum.preis6 WHEN 7 THEN travel_zeitraum.preis7 WHEN 8 THEN travel_zeitraum.preis8 WHEN 9 THEN travel_zeitraum.preis9 END END ) AS min_preis, MAX( CASE WHEN "$in{intage}" >= travel_zeitraum.min_D AND min_D IS NOT NULL AND min_D > 0 THEN CASE travel_zimmer.maxpers WHEN 1 THEN travel_zeitraum.preis1_D WHEN 2 THEN travel_zeitraum.preis2_D WHEN 3 THEN travel_zeitraum.preis3_D WHEN 4 THEN travel_zeitraum.preis4_D WHEN 5 THEN travel_zeitraum.preis5_D WHEN 6 THEN travel_zeitraum.preis6_D WHEN 7 THEN travel_zeitraum.preis7_D WHEN 8 THEN travel_zeitraum.preis8_D WHEN 9 THEN travel_zeitraum.preis9_D END WHEN "$in{intage}" >= travel_zeitraum.min_C AND min_C IS NOT NULL AND min_C > 0 THEN CASE travel_zimmer.maxpers WHEN 1 THEN travel_zeitraum.preis1_C WHEN 2 THEN travel_zeitraum.preis2_C WHEN 3 THEN travel_zeitraum.preis3_C WHEN 4 THEN travel_zeitraum.preis4_C WHEN 5 THEN travel_zeitraum.preis5_C WHEN 6 THEN travel_zeitraum.preis6_C WHEN 7 THEN travel_zeitraum.preis7_C WHEN 8 THEN travel_zeitraum.preis8_C WHEN 9 THEN travel_zeitraum.preis9_C END WHEN "$in{intage}" >= travel_zeitraum.min_B AND min_B IS NOT NULL AND min_B > 0 THEN CASE travel_zimmer.maxpers WHEN 1 THEN travel_zeitraum.preis1_B WHEN 2 THEN travel_zeitraum.preis2_B WHEN 3 THEN travel_zeitraum.preis3_B WHEN 4 THEN travel_zeitraum.preis4_B WHEN 5 THEN travel_zeitraum.preis5_B WHEN 6 THEN travel_zeitraum.preis6_B WHEN 7 THEN travel_zeitraum.preis7_B WHEN 8 THEN travel_zeitraum.preis8_B WHEN 9 THEN travel_zeitraum.preis9_B END ELSE CASE travel_zimmer.maxpers WHEN 1 THEN travel_zeitraum.preis1 WHEN 2 THEN travel_zeitraum.preis2 WHEN 3 THEN travel_zeitraum.preis3 WHEN 4 THEN travel_zeitraum.preis4 WHEN 5 THEN travel_zeitraum.preis5 WHEN 6 THEN travel_zeitraum.preis6 WHEN 7 THEN travel_zeitraum.preis7 WHEN 8 THEN travel_zeitraum.preis8 WHEN 9 THEN travel_zeitraum.preis9 END END ) AS max_preis, MIN(IF ( "$in{intage}" >= travel_zeitraum.min, travel_zeitraum.min, CASE WHEN "$in{intage}" >= travel_zeitraum.min_D AND min_D IS NOT NULL THEN travel_zeitraum.min_D WHEN "$in{intage}" >= travel_zeitraum.min_C AND min_C IS NOT NULL THEN travel_zeitraum.min_C WHEN "$in{intage}" >= travel_zeitraum.min_B AND min_B IS NOT NULL THEN travel_zeitraum.min_B WHEN "$in{intage}" >= travel_zeitraum.min_A AND min_A IS NOT NULL THEN travel_zeitraum.min_A ELSE travel_zeitraum.min END )) AS min_belegung, MAX(IF ( "$in{intage}" >= travel_zeitraum.min, travel_zeitraum.min , CASE WHEN "$in{intage}" >= travel_zeitraum.min_D AND min_D IS NOT NULL THEN travel_zeitraum.min_D WHEN "$in{intage}" >= travel_zeitraum.min_C AND min_C IS NOT NULL THEN travel_zeitraum.min_C WHEN "$in{intage}" >= travel_zeitraum.min_B AND min_B IS NOT NULL THEN travel_zeitraum.min_B WHEN "$in{intage}" >= travel_zeitraum.min_A AND min_A IS NOT NULL THEN travel_zeitraum.min_A ELSE travel_zeitraum.min END )) AS max_belegung, travel_zimmer.merkmale, travel_zimmer.minpers, travel_zimmer.maxpers, 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 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_zeitraum.bis > NOW() AND ( ( TO_DAYS(travel_zeitraum.von) <= TO_DAYS(FROM_UNIXTIME($in{feld_von_epoche})) AND TO_DAYS(travel_zeitraum.bis) >= TO_DAYS(FROM_UNIXTIME($in{feld_von_epoche})) ) OR ( 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_bis_epoche})) ) ) 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; while (my $projekt = $sth->fetchrow_hashref) { $zimmer .= qq( ) if $projekt->{typ} ne $old_zimmertyp; my $zimmernr = $projekt->{name}; $zimmernr = "Nr. $projekt->{name}" if $projekt->{name} =~ /^\d+$/ ; my $preise; my $von; my $bis; $von = sprintf( "%6.2f", $projekt->{min_preis} ); $bis = sprintf( "%6.2f", $projekt->{max_preis} ); $preise_ohne = qq(ab $projekt->{min_preis} - $projekt->{max_preis} €); $preise_ohne = qq(ab $projekt->{min_preis} €) if $projekt->{min_preis} == $projekt->{max_preis}; # Frühstück $von = sprintf( "%6.2f", $projekt->{min_preis} + $projekt->{min_uf} * $projekt->{minpers}); $bis = sprintf( "%6.2f", $projekt->{max_preis} + $projekt->{max_uf} * $projekt->{maxpers}); $preise_uf = qq(ab $von - $bis €); $preise_uf = qq(ab $von €) if $von == $bis; # Halbpension $von = sprintf( "%6.2f", $projekt->{min_preis} + $projekt->{min_hp} * $projekt->{minpers}); $bis = sprintf( "%6.2f", $projekt->{max_preis} + $projekt->{max_hp} * $projekt->{maxpers}); $preise_hp = qq(ab $von - $bis €); $preise_hp = qq(ab $von €) if $von == $bis; # Vollpension $von = sprintf( "%6.2f", $projekt->{min_preis} + $projekt->{min_vp} * $projekt->{minpers}); $bis = sprintf( "%6.2f", $projekt->{max_preis} + $projekt->{max_vp} * $projekt->{maxpers}); $preise_vp = qq(ab $von - $bis €); $preise_vp = qq(ab $von €) if $von == $bis; # Preise zusammenbauen, und nur wenn verfügbar zeigen... $preise .= "$preise_ohne ohne Verpflegung
" if $projekt->{min_ohne}; $preise .= "$preise_uf mit Frühstück
" if $projekt->{min_uf}; $preise .= "$preise_hp mit Halbpension
" if $projekt->{min_hp}; $preise .= "$preise_vp mit Vollpension
" if $projekt->{min_vp}; $preise .= "$preise_ohne
" unless $projekt->{min_ohne} || $projekt->{min_uf} || $projekt->{min_hp} || $projekt->{min_uf} ; $preise =~ s/\./,/g; my $mindest = qq($projekt->{min_belegung} - $projekt->{max_belegung} Nächte); $mindest = qq($projekt->{min_belegung} Nächte) if $projekt->{min_belegung} == $projekt->{max_belegung}; $mindest = qq($projekt->{min_belegung} Nacht) if $projekt->{min_belegung} == $projekt->{max_belegung} && $projekt->{min_belegung} == 1; $mindest = qq(-) unless $projekt->{min_belegung}; my $maxpers = qq($projekt->{minpers}-$projekt->{maxpers} Personen); $maxpers = qq($projekt->{maxpers} Personen) if $projekt->{minpers} == $projekt->{maxpers}; $maxpers = qq($projekt->{maxpers} Person) if ($projekt->{minpers} == $projekt->{maxpers} || $projekt->{minpers} == 0) && $projekt->{maxpers} == 1; ## . . . . . . . . . . . . . . . . . . . . . . . . . . . ## mache eine auflistung der merkmale #my @merkmale; #my $sth2 = $TRAVEL{database}->prepare("SELECT id, name, gruppe FROM travel_merkmale WHERE gid='1' AND FIND_IN_SET('zimmer',verwendung) ORDER BY name"); #$sth2->execute; #while (my $merkmal = $sth2->fetchrow_arrayref) { # if ( substr($projekt->{merkmale},$$merkmal[0]-1,1) eq "1") { # push @merkmale, $$merkmal[1]; # } #} #my $merkmale = join ", ",@merkmale; ## . . . . . . . . . . . . . . . . . . . . . . . . . . . my $merkmale = getMerkmale( format => "LISTE", online => 1, zimmer => $in{zid}, order_by => "gruppe", ); # . . . . . . . . . . . . . . . . . . . . . . . . . . . # checkeon ob verfügbar my ($sek,$min,$std,$mtag,$mon,$jahr,$wtag,$jtag,$isdst) = localtime($in{feld_von_epoche}); my $von = sprintf ("%04d-%02d-%02d",$jahr+1900,$mon+1,$mtag); my ($sek,$min,$std,$mtag,$mon,$jahr,$wtag,$jtag,$isdst) = localtime($in{feld_bis_epoche}); my $bis = sprintf ("%04d-%02d-%02d",$jahr+1900,$mon+1,$mtag); my @merkmale; my $sth3 = $TRAVEL{database}->prepare( qq( SELECT travel_freimeldung.zid FROM travel_freimeldung WHERE travel_freimeldung.zid = '$projekt->{zid}' AND TO_DAYS(travel_freimeldung.bis) >= TO_DAYS("$bis") AND TO_DAYS(travel_freimeldung.von) <= TO_DAYS("$von") ) ); $sth3->execute || &mysql_error($sth3); my $frei = $sth3->fetchrow_arrayref; my $color = $$frei[0] ? "#44ff44" : "#f4f4f4"; my $frei_text = $$frei[0] ? "Frei" : " "; unless ($in{off_zeitraum}) { $color = $TEMP{freie_zimmer}{$projekt->{zid}} ? "#44ff44" : "#f4f4f4"; $frei_text = $TEMP{freie_zimmer}{$projekt->{zid}} ? "Frei" : " "; } # . . . . . . . . . . . . . . . . . . . . . . . . . . . my $href = &travel_gen_href( { zid => $projekt->{zid}, do => "zimmerinfo" } ); $zimmer .= qq( ); $old_zimmertyp = $projekt->{typ}; } $zimmer .= qq( ) unless $zimmer; $zimmer; 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; } %>
Zimmer max. Belegung Endpreis zzgl. Kurbeitrag Mindestaufenthalt
$TRAVEL{zimmertypen}->{ $projekt->{typ} } 
$frei_text $zimmernr $maxpers $preise $TEMP{freie_zimmer}{$projekt->{zid}}
 
Dieser Betrieb hat keine
Zimmer- und Preisinformationen angelegt...