sub schedule_load_list_vars { my ($where) = @_ ; &db_min_ro('regions','*','','','') ; &db_min_ro('users','id,name,user_type,username,region_ids',"`name` NOT LIKE 'Rory%' AND `name` NOT LIKE 'Handre%'",'','') ; $opts{schedule_users} .= qq~~ ; # $opts{head_operator} .= qq~~ ; foreach my $_uid (sort {$db{users}{$a}{name} cmp $db{users}{$b}{name}} keys %{$db{users}}) { next if $useropts{it}{$db{users}{$_uid}{username}} ; my $regions = qq~~ ; foreach (split(/\,/,$db{users}{$_uid}{region_ids})) { $regions .= qq~$db{regions}{$_}{code},~ ; } chop $regions if $regions ; $regions = qq~[$regions]~ if $regions ; # if ($db{users}{$_uid}{user_type} eq 'support' || $db{users}{$_uid}{user_type} eq 'manager' || $db{users}{$_uid}{user_type} eq 'casual_calibrator' || $monitoring_report) { if ($db{users}{$_uid}{user_type} eq 'casual_calibrator' || (($monitoring_report || $troubleshoot_monitoring_report) && $db{users}{$_uid}{user_type} ne 'casual_c' && $db{users}{$_uid}{user_type} ne 'schools_manager' && $db{users}{$_uid}{user_type} ne 'support' && $db{users}{$_uid}{user_type} ne 'permanent')) { $opts{schedule_users} .= qq~~ ; } if (($db{users}{$_uid}{user_type} eq 'support' || $db{users}{$_uid}{user_type} eq 'casual_calibrator') && $temp_calibrator_report) { $opts{support_users} .= qq~~ ; $tot_support_users_cnt++; } if ($db{users}{$_uid}{user_type} eq 'casual_c') { $opts{fixture_check} .= qq~~ ; } } my $event_systems_sql_where = ($monitoring_report || $troubleshoot_monitoring_report) ? "" : "system_type = 'mobile'" ; &db_min_ro('event_systems','*',$event_systems_sql_where,'','') ; $where = "1" unless $where ; &db_min_ro($table,"id,club_ids,qty,ref,organisation_ids,quote_accepted,event_system_id_multiple,region_id,sport_type_ids,operator_ids,date_from,date_to,times_from,times_to,daily_operator_ids,days_active,monitor_ids,temp_calibrator_ids$extra_column","$where AND `quote_accepted` = '1'",'','') ; my $min_id = 0 ; my $max_id = 0 ; foreach my $id (keys %{$db{$table}}) { 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]-$id"} = $id ; } &db_min_ro('sport_types','*','','','') ; &db_min_ro('organisations','id,name','','','') ; &db_min_ro('clubs','id,name','','','') if $monitoring_report || $troubleshoot_monitoring_report ; our $table_ = "shift_operator_ids" ; my $col_ = ($monitoring_report) ? "monitor_ids" : ($troubleshoot_monitoring_report) ? "troubleshoot_monitor_ids" : "temp_calibrator_ids,temp_calibrator_support_shifts" ; my $col2_ = ($monitoring_report) ? ",monitor_notes" : ($troubleshoot_monitoring_report) ? ",troubleshoot_monitor_notes" : "" ; &db_min_ro($table_,"date$col2_,$col_","`date` >= '$i{date_from}' AND `date` <= '$i{date_to}'") ; } #------------------------------------------------------------------------------------------ sub schedule_build_extra_table { my ($field_name,$table_name,$table_col_name,$table_col_name_notes,$table_id) = @_ ; my $ws2 = join ' ', map { ucfirst $_ } split /_/, $field_name ; $ws2 .= "s" ; &xlsxcreator_add_worksheet($ws2) ; my $col2 = 0 ; foreach (@sql_col_display_extra) { next if $_ eq "update" || !$_ || $_ eq 'notes' ; my $coltitle = $_ ; $coltitle =~ s/\_id//g ; $coltitle =~ s/\_/ /g ; my $ucfirst = join '', map { ucfirst lc } split /(\s+)/, $coltitle; &xlsxcreator_write_xlsx($ws2,0,$col2,$ucfirst,$format_management_report_headings) ; $col2++; } $col2=0 ; &xlsxcreator_freeze_panes($ws2,1,0) ; # Freeze the first 3 rows my $uc_field_name = ucfirst $field_name ; # $db{$table_name}{$i{date}}{$table_col_name} = qq~147;132|||~ ; # for (0 .. 3) { $schedule_ids[$_] = "null" unless $schedule_ids[$_] ; } $format84 -> set_left('1') ; my ($s_year,$s_mon,$s_day) = split("-",$i{date_from}) ; my ($e_year,$e_mon,$e_day) = split("-",$i{date_to}) ; $s_mon = sprintf("%02d",$s_mon) ; $s_day = sprintf("%02d",$s_day) ; our $date_cnt = 1 ; my $row_cnt = 0 ; return if int("$s_year$s_mon$s_day") > int("$e_year$e_mon$e_day") ; our @months = ("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ; my %row_cnt_shifts = () ; my $max_row_cnt = 0 ; while (int("$s_year$s_mon$s_day") <= int("$e_year$e_mon$e_day")) { $db{$table_name}{"$s_year-$s_mon-$s_day"}{$table_col_name} =~ s/\;/\,/g ; my @schedule_ids = split(/\|/,$db{$table_name}{"$s_year-$s_mon-$s_day"}{$table_col_name}) ; my $date = "$s_year-$s_mon-$s_day" ; my $date_str = &common_min_date_as_string($date) ; our $default_javascript = "" ; my %default_javascript_short = () ; my $val_notes = qq~~ ; foreach my $col (@sql_col_display_extra) { my $formatting = $format92 ; next if substr($col,0,5) eq 'shift' && substr($col,0,7) ne 'shift_1' ; my $val = '' ; my $nowrap = '' ; my $align = qq~~ ; my $val_min = "" ; my $row_span = '' ; if ($col eq 'date') { $row_cnt++ ; $row_span = qq~rowspan="2"~ if $monitoring_report || $troubleshoot_monitoring_report ; $val = $date_str . qq~~ ; $nowrap = "nowrap" ; &xlsxcreator_write_xlsx($ws2,$max_row_cnt+1,0,$date_str ,$formatting) ; } elsif (substr($col,0,7) eq 'shift_1') { $align = qq~ class="dt-center"~ ; local $place_holder = substr($ws2,0,-1) ; for (1 .. 4) { $row_cnt_shifts{$_} = $max_row_cnt + 1 ; } for my $shift_cnt (1 .. 4) { # $row_cnt_shifts{$shift_cnt} = ($max_row_cnt && $shift_cnt == 1) ? $max_row_cnt + 1 : 1 ; my $field = "$field_name\_$shift_cnt\_1_1_$date_cnt" ; $opts{$field} = $opts{schedule_users} ; $preferred_placeholder{$field} = ($troubleshoot_monitoring_report) ? "Shift Troubleshoot Monitor $shift_cnt $date_cnt" : "$place_holder $shift_cnt $date_cnt" ; $multiple{$field} = 1 ; my $table_col = 6-$shift_cnt ; push @first_table_multi_select_table_cells,"#$table_id tr:eq($row_cnt) td:nth-last-child($table_col)" ; $val .= &common_min_table_select($field,$schedule_ids[$shift_cnt - 1],'',$row_cnt,$table_col,'',$schedule_ids[$shift_cnt - 1],'shift',$table_id) ; foreach (split(/\,/,$schedule_ids[$shift_cnt - 1])) { next unless $_ ; $trigger_jquery_raw .= qq~\$("#select$uc_field_name\_$shift_cnt\_1_1_$date_cnt option[value='$_']").prop("selected",true);~ ; &xlsxcreator_write_xlsx($ws2,$row_cnt_shifts{$shift_cnt},$shift_cnt,"$db{users}{$_}{name}",$formatting) ; $row_cnt_shifts{$shift_cnt}++ ; } $max_row_cnt = $row_cnt_shifts{$shift_cnt} if !$max_row_cnt || $max_row_cnt < $row_cnt_shifts{$shift_cnt} ; $val .= qq~~ if $shift_cnt < 4 ; } } elsif ($col eq 'notes') { $row_cnt++ ; my @notes = split(/\:\|\:/,$db{$table_name}{$date}{$table_col_name_notes}) ; # $max_row_cnt-- ; # $max_row_cnt++ if $db{$table_name}{$date}{$table_col_name_notes} =~ /(\d+)/g || $db{$table_name}{$date}{$table_col_name_notes} =~ /[a-zA-Z]/ ; for my $shift_cnt (1 .. 4) { my $field = "$field_name\_notes_$shift_cnt\_1_1_$date_cnt" ; $preferred_placeholder{$field} = ($troubleshoot_monitoring_report) ? "Shift Troubleshoot Monitor Notes $shift_cnt $date_cnt" : "Shift Monitor Notes $shift_cnt $date_cnt" ; $val_notes .= &common_min_table_textarea($field,$notes[$shift_cnt-1],'',$row_cnt,5-$shift_cnt,'',$notes[$shift_cnt-1],'',$table_id) ; &xlsxcreator_write_xlsx($ws2,$max_row_cnt,$shift_cnt,$notes[$shift_cnt-1],$format97) if $db{$table_name}{$date}{$table_col_name_notes} =~ /(\d+)/g || $db{$table_name}{$date}{$table_col_name_notes} =~ /[a-zA-Z]/ ; $val_notes .= qq~~ if $shift_cnt < 4 ; } $val_notes = qq~$val_notes~ ; } elsif ($col eq "update") { $row_span = qq~rowspan="2"~ if $monitoring_report || $troubleshoot_monitoring_report ; $align = qq~ class="dt-center"~ ; my $field = "update_1_1_$date_cnt" ; $val = &common_min_form_checkbox_col($field,'') ; chop $default_javascript if $default_javascript ; if ($default_javascript) { push @default_javascript_by_id, qq~"1_1_$date_cnt":{$default_javascript}~ ; ## ??? for (1 .. 4) { my $field = "#textarea" . ucfirst "$field_name\_notes\_$_\_1_1_$date_cnt" ; push @all_update_field_ids,"$field" if $monitoring_report || $troubleshoot_monitoring_report ; $field = "#select" . ucfirst "$field_name\_$_\_1_1_$date_cnt" ; push @all_update_field_ids,"$field" ; } } } $print_tbody_extra .= qq~$val~ if $col ne 'notes' ; $print_tbody_extra .= qq~$val_notes~ if $col eq 'update' ; } ($s_year,$s_mon,$s_day) = Add_Delta_Days($s_year,$s_mon,$s_day,1) ; $s_mon = sprintf("%02d",$s_mon) ; $s_day = sprintf("%02d",$s_day) ; $date_cnt++ ; } $date_cnt-- ; # &common_min_table_select_fixed_width_jquery(1) ; # &common_min_table_select_default_values_jquery ; # @all_select_ids = () ; @selects_with_default_ids = () ; %col_name_select_ids = () ; %table_with_default_ids = () ; %selects_by_def_val = () ; @sql_col_display_extra = ("date","shift_1_(08:00-11:00)","shift_2_(11:00-14:00)","shift_3_(14:00-17:00)","shift_4_(17:00-21:00)","update") if $monitoring_report || $troubleshoot_monitoring_report ; $worksheet{$ws2}->set_column(0,0,10) ; $worksheet{$ws2}->set_column(1,5,50) if $monitoring_report || $troubleshoot_monitoring_report ; $worksheet{$ws2}->set_column(1,5,20) if $temp_calibrator_report ; $trigger_jquery_raw .= qq~\$("#$table_id tr:eq(0) th:nth-last-child(2),#$table_id tr th:nth-last-child(3),#$table_id tr th:nth-last-child(4),#$table_id tr th:nth-last-child(5)").css("width","23%")~ ; } #------------------------------------------------------------------------------------------ sub schedule_build_extra_second_table { my ($field_name,$table_name,$table_col_name) = @_ ; my $ws2 = join ' ', map { ucfirst $_ } split /_/, $field_name ; $ws2 .= "s" ; &xlsxcreator_add_worksheet($ws2) ; my $col2 = 0 ; foreach (@sql_col_display_2) { next if $_ eq "update" || !$_ ; my $coltitle = $_ ; $coltitle =~ s/\_id//g ; $coltitle =~ s/\_/ /g ; my $ucfirst = join '', map { ucfirst lc } split /(\s+)/, $coltitle; &xlsxcreator_write_xlsx($ws2,0,$col2,$ucfirst,$format_management_report_headings) ; $col2++; } $col2=0 ; &xlsxcreator_freeze_panes($ws2,1,0) ; # Freeze the first 3 rows my ($s_year,$s_mon,$s_day) = split("-",$i{date_from}) ; my ($e_year,$e_mon,$e_day) = split("-",$i{date_to}) ; $s_mon = sprintf("%02d",$s_mon) ; $s_day = sprintf("%02d",$s_day) ; $opts{name} = $opts{support_users} ; $radio_opts{shift} = "Half Day (<7 hours);Full Day (7 hours+)" ; my $nr_of_options = scalar split("option> int("$e_year$e_mon$e_day") ; my $date1 = "$s_year-$s_mon-$s_day" ; my $date2 = "$e_year-$e_mon-$e_day" ; my $d1 = Time::Piece->strptime($date1, "%Y-%m-%d") ; my $d2 = Time::Piece->strptime($date2, "%Y-%m-%d") ; my $diff_in_days = ($d2 - $d1)->days + 1; my $date_cnt= 0 ; &common_min_thead_2 ; for my $day_cnt (1 .. $diff_in_days) { my $date = "$s_year-$s_mon-$s_day" ; $db{$table_name}{$date}{$table_col_name} = "None" unless $db{$table_name}{$date}{$table_col_name} ; $date_cnt++ ; push @second_table_ids,"#select_temp_calibrators_2_$date_cnt" ; push @second_table_ids_2,"#select_temp_calibrators_2_$date_cnt td:nth-last-child(2)" ; push @second_table_ids_3,"#select_temp_calibrators_2_$date_cnt td:nth-last-child(3)" ; push @second_table_ids_4,"#select_temp_calibrators_2_$date_cnt td:nth-last-child(4)" ; push @second_table_ids_5,"#select_temp_calibrators_2_$date_cnt td:nth-last-child(5)" ; $print_tbody_extra_2 .= qq~~ ; $print_tbody_extra_2 .= qq~$print_thead_2~ if $date_cnt == 1 ; $print_tbody_extra_2 .= qq~~ ; my $row_cnt = 0 ; $opts{name} = $opts{support_users} ; my $z_index = $tot_support_users_cnt * ($diff_in_days - $day_cnt + 1) + 1 ; foreach my $row (split(/\|/,$db{$table_name}{$date}{$table_col_name})) { $z_index-- ; next unless $row ; $row_cnt++ ; $print_tbody_extra_2 .= qq~~ ; our $default_javascript = qq~~ ; $xlsxrow++ ; $xlsxcol = 0 ; foreach my $col (@sql_col_display_2) { my $formatting = $format84 ; my $val = '' ; my $nowrap = '' ; my $align = qq~class="dt-center"~ ; my $field_id = "$col\_2_$row_cnt\_$date_cnt" ; my $default_val_html = qq~~ ; if ($col eq 'date') { my $date_str = &common_min_date_as_string($date) ; $val = $date_str ; $nowrap = "nowrap" ; $align = qq~class="dt-left"~ ; &xlsxcreator_write_xlsx($ws2,$xlsxrow,$xlsxcol,"$date_str",$formatting) ; } elsif ($col eq 'name') { my @abc = split(/\:/,$row) ; $abc[0] = "" if $abc[0] eq "None" ; $default_val = $abc[0] ; $default_val_is_saved = ($default_val) ? 1 : 0 ; $preferred_placeholder{$field_id} = "Select Temp Support Name $row_cnt" ; $opts{$field_id} = $opts{name} ; my $table_row_cnt = ($date_cnt == 1) ? $row_cnt + 1 : $row_cnt - 1 ; $val = &common_min_table_select($field_id,$default_val,'',$table_row_cnt,4,'',$default_val_is_saved,'',"select_temp_calibrators_2_$date_cnt") ; # $default_val_html = qq~~ ; $trigger_jquery_raw .= qq~ \$("#select_temp_calibrators_2_$date_cnt tr:eq($table_row_cnt) td:nth-last-child(4)").css("z-index","$z_index") ; ~ ; $support_users_cnt-- ; $opts{name} =~ s/.*?<\/option>// if $default_val ; &xlsxcreator_write_xlsx($ws2,$xlsxrow,$xlsxcol,$db{users}{$default_val}{name},$formatting) ; } elsif ($col eq 'shift') { $radio_opts{$field_id} = $radio_opts{shift} ; my @abc = split(/\:/,$row) ; $default_val = $abc[1] ; $default_val_is_saved = ($default_val) ? 1 : 0 ; # $default_val_html = qq~~ ; our $val_min = "" ; my $table_row_cnt = ($date_cnt == 1) ? $row_cnt + 1 : $row_cnt - 1 ; $val = &table_radio_button($field_id,$default_val,'',$table_row_cnt,3,'',$default_val_is_saved,$col,"select_temp_calibrators_2_$date_cnt") ; &xlsxcreator_write_xlsx($ws2,$xlsxrow,$xlsxcol,$val_min,$formatting) ; } elsif ($col eq 'update') { $val = &common_min_table_checkbox($field_id) ; chop $default_javascript if $default_javascript ; if ($default_javascript) { push @default_javascript_by_id, qq~"2_$row_cnt\_$date_cnt":{$default_javascript}~ ; push @all_update_field_ids, "#shift_1_2_$row_cnt\_$date_cnt,#shift_2_2_$row_cnt\_$date_cnt,#selectName_2_$row_cnt\_$date_cnt" ; } } elsif (!$col) { $val = ($row ne 'None') ? qq~ ~ : qq~~ ; } my $styling = ($col eq 'date' && $row_cnt == 1) ? qq~style="width:7%;"~ : ($col eq 'name' && $row_cnt == 2) ? qq~style="width:35%;"~ : '' ; $print_tbody_extra_2 .= qq~~ ; $xlsxcol++ ; } $print_tbody_extra_2 .= qq~~ ; } ($s_year,$s_mon,$s_day) = Add_Delta_Days($s_year,$s_mon,$s_day,1) ; $s_mon = sprintf("%02d",$s_mon) ; $s_day = sprintf("%02d",$s_day) ; if ($nr_of_options <= $row_cnt) { $trigger_jquery_raw .= qq~\$("#add_row_table_2_$date_cnt").css("display","none");~ ; } my $plus_button_color = ($db{shift_operator_ids}{$date}{temp_calibrator_support_shifts} =~ /\|\|/ || $db{shift_operator_ids}{$date}{temp_calibrator_support_shifts} =~ /\|\:/ || $db{shift_operator_ids}{$date}{temp_calibrator_support_shifts} eq "None") ? "grey" : "blue" ; push @plus_btn_ids,"#add_row_table_2_$date_cnt" ; $plus_button = qq~
~ ; $print_tbody_extra_2 .= qq~
$val
$plus_button~ ; } $worksheet{$ws2}->set_column('A:C',20); &common_min_table_update_checkbox_col_default ; our $trigger_jquery_raw_default_alt = qq~ // let all_def_vals = {} ; // all_def_vals[row_nr] = {} ; // let def_name = \$("#default_name_"+row_nr ).text() ; // let def_shift = \$("#default_shift_"+row_nr ).text() ; // all_def_vals[row_nr]["selectName_"+row_nr] = def_name ; // if (def_shift == "1") { // all_def_vals[row_nr]["shift_1_"+row_nr ] = "true" ; // all_def_vals[row_nr]["shift_2_"+row_nr ] = "false" ; // } else if (def_shift == "2") { // all_def_vals[row_nr]["shift_1_"+row_nr ] = "false" ; // all_def_vals[row_nr]["shift_2_"+row_nr ] = "true" ; // } ~ ; my $plus_btn_ids_str = join(",",@plus_btn_ids) ; $trigger_jquery_raw .= qq~ function add_Days (date_string,num_days,as_num) { let date = new Date(date_string) ; date.setDate(date.getDate() + num_days) ; let year = date.getFullYear() ; let month = String(date.getMonth() + 1).padStart(2,'0') ; let day = String(date.getDate()).padStart(2,'0') ; if (as_num) { return ""+year+"-"+month+"-"+day+"" ; } else { let month_names = ["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"] ; month = month_names[month] ; return ""+day+"-"+month+"-"+year+"" ; } } function deleteTempSupport (row_cnt) { BootstrapDialog.confirm({ title: 'Confirm Delete', message: 'Are you sure you want to delete '+name+'?', type: BootstrapDialog.TYPE_DANGER, // <-- Default value is BootstrapDialog.TYPE_PRIMARY <-- Default value is BootstrapDialog.TYPE_WARNING callback: function(result) { let [cnt_for_date,table_cnt] = row_cnt.split('_').map(Number) ; if (result) { // if (\$("#update_data_base_"+row_cnt).text()) { let curr_date = add_Days("$i{date_from}",table_cnt-1,1) ; let url_delete = "$useropts{scripts}/get/get_db_delete_temp_support.pl?date="+curr_date+"&row_cnt="+cnt_for_date ; console.log("url_delete : "+url_delete) ; // console.log("#select_temp_calibrators_2_"+table_cnt+" #second_table_"+cnt_for_date+"_"+table_cnt) ; \$("#select_temp_calibrators_2_"+table_cnt+" #second_table_"+cnt_for_date+"_"+table_cnt).remove() ; \$.get(url_delete) ; // } // $("select#selectOriginalId").attr("id", "selectNewId"); let table_row_cnt = \$("#select_temp_calibrators_2_"+table_cnt).find('tr').length - 2 ; // let start_row_nr = 2 ; let end_row_nr = table_row_cnt + 1 ; if (table_cnt != '1') { table_row_cnt += 2 ; // start_row_nr = 0 ; // end_row_nr -= 2 ; } let all_def_vals_new = {} ; for (let i=2;i<=table_row_cnt+1;i++) { let row_nr = i-1 ; let row_val = i ; if (table_cnt != '1') { row_val -= 2 ; } \$("#select_temp_calibrators_2_"+table_cnt+" tr:eq("+row_val+")").attr("id","second_table_"+row_nr+"_"+table_cnt); let zIndex = \$("#select_temp_calibrators_2_"+table_cnt+" tr:eq("+row_val+") td:nth-last-child(4)").css('z-index'); zIndex++ ; \$("#select_temp_calibrators_2_"+table_cnt+" tr:eq("+row_val+") td:nth-last-child(4)").css('z-index',zIndex); if (\$("#select_temp_calibrators_2_"+table_cnt+" tr:eq("+row_val+") td:nth-last-child(1)").html()) { \$("#select_temp_calibrators_2_"+table_cnt+" tr:eq("+row_val+") td:nth-last-child(1)").html(" "); } \$("#select_temp_calibrators_2_"+table_cnt+" tr:eq("+row_val+")").find("select[id^='selectName_']").each(function() { var oldId = \$(this).attr("id"); let old_row_val = get_row_nr(oldId,2) ; let new_row_val = row_nr+"_"+table_cnt ; if (typeof all_def_vals["2_"+old_row_val] !== 'undefined') { all_def_vals_new["2_"+new_row_val] = {}; all_def_vals_new["2_"+new_row_val]["selectName_2_"+new_row_val] = all_def_vals["2_"+old_row_val]["selectName_2_"+old_row_val] ; all_def_vals_new["2_"+new_row_val]["shift_1_2_"+new_row_val] = all_def_vals["2_"+old_row_val]["shift_1_2_"+old_row_val] ; all_def_vals_new["2_"+new_row_val]["shift_2_2_"+new_row_val] = all_def_vals["2_"+old_row_val]["shift_2_2_"+old_row_val] ; } let old_select_val = \$("#"+oldId).val() ; \$(this).attr("id", "selectName_2_"+new_row_val); \$(this).attr("name", "name_2_"+new_row_val); \$(this).attr("data-placeholder", "Select Temp Support Name "+row_nr); var chosenElementId = oldId + "_chosen"; \$("#" + chosenElementId).attr("id", "selectName_2_"+row_nr+"_"+table_cnt+"_chosen"); \$("#selectName_2_"+row_nr+"_"+table_cnt+"_chosen .chosen-single span").text("Select Temp Support Name "+row_nr); \$("#shift_1_2_"+old_row_val).attr("name","shift_2_"+new_row_val); \$("#shift_1_2_"+old_row_val).attr("id","shift_1_2_"+new_row_val); \$("#shift_2_2_"+old_row_val).attr("name","shift_2_"+new_row_val); \$("#shift_2_2_"+old_row_val).attr("id","shift_2_2_"+new_row_val); \$("#checkboxUpdate_2_"+old_row_val).attr("name","update_2_"+new_row_val); \$("#checkboxUpdate_2_"+old_row_val).attr("id","checkboxUpdate_2_"+new_row_val); // \$("#default_name_"+old_row_nr).attr("id","default_name_"+row_nr); // \$("#default_shift_"+old_row_nr).attr("id","default_shift_"+row_nr); \$("#selectName_2_"+new_row_val).val(old_select_val) ; \$("#selectName_2_"+new_row_val).trigger("chosen:updated") ; if (\$("#add_row_table_2_"+table_cnt).is(":hidden")) { \$("#add_row_table_2_"+table_cnt).css("display","") ; } }) ; } all_def_vals = all_def_vals_new ; if (!\$("#second_table_1_"+table_cnt).html()) { let options = "$opts{support_users}" ; let select = add_select("name_2_1_"+table_cnt,"selectName_2_1_"+table_cnt,"Select Temp Support Name 1","$opts{support_users}",1,90) ; let radio_butt = "  " ; let update_butt = "" ; let newRow = ""+curr_date+""+select+""+radio_butt+""+update_butt+"" ; \$("#select_temp_calibrators_2_"+table_cnt+" tbody").append(newRow) ; \$("#selectName_2_1_"+table_cnt).chosen({allow_single_deselect:true}) ; \$("#selectName_2_1_"+table_cnt+"_chosen").css("position","absolute") ; \$("#selectName_2_1_"+table_cnt+"_chosen").css("width","90%") ; \$("#selectName_2_1_"+table_cnt+"_chosen").css("left","5%") ; \$("#selectName_2_1_"+table_cnt+"_chosen").css("top","50%") ; \$("#selectName_2_1_"+table_cnt+"_chosen").css("transform","translateY(-50%)") ; let optionCount = \$("#selectName_2_1_"+table_cnt+" option").length - 1 ; let date_cnt = daysBetween("$i{date_from}","$i{date_to}") ; let z_index = (date_cnt - table_cnt + 1)*optionCount ; let row_val = 2 ; if (table_cnt != '1') { row_val = 0 ; } \$("#select_temp_calibrators_2_"+table_cnt+" tr:eq("+row_val+") td:nth-last-child(4)").css("z-index",z_index) ; \$("#selectName_2_1_"+table_cnt+",#shift_1_2_1_"+table_cnt+",#shift_2_2_1_"+table_cnt).change( function () { let found_blank = 0 ; if ((!\$("#selectName_2_1_"+table_cnt).val() || (!\$("#shift_1_2_1_"+table_cnt).is(":checked") && !\$("#shift_2_2_1_"+table_cnt).is(":checked"))) && \$("#second_table_1_"+table_cnt).html()) { found_blank = 1 ; } if (!found_blank) { \$('#add_row_table_2_'+table_cnt).find('i').removeClass('grey').addClass('blue'); } else { \$('#add_row_table_2_'+table_cnt).find('i').removeClass('blue').addClass('grey'); } let tick_update = 0 ; if ((\$("#"+this.id).attr('type') == 'radio' && \$("#"+this.id).is(":checked")) || (\$("#"+this.id).val() && \$("#"+this.id).attr('type') != 'radio')) { tick_update = 1 ; } if (tick_update && !\$("#checkboxUpdate_2_1_"+table_cnt).is(":checked")) { \$("#checkboxUpdate_2_1_"+table_cnt).prop("checked",true) ; } else if (!tick_update && \$("#checkboxUpdate_2_1_"+table_cnt).is(":checked")) { \$("#checkboxUpdate_2_1_"+table_cnt).prop("checked",false) ; } }) ; } } } }); } ~ ; $trigger_jquery_raw .= qq~ function daysBetween(date1,date2) { const oneDay = 24 * 60 * 60 * 1000 ; const firstDate = new Date(date1) ; const secondDate = new Date(date2) ; const diffInTime = Math.abs(secondDate - firstDate) ; return Math.ceil(diffInTime/oneDay) + 1 ; } function add_select (field_name,field_id,placeholder,options,tindex,width) { let select_raw = "" ; return select_raw ; } \$("$plus_btn_ids_str").click( function () { let table_nr = get_row_nr(this.id) ; let table_row_cnt = \$("#select_temp_calibrators_2_"+table_nr).find('tr').length ; if (table_nr == '1') { table_row_cnt -= 2 ; } let found_blank = 0 ; // console.log("table_row_cnt : "+table_row_cnt) ; // let lastRowId = \$("#select_temp_calibrators_2 tr:last").attr("id"); // let table_row_cnt = get_row_nr(lastRowId) ; for (i=1;i<=table_row_cnt;i++) { if ((!\$("#selectName_2_"+i+"_"+table_nr).val() || \$("#selectName_2_"+i+"_"+table_nr).val() == null || (!\$("#shift_1_2_"+i+"_"+table_nr).is(":checked") && !\$("#shift_2_2_"+i+"_"+table_nr).is(":checked"))) && \$("#second_table_"+i+"_"+table_nr).html()) { found_blank = 1 ; } } if (!found_blank) { \$('#add_row_table_2_'+table_nr).find('i').removeClass('blue').addClass('grey'); table_row_cnt++ ; let options = "$opts{support_users}" ; let select = add_select("name_2_"+table_row_cnt+"_"+table_nr,"selectName_2_"+table_row_cnt+"_"+table_nr,"Select Temp Support Name "+table_row_cnt,"$opts{support_users}",1,90) ; // "Half Day (<7 hours);Full Day (7 hours+)" let radio_butt = "  " ; // let delete_butt = " " ; let delete_butt = "" ; let update_butt = "" ; let curr_date = add_Days("$i{date_from}",table_nr-1) ; let newRow = ""+curr_date+""+select+""+radio_butt+""+update_butt+""+delete_butt+"" ; \$("#select_temp_calibrators_2_"+table_nr+" tbody").append(newRow) ; // let optionCount = \$("#selectName_2_"+table_row_cnt+"_"+table_nr+" option").length - 1 ; let optionCount = \$("#selectName_2_1_"+table_nr+" option").length - 1 ; let date_cnt = daysBetween("$i{date_from}","$i{date_to}") ; // my $support_users_cnt = $potential_support_users_cnt - ($day_cnt - 1)*$tot_support_users_cnt ; let z_index = (date_cnt - table_nr + 1)*optionCount - table_row_cnt + 1 ; // let optionCount = "$tot_support_users_cnt" ; // \$("#selectName_"+table_row_cnt).chosen({allow_single_deselect:true}) ; for (i=1;i 1) { // let row_nr = get_row_nr(this.id) ; // for (i=1;i<=table_row_cnt;i++) { // for (j=1;j<=table_row_cnt;j++) { // } // } } if (!found_blank) { \$('#add_row_table_2_'+table_cnt).find('i').removeClass('grey').addClass('blue'); } else { \$('#add_row_table_2_'+table_cnt).find('i').removeClass('blue').addClass('grey'); } }) ; ~ ; my $second_table_ids_str = join(",",@second_table_ids) ; my $second_table_ids_str_2 = join(",",@second_table_ids_2) ; my $second_table_ids_str_3 = join(",",@second_table_ids_3) ; our $second_table_ids_str_4 = join(",",@second_table_ids_4) ; my $second_table_ids_str_5 = join(",",@second_table_ids_5) ; &common_min_table_select_fixed_width_jquery("$second_table_ids_str_4") ; &common_min_table_select_default_values_jquery ; # &common_min_table_select_jquery("#select_temp_calibrators_2 td:nth-last-child(4)","") ; &common_min_table_update_checkbox_col_jquery("3") ; $trigger_jquery .= qq~ \$("#select_temp_calibrators_2_length").css("display","none") ; \$("#select_temp_calibrators_2_filter").css("display","none") ; \$("#select_temp_calibrators_2_info").css("display","none") ; \$("#select_temp_calibrators_2_paginate").css("display","none") ; ~ ; $trigger_jquery .= qq~ // \$("#select_temp_calibrators_2").css("width","66.66666%"); \$("$second_table_ids_str_5").css("width","7%") ; \$("$second_table_ids_str_4").css("width","40%") ; // \$("$second_table_ids_str_4").css("position","relative") ; // \$("$second_table_ids_str_4").css("text-align","center") ; \$("$second_table_ids_str_3").css("width","40%") ; \$("$second_table_ids_str_2").css("width","10%") ; ~ ; } #------------------------------------------------------------------------------------------ sub table_radio_button { my ($field,$default_val,$only_display_val,$table_row,$table_col,$background_color,$default_val_is_saved,$col_name,$table_id) = @_ ; return unless $col_name ; $field = "$col_name\_$table_row" unless $field ; my $field_cnt = $field ; $field_cnt =~ s/$col_name\_//g ; my $ucfirst_field = ucfirst $field ; my $print_field = &common_min_print_field($field) ; if ($preferred_title{$field}) { $print_field = $preferred_title{$field} ; } my @opts = ($radio_opts{$field}) ? split(/\;/,$radio_opts{$field}) : split(/\;/,$options); my $row = qq~~ ; my $cnt = 0 ; if ($default_val && $default_val_is_saved) { $background_color = "#424949" unless $background_color ; $table_with_default_ids{$background_color} .= "#$table_id tr:eq($table_row) td:nth-last-child($table_col)," ; } foreach (@opts) { $cnt++ ; my $checked = ($cnt eq $default_val) ? 'CHECKED' : '' ; $val_min = ($checked) ? $_ : $val_min ; $row .= qq(  ) ; if (!$default_val_is_saved || !$default_val) { $default_javascript .= qq~"$col_name\_$cnt\_$field_cnt":"false",~ ; } else { my $default_val_boolian = ($cnt eq $default_val) ? "true" : "false" ; $default_javascript .= qq~"$col_name\_$cnt\_$field_cnt":"$default_val_boolian",~ ; } push @all_radio_ids,"#shift_$cnt\_$field_cnt" ; } $row = substr($row,0,-12) ; # my $row = qq($print_radios) ; return ($row) ; } #------------------------------------------------------------------------------------------ sub schedule_build_table { my ($table_col_name,$field_name) = @_ ; my $cali_cnt = 0 ; my $found_editable = 0 ; my @all_select_ids = () ; $format84 -> set_align("center") ; my $table_row = 0 ; my %default_vals = () ; # 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 ; my $system_count = 0 ; my $system_day_cnt = 0 ; my %default_monitors = () ; my $day_cnt = 0 ; my $sql_col = "$table_col_name" ; my $inp_field = substr($sql_col,0,-1) ; my $found_inp_field = 0 ; foreach my $day_row (split(/\|/,$db{$table}{$id}{$sql_col})) { $day_cnt++ ; $system_count = 0 ; foreach my $system_row (split(/\;/,$day_row)) { $system_count++ ; my $shift_cnt = 0 ; foreach my $shift_monitor (split(/\:/,$system_row)) { $shift_cnt++ ; $default_monitors{$day_cnt}{$system_count}{$shift_cnt} = $shift_monitor ; $found_inp_field = 1 if $shift_monitor eq $i{$inp_field} ; } } } $system_count = 0 ; my %system_has_daily_op = () ; my %default_op_ids = () ; foreach my $system_row (split(/\|/,$db{$table}{$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_has_daily_op{$system_count} = 1 if $col ; } } $system_count = 0 ; 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 @days_active = split(/\;/,$db{$table}{$id}{days_active}) ; my @start_times = ($db{$table}{$id}{qty} eq '1' && $days_active[0]) ? () : split(/\;/,";".$db{$table}{$id}{times_from}) ; my @end_times = ($db{$table}{$id}{qty} eq '1' && $days_active[0]) ? () : split(/\;/,$db{$table}{$id}{times_to}) ; my $cnt_rows = 0 ; for (1 .. 50) { $cnt_rows = $_ if $system_name_ids[$_ - 1] or $club_ids[$_ - 1] ; } my $system_count = 0 ; my $system_day_cnt = 0 ; foreach my $event_sys_id (@system_name_ids) { $system_count++ ; next unless $event_sys_id ; next if $db{event_systems}{$event_sys_id}{system_type} ne 'mobile' && !$monitoring_report && !$troubleshoot_monitoring_report ; # &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) { $system_day_cnt = 0 ; 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) ; $system_day_cnt++ ; # &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}++ ; next if $db{$table}{$id}{days_active} && !$days_active[$cnt{$event_sys_id}{$id}-1] ; my $cal_date_val = $cal_date ; my $date_from_val = $i{date_from} ; my $date_to_val = $i{date_to} ; $cal_date_val =~ s/\-//g ; $date_from_val =~ s/\-//g ; $date_to_val =~ s/\-//g ; next if $cal_date_val < $date_from_val || $cal_date_val > $date_to_val ; # # &common_debug("3. DATE >>> $cal_date_comp > $srch_date_to_comp") if !$report ; # next if ($calibration_report) && $cal_date_comp > $srch_date_to_comp ; # # &common_debug("4. DATE >>> $cal_date_comp < $srch_date_from_comp") if !$report ; # next if ($calibration_report) && $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~~ ; $table_row++ ; our $default_javascript = "" ; 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_nr') { $val = "$id" ; } elsif ($_ eq 'event') { $val = "$db{$table}{$id}{ref} [$id]" ; } elsif ($_ eq 'calibration_date' || $_ eq 'date') { # $val = "$cal_date [$day_of_week{$cal_date}]" ; $val = &common_min_date_as_string($cal_date) ; $nowrap = "nowrap" ; } elsif ($_ eq 'day') { $val = "$sys_day_cnt" ; } elsif ($_ eq 'start_date') { $nowrap = "nowrap" ; $val = &common_min_date_as_string($date_from) ; } elsif ($_ eq 'venue') { my @oids = split(/\,/,$db{$table}{$id}{organisation_ids}) ; foreach $_oid (@oids) { $val .= $db{organisations}{$_oid}{name} . '
' ; } $val = substr($val,0,-4) if $val ; ; } elsif ($_ eq 'region') { $val = $db{regions}{$db{$table}{$id}{region_id}}{code} ; } elsif ($_ eq 'type') { $val = (lc $db{event_systems}{$event_sys_id}{description} =~ /cricket/) ? "C" : ($db{event_systems}{$event_sys_id}{system_type} eq 'mobile') ? "M" : ($db{event_systems}{$event_sys_id}{system_type} eq 'fixed') ? "F" : ""; } elsif ($_ eq 'system') { $val = '' ; # $val = qq~($event_sys_id)$db{event_systems}{$event_sys_id}{name}~ ; $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}
~ ; } $val = substr($val,0,-4) if $val ; } elsif ($_ eq 'club_name') { $val = $db{clubs}{$club_ids[$system_count - 1]}{name} ; } elsif ($_ eq 'operator') { $val = '' ; # $val = $db{users}{$table_op_ids[$system_count - 1]}{name} if $table_op_ids[$system_count - 1] ; $val = ($default_op_ids{$system_count}{$cnt{$event_sys_id}{$id}}) ? $db{users}{$default_op_ids{$system_count}{$cnt{$event_sys_id}{$id}}}{name} : (!$default_op_ids{$system_count}{$system_day_cnt} && $system_has_daily_op{$system_count}) ? "None" : $db{users}{$op_ids[$system_count - 1]}{name} ; # $formatting = $format92 if $event_cnt == 2 ; $formatting = $format92 if $cali_cnt == 2 ; } elsif ($_ eq 'start_time') { if (!$start_times[$sys_day_cnt-1]) { $val = substr($db{$table}{$id}{date_from},11,5) ; } else { $val = substr($start_times[$sys_day_cnt-1],0,5) ; } } elsif ($_ eq 'end_time') { if (!$end_times[$sys_day_cnt-1]) { $val = substr($db{$table}{$id}{date_to},11,5) ; } else { $val = substr($end_times[$sys_day_cnt-1],0,5) ; } } elsif ($_ eq 'status' || $_ eq 'fixture_check') { push @first_table_multi_select_table_cells,"#$useropts{table_id} tr:eq($table_row) td:nth-last-child($last_child{$_})" ; $field{$_} = "$_\_event$event_sys_id\_$sys_day_cnt\_$id" ; $opts{$field{$_}} = $opts{$_} ; my $background_color = qq~~ ; if ($_ eq 'status' && $default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id}) { $val_min = $db{monitor_status}{$default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id}}{status} ; if ($default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id} eq '1') { $background_color = qq~rgb(81, 181, 41)~ ; $formatting = $format94 ; } elsif ($default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id} eq '2') { $background_color = qq~rgb(246, 227, 5)~ ; $formatting = $format95 ; } else { $background_color = qq~rgb(249, 13, 13)~ ; $formatting = $format96 ; } } elsif ($default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id}) { $val_min = $db{users}{$default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id}}{name} ; } $val = &common_min_table_select($field{$_},$default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id},'',$table_row,$last_child{$_},$background_color,$default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id},$_) ; } elsif ($_ eq 'comments') { $field{$_} = "$_\_event$event_sys_id\_$sys_day_cnt\_$id" ; $val = &common_min_table_textarea($field{$_},$default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id},'',$table_row,$last_child{$_},$background_color,$default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id},$_) ; $val_min = $default_values{$_}{$event_sys_id}{$sys_day_cnt}{$id} ; } elsif ($_ eq 'update') { my $field = "update_event$event_sys_id\_$sys_day_cnt\_$id" ; $val = &common_min_form_checkbox_col($field,'') ; chop $default_javascript if $default_javascript ; # 12=s:;t:|s:1;t:1|s:2;t:2-13=|s:3;t:3|s:4;t:4 if ($default_javascript) { push @default_javascript_by_id, qq~"event$event_sys_id\_$sys_day_cnt\_$id":{$default_javascript}~ ; } } if ($_ ne 'comments' && $_ ne 'status' && $_ ne 'calibrator' && substr($_,0,5) ne 'shift' && $_ ne 'update' && $_ ne 'status' && $_ ne 'fixture_check') { $val_min = $val ; $val_min =~ s/\
/\;/g ; } $print_tbody .= qq~$val~ ; # &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~~ ; $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} ; } } # || $troubleshoot_monitoring_report ; my $html_id = ($monitoring_report) ? "selectShift_monitor_" : ($troubleshoot_monitoring_report) ? "selectShift_troubleshoot_monitor_" : "selectShift_temp_calibrator_" ; my $html_id2 = ($monitoring_report) ? "shift-monitor-id-" : ($troubleshoot_monitoring_report) ? "shift-troubleshoot-monitor-id-" : "shift-temp-calibrator-id-" ; $row_cnt++ if $monitoring_report || $troubleshoot_monitoring_report ; $trigger_jquery_raw .= ($monitoring_report || $troubleshoot_monitoring_report) ? qq~ \$("#savebutt").click(function() { for (let table_cnt = 1; table_cnt<= $date_cnt; table_cnt++) { for (let i=1; i<=4; i++) { let mon_id = \$("#$html_id"+i+"_1_1_"+table_cnt).chosen().val() ; if (mon_id && typeof(mon_id) !== 'undefined') { \$("#$html_id2"+i+"-"+table_cnt).val(mon_id) ; } } } \$("#$lcpage-form").submit() ; }) ; ~ : qq~ \$("#savebutt").click(function() { for (let table_cnt = 1; table_cnt<= $date_cnt; table_cnt++) { for (let i=1; i<=4; i++) { let mon_id = \$("#$html_id"+i+"_1_1_"+table_cnt).chosen().val() ; if (mon_id) { \$("#$html_id2"+i+"-"+table_cnt).val(mon_id) ; } } let table_row_cnt = \$("#select_temp_calibrators_2_"+table_cnt).find('tr').length - 2 ; if (table_cnt > 1) { table_row_cnt += 2 ; } let seen_support = {} ; for (i=1;i<=table_row_cnt;i++) { let sel_val = \$("#selectName_2_"+i+"_"+table_cnt).val() ; // if (!sel_val) { // noty({text:'Please Select a Temp Support Name in all Rows',layout:"center",type:"error",timeout:3000}) ; // return ; // } else if (seen_support[sel_val]) { noty({text:'Please do not Select the same Temp Support Name in Multiple Rows for the Same Date',layout:"center",type:"error",timeout:3000}) ; return ; } else if (sel_val) { seen_support[sel_val] = 1 ; } } } \$("#$lcpage-form").submit() ; }) ; ~ ; $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,4,15) ; $worksheet{$ws}->set_column(5,6,10) ; $worksheet{$ws}->set_column(7,7,30) ; $worksheet{$ws}->set_column(8,9,10) ; $worksheet{$ws}->set_column(10,10,30) ; $worksheet{$ws}->set_column(11,11,15) ; $worksheet{$ws}->set_column(12,16,20) ; &report_xlsx_export_footer('L',15,$xlsxdir) ; } #------------------------------------------------------------------------------------------ sub schedule_update { my ($table,$table_field,$other_field,$table_field_2) = @_ ; unless ($table_field_2) { $table_field_2 = "blank" ; $ignore{$table_field_2} = 1 ; } my ($s_year,$s_mon,$s_day) = split("-",$i{date_from}) ; my ($e_year,$e_mon,$e_day) = split("-",$i{date_to}) ; our $date_counter = 1 ; while (int("$s_year$s_mon$s_day") <= int("$e_year$e_mon$e_day")) { $date_cnt_to_date{$date_counter} = "$s_year-$s_mon-$s_day" ; $date_counter++ ; ($s_year,$s_mon,$s_day) = Add_Delta_Days ($s_year,$s_mon,$s_day,1) ; $s_mon = sprintf("%02d",$s_mon) ; $s_day = sprintf("%02d",$s_day) ; } $date_cnt_to_date{$date_counter} = "$s_year-$s_mon-$s_day" ; $date_counter-- ; my %i_per_date = () ; my $temp_support_diff = 0 ; if ($temp_calibrator_report) { &db_min_ro($table,"date,temp_calibrator_support_shifts,$table_field","`date` >= '$i{date_from}' AND`date` <= '$i{date_to}'") ; for my $date_cnt (1 .. $date_counter) { my $table_pos = 0 ; my $cnt_per_date = 0 ; my $table_cnt = 0 ; # $db{$table}{1}{temp_calibrator_support_shifts} =~ s/\|\|/\|/g ; # $db{$table}{1}{temp_calibrator_support_shifts} =~ s/^\|//; # $db{$table}{1}{temp_calibrator_support_shifts} =~ s/\|$//; my @temp_calibrator_support_shifts_split = split(/\|/,$db{$table}{$date_cnt_to_date{$date_cnt}}{temp_calibrator_support_shifts}) ; foreach (sort keys %i) { $ignore{$_} = 1 ; if ($_ =~ /^name_2_.*_$date_cnt$/) { my @aaa = split(/\_/,$_) ; $table_pos = $aaa[-3] ; $cnt_per_date = $aaa[-2] ; # $table_cnt = $aaa[-1] ; my $update_field = "update_$table_pos\_$cnt_per_date\_$date_cnt" ; my $name_field = "name_$table_pos\_$cnt_per_date\_$date_cnt" ; my $shift_field = "shift_$table_pos\_$cnt_per_date\_$date_cnt" ; if ($i{$update_field} && $i{$name_field} && $i{$shift_field}) { $i_per_date{$date_cnt}{temp_calibrator_support_shifts} .= qq~$i{$name_field}:$i{$shift_field}|~ ; } elsif ($temp_calibrator_support_shifts_split[$cnt_per_date-1]) { my $abcde = $temp_calibrator_support_shifts_split[$cnt_per_date-1] ; $i_per_date{$date_cnt}{temp_calibrator_support_shifts} .= qq~$abcde|~ ; } } } chop $i_per_date{$date_cnt}{temp_calibrator_support_shifts} if $i_per_date{$date_cnt}{temp_calibrator_support_shifts} ; # $temp_support_exists = 1 if $i_per_date{$date_cnt}{temp_calibrator_support_shifts} ; $temp_support_diff = 1 if $i_per_date{$date_cnt}{temp_calibrator_support_shifts} && $i_per_date{$date_cnt}{temp_calibrator_support_shifts} ne $db{$table}{$date_cnt_to_date{$date_cnt}}{temp_calibrator_support_shifts} ; } } else { # return unless $i{update_table_1} ; &db_min_ro($table,"date,$table_field,$table_field_2","`date` >= '$i{date_from}' AND `date` <= '$i{date_to}'") ; } my $some_update = 0 ; for my $date_cnt (1 .. $date_counter) { $some_update = 1 if $i{"update_1_1_$date_cnt"} || ($i{"update_2_1_$date_cnt"} || $temp_calibrator_report) ; } # return if !$i{update_table_1} && $temp_calibrator_report && $i{temp_calibrator_support_shifts} eq $db{$table}{1}{temp_calibrator_support_shifts} ; return if !$some_update && !$temp_support_diff ; &hidden_fields ; my %ii = %i ; # $ignore{blank} = 1 ; for my $date_cnt (1 .. $date_counter) { %i = () ; # my $date_val = $ii{"date_$date_cnt"} ; my $date_val = $date_cnt_to_date{$date_cnt} ; # my $update_field = "update_1_1_$date_cnt" ; next if !$ii{"update_1_1_$date_cnt"} && !$ii{"update_2_1_$date_cnt"} ; if ($ii{"update_1_1_$date_cnt"}) { my $ops_exists = 0 ; my $notes_exists = 0 ; for my $shift_cnt (1 .. 4) { $ii{"$other_field\_$shift_cnt\_$date_cnt"} =~ s/\,/\;/g ; $i{$table_field} .= qq~$ii{"$other_field\_$shift_cnt\_$date_cnt"}|~ ; $ops_exists = 1 if $ii{"$other_field\_$shift_cnt\_$date_cnt"} ; $notes_exists = 1 if $table_field_2 && $ii{"shift_$table_field_2\_$shift_cnt\_1_1_$date_cnt"} ; my $field_ = "shift_$table_field_2\_$shift_cnt\_1_1_$date_cnt" ; $i{$table_field_2} .= qq~$ii{"shift_$table_field_2\_$shift_cnt\_1_1_$date_cnt"}:|:~ if $table_field_2 ; } chop $i{$table_field} ; $i{$table_field} = qq~~ unless $ops_exists ; $i{$table_field_2} = qq~~ if $table_field_2 && !$notes_exists ; $i{$table_field_2} = substr($i{$table_field_2},0,-3) if $table_field_2 && $i{$table_field_2} ; $ignore{$table_field} = 0 ; $ignore{$table_field_2} = 0 if $table_field_2 && $table_field_2 ne 'blank' ; } else { $ignore{$table_field} = 1 ; $ignore{$table_field_2} = 1 ; } # my $table_field_old = $table_field ; # $table_field = $table_field_old ; $i{temp_calibrator_support_shifts} = $i_per_date{$date_cnt}{temp_calibrator_support_shifts} if $temp_calibrator_report ; if (!$db{$table}{$date_val}{date}) { &db_min_ro($table,"1,MAX(id) + 1 AS 'max_id'","","","") ; $i{id} = $db{$table}{1}{max_id} ; $i{id} = 1 unless $i{id} ; $i{date} = $date_val ; $ignore{date} = 0 ; $ignore{$table_field} = 1 unless $i{$table_field} ; $ignore{temp_calibrator_support_shifts} = 1 if !$temp_calibrator_report || !$i{temp_calibrator_support_shifts} ; &db_min_insert("$table") ; } else { $ignore{$table_field} = 1 if $db{$table}{$date_val}{$table_field} eq $i{$table_field} ; $ignore{temp_calibrator_support_shifts} = 1 if $db{$table}{$date_val}{temp_calibrator_support_shifts} eq $i{temp_calibrator_support_shifts} || !$temp_calibrator_report ; &db_min_upd($table,"`date`='$date_val'") if !$ignore{$table_field} || !$ignore{$table_field_2}|| !$ignore{temp_calibrator_support_shifts} ; } } %i = %ii ; } #------------------------------------------------------------------------------------------ sub schedule_payments_update { my ($field) = @_ ; my %iii = %i ; my %ii = () ; local $min_date = 0 ; local $max_date = 0 ; foreach (sort keys %i) { local $cell_name = $_ ; local @a = split("_") ; next if $a[-2] ne int($a[-2]) ; if ($i{"paid_$a[-2]\_$a[-1]"} and $i{"amount_payble_$a[-2]\_$a[-1]"}) { # my $date = substr($a[-1],0,4) . '-' . substr($a[-1],4,2) . '-' . substr($a[-1],6,2) ; if ($a[0] eq 'amount') { $i{$_} = sprintf("%.2f",$i{$_}) ; $ii{$a[-1]}{"$field\_amounts_paid"} .= ($ii{$a[-1]}{"$field\_amounts_paid"}) ? qq~;$a[-2]:$i{$_}~ : qq~$a[-2]:$i{$_}~ ; } elsif ($a[0] eq 'date') { $ii{$a[-1]}{"$field\_dates_paid"} .= ($ii{$a[-1]}{"$field\_dates_paid"}) ? qq~;$i{$_}~ : qq~$i{$_}~ ; } } $min_date = $a[-1] if ($min_id and $a[-1] < $min_id) or not $min_id ; $max_date = $a[-1] if $a[-1] > $max_id ; } $min_date = substr($min_date,0,4) . '-' . substr($min_date,4,2) . '-' . substr($min_date,6,2) ; $max_date = substr($max_date,0,4) . '-' . substr($max_date,4,2) . '-' . substr($max_date,6,2) ; &db_min_ro($table,"date,$field\_dates_paid,$field\_amounts_paid","`date` <= '$max_date' AND `date` >= '$min_date'",'','') ; foreach my $date (sort keys %ii) { %i = () ; # $i{"$field\_dates_paid"} .= qq~$ii{$date}{"$field\_dates_paid"}~ ; my $date_string = substr($date,0,4) . '-' . substr($date,4,2) . '-' . substr($date,6,2) ; $i{"$field\_amounts_paid"} = qq~$db{$table}{$date_string}{"$field\_amounts_paid"}~ ; $i{"$field\_amounts_paid"} .= qq~;~ if $db{$table}{$date_string}{"$field\_amounts_paid"} && $ii{$date}{"$field\_amounts_paid"} ; $i{"$field\_amounts_paid"} .= qq~$ii{$date}{"$field\_amounts_paid"}~ ; $ignore{"$field\_amounts_paid"} = 1 if $i{"$field\_amounts_paid"} eq $db{$table}{$date_string}{"$field\_amounts_paid"} || !$i{"$field\_amounts_paid"} ; $i{"$field\_dates_paid"} = qq~$db{$table}{$date_string}{"$field\_dates_paid"}~ ; $i{"$field\_dates_paid"} .= qq~;~ if $db{$table}{$date_string}{"$field\_dates_paid"} && $ii{$date}{"$field\_dates_paid"} ; $i{"$field\_dates_paid"} .= qq~$ii{$date}{"$field\_dates_paid"}~ ; $ignore{"$field\_dates_paid"} = 1 if $i{"$field\_dates_paid"} eq $db{$table}{$date_string}{"$field\_dates_paid"} || !$i{"$field\_dates_paid"} ; &db_min_upd($table,"`date`='$date_string'") if $i{"$field\_dates_paid"} || $i{"$field\_amounts_paid"} ; } %i = %iii ; } #------------------------------------------------------------------------------------------ sub schedule_payments_report_ifields { my ($field) = @_ ; my $field2 = join(/ /, map { uc($_) } split(/\_/,$field)) ; if ($i{date_from} and $i{date_to}) { # check dates my $date_from_check = $i{date_from} ; $date_from_check =~ s/\-//g ; my $date_to_check = $i{date_to} ; $date_to_check =~ s/\-//g ; if ($date_from_check > $date_to_check) { $error = qq~'$i{date_from}' > '$i{date_to}'~ ; &report_screen ; } push @report_sql, "((`date_from` >= '$i{date_from} 00:00:00' AND `date_from` <= '$i{date_to} 23:59:59') OR (`date_to` <= '$i{date_to} 23:59:59' AND `date_to` >= '$i{date_from} 00:00:00'))" ; push @report_results, "(BETWEEN '$i{date_from}' AND '$i{date_to}')" ; } elsif (not $i{date_from}) { $error = qq~PLEASE ENTER A START DATE!~ ; } elsif (not $i{date_to}) { $error = qq~PLEASE ENTER A END DATE!~ ; } our $where_min = qq~~ ; if ($i{"$field\_id"}) { my $ifield = "$field\_id" ; &db_min_ro('users','1,name',"`id` = '$i{$ifield}'",'','') ; $where_min = " AND `$field\_ids` LIKE '%$i{$ifield}%'" ; push @report_results,"$field2 = $db{users}{1}{name}" ; } if ($i{paid_status} eq 'paid') { push @report_results,"$field2 AMOUNTS PAID" ; } elsif ($i{paid_status} eq 'outstanding') { push @report_results,"$field2 PAY OUTSTANDING" ; } $report_results_msg = uc join(', ', @report_results) ; if (not $report_results_msg) { $error = qq(ENTER AT LEAST ONE SEARCH PARAMETER); &report_screen ; } else { $isaved = qq(SELECT WHERE $report_results_msg) ; } } #------------------------------------------------------------------------------------------ sub schedule_payments_list_screen { my ($field) = @_ ; my $field2 = $field ; $field2 =~ s/\_/\-/g ; # &db_min_ro('event_cost_items','1,rates',"`name` LIKE '$field3%'",'','') ; our @sql_col_display = ($i{paid_status} eq 'paid') ? ("date","$field\_names","shifts_count","dates_paid","amounts_paid","all_paid") : ($i{paid_status} eq 'all') ? ("date","$field\_names","shifts_count","dates_paid","amounts_paid","date_payable","amount_payable","paid") : ("date","$field\_names","shifts_count","date_payable","amount_payable","paid") ; my $table_colspan = 0 ; foreach (@sql_col_display) { $table_colspan += 1 ; } local @month_arr = ("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ; my ($year1,$month1,$day1) = split(/\-/,$i{date_from}) ; my ($year2,$month2,$day2) = split(/\-/,$i{date_to}) ; my $date_string = qq~~ ; if ($year1 ne $year2 && $month1 ne $month2 && $day1 ne $day2) { $date_string = qq~ $day1 $month_arr[$month1] $year1 - $day2 $month_arr[$month2] $year2~ ; } elsif ($year1 eq $year2 && $month1 ne $month2) { $date_string = qq~ $day1 $month_arr[$month1] - $month_arr[$month2] $year2~ ; } elsif ($year1 eq $year2 && $month1 eq $month2 && $day1 ne $day2) { $date_string = qq~ $day1 - $day2 $month_arr[$month2] $year2~ ; } elsif ($year1 eq $year2 && $month1 eq $month2 && $day1 eq $day2) { $date_string = qq~ $day2 $month_arr[$month2] $year2~ ; } my $field_heading = join(" ", map { ucfirst($_) } split(/\_/,$field)) ; our $xlsxheading = "$field_heading Payments Report$xlsreportname$date_string" ; &report_xlsx_export_header("$field_heading Payments$xlsreportname","$field\_payments_report") ; &schedule_payments_load_list_vars("$where_min","$field") ; my @qty_work = () ; my @amnt_usd_work = () ; my @amnt_work = () ; my @op_work = () ; my @description = () ; my @paid_work = () ; my $row_cnt = 0 ; my $first_id = 0 ; my $last_id = 0 ; my %row_cnt_to_id = () ; $fcol = 12 ; my $val_min = 0 ; $row_cnt = 0 ; my $date_pay = qq~~ ; my $quote_and_ops_ids = qq~~ ; my $op_ids = qq~~ ; my ($next_year,$next_month,$next_day) = Add_Delta_Days($now_year,$now_mm,$now_dd,1) ; my $row_cnt = 0 ; my $quote_and_ops_ids = qq~~ ; my %amnt_tots = () ; foreach my $date (sort {$a <=> $b} keys %{$db{$table}}) { my @date_pay = split(/\;/,$db{$table}{$date}{"$field\_paid"}) ; my @amount_pay = split(/\;/,$db{$table}{$date}{"$field\_amounts_paid"}) ; my $date_val = $date ; $date_val =~ s/\-//g ; foreach my $temp_id (sort {$db{users}{$a}{name} cmp $db{users}{$b}{name}} keys %{$operator_count{$date}}) { next if $i{"$field\_id"} && $i{"$field\_id"} ne $temp_id ; next if $temp_id eq 'none' ; my $amnt_owed = ($db{event_cost_items}{1}{rates}) ? $db{event_cost_items}{1}{rates} * $operator_count{$date}{$temp_id} : ($field =~ /calibrator/) ? 500 * $operator_count{$date}{$temp_id} : ($field =~ /monitor/ && $field !~ /troubleshoot/) ? 300 * $operator_count{$date}{$temp_id} : 450 * $operator_count{$date}{$temp_id} ; $amnt_owed += $temp_support_rates{half_day}*$temp_calibrator_support{shift_count}{$date}{$temp_id}{1} ; $amnt_owed += $temp_support_rates{full_day}*$temp_calibrator_support{shift_count}{$date}{$temp_id}{2} ; # $temp_calibrator_support{count}{$date}{1} += ($abc[1] eq '1') ? 0.5 : 1 ; # $temp_calibrator_support{shift_count}{$date}{1} += 1 ; $amnt_owed = $amnt_owed - $amounts_paid{$date}{$temp_id} ; $amnt_owed = 0 if $amounts_paid{$date}{$temp_id} ; next if $i{paid_status} eq 'outstanding' && $amnt_owed == 0 ; next if $i{paid_status} eq 'paid' && $amounts_paid{$date}{$temp_id} == 0 ; $amnt_owed = sprintf("%0.2f",$amnt_owed) ; $xlsxcol = 0 ; foreach my $col (@sql_col_display) { next unless $col ; # blank for the buttons column $display = 1 ; my $val = '' ; my $align = '' ; my $center = qq~ class="dt-center"~ ; $align = $center ; my $val_min = '' ; if ($col eq 'date') { $val = $date ; } elsif ($col eq "$field\_names") { $val = $db{users}{$temp_id}{name} ; $val .= " [Support]" if $support_user{$temp_id} ; } elsif ($col eq 'shifts_count') { chop $operator_shifts_string{$date}{$temp_id} if $operator_shifts_string{$date}{$temp_id} ; my $shifts_cnt = $operator_count{$date}{$temp_id} + $temp_calibrator_support{count}{$date}{$temp_id}{1} + $temp_calibrator_support{count}{$date}{$temp_id}{2} ; $val_min = "$shifts_cnt" ; $val_min .= " [$operator_shifts_string{$date}{$temp_id}]" if $operator_shifts_string{$date}{$temp_id} ; $operator_shifts_string{$date}{$temp_id} =~ s/\;/\
/g ; $val = ($operator_shifts_string{$date}{$temp_id}) ? qq~$shifts_cnt~ : $shifts_cnt ; # $val = $operator_shifts{$date}{$temp_id} } elsif ($col eq 'dates_paid') { foreach (sort keys %{$dates_amounts_paid{$temp_id}}) { $val .= ($val) ? qq~
$_~ : qq~$_~ ; } $val = "None" unless $val ; $val_min = $val ; $val_min =~ s/\
/\;/g ; $val = qq~~ if $val =~ /
/ ; } elsif ($col eq 'amounts_paid') { foreach (sort keys %{$dates_amounts_paid{$temp_id}}) { $dates_amounts_paid{$temp_id}{$_} = sprintf("%0.2f",$dates_amounts_paid{$temp_id}{$_}) ; $val .= ($val) ? qq~
$dates_amounts_paid{$temp_id}{$_}~ : qq~$dates_amounts_paid{$temp_id}{$_}~ ; $amnt_tots{"amounts_paid"} += $dates_amounts_paid{$temp_id}{$_} ; } $val = "None" unless $val ; $val_min = $val ; $val_min =~ s/\
/\;/g ; $val = qq~~ if $val =~ /
/ ; } elsif ($col eq 'date_payable') { my $date_payable = "$now_year-$now_mm-$now_dd" ; $val = ($amnt_owed != 0) ? &common_min_form_input_col("date_$temp_id\_$date_val",$date_payable) : "N/A" ; $val_min = ($amnt_owed != 0) ? $date_payable : "N/A" ; } elsif ($col eq 'amount_payable') { #dates_amounts_paid $count_outstanding++ if $amnt_owed > 0 ; $amnt_tots{"amount_payable"} += $amnt_owed ; $val = ($amnt_owed != 0) ? &common_min_form_input_col("amount_payble_$temp_id\_$date_val",$amnt_owed) : "None" ; $val_min = $amnt_owed ; } elsif ($col eq 'paid') { $val = ($amnt_owed != 0) ? &common_min_form_checkbox_col("paid_$temp_id\_$date_val",0) : '' ; $val_min = ($amnt_owed != 0) ? "No" : "Yes" ; } elsif ($col eq 'all_paid') { $val = ($amnt_owed != 0) ? '' : '' ; $val_min = ($amnt_owed != 0) ? "No" : "Yes" ; } $val_min = $val if $col eq 'date' || $col eq "$field\_names" ; &xlsxcreator_write_xlsx($ws,$xlsxrow,$xlsxcol,$val_min,$format_management_report_data) if $col ne 'shifts_count' ; &xlsxcreator_write_xlsx($ws,$xlsxrow,$xlsxcol,$val_min,$format_management_report_data_ref_nr) if $col eq 'shifts_count' ; $xlsxcol++ ; # if ($_ eq 'ref_nr' or $_ eq 'camera_nr') { $val = &common_camera_links($tables,$id,$val) ;} $print_tbody .= qq~$val~ ; } $print_tbody .= qq~~ ; $xlsxrow++ ; $row_cnt++ ; $quote_and_ops_ids .= qq~"$row_cnt\_$temp_id":"$date_val",~ ; } # chop $op_ids if $op_ids ; # $quote_and_ops_ids .= qq~"$row_cnt_$id":[$op_ids],~ if $op_ids ; } my $col_cnt = 0 ; foreach my $col (@sql_col_display) { if ($col eq 'date') { &xlsxcreator_write_xlsx($ws,$xlsxrow,$col_cnt,"TOTALS",$format_management_report_total) ; } elsif ($col eq "amounts_paid" || $col eq "amount_payable") { &xlsxcreator_write_xlsx($ws,$xlsxrow,$col_cnt,"$amnt_tots{$col}",$format_management_report_totals) ; } else { &xlsxcreator_write_xlsx($ws,$xlsxrow,$col_cnt,"-",$format_management_report_totals) ; } $col_cnt++ ; } chop $quote_and_ops_ids if $quote_and_ops_ids ; # $print_tbody .= qq~~ ; # $print_tbody .= qq~~ ; $worksheet{$ws} -> set_column(0,0,15) ; $worksheet{$ws} -> set_column(1,1,25) ; $worksheet{$ws} -> set_column(2,7,20) if $i{paid_status} eq 'all' ; $worksheet{$ws} -> set_column(2,5,20) if $i{paid_status} ne 'all' ; $box_icon .= qq~
~ if $i{paid_status} ne 'paid' && $count_outstanding > 0 ; &report_xlsx_export_footer('L',15,"$field\_payments_report") ; $fnsortcol = 0; $fnsortorder = 'asc' ; &common_min_extra_crumb("$lcpage\s","Search Screen") ; $trigger_jquery_raw .= qq~ function selectAll() { let jsObject = { $quote_and_ops_ids } ; for (let key in jsObject) { let op_id = jsObject[key] ; let parts = key.split("_") ; let event_id = parts[1] ; \$(\$("#itv-table").dataTable().fnGetNodes()).find(\$("input[name=paid_"+event_id+"_"+op_id+"]")).each(function () { // console.log("input[name=paid_"+event_id+"_"+op_id+"]") ; if(\$(this).is(':checked')) { \$(this).prop('checked',false) ; } else { \$(this).prop('checked',true) ; } }) ; } } ~; my $field_id = "#$field2\-payment-form" ; # my $savebuttjs = ($count_outstanding > 0) ? qq~$("$field_id").submit();' : 'noty({text:"There are no calibrators to pay!",layout:"center",type:"error",timeout:3000});return;~ ; $trigger_jquery_raw .= qq~ \$("#savebutt").click(function() { // $savebuttjs \$("$field_id").submit(); }) ; ~ ; $fcol = 2 ; $print_box_content_rows .= qq~
~ ; $print_box_content_rows .= &common_min_form_input_col("date_from",$i{date_from}) ; #date_from_i_field $print_box_content_rows .= &common_min_form_input_col("date_to",$i{date_to}) ; #date_to_i_field $print_box_content_rows .= &common_min_form_input_col("$field\_id",$i{"$field\_id"}) ; #temp_calibrator_id_i_field $print_box_content_rows .= &common_min_form_input_col("$field\s_paid",$i{"$field\s_paid"}) ; $print_box_content_rows .= qq~
~ ; $print_box_content_rows .= &common_min_forms_start("$field2\-payment") if $count_outstanding ; } #------------------------------------------------------------------------------------------ sub schedule_payments_load_list_vars { my ($where,$field) = @_ ; my $users_sql = ($field =~ /calibrator/) ? "`user_type` = 'casual_calibrator' OR `user_type` = 'support'" : "" ; &db_min_ro('users','id,name',"$users_sql",'','') ; &db_min_ro($table,"date,$field\_ids,$field\_dates_paid,$field\_amounts_paid,temp_calibrator_support_shifts","`date`>='$i{date_from}' AND `date`<='$i{date_to}' $where",'','') ; # &db_min_ro('shift_monitor_ids','date,monitor_ids',"`date`>='$i{date_from}' AND `date`<='$i{date_to}' $where",'','') ; our %operator_count = () ; our %amounts_paid = () ; our %dates_amounts_paid = () ; our %operator_shifts_string = () ; # my @monitor_shifts = ("","08:00-11:00","11:00-14:00","14:00-17:00","17:00-21:00") ; my @operator_shifts = ($field =~ /calibrator/) ? ("","07:00-10:00","10:00-13:00","13:00-16:00","16:00-19:00") : ("","08:00-11:00","11:00-14:00","14:00-17:00","17:00-21:00") ; foreach my $date (keys %{$db{$table}}) { my $shift_cnt = 0 ; foreach my $shift (split(/\|/,$db{$table}{$date}{"$field\_ids"})) { $shift_cnt++ ; next unless $shift ; foreach my $temp_id (split(/\;/,$shift)) { next unless $temp_id ; $operator_count{$date}{$temp_id} += 1 ; $operator_shifts_string{$date}{$temp_id} .= qq~$operator_shifts[$shift_cnt];~ ; } } $shift_cnt = 0 ; # foreach my $shift (split(/\|/,$db{$table}{$date}{monitor_ids})) { # $shift_cnt++ ; # next unless $shift ; # foreach my $temp_id (split(/\;/,$shift)) { # next unless $temp_id ; # $operator_count{$date}{$temp_id} += 1 ; # $operator_shifts{$date}{$temp_id} .= qq~$monitor_shifts[$shift_cnt],~ ; # } # } my @date_pay = split(/\;/,$db{$table}{$date}{"$field\_dates_paid"}) ; my @amount_pay = split(/\;/,$db{$table}{$date}{"$field\_amounts_paid"}) ; my $cnt = 0 ; foreach my $temp_id_amnt (@amount_pay) { my @temp_amnt = split(/\:/,$temp_id_amnt) ; $amounts_paid{$date}{$temp_amnt[0]} += $temp_amnt[1] ; $dates_amounts_paid{$temp_amnt[0]}{$date_pay[$cnt]} += $temp_amnt[1] ; $cnt++ ; } if ($temp_calibrator_payments_report && $db{$table}{$date}{temp_calibrator_support_shifts}) { foreach my $shift (split(/\|/,$db{$table}{$date}{temp_calibrator_support_shifts})) { $shift_cnt++ ; next unless $shift ; my @abc = split(/\:/,$shift) ; next unless $abc[0] ; $operator_count{$date}{$abc[0]} += 0 ; # $operator_count{$date}{$abc[0]} += ($abc[1] eq '1') ? 0.5 : 1 ; $temp_calibrator_support{count}{$date}{$abc[0]}{$abc[1]} += ($abc[1] eq '1') ? 0.5 : 1 ; $temp_calibrator_support{shift_count}{$date}{$abc[0]}{$abc[1]} += 1 ; $operator_shifts_string{$date}{$abc[0]} .= ($abc[1] eq '1') ? qq~Half Day (<7 hours);~ : qq~Full Day (7 hours+);~ ; $support_user{$abc[0]} = 1 ; } } } } #------------------------------------------------------------------------------------------ sub schedule_payments_report_screen { my ($field) = @_ ; our $lcol = 3 ; our $fcol = 5 ; $print_box_content_rows .= &common_min_forms_start('report') ; &common_min_select_opts("$field\_id",'users',"name",$i{"$field\_id"},'','',"`name` NOT LIKE 'Rory%' AND `name` NOT LIKE 'Handre%'") ; # &common_min_select_opts('event_quote_id','event_quotes',"ref",$i{event_quote_id},'','',"") ; $first_day_month = sprintf("%02d",$first_day_month) ; $first_day = sprintf("%02d",$first_day) ; $print_box_content_rows .= &common_min_form_datepicker('date_from',"$now_year-$now_mm-01") unless $i{date_from} ; my $days_in_month = Days_in_Month($now_year,$now_mm) ; $print_box_content_rows .= &common_min_form_datepicker('date_to',"$now_year-$now_mm-$days_in_month") ; # my ($sql_next_day) = &common_add_delta_days(1) ; # my ($next_year,$next_month,$next_day) = split(/\-/,$sql_next_day) ; # $print_box_content_rows .= &common_min_form_datepicker('date',"$next_year-$next_month-$next_day") ; #unless $i{date_from} ; $opts{paid_status} .= qq~~ ; $opts{paid_status} .= qq~~ ; $opts{paid_status} .= qq~~ ; $print_box_content_rows .= &common_min_form_select("$field\_id",'') ; # $print_box_content_rows .= &common_min_form_select('event_quote_id','') ; $print_box_content_rows .= &common_min_form_select('paid_status','') ; $print_box_content_rows .= &common_min_forms_end('','','report') ; &common_min_search_screen ; } #------------------------------------------------------------------------------------------ sub schedule_update_monitor_reports { my @table_sql_where = () ; if ($i{client_id}) { push @table_sql_where, "`quote_to`='$i{client_id}'" ; } if ($i{date_from} && $i{date_to}) { # check dates push @table_sql_where, "(('$i{date_from} 00:00:00' <= `date_from` AND `date_from` <= '$i{date_to} 23:59:59') OR ('$i{date_from} 00:00:00' <= `date_to` AND `date_to` <= '$i{date_to} 23:59:59') OR (`date_from` <= '$i{date_from} 00:00:00' AND '$i{date_to} 23:59:59' <= `date_to`))" ; ############################################### > OR >= } # if ($i{monitor_id} and $i{monitor_id} ne 'all') { # push @table_sql_where,"`MONITOR` = '$db{users}{1}{name}'" ; # } # if ($i{monitor_id} and $i{monitor_id} ne 'all') { # push @table_sql_where,"`TROUBLESHOOT MONITOR` = '$db{users}{1}{name}'" ; # } my $table_sql_where_str = join(" AND ",@table_sql_where) ; &db_min_ro($table,"id,monitor_report_saved_data","$table_sql_where_str",'','') ; my %saved_field_hash = () ; foreach my $id (keys %{$db{$table}}) { # my @saved_data_split_1 = split(/\-/,$db{$table}{$id}{monitor_report_saved_data}) ; my @saved_data_split_1 = split /-(?=\d+=(?:blank\||f:\d+|s:\d+|c:))/, $db{$table}{$id}{monitor_report_saved_data}; foreach my $a (@saved_data_split_1) { # my @saved_data_split_2 = split(/\=/,$a) ; my @saved_data_split_2 = () ; if ($a =~ /^(\d+|none)=(.*)$/) { @saved_data_split_2 = ($1, $2); } else { @saved_data_split_2 = ($a); } my $event_sys_id = $saved_data_split_2[0] ; # my @saved_data_split_3 = split(/\|/,$saved_data_split_2[1]) ; # my @saved_data_split_3 = split /\|(?=(?:blank\|f:\d+|blank\|s:\d+|blank\|c:|f:\d+|s:\d+|c:))/, $saved_data_split_2[1]; my @saved_data_split_3 = split( /\| (?= # Look ahead for allowed patterns # blank$ # 1) blank + end blank\|s:\d+ # 2) blank|s: | blank\|f:\d+ # 3) blank|f: | blank\|c: # 4) blank|c: | f:\d+ # 5) f: | s:\d+ # 6) s: | c: # 7) c: | blank\|blank\| # 8) blank|s: ) /x, $saved_data_split_2[1] ); my $day_cnt = 0 ; foreach my $b (@saved_data_split_3) { $day_cnt++ ; next if !$b || $b eq 'blank' ; $b =~ s/\|/\pipe_in_comment_to_be_removed/g ; $saved_field_hash{$id}{$event_sys_id}{$day_cnt} = $b ; } } } foreach my $field_name (keys %i) { next if ($field_name =~ /update_event/ && !$i{$field_name}) || $field_name !~ /update_event/ ; my @fields = split(/\_/,$field_name) ; my $system_id = substr($fields[-3],5) ; my $day_cnt = $fields[-2] ; my $event_id = $fields[-1] ; my $fixture_field = "fixture_check_event$system_id\_$day_cnt\_$event_id" ; my $status_field = "status_event$system_id\_$day_cnt\_$event_id" ; my $comments_field = "comments_event$system_id\_$day_cnt\_$event_id" ; $saved_field_hash{$event_id}{$system_id}{$day_cnt} = qq~~ ; $saved_field_hash{$event_id}{$system_id}{$day_cnt} = ($i{$fixture_field}) ? qq~f:$i{$fixture_field};~ : qq~~ ; $saved_field_hash{$event_id}{$system_id}{$day_cnt} .= ($i{$status_field}) ? qq~s:$i{$status_field};~ : qq~~ ; $saved_field_hash{$event_id}{$system_id}{$day_cnt} =~ s/;+$//g unless $i{$comments_field} ; $i{$comments_field} =~ s/\|/\pipe_in_comment_to_be_removed/g ; $saved_field_hash{$event_id}{$system_id}{$day_cnt} .= qq~c:$i{$comments_field}~ if $i{$comments_field} ; } %ii = %i ; %i = () ; foreach my $event_id (keys %saved_field_hash) { $i{monitor_report_saved_data} = qq~~ ; foreach my $system_id (sort { $a <=> $b } keys %{$saved_field_hash{$event_id}}) { # $i{monitor_report_saved_data} .= qq~$system_id\=~ ; my $saved_by_system = qq~~ ; foreach my $day_max (sort { $b <=> $a } keys %{$saved_field_hash{$event_id}{$system_id}}) { for my $day_cnt (1 .. $day_max) { # $saved_field_hash{$event_id}{$system_id}{$day_cnt} =~ s/;+$//g ; $saved_by_system .= qq~$saved_field_hash{$event_id}{$system_id}{$day_cnt}|~ ; } # chop $saved_by_system if $day_max ; $saved_by_system =~ s/\|+$//g ; last ; } if ($saved_by_system =~ /\||/) { $saved_by_system =~ s/\|(?=\|)/|blank/g ; } if ($saved_by_system =~ /^\|/) { $saved_by_system =~ s/^\|/blank|/g ; } # if ($saved_by_system =~ /\|$/) { # $saved_by_system =~ s/\|$/|blank/; # } $saved_by_system =~ s/pipe_in_comment_to_be_removed/\|/g ; $i{monitor_report_saved_data} .= qq~$system_id\=$saved_by_system\-~ if $saved_by_system ; } chop $i{monitor_report_saved_data} if $i{monitor_report_saved_data} ; next if ($i{monitor_report_saved_data} eq $db{$table}{$event_id}{monitor_report_saved_data}) || (!$i{monitor_report_saved_data} && !$db{$table}{$event_id}{monitor_report_saved_data}) ; &db_min_upd($table,"id='$event_id'") ; } %i = %ii ; } #------------------------------------------------------------------------------------------ sub schedule_get_monitor_reports_default_values { our %default_values = () ; # 12=f:;s:|s:1;t:1|f:2;s:2-13=|f:3;s:3|f:4;s:4 foreach my $id (keys %{$db{$table}}) { # $db{$table}{$id}{monitor_report_saved_data} = "12=f:1;s:1|s:1;t:1|f:2;s:2;c:1|-23-123=f2-13=blank|f:3;s:3|f:4;s:4-133=blank|blank|f:3;s:3|f:4;s:4-1232=c:as" ; # next if $id eq '5136' ; # my @saved_data_split_1 = split /\-(?=\d+=[\f:\d+|\s:\d+|\c:|blank\|])/x, $db{$table}{$id}{monitor_report_saved_data}; my @saved_data_split_1 = split /-(?=\d+=(?:blank\||f:\d+|s:\d+|c:))/, $db{$table}{$id}{monitor_report_saved_data} ; ## split on "-" if and only if it it is followed by an integer = blank or f:integer or s:integer or c: foreach my $a (@saved_data_split_1) { # my @saved_data_split_2 = split /(?<=^(\d+))=/, $a; my @saved_data_split_2 = () ; $a =~ s/[\n\r]+/_new_line_character_/g if $a ; if ($a =~ /^(\d+|none)=(.*)$/) { @saved_data_split_2 = ($1, $2); } else { @saved_data_split_2 = ($a); } # my @saved_data_split_2 = split(/(?<=^\d+)=/,$a) ; my $event_sys_id = $saved_data_split_2[0] ; # my $remaining_data = join(";", @saved_data_split_3[3 .. $#saved_data_split_3]) ; # my @saved_data_split_3 = split(/\|/,$saved_data_split_2[1]) ; # my @saved_data_split_3 = split /(?<=^(?:f:(\d+)|s:(\d+)|f:|s:|c:|blank))\|(?=(?:f:|s:|c:|blank))/x, $saved_data_split_2[1]; my @saved_data_split_3 = () ; # while ($saved_data_split_2[1] =~ /\G((?:f:(\d+)|s:(\d+)|f:|s:|c:|blank)?)\|(?=(?:f:|s:|c:|blank|$))/xg) { # push @saved_data_split_3, $1; # } # my $final_element = $saved_data_split_2[1] ; # foreach (@saved_data_split_3) { # $final_element =~ s/^$_\|//g ; # } # push @saved_data_split_3, $final_element ; # $saved_data_split_2[1] = "blank|s:3|s:3|s:3|blank|blank" ; # my @saved_data_split_3 = split(/\|(?=(?:+$|blank\|+$|blank\|blank|blank\|f:\d+|blank\|s:\d+|blank\|c:|f:\d+|s:\d+|c:))/, "$saved_data_split_2[1]") ; my @saved_data_split_3 = split( /\| (?= # Look ahead for allowed patterns # blank$ # 1) blank + end blank\|s:\d+ # 2) blank|s: | blank\|f:\d+ # 3) blank|f: | blank\|c: # 4) blank|c: | f:\d+ # 5) f: | s:\d+ # 6) s: | c: # 7) c: | blank\|blank\| # 8) blank|s: ) /x, $saved_data_split_2[1] ); my $day_cnt = 0 ; foreach my $b (@saved_data_split_3) { $day_cnt++ ; next if !$b || $b eq 'blank' ; # $b =~ s/\;+$//g ; my @saved_data_split_3 = split(/\;/,$b) ; my @saved_data_split_4 = ($saved_data_split_3[0]) ? split(/\:/,$saved_data_split_3[0]) : () ; my @saved_data_split_5 = ($saved_data_split_3[1]) ? split(/\:/,$saved_data_split_3[1]) : () ; my @saved_data_split_6 = ($saved_data_split_3[2]) ? split(/\:/,$saved_data_split_3[2]) : () ; if ($saved_data_split_3[0] =~ /^f:\d+/) { $default_values{$sql_col_display[-4]}{$event_sys_id}{$day_cnt}{$id} = $saved_data_split_4[1] ; } if ($saved_data_split_3[0] =~ /^s:\d+/) { $default_values{$sql_col_display[-3]}{$event_sys_id}{$day_cnt}{$id} = $saved_data_split_4[1] ; } elsif ($saved_data_split_3[1] =~ /^s:\d+/ && $saved_data_split_3[0] =~ /^f:\d+/) { $default_values{$sql_col_display[-3]}{$event_sys_id}{$day_cnt}{$id} = $saved_data_split_5[1] ; } my $comments_after_semicolon = "" ; ## In case the comments contain a ; when we split on ; my $comments_before_semicolon = "" ; ## In case the comments contain a ; when we split on ; if ($saved_data_split_3[0] =~ /^c:/) { $comments_after_semicolon = join(";", @saved_data_split_3[1 .. $#saved_data_split_3]) ; $comments_before_semicolon = $saved_data_split_4[1] . join(":", @saved_data_split_4[2 .. $#saved_data_split_4]) ; # $default_values{$sql_col_display[-2]}{$event_sys_id}{$day_cnt}{$id} = $saved_data_split_4[1] . join(":", @saved_data_split_4[2 .. $#saved_data_split_4]) ; } elsif ($saved_data_split_3[1] =~ /^c:/ && ($saved_data_split_3[0] =~ /^f:\d+/ || $saved_data_split_3[0] =~ /^s:\d+/)) { $comments_after_semicolon = join(";", @saved_data_split_3[2 .. $#saved_data_split_3]) ; $comments_before_semicolon = $saved_data_split_5[1] . join(":", @saved_data_split_5[2 .. $#saved_data_split_5]) ; # $default_values{$sql_col_display[-2]}{$event_sys_id}{$day_cnt}{$id} = $saved_data_split_5[1] . join(":", @saved_data_split_5[2 .. $#saved_data_split_5]) ; } elsif ($saved_data_split_3[2] =~ /^c:/ && $saved_data_split_3[1] =~ /^s:\d+/ && $saved_data_split_3[0] =~ /^f:\d+/) { $comments_after_semicolon = join(";", @saved_data_split_3[3 .. $#saved_data_split_3]) ; $comments_before_semicolon = $saved_data_split_6[1] . join(":", @saved_data_split_6[2 .. $#saved_data_split_6]) ; # $default_values{$sql_col_display[-2]}{$event_sys_id}{$day_cnt}{$id} = $saved_data_split_6[1] . join(":", @saved_data_split_6[2 .. $#saved_data_split_6]) ; } $comments_before_semicolon =~ s/_new_line_character_/\n/g ; $comments_after_semicolon =~ s/_new_line_character_/\n/g ; $default_values{$sql_col_display[-2]}{$event_sys_id}{$day_cnt}{$id} .= "$comments_before_semicolon" ; $default_values{$sql_col_display[-2]}{$event_sys_id}{$day_cnt}{$id} .= ";$comments_after_semicolon" if $comments_after_semicolon || $b =~ /c:;+$/ ; } } } } #------------------------------------------------------------------------------------------ 1 ;