This commit was manufactured by cvs2svn to create tag 'freeside_2_1_1'.
[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
32       my($zip5, $zip4) = split('-',$arg{$pre.'zip'});
33
34       my %usps_args = (
35         FirmName => $arg{$pre.'company'},
36         Address2 => $arg{$pre.'address1'},
37         Address1 => $arg{$pre.'address2'},
38         City     => $arg{$pre.'city'},  
39         State    => $arg{$pre.'state'},
40         Zip5     => $zip5,
41         Zip4     => $zip4,
42       );
43       warn join('', map "$_: $usps_args{$_}\n", keys %usps_args )
44         if $DEBUG;
45
46       my $hash = $verifier->verify_address( %usps_args );
47
48       warn $verifier->response
49         if $DEBUG;
50
51       unless ( $verifier->is_error ) {
52
53         my $zip = $hash->{Zip5};
54         $zip .= '-'. $hash->{Zip4} if $hash->{Zip4} =~ /\d/;
55
56         $return = {
57           %$return,
58           "new_$pre".'company'  => $hash->{FirmName},
59           "new_$pre".'address1' => $hash->{Address2},
60           "new_$pre".'address2' => $hash->{Address1},
61           "new_$pre".'city'     => $hash->{City},
62           "new_$pre".'state'    => $hash->{State},
63           "new_$pre".'zip'      => $zip,
64         };
65
66         my @fields = (qw( company address1 address2 city state zip )); #hmm
67
68         my $changed =
69           scalar( grep { $return->{$pre.$_} ne $return->{"new_$pre$_"} }
70                        @fields
71                 )
72             ? 1 : 0;
73
74         $return->{$pre.'address_standardized'} = $changed;
75
76       } else {
77
78         $return->{$pre.'error'} = "USPS WebTools error: ".
79                                   $verifier->{error}{description};
80
81
82       }
83
84     }
85
86   }
87
88   $return;
89
90 }
91
92 </%init>