X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FTaxEngine%2Favalara.pm;h=fd6e324ec817436e81600176bdeb579e73a3be54;hb=af62b675c3f1b8f5996561de7e6b28020479a7d6;hp=a532d9a9ea32576fce08a50a5a8884fa34668f5b;hpb=88e71e16110306c7a8d5900aecd05e932c9dbfae;p=freeside.git diff --git a/FS/FS/TaxEngine/avalara.pm b/FS/FS/TaxEngine/avalara.pm index a532d9a9e..fd6e324ec 100644 --- a/FS/FS/TaxEngine/avalara.pm +++ b/FS/FS/TaxEngine/avalara.pm @@ -35,10 +35,6 @@ sub add_sale {} sub build_request { my ($self, %opt) = @_; - my $oldAutoCommit = $FS::UID::AutoCommit; - local $FS::UID::AutoCommit = 0; - my $dbh = dbh; - my $cust_bill = $self->{cust_bill}; my $cust_main = $cust_bill->cust_main; @@ -91,6 +87,12 @@ sub build_request { $conf->config('company_address', $cust_main->agentnum) ); my $company_address = Geo::StreetAddress::US->parse_location($our_address); + if (!$company_address->{street} + or !$company_address->{city} + or !$company_address->{zip}) { + die "Your company address could not be parsed. Avalara tax calculation requires a company address with street, city, and zip code.\n"; + } + my $address1 = join(' ', grep $_, @{$company_address}{qw( number prefix street type suffix )}); @@ -162,8 +164,8 @@ sub calculate_taxes { my $cust_bill = shift; if (!$cust_bill->invnum) { - warn "FS::TaxEngine::avalara: can't calculate taxes on a non-inserted invoice"; - return; + # then something is wrong + die "FS::TaxEngine::avalara: can't calculate taxes on a non-inserted invoice\n"; } $self->{cust_bill} = $cust_bill; @@ -212,8 +214,9 @@ account number, and license key. my %tax_item_named; if ( $response->{ResultCode} ne 'Success' ) { - return "invoice#".$cust_bill->invnum.": ". - join("\n", @{ $response->{Messages} }); + die "Avalara tax error on invoice#".$cust_bill->invnum.": ". + join("\n", @{ $response->{Messages} }). + "\n"; } warn "creating taxes for inv#$invnum\n" if $DEBUG > 1; foreach my $TaxLine (@{ $response->{TaxLines} }) { @@ -248,7 +251,7 @@ account number, and license key. fee => 0, }); my $error = $tax_rate->find_or_insert; - return "error inserting tax_rate record for '$taxname': $error\n" + die "error inserting tax_rate record for '$taxname': $error\n" if $error; $tax_rate = $tax_rate->replace_old; # get its taxnum if there wasn't one @@ -264,7 +267,7 @@ account number, and license key. # country? }); $error = $tax_rate_location->find_or_insert; - return "error inserting tax_rate_location record for ". + die "error inserting tax_rate_location record for ". $TaxDetail->{JurisCode} .": $error\n" if $error;