Merge pull request #7590 from rohankatkar/CRM-17787
authorMonish Deb <monish.deb@webaccessglobal.com>
Thu, 14 Jan 2016 10:37:04 +0000 (16:07 +0530)
committerMonish Deb <monish.deb@webaccessglobal.com>
Thu, 14 Jan 2016 10:37:04 +0000 (16:07 +0530)
CRM-17787

1  2 
CRM/Contribute/BAO/Contribution.php

index 20a1b7feb161e4b968362306a7d1e18aa4e3d71e,4b10b2ea432553fb4e10f80ca8c19d8f328c71df..9bc685129e74e1f0d7597e74c92e71b875c69dab
@@@ -810,6 -810,15 +810,15 @@@ class CRM_Contribute_BAO_Contribution e
          ),
        );
  
+       // 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',
        );
  
        $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)
        );
  
@@@ -4722,49 -4731,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);
 +      }
 +    }
 +  }
 +
  }