add latitude/longitude to prospects, customers and package locations, RT#15539
[freeside.git] / FS / FS / svc_broadband.pm
index 35de8b3..edcb4bc 100755 (executable)
@@ -346,10 +346,6 @@ sub check {
 
   return $x unless ref($x);
 
-  my $nw_coords = $conf->exists('svc_broadband-require-nw-coordinates');
-  my $lat_lower = $nw_coords ? 1 : -90;
-  my $lon_upper = $nw_coords ? -1 : 180;
-
   # remove delimiters
   my $mac_addr = uc($self->get('mac_addr'));
   $mac_addr =~ s/[-: ]//g;
@@ -365,8 +361,8 @@ sub check {
     || $self->ut_ipn('ip_addr')
     || $self->ut_hexn('mac_addr')
     || $self->ut_hexn('auth_key')
-    || $self->ut_coordn('latitude', $lat_lower, 90)
-    || $self->ut_coordn('longitude', -180, $lon_upper)
+    || $self->ut_coordn('latitude')
+    || $self->ut_coordn('longitude')
     || $self->ut_sfloatn('altitude')
     || $self->ut_textn('vlan_profile')
     || $self->ut_textn('plan_id')
@@ -399,6 +395,17 @@ sub check {
     }
   }
 
+  if ( $cust_pkg && ! $self->latitude && ! $self->longitude ) {
+    my $l = $cust_pkg->cust_location_or_main;
+    if ( $l->ship_latitude && $l->ship_longitude ) {
+      $self->latitude  = $l->ship_latitude;
+      $self->longitude = $l->ship_longitude;
+    } elsif ( $l->latitude && $l->longitude ) {
+      $self->latitude  = $l->latitude;
+      $self->longitude = $l->longitude;
+    }
+  }
+
   $error = $self->_check_ip_addr;
   return $error if $error;