use URI::Escape 3.31;
use Data::Dumper;
use FS::Conf;
+use FS::Log;
use Locale::Country;
FS::UID->install_callback( sub {
sub standardize_uscensus {
my $self = shift;
my $location = shift;
+ my $log = FS::Log->new('FS::Misc::Geo::standardize_uscensus');
+ $log->debug(join("\n", @{$location}{'address1', 'city', 'state', 'zip'}));
eval "use Geo::USCensus::Geocoding";
die $@ if $@;
my $result = Geo::USCensus::Geocoding->query($request);
if ( $result->is_match ) {
# unfortunately we get the address back as a single line
+ $log->debug($result->address);
if ($result->address =~ /^(.*), (.*), ([A-Z]{2}), (\d{5}.*)$/) {
return +{
address1 => $1,
} elsif ( $result->match_level ) {
die "Geocoding did not find a matching address.\n";
} else {
- warn Dumper($result) if $DEBUG;
- die $result->error_message;
+ $log->error($result->error_message);
+ return; # for internal errors, don't return anything
}
}
sub country_full {
my $self = shift;
- $self->code2country($self->country);
+ $self->code2country($self->get('country'));
}
sub code2country {
|| $self->ut_textn('tablename')
|| $self->ut_numbern('tablenum')
|| $self->ut_number('level')
- || $self->ut_text('message')
+ || $self->ut_anything('message')
;
return $error if $error;
FS::cust_main::Billing::bill_and_collect
FS::cust_main::Billing::bill
FS::pay_batch::import_from_gateway
+ FS::Misc::Geo::standardize_uscensus
Cron::bill
Cron::backup
Cron::upload
// then all entered address fields are correct
// but we still need to set the lat/long fields and addr_clean
- status_message('Verified');
+
+ if ( returned['addr_clean'] ) {
+ status_message('Verified');
+ } else {
+ status_message('Unverified');
+ }
replace_address();
} else {
return '' if @context == 1 and length($log->message) <= 60;
my $html = '<DIV CLASS="tooltip">'.(shift @context).'</DIV>';
my $pre = '↳';
- foreach (@context, $log->message) {
+ foreach (map encode_entities($_), @context, $log->message) {
$html .= "<DIV>$pre$_</DIV>";
$pre = ' '.$pre;
}