X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fsearch%2Fcust_bill_pkg_discount.html;h=c634828272f53387a627289d547c02e6396935c7;hp=bb8038a44120dc35b8d98bc45bb721e0f540d5fd;hb=ff27c3f36240aee48ed50153dd5d8fe3ac3f2443;hpb=fb4ab1073f0d15d660c6cdc4e07afebf68ef3924 diff --git a/httemplate/search/cust_bill_pkg_discount.html b/httemplate/search/cust_bill_pkg_discount.html index bb8038a44..c63482827 100644 --- a/httemplate/search/cust_bill_pkg_discount.html +++ b/httemplate/search/cust_bill_pkg_discount.html @@ -1,4 +1,4 @@ -<% include( 'elements/search.html', +<& elements/search.html, 'title' => 'Discounts', 'name' => 'discounts', 'query' => $query, @@ -7,6 +7,7 @@ 'header' => [ #'#', 'Discount', + 'Class', 'Amount', 'Months', 'Package', @@ -17,10 +18,9 @@ '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; - }, + $months_sub, 'pkg',#sub { $_[0]->cust_bill_pkg->cust_pkg->part_pkg->pkg }, 'invnum', sub { time2str('%b %d %Y', shift->_date ) }, @@ -28,6 +28,7 @@ ], 'sort_fields' => [ '', + '', 'amount', 'months', 'pkg', @@ -40,6 +41,7 @@ '', '', '', + '', $ilink, $ilink, ( map { $_ ne 'Cust. Status' ? $clink : '' } @@ -47,7 +49,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 +58,7 @@ '', '', '', + '', FS::UI::Web::cust_colors(), ], 'style' => [ @@ -66,10 +69,11 @@ '', '', '', + '', FS::UI::Web::cust_styles(), ], - ) -%> + +&> <%init> #a little false laziness below w/cust_bill_pkg.cgi @@ -98,7 +102,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,27 +169,27 @@ 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)'; my $join_cust = - ' JOIN cust_bill_pkg USING ( billpkgnum ) - JOIN cust_bill USING ( invnum ) - LEFT JOIN cust_main USING ( custnum ) '; + ' JOIN cust_bill USING ( invnum ) '. + FS::UI::Web::join_cust_main('cust_bill', 'cust_pkg'); my $join_pkg = - ' LEFT JOIN cust_pkg ON ( cust_bill_pkg.pkgnum = cust_pkg.pkgnum ) + ' JOIN cust_bill_pkg USING ( billpkgnum ) + LEFT JOIN cust_pkg ON ( cust_bill_pkg.pkgnum = cust_pkg.pkgnum ) LEFT JOIN part_pkg USING ( pkgpart ) '; #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_cust $join_pkg ". - $where; +$count_query .= " FROM cust_bill_pkg_discount $join $where"; my @select = ( 'cust_bill_pkg_discount.*', @@ -155,7 +203,7 @@ push @select, 'cust_main.custnum', my $query = { 'table' => 'cust_bill_pkg_discount', - 'addl_from' => "$join_cust_pkg_discount $join_cust $join_pkg", + 'addl_from' => $join, 'hashref' => {}, 'select' => join(', ', @select ), 'extra_sql' => $where, @@ -168,4 +216,11 @@ my $clink = [ "${p}view/cust_main.cgi?", 'custnum' ]; my $conf = new FS::Conf; my $money_char = $conf->config('money_char') || '$'; +my $months_sub = sub { + my $cust_bill_pkg_discount = shift; + return 'Setup' + if $cust_bill_pkg_discount->cust_pkg_discount->setuprecur eq 'setup'; + sprintf('%.2f', $cust_bill_pkg_discount->months); +}; +