End SEPA mandates when ending a debit_manual recurring contribution.

This commit is contained in:
Jens Schuppe 2018-10-10 16:01:23 +02:00
parent 8ff71e277e
commit 2f4358c1b4
2 changed files with 25 additions and 7 deletions

View file

@ -70,12 +70,30 @@ function civicrm_api3_twingle_donation_EndRecurring($params) {
$contribution = civicrm_api3('ContributionRecur', 'getsingle', array(
'trxn_id' => $params['trx_id'],
));
// TODO: End SEPA mandates?
$contribution = civicrm_api3('ContributionRecur', 'create', array(
'id' => $contribution['id'],
'end_date' => $params['ended_at'],
'contribution_status_id' => 'Completed', // TODO: Correct?
));
// End SEPA mandate (which ends the associated recurring contribution) or
// recurring contributions.
if (
CRM_Twingle_Submission::civiSepaEnabled()
&& CRM_Sepa_Logic_Settings::isSDD($contribution)
) {
$mandate_id = CRM_Sepa_Logic_Settings::getMandateFor($contribution['id']);
if (!CRM_Sepa_BAO_SEPAMandate::terminateMandate($mandate_id, $params['ended_at'])) {
throw new CiviCRM_API3_Exception(
E::ts('Could not terminate SEPA mandate'),
'api_error'
);
}
$contribution = civicrm_api3('ContributionRecur', 'getsingle', array(
'id' => $contribution['id'],
));
}
else {
$contribution = civicrm_api3('ContributionRecur', 'create', array(
'id' => $contribution['id'],
'end_date' => $params['ended_at'],
'contribution_status_id' => 'Completed',
));
}
$result = civicrm_api3_create_success($contribution);
}

View file

@ -492,7 +492,7 @@ function civicrm_api3_twingle_donation_Submit($params) {
$contribution_recur_data =
$contribution_data
+ array(
'contribution_status_id' => 'Pending', // TODO: Or "In Progress"?
'contribution_status_id' => 'Pending',
'start_date' => $params['confirmed_at'],
)
+ CRM_Twingle_Submission::getFrequencyMapping($params['donation_rhythm']);