%# still not a good way to do rows grouped by some field in a search.html
%# report
<& /elements/header.html, $title &>
<& /elements/table-grid.html &>
Package |
Sales |
Percentage |
Commission |
% my ($custnum, $sales, $commission, $row, $bgcolor) = (0, 0, 0, 0);
% foreach my $cust_pkg ( @cust_pkg ) {
% if ( $custnum ne $cust_pkg->custnum ) {
% # start of a new customer section
% my $cust_main = $cust_pkg->cust_main;
% my $label = $cust_main->custnum . ': '. $cust_main->name;
% $bgcolor = 0;
<% $label %>
|
% }
<% $cust_pkg->pkg_label %> |
<% sprintf('%.2f', $cust_pkg->sum_charged) %> |
<% $cust_pkg->percent %>% |
<% sprintf('%.2f',
$cust_pkg->sum_charged * $cust_pkg->percent / 100) %> |
% $sales += $cust_pkg->sum_charged;
% $commission += $cust_pkg->sum_charged * $cust_pkg->percent / 100;
% $row++;
% $bgcolor = 1-$bgcolor;
% $custnum = $cust_pkg->custnum;
% }
<% emt('[quant,_1,package] with commission', $row) %>
|
<% sprintf('%.2f', $sales) %> |
|
<% sprintf('%.2f', $commission) %> |
<& /elements/footer.html &>
<%init>
die "access denied"
unless $FS::CurrentUser::CurrentUser->access_right('Financial reports');
my ($begin, $end) = FS::UI::Web::parse_beginning_ending($cgi);
$cgi->param('agentnum') =~ /^(\d+)$/ or die "bad agentnum";
my $agentnum = $1;
my $agent = FS::agent->by_key($agentnum);
my $title = $agent->agent . ' commissions';
my $sum_charged =
'(SELECT SUM(setup + recur) FROM cust_bill_pkg JOIN cust_bill USING (invnum)'.
'WHERE cust_bill_pkg.pkgnum = cust_pkg.pkgnum AND '.
"cust_bill._date >= $begin AND cust_bill._date < $end)";
my @select = (
'cust_pkg.*',
'agent_pkg_class.commission_percent AS percent',
"$sum_charged AS sum_charged",
);
my $query = {
'table' => 'cust_pkg',
'select' => join(',', @select),
'addl_from' => 'JOIN cust_main USING (custnum) '.
'JOIN part_pkg USING (pkgpart) '.
'JOIN agent_pkg_class ON ( '.
'cust_main.agentnum = agent_pkg_class.agentnum AND '.
'( agent_pkg_class.classnum = part_pkg.classnum OR '.
'(agent_pkg_class IS NULL AND part_pkg.classnum IS NULL)'.
' ) ) ',
'extra_sql' => "WHERE cust_main.agentnum = $agentnum AND ".
'agent_pkg_class.commission_percent > 0 AND '.
"$sum_charged > 0",
'order_by' => 'ORDER BY cust_pkg.custnum ASC',
};
my @cust_pkg = qsearch($query);
my $money_char = FS::Conf->new->config('money_char') || '$';
#my $count_query =
# 'SELECT COUNT(*) FROM cust_pkg '.$query->{'addl_from'}.$query->{'extra_sql'}.
# ' AND EXISTS(SELECT 1 FROM cust_bill_pkg JOIN cust_bill USING (invnum) '.
# ' WHERE cust_bill_pkg.pkgnum = cust_pkg.pkgnum AND '.
# "cust_bill._date >= $begin AND cust_bill._date < $end".
# ')';
%init>