#!/usr/bin/perl BEGIN { use lib '/usr/home/cfg' ; require push_inc ; } require cfg ; # unless ($username eq 'handre') { 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 ; #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- print "Content-type: text/html\n\n"; 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 '' ; &common_min_action; $db_ignore_open_close = 0 ; # do one open and one close instead of repeating it &db_close_conn ; exit; #------------------------------------------------------------------------------------------ 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; } } 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} 00:00:00')" ; 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}}" ; # } # if ($i{operator_id}) { # push @report_results, "Client = $client{$i{client_id}}" ; # } # 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{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 { my $srch_where_sql = join(' AND ', @report_sql) ; 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","operators","date_from","date_to","days","amount") ; our @col_display_excel = @sql_col_display ; # my $xlsxrow = 0 ; &report_xlsx_export_header_events("Operators_Report$xlsreportname",'events') ; &load_list_vars("$srch_where_sql$add_sql_where") ; my $field = ""; my %seen_op = () ; my $ops = "" ; my $total_ops = 0 ; foreach my $id (sort { $a <=> $b } keys %{$db{$table}}) { %seen_op = () ; $total_ops = 0 ; @op_work = split(/\;/,$db{event_quotes_min}{$id}{operator_workings_event}) ; @des_work = split(/\;/,$db{event_quotes_min}{$id}{description_workings_event}) ; @amnt_work = split(/\;/,$db{event_quotes_min}{$id}{amount_workings_event}) ; for my $opp_cnt (1 .. 50) { # next if $i{operator_id} and $db{$table}{$id}{"operator_$opp_cnt\_workings_event"} != $i{operator_id} ; # next unless $db{$table}{$id}{"description_$opp_cnt\_workings_event"} eq '14' ; # next unless $db{$table}{$id}{"operator_$opp_cnt\_workings_event"} ; # $total_amount{$id}{$opp_cnt} += $db{$table}{$id}{"amount_$opp_cnt\_workings_event"} ; # next if $seen_op{$db{$table}{$id}{"operator_$opp_cnt\_workings_event"}} ; # $seen_op{$db{$table}{$id}{"operator_$opp_cnt\_workings_event"}} = 1; # $total_ops += 1 ; # $ops = $casual_names_from_ids{$db{$table}{$id}{"operator_$opp_cnt\_workings_event"}} ; next if $i{operator_id} and $op_work[$opp_cnt - 1] != $i{operator_id} ; # next unless $des_work[$opp_cnt - 1] eq '14' ; next unless $op_work[$opp_cnt - 1] ; $total_amount{$id}{$op_work[$opp_cnt - 1]} += $amnt_work[$opp_cnt - 1] ; next if $seen_op{$op_work[$opp_cnt - 1]} ; $seen_op{$op_work[$opp_cnt - 1]} = 1; $total_ops += 1 ; $ops = $casual_names_from_ids{$op_work[$opp_cnt - 1]} ; $operators_list{$id}{$op_work[$opp_cnt - 1]} = $opp_cnt ; # $operators_list{$id}{$opp_cnt} = $ops ; } next if $total_ops == 0 ; foreach my $op_id (keys %{$operators_list{$id}}) { $xlsxcol=0 ; $print_tbody .= qq~~ ; foreach (@sql_col_display) { # next unless $_ ; # blank for the buttons column # my $align = '' ; # my $center = qq~ class="dt-center"~ ; # $align = $center ; my $val = $db{$table}{$id}{$_} ; $val = &get_val($id,$_,$op_id) ; if ($_ eq 'amount'){ &xlsxcreator_write_xlsx($ws,$xlsxrow,$xlsxcol,$val,$format_management_report_data) ; } else { &xlsxcreator_write_xlsx($ws,$xlsxrow,$xlsxcol,$val,$format_event_data) ; } $xlsxcol++; # if ($_ eq 'ref_nr' or $_ eq 'camera_nr') { $val = &common_camera_links($table,$id,$val) ;} $print_tbody .= qq~$val~ ; } $print_tbody .= qq~~ ; $xlsxrow++; } } # $print_tbody .= qq~~ ; # $print_tbody .= qq~~ ; $worksheet{$ws} -> set_column(0, 1, 40) ; $worksheet{$ws} -> set_column(2, 5, 15) ; $worksheet{$ws} -> set_row(0, 30) ; $worksheet{$ws} -> set_row(2, 20) ; $worksheet{$ws} -> set_row(3, 5) ; &report_xlsx_export_footer('L',15,'events') ; # $fnsortcol = 3 ; # $fnsortorder = 'asc' ; $fnsortcol = 0; $fnsortorder = 'asc' ; $print_more_boxes .= qq~


~ ; &common_min_extra_crumb("$lcpage-report","Search Screen") ; } #------------------------------------------------------------------------------------------ sub get_val { my ($id,$col,$op_id) = @_ ; if ($col eq 'date_from' or $col eq 'date_to'){ $val = $db{$table}{$id}{date_from} if $col eq 'date_from' ; $val = $db{$table}{$id}{date_to} if $col eq 'date_to' ; $val = substr($val, 0, 10) ; } elsif ($col eq 'days') { $val = $db{$table}{$id}{qty} ; } elsif ($col eq 'amount') { $val = $total_amount{$id}{$op_id} ; $val = sprintf("%.2f", $val) ; } elsif ($col eq 'event') { $val = $db{$table}{$id}{ref} ; } elsif ($col eq 'operators') { $val = $casual_names_from_ids{$op_id} ; } elsif ($_ eq 'id'){ $val = $id ; } return ($val) ; } #------------------------------------------------------------------------------------------ sub load_list_vars { my ($where) = @_ ; our %casual_names_from_ids = () ; our %total_amount = () ; our %operators_list = () ; &db_min_ro('users','id, name, user_type',"user_type = 'casual_a' OR user_type = 'casual_b' OR user_type = 'casual_c'",'','') ; foreach my $id (keys %{$db{'users'}}){ $casual_names_from_ids{$id} = $db{'users'}{$id}{name} ; } db_min_ro('event_quotes_min','id,operator_workings_event,description_workings_event,amount_workings_event,qty_workings_event','','','') ; my $sql_select = "id,date_from,date_to,ref, qty" ; # for (1 .. 15){ $sql_select .= ",description_$_\_workings_event" ; $sql_select .= ",operator_$_\_workings_event" ; $sql_select .= ",amount_$_\_workings_event" ; $sql_select .= ",qty_$_\_workings_event" ; } &db_min_ro($table,$sql_select,$where,'','') ; } #------------------------------------------------------------------------------------------ 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%'") ; my @datefrom = &common_add_delta_ymd(-2,0,0) ; $print_box_content_rows .= &common_min_form_datepicker('date_from',"$datefrom[0]-01-01") ; $print_box_content_rows .= &common_min_form_datepicker('date_to',"$now_year-$now_mm-$now_dd") ; # 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_forms_end('','','report') ; &common_min_search_screen ; } #------------------------------------------------------------------------------- use common ; use report ; use xlsxcreator ; use today ; 1;