use base qw( FS::otaker_Mixin FS::payinfo_transaction_Mixin FS::cust_main_Mixin
FS::reason_Mixin FS::Record);
use vars qw( $DEBUG $me $conf @encrypted_fields
- $unsuspendauto $ignore_noapply
+ $ignore_noapply
);
use Date::Format;
use Business::CreditCard;
#ask FS::UID to run this stuff for us later
FS::UID->install_callback( sub {
$conf = new FS::Conf;
- $unsuspendauto = $conf->exists('unsuspendauto');
} );
@encrypted_fields = ('payinfo');
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
- #false laziness w/ cust_credit::insert
- if ( $unsuspendauto && $old_balance && $cust_main->balance <= 0 ) {
- my @errors = $cust_main->unsuspend;
- #return
- # side-fx with nested transactions? upstack rolls back?
- warn "WARNING:Errors unsuspending customer ". $cust_main->custnum. ": ".
- join(' / ', @errors)
- if @errors;
- }
- #eslaf
+ # possibly trigger package unsuspend, doesn't abort transaction on failure
+ $self->unsuspend_balance if $old_balance;
#bill setup fees for voip_cdr bill_every_call packages
#some false laziness w/search in freeside-cdrd
unless (ref($reason) || !$reason) {
$reason = FS::reason->new_or_existing(
- 'class' => 'X',
+ 'class' => 'P',
'type' => 'Void payment',
'reason' => $reason
);
'table' => 'cust_pay_refund',
'hashref' => { 'paynum' => $self->paynum },
'addl_from' => 'LEFT JOIN cust_refund USING (refundnum)',
- 'extra_sql' => "AND (cust_refund.closed = '' OR cust_refund.closed IS NULL)",
+ 'extra_sql' => "AND cust_refund.closed IS NULL AND cust_refund.source_paynum IS NULL",
});
}