add service location to RT ticket search, #19154
[freeside.git] / rt / lib / RT / URI / freeside / Internal.pm
index d1479b5..2b09c87 100644 (file)
@@ -210,7 +210,9 @@ sub CustomerResolver {
 
 sub CustomerInfo {
   my $self = shift;
+  return $self->{CustomerInfo} if $self->{CustomerInfo};
   $self = $self->CustomerResolver;
+
   my $rec = $self->_FreesideGetRecord() if $self;
   if (!$rec) {
     # AsStringLong will report an error;
@@ -232,7 +234,11 @@ sub CustomerInfo {
   my $referral = qsearchs('part_referral', { refnum => $cust_main->refnum });
   my @part_tags = $cust_main->part_tag;
 
-  return $self->{CustomerInfo} ||= {
+  my @lf = $cust_main->location_fields;
+  my $bill_location = $cust_main->bill_location;
+  my $ship_location = $cust_main->ship_location;
+
+  my $info = {
     %$rec,
 
     AgentName     => ($agent ? ($agent->agentnum.': '.$agent->agent) : ''),
@@ -246,22 +252,42 @@ sub CustomerInfo {
     Referral      => ($referral ? $referral->referral : ''),
     InvoiceEmail  => $cust_main->invoicing_list_emailonly_scalar,
     BillingType   => FS::payby->longname($cust_main->payby),
+  };
+
+  foreach my $field (@lf) {
+    $info->{"bill_$field"} = $bill_location->get($field);
+    $info->{"ship_$field"} = $ship_location->get($field);
   }
+  $info->{"bill_location"} = $bill_location->location_label(no_prefix => 1);
+  $info->{"ship_location"} = $ship_location->location_label(no_prefix => 1);
+
+  return $self->{CustomerInfo} = $info;
 }
 
 sub ServiceInfo {
   my $self = shift;
   $self->{fstable} eq 'cust_svc' or return;
+  return $self->{ServiceInfo} if $self->{ServiceInfo};
+
   my $rec = $self->_FreesideGetRecord() or return;
   my $cust_svc = $rec->{'_object'};
   my $svc_x = $cust_svc->svc_x;
   my $part_svc = $cust_svc->part_svc;
-  return $self->{ServiceInfo} ||= {
+  my $locationnum = $cust_svc->cust_pkg->locationnum;
+  my $cust_location = qsearchs('cust_location', { locationnum => $locationnum});
+  my @lf = FS::cust_main->location_fields;
+
+  # location fields are not prefixed
+  my $info = {
     $cust_svc->hash,
     $svc_x->hash,
+    $cust_location->hash,
     ServiceType => $part_svc->svc,
     Label => $self->AsString,
-  }
+  };
+  $info->{'location'} = $cust_location->location_label(no_prefix => 1);
+
+  return $self->{ServiceInfo} = $info;
 }
 
 1;