aisa/libs/modules/_FromProd/calibrator_payments.pm
2026-02-03 14:35:43 +02:00

688 lines
32 KiB
Perl

sub calibration_load_list_vars {
my ($where,$for_payments) = @_ ;
our %quote_status = () ;
our %calibrator_users = () ;
# &db_min_ro('users','id,name,user_type',"",'','') ;
# &db_min_ro('users','id,name,user_type,username',"(user_type = 'support' OR user_type = 'manager' OR user_type = 'casual_calibrator') AND name NOT LIKE 'Rory%'",'','') ;
&db_min_ro('users','id,name,user_type,username',"`name` NOT LIKE 'Rory%'",'','') ;
if (!$for_payments) {
$opts{calibration_users} .= qq~<option value="none">>>>None<<<</option>~ ;
$opts{head_operator} .= qq~<option value="none">>>>None<<<</option>~ ;
foreach my $_uid (sort {$db{users}{$a}{name} cmp $db{users}{$b}{name}} keys %{$db{users}}) {
next if $useropts{it}{$db{users}{$_uid}{username}} ;
if ($db{users}{$_uid}{user_type} eq 'support' || $db{users}{$_uid}{user_type} eq 'manager' || $db{users}{$_uid}{user_type} eq 'casual_calibrator') {
$calibrator_users{$_uid} = $db{users}{$_uid}{name} ;
$opts{calibration_users} .= qq~<option value="$_uid">$db{users}{$_uid}{name}</option>~ ;
}
if ($db{users}{$_uid}{user_type} eq 'casual_c') {
$opts{head_operator} .= qq~<option value="$_uid">$db{users}{$_uid}{name}</option>~ ;
}
}
}
&db_min_ro('event_systems','*',"system_type = 'mobile'",'','') ;
my @event_quote_ids = () ;
# &db_min_ro($table,"id,ref,organisation_ids,quote_accepted,event_system_id_multiple,region_id,sport_type_ids,operator_ids,date_from,date_to,if(date_from < '$now_year-$now_mm-$now_dd 00:00:00',0,1) AS 'after_start_date',event_system_calibration_ids,event_system_calibration_status","$where AND `quote_accepted` = '1'",'','') ;
&db_min_ro($table,"id,ref,organisation_ids,quote_accepted,event_system_id_multiple,region_id,sport_type_ids,operator_ids,date_from,date_to,event_system_calibration_ids,event_system_calibration_status,event_system_head_operator_ids,times_from","$where AND `quote_accepted` = '1'",'','') ;
my $min_id = 0 ; my $max_id = 0 ;
our %event_system_calibration_ids = () ; our %event_system_calibration_status = () ; our %event_system_head_operator_id = () ;
foreach my $id (keys %{$db{$table}}) {
# &common_debug(">>>>>>>>> 1. [$id] $db{$table}{$id}{ref}") ;
next unless $id ; my $cnt = 0 ;
my @ed_from = &common_split_sql_time($db{$table}{$id}{date_from}) ;
my @ed_to = &common_split_sql_time($db{$table}{$id}{date_to}) ;
&common_date_array("$ed_from[0]$ed_from[1]$ed_from[2]","$ed_to[0]$ed_to[1]$ed_to[2]") ;
# $sort_calibration_by_time_ref{"$ed_from[0]$ed_from[1]$ed_from[2]$ed_from[3]$ed_from[4]-$db{$table}{$id}{ref}"} = $id ;
$sort_calibration_by_time_ref{"$ed_from[0]$ed_from[1]$ed_from[2]$ed_from[3]$ed_from[4]-$id"} = $id ;
# my @event_sys_calibration_status = split(";",$db{$table}{$id}{event_system_calibration_status}) ;
my @event_sys_calibration_status = split(/\;/,$db{$table}{$id}{event_system_calibration_status}) ;
my @event_system_ids = split(/\;/,$db{$table}{$id}{event_system_id_multiple}) ;
my @calibration_ids = split(/\;/,$db{$table}{$id}{event_system_calibration_ids}) ;
my @head_operator_ids = split(/\;/,$db{$table}{$id}{event_system_head_operator_ids}) ;
my $evntday=0; my $evntsys=0;
foreach my $_cid (@calibration_ids) {
$system_id = $event_system_ids[$evntsys] ;
$evntsys++;
next unless $system_id ;
next unless $db{event_systems}{$system_id}{system_type} eq 'mobile' ;
my (@calibrator_ids_per_event_day) = split(/\-/,$_cid);
$evntday=0; # set the event day back to zero for each set of calibrators
foreach my $_cid_pd (@calibrator_ids_per_event_day) {
$evntday++;
next unless $_cid_pd ;;
$event_system_calibration_ids{$id}{$system_id}{$evntday} = $_cid_pd ;
# &common_debug("1. >>> $event_system_calibration_ids{$id}{$system_id}{$evntday} [$id] [$system_id] [$evntday]") ;
}
# $evntsys++;
}
$evntsys=0;
foreach my $_cstatus (@event_sys_calibration_status) {
$system_id = $event_system_ids[$evntsys] ;
$evntsys++;
next unless $system_id ;
next unless $db{event_systems}{$system_id}{system_type} eq 'mobile' ;
my (@calibrator_status_per_event_day) = split(/\-/,$_cstatus);
$evntday=0; # set the event day back to zero for each set of calibrators
foreach my $_cstatus_pd (@calibrator_status_per_event_day) {
$evntday++;
next unless $_cstatus_pd ;
$event_system_calibration_status{$id}{$system_id}{$evntday} = $_cstatus_pd ;
# &common_debug("1. >>> $event_system_calibration_status{$id}{$system_id}{$evntday} [$id] [$system_id] [$evntday]") ;
}
# $evntsys++;
}
$evntsys=0;
foreach my $_cstatus (@head_operator_ids) {
$system_id = $event_system_ids[$evntsys] ;
$evntsys++;
next unless $system_id ;
next unless $db{event_systems}{$system_id}{system_type} eq 'mobile' ;
my (@head_operator_id_event_day) = split(/\-/,$_cstatus);
$evntday=0; # set the event day back to zero for each set of calibrators
foreach my $_cstatus_pd (@head_operator_id_event_day) {
$evntday++;
next unless $_cstatus_pd ;
$event_system_head_operator_id{$id}{$system_id}{$evntday} = $_cstatus_pd ;
# &common_debug("1. >>> $event_system_calibration_status{$id}{$system_id}{$evntday} [$id] [$system_id] [$evntday]") ;
}
# $evntsys++;
}
$evntsys=0;
if ($for_payments) {
my @calibrator_amounts_paid = split(/\;/,$db{$table}{$id}{calibrator_amounts_paid}) ;
my @calibrator_dates_paid = split(/\;/,$db{$table}{$id}{calibrator_dates_paid}) ;
foreach my $_cstatus (@calibrator_amounts_paid) {
$system_id = $event_system_ids[$evntsys] ;
$evntsys++;
next unless $system_id ;
next unless $db{event_systems}{$system_id}{system_type} eq 'mobile' ;
my (@amounts_paid_event_day) = split(/\-/,$_cstatus);
$evntday=0; # set the event day back to zero for each set of calibrators
foreach my $_cstatus_pd (@amounts_paid_event_day) {
$evntday++;
next unless $_cstatus_pd ;
$calibrator_amounts_paid_hash{$id}{$system_id}{$evntday} = $_cstatus_pd ;
# &common_debug("1. >>> $event_system_calibration_status{$id}{$system_id}{$evntday} [$id] [$system_id] [$evntday]") ;
}
# $evntsys++;
}
$evntsys=0;
foreach my $_cstatus (@calibrator_dates_paid) {
$system_id = $event_system_ids[$evntsys] ;
$evntsys++;
next unless $system_id ;
next unless $db{event_systems}{$system_id}{system_type} eq 'mobile' ;
my (@dates_paid_event_day) = split(/\:/,$_cstatus);
$evntday=0; # set the event day back to zero for each set of calibrators
foreach my $_cstatus_pd (@dates_paid_event_day) {
$evntday++;
next unless $_cstatus_pd ;
$calibrator_dates_paid_hash{$id}{$system_id}{$evntday} = $_cstatus_pd ;
# &common_debug("1. >>> $event_system_calibration_status{$id}{$system_id}{$evntday} [$id] [$system_id] [$evntday]") ;
}
# $evntsys++;
}
}
}
# &db_min_ro('event_systems','*',"system_type = 'mobile'",'','') ;
&calibration_check_for_overlapping_dates('event_systems',"event_system_id_multiple") ;
foreach my $id (sort keys %{$db{$table}}) {
$min_id = $id if not $min_id or $min_id > $id ;
$max_id = $id if $max_id < $id ;
}
my $id_sql = qq~(`id` <= '$max_id' AND `id` >= '$min_id')~ ;
# $id_sql = qq~ AND $id_sql~ if $where_2 or $where_3 ;
# &db_min_ro('event_quotes_min','*',"$where_2$where_3$id_sql",'','') ;
&db_min_ro('event_quotes_min','*',"$id_sql",'','') ;
&db_min_ro('event_cost_items','id,name',"excl_from_expenses < 1",'','') ;
&db_min_ro('calibration_status','id,status','','','') unless $calibration_status ;
foreach (sort {$db{calibration_status}{$a}{status} cmp $db{calibration_status}{$b}{status}} keys %{$db{calibration_status}}) {
$opts{calibration_status} .= qq~<option value="$_">$db{calibration_status}{$_}{status}</option>~ ;
}
&db_min_ro('sport_types','*','','','') ;
&db_min_ro('regions','*','','','') ;
&db_min_ro('organisations','id,name','','','') ;
} #------------------------------------------------------------------------------------------
sub calibration_build_table_and_or_excel {
my ($report,$for_payments) = @_ ;
our @sql_col_display = ("count","event","calibration_date","day","start_date","start_time","venue","region","system","sport","operator","head_operator","calibrator","status","update") ;
@sql_col_display = ("count","event","calibration_date","day","start_date","start_time","venue","region","system","sport","operator","head_operator","calibrator","status","date_payable","amount_payable","paid") if $for_payments ;
&report_xlsx_export_header("$xlsxreportname",$xlsxdir,'',$xlsx_title_heading) ;
$xlsxrow-- ;
my $cali_cnt = 0 ; our $found_after_date = 0 ; my $found_editable = 0 ;
# foreach my $id (sort {$db{$table}{$a}{date_from} cmp $db{$table}{$b}{date_from}} keys %{$db{$table}}) {
foreach my $date_ref (sort keys %sort_calibration_by_time_ref) {
my $id = $sort_calibration_by_time_ref{$date_ref} ;
next unless $id ;
unless (&common_check_if_string_contains_an_integer($db{$table}{$id}{event_system_id_multiple})) {
$db{$table}{$id}{event_system_id_multiple} = ";none;" ;
}
# my @system_name_ids = split(";",$db{$table}{$id}{event_system_id_multiple}) ;
my @system_name_ids = split(/\;/,$db{$table}{$id}{event_system_id_multiple}) ;
my @club_ids = split(/\;/,$db{$table}{$id}{club_ids}) ;
my @op_ids = split(/\,/,$db{$table}{$id}{operator_ids}) ;
my @start_times = split(/\;/,$db{$table}{$id}{times_from}) ;
my $cnt_rows = 0 ;
for (1 .. 50) {
$cnt_rows = $_ if $system_name_ids[$_ - 1] or $club_ids[$_ - 1] ;
}
# my @table_op_ids = () ;
# for (1 .. $cnt_rows) {
# push @table_op_ids,$op_ids[$_ - 1] if $op_ids[$_ - 1] ;
# push @table_op_ids,0 unless $op_ids[$_ - 1] ;
# }
my $system_count = 0 ;
# foreach my $event_sys_id (split(";",$db{$table}{$id}{event_system_id_multiple})) {
# foreach my $event_sys_id (sort { $a <=> $b } @system_name_ids) {
foreach my $event_sys_id (@system_name_ids) {
$system_count++ ;
next unless $event_sys_id ;
next unless $db{event_systems}{$event_sys_id}{system_type} eq 'mobile' ;
# &common_debug(">>>>>>>>> 2. $system_count [$id] $db{$table}{$id}{ref} [$db{event_systems}{$event_sys_id}{system_type}]") ;
# $event_cnt++ ;
# foreach my $cal_date (sort {$day_of_week{$a} cmp $day_of_week{$b}} keys %day_of_week) {
foreach my $cal_date (sort keys %day_of_week) {
my $srch_date_from_comp = $i{date_from} ; $srch_date_from_comp =~ s/\-//g ;
my $srch_date_to_comp = $i{date_to} ; $srch_date_to_comp =~ s/\-//g ;
my $date_from_comp = substr($db{$table}{$id}{date_from},0,10) ; $date_from_comp =~ s/\-//g ;
my $date_to_comp = substr($db{$table}{$id}{date_to},0,10) ; $date_to_comp =~ s/\-//g ;
my $cal_date_comp = $cal_date ; # $cal_date_comp =~ s/\-//g ;
$cal_date = substr($cal_date,0,4) . '-' . substr($cal_date,4,2) . '-' . substr($cal_date,6,2) ;
my $date_from = substr($db{$table}{$id}{date_from},0,10) ;
# &common_debug("[$cnt{$event_sys_id}{$id}] : $event_sys_id [$id] $cal_date") ;
# &common_debug("1. DATE >>> $cal_date_comp < $date_from_comp") if !$report ;
next if $cal_date_comp < $date_from_comp ;
# &common_debug("2. DATE >>> $cal_date_comp > $date_to_comp") if !$report ;
next if $cal_date_comp > $date_to_comp ;
$cnt{$event_sys_id}{$id}++ ; ## WHY HERE???????????????
next if $for_payments && ($db{users}{$event_system_calibration_ids{$id}{$event_sys_id}{$cnt{$event_sys_id}{$id}}}{user_type} ne 'casual_calibrator' || $db{calibration_status}{$event_system_calibration_status{$id}{$event_sys_id}{$cnt{$event_sys_id}{$id}}}{status} ne 'Done' || ($i{paid_status} eq 'paid' && !$calibrator_amounts_paid_hash{$id}{$system_id}{$evntday}) || ($i{paid_status} eq 'outstanding' && $calibrator_amounts_paid_hash{$id}{$system_id}{$evntday})) ;
# &common_debug("3. DATE >>> $cal_date_comp > $srch_date_to_comp") if !$report ;
next if $cal_date_comp > $srch_date_to_comp ;
# &common_debug("4. DATE >>> $cal_date_comp < $srch_date_from_comp") if !$report ;
next if $cal_date_comp < $srch_date_from_comp ;
# &common_debug(">>>>>>>>> 3. $system_count [$id] $db{$table}{$id}{ref} [$db{event_systems}{$event_sys_id}{system_type}]") ;
# &common_debug("[$cnt{$event_sys_id}{$id}] : $event_sys_id [$id] $cal_date [$cal_date_comp > $srch_date_to_comp]") ;
$cali_cnt++;
$xlsxcol = 0 ;
$print_tbody .= qq~<tr id="$id$dow">~ if $report ;
foreach (@sql_col_display) {
# &common_debug("1. XLSX >>> $_") if !$report ;
next unless $_ ; # blank for the buttons column
my $formatting = $format84 ;
my $val = $db{$table}{$id}{$_} ;
my $val_min = $val ;
my $align = qq~ class="dt-center"~ ;
my $nowrap = '' ;
# &common_debug("2. XLSX >>> val_min=$val_min") if !$report ;
my $sys_day_cnt = $cnt{$event_sys_id}{$id} ;
if ($_ eq 'count') {
# $val = $event_cnt ;
$val = $cali_cnt ;
} elsif ($_ eq 'event') {
$val = "$db{$table}{$id}{ref} ($id)" ;
} elsif ($_ eq 'calibration_date') {
# $val = "$cal_date [$day_of_week{$cal_date}]" ;
$val = "$cal_date" ;
} elsif ($_ eq 'day') {
$val = "$sys_day_cnt" ;
} elsif ($_ eq 'start_date') {
$val = $date_from ;
} elsif ($_ eq 'venue') {
my @oids = split(/\,/,$db{$table}{$id}{organisation_ids}) ;
foreach $_oid (@oids) {
$val .= $db{organisations}{$_oid}{name} . '<br>' ;
}
$val = substr($val,0,-4) if $val ; ;
} elsif ($_ eq 'region') {
$val = $db{regions}{$db{$table}{$id}{region_id}}{code} ;
} elsif ($_ eq 'system') {
$val = '' ;
$val = qq~$db{event_systems}{$event_sys_id}{name}~ ;
$val .= qq~ ($db{event_systems}{$event_sys_id}{description})~ if $db{event_systems}{$event_sys_id}{description} ;
} elsif ($_ eq 'sport') {
$val = '' ;
foreach my $sport_id (split(",",$db{$table}{$id}{sport_type_ids})) {
$db{sport_types}{$sport_id}{name} = uc $db{sport_types}{$sport_id}{name} ;
$val .= qq~$db{sport_types}{$sport_id}{name}<br>~ ;
}
$val = substr($val,0,-4) if $val ;
} elsif ($_ eq 'operator') {
$val = '' ;
# $val = $db{users}{$table_op_ids[$system_count - 1]}{name} if $table_op_ids[$system_count - 1] ;
$val = $db{users}{$op_ids[$system_count - 1]}{name} if $op_ids[$system_count - 1] ;
# $formatting = $format92 if $event_cnt == 2 ;
$formatting = $format92 if $cali_cnt == 2 ;
} elsif ($_ eq 'start_time') {
if ($sys_day_cnt == 1 or ($sys_day_cnt > 1 and not $start_times[$sys_day_cnt-2])) {
$val = substr($db{$table}{$id}{date_from},11,5) ;
} else {
$val = substr($start_times[$sys_day_cnt-2],0,5) ;
}
} elsif ($_ eq 'head_operator') {
if ($report && !$for_payments) {
# if ($db{$table}{$id}{after_start_date} and $event_sys_id ne "-1") {
# &common_debug("=== $cal_date_comp >= $now_ccyymmdd && $event_sys_id ne -1") ;
my $field = "head_operator_$id\_$event_sys_id\_$sys_day_cnt" ;
if ($cal_date_comp >= $now_ccyymmdd && $event_sys_id ne "-1") {
$found_after_date = 1 ;
$preferred_title{$field} = "Head Operator" ;
$opts{$field} = $opts{head_operator} ;
$allow_deselect{$field} = 1 ;
$val = &common_min_form_select_col($field,'') ;
# &common_debug("2. >>> $event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt} [$id] [$event_sys_id] [$sys_day_cnt] [$field]") ;
if ($event_system_head_operator_id{$id}{$event_sys_id}{$sys_day_cnt}) {
$trigger_jquery_raw .= qq~
\$("#selectHead_operator_$id\_$event_sys_id\_$sys_day_cnt").val("$event_system_head_operator_id{$id}{$event_sys_id}{$sys_day_cnt}") ;
\$("#selectHead_operator_$id\_$event_sys_id\_$sys_day_cnt").trigger("chosen:updated") ;
\$("#itv-table tr:eq($cali_cnt) td:nth-last-child(4)").css("background-color","#424949") ;
~ ;
}
$trigger_jquery_raw .= qq~\$("#selectHead_operator_$id\_$event_sys_id\_$sys_day_cnt\_chosen").css("width","100%") ;~ ;
# $val_min = $db{users}{$db{event_systems}{$event_sys_id}{calibrator_id}}{name} ;
$val_min = $db{users}{$event_system_head_operator_id{$id}{$event_sys_id}{$sys_day_cnt}}{name} ;
} else {
$val = $db{users}{$event_system_head_operator_id{$id}{$event_sys_id}{$sys_day_cnt}}{name} ;
$val = "None" if $event_system_head_operator_id{$id}{$event_sys_id}{$sys_day_cnt} eq 'none' ;
# # $val = "$db{users}{$event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}}{name} [$sys_day_cnt]" ;
# $readonly{$field} = 'READONLY' ;
# $val = qq~<div style="display:none;">~ . &common_min_form_input_col($field,$event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}) . qq~</div>~ ;
# $val .= $db{users}{$event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}}{name} ;
$val_min = $val ;
}
# $val = "None" unless $val ;
# $val_min = "None" unless $val_min ;
} else {
# $val = $db{users}{$db{event_systems}{$id}{calibrator_id}}{name} ;
$val = $db{users}{$event_system_head_operator_id{$id}{$event_sys_id}{$sys_day_cnt}}{name} ;
$val = "None" if $event_system_head_operator_id{$id}{$event_sys_id}{$sys_day_cnt} eq 'none' ;
# $val = "None" unless $val ;
$val_min = $val ;
}
$formatting = $format91 ;
} elsif ($_ eq 'calibrator') {
if ($report && !$for_payments) {
# if ($db{$table}{$id}{after_start_date} and $event_sys_id ne "-1") {
# &common_debug("=== $cal_date_comp >= $now_ccyymmdd && $event_sys_id ne -1") ;
my $field = "calibrator_id_$id\_$event_sys_id\_$sys_day_cnt" ;
if ($cal_date_comp >= $now_ccyymmdd && $event_sys_id ne "none") {
$found_after_date = 1 ;
$preferred_title{$field} = "Calibrator" ;
$opts{$field} = $opts{calibration_users} ;
$allow_deselect{$field} = 1 ;
$val = &common_min_form_select_col($field,'') ;
# &common_debug("2. >>> $event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt} [$id] [$event_sys_id] [$sys_day_cnt] [$field]") ;
if ($event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}) {
$trigger_jquery_raw .= qq~
\$("#selectCalibrator_id_$id\_$event_sys_id\_$sys_day_cnt").val("$event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}") ;
\$("#selectCalibrator_id_$id\_$event_sys_id\_$sys_day_cnt").trigger("chosen:updated") ;
\$("#itv-table tr:eq($cali_cnt) td:nth-last-child(3)").css("background-color","#424949") ;
~ ;
}
$trigger_jquery_raw .= qq~\$("#selectCalibrator_id_$id\_$event_sys_id\_$sys_day_cnt\_chosen").css("width","100%") ;~ ;
# $val_min = $db{users}{$db{event_systems}{$event_sys_id}{calibrator_id}}{name} ;
$val_min = $db{users}{$event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}}{name} ;
} else {
$val = $db{users}{$event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}}{name} ;
$val = "None" if $event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt} eq 'none' ;
# # $val = "$db{users}{$event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}}{name} [$sys_day_cnt]" ;
# $readonly{$field} = 'READONLY' ;
# $val = qq~<div style="display:none;">~ . &common_min_form_input_col($field,$event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}) . qq~</div>~ ;
# $val .= $db{users}{$event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}}{name} ;
$val_min = $val ;
}
# $val = "None" unless $val ;
# $val_min = "None" unless $val_min ;
} else {
# $val = $db{users}{$db{event_systems}{$id}{calibrator_id}}{name} ;
$val = $db{users}{$event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt}}{name} ;
$val = "None" if $event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt} eq 'none' ;
# $val = "None" unless $val ;
$val_min = $val ;
}
$formatting = $format91 ;
} elsif ($_ eq 'status') {
if ($report && !$for_payments) {
# if ($db{$table}{$id}{after_start_date} and $event_sys_id ne "-1") {
my $field = "calibration_status_$id\_$event_sys_id\_$sys_day_cnt" ;
if ($cal_date_comp >= $now_ccyymmdd && $event_sys_id ne "none") {
$opts{$field} = $opts{calibration_status} ;
$preferred_title{$field} = "Calibration Status" ;
$allow_deselect{$field} = 1;
$val = &common_min_form_select_col($field,'') ;
# &common_debug("STATUS >>> $event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt} [$id] [$event_sys_id] [$sys_day_cnt] [$field]") ;
if ($event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt}) {
$trigger_jquery_raw .= qq~\$("#selectCalibration_status_$id\_$event_sys_id\_$sys_day_cnt").val("$event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt}") ;~ ;
if ($event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt} eq '1') { #calibrating
$trigger_jquery_raw .= qq~\$("#itv-table tr:eq($cali_cnt) td:nth-last-child(2)").css("background-color","#FFA500");~ ;
}
elsif ($event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt} eq '2') { #cancelled
$trigger_jquery_raw .= qq~\$("#itv-table tr:eq($cali_cnt) td:nth-last-child(2)").css("background-color","#AD0502");~ ;
}
elsif ($event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt} eq '3') { #done
$trigger_jquery_raw .= qq~\$("#itv-table tr:eq($cali_cnt) td:nth-last-child(2)").css("background-color","#2ECC71");~ ; #D5EDBB
}
elsif ($event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt} eq '4') { #done
$trigger_jquery_raw .= qq~\$("#itv-table tr:eq($cali_cnt) td:nth-last-child(2)").css("background-color","#424949");~ ; #D5D8DC
}
} else {
$trigger_jquery_raw .= qq~\$("#selectCalibration_status_$id\_$event_sys_id\_$sys_day_cnt").val("4") ;~ ;
}
$trigger_jquery_raw .= qq~
\$("#selectCalibration_status_$id\_$event_sys_id\_$sys_day_cnt").trigger("chosen:updated") ;
\$("#selectCalibration_status_$id\_$event_sys_id\_$sys_day_cnt\_chosen").css("width","100%");
~ ;
$val_min = $db{calibration_status}{$event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt}}{status} ;
} else {
# $val = $db{calibration_status}{$db{event_systems}{$event_sys_id}{calibration_status}}{status} ;
$val = $db{calibration_status}{$event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt}}{status} ;
$val = "None" if !$event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt} ;
# $readonly{$field} = 'READONLY' ;
# $val = qq~<div style="display:none;">~ . &common_min_form_input_col($field,$db{event_systems}{$event_sys_id}{calibration_status}) . qq~</div>~ ;
# $val .= $db{calibration_status}{$db{event_systems}{$event_sys_id}{calibration_status}}{status} ;
$val_min = $val ;
}
# $val = "None" unless $val ;
# $val_min = "None" unless $val_min ;
} else {
# $val = $db{calibration_status}{$db{event_systems}{$event_sys_id}{calibration_status}}{status} ;
$val = $db{calibration_status}{$event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt}}{status} ;
$val = "None" if !$event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt} ;
# $val = "None" unless $val ;
$val_min = $val ;
}
# if ($db{calibration_status}{$db{event_systems}{$event_sys_id}{calibration_status}}{status} eq "Calibrating") {
if ($db{calibration_status}{$event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt}}{status} eq "Calibrating") {
$formatting = $format89 ;
} elsif ($db{calibration_status}{$event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt}}{status} eq "Cancelled") {
$formatting = $format90 ;
} elsif ($db{calibration_status}{$event_system_calibration_status{$id}{$event_sys_id}{$sys_day_cnt}}{status} eq "Done") {
$formatting = $format88 ;
} else {
$formatting = $format91 ;
}
} elsif ($_ eq 'update') {
if ($report && $cal_date_comp >= $now_ccyymmdd && $event_sys_id ne "none") {
$found_editable = 1 ;
my $field = "update_$id\_$event_sys_id\_$sys_day_cnt" ;
$val = &common_min_form_checkbox_col($field,'') ;
# $val .= qq~<span id="update_history_$id\_$event_sys_id\_$sys_day_cnt" style="display:none;"></span>~ ; #
$trigger_jquery_raw .= qq~
\$("#selectCalibration_status_$id\_$event_sys_id\_$sys_day_cnt,#selectCalibrator_id_$id\_$event_sys_id\_$sys_day_cnt,#selectHead_operator_$id\_$event_sys_id\_$sys_day_cnt").change(function () {
\$("#checkboxUpdate_$id\_$event_sys_id\_$sys_day_cnt").prop("checked",true) ;
// \$("#update_history_$id\_$event_sys_id\_$sys_day_cnt").text("1") ;
}) ;
~ ;
} else {
$val = '' ;
}
$formatting = $format91 ;
} elsif ($_ eq 'date_payable') {
my $field = "date_payable_$id\_$event_sys_id\_$sys_day_cnt" ;
if ($calibrator_dates_paid_hash{$id}{$event_sys_id}{$sys_day_cnt}) {
$val = $calibrator_amounts_paid_hash{$id}{$event_sys_id}{$sys_day_cnt} ;
$val_min = $val ;
$val = &common_min_form_input_col($field,"$calibrator_dates_paid_hash{$id}{$event_sys_id}{$sys_day_cnt}") ;
} else {
$val = &common_min_form_input_col($field,"$cal_date") ;
$val_min = $cal_date ;
}
} elsif ($_ eq 'amount_payable') {
my $field = "amount_payable_$id\_$event_sys_id\_$sys_day_cnt" ;
if ($calibrator_amounts_paid_hash{$id}{$event_sys_id}{$sys_day_cnt}) {
$val = "Paid" ;
$val_min = "None" ;
} else {
$val = &common_min_form_input_col($field,'500.00') ;
$trigger_jquery_raw .= qq~
\$("input[name='$field']").change( function () {
let input = \$(this).val() ;
input = parseFloat(input) ;
if (!input) { input = 0 ; }
\$(this).val(input.toFixed(2)) ;
}) ;
~ ;
$val_min = "500.00" ;
}
} elsif ($_ eq 'paid') {
if ($calibrator_amounts_paid_hash{$id}{$event_sys_id}{$sys_day_cnt}) {
$val = '<i class="glyphicons glyphicons-tick"></i>' ;
$val_min = "Paid" ;
} else {
$paid_fields .= qq~$id\_$event_sys_id\_$sys_day_cnt:$cali_cnt,~ ;
my $field = "paid_$id\_$event_sys_id\_$sys_day_cnt" ;
$val = &common_min_form_checkbox_col($field,'') ;
}
}
if ($_ ne 'status' and $_ ne 'calibrator' and $_ ne 'update' and $_ ne 'date_payable' and $_ ne 'amount_payable') {
$val_min = $val ;
$val_min =~ s/\<br>/\;/g ;
}
$print_tbody .= qq~<td $align>$val</td>~ if $report ;
# &common_debug("XLSX >>> $event_system_calibration_ids{$id}{$event_sys_id}{$sys_day_cnt} [$id] [$event_sys_id] [$sys_day_cnt] [$field]") ;
&xlsxcreator_write_xlsx($ws,$xlsxrow,$xlsxcol,$val_min,$formatting) ;
$xlsxcol++ ;
}
$print_tbody .= qq~</tr>~ if $report ;
$xlsxrow++ ;
}
# next if $i{calibration_status} ne 'all' and $i{calibration_status} and $i{calibration_status} ne $db{event_systems}{$event_sys_id}{calibration_status} ;
# next if $i{calibrator_id} ne 'all' and $i{calibrator_id} and $i{calibrator_id} ne $db{event_systems}{$event_sys_id}{calibrator_id} ;
}
}
# \$("#itv-table tr th:nth-last-child(1)").css("width","0%") ;
# \$("#itv-table tr th:nth-last-child(1)").css("display","none") ;
if (!$found_editable && !$for_payments) {
$trigger_jquery_raw .= qq~
\$("#itv-table").find("th:last").remove() ;
\$("#itv-table tr").each(function() {
\$(this).find("td:last").remove() ;
}) ;
~ ;
}
$worksheet{$ws}->set_column(0,0,10);
$worksheet{$ws}->set_column(1,1,30);
$worksheet{$ws}->set_column(2,2,15);
$worksheet{$ws}->set_column(3,3,5);
$worksheet{$ws}->set_column(4,5,13);
$worksheet{$ws}->set_column(6,6,30);
$worksheet{$ws}->set_column(7,7,8);
$worksheet{$ws}->set_column(8,10,30);
$worksheet{$ws}->set_column(11,12,15);
&report_xlsx_export_footer('L',15,$xlsxdir) ;
} #-------------------------------------------------------------------------------
sub calibration_check_for_overlapping_dates {
my ($check_table,$checked_column,$date_from_input,$date_to_input,$sys_ids_input,$get_periods) = @_ ;
my %seen_system_id = () ; my %checked_system_id = () ; my %system_start_date = () ; my %system_end_date = () ;
my $sys_ids = "" ;
if ($get_periods) {
$sys_ids = $sys_ids_input ;
}
foreach my $id (sort keys %{$db{$table}}) {
unless ($get_periods) {
$sys_ids = $db{$table}{$id}{$checked_column} ;
}
foreach (split(";",$sys_ids)) {
$system_start_date{$_}{$id} = $db{$table}{$id}{date_from} ;
$system_end_date{$_}{$id} = $db{$table}{$id}{date_to} ;
}
}
if ($date_from_input and $date_to_input and $sys_ids_input) {
foreach (split(";",$sys_ids_input)) {
$system_start_date{$_}{none} = $date_from_input ;
$system_end_date{$_}{none} = $date_to_input ;
}
}
foreach my $id (sort keys %{$db{$table}}) {
unless ($get_periods) {
$sys_ids = $db{$table}{$id}{$checked_column} ;
}
foreach my $sys_id (split(";",$sys_ids)) {
next unless $sys_id ;
if ($seen_system_id{$sys_id} and not $checked_system_id{$sys_id}) {
$checked_system_id{$sys_id} = 1 ;
foreach my $id2 (keys %{$system_start_date{$sys_id}}) {
next if $id2 eq $id ;
my $t1 = &common_check_if_time_is_greater($system_start_date{$sys_id}{$id2},$db{$table}{$id}{date_to}) ; ## 21<12
my $t2 = &common_check_if_time_is_greater($system_end_date{$sys_id}{$id2},$db{$table}{$id}{date_to}) ; ## 22<12
my $t3 = &common_check_if_time_is_greater($system_start_date{$sys_id}{$id2},$db{$table}{$id}{date_from}) ; ## 21<11
my $t4 = &common_check_if_time_is_greater($system_end_date{$sys_id}{$id2},$db{$table}{$id}{date_from}) ; ## 22<11
if (($t1 and not $t2) or ($t3 and not $t4) or (not $t3 and $t2) or ($t3 and not $t2)) {
my $system_name = qq~$db{$check_table}{$sys_id}{name}~ ;
$system_name .= qq~ ($db{$check_table}{$sys_id}{description})~ if $db{$check_table}{$sys_id}{description} ;
if ($get_periods) {
$overlap_dates{$sys_id}{$id2} = "$db{$table}{$id2}{date_from} - $db{$table}{$id2}{date_to}" ;
} else {
$trigger_jquery_raw .= qq~
noty({text:'System $system_name and cannot be used in both event $db{$table}{$id}{ref} and $db{$table}{$id2}{ref} as the times ovelap!!',layout:"center",type:"error",timeout:30000}) ;
~ ;
}
}
}
}
$seen_system_id{$sys_id} = 1 ;
}
}
} #-------------------------------------------------------------------------------
1 ;