cust_main fields only
[freeside.git] / FS / FS / cust_pay_void.pm
index 42fc296..0609ea8 100644 (file)
@@ -17,6 +17,8 @@ use FS::cust_pay;
 use FS::cust_pkg;
 
 @encrypted_fields = ('payinfo');
+sub nohistory_fields { ('payinfo'); }
+
 $otaker_upgrade_kludge = 0;
 
 =head1 NAME
@@ -74,6 +76,10 @@ Payment Type (See L<FS::payinfo_Mixin> for valid values)
 
 card number, check #, or comp issuer (4-8 lowercase alphanumerics; think username), respectively
 
+=item cardtype
+
+Credit card type, if appropriate.
+
 =item paybatch
 
 text field for tracking card processing
@@ -133,12 +139,16 @@ sub unvoid {
     map { $_ => $self->get($_) } fields('cust_pay')
   } );
   my $error = $cust_pay->insert;
-  if ( $error ) {
-    $dbh->rollback if $oldAutoCommit;
-    return $error;
+
+  my $cust_pay_pending =
+    qsearchs('cust_pay_pending', { void_paynum => $self->paynum });
+  if ( $cust_pay_pending ) {
+    $cust_pay_pending->set('paynum', $cust_pay->paynum);
+    $cust_pay_pending->set('void_paynum', '');
+    $error ||= $cust_pay_pending->replace;
   }
 
-  $error = $self->delete;
+  $error ||= $self->delete;
   if ( $error ) {
     $dbh->rollback if $oldAutoCommit;
     return $error;
@@ -184,7 +194,7 @@ sub check {
     || $self->ut_foreign_keyn('pkgnum', 'cust_pkg', 'pkgnum')
     || $self->ut_numbern('void_date')
     || $self->ut_textn('reason')
-    || $self->payinfo_check
+    # || $self->payinfo_check #we'd rather void what we have than fail on this
   ;
   return $error if $error;