[freeside-commits] freeside/httemplate/search report_tax.cgi, 1.37, 1.38

Ivan,,, ivan at wavetail.420.am
Thu Dec 27 15:49:33 PST 2007


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

Modified Files:
	report_tax.cgi 
Log Message:
fix reporting bug for invisimax in edge case where you have taxclass and empty-taxclass rates for a country/state(/county) and also have a different set of taxclasses for some other country/state

Index: report_tax.cgi
===================================================================
RCS file: /home/cvs/cvsroot/freeside/httemplate/search/report_tax.cgi,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- report_tax.cgi	29 Oct 2007 10:30:53 -0000	1.37
+++ report_tax.cgi	27 Dec 2007 23:49:31 -0000	1.38
@@ -312,8 +312,9 @@
 
   } else {
 
-    my $same_query = "SELECT COUNT(*) FROM cust_main_county WHERE country = ?";
-    my @same_param = ( 'country' );
+    my $same_query = 'SELECT taxclass FROM cust_main_county '.
+                     ' WHERE taxnum != ? AND country = ?';
+    my @same_param = ( 'taxnum', 'country' );
     foreach my $opt_field (qw( state county )) {
       if ( $r->$opt_field() ) {
         $same_query .= " AND $opt_field = ?";
@@ -323,12 +324,11 @@
       }
     }
 
-    my $num_same_region = scalar_sql( $r, \@same_param, $same_query );
-
-    if ( $num_same_region > 1 ) {
-
-      $mywhere .= " AND taxclass IS NULL";
+    my @taxclasses = list_sql( $r, \@same_param, $same_query );
 
+    if ( scalar(@taxclasses) ) {
+      $mywhere .= ' AND '. join(' AND ', map ' taxclass != ? ', @taxclasses );
+      push @param, @taxclasses;
     }
   
   }
@@ -565,7 +565,14 @@
   $sth->fetchrow_arrayref->[0] || 0;
 }
 
-
+sub list_sql {
+  my( $r, $param, $sql ) = @_;
+  #warn "$sql\n";
+  my $sth = dbh->prepare($sql) or die dbh->errstr;
+  $sth->execute( map $r->$_(), @$param )
+    or die "Unexpected error executing statement $sql: ". $sth->errstr;
+  map $_->[0], @{ $sth->fetchall_arrayref };
+}
 
 my $dateagentlink = "begin=$beginning;end=$ending";
 $dateagentlink .= ';agentnum='. $cgi->param('agentnum')



More information about the freeside-commits mailing list