add -s flag to skip CDR files that error out, RT#20763
[freeside.git] / FS / FS / Record.pm
index a868d48..3886c33 100644 (file)
@@ -458,7 +458,13 @@ sub qsearch {
 #    grep defined( $record->{$_} ) && $record->{$_} ne '', @fields
 #  ) or croak "Error executing \"$statement\": ". $sth->errstr;
 
-  $sth->execute or croak "Error executing \"$statement\": ". $sth->errstr;
+  my $ok = $sth->execute;
+  if (!$ok) {
+    my $error = "Error executing \"$statement\"";
+    $error .= ' (' . join(', ', map {"'$_'"} @value) . ')' if @value;
+    $error .= ': '. $sth->errstr;
+    croak $error;
+  }
 
   my $table = $stable[0];
   my $pkey = '';
@@ -1691,7 +1697,7 @@ sub batch_import {
 
     my $data = slurp($file);
     my $asn_output = $parser->decode( $data )
-      or die "No ". $asn_format->{'macro'}. " found\n";
+      or return "No ". $asn_format->{'macro'}. " found\n";
 
     $asn_header_buffer = &{ $asn_format->{'header_buffer'} }( $asn_output );
 
@@ -1788,6 +1794,8 @@ sub batch_import {
 
       last unless scalar(@buffer);
       my $row = shift @buffer;
+      &{ $asn_format->{row_callback} }( $row, $asn_header_buffer )
+        if $asn_format->{row_callback};
       foreach my $key ( keys %{ $asn_format->{map} } ) {
         $hash{$key} = &{ $asn_format->{map}{$key} }( $row, $asn_header_buffer );
       }
@@ -1873,7 +1881,7 @@ sub batch_import {
     return "Empty file!";
   }
 
-  $dbh->commit or die $dbh->errstr if $oldAutoCommit;;
+  $dbh->commit or die $dbh->errstr if $oldAutoCommit;
 
   ''; #no error