Skip to content

Commit

Permalink
WIP switch recordAdditionalPayment fully over to api
Browse files Browse the repository at this point in the history
Let's see what fails first
  • Loading branch information
eileenmcnaughton committed Jun 5, 2019
1 parent c7520a5 commit 26395ed
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 55 deletions.
33 changes: 0 additions & 33 deletions CRM/Contribute/BAO/Contribution.php
Original file line number Diff line number Diff line change
Expand Up @@ -3986,39 +3986,6 @@ public static function validateFinancialType($financialTypeId, $relationName = '
return FALSE;
}

/**
* Function to record additional payment for partial and refund contributions.
*
* @param int $contributionId
* is the invoice contribution id (got created after processing participant payment).
* @param array $trxnsData
* to take user provided input of transaction details.
* @param string $paymentType
* 'owed' for purpose of recording partial payments, 'refund' for purpose of recording refund payments.
* @param int $participantId
* @param bool $updateStatus
*
* @return int
*
* @throws \CRM_Core_Exception
* @throws \CiviCRM_API3_Exception
*/
public static function recordAdditionalPayment($contributionId, $trxnsData, $paymentType = 'owed', $participantId = NULL, $updateStatus = TRUE) {

if ($paymentType == 'owed') {
$financialTrxn = CRM_Financial_BAO_Payment::recordPayment($contributionId, $trxnsData, $participantId);
if (!empty($financialTrxn)) {
self::recordPaymentActivity($contributionId, $participantId, $financialTrxn->total_amount, $financialTrxn->currency, $financialTrxn->trxn_date);
return $financialTrxn->id;
}
}
elseif ($paymentType == 'refund') {
$trxnsData['total_amount'] = -$trxnsData['total_amount'];
$trxnsData['participant_id'] = $participantId;
return civicrm_api3('Payment', 'create', $trxnsData)['id'];
}
}

/**
* @param int $targetCid
* @param $activityType
Expand Down
22 changes: 9 additions & 13 deletions CRM/Contribute/Form/AdditionalPayment.php
Original file line number Diff line number Diff line change
Expand Up @@ -356,19 +356,15 @@ public function submit($submittedValues) {
$this->processCreditCard();
}

$defaults = [];
$contribution = civicrm_api3('Contribution', 'getsingle', [
'return' => ["contribution_status_id"],
'id' => $this->_contributionId,
]);
$contributionStatusId = CRM_Utils_Array::value('contribution_status_id', $contribution);
$paymentID = CRM_Contribute_BAO_Contribution::recordAdditionalPayment($this->_contributionId, $this->_params, $this->_paymentType, $participantId);
// Fetch the contribution & do proportional line item assignment
$params = ['id' => $this->_contributionId];
$contribution = CRM_Contribute_BAO_Contribution::retrieve($params, $defaults, $params);
// @todo - this line needs to be moved to the Payment.create api - it's not form layer appropriate.
// testing required.
CRM_Contribute_BAO_Contribution::addPayments([$contribution], $contributionStatusId);
$trxnsData = $this->_params;
if ($this->_paymentType == 'refund') {
$trxnsData['total_amount'] = -$trxnsData['total_amount'];
}
$trxnsData['participant_id'] = $participantId;
// From the
$trxnsData['is_send_contribution_notification'] = FALSE;
$paymentID = civicrm_api3('Payment', 'create', $trxnsData)['id'];

if ($this->_contributionId && CRM_Core_Permission::access('CiviMember')) {
$membershipPaymentCount = civicrm_api3('MembershipPayment', 'getCount', ['contribution_id' => $this->_contributionId]);
if ($membershipPaymentCount) {
Expand Down
6 changes: 2 additions & 4 deletions CRM/Financial/BAO/Payment.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ public static function create($params) {
}
elseif ($params['total_amount'] < 0) {
$trxn = self::recordRefundPayment($params['contribution_id'], $params, FALSE);
CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], CRM_Utils_Array::value('participant_id', $params), $params['total_amount'], $trxn->currency, $trxn->trxn_date);
}

if ($isPaymentCompletesContribution) {
Expand All @@ -118,7 +117,7 @@ public static function create($params) {
);
}
else {
civicrm_api3('Contribution', 'completetransaction', ['id' => $contribution['id']]);
civicrm_api3('Contribution', 'completetransaction', ['id' => $contribution['id'], 'is_email_receipt' => $params['is_send_contribution_notification']]);
// Get the trxn
$trxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contribution['id'], 'DESC');
$ftParams = ['id' => $trxnId['financialTrxnId']];
Expand All @@ -133,6 +132,7 @@ public static function create($params) {
]
);
}
CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], CRM_Utils_Array::value('participant_id', $params), $params['total_amount'], $trxn->currency, $trxn->trxn_date);

return $trxn;
}
Expand Down Expand Up @@ -316,8 +316,6 @@ public static function filterUntestedTemplateVariables($params) {
* @param $updateStatus
* - deprecate this param
*
* @todo - make this protected once recordAdditionalPayment no longer calls it.
*
* @return CRM_Financial_DAO_FinancialTrxn
*/
protected static function recordRefundPayment($contributionId, $trxnData, $updateStatus) {
Expand Down
16 changes: 11 additions & 5 deletions api/v3/Payment.php
Original file line number Diff line number Diff line change
Expand Up @@ -156,28 +156,34 @@ function _civicrm_api3_payment_create_spec(&$params) {
$params = [
'contribution_id' => [
'api.required' => 1,
'title' => 'Contribution ID',
'title' => ts('Contribution ID'),
'type' => CRM_Utils_Type::T_INT,
],
'total_amount' => [
'api.required' => 1,
'title' => 'Total Payment Amount',
'title' => ts('Total Payment Amount'),
'type' => CRM_Utils_Type::T_FLOAT,
],
'payment_processor_id' => [
'title' => 'Payment Processor ID',
'title' => ts('Payment Processor ID'),
'type' => CRM_Utils_Type::T_INT,
'description' => ts('Payment processor ID - required for payment processor payments'),
],
'id' => [
'title' => 'Payment ID',
'title' => ts('Payment ID'),
'type' => CRM_Utils_Type::T_INT,
'api.aliases' => ['payment_id'],
],
'trxn_date' => [
'title' => 'Cancel Date',
'title' => ts('Cancel Date'),
'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME,
],
'is_send_contribution_notification' => [
'title' => ts('Send out notifications based on contribution status change?'),
'description' => ts('Most commonly this equates to emails relating to the contribution, event, etcwhen a payment completes a contribution'),
'type' => CRM_Utils_Type::T_BOOLEAN,
'api.default' => TRUE,
],
];
}

Expand Down

0 comments on commit 26395ed

Please sign in to comment.