merged issue/27

This commit is contained in:
B. Endres 2020-06-04 10:40:53 +02:00
commit acedf890f5
6 changed files with 98 additions and 30 deletions

View file

@ -403,7 +403,8 @@ function civicrm_api3_twingle_donation_Submit($params) {
if (!$contact_id = CRM_Twingle_Submission::getContact(
'Individual',
$contact_data,
$profile
$profile,
$params
)) {
throw new CiviCRM_API3_Exception(
E::ts('Individual contact could not be found or created.'),
@ -439,7 +440,8 @@ function civicrm_api3_twingle_donation_Submit($params) {
if (!$organisation_id = CRM_Twingle_Submission::getContact(
'Organization',
$organisation_data,
$profile
$profile,
$params
)) {
throw new CiviCRM_API3_Exception(
E::ts('Organisation contact could not be found or created.'),
@ -466,7 +468,9 @@ function civicrm_api3_twingle_donation_Submit($params) {
CRM_Twingle_Submission::getContact(
'Individual',
array('id' => $contact_id) + $submitted_address,
$profile);
$profile,
$params
);
}
// Create employer relationship between organization and individual.
@ -537,12 +541,8 @@ function civicrm_api3_twingle_donation_Submit($params) {
$contribution_data['note'] = $params['purpose'];
}
if (!empty($params['campaign_id'])) {
$contribution_data['campaign_id'] = $params['campaign_id'];
}
elseif (!empty($campaign = $profile->getAttribute('campaign'))) {
$contribution_data['campaign_id'] = $campaign;
}
// set campaign, subject to configuration
CRM_Twingle_Submission::setCampaign($contribution_data, 'contribution', $params, $profile);
if (!empty($contribution_source = $profile->getAttribute('contribution_source'))) {
$contribution_data['source'] = $contribution_source;
@ -590,6 +590,9 @@ function civicrm_api3_twingle_donation_Submit($params) {
if (!empty($custom_fields['ContributionRecur'])) {
$mandate_data += $custom_fields['ContributionRecur'];
}
if (!empty($mandate_source = $profile->getAttribute('contribution_source'))) {
$mandate_data['source'] = $mandate_source;
}
// Add cycle day for recurring contributions.
if ($params['donation_rhythm'] != 'one_time') {
@ -610,6 +613,9 @@ function civicrm_api3_twingle_donation_Submit($params) {
unset($mandate_data['reference']);
}
// set campaign, subject to configuration
CRM_Twingle_Submission::setCampaign($mandate_data, 'mandate', $params, $profile);
// Create the mandate.
$mandate = civicrm_api3('SepaMandate', 'createfull', $mandate_data);
@ -647,7 +653,10 @@ function civicrm_api3_twingle_donation_Submit($params) {
$contribution_data += $custom_fields['ContributionRecur'];
}
$contribution_recur = civicrm_api3('contributionRecur', 'create', $contribution_recur_data);
// set campaign, subject to configuration
CRM_Twingle_Submission::setCampaign($contribution_data, 'recurring', $params, $profile);
$contribution_recur = civicrm_api3('ContributionRecur', 'create', $contribution_recur_data);
if ($contribution_recur['is_error']) {
throw new CiviCRM_API3_Exception(
E::ts('Could not create recurring contribution.'),
@ -703,12 +712,13 @@ function civicrm_api3_twingle_donation_Submit($params) {
'contact_id' => $contact_id,
'membership_type_id' => $membership_type_id,
];
// set campaign
if (!empty($params['campaign_id'])) {
$membership_data['campaign_id'] = $params['campaign_id'];
} elseif (!empty($campaign = $profile->getAttribute('campaign'))) {
$membership_data['campaign_id'] = $campaign;
// set campaign, subject to configuration
CRM_Twingle_Submission::setCampaign($membership_data, 'membership', $params, $profile);
// set source
if (!empty($membership_source = $profile->getAttribute('contribution_source'))) {
$membership_data['source'] = $membership_source;
}
$membership = civicrm_api3('Membership', 'create', $membership_data);
$result_values['membership'] = $membership;
@ -745,10 +755,10 @@ function civicrm_api3_twingle_donation_Submit($params) {
} catch (CiviCRM_API3_Exception $ex) {
// TODO: more error handling?
Civi::log()->debug("Twingle membership postprocessing call {$pp_entity}.{$pp_action} has failed: " . $ex->getMessage());
throw new Exception(
E::ts("Twingle membership postprocessing call has failed, see log for more information")
);
Civi::log()->warning("Twingle membership postprocessing call {$pp_entity}.{$pp_action} has failed: " . $ex->getMessage());
throw new Exception(
E::ts("Twingle membership postprocessing call has failed, see log for more information")
);
}
}
}