#!/usr/bin/perl BEGIN { use lib '/usr/home/cfg' ; require push_inc ; } use CGI qw( :standard ); use CGI::Carp qw(fatalsToBrowser); use Date::Calc qw(:all); use Spreadsheet::WriteExcel; use Spreadsheet::WriteExcel::Utility; require cfg ; print header; # CGI.pm method #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- &today; #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- @ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'}); $action = $ARGV[0] ; our ($q) = CGI -> new() ; our $iaction = $q -> param('iaction') || '' ; # our $debug = 1 ; &common_min_restriction_super ; #-------- page opts -------------------------------------------------------------------------------------------------------------------------------------------------- &page_opts ; #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- if ($iaction eq ''){ &report_screen ; # &common_min_screen1; } elsif ($iaction eq 'report'){ &common_min_load_params ; &report_ifields; &list_screen ; &report_screen ; # &common_min_screen3; } exit; #------------------------------------------------------------------------------------------ sub report_ifields { 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(DATE FROM ($i{date_from}) > DATE TO ($i{date_to})); &report_screen; } } if ($i{date_from}) { push @report_sql, "(`startdate` >= '$i{date_from}')" ; push @report_results, "startdate >= $i{date_from}" ; } if ($i{date_to}) { push @report_sql, "(`startdate` <= '$i{date_to}')" ; push @report_results, "startdate <= $i{date_to}" ; } &db_min_ro('users','*',"`id`='$i{user_id}'",'','') ; foreach my $id (keys %{$db{users}}) { $user{$id} = $db{users}{$id}{name} ; } push @report_sql, "(`user_id` = '$i{user_id}')" ; push @report_results, "Consultant = $user{$i{user_id}}" ; $srch_where_sql = join(' AND ', @report_sql) ; $report_results_msg = uc join(', ', @report_results) ; unless ($i{user_id}) { $error = qq(PLEASE SELECT A CONSULTANT); &report_screen; } else { $success = qq(REPORT WHERE $report_results_msg) ; } unless ($report_results_msg) { $error = qq(ENTER AT LEAST ONE REPORT PARAMETER); &report_screen; } else { $success = qq(REPORT WHERE $report_results_msg) ; } } #------------------------------------------------------------------------------------------ sub list_screen { # &db_min_ro('agency','*','','','') ; # foreach my $id (keys %{$db{agency}}) { $agency{$id} = $db{agency}{$id}{name} ; } our @sql_col_display = ("date_time","user_id","startdate","enddate","notes","duration") ; # our %money_format = (agent_balance => 1); my $xlsfolder = 'weekendwork' ; &report_xls_export_header("$user{$i{user_id}}_Weekend_Work_Report",$xlsfolder) ; # &db_min_ro($table,'*','','','') ; &db_min_ro($table,'*',"$srch_where_sql AND `category`='weekend_work'",'','') ; foreach my $id (keys %{$db{$table}}) { # unless ($db{$table}{$id}{category} eq 'weekend_work') { next ; } $print_tbody .= qq() ; $xlscol=0; foreach (@sql_col_display) { my $val = $db{$table}{$id}{$_} ; if ($_ eq 'user_id') { $val = $user{$db{$table}{$id}{$_}} ; } if ($_ eq 'duration') { # calculate time worked my ($s_dy,$s_dm,$s_dd,$s_th,$s_tm,$s_ts) = &common_min_split_sql_date_time($db{$table}{$id}{startdate}) ; my ($e_dy,$e_dm,$e_dd,$e_th,$e_tm,$e_ts) = &common_min_split_sql_date_time($db{$table}{$id}{enddate}) ; my ($Dd,$Dh,$Dm,$Ds) = Delta_DHMS($s_dy,$s_dm,$s_dd, $s_th,$s_tm,$s_ts, $e_dy,$e_dm,$e_dd, $e_th,$e_tm,$e_ts); $val = $Dd . ' days, ' . $Dh . ' hrs, ' . $Dm . ' min' ; } &report_xls_export_process_cell('',$money_format{$_},$val) ; $xlscol++; if ($_ eq 'user_id') { $val = qq($user{$db{$table}{$id}{$_}}); } $print_tbody .= qq($val) ; } $print_tbody .= qq() ; $xlsrow++ ; } # $print_ttl_agent_balance = &common_min_commify(sprintf("%0.2f",$ttl_agent_balance)) ; # our $add_th_row = qq($print_ttl_agent_balance) ; # used in common_min_thead &report_xls_export_footer('F',30) ; } #------------------------------------------------------------------------------------------ sub report_screen { our $lcol = 3 ; our $fcol = 5 ; # &db_min_ro($table,'*','','',1) ; @user_excl_sql = () ; foreach (keys %{$useropts{it}}) { push @user_excl_sql, "username <> '$_'" ; } my $sql_where = join(" AND ", @user_excl_sql) ; # my $sql_where = '' ; unless ($useropts{super}{lc $username}) { $sql_where = "`id`='$userid'" ; } unless ($useropts{super}{lc $username}) { $sql_where = " AND `id`='$userid'" ; } &common_min_select_opts('user_id','users','name',$i{user_id},'','',"$sql_where") ; $print_box_content_rows .= &common_min_forms_start('report') ; $print_box_content_rows .= &common_min_form_datepicker('date_from',$i{date_from}) ; $print_box_content_rows .= &common_min_form_datepicker('date_to',$i{date_to}) ; $print_box_content_rows .= &common_min_form_select('user_id','','',1,'','Consultant') ; $print_box_content_rows .= &common_min_forms_end('','','report') ; my $page = "$lcpage\s" ; if ($s{no}) { $page = $lcpage ; } if ($print_tbody) { &thead; &common_min_table('id',$page,'list') ; } &screen1 ; } #------------------------------------------------------------------------------- sub thead { &common_min_thead ; } #------------------------------------------------------------------------------- sub screen1 { &common_min_alert_type ; require _blank ; exit ; } #------------------------------------------------------------------------------------------ sub page_opts { our $glyphicon = 'global' ; our $lcpage = 'weekend-report' ; $ucpage = uc $lcpage ; $ucfirstpage = ucfirst $lcpage ; our $table = 'events' ; our $srchscr = 1 ; # our $open_new_tab = qq(target="_blank") ; # opens booking page in a new tab # our $fnsortorder = 'asc' ; } #------------------------------------------------------------------------------- use common ; use today ; use report ; use xlscreator ; 1;