minor fix
authordeb.monish <monish.deb@jmaconsulting.biz>
Wed, 26 Jul 2017 07:33:26 +0000 (13:03 +0530)
committerdeb.monish <monish.deb@jmaconsulting.biz>
Tue, 31 Oct 2017 19:39:58 +0000 (01:09 +0530)
CRM/Contribute/BAO/Contribution.php
CRM/Contribute/Form/Task/Invoice.php
CRM/Upgrade/Incremental/php/FourSeven.php
tests/phpunit/api/v3/ContributionTest.php

index 5bce8c414081d2ec6254f18b0820c4ec0cd34f17..79fdeb3ffb5f55f7a6cafdf417f500a3ef41b576 100644 (file)
@@ -139,6 +139,11 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution {
     //set defaults in create mode
     if (!$contributionID) {
       CRM_Core_DAO::setCreateDefaults($params, self::getDefaults());
+
+      if (empty($params['invoice_number'])) {
+        $nextContributionID = CRM_Core_DAO::singleValueQuery("SELECT COALESCE(MAX(id) + 1, 1) FROM civicrm_contribution");
+        $params['invoice_number'] = self::getInvoiceNumber($nextContributionID);
+      }
     }
 
     $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
@@ -233,10 +238,6 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution {
     $params['contribution'] = $contribution;
     self::recordFinancialAccounts($params);
 
-    if (!$contributionID) {
-      self::storeInvoiceNumber($contribution->id);
-    }
-
     if (self::isUpdateToRecurringContribution($params)) {
       CRM_Contribute_BAO_ContributionRecur::updateOnNewPayment(
         (!empty($params['contribution_recur_id']) ? $params['contribution_recur_id'] : $params['prevContribution']->contribution_recur_id),
@@ -5109,12 +5110,17 @@ WHERE eft.financial_trxn_id IN ({$trxnId}, {$baseTrxnId['financialTrxnId']})
    *
    *
    * @param string $name
+   * @param bool $checkInvoicing
    * @return string
    *
    */
-  public static function checkContributeSettings($name = NULL) {
+  public static function checkContributeSettings($name = NULL, $checkInvoicing = FALSE) {
     $contributeSettings = Civi::settings()->get('contribution_invoice_settings');
 
+    if ($checkInvoicing && !CRM_Utils_Array::value('invoicing', $contributeSettings)) {
+      return NULL;
+    }
+
     if ($name) {
       return CRM_Utils_Array::value($name, $contributeSettings);
     }
@@ -5761,24 +5767,18 @@ LIMIT 1;";
   }
 
   /**
-   * Generate and store invoice_number for contribution.
+   * Get invoice_number for contribution.
    *
    * @param int $contributionID
    *
    * @return string
    */
-  public static function storeInvoiceNumber($contributionID) {
-    $invoiceNumber = NULL;
-    if ($invoicePrefix = self::checkContributeSettings('invoice_prefix')) {
-      $invoiceNumber = $invoicePrefix . $contributionID;
-      $params = array(
-        'id' => $contributionID,
-        'invoice_number' => $invoiceNumber,
-      );
-      civicrm_api3('Contribution', 'create', $params);
+  public static function getInvoiceNumber($contributionID) {
+    if ($invoicePrefix = self::checkContributeSettings('invoice_prefix', TRUE)) {
+      return $invoicePrefix . $contributionID;
     }
 
-    return $invoiceNumber;
+    return NULL;
   }
 
 }
index be9919ae08db101dd2fa0e4dd2630c1c9c9f1bc5..03ec061b5efcabcf0cfb8397eac10b385557db4b 100644 (file)
@@ -312,9 +312,8 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
           $creditNoteId = $contribution->creditnote_id;
         }
       }
-      $invoiceNumber = $contribution->invoice_number;
-      if (!$invoiceNumber) {
-        $invoiceNumber = CRM_Contribute_BAO_Contribution::storeInvoiceNumber($contribution->id);
+      if (!$contribution->invoice_number) {
+        $contribution->invoice_number = CRM_Contribute_BAO_Contribution::getInvoiceNumber($contribution->id);
       }
 
       //to obtain due date for PDF invoice
@@ -428,7 +427,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         'component' => $input['component'],
         'id' => $contribution->id,
         'source' => $source,
-        'invoice_number' => $invoiceNumber,
+        'invoice_number' => $contribution->invoice_number,
         'invoice_id' => $contribution->invoice_id,
         'resourceBase' => $config->userFrameworkResourceURL,
         'defaultCurrency' => $config->defaultCurrency,
@@ -472,7 +471,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         $tplParams['creditnote_id'] = $creditNoteId;
       }
 
-      $pdfFileName = "{$invoiceNumber}.pdf";
+      $pdfFileName = $contribution->invoice_number . ".pdf";
       $sendTemplateParams = array(
         'groupName' => 'msg_tpl_workflow_contribution',
         'valueName' => 'contribution_invoice_receipt',
index 671e8dc4c679f6ba0ebd1529b4709f39249904e7..c17916e8bbe070e26ab7a89f6b52e11acb68bf5e 100644 (file)
@@ -414,29 +414,6 @@ class CRM_Upgrade_Incremental_php_FourSeven extends CRM_Upgrade_Incremental_Base
     $this->addTask(ts('Upgrade DB to %1: SQL', array(1 => $rev)), 'runSql', $rev);
   }
 
-  /**
-   * Upgrade function.
-   *
-   * @param string $rev
-   */
-  public function upgrade_4_7_24($rev) {
-    $invoiceSettings = Civi::settings()->get('contribution_invoice_settings');
-    if (!empty($invoiceSettings['invoicing']) && !empty($invoiceSettings['invoice_prefix'])) {
-      list($minId, $maxId) = CRM_Core_DAO::executeQuery("SELECT coalesce(min(id),0), coalesce(max(id),0)
-        FROM civicrm_contribution ")->getDatabaseResult()->fetchRow();
-      for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) {
-        $endId = $startId + self::BATCH_SIZE - 1;
-        $title = ts("Upgrade DB to %1: Update Contribution Invoice number (%2 => %3)", array(
-          1 => $rev,
-          2 => $startId,
-          3 => $endId,
-        ));
-        $this->addTask($title, 'updateContributionInvoiceNumber', $startId, $endId, $invoiceSettings['invoice_prefix']);
-      }
-    }
-    $this->addTask(ts('Upgrade DB to %1: SQL', array(1 => $rev)), 'runSql', $rev);
-  }
-
   /**
    * Upgrade function.
    *
@@ -489,6 +466,20 @@ class CRM_Upgrade_Incremental_php_FourSeven extends CRM_Upgrade_Incremental_Base
   public function upgrade_4_7_28($rev) {
     $this->addTask(ts('Upgrade DB to %1: SQL', array(1 => $rev)), 'runSql', $rev);
     $this->addTask('CRM-20572: Fix date fields in save search criteria of Contrib Sybunt custom search ', 'fixDateFieldsInSmartGroups');
+    // CRM-20868 : Update invoice_numbers (in batch) with value in [invoice prefix][contribution id] format
+    if ($invoicePrefix = CRM_Contribute_BAO_Contribution::checkContributeSettings('invoice_prefix', TRUE)) {
+      list($minId, $maxId) = CRM_Core_DAO::executeQuery("SELECT coalesce(min(id),0), coalesce(max(id),0)
+        FROM civicrm_contribution ")->getDatabaseResult()->fetchRow();
+      for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) {
+        $endId = $startId + self::BATCH_SIZE - 1;
+        $title = ts("Upgrade DB to %1: Update Contribution Invoice number (%2 => %3)", array(
+          1 => $rev,
+          2 => $startId,
+          3 => $endId,
+        ));
+        $this->addTask($title, 'updateContributionInvoiceNumber', $startId, $endId, $invoicePrefix);
+      }
+    }
   }
 
   /*
index f3890e271f8b83602391f8f1b2b94f6877b6fbcd..1c5dd8b2d79559099fe9feadedc22f4facba9448 100644 (file)
@@ -129,7 +129,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
    */
   public function testGetContribution() {
     $contributionSettings = $this->enableTaxAndInvoicing();
-    $invoice_prefix = CRM_Contribute_BAO_Contribution::checkContributeSettings('invoice_prefix');
+    $invoice_prefix = CRM_Contribute_BAO_Contribution::checkContributeSettings('invoice_prefix', TRUE);
     $p = array(
       'contact_id' => $this->_individualId,
       'receive_date' => '2010-01-20',