X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FCron%2Ftax_rate_update.pm;h=72ca14535af42649f5e36f42cdcdecf9bf09a0ca;hp=b0745e409c1cf1a692d1f5f596e0216abd644c7d;hb=ad2c21d213088e731b33264e9bf3f868bb4689dd;hpb=83a6052bc16ed5cff28e32613f20dc4b1156bac6 diff --git a/FS/FS/Cron/tax_rate_update.pm b/FS/FS/Cron/tax_rate_update.pm index b0745e409..72ca14535 100755 --- a/FS/FS/Cron/tax_rate_update.pm +++ b/FS/FS/Cron/tax_rate_update.pm @@ -117,10 +117,14 @@ sub wa_sales { =head2 wa_sales_log_customer_without_tax_district -For any active customers with cust_location records in WA state, -if a cust_location record has no tax district, find the correct -district using WA DOR API, or if not possible, generate an error -message into system log so address can be corrected +For any cust_location records +* In WA state +* Attached to non cancelled packages +* With no tax district + +Classify the tax district for the record using the WA State Dept of +Revenue API. If this fails, generate an error into system log so +address can be corrected =cut @@ -144,12 +148,31 @@ sub wa_sales_log_customer_without_tax_district { state => 'WA', district => undef, }, - addl_from => 'LEFT JOIN cust_main USING (custnum)', - extra_sql => sprintf 'AND ( %s ) ', FS::cust_main->active_sql, + addl_from => ' + LEFT JOIN cust_main USING (custnum) + LEFT JOIN cust_pkg ON cust_location.locationnum = cust_pkg.locationnum + ', + extra_sql => sprintf( + ' + AND cust_pkg.pkgnum IS NOT NULL + AND ( + cust_pkg.cancel > %s + OR cust_pkg.cancel IS NULL + ) + ', time() + ), ); for my $cust_location ( qsearch( \%qsearch_cust_location )) { local $@; + log_info_and_warn( + sprintf + 'Attempting to classify district for cust_location ' . + 'locationnum(%s) address(%s)', + $cust_location->locationnum, + $cust_location->address1, + ); + eval { FS::geocode_Mixin::process_district_update( 'FS::cust_location', @@ -158,16 +181,13 @@ sub wa_sales_log_customer_without_tax_district { }; if ( $@ ) { + # Error indicates a crash, not an error looking up district + # process_district_udpate will generate log messages for those errors log_error_and_warn( - sprintf "Failed to classify district for cust_location(%s): %s", + sprintf "Classify district error for cust_location(%s): %s", $cust_location->locationnum, $@ ); - } else { - log_info_and_warn( - sprintf "Classified district for cust_location(%s)", - $cust_location->locationnum - ); } sleep 1; # Be polite to WA DOR API @@ -289,8 +309,6 @@ sub wa_sales_update_tax_table { Create or update the L records with new data - - =cut sub wa_sales_update_cust_main_county { @@ -337,7 +355,9 @@ sub wa_sales_update_cust_main_county { if ( $row->tax == ( $district->{tax_combined} * 100 ) - && $row->taxname eq $args->{taxname} + && $row->taxname eq $args->{taxname} + && uc $row->county eq uc $district->{county} + && uc $row->city eq uc $district->{city} ) { $same_count++; next;