X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Ftax_class.pm;h=376a1ad40ad6142334b9fae03e617f58a5b7c9be;hb=b475ac28dcf56af7cb85d6a8471b8b4baf6130cd;hp=8ce70f5c3f640c439f05155b43c58f6ea451d98f;hpb=f32fab28c5cea2b5619c9b1d5cc6e3fe7beef126;p=freeside.git diff --git a/FS/FS/tax_class.pm b/FS/FS/tax_class.pm index 8ce70f5c3..376a1ad40 100644 --- a/FS/FS/tax_class.pm +++ b/FS/FS/tax_class.pm @@ -158,7 +158,7 @@ sub batch_import { my $line; my ( $count, $last, $min_sec ) = (0, time, 5); #progressbar - if ( $job || scalar(@column_callbacks) ) { + if ( $job || scalar(@column_lengths) ) { my $error = csv_from_fixed(\$fh, \$count, \@column_lengths); return $error if $error; } @@ -169,7 +169,7 @@ sub batch_import { $hook = sub { my $hash = shift; - +warn Dumper($hash); if ($hash->{'table'} eq 'DETAIL') { push @{$data->{'taxcat'}}, [ $hash->{'value'}, $hash->{'description'} ] if ($hash->{'name'} eq 'TAXCAT' && @@ -194,6 +194,7 @@ sub batch_import { ($name eq 'TAXCAT' ? $value : '%')."'", ); foreach (@tax_class) { +warn "deleting ". $_->taxclass. ' '. $_->description. "\n"; my $error = $_->delete; return $error if $error; } @@ -246,21 +247,30 @@ sub batch_import { if ( $job ) { # progress bar if ( time - $min_sec > $last ) { my $error = $job->update_statustext( - int( 100 * $imported / $count ) + int( 100 * $imported / $count ). ",Importing tax classes" ); die $error if $error; $last = time; } } - my $tax_class = - new FS::tax_class( { 'data_vendor' => 'cch', - 'taxclass' => $type->[0].':'.$cat->[0], - 'description' => $type->[1].':'.$cat->[1], - } ); - my $error = $tax_class->insert; - return $error if $error; + my %hash = ( 'data_vendor' => 'cch', + 'taxclass' => $type->[0].':'.$cat->[0], + 'description' => $type->[1].':'.$cat->[1], + ); + unless ( qsearchs('tax_class', \%hash) ) { + my $tax_class = new FS::tax_class \%hash; + my $error = $tax_class->insert; + + return "can't insert tax_class for ". + " old TAXTYPE ". $type->[0].':'.$type->[1]. + " and new TAXCAT ". $cat->[0].':'. $cat->[1]. + " : $error" + if $error; + } + $imported++; + } } @@ -270,7 +280,7 @@ sub batch_import { if ( $job ) { # progress bar if ( time - $min_sec > $last ) { my $error = $job->update_statustext( - int( 100 * $imported / $count ) + int( 100 * $imported / $count ). ",Importing tax classes" ); die $error if $error; $last = time; @@ -283,7 +293,7 @@ sub batch_import { 'description' => $type->[1].':'.$cat->[1], } ); my $error = $tax_class->insert; - return $error if $error; + return "can't insert tax_class for new TAXTYPE $type and TAXCAT $cat: $error" if $error; $imported++; } } @@ -319,7 +329,7 @@ sub batch_import { if ( $job ) { # progress bar if ( time - $min_sec > $last ) { my $error = $job->update_statustext( - int( 100 * $imported / $count ) + int( 100 * $imported / $count ). ",Importing tax classes" ); die $error if $error; $last = time; @@ -339,7 +349,7 @@ sub batch_import { } if ( scalar( @columns ) ) { $dbh->rollback if $oldAutoCommit; - return "Unexpected trailing columns in line (wrong format?): $line"; + return "Unexpected trailing columns in line (wrong format?) importing tax_class: $line"; } my $error = &{$hook}(\%tax_class); @@ -363,12 +373,12 @@ sub batch_import { my $error = &{$endhook}(); if ( $error ) { $dbh->rollback if $oldAutoCommit; - return "can't insert tax_class for $line: $error"; + return "can't run end hook: $error"; } $dbh->commit or die $dbh->errstr if $oldAutoCommit; - return "Empty File!" unless $imported; + return "Empty File!" unless ($imported || $format eq 'cch-update'); ''; #no error