X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Ftax_rate.pm;h=bfb9c8c328a68308354edaa80ca3d41f2634b0df;hb=0269c850cfefc00d5da255f88c63a314e1ab6cd0;hp=0601032ee9c66c5e7a36ff2baf658242759ca0ab;hpb=5d4d60dd8cbe71a96256b6c375f01e0182296f18;p=freeside.git diff --git a/FS/FS/tax_rate.pm b/FS/FS/tax_rate.pm index 0601032ee..bfb9c8c32 100644 --- a/FS/FS/tax_rate.pm +++ b/FS/FS/tax_rate.pm @@ -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') @@ -397,7 +397,12 @@ sub taxline { my $taxable_units = 0; unless ($self->recurtax =~ /^Y$/i) { if ($self->unittype == 0) { - $taxable_units += $_->units foreach @cust_bill_pkg; + my %seen = (); + foreach (@cust_bill_pkg) { + $taxable_units += $_->units + unless $seen{$_->pkgnum}; + $seen{$_->pkgnum}++; + } }elsif ($self->unittype == 1) { return qq!fatal: can't (yet) handle fee with minute unit type!; }elsif ($self->unittype == 2) { @@ -642,6 +647,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 +674,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 +712,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++; @@ -711,7 +722,7 @@ sub batch_import { $dbh->commit or die $dbh->errstr if $oldAutoCommit; - return "Empty file!" unless $imported; + return "Empty file!" unless ($imported || $format eq 'cch-update'); ''; #no error @@ -831,7 +842,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: $!";