if (!$contributionID) {
CRM_Core_DAO::setCreateDefaults($params, self::getDefaults());
- if (empty($params['invoice_number'])) {
+ if (empty($params['invoice_number']) && CRM_Invoicing_Utils::isInvoicingEnabled()) {
$nextContributionID = CRM_Core_DAO::singleValueQuery("SELECT COALESCE(MAX(id) + 1, 1) FROM civicrm_contribution");
$params['invoice_number'] = self::getInvoiceNumber($nextContributionID);
}
if (self::isContributionUpdateARefund($params['prevContribution']->contribution_status_id, $params['contribution']->contribution_status_id)) {
// @todo we should stop passing $params by reference - splitting this out would be a step towards that.
$params['trxnParams']['total_amount'] = -$params['total_amount'];
+ if (empty($params['contribution']->creditnote_id)) {
+ // This is always set in the Contribution::create function.
+ CRM_Core_Error::deprecatedFunctionWarning('Logic says this line is never reached & can be removed');
+ $creditNoteId = self::createCreditNoteId();
+ CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Contribution', $params['contribution']->id, 'creditnote_id', $creditNoteId);
+ }
}
elseif (($previousContributionStatus == 'Pending'
&& $params['prevContribution']->is_pay_later) || $previousContributionStatus == 'In Progress'
// @todo we should stop passing $params by reference - splitting this out would be a step towards that.
$params['trxnParams']['to_financial_account_id'] = $arAccountId;
$params['trxnParams']['total_amount'] = -$params['total_amount'];
+ if (empty($params['contribution']->creditnote_id)) {
+ // This is always set in the Contribution::create function.
+ CRM_Core_Error::deprecatedFunctionWarning('Logic says this line is never reached & can be removed');
+ $creditNoteId = self::createCreditNoteId();
+ CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Contribution', $params['contribution']->id, 'creditnote_id', $creditNoteId);
+ }
}
else {
// @todo we should stop passing $params by reference - splitting this out would be a step towards that.
*
* @return string
* Credit Note Id.
+ *
+ * @throws \CiviCRM_API3_Exception
*/
public static function createCreditNoteId() {
- $prefixValue = Civi::settings()->get('contribution_invoice_settings');
$creditNoteNum = CRM_Core_DAO::singleValueQuery("SELECT count(creditnote_id) as creditnote_number FROM civicrm_contribution WHERE creditnote_id IS NOT NULL");
$creditNoteId = NULL;
do {
$creditNoteNum++;
- $creditNoteId = CRM_Utils_Array::value('credit_notes_prefix', $prefixValue) . "" . $creditNoteNum;
+ $creditNoteId = Civi::settings()->get('credit_notes_prefix') . '' . $creditNoteNum;
$result = civicrm_api3('Contribution', 'getcount', [
'sequential' => 1,
'creditnote_id' => $creditNoteId,
return '';
}
- /**
- * Function to add payments for contribution for Partially Paid status
- *
- * @deprecated this is known to be flawed and possibly buggy.
- *
- * Replace with Order.create->Payment.create flow.
- *
- * @param array $contributions
- *
- * @throws \CiviCRM_API3_Exception
- */
- public static function addPayments($contributions) {
- // get financial trxn which is a payment
- $ftSql = "SELECT ft.id, ft.total_amount
- FROM civicrm_financial_trxn ft
- INNER JOIN civicrm_entity_financial_trxn eft ON eft.financial_trxn_id = ft.id AND eft.entity_table = 'civicrm_contribution'
- WHERE eft.entity_id = %1 AND ft.is_payment = 1 ORDER BY ft.id DESC LIMIT 1";
- $contributionStatus = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'contribution_status_id', [
- 'labelColumn' => 'name',
- ]);
- foreach ($contributions as $contribution) {
- if ($contributionStatus[$contribution->contribution_status_id] !== 'Partially paid') {
- continue;
- }
- $ftDao = CRM_Core_DAO::executeQuery($ftSql, [
- 1 => [
- $contribution->id,
- 'Integer',
- ],
- ]);
- $ftDao->fetch();
-
- // store financial item Proportionaly.
- $trxnParams = [
- 'total_amount' => $ftDao->total_amount,
- 'contribution_id' => $contribution->id,
- ];
- self::assignProportionalLineItems($trxnParams, $ftDao->id, $contribution->total_amount);
- }
- }
-
/**
* Function use to store line item proportionally in in entity financial trxn table
*
*
*
* @param string $name
- * @param bool $checkInvoicing
+ *
* @return string
*
*/
- public static function checkContributeSettings($name = NULL, $checkInvoicing = FALSE) {
+ public static function checkContributeSettings($name) {
$contributeSettings = Civi::settings()->get('contribution_invoice_settings');
-
- if ($checkInvoicing && empty($contributeSettings['invoicing'])) {
- return NULL;
- }
-
- if ($name) {
- return CRM_Utils_Array::value($name, $contributeSettings);
- }
- return $contributeSettings;
+ return CRM_Utils_Array::value($name, $contributeSettings);
}
/**
* @return string
*/
public static function getInvoiceNumber($contributionID) {
- if ($invoicePrefix = self::checkContributeSettings('invoice_prefix', TRUE)) {
+ if ($invoicePrefix = self::checkContributeSettings('invoice_prefix')) {
return $invoicePrefix . $contributionID;
}