package FS::cust_pkg_reason;
use strict;
-use vars qw( @ISA );
+use base qw( FS::otaker_Mixin FS::Record );
use FS::Record qw( qsearch qsearchs );
-@ISA = qw(FS::Record);
-
=head1 NAME
FS::cust_pkg_reason - Object methods for cust_pkg_reason records
=over 4
-=item num - primary key
+=item num
-=item pkgnum -
+primary key
-=item reasonnum -
+=item pkgnum
-=item otaker -
+=item reasonnum
-=item date -
+=item usernum
+=item date
=back
|| $self->ut_number('pkgnum')
|| $self->ut_number('reasonnum')
|| $self->ut_enum('action', [ 'A', 'C', 'E', 'S' ])
- || $self->ut_text('otaker')
+ || $self->ut_alphan('otaker')
|| $self->ut_numbern('date')
;
return $error if $error;
#
# Used by FS::Upgrade to migrate to a new database.
+use FS::h_cust_pkg;
+use FS::h_cust_pkg_reason;
+use FS::Schema qw(dbdef);
+
sub _upgrade_data { # class method
my ($class, %opts) = @_;
- my $test_cust_pkg_reason = new FS::cust_pkg_reason;
- return '' unless $test_cust_pkg_reason->dbdef_table->column('action');
+ return '' unless dbdef->table('cust_pkg_reason')->column('action');
+
+ my $action_replace =
+ " AND ( history_action = 'replace_old' OR history_action = 'replace_new' )";
my $count = 0;
my @unmigrated = qsearch('cust_pkg_reason', { 'action' => '' } );
foreach ( @unmigrated ) {
- # we could create h_cust_pkg_reason and h_cust_pkg_reason packages
- @FS::h_cust_pkg::ISA = qw( FS::h_Common FS::cust_pkg );
- sub FS::h_cust_pkg::table { 'h_cust_pkg' };
- @FS::h_cust_pkg_reason::ISA = qw( FS::h_Common FS::cust_pkg_reason );
- sub FS::h_cust_pkg_reason::table { 'h_cust_pkg_reason' };
my @history_cust_pkg_reason = qsearch( 'h_cust_pkg_reason', { $_->hash } );
next unless scalar(@history_cust_pkg_reason) == 1;
- my %action_value = ( op => 'LIKE',
- value => 'replace_%',
- );
my $hashref = { pkgnum => $_->pkgnum,
history_date => $history_cust_pkg_reason[0]->history_date,
- history_action => { %action_value },
};
- my @history = qsearch({ table => 'h_cust_pkg',
- hashref => $hashref,
- order_by => 'ORDER BY history_action',
+ my @history = qsearch({ table => 'h_cust_pkg',
+ hashref => $hashref,
+ extra_sql => $action_replace,
+ order_by => 'ORDER BY history_action',
});
my $fuzz = 0;
while (scalar(@history) < 2 && $fuzz < 3) {
$hashref->{history_date}++;
- $hashref->{history_action} = { %action_value }; # qsearch distorts this!
$fuzz++;
- push @history, qsearch({ table => 'h_cust_pkg',
- hashref => $hashref,
- order_by => 'ORDER BY history_action',
+ push @history, qsearch({ table => 'h_cust_pkg',
+ hashref => $hashref,
+ extra_sql => $action_replace,
+ order_by => 'ORDER BY history_action',
});
}
extra_sql => $extra_sql,
});
foreach ( @unmigrated ) {
- # we could create h_cust_pkg_reason and h_cust_pkg_reason packages
- @FS::h_cust_pkg::ISA = qw( FS::h_Common FS::cust_pkg );
- sub FS::h_cust_pkg::table { 'h_cust_pkg' };
- my %action_value = ( op => 'LIKE',
- value => 'replace_%',
- );
my $hashref = { pkgnum => $_->pkgnum,
history_date => $_->date,
- history_action => { %action_value },
};
- my @history = qsearch({ table => 'h_cust_pkg',
- hashref => $hashref,
- order_by => 'ORDER BY history_action',
+ my @history = qsearch({ table => 'h_cust_pkg',
+ hashref => $hashref,
+ extra_sql => $action_replace,
+ order_by => 'ORDER BY history_action',
});
my $fuzz = 0;
while (scalar(@history) < 2 && $fuzz < 3) {
$hashref->{history_date}++;
- $hashref->{history_action} = { %action_value }; # qsearch distorts this!
$fuzz++;
push @history, qsearch({ table => 'h_cust_pkg',
hashref => $hashref,
+ extra_sql => $action_replace,
order_by => 'ORDER BY history_action',
});
}
}
}
- '';
-
+ $class->_upgrade_otaker(%opts);
}
=back