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( $contribution = civicrm_api3('ContributionRecur', 'getsingle', array(
'trxn_id' => $params['trx_id'], 'trxn_id' => $params['trx_id'],
)); ));
// TODO: End SEPA mandates? // End SEPA mandate (which ends the associated recurring contribution) or
$contribution = civicrm_api3('ContributionRecur', 'create', array( // recurring contributions.
'id' => $contribution['id'], if (
'end_date' => $params['ended_at'], CRM_Twingle_Submission::civiSepaEnabled()
'contribution_status_id' => 'Completed', // TODO: Correct? && 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); $result = civicrm_api3_create_success($contribution);
} }

View file

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