my $dbh = dbh;
my $conf = FS::Conf->new;
-my $current_year = $conf->config('census_year')
- or die "No current census year configured.\n";
+my $current_year = $conf->config('census_legacy') || '2020';
my $date = str2time($opt{d}) if $opt{d};
$date ||= time;
# This now operates on cust_location, not cust_main.
# Find all locations that, as of $date, did not have
# censusyear = the current year. This includes those
# that have no censusyear.
+local($FS::Record::qsearch_qualify_columns) = 0;
my %h_cust_location = map { $_->locationnum => $_ }
qsearch(
'h_cust_location',
# Find all locations that don't have censusyear = the current
# year as of now.
-my @cust_location = qsearch( 'cust_location',
- { censusyear => { op => '!=', value => $current_year } },
-);
+my @cust_location = qsearch({
+ 'table' => 'cust_location',
+ 'hashref' => { 'country' => 'US', },
+ 'extra_sql' => " AND ( censusyear != '$current_year'
+ OR censustract IS NULL
+ )
+ ",
+});
warn scalar(@cust_location)." records found.\n";
my $queued = 0; my $updated = 0;
=head1 DESCRIPTION
Finds all customers whose census tract codes don't appear to be current
-and updates them to the current year. The "current year" is defined by
-the I<census_tract> configuration variable, not the calendar year.
+and updates them to the current year. The "current year" is 2020, unless the
+I<census_legacy> configuration variable is set.
The -d option tells the script to assume that tract codes last modified
after some date are already current. Those customers will just have