From b07b172ba9c12026fbd5c38c2d7bf44487a064d7 Mon Sep 17 00:00:00 2001 From: "deb.monish" Date: Wed, 26 Jul 2017 13:03:26 +0530 Subject: [PATCH] minor fix --- CRM/Contribute/BAO/Contribution.php | 32 ++++++++++---------- CRM/Contribute/Form/Task/Invoice.php | 9 +++--- CRM/Upgrade/Incremental/php/FourSeven.php | 37 +++++++++-------------- tests/phpunit/api/v3/ContributionTest.php | 2 +- 4 files changed, 35 insertions(+), 45 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 5bce8c4140..79fdeb3ffb 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -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; } } diff --git a/CRM/Contribute/Form/Task/Invoice.php b/CRM/Contribute/Form/Task/Invoice.php index be9919ae08..03ec061b5e 100644 --- a/CRM/Contribute/Form/Task/Invoice.php +++ b/CRM/Contribute/Form/Task/Invoice.php @@ -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', diff --git a/CRM/Upgrade/Incremental/php/FourSeven.php b/CRM/Upgrade/Incremental/php/FourSeven.php index 671e8dc4c6..c17916e8bb 100644 --- a/CRM/Upgrade/Incremental/php/FourSeven.php +++ b/CRM/Upgrade/Incremental/php/FourSeven.php @@ -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); + } + } } /* diff --git a/tests/phpunit/api/v3/ContributionTest.php b/tests/phpunit/api/v3/ContributionTest.php index f3890e271f..1c5dd8b2d7 100644 --- a/tests/phpunit/api/v3/ContributionTest.php +++ b/tests/phpunit/api/v3/ContributionTest.php @@ -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', -- 2.25.1