Skip to content

Commit

Permalink
Always use cancelSubscription form instead of enable/disable entity f…
Browse files Browse the repository at this point in the history
…orm if cancel is not supported by processor
  • Loading branch information
mattwire committed Sep 24, 2021
1 parent f3119af commit 023a6cb
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 27 deletions.
15 changes: 6 additions & 9 deletions CRM/Contribute/Page/Tab.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,16 +72,13 @@ public static function recurLinks(int $recurID, $context = 'contribution') {
];
}

$links[CRM_Core_Action::DISABLE] = [
'name' => ts('Cancel'),
'title' => ts('Cancel'),
'ref' => 'crm-enable-disable',
];

if ($paymentProcessorObj->supports('cancelRecurring')) {
unset($links[CRM_Core_Action::DISABLE]['extra'], $links[CRM_Core_Action::DISABLE]['ref']);
$links[CRM_Core_Action::DISABLE]['url'] = "civicrm/contribute/unsubscribe";
$links[CRM_Core_Action::DISABLE]['qs'] = "reset=1&crid=%%crid%%&cid=%%cid%%&context={$context}";
$links[CRM_Core_Action::DISABLE] = [
'name' => ts('Cancel'),
'title' => ts('Cancel'),
'url' => 'civicrm/contribute/unsubscribe',
'qs' => "reset=1&crid=%%crid%%&cid=%%cid%%&context={$context}",
];
}

if ($paymentProcessorObj->supports('UpdateSubscriptionBillingInfo')) {
Expand Down
36 changes: 18 additions & 18 deletions CRM/Financial/BAO/PaymentProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,24 @@ public static function getAllPaymentProcessors($mode = 'all', $reset = FALSE, $i
}

$processors = civicrm_api3('payment_processor', 'get', $retrievalParameters);
// Add the pay-later pseudo-processor.
$processors['values'][0] = [
'id' => 0,
'payment_processor_type_id' => 0,
// This shouldn't be required but there are still some processors hacked into core with nasty 'if's.
'api.payment_processor_type.getsingle' => ['name' => 'Manual'],
'class_name' => 'Payment_Manual',
'name' => 'pay_later',
'billing_mode' => '',
'is_default' => 0,
'payment_instrument_id' => key(CRM_Core_OptionGroup::values('payment_instrument', FALSE, FALSE, FALSE, 'AND is_default = 1')),
// Making this optionally recur would give lots of options -but it should
// be a row in the payment processor table before we do that.
'is_recur' => FALSE,
'is_test' => FALSE,
'domain_id' => CRM_Core_Config::domainID(),
'is_active' => 1,
];
foreach ($processors['values'] as $processor) {
$fieldsToProvide = [
'id',
Expand Down Expand Up @@ -338,24 +356,6 @@ public static function getAllPaymentProcessors($mode = 'all', $reset = FALSE, $i
$processors['values'][$processor['id']]['object'] = Civi\Payment\System::singleton()->getByProcessor($processors['values'][$processor['id']]);
}

// Add the pay-later pseudo-processor.
$processors['values'][0] = [
'object' => new CRM_Core_Payment_Manual(),
'id' => 0,
'payment_processor_type_id' => 0,
// This shouldn't be required but there are still some processors hacked into core with nasty 'if's.
'payment_processor_type' => 'Manual',
'class_name' => 'Payment_Manual',
'name' => 'pay_later',
'billing_mode' => '',
'is_default' => 0,
'payment_instrument_id' => key(CRM_Core_OptionGroup::values('payment_instrument', FALSE, FALSE, FALSE, 'AND is_default = 1')),
// Making this optionally recur would give lots of options -but it should
// be a row in the payment processor table before we do that.
'is_recur' => FALSE,
'is_test' => FALSE,
];

CRM_Utils_Cache::singleton()->set($cacheKey, $processors['values']);

return $processors['values'];
Expand Down

0 comments on commit 023a6cb

Please sign in to comment.