#!/usr/bin/perl BEGIN { use lib '/usr/home/cfg' ; require push_inc ; } require cfg ; print "Content-type: text/html\n\n"; # unless ($useropts{it}{$username}) { print "<<<<<<<<<<<< MAINTENANCE IN PROGRESS >>>>>>>>>" ; exit ; } #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- use CGI::Carp qw(fatalsToBrowser); use CGI; use Mail::Sendmail; use Fcntl qw(:flock); use File::Copy; use File::Basename; use Date::Calc qw(:all); use Excel::Writer::XLSX; &today; #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- @ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'}); $action = $ARGV[0] ; our ($q) = CGI -> new() ; our $iaction = $q -> param('iaction') || $action ; our $isaved = $q -> param('isaved') || '' ; our $debug = 1 ; # -------- page opts -------------------------------------------------------------------------------------------------------------------------------------------------- &page_opts ; # --------------------------------------------------------------------------------------------------------------------------------------------------------------------- our $srchscr = 1 ; &db_open_ro ; our $db_ignore_open_close = 1 ; # do one open and one close instead of repeating it &report_screen if $iaction eq '' ; # if ($iaction eq 'report') { # &common_min_load_params ; # &report_ifields; # &list_screen ; # &screen3; # } # if ($iaction eq 'save') { # &common_min_load_params ; # &update ; # &report_ifields; # &list_screen ; # &screen3; # # &report_ifields; # # &list_screen ; # # &common_min_screen3; # } # if ($iaction eq 'paid') { # &set_to_paid ; # &list_screen ; # &common_min_screen3; # } &common_min_action; $db_ignore_open_close = 0 ; # do one open and one close instead of repeating it &db_close_conn ; exit; #------------------------------------------------------------------------------------------ # sub set_to_paid { # my ($where) = @_ ; # &db_min_ro($table,'*',"$where",'','') ; # my @ids = () ; # foreach (keys %{$db{$table}}) { # push @ids,"`id`='$_'" ; # } # my $ids_sql = join (" OR ",@ids) ; # %i = () ; # for (1 .. 50) { # $i{paid_workings_event} .= qq~1;~ ; # } # chop $i{paid_workings_event} if $i{paid_workings_event} ; # # &db_min_upd('event_quotes_min',"$ids_sql") ; # &common_debug("UPDATE event_quotes_min SET paid_workings_event = $i{paid_workings_event} WHERE $ids_sql") ; # # &db_min_ro('event_quotes_min','id,paid_workings_event',"$ids_sql",'','') ; # # foreach my $id (sort {$a <=> $b} keys %{$db{$table}}) { # # @paid_work = split(";", $db{event_quotes_min}{$id}{paid_workings_event}) ; # ???? # # %i = () ; # # foreach (@paid_work) { # # $i{paid_workings_event} .= qq~1;~ ; # # } # # chop $i{paid_workings_event} if $i{paid_workings_event} ; # # &db_min_upd('event_quotes_min',"`id`='$id'") ; # # } # } #------------------------------------------------------------------------------------------ # sub update { # my %iii = %i ; # my %ii = () ; # local $min_id = 0 ; local $max_id = 0 ; # foreach (sort keys %i) { # local $cell_name = $_ ; # local @a = split("_") ; # next if $a[-2] ne int($a[-2]) ; # $ii{$a[-2]}{operator_dates_paid} .= qq~$i{$_};~ if $a[0] eq 'date' ; # $ii{$a[-2]}{operator_amounts_paid} .= qq~$i{$_}~ if $a[0] eq 'amount' and $i{"paid_$a[-2]\_$a[-1]"} and $i{"amount_payble_$a[-2]\_$a[-1]"} ; # $ii{$a[-2]}{operator_amounts_paid} .= qq~0.00~ if $a[0] eq 'amount' and $i{"paid_$a[-2]\_$a[-1]"} and not $i{"amount_payble_$a[-2]\_$a[-1]"} ; # $ii{$a[-2]}{operator_amounts_paid} .= qq~;~ if $a[0] eq 'amount' ; # $min_id = $a[-2] if ($min_id and $a[-2] < $min_id) or not $min_id ; # $max_id = $a[-2] if $a[-2] > $max_id ; # } # # &db_common_ro('event_quotes_min',"id,operator_dates_paid,operator_dates_paid","`id` <= '$max_id' AND `id` >= '$min_id'",'','') ; # &common_debug("SELECT id,operator_dates_paid,operator_dates_paid FROM event_quotes_min WHERE `id` <= '$max_id' AND `id` >= '$min_id'") ; # foreach my $id (sort keys %ii) { # %i = () ; # $i{operator_dates_paid} = '' ; # $i{operator_amounts_paid} = '' ; # $i{operator_dates_paid} = $ii{$id}{operator_dates_paid} ; # $i{operator_amounts_paid} = $ii{$id}{operator_amounts_paid} ; # chop $i{operator_dates_paid} if $i{operator_dates_paid} ; # chop $i{operator_amounts_paid} if $i{operator_amounts_paid} ; # $i{operator_dates_paid} = '' if $ii{$id}{operator_dates_paid} eq $db{event_quotes_min}{$id}{operator_dates_paid} ; # $i{operator_amounts_paid} = '' if $ii{$id}{operator_amounts_paid} eq $db{event_quotes_min}{$id}{operator_amounts_paid} ; # # &db_min_upd("event_quotes_min","id='$id'") if $i{operator_dates_paid} or $i{operator_amounts_paid} ; # &common_debug("UPDATE event_quotes_min SET operator_dates_paid = $i{operator_dates_paid},operator_amounts_paid = $i{operator_amounts_paid} WHERE id = '$id'") if $i{operator_dates_paid} or $i{operator_amounts_paid} ; # } # %i = %iii ; # # operator_dates_paid, operator_amounts_paid # } #------------------------------------------------------------------------------------------ sub report_ifields { &load_search_vars ; # if ($i{camera_system_id} and $i{camera_system_id} ne 'main' and $i{camera_system_id} ne 'other' and $i{camera_system_id} ne 'all') { # push @report_sql, "(`camera_system_id`='$i{camera_system_id}')" ; # push @report_results, "camera_system = $camera_system{$i{camera_system_id}}" ; # $xlsreportname .= '-' . $i{camera_id} ; # # our $acc_id_sql_where = "`camera_id`='$i{camera_id}'" # } elsif ($i{camera_system_id} eq 'main' or $i{camera_system_id} eq 'other' or $i{camera_system_id} eq 'all') { # push @report_results, "camera_system = $i{camera_system_id}" ; # } 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(CAMERAS FROM ($i{date_from}) > CAMERAS TO ($i{date_to})); &report_screen; } } # $i{date_from} = $i{date_from_i_field} if $i{date_from_i_field} ; # $i{date_to} = $i{date_to_i_field} if $i{date_to_i_field} ; # $i{operator_id} = $i{operator_id_i_field} if $i{operator_id_i_field} ; if ($i{date_from}) { # push @report_sql, "(`date_active` >= '$i{date_from}')" ; # push @report_results, "date_active >= $i{date_from}" ; push @report_sql, "(`quote_date` >= '$i{date_from} 00:00:00')" ; push @report_results, "date_time >= $i{date_from}" ; } if ($i{date_to}) { # push @report_sql, "(`date_active` <= '$i{date_to}')" ; # push @report_results, "date_active <= $i{date_to}" ; push @report_sql, "(`quote_date` <= '$i{date_to} 23:59:59')" ; push @report_results, "date_time <= $i{date_to}" ; } # if ($i{client_id}) { # # push @report_sql, "(`client_id` = '$i{client_id}')" ; # push @report_results, "Client = $client{$i{client_id}}" ; # } our $where2 = qq~~ ; if ($i{operator_id}) { $where2 = "operator_workings_event LIKE '%;$i{operator_id}%' OR operator_workings_event LIKE '%$i{operator_id};%'" ; push @report_results, "OPERATOR = $db{users}{1}{name}" ; } if ($i{event_quote_id}) { &db_min_ro('event_quotes','1,ref',"`id`='$i{event_quote_id}'",'','') ; push @report_sql, "(`id` = '$i{event_quote_id}')" ; push @report_results, "EVENT QUOTE = $db{event_quotes}{1}{ref}" ; } # if ($i{operators_paid}) { # push @report_sql2, "`operator_amounts_paid` NOT LIKE '%;;%'" ; # push @report_sql2, "`operator_amounts_paid` != ';'" ; # push @report_sql2, "`operator_amounts_paid` IS NOT NULL" ; # push @report_results, "OPERATOR ARE ALL PAID" ; # } # if ($i{stock}) { # push @report_results, "Stock = $i{stock}" ; # } $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 load_search_vars { if ($i{operator_id}) { &db_min_ro('users','1,name',"`id` = '$i{operator_id}'",'','') ; } # if ($i{client_id}) { # my $customers_sql_where = "`id`='$i{client_id}'" ; # &db_min_ro('customers','*',$customers_sql_where,'','') ; # foreach my $id (keys %{$db{customers}}) { # $client{$id} = $db{customers}{$id}{name} ; # } # } } #------------------------------------------------------------------------------------------ sub list_screen { # $print_box_content_rows .= &common_min_forms_start('report') ; # $print_box_content_rows .= &common_min_forms_start('invoice') ; my $srch_where_sql = join(' AND ', @report_sql) ; my $srch_where_sql2 = join(' AND ', @report_sql2) ; my $add_sql_where = '' ; # our @sql_col_display = ("id","camera_nr","camera_serial_nr","date_received","amount_usd","amount_zar","in_stock") ; our @sql_col_display = ("event_quote_nr","operator_names","event_name","event_date_from","event_date_to","description","amount","date_paid","amount_paid") ; my $table_colspan = 0 ; foreach (@sql_col_display) { $table_colspan += 1 ; } &report_xls_export_header("Operators_Report$xlsreportname",'operators_report') ; &load_list_vars("$srch_where_sql$add_sql_where","$where2","$srch_where_sql2") ; my $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 = 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("operator_id",$i{operator_id}) ; #operator_id_i_field $print_box_content_rows .= &common_min_form_input_col("event_quote_id",$i{event_quote_id}) ; # $print_box_content_rows .= &common_min_form_input_col("operators_paid",$i{operators_paid}) ; $print_box_content_rows .= qq~
~ ; $fcol = 12 ; my $val_min = 0 ; $row_cnt = 0 ; my $ttl_light_blue = $workbook->set_custom_color(11,'#71919B'); my $total_format_1 = $workbook -> add_format() ; $total_format_1 -> copy($format_management_report_data_ref_nr) ; $total_format_1 -> set_num_format('#,##0.00'); $total_format_1 -> set_bold() ; $total_format_1 -> set_bg_color($ttl_light_blue); $total_format_1 -> set_color('white') ; $total_format_1 -> set_size(11) ; my $total_format_2 = $workbook -> add_format() ; $total_format_2 -> copy($format_management_report_months) ; $total_format_2 -> set_bold() ; $total_format_2 -> set_bg_color($ttl_light_blue); $total_format_2 -> set_color('white') ; $total_format_2 -> set_size(11) ; foreach my $id (sort {$a <=> $b} keys %{$db{$table}}) { if ($i{client_id}) { next unless $client{$i{client_id}} eq $quote_customer{$id} ; } next unless $db{event_quotes_min}{$id}{operator_dates_paid} ; # if ($i{operators_paid}) { # next unless $operator_all_paid{$_} ; # } $cnt_in_stock = -1 ; my $in_stock = "" ; @date_pay = split(";",$db{event_quotes_min}{$id}{operator_dates_paid}) ; @amount_pay = split(";",$db{event_quotes_min}{$id}{operator_amounts_paid}) ; my %operator_paid_details = () ; my $cnt = 0 ; foreach (@amount_pay) { my @c = split(":",$_) ; $operator_paid_details{$c[0]}{$date_pay[$cnt]}{$cnt} = $c[1] ; $cnt++ ; } # @paid = split(";",$db{event_quotes_min}{$id}{amount_is_paid_workings_event}) ; @qty_work = split(";", $db{event_quotes_min}{$id}{qty_workings_event}) ; @amnt_usd_work = split(";", $db{event_quotes_min}{$id}{amount_usd_workings_event}) ; @amnt_work = split(";", $db{event_quotes_min}{$id}{amount_workings_event}) ; @op_work = split(";", $db{event_quotes_min}{$id}{operator_workings_event}) ; @paid_work = split(";", $db{event_quotes_min}{$id}{paid_workings_event}) ; # ???? @description = split(";", $db{event_quotes_min}{$id}{description_workings_event}) ; my %cnt_to_op = () ; $cnt = 0 ; foreach (@op_work) { $cnt++ ; $cnt_to_op{$_}{$cnt} = 1 ; } # &common_debug("NEW: $id, $db{event_quotes_min}{$id}{qty_workings_event}") ; $first_id = $id unless $first_id ; $last_id = $id if $last_id < $id ; my %amnt_tot = () ; my $amnt_paid_tot = 0 ; foreach my $op_id (sort keys %cnt_to_op) { next if $i{operator_id} and $i{operator_id} ne $op_id ; foreach my $column_count (sort keys %{$cnt_to_op{$op_id}}) { # $field = "operator_$column_count\_workings_event" ; $xlscol = 0 ; # next if not $db{$table}{$id}{$field} ; next unless $op_work[$column_count - 1] ; # &common_debug("OP: $id, $db{$table}{$id}{$field}, $op_work[$column_count - 1]") ; $print_tbody .= qq~~ ; # $row_cnt++ ; foreach (@sql_col_display) { next unless $_ ; # blank for the buttons column $display = 1 ; my $val = $db{$table}{$id}{$_} ; my $align = '' ; my $center = qq~ class="dt-center"~ ; $align = $center ; if ($_ eq 'event_date_from' or $_ eq 'event_date_to'){ $db{$table}{$id}{date_from} = substr($db{$table}{$id}{date_from},0,10) ; $db{$table}{$id}{date_to} = substr($db{$table}{$id}{date_to},0,10) ; $val = $db{$table}{$id}{date_from} if $_ eq 'event_date_from' ; $val = $db{$table}{$id}{date_to} if $_ eq 'event_date_to' ; $val = substr($val, 0, 10) ; } elsif ($_ eq 'operator_names') { # $val = $casual_names_from_ids{$db{$table}{$id}{$field}} ; $val = $casual_names_from_ids{$op_work[$column_count - 1]} ; } # elsif ($_ eq 'type') { # # if ($type_a_users{$db{$table}{$id}{$field}}) { # if ($type_a_users{$op_work[$column_count - 1]}) { # # $val = $type_a_users{$db{$table}{$id}{$field}} ; # $val = $type_a_users{$op_work[$column_count - 1]} ; # } else { # # $val = $type_b_users{$db{$table}{$id}{$field}} ; # $val = $type_b_users{$op_work[$column_count - 1]} ; # } # } elsif ($_ eq 'qty') { # # $val = $db{$table}{$id}{"qty_$column_count\_workings_event"} ; # $val = $qty_work[$column_count - 1] ; # } elsif ($_ eq 'amount') { # $val = $db{$table}{$id}{"amount_usd_$column_count\_workings_event"} ; $val = &common_commify($amnt_work[$column_count - 1]) ; $amnt_tot{$op_id} += $amnt_work[$column_count - 1] ; } elsif ($_ eq 'total_amount') { # $val = $db{$table}{$id}{"amount_$column_count\_workings_event"} ; $val = &common_commify($amnt_work[$column_count - 1]) ; } elsif ($_ eq 'event_quote_nr') { my $class = 'info' ; if ($quote_status{$id} == 1) { $class = 'danger' ; } elsif ($quote_status{$id} == 2) { $class = 'success' ; } elsif ($quote_status{$id} == 3) { $class = 'danger' ; } elsif ($quote_status{$id} == 4) { $class = 'warning' ; } $row_cnt++ ; $row_cnt = sprintf("%03d",$row_cnt) ; $val = qq~$row_cnt$id~ ; } # elsif ($_ eq 'availablity') { # if ($availability{$id}{$db{$table}{$id}{$field}} eq "Available" ) { # $val = qq~2~ ; # # $val .= $availability{$id}{$db{$table}{$id}{$field}} ; # } elsif ($availability{$id}{$db{$table}{$id}{$field}} eq "Not Available" ) { # $val = qq~0 ~ ; # # $val .= $availability{$id}{$db{$table}{$id}{$field}} ; # } # else { # $val = qq~~ ; # # $val .= "No Response" ; # } # } elsif ($_ eq 'date_paid') { # if ($date_pay[$column_count - 1]) { # $val = &common_min_form_input_col("date_$id\_$row_cnt",$date_pay[$column_count - 1]) ; # $val = $date_pay[$column_count - 1] ; # $val_min = $val ; # } else { # $val = "$now_year-$now_mm-$now_dd" ; # &common_min_form_input_col("date_$id\_$row_cnt","$now_year-$now_mm-$now_dd") ; # $val_min = $val ; # "$now_year-$now_mm-$now_dd" ; # } } elsif ($_ eq 'amount_paid') { # if ($amount_pay[$column_count - 1]) { # $val = $amount_pay[$column_count - 1] ; # &common_min_form_input_col("amount_payble_$id\_$row_cnt",$amount_pay[$column_count - 1]) ; # $val_min = $val ; # } elsif ($amnt_work[$column_count - 1]) { # $val = $amnt_work[$column_count - 1] ; # &common_min_form_input_col("amount_payble_$id\_$row_cnt",$amnt_work[$column_count - 1]) ; # $val_min = $val ; # } } # elsif ($_ eq 'paid') { # if ($amount_pay[$column_count - 1]) { # $val = &common_min_form_checkbox_col("paid_$id\_$row_cnt",1) ; # $val_min = "Yes" ; # } else { # $val = &common_min_form_checkbox_col("paid_$id\_$row_cnt",0) ; # $val_min = "No" ; # } # } elsif ($_ eq 'event_name') { # $len = length($db{$table}{$id}{ref}) ; $val = "$db{$table}{$id}{ref}" ; } elsif ($_ eq 'description') { $val = $db{event_cost_items}{$description[$column_count - 1]}{name} ; } if ($_ ne 'event_quote_nr' and $_ ne 'availablity' and $_ ne 'qty' and $_ ne 'date_paid' and $_ ne 'amount_paid' and $_ ne 'paid') { &xlsxcreator_write_xlsx($ws, $xlsrow, $xlscol, $val, $format_management_report_data) ; } elsif ($_ eq 'event_quote_nr') { &xlsxcreator_write_xlsx($ws, $xlsrow, $xlscol, $id, $format_management_report_data_ref_nr) ; } elsif ($_ eq 'availablity') { if ($availability{$id}{$db{$table}{$id}{$field}}) { &xlsxcreator_write_xlsx($ws, $xlsrow, $xlscol, $availability{$id}{$db{$table}{$id}{$field}}, $format_management_report_data) ; } else { &xlsxcreator_write_xlsx($ws, $xlsrow, $xlscol, "No Response", $format_management_report_data) ; } } elsif ($_ eq 'qty'){ &xlsxcreator_write_xlsx($ws, $xlsrow, $xlscol, $val, $format_management_report_data_ref_nr) ; } elsif ($_ eq 'date_paid' or $_ eq 'amount_paid' or $_ eq 'paid') { # &xlsxcreator_write_xlsx($ws, $xlsrow, $xlscol, $val_min, $format_management_report_data) ; } $xlscol++; # if ($_ eq 'ref_nr' or $_ eq 'camera_nr') { $val = &common_camera_links($table,$id,$val) ;} $print_tbody .= qq~$val~ ; if ($_ eq 'date_paid') { # my $amnt_ownd = $amnt_tot{$op_id} ; my $dates = qq~~ ; my $amnts = qq~~ ; # foreach my $date (sort keys %{$operator_paid_details{$op_id}}) { # foreach my $ct (keys %{$operator_paid_details{$op_id}{$date}}) { # $dates .= qq~
~ if $dates ; $dates .= qq~$dates~ ; # $amnts .= qq~
~ if $amnts ; $amnts .= qq~$operator_paid_details{$op_id}{$date}{$ct}~ ; # $amnt_ownd -= $operator_paid_details{$op_id}{$date}{$ct} ; # } # } # $amnt_ownd = sprintf("%.2f",$amnt_ownd) ; # $print_tbody .= qq~$dates$amnts$amnt_ownd~ ; } } $print_tbody .= qq~~ ; $xlsrow++ ; } $row_cnt++ ; # $print_tbody .= qq~$row_cntTotal~ ; # for (1 .. $table_colspan-1) { # # $print_tbody .= qq~ ~ ; # $print_tbody .= qq~ ~ ; # } # $print_tbody .= qq~~ ; my $dates = qq~~ ; my $amnts = qq~~ ; my $amnt_ownd = $amnt_tot{$op_id} ; foreach my $date (sort keys %{$operator_paid_details{$op_id}}) { foreach my $ct (keys %{$operator_paid_details{$op_id}{$date}}) { $row_cnt++ ; $dates .= qq~
~ if $dates ; $dates .= qq~$date~ ; $amnts .= qq~
~ if $amnts ; $amnts .= qq~$operator_paid_details{$op_id}{$date}{$ct}~ ; $amnt_ownd -= $operator_paid_details{$op_id}{$date}{$ct} ; } } $row_cnt = sprintf("%03d",$row_cnt) ; $print_tbody .= qq~~ ; local $top_row = $xlsrow ; foreach my $tot_row (split("
",$dates)) { for (0 .. $xlscol-1) { &xlsxcreator_write_xlsx($ws, $xlsrow, $_,"", $total_format_1) ; } $xlsrow++ ; } $xlsrow = $top_row ; $xlscol-- ; $xlscol-- ; foreach (@sql_col_display) { if ($_ eq 'event_quote_nr') { $print_tbody .= qq~$row_cnt~ ; } elsif ($_ eq 'operator_names') { $print_tbody .= qq~$casual_names_from_ids{$op_id}~ ; } elsif ($_ eq 'event_name') { $print_tbody .= qq~$db{$table}{$id}{ref}~ ; } elsif ($_ eq 'event_date_from') { $print_tbody .= qq~$db{$table}{$id}{date_from}~ ; } elsif ($_ eq 'event_date_to') { $print_tbody .= qq~$db{$table}{$id}{date_to}~ ; } elsif ($_ eq 'description') { $print_tbody .= qq~$row_cntTotal~ ; &xlsxcreator_write_xlsx($ws, $xlsrow, $xlscol-2, "Total", $total_format_2) ; } elsif ($_ eq 'amount') { $amnt_tot{$op_id} = &common_commify(sprintf("%.2f",$amnt_tot{$op_id})) ; $print_tbody .= qq~$amnt_tot{$op_id}~ ; &xlsxcreator_write_xlsx($ws, $xlsrow, $xlscol-1, $amnt_tot{$op_id}, $total_format_1) ; } elsif ($_ eq 'date_paid') { $print_tbody .= qq~$dates~ ; $top_row = $xlsrow ; foreach (split("
",$dates)) { &xlsxcreator_write_xlsx($ws,$xlsrow,$xlscol,$_,$total_format_1) ; $xlsrow++ ; } $xlsrow = $top_row ; $xlscol++; } elsif ($_ eq 'amount_paid') { $top_row = $xlsrow ; local $new_amnt = 0 ; local $new_amnt_str = qq~~ ; foreach (split("
",$amnts)) { &xlsxcreator_write_xlsx($ws,$xlsrow,$xlscol,$_,$total_format_1) ; $xlsrow++ ; $new_amnt = &common_commify(sprintf("%.2f",$_)) ; $new_amnt_str .= qq~$new_amnt
~ ; } $new_amnt_str = substr($new_amnt_str,0,-4) if $new_amnt_str ; # $xlsrow = $top_row ; $xlscol++; $print_tbody .= qq~$new_amnt_str~ ; } elsif ($_ eq 'outstanding_amount') { $amnt_ownd = sprintf("%.2f",$amnt_ownd) ; $print_tbody .= qq~$amnt_ownd~ ; } } # $xlsrow++ ; # for (0 .. $table_colspan-6) { # # $print_tbody .= qq~ ~ ; # $print_tbody .= qq~$row_cnt~ unless $_ ; # $print_tbody .= qq~ ~ if $_ ; # } $print_tbody .= qq~~ ; } # $print_tbody .= qq~$id/2Total~ ; # for (1 .. $table_colspan-1) { # # $print_tbody .= qq~ ~ ; # $print_tbody .= qq~ ~ ; # } # $print_tbody .= qq~~ ; } # $print_tbody .= qq~~ ; # $print_tbody .= qq~~ ; $worksheet{$ws} -> set_column(1, 3, 20) ; $worksheet{$ws} -> set_column(10, 10, 25) ; $worksheet{$ws} -> set_row(0, 30) ; $worksheet{$ws} -> set_row(2, 20) ; $box_icon .= qq~
~ if $i{operator_id} ; # $box_icon .= qq~
~ ; # $box_icon .= qq~
~ ; &report_xls_export_footer('L',15,'operators_report') ; # $box_icon = $box_icon . '' . $box_icon_pdf . '' . $box_icon_paid ; # $fnsortcol = 3 ; # $fnsortorder = 'asc' ; $fnsortcol = 0; $fnsortorder = 'asc' ; $print_more_boxes .= qq~


~ ; &common_min_extra_crumb("$lcpage-report","Search Screen") ; # $trigger_jquery_raw .= qq~ # function selectAll() { # var row_cnt = $row_cnt ; var id_1 = $first_id ; var id_2 = $last_id ; var found_id = 0 ; # console.log("row_cnt : "+row_cnt+" , id_1 : "+id_1+" , id_2 : "+id_2) ; # // var filteredRows = \$("#itv-table").dataTable().rows({ filter: "applied" }).nodes(); # var filteredRows = \$("#itv-table").dataTable()._('tr', {"filter":"applied"}) ; # var filteredRows2 = \$("#itv-table").dataTable().fnGetNodes() ; # console.log("filteredRows : "+filteredRows) ; # console.log("filteredRows2 : "+filteredRows2) ; # // if (!filteredRows) { # // filteredRows = \$("#itv-table").dataTable() ; # // } # if (row_cnt) { # for (let i = 1; i <= row_cnt; i++) { # found_id = 0 ; # for (let j = id_1; j <= id_2; j++) { # // \$(\$("#itv-table").dataTable().fnGetNodes()).find(\$("input[name=paid_"+j+"_"+i+"]")).each(function () { # \$(\$("#itv-table").dataTable().fnGetNodes()).find(\$("input[name=paid_"+j+"_"+i+"]")).each(function () { # id_1 = j ; # found_id = 1 ; # if(\$(this).is(':checked')) { # \$(this).prop('checked',false); # } else { # \$(this).prop('checked',true); # } # }) ; # if (found_id) { # break ; # } # } # } # } # // \$(filteredRows).each(function() { # // var rowId = \$(this).attr("id"); # // console.log("Row ID: " + rowId); # // }); # // console.log("filteredRows : "+filteredRows) ; # // \$(\$("#itv-table").dataTable().fnGetNodes()).find(\$("input[name=input_array]")).each(function () { # // if(\$(this).is(':checked')) { # // \$(this).prop('checked',false); # // } else { # // \$(this).prop('checked',true); # // } # // }); # } # // function payAllInvoices (id) # // { # // BootstrapDialog.confirm({ # // title: 'Confirm', # // message: 'Are you sure you want to confirm all as paid?', # // type: BootstrapDialog.TYPE_PRIMARY, // <-- Default value is BootstrapDialog.TYPE_PRIMARY <-- Default value is BootstrapDialog.TYPE_WARNING # // callback: function(result) { # // if(result) { # // document.paid_min_form.$id.value = id ; # // \$('#paid-form').submit(); # // } # // } # // }); # // } # // function payAllInvoices() { # // var list = []; # // var filteredrows = \$("#itv-table").dataTable()._('tr', {"filter": "applied"}); # // // var lastclient = '' ; # // for ( var i = 0; i < filteredrows.length; i++ ) { # // // if ((lastclient) && (filteredrows[i][1] != lastclient)) { noty({text:'Error : Please select jobs from one client only!',layout:"center",type:"error",timeout:3000}); return ; } # // list.push(filteredrows[i][0]); # // // lastclient=filteredrows[i][1]; # // }; # // var params = list.join("&"); # // var conf = list.join(", "); # // if (!params) { noty({text:'Error : No operators selected!',layout:"center",type:"error",timeout:3000}); return ; } # // var reply = '' ; # // BootstrapDialog.confirm({ # // title: 'Confirm Pay Invoices', # // message: 'Are you sure you want to pay these invoices?', # // type: BootstrapDialog.TYPE_SUCCESS, // <-- Default value is BootstrapDialog.TYPE_PRIMARY # // callback: function(result) { # // if(result) { # // noty({text:'Pay these: '+params,layout:"center",type:"success",timeout:3000}); # // // var url = "$useropts{'scripts'}/get/get_db_pay_invoices.pl?" + params ; # // // \$.get(url, function(json) { # // // \$.each(json, function(key, data) { # // // reply = data.inv_id ; # // // // alert (reply) ; # // // if ((reply) && (reply != 'error')) { # // // noty({text:'Invoices succesfully paid!',layout:"center",type:"success",timeout:3000}); # // // for ( var i = 0; i < filteredrows.length; i++ ) { # // // \$('#' + filteredrows[i][0]).hide(); // hide row by id # // // }; # // // } # // // else # // // { # // // noty({text:'Error paying invoices!',layout:"center",type:"error",timeout:3000}); return ; # // // } # // // }); # // // }, # // // 'json'); # // } else { # // // do nothing # // } # // } # // }); # // } # ~; # $trigger_jquery_raw .= qq~\$("#savebutt").click(function() { # \$('#invoice-form').submit(); # }); # ~ ; } #------------------------------------------------------------------------------------------ sub set_tick { my ($color,$tooltip) = @_ ; $tick{green} = qq~2~ ; $tick{orange} = qq~1~ ; $tick{red} = qq~0~ ; return ($tick{$color}) ; } #------------------------------------------------------------------------------------------ sub set_cross { my ($color,$tooltip) = @_ ; $tick{green} = qq~2~ ; $tick{orange} = qq~1~ ; $tick{red} = qq~0~ ; return ($tick{$color}) ; } #------------------------------------------------------------------------------------------ sub load_list_vars { my ($where,$where_2,$where_3) = @_ ; # our %ref_nr = () ; # &db_min_ro('quotes','id,camera_system_id, quote_nr','','','') ; # foreach my $id (keys %{$db{quotes}}) { # $ref_nr{$db{quotes}{$id}{camera_system_id}} = $db{quotes}{$id}{quote_nr} ; # } # my %casual # my @sql_casuals_where = () ; # my $string = "" ; # for (1 .. 15) { # $string = " description_$_" ; # $string .= "_workings_casual_users not like '' " ; # push (@sql_casuals_where, $string) # } # my $sql_casuals_where_string = join("and", @sql_casuals_where) # &db_min_ro('event_quotes','*',"$sql_casuals_where_string",'','') ; # &common_load_quote_vars('>0'); # &common_load_quote_vars("cameras.quote_nr>0 AND cameras.quote_nr=quotes.quote_nr"); our %quote_status = () ; # &db_min_ro('event_quotes',"*",'','',''); # foreach my $id (keys %{$db{event_quotes}}) { # foreach my $col (sort keys %{$db{event_quotes}{$id}}) { # } # last ; # } # &db_min_ro('event_quotes_min',"*",'','',''); # foreach my $id (keys %{$db{event_quotes_min}}) { # foreach my $col (sort keys %{$db{event_quotes_min}{$id}}) { # } # last ; # } &db_min_ro('event_quotes',"id, quote_cancelled, quote_accepted, if(concat(quote_expiry, ' 00:00:00') < now(), 1, 0) as 'expired', quote_pending","$where",'',''); foreach my $id (keys %{$db{event_quotes}}) { if ($db{event_quotes}{$id}{quote_cancelled} == 1){ $quote_status{$id} = 1 ; } elsif ($db{event_quotes}{$id}{quote_accepted} == 1){ $quote_status{$id} = 2 ; } elsif ($db{event_quotes}{$id}{quote_pending} == 1) { $quote_status{$id} = 4 ; } if ($db{event_quotes}{$id}{expired} == 1) { $quote_status{$id} = 3 unless $db{event_quotes}{$id}{quote_accepted} == 1; } } # &db_min_raw(" # select id, quote_cancelled, quote_accepted, if(concat(quote_expiry, ' 00:00:00') < now(), 1, 0) as 'expired', quote_pending from event_quotes ; # " ) ; # foreach $row (@$rows_array_ref) { # if (@$row[1] == 1){ # $quote_status{@$row[0]} = 1 ; # } elsif (@$row[2] == 1){ # $quote_status{@$row[0]} = 2 ; # } elsif (@$row[4] == 1) { # $quote_status{@$row[0]} = 4 ; # } # if (@$row[3] == 1) { # $quote_status{@$row[0]} = 3 unless @$row[2] == 1; # } # } our %availability = () ; &db_min_raw(" select e.event_quote_nr, e.user_id, e.category from events e left join ( select id, name, user_type from users where user_type like '%casual%' ) u on u.id = e.user_id ; ") ; foreach $row (@$rows_array_ref) { if (@$row[2] eq 'available') { $availability{@$row[0]}{@$row[1]} = "Available" ; } elsif (@$row[2] ne 'available' and @$row[2]) { $availability{@$row[0]}{@$row[1]} = "Not Available" ; } } our %type_a_users = () ; our %type_b_users = () ; our %casual_names_from_ids = () ; &db_min_ro('users','id,name,user_type',"user_type = 'casual_a' or user_type = 'casual_b'",'','') ; foreach my $id (keys %{$db{'users'}}){ $type_a_users{$id} = "A" if $db{'users'}{$id}{user_type} eq "casual_a" ; $type_b_users{$id} = "B" if $db{'users'}{$id}{user_type} eq "casual_b" ; $casual_names_from_ids{$id} = $db{'users'}{$id}{name} ; } my @event_quote_ids = () ; &db_min_ro($table,'*',"$where",'','') ; foreach (keys %{$db{$table}}) { } our %operator_all_paid = () ; &db_min_ro('event_quotes_min','*',"$where_2$where_3",'','') ; foreach (keys %{$db{event_quotes_min}}) { $operator_all_paid{$db{event_quotes_min}{$_}{quote_id}} = 1 ; } &db_min_ro('event_cost_items','id,name','','','') ; } #------------------------------------------------------------------------------------------ sub thead { &common_min_thead ; } #------------------------------------------------------------------------------- sub page_opts { our $glyphicon = 'list' ; our $lcpage = 'operators' ; &common_page_name ; our $table = 'event_quotes' ; $page_title = 'Operators' ; } #------------------------------------------------------------------------------- sub report_screen { our $lcol = 3 ; our $fcol = 5 ; $print_box_content_rows .= &common_min_forms_start('report') ; # &common_camera_opts ; # &common_min_select_opts('client_id','customers','name',$i{client_id},'') ; &common_min_select_opts('operator_id','users',"name",$i{operator_id},'','',"user_type LIKE 'casual%'") ; &common_min_select_opts('event_quote_id','event_quotes',"ref",$i{event_quote_id},'','',"") ; my $current_day_of_week = Day_of_Week($now_year,$now_mm,$now_dd); my $days_to_subtract = $current_day_of_week - 1 ; my ($first_day_year,$first_day_month,$first_day) = Add_Delta_Days($now_year,$now_mm,$now_dd,-$days_to_subtract); $first_day_month = sprintf("%02d",$first_day_month) ; $first_day = sprintf("%02d",$first_day) ; $print_box_content_rows .= &common_min_form_datepicker('date_from',"$i{date_from}") if $i{date_from} ; $print_box_content_rows .= &common_min_form_datepicker('date_from',"$first_day_year-$first_day_month-$first_day") unless $i{date_from} ; $print_box_content_rows .= &common_min_form_datepicker('date_to',"$i{date_to}") if $i{date_to} ; $print_box_content_rows .= &common_min_form_datepicker('date_to',"$now_year-$now_mm-$now_dd") unless $i{date_to} ; # our %type_a_users = () ; # our %type_b_users = () ; # &db_min_ro('users','id, name, user_type',"user_type = 'casual_a' or user_type = 'casual_b'",'','') ; # foreach my $id (keys %{$db{'users'}}){ # $opts{$field} .= qq() if $db{'users'}{$id}{user_type} eq "casual_a" ; # $opts{$field} .= qq() if $db{'users'}{$id}{user_type} eq "casual_b" ; # } # $print_box_content_rows .= &common_min_form_select('client_id','') ; $print_box_content_rows .= &common_min_form_select('operator_id','') ; $print_box_content_rows .= &common_min_form_select('event_quote_id','') ; # $print_box_content_rows .= &common_min_form_checkbox('operators_paid','') ; $print_box_content_rows .= &common_min_forms_end('','','report') ; &common_min_search_screen ; } #------------------------------------------------------------------------------- sub screen3 { &thead; if ($isaved) { $alert = &common_min_alert('success',"$ucpage $isaved!",'ok') ; } else { &common_min_alert_type ; } # my $page = "$lcpage\s" ; my $page = "event-quotes" ; if ($s{no}) { $page = $lcpage ; } &common_min_table('id',$page,'list') ; our $savjqy = 1 ; # &common_min_extra_crumb("manage-$lcpage\s","Manage $ucfirstpage\s") ; # $print_box_content_rows .= &common_min_forms_end('','','save') ; require _blank ; exit ; } #------------------------------------------------------------------------------------------ use common ; use report ; use xlsxcreator ; use today ; 1;