restore fallback to customer billing address for CC transactions, RT#77641, RT#71513
[freeside.git] / FS / FS / cust_main / Billing_Realtime.pm
index b29408b..1ac12ce 100644 (file)
@@ -330,6 +330,8 @@ sub _bop_cust_payby_options {
 
 # can be called as class method,
 # but can't load default name/phone fields as class method
 
 # can be called as class method,
 # but can't load default name/phone fields as class method
+# (why was this added?  ah, it might get called from realtime_tokenize in this
+#  fashion "to tokenize old records on upgrade")
 sub _bop_content {
   my ($self, $options) = @_;
   my %content = ();
 sub _bop_content {
   my ($self, $options) = @_;
   my %content = ();
@@ -361,14 +363,23 @@ sub _bop_content {
 
   $content{name} = $payname if $payname;
 
 
   $content{name} = $payname if $payname;
 
-  $content{address} = $options->{'address1'};
-  my $address2 = $options->{'address2'};
-  $content{address} .= ", ". $address2 if length($address2);
+  if ( exists($options->{'address1'}) && length($options->{'address1'}) ) {
 
 
-  $content{city} = $options->{'city'};
-  $content{state} = $options->{'state'};
-  $content{zip} = $options->{'zip'};
-  $content{country} = $options->{'country'};
+    $content{address} = $options->{'address1'};
+    my $address2 = $options->{'address2'};
+    $content{address} .= ", ". $address2 if length($address2);
+
+    $content{$_} = $options->{$_} foreach qw( city state zip country );
+
+  } elsif ( ref($self) ) {
+
+    $content{address} = $self->address1;
+    my $address2 = $self->address2;
+    $content{address} .= ", ". $address2 if length($address2);
+
+    $content{$_} = $self->$_() foreach qw( city state zip country );
+
+  }
 
   # can't set phone if called as class method
   $content{phone} = $self->daytime || $self->night
 
   # can't set phone if called as class method
   $content{phone} = $self->daytime || $self->night