X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContribute%2FBAO%2FContribution.php;h=617033da661ccc1514e265babd5c26ae6be66602;hb=def7e7707dd4a1730c97dff8f92d4441e7af4dd5;hp=e44de0544d9da21b6f88c6a1c277324963b4afcf;hpb=71ebe5dbd5d200ff9ecf006a32a445228fd6fc13;p=civicrm-core.git diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index e44de0544d..617033da66 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -810,6 +810,15 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { ), ); + // CRM-17787 + $campaignTitle = array( + 'contribution_campaign_title' => array( + 'title' => ts('Campaign Title'), + 'name' => 'campaign_title', + 'where' => 'civicrm_campaign.title', + 'data_type' => CRM_Utils_Type::T_STRING, + ), + ); $softCreditFields = array( 'contribution_soft_credit_name' => array( 'name' => 'contribution_soft_credit_name', @@ -854,7 +863,7 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { ); $fields = array_merge($impFields, $typeField, $contributionStatus, $contributionPage, $optionField, $expFieldProduct, - $expFieldsContrib, $contributionNote, $contributionRecurId, $extraFields, $softCreditFields, $financialAccount, $premiums, + $expFieldsContrib, $contributionNote, $contributionRecurId, $extraFields, $softCreditFields, $financialAccount, $premiums, $campaignTitle, CRM_Core_BAO_CustomField::getFieldsForImport('Contribution', FALSE, FALSE, FALSE, $checkPermission) ); @@ -4037,7 +4046,7 @@ WHERE con.id = {$contributionId} empty($params['skipLineItem']) && !$isLineItem ) { $taxRateParams = $taxRates[$params['financial_type_id']]; - $taxAmount = CRM_Contribute_BAO_Contribution_Utils::calculateTaxAmount($params['total_amount'], $taxRateParams); + $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 @@ -4052,7 +4061,7 @@ WHERE con.id = {$contributionId} $params['line_item'][$setID][$priceFieldID]['tax_amount'] = $params['tax_amount']; } } - $params['total_amount'] = $params['total_amount'] + $params['tax_amount']; + $params['total_amount'] = CRM_Utils_Array::value('total_amount', $params) + $params['tax_amount']; } elseif (isset($params['api.line_item.create'])) { // Update total amount of contribution using lineItem @@ -4722,4 +4731,49 @@ LIMIT 1;"; return 'recurring contribution'; } + /** + * Function to add payments for contribution + * for Partially Paid status + * + * @param array $lineItems + * @param array $contributions + * + */ + public static function addPayments($lineItems, $contributions) { + // get financial trxn which is a payment + $ftSql = "SELECT ft.id + 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"; + $sql = "SELECT fi.id, li.price_field_value_id + FROM civicrm_financial_item fi + INNER JOIN civicrm_line_item li ON li.id = fi.entity_id + WHERE li.contribution_id = %1"; + + foreach ($contributions as $k => $contribution) { + if ($contribution->contribution_status_id != CRM_Core_OptionGroup::getValue('contribution_status', 'Partially paid', 'name')) { + continue; + } + $ftId = CRM_Core_DAO::singleValueQuery($ftSql, array(1 => array($contribution->id, 'Integer'))); + // get financial item + $dao = CRM_Core_DAO::executeQuery($sql, array(1 => array($contribution->id, 'Integer'))); + while ($dao->fetch()) { + $ftIds[$dao->price_field_value_id] = $dao->id; + } + + $params = array( + 'entity_table' => 'civicrm_financial_item', + 'financial_trxn_id' => $ftId, + ); + foreach ($lineItems as $key => $value) { + $paid = $value['line_total'] * ($contribution->net_amount / $contribution->total_amount); + // Record Entity Financial Trxn + $params['amount'] = $paid; + $params['entity_id'] = $ftIds[$value['price_field_value_id']]; + + civicrm_api3('EntityFinancialTrxn', 'create', $params); + } + } + } + }