+=cut
+
+sub insert {
+ my $self = shift;
+
+ my $flag = 0;
+ if ( $self->payby eq 'PREPAY' ) {
+ $self->payby('BILL');
+ $flag = 1;
+ }
+
+ local $SIG{HUP} = 'IGNORE';
+ local $SIG{INT} = 'IGNORE';
+ local $SIG{QUIT} = 'IGNORE';
+ local $SIG{TERM} = 'IGNORE';
+ local $SIG{TSTP} = 'IGNORE';
+ local $SIG{PIPE} = 'IGNORE';
+
+ my $error = $self->SUPER::insert;
+ return $error if $error;
+
+ if ( $flag ) {
+ my $prepay_credit =
+ qsearchs('prepay_credit', { 'identifier' => $self->payinfo } );
+ warn "WARNING: can't find pre-found prepay_credit: ". $self->payinfo
+ unless $prepay_credit;
+ my $amount = $prepay_credit->amount;
+ my $error = $prepay_credit->delete;
+ if ( $error ) {
+ warn "WARNING: can't delete prepay_credit: ". $self->payinfo;
+ } else {
+ my $cust_credit = new FS::cust_credit {
+ 'custnum' => $self->custnum,
+ 'amount' => $amount,
+ };
+ my $error = $cust_credit->insert;
+ warn "WARNING: error inserting cust_credit for prepay_credit: $error"
+ if $error;
+ }
+
+ }
+
+ '';
+
+}
+