From 02ffd747f8cbc05815c0d96f437c507cfac04ba6 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 3 Mar 2006 15:02:33 +0000 Subject: agent-specific sales/credit/receipts summary --- httemplate/graph/money_time-graph.cgi | 7 +++++++ httemplate/graph/money_time.cgi | 29 +++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 8 deletions(-) (limited to 'httemplate/graph') diff --git a/httemplate/graph/money_time-graph.cgi b/httemplate/graph/money_time-graph.cgi index bb3d23aae..fc8207a81 100755 --- a/httemplate/graph/money_time-graph.cgi +++ b/httemplate/graph/money_time-graph.cgi @@ -12,6 +12,12 @@ my $eyear = $cgi->param('eyear') || 1900+$curyear; my $emonth = $cgi->param('emonth') || $curmon+1; #if ( $emonth++>12 ) { $emonth-=12; $eyear++; } +# XXX or virtual +my $agentnum = ''; +if ( $cgi->param('agentnum') =~ /^(\d*)$/ ) { + $agentnum = $1; +} + #my @labels; #my %data; @@ -37,6 +43,7 @@ my $report = new FS::Report::Table::Monthly ( 'start_year' => $syear, 'end_month' => $emonth, 'end_year' => $eyear, + 'agentnum' => $agentnum, ); my %data = %{$report->data}; diff --git a/httemplate/graph/money_time.cgi b/httemplate/graph/money_time.cgi index 1c7d54266..874f58b09 100644 --- a/httemplate/graph/money_time.cgi +++ b/httemplate/graph/money_time.cgi @@ -12,13 +12,23 @@ my $smonth = $cgi->param('smonth') || $curmon+1; my $eyear = $cgi->param('eyear') || 1900+$curyear; my $emonth = $cgi->param('emonth') || $curmon+1; +#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.' ' : ''; +warn $agentname; + +%> + +<%= include('/elements/header.html', + $agentname. 'Sales, Credits and Receipts Summary' + ) %> - - - Sales, Credits and Receipts Summary - -
@@ -41,9 +51,9 @@ my %color = ( 'receipts' => '00cc00', #green ); my %link = ( - 'invoiced' => "${p}search/cust_bill.html?", - 'credits' => "${p}search/cust_credit.html?", - 'payments' => "${p}search/cust_pay.cgi?magic=_date;", + '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;", ); my $report = new FS::Report::Table::Monthly ( @@ -52,6 +62,7 @@ my $report = new FS::Report::Table::Monthly ( 'start_year' => $syear, 'end_month' => $emonth, 'end_year' => $eyear, + 'agentnum' => $agentnum, ); my $data = $report->data; @@ -119,6 +130,8 @@ From +for agent: <%= include('/elements/select-agent.html', $agentnum) %> + -- cgit v1.2.1 From 6a5ebd04bc59509c5fb934d226d6dd144cf034bd Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Apr 2006 00:16:31 +0000 Subject: add a total column --- httemplate/graph/money_time.cgi | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'httemplate/graph') diff --git a/httemplate/graph/money_time.cgi b/httemplate/graph/money_time.cgi index 874f58b09..9c0a94ff3 100644 --- a/httemplate/graph/money_time.cgi +++ b/httemplate/graph/money_time.cgi @@ -77,6 +77,7 @@ my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); %> <%= $column %> <% } %> + Total <% foreach my $row (@items) { %> @@ -86,12 +87,15 @@ my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); : ''; my @speriod = @{$data->{speriod}}; my @eperiod = @{$data->{eperiod}}; + my $total = 0; %> <% foreach my $column ( @{$data->{$row}} ) { %> <%= $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %>$<%= sprintf("%.2f", $column) %><%= $link ? '' : '' %> + <% $total += $column; %> <% } %> + <%= sprintf("%.2f", $total) %> <% } %> -- cgit v1.2.1 From 5457d73088f678416810417885d844d5e305c4bd Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Apr 2006 00:21:39 +0000 Subject: and the total column --- httemplate/graph/money_time.cgi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'httemplate/graph') diff --git a/httemplate/graph/money_time.cgi b/httemplate/graph/money_time.cgi index 9c0a94ff3..d458405ea 100644 --- a/httemplate/graph/money_time.cgi +++ b/httemplate/graph/money_time.cgi @@ -95,7 +95,7 @@ my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); <% $total += $column; %> <% } %> - <%= sprintf("%.2f", $total) %> + <%= sprintf("%.2f", $total) %> <% } %> -- cgit v1.2.1 From f5713c205d51f0ad756f1b7bcd97130d7a4e1cb2 Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Apr 2006 13:25:33 +0000 Subject: format & link the total column --- httemplate/graph/money_time.cgi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'httemplate/graph') diff --git a/httemplate/graph/money_time.cgi b/httemplate/graph/money_time.cgi index d458405ea..67b82125b 100644 --- a/httemplate/graph/money_time.cgi +++ b/httemplate/graph/money_time.cgi @@ -95,7 +95,9 @@ my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); <% $total += $column; %> <% } %> - <%= sprintf("%.2f", $total) %> + + <%= $link ? $link. 'begin='. @{$data->{speriod}}[0]. ';end='. @{$data->{speriod}}[0]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + <% } %> -- cgit v1.2.1 From 45e03b5221f91ad143a4a9e03ec3de4fc2d1e445 Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Apr 2006 13:28:17 +0000 Subject: correct period & use a yellow color for the total column --- httemplate/graph/money_time.cgi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'httemplate/graph') diff --git a/httemplate/graph/money_time.cgi b/httemplate/graph/money_time.cgi index 67b82125b..bc393835b 100644 --- a/httemplate/graph/money_time.cgi +++ b/httemplate/graph/money_time.cgi @@ -95,8 +95,8 @@ my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); <% $total += $column; %> <% } %> - - <%= $link ? $link. 'begin='. @{$data->{speriod}}[0]. ';end='. @{$data->{speriod}}[0]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + + <%= $link ? $link. 'begin='. @{$data->{speriod}}[0]. ';end='. @{$data->{eperiod}}[0]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> <% } %> -- cgit v1.2.1 From 9d2a3fb618badbef4abf472dc9bc68b8590f04b6 Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Apr 2006 13:32:27 +0000 Subject: REALLY correct the period for the total column this time --- httemplate/graph/money_time.cgi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'httemplate/graph') diff --git a/httemplate/graph/money_time.cgi b/httemplate/graph/money_time.cgi index bc393835b..bc789cb7e 100644 --- a/httemplate/graph/money_time.cgi +++ b/httemplate/graph/money_time.cgi @@ -96,7 +96,7 @@ my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); <% $total += $column; %> <% } %> - <%= $link ? $link. 'begin='. @{$data->{speriod}}[0]. ';end='. @{$data->{eperiod}}[0]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + <%= $link ? $link. 'begin='. @{$data->{speriod}}[0]. ';end='. @{$data->{eperiod}}[-1]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> <% } %> -- cgit v1.2.1 From f29c752d6f9e813c10295b334eefb924216e34cf Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 2 May 2006 11:59:31 +0000 Subject: add a "pre-report" page to this report/graph as requested by lewis/wtxs, also add 12mo total option --- httemplate/graph/money_time-graph.cgi | 9 +++++ httemplate/graph/money_time.cgi | 67 +++++++++---------------------- httemplate/graph/report_money_time.html | 71 +++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 49 deletions(-) create mode 100644 httemplate/graph/report_money_time.html (limited to 'httemplate/graph') 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') %> + -- cgit v1.2.1 From e65c6a26ca778166aec2b2d1dd3012ab84fa611a Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 7 May 2006 20:27:21 +0000 Subject: first pass at sales reports per agent and package class --- httemplate/graph/cust_bill_pkg-graph.cgi | 84 +++++++++++++++ httemplate/graph/cust_bill_pkg.cgi | 104 +++++++++++++++++++ httemplate/graph/elements/monthly.html | 157 +++++++++++++++++++++++++++++ httemplate/graph/money_time-graph.cgi | 84 --------------- httemplate/graph/money_time.cgi | 97 ++++++------------ httemplate/graph/report_cust_bill_pkg.html | 29 ++++++ httemplate/graph/report_money_time.html | 58 ++--------- 7 files changed, 416 insertions(+), 197 deletions(-) create mode 100755 httemplate/graph/cust_bill_pkg-graph.cgi create mode 100644 httemplate/graph/cust_bill_pkg.cgi create mode 100644 httemplate/graph/elements/monthly.html delete mode 100755 httemplate/graph/money_time-graph.cgi create mode 100644 httemplate/graph/report_cust_bill_pkg.html (limited to 'httemplate/graph') diff --git a/httemplate/graph/cust_bill_pkg-graph.cgi b/httemplate/graph/cust_bill_pkg-graph.cgi new file mode 100755 index 000000000..637a3bf94 --- /dev/null +++ b/httemplate/graph/cust_bill_pkg-graph.cgi @@ -0,0 +1,84 @@ +<% + +#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; + +#find last month +my $eyear = $cgi->param('eyear') || 1900+$curyear; +my $emonth = $cgi->param('emonth') || $curmon+1; +#if ( $emonth++>12 ) { $emonth-=12; $eyear++; } + +# XXX or virtual +my $agentnum = ''; +if ( $cgi->param('agentnum') =~ /^(\d*)$/ ) { + $agentnum = $1; +} + +#my @labels; +#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)', + 'credits' => 'Credits', + '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 + 'credits' => [ 204, 0, 0 ], #red + '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, + 'start_month' => $smonth, + 'start_year' => $syear, + 'end_month' => $emonth, + 'end_year' => $eyear, + 'agentnum' => $agentnum, +); +my %data = %{$report->data}; + +#my $chart = Chart::LinesPoints->new(1024,480); +#my $chart = Chart::LinesPoints->new(768,480); +my $chart = Chart::LinesPoints->new(976,384); + +my $d = 0; +$chart->set( + #'min_val' => 0, + 'legend' => 'bottom', + 'colors' => { ( map { 'dataset'.$d++ => $color{$_} } @items ), + #'grey_background' => [ 211, 211, 211 ], + 'grey_background' => 'white', + 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey + }, + #'grey_background' => 'false', + 'legend_labels' => [ map { $label{$_} } @items ], + 'brush_size' => 4, + #'pt_size' => 12, +); + +my @data = map { $data{$_} } ( 'label', @items ); + +http_header('Content-Type' => 'image/png' ); + +$chart->_set_colors(); + +%><%= $chart->scalar_png(\@data) %> diff --git a/httemplate/graph/cust_bill_pkg.cgi b/httemplate/graph/cust_bill_pkg.cgi new file mode 100644 index 000000000..0dbd222ce --- /dev/null +++ b/httemplate/graph/cust_bill_pkg.cgi @@ -0,0 +1,104 @@ +<% + + +#find first month +my $syear = $cgi->param('start_year'); # || 1899+$curyear; +my $smonth = $cgi->param('start_month'); # || $curmon+1; + +#find last month +my $eyear = $cgi->param('end_year'); # || 1900+$curyear; +my $emonth = $cgi->param('end_month'); # || $curmon+1; + +#XXX or virtual +my( $agentnum, $sel_agent ) = ('', ''); +if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { + $agentnum = $1; + $sel_agent = qsearchs('agent', { 'agentnum' => $agentnum } ); + die "agentnum $agentnum not found!" unless $sel_agent; +} +my $title = $sel_agent ? $sel_agent->agent.' ' : ''; + +my $classnum = 0; +my @pkg_class = (); +if ( $cgi->param('classnum') =~ /^(\d*)$/ ) { + $classnum = $1; + if ( $classnum ) { + @pkg_class = ( qsearchs('pkg_class', { 'classnum' => $classnum } ) ); + die "classnum $classnum not found!" unless $pkg_class[0]; + $title .= $pkg_class[0]->classname.' '; + } elsif ( $classnum eq '' ) { + $title .= 'Empty class '; + @pkg_class = ( '(empty class)' ); + } elsif ( $classnum eq '0' ) { + @pkg_class = qsearch('pkg_class', {} ); # { 'disabled' => '' } ); + push @pkg_class, '(empty class)'; + } +} + +my $hue = 0; +my $hue_increment = 145; + +my @items = (); +my @params = (); +my @labels = (); +my @colors = (); + +foreach my $agent ( $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) { + + my $col_scheme = Color::Scheme->new + ->from_hue($hue) + ->scheme('analogic') + ; + my @recur_colors = (); + my @onetime_colors = (); + + ### fixup the color handling for package classes... + my $n = 0; + + foreach my $pkg_class ( @pkg_class ) { + + push @items, 'cust_bill_pkg'; + + + push @labels, + ( $sel_agent ? '' : $agent->agent.' ' ). + ( $classnum eq '0' + ? ( ref($pkg_class) ? $pkg_class->classname : $pkg_class ) + : '' + ); + + # push some params + push @params, + [ 'classnum' => ( ref($pkg_class) ? $pkg_class->classnum : '' ) ]; + + @recur_colors = ($col_scheme->colors)[0,4,8,1,5,9] + unless @recur_colors; + @onetime_colors = ($col_scheme->colors)[2,6,10,3,7,11] + unless @onetime_colors; + push @colors, shift @recur_colors; + + } + + $hue += $hue_increment; + +} + +use Data::Dumper; +warn Dumper(\@items); + +%><%= include('elements/monthly.html', + 'title' => $title. 'Sales Report', + 'graph_type' => 'Mountain', + 'items' => \@items, + 'params' => \@params, + 'labels' => \@labels, + 'graph_labels' => \@labels, + 'colors' => \@colors, + #'links' => \%link, + 'start_month' => $smonth, + 'start_year' => $syear, + 'end_month' => $emonth, + 'end_year' => $eyear, + 'agentnum' => $agentnum, + ) +%> diff --git a/httemplate/graph/elements/monthly.html b/httemplate/graph/elements/monthly.html new file mode 100644 index 000000000..c45113fa3 --- /dev/null +++ b/httemplate/graph/elements/monthly.html @@ -0,0 +1,157 @@ +<% + + # options example... + # + # 'title' => 'Page title', + # 'items' => \@items, + # 'params' => \@params, # opt, + # 'labels' => \@labels, # or \%labels (keys are items) + # 'graph_labels' => \%graph_labels, + # 'colors' => \%colors, + # 'links => \%link, #opt + # 'start_month' => $smonth, + # 'start_year' => $syear, + # 'end_month' => $emonth, + # 'end_year' => $eyear, + # 'agentnum' => $agentnum, #opt + # 'nototal' => 1, #opt, + # 'graph_type' => 'LinesPoints', #opt + + my(%opt) = @_; + my @items = @{ $opt{'items'} }; + + #foreach my $other (qw( labels graph_labels colors links )) { + foreach my $other (qw( labels graph_labels colors )) { + if ( ref($opt{$other}) eq 'HASH' ) { + $opt{$other} = [ map $opt{$other}{$_}, @items ]; + } + } + + my $report = new FS::Report::Table::Monthly ( + #'items' => $opt{'items'}, + 'items' => \@items, + 'params' => $opt{'params'}, + 'start_month' => $opt{'start_month'}, + 'start_year' => $opt{'start_year'}, + 'end_month' => $opt{'end_month'}, + 'end_year' => $opt{'end_year'}, + 'agentnum' => $opt{'agentnum'}, + ); + my $data = $report->data; + + if ( $cgi->param('_type') =~ /^(png)$/ ) { + + #my $chart = Chart::LinesPoints->new(1024,480); + #my $chart = Chart::LinesPoints->new(768,480); + + my $graph_type = 'LinesPoints'; + if ( $opt{'graph_type'} =~ /^(LinesPoints|Mountain)$/ ) { + $graph_type = $1; + } + my $class = "Chart::$graph_type"; + + my $chart = $class->new(976,384); + + my $d = 0; + $chart->set( + #'min_val' => 0, + 'legend' => 'bottom', + 'colors' => { ( + map { my $color = $_; + 'dataset'.$d++ => + [ map hex($_), unpack 'a2a2a2', $color ] + } + @{ $opt{'colors'} } + ), + #'grey_background' => [ 211, 211, 211 ], + 'grey_background' => 'white', + 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey + }, + #'grey_background' => 'false', + 'legend_labels' => $opt{'graph_labels'}, + 'brush_size' => 4, + #'pt_size' => 12, + ); + + #my @data = map { $data->{$_} } ( 'label', @items ); + my @data = @{ $data->{data} }; + unshift @data, $data->{'label'}; + + http_header('Content-Type' => 'image/png' ); + + $chart->_set_colors(); + + %><%= $chart->scalar_png(\@data) %><% + + } else { + + my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); + +%><%= include('/elements/header.html', $opt{'title'} ) %> + +<% $cgi->param('_type', 'png'); %> + +
+ +<%= table('e8e8e8') %> + + + + + + <% foreach my $column ( @{$data->{label}} ) { + #$column =~ s/^(\d+)\//$mon[$1-1]
/e; + $column =~ s/^(\d+)\//$mon[$1-1]
/; + %> + <%= $column %> + <% } %> + + <% unless ( $opt{'nototal'} ) { %> + Total + <% } %> + + + +<% foreach my $row (@items) { + + my $color = shift( @{ $opt{'colors'} } ); +%> + + + + <%= shift( @{ $opt{'labels'} } ) %> + + <% my $link = exists($opt{'links'}{$row}) + ? qq( + <%= $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %>$<%= sprintf("%.2f", $column) %><%= $link ? '' : '' %> + + <% $total += $column; %> + + <% } %> + + <% unless ( $opt{'nototal'} ) { %> + + + <%= $link ? $link. 'begin='. @{$data->{speriod}}[0]. ';end='. @{$data->{eperiod}}[-1]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + + + <% } %> + + + +<% } %> + + + +<%= include('/elements/footer.html') %> + +<% } %> diff --git a/httemplate/graph/money_time-graph.cgi b/httemplate/graph/money_time-graph.cgi deleted file mode 100755 index 637a3bf94..000000000 --- a/httemplate/graph/money_time-graph.cgi +++ /dev/null @@ -1,84 +0,0 @@ -<% - -#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; - -#find last month -my $eyear = $cgi->param('eyear') || 1900+$curyear; -my $emonth = $cgi->param('emonth') || $curmon+1; -#if ( $emonth++>12 ) { $emonth-=12; $eyear++; } - -# XXX or virtual -my $agentnum = ''; -if ( $cgi->param('agentnum') =~ /^(\d*)$/ ) { - $agentnum = $1; -} - -#my @labels; -#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)', - 'credits' => 'Credits', - '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 - 'credits' => [ 204, 0, 0 ], #red - '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, - 'start_month' => $smonth, - 'start_year' => $syear, - 'end_month' => $emonth, - 'end_year' => $eyear, - 'agentnum' => $agentnum, -); -my %data = %{$report->data}; - -#my $chart = Chart::LinesPoints->new(1024,480); -#my $chart = Chart::LinesPoints->new(768,480); -my $chart = Chart::LinesPoints->new(976,384); - -my $d = 0; -$chart->set( - #'min_val' => 0, - 'legend' => 'bottom', - 'colors' => { ( map { 'dataset'.$d++ => $color{$_} } @items ), - #'grey_background' => [ 211, 211, 211 ], - 'grey_background' => 'white', - 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey - }, - #'grey_background' => 'false', - 'legend_labels' => [ map { $label{$_} } @items ], - 'brush_size' => 4, - #'pt_size' => 12, -); - -my @data = map { $data{$_} } ( 'label', @items ); - -http_header('Content-Type' => 'image/png' ); - -$chart->_set_colors(); - -%><%= $chart->scalar_png(\@data) %> diff --git a/httemplate/graph/money_time.cgi b/httemplate/graph/money_time.cgi index 73f9d23a2..f085c2264 100644 --- a/httemplate/graph/money_time.cgi +++ b/httemplate/graph/money_time.cgi @@ -1,15 +1,12 @@ <% -# #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('start_year'); # || 1899+$curyear; +my $smonth = $cgi->param('start_month'); # || $curmon+1; #find last month -my $eyear = $cgi->param('eyear'); # || 1900+$curyear; -my $emonth = $cgi->param('emonth'); # || $curmon+1; +my $eyear = $cgi->param('end_year'); # || 1900+$curyear; +my $emonth = $cgi->param('end_month'); # || $curmon+1; #XXX or virtual my( $agentnum, $agent ) = ('', ''); @@ -20,18 +17,6 @@ if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { } my $agentname = $agent ? $agent->agent.' ' : ''; -%> -<%= include('/elements/header.html', - $agentname. 'Sales, Credits and Receipts Summary' - ) -%> - - -
- -<%= table('e8e8e8') %> -<% - my @items = qw( invoiced netsales credits payments receipts ); if ( $cgi->param('12mo') == 1 ) { @items = map $_.'_12mo', @items; @@ -44,9 +29,22 @@ my %label = ( 'payments' => 'Gross Receipts', 'receipts' => 'Net Receipts', ); + +my %graph_suffix = ( + 'invoiced' => ' (invoiced)', + 'netsales' => ' (invoiced - applied credits)', + 'credits' => '', + 'payments' => ' (payments)', + 'receipts' => '/Cashflow (payments - refunds)', +); +my %graph_label = map { $_ => $label{$_}.$graph_suffix{$_} } keys %label; + $label{$_.'_12mo'} = $label{$_}. " (previous 12 months)" foreach keys %label; +$graph_label{$_.'_12mo'} = $graph_label{$_}. " (previous 12 months)" + foreach keys %graph_label; + my %color = ( 'invoiced' => '9999ff', #light blue 'netsales' => '0000cc', #blue @@ -64,50 +62,19 @@ my %link = ( ); # XXX link 12mo? -my $report = new FS::Report::Table::Monthly ( - 'items' => \@items, - 'start_month' => $smonth, - 'start_year' => $syear, - 'end_month' => $emonth, - 'end_year' => $eyear, - 'agentnum' => $agentnum, -); -my $data = $report->data; - -my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); - +%><%= include('elements/monthly.html', + 'title' => $agentname. + 'Sales, Credits and Receipts Summary', + 'items' => \@items, + 'labels' => \%label, + 'graph_labels' => \%graph_label, + 'colors' => \%color, + 'links' => \%link, + 'start_month' => $smonth, + 'start_year' => $syear, + 'end_month' => $emonth, + 'end_year' => $eyear, + 'agentnum' => $agentnum, + 'nototal' => scalar($cgi->param('12mo')), + ) %> - - -<% foreach my $column ( @{$data->{label}} ) { - #$column =~ s/^(\d+)\//$mon[$1-1]
/e; - $column =~ s/^(\d+)\//$mon[$1-1]
/; - %> - <%= $column %> -<% } %> - Total - - -<% foreach my $row (@items) { %> - <%= $label{$row} %> - <% my $link = exists($link{$row}) - ? qq( - <%= $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %>$<%= sprintf("%.2f", $column) %><%= $link ? '' : '' %> - - <% $total += $column; %> - <% } %> - - <%= $link ? $link. 'begin='. @{$data->{speriod}}[0]. ';end='. @{$data->{eperiod}}[-1]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> - - -<% } %> - - -<%= include('/elements/footer.html') %> diff --git a/httemplate/graph/report_cust_bill_pkg.html b/httemplate/graph/report_cust_bill_pkg.html new file mode 100644 index 000000000..4f29b761f --- /dev/null +++ b/httemplate/graph/report_cust_bill_pkg.html @@ -0,0 +1,29 @@ +<%= include('/elements/header.html', 'Sales Report' ) %> + +
+ + + +<%= include('/elements/tr-select-from_to.html' ) %> + +<%= include('/elements/tr-select-agent.html', 'label' => 'For agent: ' ) %> + +<%= include('/elements/tr-select-pkg_class.html', '', + 'pre_options' => [ '0' => 'all' ], + 'empty_label' => '(empty class)', + ) +%> + + + +
+ +
+
+ +<%= include('/elements/footer.html') %> diff --git a/httemplate/graph/report_money_time.html b/httemplate/graph/report_money_time.html index 6c7e42716..564749686 100644 --- a/httemplate/graph/report_money_time.html +++ b/httemplate/graph/report_money_time.html @@ -1,23 +1,3 @@ -<% - -#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' ) %>
@@ -34,38 +14,20 @@ my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
--> -From: - -
+ -To: - -
+<%= include('/elements/tr-select-from_to.html' ) %> -For agent: <%= include('/elements/select-agent.html' ) %> -
+<%= include('/elements/tr-select-agent.html', '', 'label' => 'For agent: ' ) %> - Show 12 month totals instead of monthly values. -
+ + + + + +
Show 12 month totals instead of monthly values
- +
<%= include('/elements/footer.html') %> - -- cgit v1.2.1 From 896ef9b1a5302dc2d96d351702be94184825cc91 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 8 May 2006 10:01:54 +0000 Subject: sales report per agent and package class looks good --- httemplate/graph/cust_bill_pkg-graph.cgi | 84 --------------------------- httemplate/graph/cust_bill_pkg.cgi | 32 +++++++---- httemplate/graph/elements/monthly.html | 97 ++++++++++++++++++++++++-------- 3 files changed, 95 insertions(+), 118 deletions(-) delete mode 100755 httemplate/graph/cust_bill_pkg-graph.cgi (limited to 'httemplate/graph') diff --git a/httemplate/graph/cust_bill_pkg-graph.cgi b/httemplate/graph/cust_bill_pkg-graph.cgi deleted file mode 100755 index 637a3bf94..000000000 --- a/httemplate/graph/cust_bill_pkg-graph.cgi +++ /dev/null @@ -1,84 +0,0 @@ -<% - -#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; - -#find last month -my $eyear = $cgi->param('eyear') || 1900+$curyear; -my $emonth = $cgi->param('emonth') || $curmon+1; -#if ( $emonth++>12 ) { $emonth-=12; $eyear++; } - -# XXX or virtual -my $agentnum = ''; -if ( $cgi->param('agentnum') =~ /^(\d*)$/ ) { - $agentnum = $1; -} - -#my @labels; -#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)', - 'credits' => 'Credits', - '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 - 'credits' => [ 204, 0, 0 ], #red - '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, - 'start_month' => $smonth, - 'start_year' => $syear, - 'end_month' => $emonth, - 'end_year' => $eyear, - 'agentnum' => $agentnum, -); -my %data = %{$report->data}; - -#my $chart = Chart::LinesPoints->new(1024,480); -#my $chart = Chart::LinesPoints->new(768,480); -my $chart = Chart::LinesPoints->new(976,384); - -my $d = 0; -$chart->set( - #'min_val' => 0, - 'legend' => 'bottom', - 'colors' => { ( map { 'dataset'.$d++ => $color{$_} } @items ), - #'grey_background' => [ 211, 211, 211 ], - 'grey_background' => 'white', - 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey - }, - #'grey_background' => 'false', - 'legend_labels' => [ map { $label{$_} } @items ], - 'brush_size' => 4, - #'pt_size' => 12, -); - -my @data = map { $data{$_} } ( 'label', @items ); - -http_header('Content-Type' => 'image/png' ); - -$chart->_set_colors(); - -%><%= $chart->scalar_png(\@data) %> diff --git a/httemplate/graph/cust_bill_pkg.cgi b/httemplate/graph/cust_bill_pkg.cgi index 0dbd222ce..cb8225516 100644 --- a/httemplate/graph/cust_bill_pkg.cgi +++ b/httemplate/graph/cust_bill_pkg.cgi @@ -36,17 +36,22 @@ if ( $cgi->param('classnum') =~ /^(\d*)$/ ) { } my $hue = 0; -my $hue_increment = 145; +#my $hue_increment = 170; +#my $hue_increment = 145; +my $hue_increment = 125; -my @items = (); +my @items = (); my @params = (); my @labels = (); my @colors = (); +my @links = (); + +my $link = "${p}search/cust_bill_pkg.cgi?nottax=1;include_comp_cust=1"; foreach my $agent ( $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) { my $col_scheme = Color::Scheme->new - ->from_hue($hue) + ->from_hue($hue) #->from_hex($agent->color) ->scheme('analogic') ; my @recur_colors = (); @@ -67,9 +72,13 @@ foreach my $agent ( $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) { : '' ); - # push some params - push @params, - [ 'classnum' => ( ref($pkg_class) ? $pkg_class->classnum : '' ) ]; + my $row_classnum = ref($pkg_class) ? $pkg_class->classnum : 0; + my $row_agentnum = $agent->agentnum; + push @params, [ 'classnum' => $row_classnum, + 'agentnum' => $row_agentnum, + ]; + + push @links, "$link;agentnum=$row_agentnum;classnum=$row_classnum;"; @recur_colors = ($col_scheme->colors)[0,4,8,1,5,9] unless @recur_colors; @@ -83,18 +92,21 @@ foreach my $agent ( $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) { } -use Data::Dumper; -warn Dumper(\@items); +#use Data::Dumper; +#warn Dumper(\@items); %><%= include('elements/monthly.html', - 'title' => $title. 'Sales Report', + 'title' => $title. 'Sales Report (Gross)', 'graph_type' => 'Mountain', 'items' => \@items, 'params' => \@params, 'labels' => \@labels, 'graph_labels' => \@labels, 'colors' => \@colors, - #'links' => \%link, + 'links' => \@links, + 'remove_empty' => 1, + 'bottom_total' => 1, + 'bottom_link' => "$link;", 'start_month' => $smonth, 'start_year' => $syear, 'end_month' => $emonth, diff --git a/httemplate/graph/elements/monthly.html b/httemplate/graph/elements/monthly.html index c45113fa3..3b9f73aa1 100644 --- a/httemplate/graph/elements/monthly.html +++ b/httemplate/graph/elements/monthly.html @@ -5,10 +5,10 @@ # 'title' => 'Page title', # 'items' => \@items, # 'params' => \@params, # opt, - # 'labels' => \@labels, # or \%labels (keys are items) - # 'graph_labels' => \%graph_labels, - # 'colors' => \%colors, - # 'links => \%link, #opt + # 'labels' => \@labels, # or \%labels (keys are items) + # 'graph_labels' => \@graph_labels, # or \%graph_labels, + # 'colors' => \@colors, # or \%colors, + # 'links => \@links, # or \%link, #opt # 'start_month' => $smonth, # 'start_year' => $syear, # 'end_month' => $emonth, @@ -16,26 +16,38 @@ # 'agentnum' => $agentnum, #opt # 'nototal' => 1, #opt, # 'graph_type' => 'LinesPoints', #opt + # 'remove_empty' => 1, #opt, + # 'bottom_total' => 1, #opt, my(%opt) = @_; my @items = @{ $opt{'items'} }; - #foreach my $other (qw( labels graph_labels colors links )) { - foreach my $other (qw( labels graph_labels colors )) { + foreach my $other (qw( labels graph_labels colors links )) { + #foreach my $other (qw( labels graph_labels colors )) { if ( ref($opt{$other}) eq 'HASH' ) { $opt{$other} = [ map $opt{$other}{$_}, @items ]; } } my $report = new FS::Report::Table::Monthly ( + #'items' => $opt{'items'}, - 'items' => \@items, - 'params' => $opt{'params'}, - 'start_month' => $opt{'start_month'}, - 'start_year' => $opt{'start_year'}, - 'end_month' => $opt{'end_month'}, - 'end_year' => $opt{'end_year'}, - 'agentnum' => $opt{'agentnum'}, + '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'}, ); my $data = $report->data; @@ -61,14 +73,15 @@ 'dataset'.$d++ => [ map hex($_), unpack 'a2a2a2', $color ] } - @{ $opt{'colors'} } + #@{ $opt{'colors'} } + @{ $data->{'colors'} } ), #'grey_background' => [ 211, 211, 211 ], 'grey_background' => 'white', 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey }, #'grey_background' => 'false', - 'legend_labels' => $opt{'graph_labels'}, + 'legend_labels' => $data->{'item_labels'}, 'brush_size' => 4, #'pt_size' => 12, ); @@ -112,36 +125,72 @@ -<% foreach my $row (@items) { +<% my @bottom_total = (); + foreach my $row ( @{ $data->{'items'} } ) { - my $color = shift( @{ $opt{'colors'} } ); + #my $color = shift( @{ $opt{'colors'} } ); + my $color = shift( @{ $data->{'colors'} } ); + my $link = shift( @{ $data->{'links'} } ); + $link = $link ? qq("><%= shift( @{ $opt{'labels'} } ) %> + <%= shift( @{ $data->{'item_labels'} } ) %> - <% my $link = exists($opt{'links'}{$row}) - ? qq({speriod}}; my @eperiod = @{$data->{eperiod}}; my $total = 0; %> - <% foreach my $column ( @{ shift( @{$data->{data}} ) } ) { # ( @{$data->{$row}} ) { + <% my $col = 0; + foreach my $column ( @{ shift( @{$data->{data}} ) } ) { # ( @{$data->{$row}} ) { %> <%= $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %>$<%= sprintf("%.2f", $column) %><%= $link ? '' : '' %> - <% $total += $column; %> + <% + $total += $column; + $bottom_total[$col++] += $column; + %> <% } %> <% unless ( $opt{'nototal'} ) { %> - <%= $link ? $link. 'begin='. @{$data->{speriod}}[0]. ';end='. @{$data->{eperiod}}[-1]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + <%= $link ? $link. 'begin='. ${$data->{speriod}}[0]. ';end='. ${$data->{eperiod}}[-1]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + + + <% $bottom_total[$col++] += $total; %> + + <% } %> + + + +<% } %> + +<% if ( $opt{'bottom_total'} ) { + my @speriod = ( @{$data->{speriod}}, ${$data->{speriod}}[0] ); + my @eperiod = ( @{$data->{eperiod}}, ${$data->{eperiod}}[-1] ); +%> + + + Total + + <% foreach my $total ( @bottom_total ) { %> + + + <%= $opt{'bottom_link'} + ? '' + : '' + %>$<%= sprintf("%.2f", $total) %><%= $opt{'bottom_link'} ? '' : '' %> + <% } %> -- cgit v1.2.1 From 6b12c14cc10503d6b0783e8ef71fe44d9a9b37b6 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 19 Jun 2006 08:05:28 +0000 Subject: add ability to select specific package defs. and package status to package report for qis --- httemplate/graph/cust_bill_pkg.cgi | 2 ++ 1 file changed, 2 insertions(+) (limited to 'httemplate/graph') diff --git a/httemplate/graph/cust_bill_pkg.cgi b/httemplate/graph/cust_bill_pkg.cgi index cb8225516..acd39b025 100644 --- a/httemplate/graph/cust_bill_pkg.cgi +++ b/httemplate/graph/cust_bill_pkg.cgi @@ -18,6 +18,7 @@ if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { } my $title = $sel_agent ? $sel_agent->agent.' ' : ''; +#false lazinessish w/search/cust_pkg.cgi my $classnum = 0; my @pkg_class = (); if ( $cgi->param('classnum') =~ /^(\d*)$/ ) { @@ -34,6 +35,7 @@ if ( $cgi->param('classnum') =~ /^(\d*)$/ ) { push @pkg_class, '(empty class)'; } } +#eslaf my $hue = 0; #my $hue_increment = 170; -- cgit v1.2.1 From 3ce7691203a7737406bf2d4442f7fd84b81f847e Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 23 Aug 2006 22:25:39 +0000 Subject: Will things ever be the same again? It's the final masonize --- httemplate/graph/cust_bill_pkg.cgi | 201 +++++++++--------- httemplate/graph/elements/monthly.html | 319 +++++++++++++++-------------- httemplate/graph/money_time.cgi | 131 ++++++------ httemplate/graph/report_cust_bill_pkg.html | 10 +- httemplate/graph/report_money_time.html | 8 +- 5 files changed, 336 insertions(+), 333 deletions(-) (limited to 'httemplate/graph') diff --git a/httemplate/graph/cust_bill_pkg.cgi b/httemplate/graph/cust_bill_pkg.cgi index acd39b025..ea5ae0b2b 100644 --- a/httemplate/graph/cust_bill_pkg.cgi +++ b/httemplate/graph/cust_bill_pkg.cgi @@ -1,103 +1,104 @@ -<% - - -#find first month -my $syear = $cgi->param('start_year'); # || 1899+$curyear; -my $smonth = $cgi->param('start_month'); # || $curmon+1; - -#find last month -my $eyear = $cgi->param('end_year'); # || 1900+$curyear; -my $emonth = $cgi->param('end_month'); # || $curmon+1; - -#XXX or virtual -my( $agentnum, $sel_agent ) = ('', ''); -if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { - $agentnum = $1; - $sel_agent = qsearchs('agent', { 'agentnum' => $agentnum } ); - die "agentnum $agentnum not found!" unless $sel_agent; -} -my $title = $sel_agent ? $sel_agent->agent.' ' : ''; - -#false lazinessish w/search/cust_pkg.cgi -my $classnum = 0; -my @pkg_class = (); -if ( $cgi->param('classnum') =~ /^(\d*)$/ ) { - $classnum = $1; - if ( $classnum ) { - @pkg_class = ( qsearchs('pkg_class', { 'classnum' => $classnum } ) ); - die "classnum $classnum not found!" unless $pkg_class[0]; - $title .= $pkg_class[0]->classname.' '; - } elsif ( $classnum eq '' ) { - $title .= 'Empty class '; - @pkg_class = ( '(empty class)' ); - } elsif ( $classnum eq '0' ) { - @pkg_class = qsearch('pkg_class', {} ); # { 'disabled' => '' } ); - push @pkg_class, '(empty class)'; - } -} -#eslaf - -my $hue = 0; -#my $hue_increment = 170; -#my $hue_increment = 145; -my $hue_increment = 125; - -my @items = (); -my @params = (); -my @labels = (); -my @colors = (); -my @links = (); - -my $link = "${p}search/cust_bill_pkg.cgi?nottax=1;include_comp_cust=1"; - -foreach my $agent ( $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) { - - my $col_scheme = Color::Scheme->new - ->from_hue($hue) #->from_hex($agent->color) - ->scheme('analogic') - ; - my @recur_colors = (); - my @onetime_colors = (); - - ### fixup the color handling for package classes... - my $n = 0; - - foreach my $pkg_class ( @pkg_class ) { - - push @items, 'cust_bill_pkg'; - - - push @labels, - ( $sel_agent ? '' : $agent->agent.' ' ). - ( $classnum eq '0' - ? ( ref($pkg_class) ? $pkg_class->classname : $pkg_class ) - : '' - ); - - my $row_classnum = ref($pkg_class) ? $pkg_class->classnum : 0; - my $row_agentnum = $agent->agentnum; - push @params, [ 'classnum' => $row_classnum, - 'agentnum' => $row_agentnum, - ]; - - push @links, "$link;agentnum=$row_agentnum;classnum=$row_classnum;"; - - @recur_colors = ($col_scheme->colors)[0,4,8,1,5,9] - unless @recur_colors; - @onetime_colors = ($col_scheme->colors)[2,6,10,3,7,11] - unless @onetime_colors; - push @colors, shift @recur_colors; - - } - - $hue += $hue_increment; - -} - -#use Data::Dumper; -#warn Dumper(\@items); - -%><%= include('elements/monthly.html', +% +% +% +%#find first month +%my $syear = $cgi->param('start_year'); # || 1899+$curyear; +%my $smonth = $cgi->param('start_month'); # || $curmon+1; +% +%#find last month +%my $eyear = $cgi->param('end_year'); # || 1900+$curyear; +%my $emonth = $cgi->param('end_month'); # || $curmon+1; +% +%#XXX or virtual +%my( $agentnum, $sel_agent ) = ('', ''); +%if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { +% $agentnum = $1; +% $sel_agent = qsearchs('agent', { 'agentnum' => $agentnum } ); +% die "agentnum $agentnum not found!" unless $sel_agent; +%} +%my $title = $sel_agent ? $sel_agent->agent.' ' : ''; +% +%#false lazinessish w/search/cust_pkg.cgi +%my $classnum = 0; +%my @pkg_class = (); +%if ( $cgi->param('classnum') =~ /^(\d*)$/ ) { +% $classnum = $1; +% if ( $classnum ) { +% @pkg_class = ( qsearchs('pkg_class', { 'classnum' => $classnum } ) ); +% die "classnum $classnum not found!" unless $pkg_class[0]; +% $title .= $pkg_class[0]->classname.' '; +% } elsif ( $classnum eq '' ) { +% $title .= 'Empty class '; +% @pkg_class = ( '(empty class)' ); +% } elsif ( $classnum eq '0' ) { +% @pkg_class = qsearch('pkg_class', {} ); # { 'disabled' => '' } ); +% push @pkg_class, '(empty class)'; +% } +%} +%#eslaf +% +%my $hue = 0; +%#my $hue_increment = 170; +%#my $hue_increment = 145; +%my $hue_increment = 125; +% +%my @items = (); +%my @params = (); +%my @labels = (); +%my @colors = (); +%my @links = (); +% +%my $link = "${p}search/cust_bill_pkg.cgi?nottax=1;include_comp_cust=1"; +% +%foreach my $agent ( $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) { +% +% my $col_scheme = Color::Scheme->new +% ->from_hue($hue) #->from_hex($agent->color) +% ->scheme('analogic') +% ; +% my @recur_colors = (); +% my @onetime_colors = (); +% +% ### fixup the color handling for package classes... +% my $n = 0; +% +% foreach my $pkg_class ( @pkg_class ) { +% +% push @items, 'cust_bill_pkg'; +% +% +% push @labels, +% ( $sel_agent ? '' : $agent->agent.' ' ). +% ( $classnum eq '0' +% ? ( ref($pkg_class) ? $pkg_class->classname : $pkg_class ) +% : '' +% ); +% +% my $row_classnum = ref($pkg_class) ? $pkg_class->classnum : 0; +% my $row_agentnum = $agent->agentnum; +% push @params, [ 'classnum' => $row_classnum, +% 'agentnum' => $row_agentnum, +% ]; +% +% push @links, "$link;agentnum=$row_agentnum;classnum=$row_classnum;"; +% +% @recur_colors = ($col_scheme->colors)[0,4,8,1,5,9] +% unless @recur_colors; +% @onetime_colors = ($col_scheme->colors)[2,6,10,3,7,11] +% unless @onetime_colors; +% push @colors, shift @recur_colors; +% +% } +% +% $hue += $hue_increment; +% +%} +% +%#use Data::Dumper; +%#warn Dumper(\@items); +% +% +<% include('elements/monthly.html', 'title' => $title. 'Sales Report (Gross)', 'graph_type' => 'Mountain', 'items' => \@items, diff --git a/httemplate/graph/elements/monthly.html b/httemplate/graph/elements/monthly.html index 3b9f73aa1..f5789a2a2 100644 --- a/httemplate/graph/elements/monthly.html +++ b/httemplate/graph/elements/monthly.html @@ -1,206 +1,207 @@ -<% - - # options example... - # - # 'title' => 'Page title', - # 'items' => \@items, - # 'params' => \@params, # opt, - # 'labels' => \@labels, # or \%labels (keys are items) - # 'graph_labels' => \@graph_labels, # or \%graph_labels, - # 'colors' => \@colors, # or \%colors, - # 'links => \@links, # or \%link, #opt - # 'start_month' => $smonth, - # 'start_year' => $syear, - # 'end_month' => $emonth, - # 'end_year' => $eyear, - # 'agentnum' => $agentnum, #opt - # 'nototal' => 1, #opt, - # 'graph_type' => 'LinesPoints', #opt - # 'remove_empty' => 1, #opt, - # 'bottom_total' => 1, #opt, - - my(%opt) = @_; - my @items = @{ $opt{'items'} }; - - foreach my $other (qw( labels graph_labels colors links )) { - #foreach my $other (qw( labels graph_labels colors )) { - if ( ref($opt{$other}) eq 'HASH' ) { - $opt{$other} = [ map $opt{$other}{$_}, @items ]; - } - } - - my $report = new FS::Report::Table::Monthly ( - - #'items' => $opt{'items'}, - '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'}, - ); - my $data = $report->data; - - if ( $cgi->param('_type') =~ /^(png)$/ ) { - - #my $chart = Chart::LinesPoints->new(1024,480); - #my $chart = Chart::LinesPoints->new(768,480); - - my $graph_type = 'LinesPoints'; - if ( $opt{'graph_type'} =~ /^(LinesPoints|Mountain)$/ ) { - $graph_type = $1; - } - my $class = "Chart::$graph_type"; - - my $chart = $class->new(976,384); - - my $d = 0; - $chart->set( - #'min_val' => 0, - 'legend' => 'bottom', - 'colors' => { ( - map { my $color = $_; - 'dataset'.$d++ => - [ map hex($_), unpack 'a2a2a2', $color ] - } - #@{ $opt{'colors'} } - @{ $data->{'colors'} } - ), - #'grey_background' => [ 211, 211, 211 ], - 'grey_background' => 'white', - 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey - }, - #'grey_background' => 'false', - 'legend_labels' => $data->{'item_labels'}, - 'brush_size' => 4, - #'pt_size' => 12, - ); - - #my @data = map { $data->{$_} } ( 'label', @items ); - my @data = @{ $data->{data} }; - unshift @data, $data->{'label'}; - - http_header('Content-Type' => 'image/png' ); - - $chart->_set_colors(); - - %><%= $chart->scalar_png(\@data) %><% - - } else { - - my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); - -%><%= include('/elements/header.html', $opt{'title'} ) %> - -<% $cgi->param('_type', 'png'); %> - +% +% +% # options example... +% # +% # 'title' => 'Page title', +% # 'items' => \@items, +% # 'params' => \@params, # opt, +% # 'labels' => \@labels, # or \%labels (keys are items) +% # 'graph_labels' => \@graph_labels, # or \%graph_labels, +% # 'colors' => \@colors, # or \%colors, +% # 'links => \@links, # or \%link, #opt +% # 'start_month' => $smonth, +% # 'start_year' => $syear, +% # 'end_month' => $emonth, +% # 'end_year' => $eyear, +% # 'agentnum' => $agentnum, #opt +% # 'nototal' => 1, #opt, +% # 'graph_type' => 'LinesPoints', #opt +% # 'remove_empty' => 1, #opt, +% # 'bottom_total' => 1, #opt, +% +% my(%opt) = @_; +% my @items = @{ $opt{'items'} }; +% +% foreach my $other (qw( labels graph_labels colors links )) { +% #foreach my $other (qw( labels graph_labels colors )) { +% if ( ref($opt{$other}) eq 'HASH' ) { +% $opt{$other} = [ map $opt{$other}{$_}, @items ]; +% } +% } +% +% my $report = new FS::Report::Table::Monthly ( +% +% #'items' => $opt{'items'}, +% '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'}, +% ); +% my $data = $report->data; +% +% if ( $cgi->param('_type') =~ /^(png)$/ ) { +% +% #my $chart = Chart::LinesPoints->new(1024,480); +% #my $chart = Chart::LinesPoints->new(768,480); +% +% my $graph_type = 'LinesPoints'; +% if ( $opt{'graph_type'} =~ /^(LinesPoints|Mountain)$/ ) { +% $graph_type = $1; +% } +% my $class = "Chart::$graph_type"; +% +% my $chart = $class->new(976,384); +% +% my $d = 0; +% $chart->set( +% #'min_val' => 0, +% 'legend' => 'bottom', +% 'colors' => { ( +% map { my $color = $_; +% 'dataset'.$d++ => +% [ map hex($_), unpack 'a2a2a2', $color ] +% } +% #@{ $opt{'colors'} } +% @{ $data->{'colors'} } +% ), +% #'grey_background' => [ 211, 211, 211 ], +% 'grey_background' => 'white', +% 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey +% }, +% #'grey_background' => 'false', +% 'legend_labels' => $data->{'item_labels'}, +% 'brush_size' => 4, +% #'pt_size' => 12, +% ); +% +% #my @data = map { $data->{$_} } ( 'label', @items ); +% my @data = @{ $data->{data} }; +% unshift @data, $data->{'label'}; +% +% http_header('Content-Type' => 'image/png' ); +% +% $chart->_set_colors(); +% +% +<% $chart->scalar_png(\@data) %> +% +% +% } else { +% +% my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); +% +% +<% include('/elements/header.html', $opt{'title'} ) %> +% $cgi->param('_type', 'png'); + +
-<%= table('e8e8e8') %> +<% table('e8e8e8') %> +% foreach my $column ( @{$data->{label}} ) { +% #$column =~ s/^(\d+)\//$mon[$1-1]
/e; +% $column =~ s/^(\d+)\//$mon[$1-1]
/; +% - <% foreach my $column ( @{$data->{label}} ) { - #$column =~ s/^(\d+)\//$mon[$1-1]
/e; - $column =~ s/^(\d+)\//$mon[$1-1]
/; - %> - <%= $column %> - <% } %> + <% $column %> +% } +% unless ( $opt{'nototal'} ) { - <% unless ( $opt{'nototal'} ) { %> Total - <% } %> +% } - -<% my @bottom_total = (); - foreach my $row ( @{ $data->{'items'} } ) { + +% my @bottom_total = (); +% foreach my $row ( @{ $data->{'items'} } ) { +% +% #my $color = shift( @{ $opt{'colors'} } ); +% my $color = shift( @{ $data->{'colors'} } ); +% my $link = shift( @{ $data->{'links'} } ); +% $link = $link ? qq( - <%= shift( @{ $data->{'item_labels'} } ) %> + <% shift( @{ $data->{'item_labels'} } ) %> +% #my $link = exists($opt{'links'}{$row}) +% # ? qq({speriod}}; - my @eperiod = @{$data->{eperiod}}; - my $total = 0; - %> - <% my $col = 0; - foreach my $column ( @{ shift( @{$data->{data}} ) } ) { # ( @{$data->{$row}} ) { - %> - <%= $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %>$<%= sprintf("%.2f", $column) %><%= $link ? '' : '' %> + <% $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %>$<% sprintf("%.2f", $column) %><% $link ? '' : '' %> - <% - $total += $column; - $bottom_total[$col++] += $column; - %> - - <% } %> +% +% $total += $column; +% $bottom_total[$col++] += $column; +% +% } +% unless ( $opt{'nototal'} ) { - <% unless ( $opt{'nototal'} ) { %> - <%= $link ? $link. 'begin='. ${$data->{speriod}}[0]. ';end='. ${$data->{eperiod}}[-1]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + <% $link ? $link. 'begin='. ${$data->{speriod}}[0]. ';end='. ${$data->{eperiod}}[-1]. '">' : '' %>$<% sprintf("%.2f", $total) %><% $link ? '' : '' %> +% $bottom_total[$col++] += $total; +% } - <% $bottom_total[$col++] += $total; %> - - <% } %> +% } +% if ( $opt{'bottom_total'} ) { +% my @speriod = ( @{$data->{speriod}}, ${$data->{speriod}}[0] ); +% my @eperiod = ( @{$data->{eperiod}}, ${$data->{eperiod}}[-1] ); +% -<% } %> - -<% if ( $opt{'bottom_total'} ) { - my @speriod = ( @{$data->{speriod}}, ${$data->{speriod}}[0] ); - my @eperiod = ( @{$data->{eperiod}}, ${$data->{eperiod}}[-1] ); -%> Total +% foreach my $total ( @bottom_total ) { - <% foreach my $total ( @bottom_total ) { %> - <%= $opt{'bottom_link'} + <% $opt{'bottom_link'} ? '' : '' - %>$<%= sprintf("%.2f", $total) %><%= $opt{'bottom_link'} ? '' : '' %> + %>$<% sprintf("%.2f", $total) %><% $opt{'bottom_link'} ? '' : '' %> +% } - <% } %> +% } -<% } %> -<%= include('/elements/footer.html') %> +<% include('/elements/footer.html') %> +% } -<% } %> diff --git a/httemplate/graph/money_time.cgi b/httemplate/graph/money_time.cgi index f085c2264..829b1e66f 100644 --- a/httemplate/graph/money_time.cgi +++ b/httemplate/graph/money_time.cgi @@ -1,68 +1,69 @@ -<% - -#find first month -my $syear = $cgi->param('start_year'); # || 1899+$curyear; -my $smonth = $cgi->param('start_month'); # || $curmon+1; - -#find last month -my $eyear = $cgi->param('end_year'); # || 1900+$curyear; -my $emonth = $cgi->param('end_month'); # || $curmon+1; - -#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 @items = qw( invoiced netsales credits payments receipts ); -if ( $cgi->param('12mo') == 1 ) { - @items = map $_.'_12mo', @items; -} - -my %label = ( - 'invoiced' => 'Gross Sales', - 'netsales' => 'Net Sales', - 'credits' => 'Credits', - 'payments' => 'Gross Receipts', - 'receipts' => 'Net Receipts', -); - -my %graph_suffix = ( - 'invoiced' => ' (invoiced)', - 'netsales' => ' (invoiced - applied credits)', - 'credits' => '', - 'payments' => ' (payments)', - 'receipts' => '/Cashflow (payments - refunds)', -); -my %graph_label = map { $_ => $label{$_}.$graph_suffix{$_} } keys %label; - -$label{$_.'_12mo'} = $label{$_}. " (previous 12 months)" - foreach keys %label; - -$graph_label{$_.'_12mo'} = $graph_label{$_}. " (previous 12 months)" - foreach keys %graph_label; - -my %color = ( - 'invoiced' => '9999ff', #light blue - 'netsales' => '0000cc', #blue - 'credits' => 'cc0000', #red - '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? - -%><%= include('elements/monthly.html', +% +% +%#find first month +%my $syear = $cgi->param('start_year'); # || 1899+$curyear; +%my $smonth = $cgi->param('start_month'); # || $curmon+1; +% +%#find last month +%my $eyear = $cgi->param('end_year'); # || 1900+$curyear; +%my $emonth = $cgi->param('end_month'); # || $curmon+1; +% +%#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 @items = qw( invoiced netsales credits payments receipts ); +%if ( $cgi->param('12mo') == 1 ) { +% @items = map $_.'_12mo', @items; +%} +% +%my %label = ( +% 'invoiced' => 'Gross Sales', +% 'netsales' => 'Net Sales', +% 'credits' => 'Credits', +% 'payments' => 'Gross Receipts', +% 'receipts' => 'Net Receipts', +%); +% +%my %graph_suffix = ( +% 'invoiced' => ' (invoiced)', +% 'netsales' => ' (invoiced - applied credits)', +% 'credits' => '', +% 'payments' => ' (payments)', +% 'receipts' => '/Cashflow (payments - refunds)', +%); +%my %graph_label = map { $_ => $label{$_}.$graph_suffix{$_} } keys %label; +% +%$label{$_.'_12mo'} = $label{$_}. " (previous 12 months)" +% foreach keys %label; +% +%$graph_label{$_.'_12mo'} = $graph_label{$_}. " (previous 12 months)" +% foreach keys %graph_label; +% +%my %color = ( +% 'invoiced' => '9999ff', #light blue +% 'netsales' => '0000cc', #blue +% 'credits' => 'cc0000', #red +% '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? +% +% +<% include('elements/monthly.html', 'title' => $agentname. 'Sales, Credits and Receipts Summary', 'items' => \@items, diff --git a/httemplate/graph/report_cust_bill_pkg.html b/httemplate/graph/report_cust_bill_pkg.html index 4f29b761f..664aab74e 100644 --- a/httemplate/graph/report_cust_bill_pkg.html +++ b/httemplate/graph/report_cust_bill_pkg.html @@ -1,14 +1,14 @@ -<%= include('/elements/header.html', 'Sales Report' ) %> +<% include('/elements/header.html', 'Sales Report' ) %>
-<%= include('/elements/tr-select-from_to.html' ) %> +<% include('/elements/tr-select-from_to.html' ) %> -<%= include('/elements/tr-select-agent.html', 'label' => 'For agent: ' ) %> +<% include('/elements/tr-select-agent.html', 'label' => 'For agent: ' ) %> -<%= include('/elements/tr-select-pkg_class.html', '', +<% include('/elements/tr-select-pkg_class.html', '', 'pre_options' => [ '0' => 'all' ], 'empty_label' => '(empty class)', ) @@ -26,4 +26,4 @@
-<%= include('/elements/footer.html') %> +<% include('/elements/footer.html') %> diff --git a/httemplate/graph/report_money_time.html b/httemplate/graph/report_money_time.html index 564749686..b80696b65 100644 --- a/httemplate/graph/report_money_time.html +++ b/httemplate/graph/report_money_time.html @@ -1,4 +1,4 @@ -<%= include('/elements/header.html', 'Sales, Credits and Receipts Summary' ) %> +<% include('/elements/header.html', 'Sales, Credits and Receipts Summary' ) %> @@ -16,9 +16,9 @@
-<%= include('/elements/tr-select-from_to.html' ) %> +<% include('/elements/tr-select-from_to.html' ) %> -<%= include('/elements/tr-select-agent.html', '', 'label' => 'For agent: ' ) %> +<% include('/elements/tr-select-agent.html', '', 'label' => 'For agent: ' ) %> @@ -30,4 +30,4 @@
-<%= include('/elements/footer.html') %> +<% include('/elements/footer.html') %> -- cgit v1.2.1 From 00d879f025283fd06f5ceaf427cc51fef71620f8 Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 29 Dec 2006 21:48:49 +0000 Subject: correct bad include, and improve no agent selected condition --- httemplate/graph/report_cust_bill_pkg.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'httemplate/graph') diff --git a/httemplate/graph/report_cust_bill_pkg.html b/httemplate/graph/report_cust_bill_pkg.html index 664aab74e..c81e1e0e8 100644 --- a/httemplate/graph/report_cust_bill_pkg.html +++ b/httemplate/graph/report_cust_bill_pkg.html @@ -6,7 +6,7 @@ <% include('/elements/tr-select-from_to.html' ) %> -<% include('/elements/tr-select-agent.html', 'label' => 'For agent: ' ) %> +<% include('/elements/tr-select-agent.html', '', 'label' => 'For agent: ' ) %> <% include('/elements/tr-select-pkg_class.html', '', 'pre_options' => [ '0' => 'all' ], -- cgit v1.2.1 From 590603ecaea3184f64530755a76626be8205da49 Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 3 Feb 2007 11:36:30 +0000 Subject: add customer status column to customer & most other reports. also put the C in ACL in the search/ and graph/ directories. --- httemplate/graph/cust_bill_pkg.cgi | 202 +++++++++++++++-------------- httemplate/graph/money_time.cgi | 134 +++++++++---------- httemplate/graph/report_cust_bill_pkg.html | 6 + httemplate/graph/report_money_time.html | 6 + 4 files changed, 183 insertions(+), 165 deletions(-) (limited to 'httemplate/graph') diff --git a/httemplate/graph/cust_bill_pkg.cgi b/httemplate/graph/cust_bill_pkg.cgi index ea5ae0b2b..4070069ac 100644 --- a/httemplate/graph/cust_bill_pkg.cgi +++ b/httemplate/graph/cust_bill_pkg.cgi @@ -1,103 +1,3 @@ -% -% -% -%#find first month -%my $syear = $cgi->param('start_year'); # || 1899+$curyear; -%my $smonth = $cgi->param('start_month'); # || $curmon+1; -% -%#find last month -%my $eyear = $cgi->param('end_year'); # || 1900+$curyear; -%my $emonth = $cgi->param('end_month'); # || $curmon+1; -% -%#XXX or virtual -%my( $agentnum, $sel_agent ) = ('', ''); -%if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { -% $agentnum = $1; -% $sel_agent = qsearchs('agent', { 'agentnum' => $agentnum } ); -% die "agentnum $agentnum not found!" unless $sel_agent; -%} -%my $title = $sel_agent ? $sel_agent->agent.' ' : ''; -% -%#false lazinessish w/search/cust_pkg.cgi -%my $classnum = 0; -%my @pkg_class = (); -%if ( $cgi->param('classnum') =~ /^(\d*)$/ ) { -% $classnum = $1; -% if ( $classnum ) { -% @pkg_class = ( qsearchs('pkg_class', { 'classnum' => $classnum } ) ); -% die "classnum $classnum not found!" unless $pkg_class[0]; -% $title .= $pkg_class[0]->classname.' '; -% } elsif ( $classnum eq '' ) { -% $title .= 'Empty class '; -% @pkg_class = ( '(empty class)' ); -% } elsif ( $classnum eq '0' ) { -% @pkg_class = qsearch('pkg_class', {} ); # { 'disabled' => '' } ); -% push @pkg_class, '(empty class)'; -% } -%} -%#eslaf -% -%my $hue = 0; -%#my $hue_increment = 170; -%#my $hue_increment = 145; -%my $hue_increment = 125; -% -%my @items = (); -%my @params = (); -%my @labels = (); -%my @colors = (); -%my @links = (); -% -%my $link = "${p}search/cust_bill_pkg.cgi?nottax=1;include_comp_cust=1"; -% -%foreach my $agent ( $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) { -% -% my $col_scheme = Color::Scheme->new -% ->from_hue($hue) #->from_hex($agent->color) -% ->scheme('analogic') -% ; -% my @recur_colors = (); -% my @onetime_colors = (); -% -% ### fixup the color handling for package classes... -% my $n = 0; -% -% foreach my $pkg_class ( @pkg_class ) { -% -% push @items, 'cust_bill_pkg'; -% -% -% push @labels, -% ( $sel_agent ? '' : $agent->agent.' ' ). -% ( $classnum eq '0' -% ? ( ref($pkg_class) ? $pkg_class->classname : $pkg_class ) -% : '' -% ); -% -% my $row_classnum = ref($pkg_class) ? $pkg_class->classnum : 0; -% my $row_agentnum = $agent->agentnum; -% push @params, [ 'classnum' => $row_classnum, -% 'agentnum' => $row_agentnum, -% ]; -% -% push @links, "$link;agentnum=$row_agentnum;classnum=$row_classnum;"; -% -% @recur_colors = ($col_scheme->colors)[0,4,8,1,5,9] -% unless @recur_colors; -% @onetime_colors = ($col_scheme->colors)[2,6,10,3,7,11] -% unless @onetime_colors; -% push @colors, shift @recur_colors; -% -% } -% -% $hue += $hue_increment; -% -%} -% -%#use Data::Dumper; -%#warn Dumper(\@items); -% -% <% include('elements/monthly.html', 'title' => $title. 'Sales Report (Gross)', 'graph_type' => 'Mountain', @@ -117,3 +17,105 @@ 'agentnum' => $agentnum, ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Financial reports'); + +#find first month +my $syear = $cgi->param('start_year'); # || 1899+$curyear; +my $smonth = $cgi->param('start_month'); # || $curmon+1; + +#find last month +my $eyear = $cgi->param('end_year'); # || 1900+$curyear; +my $emonth = $cgi->param('end_month'); # || $curmon+1; + +#XXX or virtual +my( $agentnum, $sel_agent ) = ('', ''); +if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { + $agentnum = $1; + $sel_agent = qsearchs('agent', { 'agentnum' => $agentnum } ); + die "agentnum $agentnum not found!" unless $sel_agent; +} +my $title = $sel_agent ? $sel_agent->agent.' ' : ''; + +#false lazinessish w/search/cust_pkg.cgi +my $classnum = 0; +my @pkg_class = (); +if ( $cgi->param('classnum') =~ /^(\d*)$/ ) { + $classnum = $1; + if ( $classnum ) { + @pkg_class = ( qsearchs('pkg_class', { 'classnum' => $classnum } ) ); + die "classnum $classnum not found!" unless $pkg_class[0]; + $title .= $pkg_class[0]->classname.' '; + } elsif ( $classnum eq '' ) { + $title .= 'Empty class '; + @pkg_class = ( '(empty class)' ); + } elsif ( $classnum eq '0' ) { + @pkg_class = qsearch('pkg_class', {} ); # { 'disabled' => '' } ); + push @pkg_class, '(empty class)'; + } +} +#eslaf + +my $hue = 0; +#my $hue_increment = 170; +#my $hue_increment = 145; +my $hue_increment = 125; + +my @items = (); +my @params = (); +my @labels = (); +my @colors = (); +my @links = (); + +my $link = "${p}search/cust_bill_pkg.cgi?nottax=1;include_comp_cust=1"; + +foreach my $agent ( $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) { + + my $col_scheme = Color::Scheme->new + ->from_hue($hue) #->from_hex($agent->color) + ->scheme('analogic') + ; + my @recur_colors = (); + my @onetime_colors = (); + + ### fixup the color handling for package classes... + my $n = 0; + + foreach my $pkg_class ( @pkg_class ) { + + push @items, 'cust_bill_pkg'; + + + push @labels, + ( $sel_agent ? '' : $agent->agent.' ' ). + ( $classnum eq '0' + ? ( ref($pkg_class) ? $pkg_class->classname : $pkg_class ) + : '' + ); + + my $row_classnum = ref($pkg_class) ? $pkg_class->classnum : 0; + my $row_agentnum = $agent->agentnum; + push @params, [ 'classnum' => $row_classnum, + 'agentnum' => $row_agentnum, + ]; + + push @links, "$link;agentnum=$row_agentnum;classnum=$row_classnum;"; + + @recur_colors = ($col_scheme->colors)[0,4,8,1,5,9] + unless @recur_colors; + @onetime_colors = ($col_scheme->colors)[2,6,10,3,7,11] + unless @onetime_colors; + push @colors, shift @recur_colors; + + } + + $hue += $hue_increment; + +} + +#use Data::Dumper; +#warn Dumper(\@items); + + diff --git a/httemplate/graph/money_time.cgi b/httemplate/graph/money_time.cgi index 829b1e66f..2b98af838 100644 --- a/httemplate/graph/money_time.cgi +++ b/httemplate/graph/money_time.cgi @@ -1,68 +1,3 @@ -% -% -%#find first month -%my $syear = $cgi->param('start_year'); # || 1899+$curyear; -%my $smonth = $cgi->param('start_month'); # || $curmon+1; -% -%#find last month -%my $eyear = $cgi->param('end_year'); # || 1900+$curyear; -%my $emonth = $cgi->param('end_month'); # || $curmon+1; -% -%#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 @items = qw( invoiced netsales credits payments receipts ); -%if ( $cgi->param('12mo') == 1 ) { -% @items = map $_.'_12mo', @items; -%} -% -%my %label = ( -% 'invoiced' => 'Gross Sales', -% 'netsales' => 'Net Sales', -% 'credits' => 'Credits', -% 'payments' => 'Gross Receipts', -% 'receipts' => 'Net Receipts', -%); -% -%my %graph_suffix = ( -% 'invoiced' => ' (invoiced)', -% 'netsales' => ' (invoiced - applied credits)', -% 'credits' => '', -% 'payments' => ' (payments)', -% 'receipts' => '/Cashflow (payments - refunds)', -%); -%my %graph_label = map { $_ => $label{$_}.$graph_suffix{$_} } keys %label; -% -%$label{$_.'_12mo'} = $label{$_}. " (previous 12 months)" -% foreach keys %label; -% -%$graph_label{$_.'_12mo'} = $graph_label{$_}. " (previous 12 months)" -% foreach keys %graph_label; -% -%my %color = ( -% 'invoiced' => '9999ff', #light blue -% 'netsales' => '0000cc', #blue -% 'credits' => 'cc0000', #red -% '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? -% -% <% include('elements/monthly.html', 'title' => $agentname. 'Sales, Credits and Receipts Summary', @@ -79,3 +14,72 @@ 'nototal' => scalar($cgi->param('12mo')), ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Financial reports'); + +#find first month +my $syear = $cgi->param('start_year'); # || 1899+$curyear; +my $smonth = $cgi->param('start_month'); # || $curmon+1; + +#find last month +my $eyear = $cgi->param('end_year'); # || 1900+$curyear; +my $emonth = $cgi->param('end_month'); # || $curmon+1; + +#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 @items = qw( invoiced netsales credits payments receipts ); +if ( $cgi->param('12mo') == 1 ) { + @items = map $_.'_12mo', @items; +} + +my %label = ( + 'invoiced' => 'Gross Sales', + 'netsales' => 'Net Sales', + 'credits' => 'Credits', + 'payments' => 'Gross Receipts', + 'receipts' => 'Net Receipts', +); + +my %graph_suffix = ( + 'invoiced' => ' (invoiced)', + 'netsales' => ' (invoiced - applied credits)', + 'credits' => '', + 'payments' => ' (payments)', + 'receipts' => '/Cashflow (payments - refunds)', +); +my %graph_label = map { $_ => $label{$_}.$graph_suffix{$_} } keys %label; + +$label{$_.'_12mo'} = $label{$_}. " (previous 12 months)" + foreach keys %label; + +$graph_label{$_.'_12mo'} = $graph_label{$_}. " (previous 12 months)" + foreach keys %graph_label; + +my %color = ( + 'invoiced' => '9999ff', #light blue + 'netsales' => '0000cc', #blue + 'credits' => 'cc0000', #red + '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? + + diff --git a/httemplate/graph/report_cust_bill_pkg.html b/httemplate/graph/report_cust_bill_pkg.html index c81e1e0e8..c18e94d5d 100644 --- a/httemplate/graph/report_cust_bill_pkg.html +++ b/httemplate/graph/report_cust_bill_pkg.html @@ -27,3 +27,9 @@ <% include('/elements/footer.html') %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Financial reports'); + + diff --git a/httemplate/graph/report_money_time.html b/httemplate/graph/report_money_time.html index b80696b65..652d7152e 100644 --- a/httemplate/graph/report_money_time.html +++ b/httemplate/graph/report_money_time.html @@ -31,3 +31,9 @@ <% include('/elements/footer.html') %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Financial reports'); + + -- cgit v1.2.1