[freeside-commits] freeside/httemplate/search report_tax.cgi, 1.34, 1.34.2.1

Ivan,,, ivan at wavetail.420.am
Mon May 21 17:34:23 PDT 2007


Update of /home/cvs/cvsroot/freeside/httemplate/search
In directory wavetail:/tmp/cvs-serv12170

Modified Files:
      Tag: FREESIDE_1_7_BRANCH
	report_tax.cgi 
Log Message:
fix tax reports for some odd upgrade edge cases: when you have both taxclass and non-taxclass entries in cust_main_county for a single region (not correct setup in the first place), and non-null but empty values in taxname

Index: report_tax.cgi
===================================================================
RCS file: /home/cvs/cvsroot/freeside/httemplate/search/report_tax.cgi,v
retrieving revision 1.34
retrieving revision 1.34.2.1
diff -u -d -r1.34 -r1.34.2.1
--- report_tax.cgi	3 Feb 2007 11:36:30 -0000	1.34
+++ report_tax.cgi	22 May 2007 00:34:18 -0000	1.34.2.1
@@ -304,10 +304,33 @@
   my $mywhere = $where;
 
   if ( $r->taxclass ) {
+
     $mywhere .= " AND taxclass = ? ";
     push @param, 'taxclass';
     $regions{$label}->{'url_param'} .= ';taxclass='. $r->taxclass
       if $cgi->param('show_taxclasses');
+
+  } else {
+
+    my $same_query = "SELECT COUNT(*) FROM cust_main_county WHERE country = ?";
+    my @same_param = ( 'country' );
+    foreach my $opt_field (qw( state county )) {
+      if ( $r->$opt_field() ) {
+        $same_query .= " AND $opt_field = ?";
+        push @same_param, $opt_field;
+      } else {
+        $same_query .= " AND $opt_field IS NULL";
+      }
+    }
+
+    my $num_same_region = scalar_sql( $r, \@same_param, $same_query );
+
+    if ( $num_same_region > 1 ) {
+
+      $mywhere .= " AND taxclass IS NULL";
+
+    }
+  
   }
 
   my $fromwhere = $from_join_cust. $join_pkg. $mywhere. " AND payby != 'COMP' ";
@@ -421,7 +444,7 @@
 foreach my $r (
   qsearch( 'cust_main_county',
            {},
-           'DISTINCT ON (country, state, county, taxname) *',
+           "DISTINCT ON ( country, state, county, CASE WHEN taxname IS NULL THEN '' ELSE taxname END ) *",
            $gotcust
          )
 ) {
@@ -438,10 +461,11 @@
     $r->taxname
       ? 'AND itemdesc = '. dbh->quote($r->taxname)
       : "AND ( itemdesc IS NULL OR itemdesc = '' OR itemdesc = 'Tax' )";
-  my $x = scalar_sql($r, \@taxparam,
-    "SELECT SUM(cust_bill_pkg.setup+cust_bill_pkg.recur) $taxwhere ".
-    "AND pkgnum = 0 $named_tax",
-  );
+
+  my $sql = "SELECT SUM(cust_bill_pkg.setup+cust_bill_pkg.recur) ".
+            " $taxwhere AND pkgnum = 0 $named_tax";
+
+  my $x = scalar_sql($r, \@taxparam, $sql );
   $tax += $x;
   $regions{$label}->{'tax'} += $x;
 



More information about the freeside-commits mailing list