use Civi\Api4\Activity;
use Civi\Api4\ContributionPage;
use Civi\Api4\ContributionRecur;
-use Civi\Api4\Participant;
use Civi\Api4\PaymentProcessor;
/**
unset($params['revenue_recognition_date']);
}
+ // Get Line Items if we don't have them already.
+ if (empty($params['line_item'])) {
+ if (isset($params['id'])) {
+ CRM_Price_BAO_LineItem::getLineItemArray($params, [$params['id']]);
+ }
+ else {
+ CRM_Price_BAO_LineItem::getLineItemArray($params);
+ }
+ }
+
if (!isset($params['tax_amount']) && $setPrevContribution && (isset($params['total_amount']) ||
isset($params['financial_type_id']))) {
$params = CRM_Contribute_BAO_Contribution::checkTaxAmount($params);
* @throws \CiviCRM_API3_Exception
*/
public static function calculateMissingAmountParams(&$params, $contributionID) {
- if (!$contributionID && !isset($params['fee_amount'])) {
+ if (!$contributionID && (!isset($params['fee_amount']) || $params['fee_amount'] === '')) {
if (isset($params['total_amount']) && isset($params['net_amount'])) {
$params['fee_amount'] = $params['total_amount'] - $params['net_amount'];
}
// or loadable from the recurring contribution.
$contributionParams['campaign_id'] = $templateContribution['campaign_id'];
}
- $contributionParams['source'] = $contributionParams['source'] ?: ts('Recurring contribution');
+ $contributionParams['source'] = $contributionParams['source'] ?? ts('Recurring contribution');
//CRM-18805 -- Contribution page not recorded on recurring transactions, Recurring contribution payments
//do not create CC or BCC emails or profile notifications.
//not really sure what params might be passed in but lets merge em into values
$values = array_merge($this->_gatherMessageValues($input, $values, $ids), $values);
$values['is_email_receipt'] = !$returnMessageText;
- foreach (['receipt_date', 'cc_receipt', 'bcc_receipt', 'receipt_from_name', 'receipt_from_email', 'receipt_text'] as $fld) {
+ foreach (['receipt_date', 'cc_receipt', 'bcc_receipt', 'receipt_from_name', 'receipt_from_email', 'receipt_text', 'pay_later_receipt'] as $fld) {
if (!empty($input[$fld])) {
$values[$fld] = $input[$fld];
}
elseif (!empty($params['payment_instrument_id'])) {
$params['to_financial_account_id'] = CRM_Financial_BAO_FinancialTypeAccount::getInstrumentFinancialAccount($params['payment_instrument_id']);
}
+ // dev/financial#160 - If this is a contribution update, also check for an existing payment_instrument_id.
+ elseif ($isUpdate && $params['prevContribution']->payment_instrument_id) {
+ $params['to_financial_account_id'] = CRM_Financial_BAO_FinancialTypeAccount::getInstrumentFinancialAccount((int) $params['prevContribution']->payment_instrument_id);
+ }
else {
$relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('financial_account_type', NULL, " AND v.name LIKE 'Asset' "));
$queryParams = [1 => [$relationTypeId, 'Integer']];
// Assign tax Amount on update of contribution
if (!empty($params['prevContribution']->tax_amount)) {
$params['tax_amount'] = 'null';
- CRM_Price_BAO_LineItem::getLineItemArray($params, [$params['id']]);
foreach ($params['line_item'] as $setID => $priceField) {
foreach ($priceField as $priceFieldID => $priceFieldValue) {
$params['line_item'][$setID][$priceFieldID]['tax_amount'] = $params['tax_amount'];
$taxAmount = CRM_Contribute_BAO_Contribution_Utils::calculateTaxAmount(CRM_Utils_Array::value('total_amount', $params), $taxRateParams);
$params['tax_amount'] = round($taxAmount['tax_amount'], 2);
- // Get Line Item on update of contribution
- if (isset($params['id'])) {
- CRM_Price_BAO_LineItem::getLineItemArray($params, [$params['id']]);
- }
- else {
- CRM_Price_BAO_LineItem::getLineItemArray($params);
- }
foreach ($params['line_item'] as $setID => $priceField) {
foreach ($priceField as $priceFieldID => $priceFieldValue) {
$params['line_item'][$setID][$priceFieldID]['tax_amount'] = $params['tax_amount'];
$contributionParams = array_merge([
'contribution_status_id' => $completedContributionStatusID,
- 'source' => self::getRecurringContributionDescription($contribution, $participantID),
], array_intersect_key($input, array_fill_keys($inputContributionWhiteList, 1)
));
return $ids;
}
- /**
- * Get the description (source field) for the recurring contribution.
- *
- * @param CRM_Contribute_BAO_Contribution $contribution
- * @param int|null $participantID
- *
- * @return string
- * @throws \CiviCRM_API3_Exception
- * @throws \API_Exception
- */
- protected static function getRecurringContributionDescription($contribution, $participantID) {
- if (!empty($contribution->source)) {
- return $contribution->source;
- }
- elseif (!empty($contribution->contribution_page_id) && is_numeric($contribution->contribution_page_id)) {
- $contributionPageTitle = civicrm_api3('ContributionPage', 'getvalue', [
- 'id' => $contribution->contribution_page_id,
- 'return' => 'title',
- ]);
- return ts('Online Contribution') . ': ' . $contributionPageTitle;
- }
- elseif ($participantID) {
- $eventTitle = Participant::get(FALSE)
- ->addSelect('event.title')
- ->addWhere('id', '=', (int) $participantID)
- ->execute()->first()['event.title'];
- return ts('Online Event Registration') . ': ' . $eventTitle;
- }
- elseif (!empty($contribution->contribution_recur_id)) {
- return 'recurring contribution';
- }
- return '';
- }
-
/**
* Function use to store line item proportionally in in entity financial trxn table
*
}
elseif (empty($lineItemDetails['line_total'])) {
// follow legacy code path
- Civi::log()
- ->warning('Deprecated bit of code, please log a ticket explaining how you got here!', ['civi.tag' => 'deprecated']);
+ CRM_Core_Error::deprecatedWarning('Deprecated bit of code, please log a ticket explaining how you got here!');
return $params['total_amount'];
}
else {