tax data update bug fixes and error message improvements
authorjeff <jeff>
Sat, 23 Aug 2008 03:29:18 +0000 (03:29 +0000)
committerjeff <jeff>
Sat, 23 Aug 2008 03:29:18 +0000 (03:29 +0000)
FS/FS/Record.pm
FS/FS/cust_main.pm
FS/FS/part_pkg_taxrate.pm
FS/FS/tax_rate.pm

index 2540dd3..7dea7cb 100644 (file)
@@ -312,13 +312,13 @@ sub qsearch {
     if ( $type =~ /(int|(big)?serial)/i && $value =~ /^\d+(\.\d+)?$/ ) {
       $TYPE = SQL_INTEGER;
 
-    #DBD::Pg 1.49: Cannot bind ... unknown sql_type 6
-    #} elsif (    ( $type =~ /(numeric)/i     && $value =~ /^[+-]?\d+(\.\d+)?$/)
-    #          || ( $type =~ /(real|float4)/i
-    #                 && $value =~ /[-+]?\d*\.?\d+([eE][-+]?\d+)?/
-    #             )
-    #        ) {
-    #  $TYPE = SQL_FLOAT;
+    #DBD::Pg 1.49: Cannot bind ... unknown sql_type 6 with SQL_FLOAT
+    } elsif (    ( $type =~ /(numeric)/i     && $value =~ /^[+-]?\d+(\.\d+)?$/)
+              || ( $type =~ /(real|float4)/i
+                     && $value =~ /[-+]?\d*\.?\d+([eE][-+]?\d+)?/
+                 )
+            ) {
+      $TYPE = SQL_DECIMAL;
     }
 
     if ( $DEBUG > 2 ) {
index e7b3445..b4f7f8c 100644 (file)
@@ -37,6 +37,7 @@ use FS::cust_credit;
 use FS::cust_refund;
 use FS::part_referral;
 use FS::cust_main_county;
+use FS::cust_tax_location;
 use FS::agent;
 use FS::cust_main_invoice;
 use FS::cust_credit_bill;
index 5ef887d..6267d7a 100644 (file)
@@ -150,7 +150,7 @@ sub check {
     || $self->ut_text('country')
     || $self->ut_foreign_keyn('taxclassnumtaxed', 'tax_class', 'taxclassnum')
     || $self->ut_foreign_key('taxclassnum', 'tax_class', 'taxclassnum')
-    || $self->ut_numbern('effective_date')
+    || $self->ut_snumbern('effdate')
     || $self->ut_enum('taxable', [ 'Y', '' ])
   ;
   return $error if $error;
@@ -271,8 +271,6 @@ sub batch_import {
       }
 
       $hash->{'effdate'} = str2time($hash->{'effdate'});
-
-      $hash->{'effdate'} = str2time($hash->{'effdate'});
       $hash->{'country'} = 'US'; # CA is available
 
       delete($hash->{'taxable'}) if ($hash->{'taxable'} eq 'N');
index 0601032..4769b32 100644 (file)
@@ -199,7 +199,7 @@ sub check {
     || $self->ut_textn('data_vendor')
     || $self->ut_textn('location')
     || $self->ut_foreign_key('taxclassnum', 'tax_class', 'taxclassnum')
-    || $self->ut_numbern('effective_date')
+    || $self->ut_snumbern('effective_date')
     || $self->ut_float('tax')
     || $self->ut_floatn('excessrate')
     || $self->ut_money('taxbase')
@@ -642,6 +642,8 @@ sub batch_import {
 
     if ( $error ) {
       $dbh->rollback if $oldAutoCommit;
+      my $hashref = $insert{$_};
+      $line = join(", ", map { "$_ => ". $hashref->{$_} } keys(%$hashref) );
       return "can't insert tax_rate for $line: $error";
     }
 
@@ -667,13 +669,15 @@ sub batch_import {
         #join(" ", map { "$_ => ". $old->{$_} } @fields);
         join(" ", map { "$_ => ". $old->{$_} } keys(%$old) );
     }
-    my $new = new FS::tax_rate( $insert{$_} );
+    my $new = new FS::tax_rate({ $old->hash, %{$insert{$_}}, 'manual' => ''  });
     $new->taxnum($old->taxnum);
     my $error = $new->replace($old);
 
     if ( $error ) {
       $dbh->rollback if $oldAutoCommit;
-      return "can't insert tax_rate for $line: $error";
+      my $hashref = $insert{$_};
+      $line = join(", ", map { "$_ => ". $hashref->{$_} } keys(%$hashref) );
+      return "can't replace tax_rate for $line: $error";
     }
 
     $imported++;
@@ -703,7 +707,9 @@ sub batch_import {
 
     if ( $error ) {
       $dbh->rollback if $oldAutoCommit;
-      return "can't insert tax_rate for $line: $error";
+      my $hashref = $delete{$_};
+      $line = join(", ", map { "$_ => ". $hashref->{$_} } keys(%$hashref) );
+      return "can't delete tax_rate for $line: $error";
     }
 
     $imported++;
@@ -831,7 +837,7 @@ sub process_batch {
       unlink $file or warn "Can't delete $file: $!";
     }
     
-    $error = "No DETAIL supplied"
+    $error ||= "No DETAIL supplied"
       unless ($files{detail});
     open my $fh, "< $dir/". $files{detail}
       or $error ||= "Can't open DETAIL file: $!";