<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.4 |
+ | CiviCRM version 4.5 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013 |
+ | Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
/**
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
* $Id$
*
*/
/**
* Store input array on the class
+ *
* @param array $parameters
- * @throws CRM_Core_Exceptions
+ *
+ * @throws CRM_Core_Exception
*/
function setInputParameters($parameters) {
if(!is_array($parameters)) {
* Load objects related to contribution
*
* @input array information from Payment processor
+ *
+ * @param $input
* @param array $ids
* @param array $objects
* @param boolean $required
* @param integer $paymentProcessorID
* @param array $error_handling
+ *
* @return multitype:number NULL |boolean
*/
function loadObjects(&$input, &$ids, &$objects, $required, $paymentProcessorID, $error_handling = NULL) {
$this->addrecurLineItems($objects['contributionRecur']->id, $contribution->id, CRM_Core_DAO::$_nullArray);
}
+ //add new soft credit against current contribution id and
//copy initial contribution custom fields for recurring contributions
if (!empty($objects['contributionRecur']) && $objects['contributionRecur']->id) {
+ $this->addrecurSoftCredit($objects['contributionRecur']->id, $contribution->id);
$this->copyCustomValues($objects['contributionRecur']->id, $contribution->id);
}
return TRUE;
}
+ /**
+ * @param $objects
+ * @param $transaction
+ * @param array $input
+ *
+ * @return bool
+ */
function cancelled(&$objects, &$transaction, $input = array()) {
$contribution = &$objects['contribution'];
$memberships = &$objects['membership'];
$this->addrecurLineItems($objects['contributionRecur']->id, $contribution->id, CRM_Core_DAO::$_nullArray);
}
+ //add new soft credit against current $contribution and
//copy initial contribution custom fields for recurring contributions
if (!empty($objects['contributionRecur']) && $objects['contributionRecur']->id) {
+ $this->addrecurSoftCredit($objects['contributionRecur']->id, $contribution->id);
$this->copyCustomValues($objects['contributionRecur']->id, $contribution->id);
}
return TRUE;
}
+ /**
+ * @param $objects
+ * @param $transaction
+ *
+ * @return bool
+ */
function unhandled(&$objects, &$transaction) {
$transaction->rollback();
// we dont handle this as yet
return FALSE;
}
+ /**
+ * @param $input
+ * @param $ids
+ * @param $objects
+ * @param $transaction
+ * @param bool $recur
+ */
function completeTransaction(&$input, &$ids, &$objects, &$transaction, $recur = FALSE) {
$contribution = &$objects['contribution'];
$memberships = &$objects['membership'];
$dates['end_date'],
$dates['join_date'],
'today',
- TRUE
+ TRUE,
+ $membership->membership_type_id,
+ (array) $membership
);
$formatedParams = array('status_id' => CRM_Utils_Array::value('id', $calcStatus, 2),
$contribution->trxn_id = $input['trxn_id'];
$contribution->receive_date = CRM_Utils_Date::isoToMysql($contribution->receive_date);
$contribution->thankyou_date = CRM_Utils_Date::isoToMysql($contribution->thankyou_date);
+ $contribution->receipt_date = CRM_Utils_Date::isoToMysql($contribution->receipt_date);
$contribution->cancel_date = 'null';
if (!empty($input['check_number'])) {
}
$contribution->save();
+ //add new soft credit against current $contribution and
+ if (CRM_Utils_Array::value('contributionRecur', $objects) && $objects['contributionRecur']->id) {
+ $this->addrecurSoftCredit($objects['contributionRecur']->id, $contribution->id);
+ }
+
//add lineitems for recurring payments
if (!empty($objects['contributionRecur']) && $objects['contributionRecur']->id && $addLineItems) {
$this->addrecurLineItems($objects['contributionRecur']->id, $contribution->id, $input);
CRM_Core_Error::debug_log_message("Success: Database updated");
}
+ /**
+ * @param $ids
+ *
+ * @return bool
+ */
function getBillingID(&$ids) {
// get the billing location type
$locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id', array(), 'validate');
* @params bool $returnMessageText Should text be returned instead of sent. This
* is because the function is also used to generate pdfs
*/
+ /**
+ * @param $input
+ * @param $ids
+ * @param $objects
+ * @param $values
+ * @param bool $recur
+ * @param bool $returnMessageText
+ *
+ * @return mixed
+ */
function sendMail(&$input, &$ids, &$objects, &$values, $recur = FALSE, $returnMessageText = FALSE) {
$contribution = &$objects['contribution'];
$input['is_recur'] = $recur;
* The pledge payment record should already exist & will need to be updated with the new contribution ID.
* If not the contribution will also need to be linked to the pledge
*/
+ /**
+ * @param $contribution
+ */
function updateRecurLinkedPledge(&$contribution) {
$returnProperties = array('id', 'pledge_id');
$paymentDetails = $paymentIDs = array();
);
}
+ /**
+ * @param $recurId
+ * @param $contributionId
+ * @param $input
+ */
function addrecurLineItems($recurId, $contributionId, &$input) {
$lineSets = $lineItems = array();
// function to copy custom data of the
// initial contribution into its recurring contributions
+ /**
+ * @param $recurId
+ * @param $targetContributionId
+ */
function copyCustomValues($recurId, $targetContributionId) {
if ($recurId && $targetContributionId) {
// get the initial contribution id of recur id
}
}
}
+
+ // function to copy soft credit record of first recurring contribution
+ // and add new soft credit against $targetContributionId
+ /**
+ * @param $recurId
+ * @param $targetContributionId
+ */
+ function addrecurSoftCredit($recurId, $targetContributionId) {
+ $contriID = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Contribution', $recurId, 'id', 'contribution_recur_id');
+
+ $soft_contribution = new CRM_Contribute_DAO_ContributionSoft();
+ $soft_contribution->contribution_id = $contriID;
+
+ //check if first recurring contribution has any associated soft credit
+ if ($soft_contribution->find(TRUE)) {
+ $soft_contribution->contribution_id = $targetContributionId;
+ unset($soft_contribution->id);
+ $soft_contribution->save();
+ }
+ }
}