1435 lines
56 KiB
Perl
1435 lines
56 KiB
Perl
|
|
#!/usr/bin/perl
|
||
|
|
|
||
|
|
BEGIN { use lib '/usr/home/cfg' ; require push_inc ; }
|
||
|
|
|
||
|
|
require cfg ;
|
||
|
|
|
||
|
|
# unless ($username eq 'handre') { print "<<<<<<<<<<<< MAINTENANCE IN PROGRESS >>>>>>>>>" ; exit ; }
|
||
|
|
|
||
|
|
use DBI;
|
||
|
|
use CGI::Carp qw(fatalsToBrowser);
|
||
|
|
use Date::Manip;
|
||
|
|
use Date::Calc qw(:all);
|
||
|
|
|
||
|
|
# use Font::TTF::Font;
|
||
|
|
# use GD;
|
||
|
|
# use GD::Text::Align;
|
||
|
|
|
||
|
|
use PDF::API2;
|
||
|
|
use CAM::PDF ;
|
||
|
|
# use PDF::API2;
|
||
|
|
use constant mm => 25.4/72;
|
||
|
|
use constant in => 1/72;
|
||
|
|
use constant pt => 1;
|
||
|
|
|
||
|
|
# my $pdf = PDF::API2->new;
|
||
|
|
# my $page = $pdf->page;
|
||
|
|
# my $text = $page->text;
|
||
|
|
|
||
|
|
# my $font = $pdf->corefont('Helvetica'); # built-in font
|
||
|
|
# my $size = 8;
|
||
|
|
|
||
|
|
# $text->font($font, $size);
|
||
|
|
|
||
|
|
# my $string = "W";
|
||
|
|
|
||
|
|
# my $width = $text->advancewidth($string);
|
||
|
|
|
||
|
|
# print "Width of '$string' at ${size}pt = $width\n";
|
||
|
|
|
||
|
|
#------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
@ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'});
|
||
|
|
|
||
|
|
our $qt_id = $ARGV[0] ;
|
||
|
|
our $tab_no = $ARGV[1] ;
|
||
|
|
our $tab_secs = $ARGV[2] ;
|
||
|
|
|
||
|
|
# my @sections = split(/\|/,$tab_secs);
|
||
|
|
|
||
|
|
my @prefix_arr = qw( cost_desc_ curr_amnt_ qty_cost_ zar_amnt_ );
|
||
|
|
|
||
|
|
our $open_new_tab = qq~target="_blank"~ ; # opens booking page in a new tab
|
||
|
|
|
||
|
|
# our $debug = 1 ;
|
||
|
|
our $label = 1 ; # used in pdf_check_value_of_up
|
||
|
|
|
||
|
|
#------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
print "Content-type: text/html\n\n";
|
||
|
|
|
||
|
|
&today ;
|
||
|
|
&pdf_curr_symbols ;
|
||
|
|
|
||
|
|
my $table = 'event_quotes' ;
|
||
|
|
|
||
|
|
&db_open_ro ;
|
||
|
|
our $db_ignore_open_close = 1 ; # do one open and one close instead of repeating it
|
||
|
|
&prep_pdf ;
|
||
|
|
$db_ignore_open_close = 0 ; # do one open and one close instead of repeating it
|
||
|
|
&db_close_conn ;
|
||
|
|
|
||
|
|
&exclusions ;
|
||
|
|
&start_pdf ;
|
||
|
|
&build_pdf ;
|
||
|
|
&finish_pdf ;
|
||
|
|
&screen2 ;
|
||
|
|
|
||
|
|
exit ;
|
||
|
|
|
||
|
|
#------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub process_date {
|
||
|
|
|
||
|
|
my ($date_string) = @_ ;
|
||
|
|
|
||
|
|
my $year = substr($date_string, 0, 4) ;
|
||
|
|
my $month = substr($date_string, 5, 2) ;
|
||
|
|
$month = int($month);
|
||
|
|
$month = $month_array[$month - 1] ;
|
||
|
|
my $day = substr($date_string, 8, 2) ;
|
||
|
|
my $date_return = "$day-" ;
|
||
|
|
$date_return .= "$month-" ;
|
||
|
|
$date_return .= "$year" ;
|
||
|
|
$date_return .= " @ " . substr($date_string,11,5) ;
|
||
|
|
|
||
|
|
return $date_return ;
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub prep_pdf {
|
||
|
|
|
||
|
|
my @cols = () ;
|
||
|
|
|
||
|
|
&tab_hash ;
|
||
|
|
|
||
|
|
&db_min_ro('event_quotes',"*","`id`='$qt_id'",'','') ;
|
||
|
|
|
||
|
|
our @month_array = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ;
|
||
|
|
|
||
|
|
our $countryid = $db{$table}{$qt_id}{country_id} ;
|
||
|
|
our $custid = $db{$table}{$qt_id}{quote_to} ;
|
||
|
|
our $date_from_for_pdf = &process_date($db{$table}{$qt_id}{date_from}) ;
|
||
|
|
our $date_to_for_pdf = &process_date($db{$table}{$qt_id}{date_to}) ;
|
||
|
|
|
||
|
|
our $type_id = $db{$table}{$qt_id}{type} ;
|
||
|
|
our %country = () ;
|
||
|
|
|
||
|
|
&db_min_ro('customers','id,name,physical_address,contact_email,phone,contact_name,vat_nr',"`id`='$custid'",'','') ;
|
||
|
|
$customer_name{$custid} = $db{customers}{$custid}{name} ;
|
||
|
|
$customer_address{$custid} = $db{customers}{$custid}{physical_address} ;
|
||
|
|
$customer_email{$custid} = $db{customers}{$custid}{contact_email} ;
|
||
|
|
$customer_phone{$custid} = $db{customers}{$custid}{phone} ;
|
||
|
|
$customer_contact_name{$custid} = $db{customers}{$custid}{contact_name} ;
|
||
|
|
$customer_vat_nr{$custid} = $db{customers}{$custid}{vat_nr} ;
|
||
|
|
|
||
|
|
&db_min_ro('event_cost_items','id,name','','','') ;
|
||
|
|
foreach my $id (keys %{$db{event_cost_items}}) { $price_list{$id} = $db{event_cost_items}{$id}{name} ; }
|
||
|
|
|
||
|
|
&db_min_ro('countries','*',"`id`='$countryid'",'','') ;
|
||
|
|
$country{$countryid} = $db{countries}{$countryid}{name} ;
|
||
|
|
$country{$countryid} = "Unknown" if not $country{$countryid} ;
|
||
|
|
|
||
|
|
our $camera_system_id = $db{$table}{$qt_id}{camera_system_id} ;
|
||
|
|
&db_min_ro('camera_systems','*',"`id`='$camera_system_id'",'','') ;
|
||
|
|
$camera_system{$camera_system_id} = $db{camera_systems}{$camera_system_id}{name} ;
|
||
|
|
|
||
|
|
our %event_type_for_pdf = () ;
|
||
|
|
&db_min_ro('event_types','id, name',"`id`='$type_id'",'','') ;
|
||
|
|
$event_type_for_pdf{$type_id} = $db{event_types}{$type_id}{name} ;
|
||
|
|
|
||
|
|
&db_min_ro('event_quotes_min','id,excl_costing_event,item_costing_event,qty_costing_event,usd_amnt_costing_event,item_ttl_costing_event,vat_costing_event,curr_amnt_costing_event,category_details',"`id`='$qt_id'",'','') ;
|
||
|
|
&db_min_ro('event_systems','id,name,description','','','') ;
|
||
|
|
&db_min_ro('event_type_details','id,name','','','') ;
|
||
|
|
&db_min_ro('users','id,name,phone','','','') ;
|
||
|
|
&db_min_ro('sport_types','id,name','','','') ;
|
||
|
|
&db_min_ro('regions','id,name','','','') ;
|
||
|
|
&db_min_ro('cities','id,name','','','') ;
|
||
|
|
&db_min_ro('organisations','id,name','','','') ;
|
||
|
|
&db_min_ro('event_quotes_categories','*','','','') ;
|
||
|
|
&db_min_ro('clubs','*','','','') ;
|
||
|
|
&db_min_ro('event_quotes_poc','*','','','') ;
|
||
|
|
&db_min_ro('event_quotes_recipient','*','','','') ;
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub exclusions {
|
||
|
|
|
||
|
|
our $exclude_rate = 0 ;
|
||
|
|
our $exclude_vat = 0 ;
|
||
|
|
|
||
|
|
if ($db{$table}{$qt_id}{currency} ne 'ZAR') {
|
||
|
|
$exclude_vat = 1 ;
|
||
|
|
}
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub start_pdf {
|
||
|
|
|
||
|
|
my $qtpdfpath = "$pdfpath/event_details" ;
|
||
|
|
our $pdfname = "Event_Details-$qt_id" . '.pdf' ;
|
||
|
|
|
||
|
|
# &pdf_delete_previous_pdf($qtpdfpath) ;
|
||
|
|
|
||
|
|
if (-f "$qtpdfpath/$pdfname") {
|
||
|
|
unlink ("$qtpdfpath/$pdfname") or print "unable to unlink - $qtpdfpath/$pdfname : $!";
|
||
|
|
}
|
||
|
|
|
||
|
|
&pdf_initialise($qtpdfpath,$pdfname,'ITV Event Quote') ;
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub build_pdf {
|
||
|
|
|
||
|
|
&tab_curr_symbols;
|
||
|
|
&pdf_initialise_page ;
|
||
|
|
|
||
|
|
$up = 292 ;
|
||
|
|
# "e_pdf_page_header ;
|
||
|
|
|
||
|
|
&pdf_box_block_top(5,205,'#009bc8') ;
|
||
|
|
|
||
|
|
$up = 260 ;
|
||
|
|
$across = 1 ;
|
||
|
|
$blue_box = 1 ;
|
||
|
|
|
||
|
|
&pdf_page_header ;
|
||
|
|
"e_pdf_vars ;
|
||
|
|
"e_out_to_pdf ;
|
||
|
|
# "e_pdf_footer ;
|
||
|
|
|
||
|
|
$up = 5 ;
|
||
|
|
&pdf_box_block_bottom(5,205,'#009bc8') ;
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub quote_out_to_pdf {
|
||
|
|
|
||
|
|
&pdf_nl_t;
|
||
|
|
|
||
|
|
&pdf_small_bold_text(150, $up, "Date") ;
|
||
|
|
my $dttxt = &custom_date_txt($db{$table}{$qt_id}{quote_date});
|
||
|
|
|
||
|
|
&pdf_small_bold_text_right (198, $up, $dttxt) ;
|
||
|
|
|
||
|
|
&pdf_nl;
|
||
|
|
|
||
|
|
&pdf_small_bold_text(150, $up, "Event Nr") ;
|
||
|
|
# &pdf_small_text_right (198, $up, $qt_id) ;
|
||
|
|
&pdf_small_bold_text_right (198, $up, $db{$table}{$qt_id}{quote_nr}) ;
|
||
|
|
|
||
|
|
&pdf_nl;
|
||
|
|
|
||
|
|
&pdf_nl_t;
|
||
|
|
&pdf_bar(10,$up,200,$up,'#969696','EVENT INFO',20,93) ; #EEEEEE
|
||
|
|
$up = $up - 5;
|
||
|
|
|
||
|
|
&pdf_box_block_top(10,200,'#969696') ; # start block -------------------------------------
|
||
|
|
|
||
|
|
our $top = 0 ;
|
||
|
|
|
||
|
|
my $text = $page->text;
|
||
|
|
my $font = $pdf->corefont('Helvetica'); # built-in font
|
||
|
|
my $size = 8/pt ;
|
||
|
|
$text->font($font, $size);
|
||
|
|
|
||
|
|
if ($custid) {
|
||
|
|
|
||
|
|
my ($expiry_year,$expiry_month,$expiry_day) = split(/\-/,$db{$table}{$qt_id}{quote_expiry});
|
||
|
|
my $expiry_date = &custom_date_txt("$expiry_year-$expiry_month-$expiry_day") if $db{$table}{$qt_id}{quote_expiry} ;
|
||
|
|
|
||
|
|
$top = $up ;
|
||
|
|
our $pos_cat = 15 ; our $pos_des = 60 ; our $next_line_space = 5 ;
|
||
|
|
|
||
|
|
my $sport_types = '' ;
|
||
|
|
|
||
|
|
my @sport_type_ids = ($db{$table}{$qt_id}{sport_type_ids} =~ /;/) ? split(";",$db{$table}{$qt_id}{sport_type_ids}) : split(",",$db{$table}{$qt_id}{sport_type_ids}) ;
|
||
|
|
|
||
|
|
foreach (@sport_type_ids) {
|
||
|
|
$sport_types .= qq~$db{sport_types}{$_}{name}, ~ ;
|
||
|
|
}
|
||
|
|
chop $sport_types if $sport_types ; chop $sport_types if $sport_types ;
|
||
|
|
|
||
|
|
my $operators = qq~~ ; my $cnt_ops = 0 ;
|
||
|
|
|
||
|
|
my @operator_ids = ($db{$table}{$qt_id}{operator_ids} =~ /;/) ? split(";",$db{$table}{$qt_id}{operator_ids}) : split(",",$db{$table}{$qt_id}{operator_ids}) ;
|
||
|
|
|
||
|
|
foreach (@operator_ids) {
|
||
|
|
next unless $_ ;
|
||
|
|
$cnt_ops++ ;
|
||
|
|
$operators .= qq~$db{users}{$_}{name}~ ;
|
||
|
|
|
||
|
|
my $phone = $db{users}{$_}{phone} ;
|
||
|
|
$phone =~ s/ //g ;
|
||
|
|
if (substr($phone,0,2) eq '27' && length($phone) == 11) {
|
||
|
|
$phone = "+27 " . substr($phone,2,2) . " " . substr($phone,4,3) . " " . substr($phone,7,4) ;
|
||
|
|
} elsif ((substr($phone,0,2) eq '07' || substr($phone,0,2) eq '08' || substr($phone,0,2) eq '02') && length($phone) == 10) {
|
||
|
|
$phone = "+27 " . substr($phone,1,2) . " " . substr($phone,3,3) . " " . substr($phone,6,4) ;
|
||
|
|
} else {
|
||
|
|
$phone = $db{users}{$_}{phone} ;
|
||
|
|
}
|
||
|
|
|
||
|
|
$operators .= qq~ - $phone~ if $phone ;
|
||
|
|
$operators .= qq~, ~ ;
|
||
|
|
}
|
||
|
|
chop $operators if $operators ; chop $operators if $operators ;
|
||
|
|
$operators = qq~$cnt_ops [$operators]~ if $cnt_ops ;
|
||
|
|
|
||
|
|
my $venue = qq~~ ;
|
||
|
|
|
||
|
|
my @organisation_ids = ($db{$table}{$qt_id}{organisation_ids} =~ /;/) ? split(";",$db{$table}{$qt_id}{organisation_ids}) : split(",",$db{$table}{$qt_id}{organisation_ids}) ;
|
||
|
|
|
||
|
|
foreach (@organisation_ids) {
|
||
|
|
$venue .= qq~$db{organisations}{$_}{name}, ~ ;
|
||
|
|
}
|
||
|
|
chop $venue if $venue ; chop $venue if $venue ;
|
||
|
|
my $system_details = qq~~ ;
|
||
|
|
if ($usertype ne 'schools_manager') {
|
||
|
|
|
||
|
|
my @type_details_id = ($db{$table}{$qt_id}{type_details_id} =~ /;/) ? split(";",$db{$table}{$qt_id}{type_details_id}) : split(",",$db{$table}{$qt_id}{type_details_id}) ;
|
||
|
|
|
||
|
|
foreach my $type_id (@type_details_id) {
|
||
|
|
$system_details .= qq~$db{event_type_details}{$type_id}{name}, ~ ;
|
||
|
|
}
|
||
|
|
chop $system_details if $system_details ; chop $system_details if $system_details ;
|
||
|
|
}
|
||
|
|
|
||
|
|
my $max_line_width = 100 ;
|
||
|
|
my @times_from = split(/\;/,$db{$table}{$qt_id}{times_from}) ;
|
||
|
|
my @times_to = split(/\;/,$db{$table}{$qt_id}{times_to}) ;
|
||
|
|
my @times_from_com = () ; my @times_to_com = () ;
|
||
|
|
push @times_from_com,substr($db{$table}{$qt_id}{date_from},11) ;
|
||
|
|
my @days_active = split(/\;/,$db{$table}{$qt_id}{days_active}) ;
|
||
|
|
|
||
|
|
my %dates_hash = () ;
|
||
|
|
|
||
|
|
for (1 .. 10) {
|
||
|
|
my ($year,$month,$day) = split(/\-/,substr($db{$table}{$qt_id}{date_from},0,10)) ;
|
||
|
|
my ($new_year,$new_month,$new_day) = Add_Delta_Days($year,$month,$day,$_-1) ;
|
||
|
|
$new_day = sprintf("%02s",$new_day) ; $new_month = sprintf("%02s",$new_month) ;
|
||
|
|
$dates_hash{$_} = "$new_year-$new_month-$new_day" ;
|
||
|
|
push @times_from_com,$times_from[$_-2] if $times_from[$_-2] && $_ > 1 ;
|
||
|
|
push @times_from_com,substr($db{$table}{$qt_id}{date_from},11) if !$times_from[$_-2] && $_ > 1 ;
|
||
|
|
last if substr($db{$table}{$qt_id}{date_to},0,10) eq "$new_year-$new_month-$new_day" ;
|
||
|
|
push @times_to_com,$times_to[$_-1] if $times_to[$_-1] ;
|
||
|
|
push @times_to_com,substr($db{$table}{$qt_id}{date_to},11) if !$times_to[$_-1] ;
|
||
|
|
}
|
||
|
|
|
||
|
|
push @times_to_com, substr($db{$table}{$qt_id}{date_to},11) ;
|
||
|
|
|
||
|
|
my $system_count = 0 ; my $system_day_cnt = 0 ; my %system_has_daily_op = () ;
|
||
|
|
|
||
|
|
foreach my $system_row (split(/\|/,$db{$table}{$qt_id}{daily_operator_ids})) {
|
||
|
|
$system_count++ ;
|
||
|
|
next unless $system_row ;
|
||
|
|
$system_day_cnt = 0 ;
|
||
|
|
foreach my $col (split(/\;/,$system_row)) {
|
||
|
|
$system_day_cnt++ ;
|
||
|
|
next unless $col ;
|
||
|
|
$default_op_ids{$system_count}{$system_day_cnt} = $col if $col ;
|
||
|
|
$system_daily_ops{$system_count} .= qq~Day $system_day_cnt : $db{users}{$col}{name},~ if $col ;
|
||
|
|
}
|
||
|
|
chop $system_daily_ops{$system_count} if $system_daily_ops{$system_count} ;
|
||
|
|
# chop $system_daily_ops{$system_count} if $system_daily_ops{$system_count} ;
|
||
|
|
}
|
||
|
|
$system_count = 0 ;
|
||
|
|
|
||
|
|
&display_text ("Event Name",$db{$table}{$qt_id}{ref}) if $db{$table}{$qt_id}{ref} ;
|
||
|
|
|
||
|
|
if ($date_from_for_pdf && substr($db{$table}{$qt_id}{date_from},0,10) ne substr($db{$table}{$qt_id}{date_to},0,10)) {
|
||
|
|
&display_text ("Date From",$date_from_for_pdf . qq~ to ~ . substr($times_to_com[0],0,5)) ;
|
||
|
|
for (2 .. 9) {
|
||
|
|
last if substr($db{$table}{$qt_id}{date_to},0,10) eq $dates_hash{$_} ;
|
||
|
|
next if $db{$table}{$qt_id}{days_active} and !$days_active[$_ - 1] ;
|
||
|
|
my ($new_year,$new_month,$new_day) = split(/\-/,$dates_hash{$_}) ;
|
||
|
|
my $val = $new_day . "-" . $month_array[$new_month - 1] . "-" . $new_year . " @ " . substr($times_from_com[$_ - 1],0,5) . " to " . substr($times_to_com[$_ - 1],0,5) ;
|
||
|
|
&display_text ("",$val) ;
|
||
|
|
}
|
||
|
|
&display_text ("Date To",substr($date_to_for_pdf,0,-5) . substr($times_from_com[-1],0,5) . qq~ to ~ . substr($date_to_for_pdf,-5,5)) if $date_to_for_pdf ;
|
||
|
|
} elsif ($date_from_for_pdf && substr($db{$table}{$qt_id}{date_from},0,10) eq substr($db{$table}{$qt_id}{date_to},0,10)) {
|
||
|
|
&display_text ("Date",$date_from_for_pdf . qq~ to ~ . substr($db{$table}{$qt_id}{date_to},11,5)) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
&display_text ("Type of System",$event_type_for_pdf{$type_id}) if $event_type_for_pdf{$type_id} ;
|
||
|
|
&display_text ("Type Details",$system_details) if $system_details ;
|
||
|
|
|
||
|
|
if ($usertype ne 'schools_manager') {
|
||
|
|
|
||
|
|
my $club_name = qq~~ ;
|
||
|
|
# my $cnt_sys = 0 ;
|
||
|
|
my @club_ids = split(";",$db{$table}{$qt_id}{club_ids}) ;
|
||
|
|
my @operator_ids = ($db{$table}{$qt_id}{operator_ids} =~ /;/) ? split(";",$db{$table}{$qt_id}{operator_ids}) : split(",",$db{$table}{$qt_id}{operator_ids}) ;
|
||
|
|
my $cnt_sys = -1 ;
|
||
|
|
|
||
|
|
my $this_line = qq~~ ;
|
||
|
|
|
||
|
|
foreach my $event_id (split(";",$db{$table}{$qt_id}{event_system_id_multiple})) {
|
||
|
|
$cnt_sys++ ;
|
||
|
|
next if !$event_id && !$club_ids[$cnt_sys] ;
|
||
|
|
$event_id =~ s/f-//g ;
|
||
|
|
|
||
|
|
$this_line = qq~~ ;
|
||
|
|
|
||
|
|
if ($db{event_systems}{$event_id}{name}) {
|
||
|
|
$this_line .= qq~$db{event_systems}{$event_id}{name}~ ;
|
||
|
|
$this_line .= ($db{event_systems}{$event_id}{description}) ? qq~ [$db{event_systems}{$event_id}{description}]~ : qq~~ ;
|
||
|
|
} else {
|
||
|
|
$this_line .= qq~NO SYSTEM~ ;
|
||
|
|
}
|
||
|
|
|
||
|
|
$this_line .= qq~ >>> ~ ;
|
||
|
|
|
||
|
|
$this_line .= ($db{clubs}{$club_ids[$cnt_sys]}{name}) ? qq~$db{clubs}{$club_ids[$cnt_sys]}{name} >>> ~ : qq~NO CLUB >>> ~ ;
|
||
|
|
|
||
|
|
$this_line .= qq~$db{users}{$operator_ids[$cnt_sys]}{name}~ if $operator_ids[$cnt_sys] ;
|
||
|
|
$cnt_sys++ ;
|
||
|
|
|
||
|
|
$club_name .= qq~$this_line~ ;
|
||
|
|
|
||
|
|
if ($system_daily_ops{$cnt_sys} && !$operator_ids[$cnt_sys-1]) {
|
||
|
|
|
||
|
|
my $line_width123 = $text->advancewidth("$this_line\[");
|
||
|
|
|
||
|
|
$line_width123 = $line_width123*mm ;
|
||
|
|
|
||
|
|
my $available_space = 195 - 4 - $pos_des - $line_width123 ;
|
||
|
|
|
||
|
|
my $max_operator_width = 0 ;
|
||
|
|
|
||
|
|
foreach (split(/\,/,$system_daily_ops{$cnt_sys})) {
|
||
|
|
|
||
|
|
my $width123 = $text->advancewidth("$_");
|
||
|
|
$width123 = $width123*mm ;
|
||
|
|
$max_operator_width = $width123 if $width123 > $max_operator_width ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
my $space_width = $text->advancewidth(" ")*mm ;
|
||
|
|
|
||
|
|
my $num_spaces = 0 ;
|
||
|
|
|
||
|
|
my $fist_line = qq~~ ;
|
||
|
|
|
||
|
|
if ($max_operator_width > $available_space) {
|
||
|
|
# $club_name .= qq~\n~ ;
|
||
|
|
# $line_width123 += $available_space ;
|
||
|
|
$line_width123 -= $max_operator_width ;
|
||
|
|
$num_spaces = int($line_width123 / $space_width) ;
|
||
|
|
$num_spaces = 0 ;
|
||
|
|
for (1 .. $num_spaces) {
|
||
|
|
# $club_name .= qq~ ~ ;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
$num_spaces = int($line_width123 / $space_width) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
$club_name .= qq~[~ ;
|
||
|
|
|
||
|
|
foreach (split(/\,/,$system_daily_ops{$cnt_sys})) {
|
||
|
|
# $club_name .= qq~$_\n~ ;
|
||
|
|
$club_name .= qq~$_,~ ;
|
||
|
|
for (1 .. $num_spaces+1) {
|
||
|
|
# $club_name .= qq~ ~ ;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# $club_name =~ s/ +$// ;
|
||
|
|
$club_name =~ s/\,+$// ;
|
||
|
|
chomp $club_name ;
|
||
|
|
$club_name .= qq~]~ ;
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
$cnt_sys-- ;
|
||
|
|
|
||
|
|
$club_name =~ s/ +$// ;
|
||
|
|
$club_name =~ s/>+$// ;
|
||
|
|
|
||
|
|
$club_name .= qq~\n~ ;
|
||
|
|
|
||
|
|
# $val .= qq~>>> $db{clubs}{$club_ids[$cnt_sys]}{name} ~ if $db{clubs}{$club_ids[$cnt_sys]}{name} ;
|
||
|
|
# $val .= qq~>>> $db{users}{$operator_ids[$cnt_sys]}{name} ~ if $db{users}{$operator_ids[$cnt_sys]}{name} ;
|
||
|
|
# $val .= qq~[$db{users}{$operator_ids[$cnt_sys]}{phone}] ~ if $db{users}{$operator_ids[$cnt_sys]}{name} && $db{users}{$operator_ids[$cnt_sys]}{phone} ;
|
||
|
|
# $club_name .= qq~<br>~ ;
|
||
|
|
# $cnt_sys++ ;
|
||
|
|
}
|
||
|
|
|
||
|
|
# my $club_name = qq~~ ;
|
||
|
|
# my @club_ids = split(";",$db{$table}{$qt_id}{club_ids}) ;
|
||
|
|
# my @operator_ids = split(",",$db{$table}{$qt_id}{operator_ids}) ;
|
||
|
|
# my $cnt_sys = -1 ;
|
||
|
|
# foreach my $event_id (split(";",$db{$table}{$qt_id}{event_system_id_multiple})) {
|
||
|
|
# $cnt_sys++ ;
|
||
|
|
# next if not $event_id and not $club_ids[$cnt_sys] ;
|
||
|
|
# $club_name .= qq~$db{event_systems}{$event_id}{name} ~ if $event_id ;
|
||
|
|
# $club_name .= qq~>>> ~ if $event_id and not $db{event_systems}{$event_id}{description} ;
|
||
|
|
# $club_name .= qq~($db{event_systems}{$event_id}{description}) >>> ~ if $db{event_systems}{$event_id}{description} and $event_id ;
|
||
|
|
# $club_name .= qq~NO SYSTEM >>> ~ unless $event_id ;
|
||
|
|
|
||
|
|
# $club_name .= qq~$db{clubs}{$club_ids[$cnt_sys]}{name} >>> ~ if $club_ids[$cnt_sys] ;
|
||
|
|
# $club_name .= qq~NO CLUB >>> ~ unless $club_ids[$cnt_sys] ;
|
||
|
|
|
||
|
|
# $club_name .= qq~$db{users}{$operator_ids[$cnt_sys]}{name}~ if $operator_ids[$cnt_sys] ;
|
||
|
|
# $cnt_sys++ ;
|
||
|
|
# $club_name .= qq~[$system_daily_ops{$cnt_sys}]~ if $system_daily_ops{$cnt_sys} && !$operator_ids[$cnt_sys] ;
|
||
|
|
# $cnt_sys-- ;
|
||
|
|
# # $val .= qq~>>> $db{clubs}{$club_ids[$cnt_sys]}{name} ~ if $db{clubs}{$club_ids[$cnt_sys]}{name} ;
|
||
|
|
# # $val .= qq~>>> $db{users}{$operator_ids[$cnt_sys]}{name} ~ if $db{users}{$operator_ids[$cnt_sys]}{name} ;
|
||
|
|
# # $val .= qq~[$db{users}{$operator_ids[$cnt_sys]}{phone}] ~ if $db{users}{$operator_ids[$cnt_sys]}{name} && $db{users}{$operator_ids[$cnt_sys]}{phone} ;
|
||
|
|
# $club_name .= qq~\n~ ;
|
||
|
|
# # $cnt_sys++ ;
|
||
|
|
# }
|
||
|
|
# # chop $val if $val ; chop $val if $val ;
|
||
|
|
# # $club_name = substr($club_name,0,-4) if $club_name ;
|
||
|
|
|
||
|
|
chomp $club_name if $club_name ;
|
||
|
|
|
||
|
|
&display_text ("System Details",$club_name,195) if $club_name ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
&display_text ("Operator(s)",$operators) if $operators ;
|
||
|
|
&display_text ("Sport Type(s)",$sport_types) if $sport_types ;
|
||
|
|
my $city = '' ;
|
||
|
|
if ($db{$table}{$qt_id}{city_id} and $db{$table}{$qt_id}{city_id} =~ /,/) {
|
||
|
|
# foreach (split(/,/,$db{$table}{$qt_id}{city_id})) {
|
||
|
|
# $city .= qq~$db{cities}{$_}{name},~ ;
|
||
|
|
# }
|
||
|
|
# chop $city if $city ;
|
||
|
|
$city = join(",", map{ "$db{cities}{$_}{name}" } split(/\,/,$db{$table}{$qt_id}{city_id})) ;
|
||
|
|
&display_text ("Cities",$city) ;
|
||
|
|
&display_text ("Region",$db{regions}{$db{$table}{$qt_id}{region_id}}{name}) ;
|
||
|
|
} elsif ($db{$table}{$qt_id}{city_id} or $db{$table}{$qt_id}{region_id}) {
|
||
|
|
my $city = $db{cities}{$db{$table}{$qt_id}{city_id}}{name} ;
|
||
|
|
$city .= qq~, $db{regions}{$db{$table}{$qt_id}{region_id}}{name}~ if $city and $db{$table}{$qt_id}{region_id} ;
|
||
|
|
&display_text ("City",$city) if $city ;
|
||
|
|
&display_text ("Region",$city) if $db{$table}{$qt_id}{region_id} and not $city ;
|
||
|
|
}
|
||
|
|
&display_text ("Venue",$venue) if $venue ;
|
||
|
|
|
||
|
|
if ($db{$table}{$qt_id}{poc_id}) {
|
||
|
|
my $poc_name = ($db{event_quotes_poc}{$db{$table}{$qt_id}{poc_id}}{name}) ? $db{event_quotes_poc}{$db{$table}{$qt_id}{poc_id}}{name} : "N/A" ;
|
||
|
|
&display_text ("Poc Name",$poc_name) ;
|
||
|
|
# my $value_ = $db{event_quotes_poc}{$db{$table}{$qt_id}{poc_id}}{contact_nr} ;
|
||
|
|
|
||
|
|
my $value_ = $db{event_quotes_poc}{$db{$table}{$qt_id}{poc_id}}{contact_nr} ;
|
||
|
|
$value_ =~ s/ //g ;
|
||
|
|
if (substr($value_,0,2) eq '27' && length($value_) == 11) {
|
||
|
|
$value_ = "+27 " . substr($value_,2,2) . " " . substr($value_,4,3) . " " . substr($value_,7,4) ;
|
||
|
|
} elsif ((substr($value_,0,2) eq '07' || substr($value_,0,2) eq '08' || substr($value_,0,2) eq '02') && length($value_) == 10) {
|
||
|
|
$value_ = "+27 " . substr($value_,1,2) . " " . substr($value_,3,3) . " " . substr($value_,6,4) ;
|
||
|
|
} else {
|
||
|
|
$value_ = $db{event_quotes_poc}{$db{$table}{$qt_id}{poc_id}}{contact_nr} ;
|
||
|
|
}
|
||
|
|
$value_ = "N/A" unless $value_ ;
|
||
|
|
|
||
|
|
&display_text ("Poc Contact Nr","$value_") ; #if $db{$table}{$qt_id}{poc_contact_nr} ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
&display_text ("Category 1",$db{event_quotes_categories}{$db{$table}{$qt_id}{category_id_1}}{category}) if $db{event_quotes_categories}{$db{$table}{$qt_id}{category_id_1}}{category} ;
|
||
|
|
my @a = split(/\|;\|/,$db{event_quotes_min}{$qt_id}{category_details}) ;
|
||
|
|
&display_text ("Category 1 Sub Categories",$a[0]) if $a[0] ;
|
||
|
|
&display_text ("Category 2",$db{event_quotes_categories}{$db{$table}{$qt_id}{category_id_2}}{category}) if $db{event_quotes_categories}{$db{$table}{$qt_id}{category_id_2}}{category} ;
|
||
|
|
&display_text ("Category 2 Sub Categories",$a[1]) if $a[1] ;
|
||
|
|
|
||
|
|
if ($db{$table}{$qt_id}{recipient_id}) {
|
||
|
|
|
||
|
|
my $rec_name = ($db{event_quotes_recipient}{$db{$table}{$qt_id}{recipient_id}}{name}) ? $db{event_quotes_recipient}{$db{$table}{$qt_id}{recipient_id}}{name} : "N/A" ;
|
||
|
|
my $rec_nr = ($db{event_quotes_recipient}{$db{$table}{$qt_id}{recipient_id}}{contact_nr}) ? $db{event_quotes_recipient}{$db{$table}{$qt_id}{recipient_id}}{contact_nr} : "N/A" ;
|
||
|
|
|
||
|
|
&display_text ("Recipient Name",$rec_name) ;
|
||
|
|
|
||
|
|
$rec_nr =~ s/ //g ;
|
||
|
|
if (substr($rec_nr,0,2) eq '27' && length($rec_nr) == 11) {
|
||
|
|
$rec_nr = "+27 " . substr($rec_nr,2,2) . " " . substr($rec_nr,4,3) . " " . substr($rec_nr,7,4) ;
|
||
|
|
} elsif ((substr($rec_nr,0,2) eq '07' || substr($rec_nr,0,2) eq '08' || substr($rec_nr,0,2) eq '02') && length($rec_nr) == 10) {
|
||
|
|
$rec_nr = "+27 " . substr($rec_nr,1,2) . " " . substr($rec_nr,3,3) . " " . substr($rec_nr,6,4) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
&display_text ("Recipient Nr",$rec_nr) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
&display_text ("Additional Notes",$db{$table}{$qt_id}{additional_notes}) if $db{$table}{$qt_id}{additional_notes} ;
|
||
|
|
&display_text ("Format of Title",$db{$table}{$qt_id}{format_of_title}) if $db{$table}{$qt_id}{format_of_title} ;
|
||
|
|
|
||
|
|
# &pdf_bar(60,$db{$table}{$qt_id}{format_of_title},120,0,1) ;
|
||
|
|
$up -= $next_line_space ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
$up+=1.25 ;
|
||
|
|
&pdf_box_block_bottom(10,200,'#969696') ; # end block -------------------------------------
|
||
|
|
|
||
|
|
$inner_blue_box = 0 ;
|
||
|
|
|
||
|
|
unless ($db{$table}{$qt_id}{excl_purchase_summary}) {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
&db_min_ro('analytics_event_bookings','id,event_quote_id,fixtures_saved_values,analytics_saved_values,start_date_time,sport_type_ids,event_name',"event_quote_id <> '0' AND event_quote_id = '$qt_id'",'','') ;
|
||
|
|
|
||
|
|
# our $analytics_event_exists = ($db{analytics_event_bookings}{$qt_id}{event_quote_id}) ? 1 : 0 ;
|
||
|
|
our $analytics_event_exists = 0 ;
|
||
|
|
|
||
|
|
foreach (keys %{$db{analytics_event_bookings}}) {
|
||
|
|
$analytics_event_exists = 1 ;
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($analytics_event_exists) {
|
||
|
|
|
||
|
|
&db_switch_conn('sss') ;
|
||
|
|
|
||
|
|
&db_min_ro('teams','id,name','','','') ;
|
||
|
|
|
||
|
|
&db_switch_conn('aisa') ;
|
||
|
|
|
||
|
|
# our @months = ("","January","February","March","April","May","June","July","August","September","October","November","December") ;
|
||
|
|
|
||
|
|
my @fixtures_saved_values = () ; my @analytics_saved_values_arr = () ; my %analytics_saved_values = () ;
|
||
|
|
|
||
|
|
our @months = ("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ;
|
||
|
|
|
||
|
|
our $analytics_table_body = qq~~ ; our $analytics_table = qq~~ ;
|
||
|
|
|
||
|
|
my $text2 = $page->text;
|
||
|
|
my $font2 = $pdf->corefont('Helvetica'); # built-in font
|
||
|
|
my $size2 = 13/pt ;
|
||
|
|
$text2->font($font2, $size2);
|
||
|
|
|
||
|
|
foreach my $id (keys %{$db{analytics_event_bookings}}) {
|
||
|
|
|
||
|
|
$sort_field{27} = 'fixture_date/Time_from' ;
|
||
|
|
$sort_field{28} = 'sport' ;
|
||
|
|
$sort_field{29} = 'team' ;
|
||
|
|
$sort_field{30} = 'home_vs_opp_team' ;
|
||
|
|
$sort_field{31} = 'stream_forwarding' ;
|
||
|
|
$sort_field{32} = 'stream_key' ;
|
||
|
|
$sort_field{33} = 'stream_URL' ;
|
||
|
|
|
||
|
|
$db{analytics_event_bookings}{$id}{fixtures_saved_values} =~ s/\|+$// ;
|
||
|
|
|
||
|
|
$db{analytics_event_bookings}{$id}{analytics_saved_values} = ";;" unless $db{analytics_event_bookings}{$id}{analytics_saved_values} ;
|
||
|
|
|
||
|
|
@analytics_saved_values_arr = split(/\|/,$db{analytics_event_bookings}{$id}{analytics_saved_values}) ;
|
||
|
|
|
||
|
|
$db{analytics_event_bookings}{$id}{fixtures_saved_values} = ";;;" unless $db{analytics_event_bookings}{$id}{fixtures_saved_values} ;
|
||
|
|
|
||
|
|
@fixtures_saved_values = split(/\|/,$db{analytics_event_bookings}{$id}{fixtures_saved_values}) ;
|
||
|
|
|
||
|
|
my $nr_of_rows = scalar @fixtures_saved_values ;
|
||
|
|
$nr_of_rows = scalar @analytics_saved_values_arr if scalar @analytics_saved_values_arr > $nr_of_rows ;
|
||
|
|
|
||
|
|
my $fixtures_row_cnt = 0 ;
|
||
|
|
foreach my $data (@fixtures_saved_values) {
|
||
|
|
my @abc = split(/\;/,$data) ;
|
||
|
|
|
||
|
|
$fixtures_row_cnt++ ;
|
||
|
|
$analytics_saved_values{$id}{$fixtures_row_cnt}{$sort_field{27}} = ($abc[0]) ? &common_min_date_as_string($abc[0]) : ($db{analytics_event_bookings}{$id}{start_date_time}) ? &common_min_date_as_string($db{analytics_event_bookings}{$id}{start_date_time}) : &common_min_date_as_string("$now_year-$now_mm-$now_dd 08:00:00") ;
|
||
|
|
$analytics_saved_values{$id}{$fixtures_row_cnt}{$sort_field{28}} = ($abc[1]) ? $db{sport_types}{$abc[1]}{name} : ($db{analytics_event_bookings}{$id}{sport_type_ids} && $db{analytics_event_bookings}{$id}{sport_type_ids} !~ /;/) ? $db{sport_types}{$db{analytics_event_bookings}{$id}{sport_type_ids}}{name} : "N/A" ;
|
||
|
|
$analytics_saved_values{$id}{$fixtures_row_cnt}{$sort_field{29}} = ucfirst $abc[2] . ' ' . uc $abc[3] ;
|
||
|
|
$analytics_saved_values{$id}{$fixtures_row_cnt}{$sort_field{30}} = ($abc[4] && $abc[6]) ? $db{teams}{$abc[4]}{name} . ' VVVVVSSSS ' . $db{teams}{$abc[6]}{name} : ($abc[4]) ? $db{teams}{$abc[4]}{name} . ' VVVVVSSSS N/A' : ($abc[6]) ? 'N/A VVVVVSSSS ' . $db{teams}{$abc[6]}{name} : "" ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
my $analytics_row_cnt = 0 ;
|
||
|
|
|
||
|
|
foreach (@analytics_saved_values_arr) {
|
||
|
|
my @abc = split(/\;/,$_) ;
|
||
|
|
$analytics_row_cnt++ ;
|
||
|
|
$analytics_saved_values{$id}{$analytics_row_cnt}{$sort_field{31}} = ($abc[0] eq '1') ? "Yes" : ($abc[0] eq '2') ? "No" : "" ;
|
||
|
|
$analytics_saved_values{$id}{$analytics_row_cnt}{$sort_field{32}} = $abc[1] ;
|
||
|
|
$analytics_saved_values{$id}{$analytics_row_cnt}{$sort_field{33}} = $abc[2] ;
|
||
|
|
}
|
||
|
|
if ($analytics_row_cnt > $fixtures_row_cnt) {
|
||
|
|
for ($fixtures_row_cnt + 1 .. $analytics_row_cnt) {
|
||
|
|
$analytics_saved_values{$id}{$_}{$sort_field{27}} = ($db{analytics_event_bookings}{$id}{start_date_time}) ? &common_min_date_as_string($db{analytics_event_bookings}{$id}{start_date_time}) : &common_min_date_as_string("$now_year-$now_mm-$now_dd 08:00:00") ;
|
||
|
|
$analytics_saved_values{$id}{$_}{$sort_field{28}} = ($db{analytics_event_bookings}{$id}{sport_type_ids} && $db{analytics_event_bookings}{$id}{sport_type_ids} !~ /;/) ? $db{sport_types}{$db{analytics_event_bookings}{$id}{sport_type_ids}}{name} : "N/A" ;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# foreach my $row_cnt (keys %analytics_saved_values) {
|
||
|
|
# foreach my $col (keys %{$analytics_saved_values{$row_cnt}}) {
|
||
|
|
# # $analytics_saved_values{$row_cnt}{$col} = ($analytics_saved_values{$row_cnt}{$col}) ? $analytics_saved_values{$row_cnt}{$col} : '-->None<--' ;
|
||
|
|
# }
|
||
|
|
# }
|
||
|
|
|
||
|
|
# last ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
my %col_widths = () ;
|
||
|
|
|
||
|
|
my $asd = 80 ;
|
||
|
|
|
||
|
|
my $_27_narrow = 17.5 ;
|
||
|
|
my $_31_narrow = 18.5 ;
|
||
|
|
my $_31_extra_narrow = 9.5 ;
|
||
|
|
my $_33_narrow = 9.5 ;
|
||
|
|
my $_32_narrow = 8.5 ;
|
||
|
|
|
||
|
|
$col_widths{$sort_field{27}} = 17.5 ;
|
||
|
|
$col_widths{$sort_field{28}} = 8 ;
|
||
|
|
$col_widths{$sort_field{29}} = 8 ;
|
||
|
|
$col_widths{$sort_field{30}} = 27 ;
|
||
|
|
$col_widths{$sort_field{31}} = 26 ;
|
||
|
|
$col_widths{$sort_field{32}} = 15.5 ;
|
||
|
|
$col_widths{$sort_field{33}} = 16.5 ;
|
||
|
|
# $col_widths{$sort_field{31}} = 5 ;
|
||
|
|
# $col_widths{$sort_field{32}} = 8.5 ;
|
||
|
|
# $col_widths{$sort_field{33}} = 10 ;
|
||
|
|
|
||
|
|
my %orig_col_widths = %col_widths ;
|
||
|
|
|
||
|
|
foreach my $analytics_id (sort { $b <=> $a } keys %analytics_saved_values) {
|
||
|
|
|
||
|
|
next unless $analytics_id ;
|
||
|
|
|
||
|
|
%col_widths = %orig_col_widths ;
|
||
|
|
|
||
|
|
my $pos_cat = 15 ;
|
||
|
|
|
||
|
|
my %rows_required = () ; my %max_rows_required = () ;
|
||
|
|
|
||
|
|
my %max_col_width_excl_heading = () ; my %split_teams = () ;
|
||
|
|
|
||
|
|
foreach my $row_cnt (sort { $a <=> $b } keys %{$analytics_saved_values{$analytics_id}}) {
|
||
|
|
|
||
|
|
$max_rows_required{$row_cnt} = 1 ;
|
||
|
|
|
||
|
|
for $col_cnt (27 .. 31) {
|
||
|
|
|
||
|
|
$rows_required{$row_cnt}{$col_cnt} = 1 ;
|
||
|
|
|
||
|
|
if ($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}) {
|
||
|
|
$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}} = " $analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}} " ;
|
||
|
|
# $analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}} = lc $analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}} ;
|
||
|
|
my $line_width = $text->advancewidth($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}});
|
||
|
|
$line_width -= 40.024 if $col_cnt == 30 && $analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}} && $analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}} =~ /VVVVVSSSS/ ; ## VVVSSS
|
||
|
|
$line_width = $line_width*mm ;
|
||
|
|
$col_widths{$sort_field{$col_cnt}} = $line_width if $col_widths{$sort_field{$col_cnt}} < $line_width ;
|
||
|
|
$max_col_width_excl_heading{$sort_field{$col_cnt}} = $line_width if !$max_col_width_excl_heading{$sort_field{$col_cnt}} || $max_col_width_excl_heading{$sort_field{$col_cnt}} < $line_width ;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$rows_required{$row_cnt}{32} = 1 ;
|
||
|
|
|
||
|
|
if ($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{32}}) {
|
||
|
|
|
||
|
|
$rows_required{$row_cnt}{32} = 0 ;
|
||
|
|
|
||
|
|
my $row_cnt2 = 0 ;
|
||
|
|
|
||
|
|
foreach (split("\n",$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{32}})) {
|
||
|
|
|
||
|
|
next unless $_ ;
|
||
|
|
$rows_required{$row_cnt}{32}++ ;
|
||
|
|
my $line_width = $text->advancewidth(" $_ ") ;
|
||
|
|
$line_width = $line_width*mm ;
|
||
|
|
$col_widths{$sort_field{32}} = $line_width if $col_widths{$sort_field{32}} < $line_width ;
|
||
|
|
$max_col_width_excl_heading{$sort_field{32}} = $line_width if !$max_col_width_excl_heading{$sort_field{32}} || $max_col_width_excl_heading{$sort_field{32}} < $line_width ;
|
||
|
|
$row_cnt2++ ;
|
||
|
|
$max_rows_required{$row_cnt} = $row_cnt2 if $row_cnt2 > $max_rows_required{$row_cnt} ;
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{33}}) {
|
||
|
|
$rows_required{$row_cnt}{33} = 2 ;
|
||
|
|
$max_rows_required{$row_cnt} = 2 if $max_rows_required{$row_cnt} < 2 ;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
$up -= 5 ;
|
||
|
|
|
||
|
|
if ($up < 30+($max_rows_required{1}-1)*3.5) {
|
||
|
|
&pdf_check_value_of_up(30+($max_rows_required{1}-1)*3.5) ;
|
||
|
|
$up -= 6 ;
|
||
|
|
}
|
||
|
|
|
||
|
|
my $heading = "ANALYTICS INFO - $db{analytics_event_bookings}{$analytics_id}{event_name} [$analytics_id]" ;
|
||
|
|
|
||
|
|
my $width4 = $text2->advancewidth($heading);
|
||
|
|
$width4 = $width4*mm ;
|
||
|
|
|
||
|
|
$width4 = 10 + (190-$width4)/2 ;
|
||
|
|
$width4 = 12 if $width4 < 12 ;
|
||
|
|
|
||
|
|
&pdf_bar(10,$up,200,$up,'#969696',$heading,20,$width4) ; #EEEEEE
|
||
|
|
|
||
|
|
$up -= 5;
|
||
|
|
|
||
|
|
&pdf_box_block_top(10,200,'#969696') ; # start block -------------------------------------
|
||
|
|
|
||
|
|
$up -= 5 ;
|
||
|
|
|
||
|
|
my $tot_width = 0 ; my $tot_ideal_width = 180 ;
|
||
|
|
foreach (keys %col_widths) {
|
||
|
|
$tot_width += $col_widths{$_} ;
|
||
|
|
$tot_width += 1 ;
|
||
|
|
}
|
||
|
|
$tot_width -= 1 ;
|
||
|
|
|
||
|
|
my %prev_col_widths = %col_widths ;
|
||
|
|
|
||
|
|
# my $tot_extra_width = $tot_width - $tot_ideal_width ;
|
||
|
|
|
||
|
|
if ($tot_width > $tot_ideal_width) {
|
||
|
|
$col_widths{$sort_field{31}} = $_31_narrow ;
|
||
|
|
$tot_width -= ($prev_col_widths{$sort_field{31}} - $col_widths{$sort_field{31}}) ;
|
||
|
|
$prev_col_widths{$sort_field{31}} = $col_widths{$sort_field{31}} ;
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($tot_width > $tot_ideal_width) {
|
||
|
|
$col_widths{$sort_field{31}} = $_31_extra_narrow ;
|
||
|
|
$tot_width -= ($prev_col_widths{$sort_field{31}} - $col_widths{$sort_field{31}}) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($tot_width > $tot_ideal_width) {
|
||
|
|
$col_widths{$sort_field{33}} = $_33_narrow ;
|
||
|
|
$tot_width -= ($prev_col_widths{$sort_field{33}} - $col_widths{$sort_field{33}}) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($tot_width > $tot_ideal_width) {
|
||
|
|
if ($max_col_width_excl_heading{$sort_field{32}} < $col_widths{$sort_field{32}}) {
|
||
|
|
$col_widths{$sort_field{32}} = $_32_narrow ;
|
||
|
|
$tot_width -= ($prev_col_widths{$sort_field{32}} - $col_widths{$sort_field{32}}) ;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($tot_width > $tot_ideal_width) {
|
||
|
|
$col_widths{$sort_field{27}} = $_27_narrow ;
|
||
|
|
$tot_width -= ($prev_col_widths{$sort_field{27}} - $col_widths{$sort_field{27}}) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($tot_width > $tot_ideal_width) {
|
||
|
|
|
||
|
|
my $max_total_len = 0 ; my $max_single_len = 0 ; my %tot_widths = () ;
|
||
|
|
|
||
|
|
foreach my $row_cnt (keys %{$analytics_saved_values{$analytics_id}}) {
|
||
|
|
|
||
|
|
my ($home_team,$away_team) = split(/\ VVVVVSSSS /,$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{30}}) ;
|
||
|
|
|
||
|
|
$home_team = "N/A" unless $home_team ;
|
||
|
|
$away_team = "N/A" unless $away_team ;
|
||
|
|
|
||
|
|
my $line_width1 = $text->advancewidth(" $home_team vs ") ;
|
||
|
|
my $line_width2 = $text->advancewidth(" $away_team ") ;
|
||
|
|
my $line_width3 = $text->advancewidth(" $away_team vs $away_team ") ;
|
||
|
|
|
||
|
|
$line_width1 = $line_width1*mm;
|
||
|
|
$line_width2 = $line_width2*mm;
|
||
|
|
$line_width3 = $line_width3*mm;
|
||
|
|
|
||
|
|
$tot_widths{$row_cnt} = $line_width3 ;
|
||
|
|
|
||
|
|
$max_single_len = $line_width1 if $line_width1 > $max_single_len ;
|
||
|
|
$max_single_len = $line_width2 if $line_width2 > $max_single_len ;
|
||
|
|
$max_total_len = $line_width3 if $line_width3 > $max_total_len ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
$col_widths{$sort_field{30}} = $max_single_len ;
|
||
|
|
$tot_width -= ($prev_col_widths{$sort_field{30}} - $col_widths{$sort_field{30}}) ;
|
||
|
|
|
||
|
|
foreach my $row_cnt (keys %{$analytics_saved_values{$analytics_id}}) {
|
||
|
|
|
||
|
|
if ($tot_widths{$row_cnt} <= $max_single_len) {
|
||
|
|
$split_teams{$row_cnt} = 0 ;
|
||
|
|
} else {
|
||
|
|
$split_teams{$row_cnt} = 1 ;
|
||
|
|
$rows_required{$row_cnt}{30} = 2 ;
|
||
|
|
$max_rows_required{$row_cnt} = 2 if !$max_rows_required{$row_cnt} || $max_rows_required{$row_cnt} < 2 ;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($tot_width < $tot_ideal_width) {
|
||
|
|
$col_widths{$sort_field{32}} += ($tot_ideal_width - $tot_width) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
my $up_orig = $up ;
|
||
|
|
|
||
|
|
my $min_up = $up ;
|
||
|
|
|
||
|
|
my %max_line_cnt = () ; my %row_height = () ; my %analytics_saved_values_new = () ;
|
||
|
|
|
||
|
|
foreach my $row_cnt (sort { $a <=> $b } keys %{$analytics_saved_values{$analytics_id}}) {
|
||
|
|
|
||
|
|
$max_line_cnt{$row_cnt} = 1 unless $max_line_cnt{$row_cnt} ;
|
||
|
|
|
||
|
|
my $line_width1 = $text->advancewidth(" 11-Aug-2025 ") ;
|
||
|
|
# my $line_width2 = $text->advancewidth("Stream URL ");
|
||
|
|
# my $line_width3 = $text->advancewidth("S/Key ");
|
||
|
|
|
||
|
|
$line_width1 = $line_width1*mm ;
|
||
|
|
# $line_width2 = $line_width2*mm ;
|
||
|
|
# $line_width3 = $line_width3*mm ;
|
||
|
|
|
||
|
|
# $line_width1 = $line_width1;
|
||
|
|
# $line_width1 = $line_width1;
|
||
|
|
|
||
|
|
if ($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{32}}) {
|
||
|
|
|
||
|
|
my $total_line_width = $text->advancewidth($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{32}});
|
||
|
|
|
||
|
|
my $max_line_width = 220 ;
|
||
|
|
|
||
|
|
my $prev_line_text = "" ; my $line_cnt = 0 ; my $line_text = "" ;
|
||
|
|
|
||
|
|
if ($total_line_width > $max_line_width) {
|
||
|
|
|
||
|
|
foreach (split(/ /,$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{32}})) {
|
||
|
|
|
||
|
|
$line_text .= "$_" ;
|
||
|
|
|
||
|
|
my $line_text_width = $text->advancewidth($line_text) ;
|
||
|
|
my $prev_line_text_width = $text->advancewidth($prev_line_text) ;
|
||
|
|
|
||
|
|
$line_text .= " " ; $prev_line_text .= " " if $prev_line_text ;
|
||
|
|
|
||
|
|
if ($prev_line_text_width <= $max_line_width && $max_line_width < $line_text_width) {
|
||
|
|
|
||
|
|
chop $prev_line_text if $prev_line_text ;
|
||
|
|
|
||
|
|
$analytics_saved_values_new{$sort_field{$col_cnt}}{$row_cnt} .= "$prev_line_text
|
||
|
|
" ;
|
||
|
|
$up-=3.5 ; $line_cnt++ ; $line_text = "$_ " ; $prev_line_text = "$_ " ;
|
||
|
|
$max_line_cnt{$row_cnt} = $line_cnt if $line_cnt > $max_line_cnt{$row_cnt} ;
|
||
|
|
|
||
|
|
} else {
|
||
|
|
$prev_line_text .= "$_" ;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($line_text) {
|
||
|
|
chop $line_text if $line_text ;
|
||
|
|
$analytics_saved_values_new{$sort_field{$col_cnt}}{$row_cnt} .= "$line_text
|
||
|
|
" ;
|
||
|
|
$up-=3.5 ; $line_cnt++ ; $line_text = "" ; $prev_line_text = "" ;
|
||
|
|
$max_line_cnt{$row_cnt} = $line_cnt if $line_cnt > $max_line_cnt{$row_cnt} ;
|
||
|
|
}
|
||
|
|
|
||
|
|
$up += 3.5*$line_cnt ;
|
||
|
|
|
||
|
|
} else {
|
||
|
|
$analytics_saved_values_new{$sort_field{$col_cnt}}{$row_cnt} .= "$prev_line_text
|
||
|
|
" ;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
my $up_orig = $up ;
|
||
|
|
|
||
|
|
foreach my $row_cnt (sort { $a <=> $b } keys %{$analytics_saved_values{$analytics_id}}) {
|
||
|
|
|
||
|
|
next unless $row_cnt ;
|
||
|
|
|
||
|
|
if ($row_cnt == 1) {
|
||
|
|
|
||
|
|
for my $col_cnt (27 .. 33) {
|
||
|
|
|
||
|
|
my $table_header = join(" ", map { ucfirst $_ } split (/\_/, $sort_field{$col_cnt})) ;
|
||
|
|
|
||
|
|
if ($sort_field{$col_cnt} eq 'fixture_date/Time_from') {
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,"Date Time") ;
|
||
|
|
# $up -= 3.25 ;
|
||
|
|
# &pdf_small_bold_text ($pos_cat,$up,"/Time From") ;
|
||
|
|
# $up += 3.25 ;
|
||
|
|
} elsif ($sort_field{$col_cnt} eq 'age_group') {
|
||
|
|
# &pdf_small_bold_text ($pos_cat,$up,"Age") ;
|
||
|
|
# $up -= 3.25 ;
|
||
|
|
# &pdf_small_bold_text ($pos_cat,$up,"Group") ;
|
||
|
|
# $up += 3.25 ;
|
||
|
|
} elsif ($sort_field{$col_cnt} eq 'stream_forwarding') {
|
||
|
|
if ($col_widths{$sort_field{31}} == $_31_narrow) {
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,"S/Forwarding") ;
|
||
|
|
} elsif ($col_widths{$sort_field{31}} == $_31_extra_narrow) {
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,"S/F") ;
|
||
|
|
} else {
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,"Stream Forwarding") ;
|
||
|
|
}
|
||
|
|
} elsif ($sort_field{$col_cnt} eq 'stream_key') {
|
||
|
|
if ($col_widths{$sort_field{32}} == $_32_narrow) {
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,"S/Key") ;
|
||
|
|
} else {
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,"Stream Key") ;
|
||
|
|
}
|
||
|
|
} elsif ($sort_field{$col_cnt} eq 'stream_URL') {
|
||
|
|
|
||
|
|
if ($col_widths{$sort_field{33}} == $_33_narrow) {
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,"S/URL") ;
|
||
|
|
} else {
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,"Stream URL") ;
|
||
|
|
}
|
||
|
|
|
||
|
|
# $up -= 3.25 ;
|
||
|
|
# &pdf_small_bold_text ($pos_cat,$up,"Forwarding") ;
|
||
|
|
# $up += 3.25 ;
|
||
|
|
} else {
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,"$table_header") ;
|
||
|
|
}
|
||
|
|
|
||
|
|
$pos_cat += $col_widths{$sort_field{$col_cnt}} + 1 ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
# $up -= 3.25 ;
|
||
|
|
$up_orig = $up ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
$pos_cat = 15 ;
|
||
|
|
|
||
|
|
$up -= 5 ;
|
||
|
|
|
||
|
|
if (($rows_required{$row_cnt}{27} > 1 || $col_widths{$sort_field{27}} == $_27_narrow) && $max_rows_required{$row_cnt} < 2) {
|
||
|
|
$max_rows_required{$row_cnt} = 2 ;
|
||
|
|
}
|
||
|
|
|
||
|
|
$max_rows_required{$row_cnt} = 1 unless $max_rows_required{$row_cnt} ;
|
||
|
|
|
||
|
|
my $remaining_space_required = 15 + 3.5*($max_rows_required{$row_cnt} - 1) ;
|
||
|
|
|
||
|
|
if ($up < $remaining_space_required) {
|
||
|
|
$up = 10 ;
|
||
|
|
&pdf_box_block_bottom(10,200,'#969696') ; # end block -------------------------------------
|
||
|
|
&pdf_check_value_of_up($remaining_space_required) ;
|
||
|
|
&pdf_box_block_top(10,200,'#969696') ; # start block -------------------------------------
|
||
|
|
$up -= 6 ;
|
||
|
|
}
|
||
|
|
|
||
|
|
$up_orig = $up ;
|
||
|
|
|
||
|
|
for my $col_cnt (27 .. 33) {
|
||
|
|
|
||
|
|
$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}} = "" if $analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}} eq '-->None<--' ;
|
||
|
|
|
||
|
|
$rows_required{$row_cnt}{$col_cnt} = 1 unless $rows_required{$row_cnt}{$col_cnt} ;
|
||
|
|
|
||
|
|
if ($col_cnt == 27) {
|
||
|
|
if ($rows_required{$row_cnt}{$col_cnt} > 1 || $col_widths{$sort_field{$col_cnt}} == $_27_narrow) {
|
||
|
|
$rows_required{$row_cnt}{$col_cnt} = 2 ;
|
||
|
|
$max_rows_required{$row_cnt} = 2 if $max_rows_required{$row_cnt} < 2 ;
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',substr($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}},0,12),10,$pos_cat,'small','small_black',1) ;
|
||
|
|
$up -= 3.5 ;
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',' ' . substr($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}},13,7),10,$pos_cat,'small','small_black',1) ;
|
||
|
|
} else {
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}},10,$pos_cat,'small','small_black',1) ;
|
||
|
|
}
|
||
|
|
} elsif ($col_cnt == 28) {
|
||
|
|
# my @sport_split = () ;
|
||
|
|
# if (length($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}) > 10) {
|
||
|
|
# @sport_split = split(/ /,$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}) ;
|
||
|
|
# } else {
|
||
|
|
# push @sport_split, $analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}} ;
|
||
|
|
# }
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
} elsif ($col_cnt == 30) {
|
||
|
|
my @teams_split = () ;
|
||
|
|
if ($split_teams{$row_cnt}) {
|
||
|
|
@teams_split = split(/\ VVVVVSSSS /,$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}) ;
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"$teams_split[0] vs",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
$up -= 3.5 ;
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE'," $teams_split[1]",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
} else {
|
||
|
|
$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}} =~ s/\VVVVVSSSS/\vs/g ;
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
} elsif ($col_cnt == 32) {
|
||
|
|
# chomp $analytics_saved_values_new{$sort_field{$col_cnt}}{$row_cnt} ;
|
||
|
|
# my $new_line_cnt = 1 ;
|
||
|
|
|
||
|
|
if ($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}) {
|
||
|
|
foreach (split("\n",$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}})) {
|
||
|
|
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE'," $_ ",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
$up -= 3.5 ;
|
||
|
|
# $new_line_cnt++ ;
|
||
|
|
}
|
||
|
|
$up += 3.5 ;
|
||
|
|
} else {
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
}
|
||
|
|
# &pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
# &pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"",10,$pos_cat,'small','small_black',1) unless $analytics_saved_values_new{$sort_field{$col_cnt}}{$row_cnt} ;
|
||
|
|
# $new_line_cnt = 1 unless $analytics_saved_values_new{$sort_field{$col_cnt}}{$row_cnt} ;
|
||
|
|
|
||
|
|
} elsif ($col_cnt == 33) {
|
||
|
|
if ($analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}) {
|
||
|
|
$pos_cat += 3.5 if $col_widths{$sort_field{$col_cnt}} == 16.5 ;
|
||
|
|
&pdf_add_URL_link($pos_cat,$up,"$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}","$htmlpath/img/icons/event_details_pdf_url_icon.PNG") ;
|
||
|
|
$pos_cat -= 3.5 if $col_widths{$sort_field{$col_cnt}} == 16.5 ;
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
$up -= 3.5 ;
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
} else {
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
} else {
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"$analytics_saved_values{$analytics_id}{$row_cnt}{$sort_field{$col_cnt}}",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
for ($rows_required{$row_cnt}{$col_cnt} + 1 .. $max_rows_required{$row_cnt}) {
|
||
|
|
$up -= 3.5 ;
|
||
|
|
&pdf_bar($pos_cat,$up+1,$pos_cat+$col_widths{$sort_field{$col_cnt}},$up+1,'#EEEEEE',"",10,$pos_cat,'small','small_black',1) ;
|
||
|
|
}
|
||
|
|
|
||
|
|
$up = $up_orig ;
|
||
|
|
$pos_cat += $col_widths{$sort_field{$col_cnt}} + 1 ;
|
||
|
|
# $up -= 3.5 ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
$up -= 3.5*($max_rows_required{$row_cnt} - 1) ;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
$up -= 5 ;
|
||
|
|
|
||
|
|
&pdf_box_block_bottom(10,200,'#969696') ; # end block -------------------------------------
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($up < 52) {
|
||
|
|
&pdf_box_block_bottom(10,200,'#969696') ; # end block -------------------------------------
|
||
|
|
&pdf_check_value_of_up(52) ;
|
||
|
|
&pdf_box_block_top(10,200,'#969696') ; # start block -------------------------------------
|
||
|
|
$up -= 6 ;
|
||
|
|
}
|
||
|
|
$up -= 5 ;
|
||
|
|
&pdf_small_bold_text (15,$up,"Please follow these guidelines:") ;
|
||
|
|
$up -= 5 ;
|
||
|
|
|
||
|
|
&pdf_small_text(15,$up,"1. Please ensure you have been added to the temporary WhatsApp group called \"Streams for Analytics\" before game day.") ; $up -= 4 ;
|
||
|
|
&pdf_small_text(15,$up,"2. Ensure the start of the game is captured.") ; $up -= 4 ;
|
||
|
|
&pdf_small_text(15,$up,"3. Ensure the final whistle of the game is captured.") ; $up -= 4 ;
|
||
|
|
&pdf_small_text(15,$up,"4. For quarter-finals, semi-finals and finals, a penalty shoot-out may occur - end times should be extended to") ; $up -= 4 ;
|
||
|
|
&pdf_small_text(15,$up,"5. Team colours must be accurately reflected on the scoreboard.") ; $up -= 4 ;
|
||
|
|
&pdf_small_text(15,$up,"6. The scoreboard must reflect the score accurately at all times, as best as possible.") ; $up -= 4 ;
|
||
|
|
&pdf_small_text(15,$up,"7. Stream-forwarding details have been added to the event to allow live coding from YouTube. If the event needs to be recreated, the support team") ; $up -= 4 ;
|
||
|
|
&pdf_small_text(15,$up," must be informed so that the stream-forwarding details can be re-applied.") ; $up -= 4 ;
|
||
|
|
&pdf_small_text(15,$up,"8. If there is a delay to the match start time, the support team must be informed so the analysts can be updated.") ;
|
||
|
|
|
||
|
|
# &pdf_small_text(15,$up,"1. Capture start of the game.") ; $up -= 4 ;
|
||
|
|
# &pdf_small_text(15,$up,"2. Capture the final whistle of the game.") ; $up -= 4 ;
|
||
|
|
# &pdf_small_text(15,$up,"3. Quarters, semis and finals there could be a penalty shoot out - please extend your end time to include these in your same stream.") ; $up -= 4 ;
|
||
|
|
# &pdf_small_text(15,$up,"4. Team colours should reflect accurately on the scoreboard.") ; $up -= 4 ;
|
||
|
|
# &pdf_small_text(15,$up,"5. Scoreboard to reflect accurately as best you can.") ; $up -= 4 ;
|
||
|
|
# &pdf_small_text(15,$up,"6. We have added stream forward details to your event so we can code live from YouTube - if you need to recreate your event please let me know") ; $up -= 4 ;
|
||
|
|
# &pdf_small_text(15,$up," so I can read stream forwarding details.") ; $up -= 4 ;
|
||
|
|
# &pdf_small_text(15,$up,"7. If there is a delay in the start time of your match please let me know so I can update the analysts.") ;
|
||
|
|
|
||
|
|
# $up -= 4 ;
|
||
|
|
# $up = 10 ;
|
||
|
|
# &pdf_box_block_bottom(10,200,'#969696') ; # end block -------------------------------------
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
# my $page = $pdf->page;
|
||
|
|
# my $font = $pdf->corefont('Helvetica', -encoding => 'latin1');
|
||
|
|
|
||
|
|
# my $text = $page->text;
|
||
|
|
|
||
|
|
# my $size = 12;*
|
||
|
|
# $text->font($font, $size);0*-/-++
|
||
|
|
# $text->fillcolor('blue');
|
||
|
|
|
||
|
|
# # Position in points
|
||
|
|
# my $x = 50;
|
||
|
|
# my $y = 700;
|
||
|
|
|
||
|
|
# # Write the link text
|
||
|
|
# my $label = "Click Here";
|
||
|
|
# $text->translate($x, $y);
|
||
|
|
# $text->text($label);
|
||
|
|
|
||
|
|
# # Width/height for the annotation box
|
||
|
|
# # Bounding box for the link
|
||
|
|
|
||
|
|
# my $width = $font->width($label) * $size / 1000;
|
||
|
|
# my $height = $size;
|
||
|
|
|
||
|
|
# # Add the clickable annotation (note: use 'uri' not '-uri')
|
||
|
|
|
||
|
|
# $page->annotation(
|
||
|
|
# 50, 700, 250, 720,
|
||
|
|
# -uri => 'https://www.example.com',
|
||
|
|
# );
|
||
|
|
|
||
|
|
# my $page = $pdf->page();
|
||
|
|
|
||
|
|
# my ($llx, $lly, $urx, $ury) = (50, 700, 250, 720) ;
|
||
|
|
# my $annot = $page->annotation();
|
||
|
|
# $annot->url('https://www.example.com',-rect => [ $llx, $lly, $urx, $ury ]) ;
|
||
|
|
|
||
|
|
# my $font = $pdf->corefont('Helvetica');
|
||
|
|
# my $text = $page->text();
|
||
|
|
# $text->font($font, 12);
|
||
|
|
# $text->translate($llx, $lly + 5);
|
||
|
|
# $text->text('Visit Example.com');
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub pdf_add_URL_link {
|
||
|
|
|
||
|
|
my ($x1,$y1,$url,$icon_path) = @_ ;
|
||
|
|
|
||
|
|
return if !$x1 || !$y1 || !$url || !$pdf || !$page || !$icon_path ;
|
||
|
|
|
||
|
|
return unless -e $icon_path ;
|
||
|
|
|
||
|
|
my $gfx = $page->gfx ;
|
||
|
|
my $icon = $pdf->image_png($icon_path) ;
|
||
|
|
|
||
|
|
my $icon_width = 1 ;
|
||
|
|
my $icon_height = 1 ;
|
||
|
|
|
||
|
|
my $x2 = $x1 + $icon_width ;
|
||
|
|
my $y2 = $y1 + $icon_height ;
|
||
|
|
|
||
|
|
$gfx->image($icon,($x1+1.25)/mm,($y1-4)/mm, $icon_width/25.4) ;
|
||
|
|
|
||
|
|
my $annot = $page->annotation() ;
|
||
|
|
$annot->url($url, -rect => [($x1+1.25)/mm,($y1-4)/mm,($x1+7.25)/mm,($y1+2)/mm]) ;
|
||
|
|
|
||
|
|
} #-------------------------------------------------------------
|
||
|
|
|
||
|
|
# sub pdf_add_URL_link {
|
||
|
|
|
||
|
|
# my ($x1,$y1,$url) = @_ ;
|
||
|
|
|
||
|
|
# return if !$x1 || !$y1 || !$url ;
|
||
|
|
|
||
|
|
# my $total_line_width = $small_text->advancewidth("Click Here");
|
||
|
|
|
||
|
|
# $total_line_width = $total_line_width / 3 ;
|
||
|
|
|
||
|
|
# my $x2 = $x1 + $total_line_width ;
|
||
|
|
# my $y2 = $y1 + 1.7 ;
|
||
|
|
|
||
|
|
# my $annot = $page->annotation() ;
|
||
|
|
# $annot->url("$url",-rect => [$x1/mm,$y1/mm,$x2/mm,$y2/mm]) ;
|
||
|
|
|
||
|
|
# &pdf_small_blue_text($x1,$y1,"Click Here") ;
|
||
|
|
# &pdf_small_blue_text($x1+0.25,$y1,"________") ;
|
||
|
|
|
||
|
|
# } #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub display_text_block {
|
||
|
|
|
||
|
|
my ($name,$list_ids,$table_ids,$name_from_ids,$l_pos,$r_pos,$top_frame,$left_or_right,$split_by,$name_from_ids_2,$list_ids_2,$table_ids_2,$name_from_list_ids_2) = @_ ;
|
||
|
|
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,$name) ;
|
||
|
|
|
||
|
|
my @list_ids_2 = () ;
|
||
|
|
@list_ids_2 = split($split_by,$list_ids_2) if $list_ids_2 ;
|
||
|
|
|
||
|
|
$list_ids =~ s/$split_by/\\n/g;
|
||
|
|
|
||
|
|
my $cnt = 0 ;
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub display_text {
|
||
|
|
|
||
|
|
# my ($left_or_right,$heading,$text) = @_ ;
|
||
|
|
my ($heading,$text,$line_width) = @_ ;
|
||
|
|
|
||
|
|
# my $text_ = $page->text;
|
||
|
|
# my $font = $pdf->corefont('Helvetica'); # built-in font
|
||
|
|
# my $size = 8/pt ;
|
||
|
|
# $text_->font($font, $size);
|
||
|
|
|
||
|
|
|
||
|
|
$line_width = (!$line_width) ? 195 : $line_width ;
|
||
|
|
my $cnt_lines = 0 ; my $text_new = '' ; my $text_with_new_line = 0 ;
|
||
|
|
foreach my $line (split(/\n/,$text)) {
|
||
|
|
my $wrapped_line = '' ; $text_with_new_line++ ;
|
||
|
|
foreach my $word (split(/ /,$line)) {
|
||
|
|
my $word_length = length($word) ;
|
||
|
|
|
||
|
|
# my $word_length1 = $text->advancewidth("$word") ;
|
||
|
|
# print "\n word_length1 : $word_length1" ;
|
||
|
|
|
||
|
|
my $wrapped_line_length = length($wrapped_line) ;
|
||
|
|
if (length($wrapped_line) + length($wrapped_line) > $line_width) {
|
||
|
|
$cnt_lines++ ; $wrapped_line = '' ; $text_new .= '
|
||
|
|
' . $word ;
|
||
|
|
} else {
|
||
|
|
$wrapped_line .= $word . ' ' ;
|
||
|
|
$text_new .= $word . ' ' ;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
$cnt_lines++ ;
|
||
|
|
$text_new .= $word . '
|
||
|
|
' ;
|
||
|
|
|
||
|
|
}
|
||
|
|
chomp $text_new if $text_new ;
|
||
|
|
$up = $up - $next_line_space ;
|
||
|
|
&pdf_small_bold_text ($pos_cat,$up,"$heading") ;
|
||
|
|
&pdf_bar($pos_des-2,$up+0.75,195,$up+0.75,'#EEEEEE',"$text_new",10,$pos_des,'small','small_black',1) if $cnt_lines == 1 ;
|
||
|
|
&pdf_bar($pos_des-2,$up+0.75-1.625*($cnt_lines-1),195,$up+0.75-1.625*($cnt_lines-1),'#EEEEEE',"$text_new",10+9*($cnt_lines-1),$pos_des,'small','small_black',2,$line_width) if $cnt_lines > 1 ;
|
||
|
|
# &pdf_bar($pos_des-2,$up-2.5,195,$up-2.5,'#EEEEEE',"[$text_new]",10+9*($cnt_lines-1),$pos_des,'small','small_black',2,150) if $cnt_lines == 3 ;
|
||
|
|
# &pdf_bar($pos_des-2,$up-4.125,195,$up-4.125,'#EEEEEE',"[$text_new]",10+9*($cnt_lines-1),$pos_des,'small','small_black',2,150) if $cnt_lines == 4 ;
|
||
|
|
# &pdf_bar($pos_des-2,$up-5.75,195,$up-5.75,'#EEEEEE',"[$text_new]",10+9*($cnt_lines-1),$pos_des,'small','small_black',2,150) if $cnt_lines == 5 ;
|
||
|
|
# return if $cnt_lines == 1 ;
|
||
|
|
# &pdf_bar($pos_des-2,$up+1,195,$up+1,'#EEEEEE',$text,10*$cnt_lines,$pos_des,'small','small_black',$cnt_lines,120) if $cnt_lines > 1 ;
|
||
|
|
$up+=1.25 if $cnt_lines > 1 ;
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub vertical_lines_inner_box {
|
||
|
|
|
||
|
|
&pdf_thin_black_line ($blocks[1],$top,$blocks[1],$up,'#969696') ; # vertical
|
||
|
|
&pdf_thin_black_line ($blocks[2],$top,$blocks[2],$up,'#969696') ; # vertical
|
||
|
|
&pdf_thin_black_line ($blocks[3],$top,$blocks[3],$up,'#969696') ; # vertical
|
||
|
|
&pdf_thin_black_line ($blocks[4],$top,$blocks[4],$up,'#969696') ; # vertical
|
||
|
|
&pdf_thin_black_line ($blocks[5],$top,$blocks[5],$up,'#969696') ; # vertical
|
||
|
|
|
||
|
|
} #----------------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub vertical_lines_inner_box_t {
|
||
|
|
|
||
|
|
&pdf_thin_black_line ($tblocks[1],$top,$tblocks[1],$up,'#969696') ; # vertical
|
||
|
|
&pdf_thin_black_line ($tblocks[2],$top,$tblocks[2],$up,'#969696') ; # vertical
|
||
|
|
&pdf_thin_black_line ($tblocks[3],$top,$tblocks[3],$up,'#969696') ; # vertical
|
||
|
|
&pdf_thin_black_line ($tblocks[4],$top,$tblocks[4],$up,'#969696') ; # vertical
|
||
|
|
&pdf_thin_black_line ($tblocks[5],$top,$tblocks[5],$up,'#969696') ; # vertical
|
||
|
|
|
||
|
|
} #----------------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub quote_pdf_footer {
|
||
|
|
|
||
|
|
&pdf_check_value_of_up(60);
|
||
|
|
$up = 90;
|
||
|
|
my $txt = qq~The parties hereby accept and agree to this quote, which incorporates by reference all the terms and conditions set forth in the Interactive Television Africa's Terms and Conditions document, attached hereto as Annexure A and the Service Level Agreement attached hereto as Annexure B (all, collectively with this quote, the "Agreement") effective as of the later of the signature dates below.~;
|
||
|
|
&pdf_text_block (10,$txt,120,3) ;
|
||
|
|
$up = $up - 10;
|
||
|
|
&pdf_medium_bold_text (10, $up, "Name:") ; &pdf_thin_black_line (30,$up,100,$up,'#969696') ; #&pdf_tiny_text (25, $up, "________________________________________________") ;
|
||
|
|
&pdf_medium_bold_text (110, $up, "Date:") ; &pdf_thin_black_line (130,$up,200,$up,'#969696') ;
|
||
|
|
$up = $up - 5;
|
||
|
|
&pdf_small_text (10, $up, "(Duly Authorised)") ;
|
||
|
|
$up = $up - 10;
|
||
|
|
&pdf_medium_bold_text (10, $up, "Company:") ; &pdf_thin_black_line (30,$up,100,$up,'#969696') ;
|
||
|
|
&pdf_medium_bold_text (110, $up, "Signature:") ; &pdf_thin_black_line (130,$up,200,$up,'#969696') ;
|
||
|
|
$up = $up - 15;
|
||
|
|
&pdf_medium_bold_text (10, $up, "Name:") ; &pdf_thin_black_line (30,$up,100,$up,'#969696') ;
|
||
|
|
&pdf_medium_bold_text (110, $up, "Date:") ; &pdf_thin_black_line (130,$up,200,$up,'#969696') ;
|
||
|
|
$up = $up - 5;
|
||
|
|
&pdf_small_text (10, $up, "(Duly Authorised on behalf of Interactive Television Africa)") ;
|
||
|
|
$up = $up - 10;
|
||
|
|
&pdf_medium_bold_text (110, $up, "Signature:") ;
|
||
|
|
&pdf_thin_black_line (130,$up,200,$up,'#969696') ;
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub quote_pdf_vars {
|
||
|
|
|
||
|
|
our @rboxtxt = (0,103,116,143,170,197) ;
|
||
|
|
our @boxtxt = (0,12,106,120,147,174) ;
|
||
|
|
our @blocks = (0,10,104,118,145,172) ;
|
||
|
|
|
||
|
|
our @tboxrtxt = (0,77,107,137,167,197) ;
|
||
|
|
our @tboxtxt = (0,12,82,112,142,172) ;
|
||
|
|
our @tblocks = (0,10,80,110,140,170) ;
|
||
|
|
} #-------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub custom_date_txt {
|
||
|
|
|
||
|
|
my ($date) = @_ ;
|
||
|
|
|
||
|
|
return "Unknown" if not $date;
|
||
|
|
|
||
|
|
my $dt_txt = Date_to_Text(substr($date,0,4),substr($date,5,2),substr($date,8,2));
|
||
|
|
|
||
|
|
$dt_txt = substr($dt_txt,4) ;
|
||
|
|
|
||
|
|
return ($dt_txt) ;
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub check_space_on_page_custom {
|
||
|
|
|
||
|
|
my ($value) = @_ ;
|
||
|
|
|
||
|
|
if ($up < $value) {
|
||
|
|
&pdf_thin_black_line (10,$top,10,$up) ;
|
||
|
|
&vertical_lines_table; # draw vertical_lines on prematurely ended table
|
||
|
|
&pdf_initialise_page ;
|
||
|
|
$up=282 ;
|
||
|
|
$top=$up;
|
||
|
|
&pdf_thin_black_line(10,$up,200,$up) ;
|
||
|
|
$across = 1 ;
|
||
|
|
}
|
||
|
|
} #----------------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub get_val {
|
||
|
|
|
||
|
|
my ($val,$cur) = @_ ;
|
||
|
|
|
||
|
|
my $disp_val = $val ;
|
||
|
|
|
||
|
|
if ($val eq '0.00') {
|
||
|
|
$disp_val = '' ;
|
||
|
|
|
||
|
|
} elsif ($val) {
|
||
|
|
$disp_val = $cur . ' ' . $val ;
|
||
|
|
}
|
||
|
|
# &common_min_debug($val);
|
||
|
|
|
||
|
|
return($disp_val);
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub vertical_lines_table {
|
||
|
|
|
||
|
|
unless ($exclude_rate) {
|
||
|
|
&pdf_thin_black_line ($blocks[2],$top,$blocks[2],$up) ; # vertical
|
||
|
|
&pdf_thin_black_line ($blocks[3],$top,$blocks[3],$up) ; # vertical
|
||
|
|
}
|
||
|
|
|
||
|
|
unless ($exclude_vat) {
|
||
|
|
&pdf_thin_black_line ($blocks[4],$top,$blocks[4],$up) ; # vertical
|
||
|
|
}
|
||
|
|
|
||
|
|
&pdf_thin_black_line ($blocks[5],$top,$blocks[5],$up) ; # vertical
|
||
|
|
&pdf_thin_black_line ($blocks[6],$top,$blocks[6],$up) ; # vertical
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
sub screen2 {
|
||
|
|
|
||
|
|
print <<ENDOFTEXT;
|
||
|
|
$dialog{'common'}{'head'}
|
||
|
|
<div id="content" class="col-lg-12 col-sm-12">
|
||
|
|
<CENTER>
|
||
|
|
<table height='100%' width='100%'>
|
||
|
|
<tr>
|
||
|
|
<td align='center'>
|
||
|
|
<iframe src='$useropts{'$domain'}/pdf/event_details/$pdfname' width='100%' height='100%' frameborder='0'></iframe>
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div>
|
||
|
|
</body>
|
||
|
|
</html>
|
||
|
|
ENDOFTEXT
|
||
|
|
#
|
||
|
|
|
||
|
|
} #------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
use db ;
|
||
|
|
use db_min ;
|
||
|
|
use dialog ;
|
||
|
|
use today ;
|
||
|
|
use common ;
|
||
|
|
use pdf ;
|
||
|
|
use tabs ;
|
||
|
|
|
||
|
|
1;
|