fix foreign keys to voided payments in advance of 4.x upgrade, #13971
[freeside.git] / FS / FS / cust_pay.pm
index 12bf12b..3cdbdb3 100644 (file)
@@ -416,12 +416,17 @@ sub void {
   } );
   $cust_pay_void->reason(shift) if scalar(@_);
   my $error = $cust_pay_void->insert;
-  if ( $error ) {
-    $dbh->rollback if $oldAutoCommit;
-    return $error;
+
+  my $cust_pay_pending =
+    qsearchs('cust_pay_pending', { paynum => $self->paynum });
+  if ( $cust_pay_pending ) {
+    $cust_pay_pending->set('void_paynum', $self->paynum);
+    $cust_pay_pending->set('paynum', '');
+    $error ||= $cust_pay_pending->replace;
   }
 
-  $error = $self->delete;
+  $error ||= $self->delete;
+
   if ( $error ) {
     $dbh->rollback if $oldAutoCommit;
     return $error;
@@ -684,6 +689,8 @@ sub send_receipt {
         'company_name' => $conf->config('company_name', $cust_main->agentnum),
       );
 
+      $fill_in{'invnum'} = $opt->{cust_bill}->invnum if $opt->{cust_bill};
+
       if ( $opt->{'cust_pkg'} ) {
         $fill_in{'pkg'} = $opt->{'cust_pkg'}->part_pkg->pkg;
         #setup date, other things?