From f29c752d6f9e813c10295b334eefb924216e34cf Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 2 May 2006 11:59:31 +0000 Subject: [PATCH] add a "pre-report" page to this report/graph as requested by lewis/wtxs, also add 12mo total option --- FS/FS/Report/Table/Monthly.pm | 41 +++++++++++++++++++ httemplate/graph/money_time-graph.cgi | 9 +++++ httemplate/graph/money_time.cgi | 67 +++++++++---------------------- httemplate/graph/report_money_time.html | 71 +++++++++++++++++++++++++++++++++ httemplate/index.html | 2 +- 5 files changed, 140 insertions(+), 50 deletions(-) create mode 100644 httemplate/graph/report_money_time.html diff --git a/FS/FS/Report/Table/Monthly.pm b/FS/FS/Report/Table/Monthly.pm index 9ef108c44..e7f05e5f2 100644 --- a/FS/FS/Report/Table/Monthly.pm +++ b/FS/FS/Report/Table/Monthly.pm @@ -156,6 +156,47 @@ sub credits { ); } +#these should be auto-generated +sub invoiced_12mo { + my( $self, $speriod, $eperiod, $agentnum ) = @_; + $speriod = $self->_subtract_11mo($speriod); + $self->invoiced($speriod, $eperiod, $agentnum); +} + +sub netsales_12mo { + my( $self, $speriod, $eperiod, $agentnum ) = @_; + $speriod = $self->_subtract_11mo($speriod); + $self->netsales($speriod, $eperiod, $agentnum); +} + +sub receipts_12mo { + my( $self, $speriod, $eperiod, $agentnum ) = @_; + $speriod = $self->_subtract_11mo($speriod); + $self->receipts($speriod, $eperiod, $agentnum); +} + +sub payments_12mo { + my( $self, $speriod, $eperiod, $agentnum ) = @_; + $speriod = $self->_subtract_11mo($speriod); + $self->payments($speriod, $eperiod, $agentnum); +} + +sub credits_12mo { + my( $self, $speriod, $eperiod, $agentnum ) = @_; + $speriod = $self->_subtract_11mo($speriod); + $self->credits($speriod, $eperiod, $agentnum); +} + +#not being too bad with the false laziness +use Time::Local qw(timelocal); +sub _subtract_11mo { + my($self, $time) = @_; + my ($sec,$min,$hour,$mday,$mon,$year) = (localtime($time) )[0,1,2,3,4,5]; + $mon -= 11; + if ( $mon < 0 ) { $mon+=12; $year--; } + timelocal($sec,$min,$hour,$mday,$mon,$year); +} + # NEEDS TO BE AGENTNUM-capable sub canceled { #active my( $self, $speriod, $eperiod, $agentnum ) = @_; diff --git a/httemplate/graph/money_time-graph.cgi b/httemplate/graph/money_time-graph.cgi index fc8207a81..637a3bf94 100755 --- a/httemplate/graph/money_time-graph.cgi +++ b/httemplate/graph/money_time-graph.cgi @@ -22,6 +22,10 @@ if ( $cgi->param('agentnum') =~ /^(\d*)$/ ) { #my %data; my @items = qw( invoiced netsales credits payments receipts ); +if ( $cgi->param('12mo') == 1 ) { + @items = map $_.'_12mo', @items; +} + my %label = ( 'invoiced' => 'Gross Sales (invoiced)', 'netsales' => 'Net Sales (invoiced - applied credits)', @@ -29,6 +33,9 @@ my %label = ( 'payments' => 'Gross Receipts (payments)', 'receipts' => 'Net Receipts/Cashflow (payments - refunds)', ); +$label{$_.'_12mo'} = $label{$_}. " (previous 12 months)" + foreach keys %label; + my %color = ( 'invoiced' => [ 153, 153, 255 ], #light blue 'netsales' => [ 0, 0, 204 ], #blue @@ -36,6 +43,8 @@ my %color = ( 'payments' => [ 153, 204, 153 ], #light green 'receipts' => [ 0, 204, 0 ], #green ); +$color{$_.'_12mo'} = $color{$_} + foreach keys %color; my $report = new FS::Report::Table::Monthly ( 'items' => \@items, diff --git a/httemplate/graph/money_time.cgi b/httemplate/graph/money_time.cgi index bc789cb7e..73f9d23a2 100644 --- a/httemplate/graph/money_time.cgi +++ b/httemplate/graph/money_time.cgi @@ -1,16 +1,15 @@ - <% -#my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); -my ($curmon,$curyear) = (localtime(time))[4,5]; +# #my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +# my ($curmon,$curyear) = (localtime(time))[4,5]; #find first month -my $syear = $cgi->param('syear') || 1899+$curyear; -my $smonth = $cgi->param('smonth') || $curmon+1; +my $syear = $cgi->param('syear'); # || 1899+$curyear; +my $smonth = $cgi->param('smonth'); # || $curmon+1; #find last month -my $eyear = $cgi->param('eyear') || 1900+$curyear; -my $emonth = $cgi->param('emonth') || $curmon+1; +my $eyear = $cgi->param('eyear'); # || 1900+$curyear; +my $emonth = $cgi->param('emonth'); # || $curmon+1; #XXX or virtual my( $agentnum, $agent ) = ('', ''); @@ -20,10 +19,8 @@ if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { die "agentnum $agentnum not found!" unless $agent; } my $agentname = $agent ? $agent->agent.' ' : ''; -warn $agentname; %> - <%= include('/elements/header.html', $agentname. 'Sales, Credits and Receipts Summary' ) @@ -36,6 +33,10 @@ warn $agentname; <% my @items = qw( invoiced netsales credits payments receipts ); +if ( $cgi->param('12mo') == 1 ) { + @items = map $_.'_12mo', @items; +} + my %label = ( 'invoiced' => 'Gross Sales', 'netsales' => 'Net Sales', @@ -43,6 +44,9 @@ my %label = ( 'payments' => 'Gross Receipts', 'receipts' => 'Net Receipts', ); +$label{$_.'_12mo'} = $label{$_}. " (previous 12 months)" + foreach keys %label; + my %color = ( 'invoiced' => '9999ff', #light blue 'netsales' => '0000cc', #blue @@ -50,11 +54,15 @@ my %color = ( 'payments' => '99cc99', #light green 'receipts' => '00cc00', #green ); +$color{$_.'_12mo'} = $color{$_} + foreach keys %color; + my %link = ( 'invoiced' => "${p}search/cust_bill.html?agentnum=$agentnum;", 'credits' => "${p}search/cust_credit.html?agentnum=$agentnum;", 'payments' => "${p}search/cust_pay.cgi?magic=_date;agentnum=$agentnum;", ); +# XXX link 12mo? my $report = new FS::Report::Table::Monthly ( 'items' => \@items, @@ -102,43 +110,4 @@ my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); <% } %> -
-
- -From - - to - - -for agent: <%= include('/elements/select-agent.html', $agentnum) %> - - -
- - +<%= include('/elements/footer.html') %> diff --git a/httemplate/graph/report_money_time.html b/httemplate/graph/report_money_time.html new file mode 100644 index 000000000..6c7e42716 --- /dev/null +++ b/httemplate/graph/report_money_time.html @@ -0,0 +1,71 @@ +<% + +#my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +my ($curmon,$curyear) = (localtime(time))[4,5]; + +#find first month +my $syear = 1899+$curyear; +my $smonth = $curmon+1; + +#want 12 month by default, not 13 +$smonth++; +if ( $smonth > 12 ) { $smonth-=12; $syear++ } + +#find last month +my $eyear = 1900+$curyear; +my $emonth = $curmon+1; + +my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); + +%> +<%= include('/elements/header.html', 'Sales, Credits and Receipts Summary' ) %> + +
+ + + +From: + +
+ +To: + +
+ +For agent: <%= include('/elements/select-agent.html' ) %> +
+ + Show 12 month totals instead of monthly values. +
+ + +
+ +<%= include('/elements/footer.html') %> + diff --git a/httemplate/index.html b/httemplate/index.html index 6cd667d8a..4704ebe33 100644 --- a/httemplate/index.html +++ b/httemplate/index.html @@ -97,7 +97,7 @@ Payment report (by type and/or date range)

Credit report (by employee and/or date range) -

Sales, Credits and Receipts Summary +

Sales, Credits and Receipts Summary

Accounts Receivable Aging Summary

Prepaid Income (Unearned Revenue) Report

Sales Tax Liability Report -- 2.11.0