selfservice priority sort order, #14029
[freeside.git] / httemplate / misc / xmlhttp-cust_main-address_standardize.html
1 <% objToJson($return) %>
2 <%init>
3
4 my $DEBUG = 0;
5
6 my $conf = new FS::Conf;
7
8 my $sub = $cgi->param('sub');
9
10 my $return = {};
11
12 if ( $sub eq 'address_standardize' ) {
13
14   my %arg = $cgi->param('arg');
15   $return = \%arg;
16   warn join('', map "$_: $arg{$_}\n", keys %arg )
17     if $DEBUG;
18
19   my $userid   = $conf->config('usps_webtools-userid');
20   my $password = $conf->config('usps_webtools-password');
21
22   if ( length($userid) && length($password) ) {
23
24     my $verifier = Business::US::USPS::WebTools::AddressStandardization->new( {
25       UserID   => $userid,   #$ENV{USPS_WEBTOOLS_USERID},
26       Password => $password, #$ENV{USPS_WEBTOOLS_PASSWORD},
27       #Testing  => 1,
28     } );
29
30     foreach my $pre ( '', 'ship_' ) {
31       next unless ($pre || !$arg{onlyship});
32
33       my($zip5, $zip4) = split('-',$arg{$pre.'zip'});
34
35       my %usps_args = (
36         FirmName => $arg{$pre.'company'},
37         Address2 => $arg{$pre.'address1'},
38         Address1 => $arg{$pre.'address2'},
39         City     => $arg{$pre.'city'},  
40         State    => $arg{$pre.'state'},
41         Zip5     => $zip5,
42         Zip4     => $zip4,
43       );
44       warn join('', map "$_: $usps_args{$_}\n", keys %usps_args )
45         if $DEBUG;
46
47       my $hash = $verifier->verify_address( %usps_args );
48
49       warn $verifier->response
50         if $DEBUG;
51
52       unless ( $verifier->is_error ) {
53
54         my $zip = $hash->{Zip5};
55         $zip .= '-'. $hash->{Zip4} if $hash->{Zip4} =~ /\d/;
56
57         $return = {
58           %$return,
59           "new_$pre".'company'  => $hash->{FirmName},
60           "new_$pre".'address1' => $hash->{Address2},
61           "new_$pre".'address2' => $hash->{Address1},
62           "new_$pre".'city'     => $hash->{City},
63           "new_$pre".'state'    => $hash->{State},
64           "new_$pre".'zip'      => $zip,
65         };
66
67         my @fields = (qw( company address1 address2 city state zip )); #hmm
68
69         my $changed =
70           scalar( grep { $return->{$pre.$_} ne $return->{"new_$pre$_"} }
71                        @fields
72                 )
73             ? 1 : 0;
74
75         $return->{$pre.'address_standardized'} = $changed;
76
77       } else {
78
79         $return->{$pre.'error'} = "USPS WebTools error: ".
80                                   $verifier->{error}{description};
81
82
83       }
84
85     }
86
87   }
88
89   $return;
90
91 }
92
93 </%init>