$this->addElement('hidden', "email-{$this->_bltID}", 1);
$this->add('text', 'total_amount', ts('Total Amount'), ['readonly' => TRUE], FALSE);
}
- $pps = $this->getProcessors();
+
$this->addPaymentProcessorFieldsToForm();
- if (!empty($pps) && count($pps) === 1) {
- $ppKeys = array_keys($pps);
- $currentPP = array_pop($ppKeys);
- if ($currentPP === 0) {
- $this->assign('is_pay_later', $this->_values['is_pay_later']);
- $this->assign('pay_later_text', $this->getPayLaterLabel());
- }
- }
+ $this->assign('is_pay_later', $this->getCurrentPaymentProcessor() === 0 && $this->_values['is_pay_later']);
+ $this->assign('pay_later_text', $this->getCurrentPaymentProcessor() === 0 ? $this->getPayLaterLabel() : NULL);
if ($contactID === 0) {
$this->addCidZeroOptions();
+
}
//build pledge block.
CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetId], $priceSetId);
}
- if ($params['tax_amount']) {
- $this->set('tax_amount', $params['tax_amount']);
- }
-
if ($proceFieldAmount) {
$lineItem[$params['priceSetId']][$fieldOption]['unit_price'] = $proceFieldAmount;
$lineItem[$params['priceSetId']][$fieldOption]['line_total'] = $proceFieldAmount;
// Would be nice to someday understand the point of this set.
$this->set('is_pay_later', $params['is_pay_later']);
// assign pay later stuff
- $this->_params['is_pay_later'] = CRM_Utils_Array::value('is_pay_later', $params, FALSE);
+ $this->_params['is_pay_later'] = $params['is_pay_later'];
$this->assign('is_pay_later', $params['is_pay_later']);
- if ($params['is_pay_later']) {
- $this->assign('pay_later_text', $this->_values['pay_later_text']);
- $this->assign('pay_later_receipt', CRM_Utils_Array::value('pay_later_receipt', $this->_values));
- }
+ $this->assign('pay_later_text', $params['is_pay_later'] ? $this->_values['pay_later_text'] : NULL);
+ $this->assign('pay_later_receipt', ($params['is_pay_later'] && isset($this->_values['pay_later_receipt'])) ? $this->_values['pay_later_receipt'] : NULL);
if ($this->_membershipBlock && $this->_membershipBlock['is_separate_payment'] && !empty($params['separate_amount'])) {
$this->set('amount', $params['separate_amount']);
return $this->_separateMembershipPayment && (int) CRM_Member_BAO_MembershipType::getMembershipType($params['selectMembership'])['minimum_fee'];
}
+ /**
+ * Get the loaded payment processor - the default for the form.
+ *
+ * If the form is using 'pay later' then the value for the manual
+ * pay later processor is 0.
+ *
+ * @return int|null
+ */
+ protected function getCurrentPaymentProcessor(): ?int {
+ $pps = $this->getProcessors();
+ if (!empty($pps) && count($pps) === 1) {
+ $ppKeys = array_keys($pps);
+ return array_pop($ppKeys);
+ }
+ // It seems like this might be un=reachable as there should always be a processor...
+ return NULL;
+ }
+
}