quiet warnings about CGI::param in list context
[freeside.git] / httemplate / search / cust_credit_bill_pkg.html
index 5facd4a..4a14893 100644 (file)
@@ -14,6 +14,7 @@
                    'Date',
                    'By',
                    'Reason',
+                   'Info',
 
                    # line item
                    'Description',
@@ -33,7 +34,8 @@
 
                    sub { time2str('%b %d %Y', shift->get('cust_credit_date') ) },
                    sub { shift->cust_credit_bill->cust_credit->otaker },
-                   sub { shift->cust_credit_bill->cust_credit->reason },
+                   sub { shift->cust_credit_bill->cust_credit->reason_only },
+                   sub { shift->cust_credit_bill->cust_credit->addlinfo },
 
                    sub { $_[0]->pkgnum > 0
                            ? $_[0]->get('pkg')      # possibly use override.pkg
@@ -51,6 +53,7 @@
                    'cust_credit_date',
                    '', #'otaker',
                    '', #reason
+                   '', #addlinfo
                    '', #line item description
                    '', #location
                    @post_desc_null,
@@ -66,6 +69,7 @@
                    '',
                    '',
                    '',
+                   '',
                    @post_desc_null,
                    $ilink,
                    $ilink,
@@ -73,7 +77,7 @@
                          FS::UI::Web::cust_header()
                    ),
                ],
-               'align' => 'rrrllll'.
+               'align' => 'rrrlllll'.
                           $post_desc_align.
                           'rr'.
                           FS::UI::Web::cust_aligns(),
@@ -85,6 +89,7 @@
                               '',
                               '',
                               '',
+                              '',
                               @post_desc_null,
                               '',
                               '',
                               '',
                               '',
                               '',
+                              '',
                               @post_desc_null,
                               '',
                               '',
@@ -210,37 +216,34 @@ if ( $cgi->param('taxclass')
 my @loc_param = qw( district city county state country );
 
 if ( $cgi->param('out') ) {
-  # probably don't need this part
 
-  my ( $loc_sql, @param ) = FS::cust_pkg->location_sql( 'ornull' => 1 );
-  while ( $loc_sql =~ /\?/ ) { #easier to do our own substitution
-    $loc_sql =~ s/\?/'cust_main_county.'.shift(@param)/e;
+  my $has_taxname = '';
+  if ( $cgi->param('taxname') ) {
+    $has_taxname = " AND COALESCE(cust_main_county.taxname, 'Tax') = "
+      . dbh->quote( $cgi->param('taxname') );
   }
 
-  $loc_sql =~ s/cust_pkg\.locationnum/cust_bill_pkg_tax_location.locationnum/g
-    if $cgi->param('istax');
-
-  push @where, "
-    0 = (
-          SELECT COUNT(*) FROM cust_main_county
-           WHERE cust_main_county.tax > 0
-             AND $loc_sql
-        )
-  ";
-
-  #not linked to by anything, but useful for debugging "out of taxable region"
-  if ( grep $cgi->param($_), @loc_param ) {
-
-    my %ph = map { $_ => dbh->quote( scalar($cgi->param($_)) ) } @loc_param;
-
-    my ( $loc_sql, @param ) = FS::cust_pkg->location_sql;
-    while ( $loc_sql =~ /\?/ ) { #easier to do our own substitution
-      $loc_sql =~ s/\?/$ph{shift(@param)}/e;
-    }
-
-    push @where, $loc_sql;
-
-  }
+  # use the exact criteria from the tax report
+  push @where,
+    "NOT EXISTS(
+      SELECT 1 FROM cust_tax_exempt_pkg
+        JOIN cust_main_county USING (taxnum)
+        WHERE cust_tax_exempt_pkg.billpkgnum = cust_bill_pkg.billpkgnum
+          AND cust_tax_exempt_pkg.creditbillpkgnum IS NULL
+          $has_taxname
+    )
+    AND NOT EXISTS(
+      SELECT 1 FROM cust_bill_pkg_tax_location
+        JOIN cust_main_county USING (taxnum)
+        WHERE cust_bill_pkg_tax_location.taxable_billpkgnum = cust_bill_pkg.billpkgnum
+          $has_taxname
+    )
+    AND NOT EXISTS(
+      SELECT 1 FROM cust_bill_pkg_tax_location
+        JOIN cust_main_county USING (taxnum)
+        WHERE cust_bill_pkg_tax_location.billpkgnum = cust_bill_pkg.billpkgnum
+          $has_taxname
+    )";
 
 } elsif ( $cgi->param('country') ) {
 
@@ -454,6 +457,8 @@ if ( $cgi->param('nottax') ) {
       push @where, "billpkgtaxratelocationnum IS NULL";
     }
 
+    $join_pkg .= ' LEFT JOIN cust_pkg USING ( pkgnum ) ';
+
     $join_pkg .= ' LEFT JOIN tax_rate_location USING ( taxratelocationnum ) ';
 
   } elsif ( $conf->exists('tax-pkg_address') ) {