diff options
Diffstat (limited to 'httemplate')
| -rw-r--r-- | httemplate/elements/menu.html | 1 | ||||
| -rw-r--r-- | httemplate/graph/elements/monthly.html | 61 | ||||
| -rw-r--r-- | httemplate/graph/money_time_daily.cgi | 111 | ||||
| -rw-r--r-- | httemplate/graph/report_money_time_daily.html | 26 | 
4 files changed, 178 insertions, 21 deletions
diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html index c186aa26a..e28beb760 100644 --- a/httemplate/elements/menu.html +++ b/httemplate/elements/menu.html @@ -307,6 +307,7 @@ if($curuser->access_right('Financial reports')) {    %report_financial = (      'Sales, Credits and Receipts' => [ $fsurl.'graph/report_money_time.html', 'Sales, credits and receipts summary graph' ], +    'Daily Sales, Credits and Receipts' => [ $fsurl.'graph/report_money_time_daily.html', 'Sales, credits and receipts (broken down by day) summary graph' ],      'Sales Report' => [ $fsurl.'graph/report_cust_bill_pkg.html', 'Sales report and graph (by agent, package class and/or date range)' ],      'Rated Call Sales Report' => [ $fsurl.'graph/report_cust_bill_pkg_detail.html', 'Sales report and graph (by agent, package class, usage class and/or date range)' ],      'Employee Commission Report' => [ $fsurl.'search/report_employee_commission.html', '' ], diff --git a/httemplate/graph/elements/monthly.html b/httemplate/graph/elements/monthly.html index de2b2e9d4..a451ea8ff 100644 --- a/httemplate/graph/elements/monthly.html +++ b/httemplate/graph/elements/monthly.html @@ -19,6 +19,7 @@ Example:      'links'           => \@links,      # or \%link, #opt      'link_fromparam'  => 'param_from', #defaults to 'begin'      'link_toparam'    => 'param_to',   #defaults to 'end' +    'daily'           => 1, # omit for monthly granularity      #optional, pulled from CGI params if not specified      'start_month'     => $smonth, @@ -26,6 +27,12 @@ Example:      'end_month'       => $emonth,      'end_year'        => $eyear, + +    #optional, pulled from CGI params if not specified,  +    #only if 'daily' option is given +    'start_day'       => $sday, +    'end_day'         => $eday, +      #optional      'agentnum'        => $agentnum,      'nototal'         => 1, @@ -42,8 +49,7 @@ Example:              'data'          => $data->{'data'},              'row_labels'    => $data->{'item_labels'},              'graph_labels'  => $opt{'graph_labels'} || $data->{'item_labels'}, -            'col_labels'    => [ map { my $m = $_; $m =~ s/^(\d+)\//$mon[$1-1] / ; $m } -                                 @{$data->{label}} ], +            'col_labels'    => $col_labels,              'axis_labels'   => $data->{label},              'colors'        => $data->{colors},              'links'         => \@links, @@ -83,28 +89,41 @@ $opt{'start_year'}  ||= $cgi->param('start_year'); # || 1899+$curyear;  $opt{'end_month'} ||= $cgi->param('end_month'); # || $curmon+1;  $opt{'end_year'}  ||= $cgi->param('end_year'); # || 1900+$curyear; -my $report = new FS::Report::Table::Monthly ( - -  'items'        => \@items, -  'params'       => $opt{'params'}, -  'item_labels'  => ( $cgi->param('_type') =~ /^(png)$/ -                        ? $opt{'graph_labels'} -                        : $opt{'labels'} -                    ), -  'colors'       => $opt{'colors'}, -  'links'        => $opt{'links'}, - -  'start_month'  => $opt{'start_month'}, -  'start_year'   => $opt{'start_year'}, -  'end_month'    => $opt{'end_month'}, -  'end_year'     => $opt{'end_year'}, - -  'agentnum'     => $opt{'agentnum'}, -  'remove_empty' => $opt{'remove_empty'}, -  'doublemonths' => $opt{'doublemonths'}, +if ( $opt{'daily'} ) { # daily granularity +    $opt{'start_day'} ||= $cgi->param('start_day'); +    $opt{'end_day'} ||= $cgi->param('end_day'); +} + +my %reportopts = ( +      'items'        => \@items, +      'params'       => $opt{'params'}, +      'item_labels'  => ( $cgi->param('_type') =~ /^(png)$/ +                            ? $opt{'graph_labels'} +                            : $opt{'labels'} +                        ), +      'colors'       => $opt{'colors'}, +      'links'        => $opt{'links'}, + +      'start_day'    => $opt{'start_day'}, +      'start_month'  => $opt{'start_month'}, +      'start_year'   => $opt{'start_year'}, +      'end_day'      => $opt{'end_day'}, +      'end_month'    => $opt{'end_month'}, +      'end_year'     => $opt{'end_year'}, +      'agentnum'     => $opt{'agentnum'}, +      'remove_empty' => $opt{'remove_empty'}, +      'doublemonths' => $opt{'doublemonths'},  ); + +my $report; +$report = new FS::Report::Table::Daily(%reportopts) if $opt{'daily'}; +$report = new FS::Report::Table::Monthly(%reportopts) unless $opt{'daily'};  my $data = $report->data; +my $col_labels = [ map { my $m = $_; $m =~ s/^(\d+)\//$mon[$1-1] / ; $m } +                             @{$data->{label}} ]; +$col_labels = $data->{label} if $opt{'daily'}; +  my @links;  foreach my $link (@{ $data->{'links'} }) {    my @speriod = @{$data->{'speriod'}}; diff --git a/httemplate/graph/money_time_daily.cgi b/httemplate/graph/money_time_daily.cgi new file mode 100644 index 000000000..4d16ff871 --- /dev/null +++ b/httemplate/graph/money_time_daily.cgi @@ -0,0 +1,111 @@ +<% include('elements/monthly.html', +                'title'        => $agentname. +                                  'Daily Sales, Credits and Receipts Summary', +                'items'        => \@items, +                'labels'       => \%label, +                'graph_labels' => \%graph_label, +                'colors'       => \%color, +                'links'        => \%link, +                'agentnum'     => $agentnum, +                'nototal'      => scalar($cgi->param('12mo')), +                'daily'        => 1, +                'start_day'    => $smday, +                'start_month'  => $smon+1, +                'start_year'   => $syear, +                'end_day'      => $emday, +                'end_month'    => $emon+1, +                'end_year'     => $eyear, +             ) +%> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Financial reports'); + +#XXX or virtual +my( $agentnum, $agent ) = ('', ''); +if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { +  $agentnum = $1; +  $agent = qsearchs('agent', { 'agentnum' => $agentnum } ); +  die "agentnum $agentnum not found!" unless $agent; +} + +my $agentname = $agent ? $agent->agent.' ' : ''; + +my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi); +my ($ssec,$smin,$shour,$smday,$smon,$syear,$swday,$syday,$sisdst)  +    = localtime($beginning); +my ($esec,$emin,$ehour,$emday,$emon,$eyear,$ewday,$eyday,$eisdst)  +    = localtime($ending); + +my @items = qw( invoiced netsales +                credits  netcredits +                payments receipts +                refunds  netrefunds +                cashflow netcashflow +              ); +if ( $cgi->param('12mo') == 1 ) { +  @items = map $_.'_12mo', @items; +} + +my %label = ( +  'invoiced'    => 'Gross Sales', +  'netsales'    =>   'Net Sales', +  'credits'     => 'Gross Credits', +  'netcredits'  =>   'Net Credits', +  'payments'    => 'Gross Receipts', +  'receipts'    =>   'Net Receipts', +  'refunds'     => 'Gross Refunds', +  'netrefunds'  =>   'Net Refunds', +  'cashflow'    => 'Gross Cashflow', +  'netcashflow' =>   'Net Cashflow', +); + +my %graph_suffix = ( + 'invoiced'    => ' (invoiced)',  + 'netsales'    => ' (invoiced - applied credits)', + 'credits'     => ' (credited)', + 'netcredits'  => ' (applied credits)', + 'payments'    => ' (payments)', + 'receipts'    => ' (applied payments)', + 'refunds'     => ' (refunds)', + 'netrefunds'  => ' (applied refunds)', + 'cashflow'    => ' (payments - refunds)', + 'netcashflow' => ' (applied payments - applied refunds)', +); +my %graph_label = map { $_ => $label{$_}.$graph_suffix{$_} } keys %label; + +$label{$_.'_12mo'} = $label{$_}. " (prev 12 months)" +  foreach keys %label; + +$graph_label{$_.'_12mo'} = $graph_label{$_}. " (prev 12 months)" +  foreach keys %graph_label; + +my %color = ( +  'invoiced'    => '9999ff', #light blue +  'netsales'    => '0000cc', #blue +  'credits'     => 'ff9999', #light red +  'netcredits'  => 'cc0000', #red +  'payments'    => '99cc99', #light green +  'receipts'    => '00cc00', #green +  'refunds'     => 'ffcc99', #light orange +  'netrefunds'  => 'ff9900', #orange +  'cashflow'    => '99cc33', #light olive +  'netcashflow' => '339900', #olive +); +$color{$_.'_12mo'} = $color{$_} +  foreach keys %color; + +my %link = ( +  'invoiced'   => "${p}search/cust_bill.html?agentnum=$agentnum;", +  'netsales'   => "${p}search/cust_bill.html?agentnum=$agentnum;net=1;", +  'credits'    => "${p}search/cust_credit.html?agentnum=$agentnum;", +  'netcredits' => "${p}search/cust_credit_bill.html?agentnum=$agentnum;", +  'payments'   => "${p}search/cust_pay.html?magic=_date;agentnum=$agentnum;", +  'receipts'   => "${p}search/cust_bill_pay.html?agentnum=$agentnum;", +  'refunds'    => "${p}search/cust_refund.html?magic=_date;agentnum=$agentnum;", +  'netrefunds' => "${p}search/cust_credit_refund.html?agentnum=$agentnum;", +); +# XXX link 12mo? + +</%init> diff --git a/httemplate/graph/report_money_time_daily.html b/httemplate/graph/report_money_time_daily.html new file mode 100644 index 000000000..1e1b45d4e --- /dev/null +++ b/httemplate/graph/report_money_time_daily.html @@ -0,0 +1,26 @@ +<% include('/elements/header.html', 'Daily Sales, Credits and Receipts Summary' ) %> + +<FORM ACTION="money_time_daily.cgi" METHOD="GET"> + +<TABLE> + +<% include( '/elements/tr-input-beginning_ending.html' ) %> + +<% include('/elements/tr-select-agent.html', +             'label'         => 'For agent: ', +             'disable_empty' => 0, +          ) +%> + +</TABLE> + +<BR><INPUT TYPE="submit" VALUE="Display"> +</FORM> + +<% include('/elements/footer.html') %> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Financial reports'); + +</%init>  | 
