censustract upgrade should skip prospect locations, #25660
[freeside.git] / FS / FS / cust_pkg.pm
index 009c81e..771d3ec 100644 (file)
@@ -4,7 +4,7 @@ use base qw( FS::otaker_Mixin FS::cust_main_Mixin FS::Sales_Mixin
              FS::m2m_Common FS::option_Common );
 
 use strict;
-use vars qw($disable_agentcheck $DEBUG $me);
+use vars qw( $disable_agentcheck $DEBUG $me $upgrade );
 use Carp qw(cluck);
 use Scalar::Util qw( blessed );
 use List::Util qw(min max);
@@ -54,6 +54,8 @@ $me = '[FS::cust_pkg]';
 
 $disable_agentcheck = 0;
 
+$upgrade = 0; #go away after setup+start dates cleaned up for old customers
+
 sub _cache {
   my $self = shift;
   my ( $hashref, $cache ) = @_;
@@ -656,7 +658,7 @@ sub check {
   return $error if $error;
 
   return "A package with both start date (future start) and setup date (already started) will never bill"
-    if $self->start_date && $self->setup;
+    if $self->start_date && $self->setup && ! $upgrade;
 
   return "A future unsuspend date can only be set for a package with a suspend date"
     if $self->resume and !$self->susp and !$self->adjourn;
@@ -4285,21 +4287,29 @@ For FCC 477 reporting, mostly.
 
 =item location_cust
 
-Limit to packages whose service location is the same as the customer's 
+Limit to packages whose service locations are the same as the customer's 
 default service location.
 
 =item location_nocust
 
-Limit to packages whose service location is not the customer's default 
+Limit to packages whose service locations are not the customer's default 
 service location.
 
 =item location_census
 
-Limit to packages whose service location has a census tract.
+Limit to packages whose service locations have census tracts.
 
 =item location_nocensus
 
-Limit to packages whose service location doesn't have a census tract.
+Limit to packages whose service locations do not have a census tract.
+
+=item location_geocode
+
+Limit to packages whose locations have geocodes.
+
+=item location_geocode
+
+Limit to packages whose locations do not have geocodes.
 
 =back
 
@@ -4543,6 +4553,10 @@ sub search {
     my $op = $params->{location_census} ? "IS NOT NULL" : "IS NULL";
     push @where, "cust_location.censustract $op";
   }
+  if ( $params->{location_geocode} xor $params->{location_nogeocode} ) {
+    my $op = $params->{location_geocode} ? "IS NOT NULL" : "IS NULL";
+    push @where, "cust_location.geocode $op";
+  }
 
   ###
   # parse part_pkg