#!/usr/bin/perl
#(C) Loris Ltd. 2000-2002 info@lorissoft.com.
#Project: LHRS
#2004-03-23/v3.03.05
#updated 2003-02-20
#HEADER:
require "../config/config.pl";
require "../cgi_libs/db_lib.pl";
require "../cgi_libs/date_lib.pl";
require "../cgi_libs/general_lib.pl";
#debug
$debugmode = 0;
#assign vars
$this_page="voucher";
$today = &GetDateTime;
#get vars
&GetFormInput;
$res_nr = $field{'res_nr'};
$servid = $field{'servid'};
#ini
&iniConfig;
&Create_DB_Connection;
&GetMessages;
&GetResData;
#override config voucher template settings?
if ($res{'res_acc_template'}){$template{'voucher_reservation'}="../templates/$res{'res_acc_template'}";}
if ($res{'res_serv_template'}){$template{'voucher_service'}="../templates/$res{'res_serv_template'}";}
if ($servid){$tmpl = $template{'voucher_service'};}
else {$tmpl = $template{'voucher_reservation'};}
if($field{'rcp'}){$tmpl = $template{'receipt'};}
$template=$template{$this_page};
if ($servid)
{
&GetOneService($servid, $res{'res_id'});
}
else
{
$roomdisc = &GetRoomDiscData($res{'res_id'});
$servline = &GetAllServData($res{'res_id'});
$servdiscline = &GetServDiscs($res{'res_id'});
}
$error = &GetError;
#process
if ($error)
{
&PrintTop;
&PrintError;
&PrintBot;
}
else
{
&PrintVoucher;
}
if ($debugmode)
{
print "
DEBUG START
$debug
DEBUG END
";
}
#end session
$dbh->disconnect;
exit 1;
#subs==============================================================================
sub GetError
{
my $toret="";
if (!$res{'res_id'}){$toret.="\n 1";}
if ($servid)
{
}
return $toret;
}
sub GetResData
{
$SQL="SELECT * FROM hr_reservation,hr_payment,hr_hotel,hr_city,hr_customer,hr_room,hr_room_global_type,hr_ext_countrylist WHERE hr_reservation.res_nr='$res_nr' AND hr_reservation.cust_id=hr_customer.cust_id AND hr_reservation.pay_id=hr_payment.pay_id AND hr_reservation.hotel_id=hr_hotel.hotel_id AND hr_hotel.city_id=hr_city.city_id AND hr_reservation.room_id=hr_room.room_id AND hr_room.room_gtype_id=hr_room_global_type.gtype_id AND hr_customer.cust_country_code=hr_ext_countrylist.cntr_code";
$debug.="
$SQL
";
my $sth = &Do_SQL;
while ($pointer = $sth->fetchrow_hashref)
{
$res{'res_id'} = $pointer->{'res_id'};
$res{'res_from'} = $pointer->{'res_from'};
$res{'res_from'} = &DateInString($res{'res_from'});
$res{'res_till'} = $pointer->{'res_till'};
$res{'res_till'} = &DateInString($res{'res_till'});
$res{'room_name'} = $pointer->{'room_name'};
$res{'gtype_name'} = $pointer->{'gtype_name'};
$res{'res_room_numberof'} = $pointer->{'res_room_numberof'};
$res{'res_room_totalprice'} = $pointer->{'res_room_totalprice'};
$res{'res_room_totaldisc'} = $pointer->{'res_room_totaldisc'};
$res{'cust_fname'} = $pointer->{'cust_fname'};
$res{'cust_lname'} = $pointer->{'cust_lname'};
$res{'cust_email'} = $pointer->{'cust_email'};
$res{'cust_telephone'} = $pointer->{'cust_telephone'};
$res{'cust_address'} = $pointer->{'cust_address'};
$res{'cust_extra'} = $pointer->{'cust_extra'};
@res_cust_extra = split("===", $res{'cust_extra'});
$res{'cntr_name'} = $pointer->{'cntr_name'};
$res{'pay_made'} = $pointer->{'pay_made'};
$res{'hotel_name'} = $pointer->{'hotel_name'};
$res{'hotel_telephone'} = $pointer->{'hotel_telephone'};
$res{'hotel_address'} = $pointer->{'hotel_address'};
$res{'city_name'} = $pointer->{'city_name'};
$res{'res_addserv_totalprice'} = $pointer->{'res_addserv_totalprice'};
$res{'res_addserv_totaldisc'} = $pointer->{'res_addserv_totaldisc'};
$res{'res_adults'} = $pointer->{'res_adults'};
$res{'res_children'} = $pointer->{'res_children'};
$res{'res_acc_template'} = $pointer->{'hotel_acc_voucher'};
$res{'res_serv_template'} = $pointer->{'hotel_serv_voucher'};
if ($res{'res_adults'})
{
$adults_extra = " - ".$msg[536];
$adults_extra =~ s/VAR_ADULTS/$res{'res_adults'}/g;
}
}
}
sub PrintError
{
$vadm = "$config{'admin_email'}";
$msg[157]=~s/VAR_ADMIN_EMAIL/$vadm/g;
print <
$msg[156]
$msg[157]
EOF
}
sub PrintVoucher
{
print "Content-type: text/html\n\n";
open (FL, "$tmpl");
while ($line = )
{
$line=~s/VAR_RESNUMBER/$res_nr/g;
$line=~s/VAR_HOTEL_NAME/$res{'hotel_name'}/g;
$line=~s/VAR_HOTEL_ADDRESS/$res{'hotel_address'}/g;
$line=~s/VAR_HOTEL_TELEPHONE/$res{'hotel_telephone'}/g;
$line=~s/VAR_HOTEL_CITY/$res{'city_name'}/g;
$line=~s/VAR_CHECKIN_DATE/$res{'res_from'}/g;
$line=~s/VAR_CHECKOUT_DATE/$res{'res_till'}/g;
$line=~s/VAR_RES_ROOM_NAME/$res{'room_name'} $adults_extra/g;
$line=~s/VAR_RES_ROOM_GLOBAL_TYPE/$res{'gtype_name'}/g;
$line=~s/VAR_NROFROOMS/$res{'res_room_numberof'}/g;
$line=~s/VAR_ROOM_CHARGE/$res{'res_room_totalprice'} $config{'default_currency'}/g;
$line=~s/VAR_ROOM_DISCOUNTS/$roomdisc/g;
$trc = $res{'res_room_totalprice'}-$res{'res_room_totaldisc'};
$line=~s/VAR_ROOM_TOTAL_CHARGE/$trc $config{'default_currency'}/g;
$line=~s/VAR_ROOM_TOTAL_DISC/$res{'res_room_totaldisc'} $config{'default_currency'}/g;
$line=~s/VAR_FIRST_NAME/$res{'cust_fname'}/g;
$line=~s/VAR_LAST_NAME/$res{'cust_lname'}/g;
$line=~s/VAR_EMAIL/$res{'cust_email'}/g;
$line=~s/VAR_TELEPHONE/$res{'cust_telephone'}/g;
if ($config{'customer_extra'})
{
@cear_names=split("===", $config{'customer_extra'});
for $i (0..$#cear_names)
{
$find = "VAR_CEXTRA_$i";
$replace = $res_cust_extra[$i];
$line=~s/$find/$replace/g;
}
}
$line=~s/VAR_ADDRESS/$res{'cust_address'}/g;
$line=~s/VAR_COUNTRY/$res{'cntr_name'}/g;
$total_charge = $res{'res_room_totalprice'} - $res{'res_room_totaldisc'} + $res{'res_addserv_totalprice'} - $res{'res_addserv_totaldisc'};
$total_charge.=" $config{'default_currency'}";
$line=~s/VAR_TOTALCHARGE/$total_charge/g;
$line=~s/VAR_SERVICES/$servline/g;
$line=~s/VAR_SERV_CHARGE/$res{'res_addserv_totalprice'}/g;
$tsc = $res{'res_addserv_totalprice'}-$res{'res_addserv_totaldisc'};
$line=~s/VAR_SERV_TOTAL_CHARGE/$tsc $config{'default_currency'}/g;
$line=~s/VAR_SERV_DISCOUNTS/$servdiscline/g;
$line=~s/VAR_SERV_TOTAL_DISC/$res{'res_addserv_totaldisc'}/g;
$line=~s/VAR_SERV_NAME/$res{'servname'}/g;
$line=~s/VAR_SERV_PRICE/$res{'servprice'}/g;
$servnr = "$res_nr-$servid";
$line=~s/VAR_SERVNUMBER/$servnr/g;
$line=~s/VAR_NROFCHILDREN/$res{'res_children'}/g;
print $line;
}
close(FL);
}
sub GetRoomDiscData
{
my $toret = "";
$SQL="SELECT * FROM hr_res_rdisc WHERE res_id='$_[0]'";
my $sth = &Do_SQL;
while ($pointer = $sth->fetchrow_hashref)
{
$db_1 = $pointer->{'res_rdisc_name'};
$db_3 = $pointer->{'res_rdisc_value_percent'};
$db_4 = $pointer->{'res_rdisc_value_absolute'};
$db_5 = $pointer->{'res_rdisc_iscumulative'};
if ($db_3>0 && $db_4>0){$dstr = "$db_3\% $msg[68] $db_4 $config{'default_currency'}$cvline / $msg[67]";}
if ($db_3>00 && $db_4==0){$dstr = "$db_3\%";}
if ($db_3==0 && $db_4>0){$dstr = "$db_4 $config{'default_currency'}$cvline / $msg[67]";}
if ($db_5){$vmsg = $msg[65];}
else {$vsmg = $msg[66];}
$toret.="\n$db_1 $dstr ($vmsg)
";
}
$debug.="
disc $toret
";
return $toret;
}
sub GetAllServData
{
my $toret="";
$SQL="SELECT * FROM hr_res_addserv WHERE res_id='$_[0]'";
my $sth = &Do_SQL;
while ($pointer = $sth->fetchrow_hashref)
{
$db_1 = $pointer->{'res_addserv_name'};
$db_2 = $pointer->{'res_addserv_price'};
$db_3 = $pointer->{'res_addserv_daily'};
$db_4 = $pointer->{'res_addserv_perroom'};
if ($db_4) {$prr = "($msg[130])";}
else{$prr = "";}
if ($db_3){$sstr = "$db_2 $config{'default_currency'} / $msg[67] $prr";}
else {$sstr = "$db_2 $config{'default_currency'} $prr";}
$toret.="\n$db_1 $sstr
";
}
return $toret;
}
sub GetServDiscs
{
my $toret = "";
$SQL="SELECT * FROM hr_res_sdisc WHERE res_id='$_[0]'";
my $sth = &Do_SQL;
while ($pointer = $sth->fetchrow_hashref)
{
$db_1 = $pointer->{'res_sdisc_name'};
$db_3 = $pointer->{'res_sdisc_value_percent'};
$db_4 = $pointer->{'res_sdisc_value_absolute'};
$db_5 = $pointer->{'res_sdisc_iscumulative'};
if ($db_3>0 && $db_4>0){$dstr = "$db_3\% $msg[68] $db_4 $config{'default_currency'}$cvline / $msg[67]";}
if ($db_3>00 && $db_4==0){$dstr = "$db_3\%";}
if ($db_3==0 && $db_4>0){$dstr = "$db_4 $config{'default_currency'}$cvline / $msg[67]";}
if ($db_5){$vmsg = $msg[65];}
else {$vsmg = $msg[66];}
$toret.="\n$db_1 $dstr ($vmsg)
";
}
$debug.="
disc $toret
";
return $toret;
}
sub GetOneService
{
$SQL="SELECT * FROM hr_res_addserv WHERE res_addserv_id='$_[0]' AND res_id=$_[1]";
my $sth = &Do_SQL;
while ($pointer = $sth->fetchrow_hashref)
{
$db_1 = $pointer->{'res_addserv_name'};
$db_2 = $pointer->{'res_addserv_price'};
$db_3 = $pointer->{'res_addserv_daily'};
$db_4 = $pointer->{'res_addserv_perroom'};
if ($db_4) {$prr = "($msg[130])";}
else{$prr = "";}
if ($db_3){$sstr = "$db_2 $config{'default_currency'} / $msg[67] $prr";}
else {$sstr = "$db_2 $config{'default_currency'} $prr";}
$res{'servname'} = $db_1;
$res{'servprice'} = $sstr;
}
}