//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');
$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),
*
*
* @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);
}
}
/**
- * 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;
}
}
$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
'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,
$tplParams['creditnote_id'] = $creditNoteId;
}
- $pdfFileName = "{$invoiceNumber}.pdf";
+ $pdfFileName = $contribution->invoice_number . ".pdf";
$sendTemplateParams = array(
'groupName' => 'msg_tpl_workflow_contribution',
'valueName' => 'contribution_invoice_receipt',
$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.
*
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);
+ }
+ }
}
/*
*/
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',