X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fsearch%2Fcust_bill_pkg_referral.html;h=f8e2ea72da4c669ba3ac7dc91930aeccea66268b;hp=c4dde32a011f72ff73197a1d545aaaa348ccb381;hb=e9e0cf0989259b94d9758eceff448666a2e5a5cc;hpb=3d0a1bb06b895c5be6e3f0517d355442a6b1e125 diff --git a/httemplate/search/cust_bill_pkg_referral.html b/httemplate/search/cust_bill_pkg_referral.html index c4dde32a0..f8e2ea72d 100644 --- a/httemplate/search/cust_bill_pkg_referral.html +++ b/httemplate/search/cust_bill_pkg_referral.html @@ -41,8 +41,11 @@ 'classname', sub { # report_option my $cust_bill_pkg = shift; - my $pkgpart = $cust_bill_pkg->pkgpart_override - || $cust_bill_pkg->cust_pkg->pkgpart; + my $pkgpart = $cust_bill_pkg->pkgpart_override; + unless ( $pkgpart ) { + my $cust_pkg = $cust_bill_pkg->cust_pkg or return ''; + $pkgpart = $cust_pkg->pkgpart; + } if ( !exists($report_classes{$pkgpart}) ) { my $part_pkg = FS::part_pkg->by_key($pkgpart); my %opts = $part_pkg->options; @@ -130,7 +133,9 @@ my $agentnums_sql = my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi); my @where = ( $agentnums_sql, - 'cust_bill_pkg.pkgnum != 0', # exclude taxes + # exclude taxes + '(cust_bill_pkg.pkgnum != 0 OR '. + 'cust_bill_pkg.feepart IS NOT NULL)', "cust_bill._date >= $beginning", "cust_bill._date <= $ending", ); @@ -184,11 +189,13 @@ if ( $cgi->param('classnum') =~ /^(\d+)$/ ) { if ( $use_override ) { push @where, "( - part_pkg.classnum $comparison AND pkgpart_override IS NULL OR - override.classnum $comparison AND pkgpart_override IS NOT NULL + (part_pkg.classnum $comparison AND pkgpart_override IS NULL) OR + (override.classnum $comparison AND pkgpart_override IS NOT NULL) OR + (part_fee.classnum $comparison AND feepart IS NOT NULL) )"; } else { - push @where, "part_pkg.classnum $comparison"; + push @where, + "(part_pkg.classnum $comparison) OR (part_fee.classnum $comparison)"; } } @@ -228,15 +235,19 @@ $join_pkg .= ' LEFT JOIN cust_pkg USING ( pkgnum ) LEFT JOIN part_pkg USING ( pkgpart ) LEFT JOIN part_pkg AS override ON pkgpart_override = override.pkgpart + LEFT JOIN part_fee USING ( feepart ) LEFT JOIN pkg_class ON '; #... if ( $use_override ) { # join to whichever pkgpart is appropriate $join_pkg .= ' ( pkgpart_override IS NULL AND part_pkg.classnum = pkg_class.classnum ) - OR ( pkgpart_override IS NOT NULL AND override.classnum = pkg_class.classnum )'; + OR ( pkgpart_override IS NOT NULL AND override.classnum = pkg_class.classnum ) + OR ( feepart IS NOT NULL AND part_fee.classnum = pkg_class.classnum )'; } else { - $join_pkg .= 'part_pkg.classnum = pkg_class.classnum'; + $join_pkg .= ' + ( part_pkg.classnum = pkg_class.classnum ) + OR ( part_fee.classnum = pkg_class.classnum )'; } my $where = ' WHERE '. join(' AND ', @where); @@ -258,7 +269,7 @@ my $last_pay_sql = "SELECT MAX(_date) FROM cust_bill_pay JOIN cust_bill_pay_pkg USING (billpaynum) WHERE cust_bill_pay_pkg.billpkgnum = cust_bill_pkg.billpkgnum"; -push @select, 'part_pkg.pkg', +push @select, 'COALESCE(part_pkg.pkg, part_fee.itemdesc) AS pkg', 'part_pkg.freq', 'cust_main.custnum', 'cust_main.first',