use vars qw( $ignore_empty_action );
use base qw( FS::otaker_Mixin FS::Record );
use FS::Record qw( qsearch qsearchs );
+use FS::upgrade_journal;
$ignore_empty_action = 0;
}
#remove nullability if scalar(@migrated) - $count == 0 && ->column('action');
+
+ unless ( FS::upgrade_journal->is_done('cust_pkg_reason__missing_reason') ) {
+ $class->_upgrade_missing_reason(%opts);
+ FS::upgrade_journal->set_done('cust_pkg_reason__missing_reason');
+ }
+
+ #still can't fill in an action? don't abort the upgrade
+ local($ignore_empty_action) = 1;
+
+ $class->_upgrade_otaker(%opts);
+
+}
+
+sub _upgrade_missing_reason {
+ my ($class, %opts) = @_;
+
+ #false laziness w/above
+ my $action_replace =
+ " AND ( history_action = 'replace_old' OR history_action = 'replace_new' )";
#seek expirations/adjourns without reason
- foreach my $field qw( expire adjourn cancel susp ) {
+ foreach my $field (qw( expire adjourn cancel susp )) {
my $addl_from =
"LEFT JOIN h_cust_pkg ON ".
"(cust_pkg_reason.pkgnum = h_cust_pkg.pkgnum AND".
}
#seek cancels/suspends without reason, but with expire/adjourn reason
- foreach my $field qw( cancel susp ) {
+ foreach my $field (qw( cancel susp )) {
my %precursor_map = ( 'cancel' => 'expire', 'susp' => 'adjourn' );
my $precursor = $precursor_map{$field};
}
}
- #still can't fill in an action? don't abort the upgrade
- local($ignore_empty_action) = 1;
-
- $class->_upgrade_otaker(%opts);
}
=back