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.cgi | 104 +++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 httemplate/graph/cust_bill_pkg.cgi (limited to 'httemplate/graph/cust_bill_pkg.cgi') 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, + ) +%> -- 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.cgi | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) (limited to 'httemplate/graph/cust_bill_pkg.cgi') 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, -- 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/cust_bill_pkg.cgi') 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 +++++++++++++++++++------------------ 1 file changed, 101 insertions(+), 100 deletions(-) (limited to 'httemplate/graph/cust_bill_pkg.cgi') 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, -- 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 +++++++++++++++++++------------------ 1 file changed, 102 insertions(+), 100 deletions(-) (limited to 'httemplate/graph/cust_bill_pkg.cgi') 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); + + -- cgit v1.2.1