diff options
Diffstat (limited to 'httemplate/search')
-rw-r--r-- | httemplate/search/cust_bill_pkg_discount.html | 64 | ||||
-rw-r--r-- | httemplate/search/cust_pkg_discount.html | 48 | ||||
-rw-r--r-- | httemplate/search/report_cust_bill_pkg_discount.html | 43 | ||||
-rw-r--r-- | httemplate/search/report_cust_pkg_discount.html | 31 |
4 files changed, 145 insertions, 41 deletions
diff --git a/httemplate/search/cust_bill_pkg_discount.html b/httemplate/search/cust_bill_pkg_discount.html index f598341a0..6da5787a0 100644 --- a/httemplate/search/cust_bill_pkg_discount.html +++ b/httemplate/search/cust_bill_pkg_discount.html @@ -7,6 +7,7 @@ 'header' => [ #'#', 'Discount', + 'Class', 'Amount', 'Months', 'Package', @@ -17,6 +18,7 @@ 'fields' => [ #'billpkgdiscountnum', sub { $_[0]->cust_pkg_discount->discount->description }, + sub { $_[0]->cust_pkg_discount->discount->classname }, sub { sprintf($money_char.'%.2f', shift->amount ) }, sub { my $m = shift->months; $m =~ /\./ ? sprintf('%.2f', $m) : $m; @@ -28,6 +30,7 @@ ], 'sort_fields' => [ '', + '', 'amount', 'months', 'pkg', @@ -40,6 +43,7 @@ '', '', '', + '', $ilink, $ilink, ( map { $_ ne 'Cust. Status' ? $clink : '' } @@ -47,7 +51,7 @@ ), ], #'align' => 'rlrrrc'.FS::UI::Web::cust_aligns(), - 'align' => 'lrrlrr'.FS::UI::Web::cust_aligns(), + 'align' => 'lcrrlrr'.FS::UI::Web::cust_aligns(), 'color' => [ #'', '', @@ -56,6 +60,7 @@ '', '', '', + '', FS::UI::Web::cust_colors(), ], 'style' => [ @@ -66,6 +71,7 @@ '', '', '', + '', FS::UI::Web::cust_styles(), ], @@ -98,7 +104,51 @@ if ( $cgi->param('usernum') =~ /^(\d+)$/ ) { push @where, "cust_pkg_discount.usernum = $1"; } -# #classnum +# (discount) classnum +my $join_discount = ''; +#false laziness w/cust_pkg_discount.html and cust_pkg.pm::search +if ( grep { $_ eq 'discount_classnum' } $cgi->param ) { + +# my @classnum = (); +# if ( ref($params->{'discount_classnum'}) ) { +# +# if ( ref($params->{'discount_classnum'}) eq 'HASH' ) { +# @classnum = grep $params->{'discount_classnum'}{$_}, keys %{ $params->{'discount_classnum'} }; +# } elsif ( ref($params->{'discount_classnum'}) eq 'ARRAY' ) { +# @classnum = @{ $params->{'discount_classnum'} }; +# } else { +# die 'unhandled discount_classnum ref '. $params->{'discount_classnum'}; +# } +# +# +# } elsif ( $params->{'discount_classnum'} =~ /^(\d*)$/ && $1 ne '0' ) { +# @classnum = ( $1 ); +# } +# +# if ( @classnum ) { + + if ( $cgi->param('discount_classnum') =~ /^(\d*)$/ && $1 ne '0' ) { + my @classnum = ( $1 ); + + $join_discount = 'LEFT JOIN discount USING (discountnum)'; + + my @c_where = (); + my @nums = grep $_, @classnum; + push @c_where, 'discount.classnum IN ('. join(',',@nums). ')' if @nums; + my $null = scalar( grep { $_ eq '' } @classnum ); + push @c_where, 'discount.classnum IS NULL' if $null; + + if ( scalar(@c_where) == 1 ) { + push @where, @c_where; + } elsif ( @c_where ) { + push @where, ' ( '. join(' OR ', @c_where). ' ) '; + } + + } + +} + +# #(package) classnum # # not specified: all classes # # 0: empty class # # N: classnum @@ -121,7 +171,7 @@ if ( $cgi->param('usernum') =~ /^(\d+)$/ ) { # } # } -my $count_query = "SELECT COUNT(*), SUM(amount)"; +my $count_query = "SELECT COUNT(*), SUM(cust_bill_pkg_discount.amount)"; my $join_cust_pkg_discount = 'LEFT JOIN cust_pkg_discount USING (pkgdiscountnum)'; @@ -137,11 +187,11 @@ my $join_pkg = #LEFT JOIN part_pkg AS override # ON pkgpart_override = override.pkgpart '; +my $join = "$join_cust_pkg_discount $join_discount $join_pkg $join_cust"; + my $where = ' WHERE '. join(' AND ', @where); -$count_query .= - " FROM cust_bill_pkg_discount $join_cust_pkg_discount $join_pkg $join_cust ". - $where; +$count_query .= " FROM cust_bill_pkg_discount $join $where"; my @select = ( 'cust_bill_pkg_discount.*', @@ -155,7 +205,7 @@ push @select, 'cust_main.custnum', my $query = { 'table' => 'cust_bill_pkg_discount', - 'addl_from' => "$join_cust_pkg_discount $join_pkg $join_cust", + 'addl_from' => $join, 'hashref' => {}, 'select' => join(', ', @select ), 'extra_sql' => $where, diff --git a/httemplate/search/cust_pkg_discount.html b/httemplate/search/cust_pkg_discount.html index 23af1802e..f0c7447a5 100644 --- a/httemplate/search/cust_pkg_discount.html +++ b/httemplate/search/cust_pkg_discount.html @@ -6,6 +6,7 @@ #'redirect' => $link, 'header' => [ 'Status', 'Discount', + 'Class', 'Months used', 'Employee', 'Package', @@ -16,6 +17,7 @@ 'fields' => [ sub { ucfirst( shift->status ) }, sub { shift->discount->description }, + sub { shift->discount->classname }, sub { my $m = shift->months_used; $m =~ /\./ ? sprintf('%.2f',$m) : $m; }, @@ -29,17 +31,19 @@ '', '', '', + '', ( map { $_ ne 'Cust. Status' ? $clink : ''} FS::UI::Web::cust_header() ), ], - 'align' => 'clrll'. FS::UI::Web::cust_aligns(), + 'align' => 'clcrll'. FS::UI::Web::cust_aligns(), 'color' => [ '', '', '', '', '', + '', FS::UI::Web::cust_colors(), ], 'style' => [ @@ -48,6 +52,7 @@ '', '', '', + '', FS::UI::Web::cust_styles(), ], @@ -78,6 +83,47 @@ if ( $cgi->param('status') eq 'active' ) { "; #XXX also end date } +#classnum +#false laziness w/cust_pkg.pm::search +if ( grep { $_ eq 'classnum' } $cgi->param ) { + +# my @classnum = (); +# if ( ref($params->{'classnum'}) ) { +# +# if ( ref($params->{'classnum'}) eq 'HASH' ) { +# @classnum = grep $params->{'classnum'}{$_}, keys %{ $params->{'classnum'} }; +# } elsif ( ref($params->{'classnum'}) eq 'ARRAY' ) { +# @classnum = @{ $params->{'classnum'} }; +# } else { +# die 'unhandled classnum ref '. $params->{'classnum'}; +# } +# +# +# } elsif ( $params->{'classnum'} =~ /^(\d*)$/ && $1 ne '0' ) { +# @classnum = ( $1 ); +# } +# +# if ( @classnum ) { + + if ( $cgi->param('classnum') =~ /^(\d*)$/ && $1 ne '0' ) { + my @classnum = ( $1 ); + + my @c_where = (); + my @nums = grep $_, @classnum; + push @c_where, 'discount.classnum IN ('. join(',',@nums). ')' if @nums; + my $null = scalar( grep { $_ eq '' } @classnum ); + push @c_where, 'discount.classnum IS NULL' if $null; + + if ( scalar(@c_where) == 1 ) { + push @where, @c_where; + } elsif ( @c_where ) { + push @where, ' ( '. join(' OR ', @c_where). ' ) '; + } + + } + +} + #usernum if ( $cgi->param('usernum') =~ /^(\d+)$/ ) { push @where, "cust_pkg_discount.usernum = $1"; diff --git a/httemplate/search/report_cust_bill_pkg_discount.html b/httemplate/search/report_cust_bill_pkg_discount.html index f9ab901b5..77affd19d 100644 --- a/httemplate/search/report_cust_bill_pkg_discount.html +++ b/httemplate/search/report_cust_bill_pkg_discount.html @@ -1,30 +1,35 @@ -<% include('/elements/header.html', 'Discount report' ) %> +<& /elements/header.html, 'Discount report' &> <FORM ACTION="cust_bill_pkg_discount.html" METHOD="GET"> <TABLE> - <% include( '/elements/tr-select-user.html', - 'label' => 'Discounts by employee: ', - 'access_user' => \%access_user, - ) - %> + <& /elements/tr-select-discount_class.html, + 'field' => 'discount_classnum', + 'pre_options' => [ '0' => 'all' ], + 'empty_label' => '(none)' + &> - <% include( '/elements/tr-select-agent.html', - 'curr_value' => scalar( $cgi->param('agentnum') ), - 'label' => 'for agent: ', - 'disable_empty' => 0, - ) - %> + <& /elements/tr-select-user.html, + 'label' => 'Discounts by employee: ', + 'access_user' => \%access_user, + &> - <% include( '/elements/tr-input-beginning_ending.html' ) %> + <& /elements/tr-select-agent.html, + 'curr_value' => scalar( $cgi->param('agentnum') ), + 'label' => 'for agent: ', + 'disable_empty' => 0, + &> - <% include( '/elements/tr-input-lessthan_greaterthan.html', - 'label' => 'Amount', - 'field' => 'amount', - ) - %> + <& /elements/tr-input-beginning_ending.html &> + +<!-- doesn't actually work yet, needs support in cust_bill_pkg_discount.html + <& /elements/tr-input-lessthan_greaterthan.html, + 'label' => 'Amount', + 'field' => 'amount', + &> +--> </TABLE> @@ -33,7 +38,7 @@ </FORM> -<% include('/elements/footer.html') %> +<& /elements/footer.html &> <%init> die "access denied" diff --git a/httemplate/search/report_cust_pkg_discount.html b/httemplate/search/report_cust_pkg_discount.html index 31774c384..7f0e55fed 100644 --- a/httemplate/search/report_cust_pkg_discount.html +++ b/httemplate/search/report_cust_pkg_discount.html @@ -1,4 +1,4 @@ -<% include('/elements/header.html', 'Package discount report' ) %> +<& /elements/header.html, 'Package discount report' &> <FORM ACTION="cust_pkg_discount.html" METHOD="GET"> @@ -6,7 +6,7 @@ <TABLE> <TR> - <TD>Discount status</TD> + <TD ALIGN="right">Discount status</TD> <TD> <SELECT NAME="status"> <OPTION VALUE="active">Active @@ -16,18 +16,21 @@ </TD> </TR> - <% include( '/elements/tr-select-user.html', - 'label' => 'Discounts by employee: ', - 'access_user' => \%access_user, - ) - %> + <& /elements/tr-select-discount_class.html, + 'pre_options' => [ '0' => 'all' ], + 'empty_label' => '(none)' + &> - <% include( '/elements/tr-select-agent.html', - 'curr_value' => scalar( $cgi->param('agentnum') ), - 'label' => 'for agent: ', - 'disable_empty' => 0, - ) - %> + <& /elements/tr-select-user.html, + 'label' => 'Discounts by employee: ', + 'access_user' => \%access_user, + &> + + <& /elements/tr-select-agent.html, + 'curr_value' => scalar( $cgi->param('agentnum') ), + 'label' => 'for agent: ', + 'disable_empty' => 0, + &> </TABLE> @@ -36,7 +39,7 @@ </FORM> -<% include('/elements/footer.html') %> +<& /elements/footer.html &> <%init> die "access denied" |