diff options
Diffstat (limited to 'httemplate/graph')
-rwxr-xr-x | httemplate/graph/money_time-graph.cgi | 68 | ||||
-rw-r--r-- | httemplate/graph/money_time.cgi | 125 |
2 files changed, 193 insertions, 0 deletions
diff --git a/httemplate/graph/money_time-graph.cgi b/httemplate/graph/money_time-graph.cgi new file mode 100755 index 000000000..bb3d23aae --- /dev/null +++ b/httemplate/graph/money_time-graph.cgi @@ -0,0 +1,68 @@ +<% + +#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++; } + +#my @labels; +#my %data; + +my @items = qw( invoiced netsales credits payments receipts ); +my %label = ( + 'invoiced' => 'Gross Sales (invoiced)', + 'netsales' => 'Net Sales (invoiced - applied credits)', + 'credits' => 'Credits', + 'payments' => 'Gross Receipts (payments)', + 'receipts' => 'Net Receipts/Cashflow (payments - refunds)', +); +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 +); + +my $report = new FS::Report::Table::Monthly ( + 'items' => \@items, + 'start_month' => $smonth, + 'start_year' => $syear, + 'end_month' => $emonth, + 'end_year' => $eyear, +); +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 new file mode 100644 index 000000000..1c7d54266 --- /dev/null +++ b/httemplate/graph/money_time.cgi @@ -0,0 +1,125 @@ +<!-- mason kludge --> +<% + +#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; + +%> + +<HTML> + <HEAD> + <TITLE>Sales, Credits and Receipts Summary</TITLE> + </HEAD> +<BODY BGCOLOR="#e8e8e8"> +<IMG SRC="money_time-graph.cgi?<%= $cgi->query_string %>" WIDTH="976" HEIGHT="384"> +<BR> + +<%= table('e8e8e8') %> +<% + +my @items = qw( invoiced netsales credits payments receipts ); +my %label = ( + 'invoiced' => 'Gross Sales', + 'netsales' => 'Net Sales', + 'credits' => 'Credits', + 'payments' => 'Gross Receipts', + 'receipts' => 'Net Receipts', +); +my %color = ( + 'invoiced' => '9999ff', #light blue + 'netsales' => '0000cc', #blue + 'credits' => 'cc0000', #red + 'payments' => '99cc99', #light green + '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;", +); + +my $report = new FS::Report::Table::Monthly ( + 'items' => \@items, + 'start_month' => $smonth, + 'start_year' => $syear, + 'end_month' => $emonth, + 'end_year' => $eyear, +); +my $data = $report->data; + +my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); + +%> + +<TR><TD></TD> +<% foreach my $column ( @{$data->{label}} ) { + #$column =~ s/^(\d+)\//$mon[$1-1]<BR>/e; + $column =~ s/^(\d+)\//$mon[$1-1]<BR>/; + %> + <TH><%= $column %></TH> +<% } %> +</TR> + +<% foreach my $row (@items) { %> + <TR><TH><FONT COLOR="#<%= $color{$row} %>"><%= $label{$row} %></FONT></TH> + <% my $link = exists($link{$row}) + ? qq(<A HREF="$link{$row}) + : ''; + my @speriod = @{$data->{speriod}}; + my @eperiod = @{$data->{eperiod}}; + %> + <% foreach my $column ( @{$data->{$row}} ) { %> + <TD ALIGN="right" BGCOLOR="#ffffff"> + <%= $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %><FONT COLOR="#<%= $color{$row} %>">$<%= sprintf("%.2f", $column) %></FONT><%= $link ? '</A>' : '' %> + </TD> + <% } %> + </TR> +<% } %> +</TABLE> + +<BR> +<FORM METHOD="POST"> +<!-- +<INPUT TYPE="checkbox" NAME="ar"> + Accounts receivable (invoices - applied credits)<BR> +<INPUT TYPE="checkbox" NAME="charged"> + Just Invoices<BR> +<INPUT TYPE="checkbox" NAME="defer"> + Accounts receivable, with deferred revenue (invoices - applied credits, with charges for annual/semi-annual/quarterly/etc. services deferred over applicable time period) (there has got to be a shorter description for this)<BR> +<INPUT TYPE="checkbox" NAME="cash"> + Cashflow (payments - refunds)<BR> +<BR> +--> +From <SELECT NAME="smonth"> +<% foreach my $mon ( 1..12 ) { %> +<OPTION VALUE="<%= $mon %>"<%= $mon == $smonth ? ' SELECTED' : '' %>><%= $mon[$mon-1] %> +<% } %> +</SELECT> +<SELECT NAME="syear"> +<% foreach my $y ( 1999 .. 2010 ) { %> +<OPTION VALUE="<%= $y %>"<%= $y == $syear ? ' SELECTED' : '' %>><%= $y %> +<% } %> +</SELECT> + to <SELECT NAME="emonth"> +<% foreach my $mon ( 1..12 ) { %> +<OPTION VALUE="<%= $mon %>"<%= $mon == $emonth ? ' SELECTED' : '' %>><%= $mon[$mon-1] %> +<% } %> +</SELECT> +<SELECT NAME="eyear"> +<% foreach my $y ( 1999 .. 2010 ) { %> +<OPTION VALUE="<%= $y %>"<%= $y == $eyear ? ' SELECTED' : '' %>><%= $y %> +<% } %> +</SELECT> + +<INPUT TYPE="submit" VALUE="Redisplay"> +</FORM> +</BODY> +</HTML> |