Fix credit note sequence issue
authorGuanhuan Chen <oooomic@gmail.com>
Tue, 29 Sep 2015 15:59:41 +0000 (16:59 +0100)
committerGuanhuan Chen <oooomic@gmail.com>
Thu, 1 Oct 2015 16:48:10 +0000 (17:48 +0100)
CRM/Contribute/Form/Task/Invoice.php

index a93a3c3bff36e7594b035d4d50b926d1c9ae6302..27959383ae950a2478022f3c2ae89a842f529114 100644 (file)
@@ -312,7 +312,16 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       }
 
       if ($contribution->contribution_status_id == $refundedStatusId || $contribution->contribution_status_id == $cancelledStatusId) {
-        $creditNoteId = CRM_Utils_Array::value('credit_notes_prefix', $prefixValue) . "" . $contribution->id;
+        if (is_null($contribution->creditnote_id)) {
+          $query = "select count(creditnote_id) as creditnote_number from civicrm_contribution";
+          $dao = CRM_Core_DAO::executeQuery($query);
+          $dao->fetch();
+          $creditNoteId = CRM_Utils_Array::value('credit_notes_prefix', $prefixValue) . "" . ($dao->creditnote_number + 1);
+          CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Contribution', $contribution->id, 'creditnote_id', $creditNoteId);
+        }
+        else {
+          $creditNoteId = $contribution->creditnote_id;
+        }
       }
       $invoiceId = CRM_Utils_Array::value('invoice_prefix', $prefixValue) . "" . $contribution->id;
 
@@ -544,9 +553,6 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       }
 
       CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Contribution', $contribution->id, 'invoice_id', $invoiceId);
-      if ($contribution->contribution_status_id == $refundedStatusId || $contribution->contribution_status_id == $cancelledStatusId) {
-        CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Contribution', $contribution->id, 'creditnote_id', $creditNoteId);
-      }
       $invoiceTemplate->clearTemplateVars();
     }