+ qsearchs('access_user', { 'usernum' => $self->void_usernum } );
+}
+
+# Used by FS::Upgrade to migrate to a new database.
+sub _upgrade_data { # class method
+ my ($class, %opts) = @_;
+
+ my $sql = "SELECT usernum FROM access_user WHERE username = ( SELECT history_user FROM h_cust_pay_void WHERE paynum = ? AND history_action = 'insert' ORDER BY history_date LIMIT 1 ) ";
+ my $sth = dbh->prepare($sql) or die dbh->errstr;
+
+ foreach my $cust_pay_void (qsearch('cust_pay_void', {'void_usernum' => ''})) {
+ $sth->execute($cust_pay_void->paynum) or die $sth->errstr;
+ my $row = $sth->fetchrow_arrayref;
+ my $usernum = $row ? $row->[0] : '';
+ if ( $usernum ) {
+ $cust_pay_void->void_usernum($usernum);
+ my $error = $cust_pay_void->replace;
+ die $error if $error;
+ } else {
+ warn "cust_pay_void upgrade: can't find access_user record for ". $cust_pay_void->paynum. "\n";
+ }
+ }
+
+ local($otaker_upgrade_kludge) = 1;
+ $class->_upgrade_otaker(%opts);
+
+ #XXX look for the h_cust_pay delete records and when that's a different
+ # usernum, set usernum