//CRM-5001
if (!empty($this->_values['is_for_organization'])) {
$msg = ts('Mixed profile not allowed for on behalf of registration/sign up.');
- if ($preID = CRM_Utils_Array::value('custom_pre_id', $this->_values)) {
- $preProfile = CRM_Core_BAO_UFGroup::profileGroups($preID);
+ $ufJoinParams = array(
+ 'module' => 'onBehalf',
+ 'entity_table' => 'civicrm_contribution_page',
+ 'entity_id' => $this->_id,
+ );
+ $onBehalfProfileIDs = CRM_Core_BAO_UFJoin::getUFGroupIds($ufJoinParams);
+ // getUFGroupIDs returns an array with the first item being the ID we need
+ $onBehalfProfileID = $onBehalfProfileIDs[0];
+ if ($onBehalfProfileID) {
+ $onBehalfProfile = CRM_Core_BAO_UFGroup::profileGroups($onBehalfProfileID);
foreach (array(
'Individual', 'Organization', 'Household') as $contactType) {
- if (in_array($contactType, $preProfile) &&
- (in_array('Membership', $preProfile) ||
- in_array('Contribution', $preProfile)
+ if (in_array($contactType, $onBehalfProfile) &&
+ (in_array('Membership', $onBehalfProfile) ||
+ in_array('Contribution', $onBehalfProfile)
)
) {
CRM_Core_Error::fatal($msg);
// $this->_defaults['amount'] = 168;
// $this->_defaults['credit_card_number'] = '4111111111111111';
// $this->_defaults['cvv2'] = '000';
- // $this->_defaults['credit_card_exp_date'] = array('Y' => '2014', 'M' => '05');
+ // $this->_defaults['credit_card_exp_date'] = array('Y' => date('Y')+1, 'M' => '05');
// // hack to simplify direct debit entry for testing
// $this->_defaults['account_holder'] = 'Max Müller';
$this->_defaults["billing_state_province_id-{$this->_bltID}"] = $config->defaultContactStateProvince;
}
- // now fix all state country selectors
- CRM_Core_BAO_Address::fixAllStateSelects($this, $this->_defaults);
-
if ($this->_priceSetId) {
if (($this->_useForMember && !empty($this->_currentMemberships)) || $this->_defaultMemTypeId) {
$selectedCurrentMemTypes = array();
$otherAmount = $priceField->id;
}
elseif (!empty($fields["price_{$priceField->id}"])) {
- $otherAmountVal = $fields["price_{$priceField->id}"];
+ $otherAmountVal = CRM_Utils_Rule::cleanMoney($fields["price_{$priceField->id}"]);
$min = CRM_Utils_Array::value('min_amount', $self->_values);
$max = CRM_Utils_Array::value('max_amount', $self->_values);
if ($min && $otherAmountVal < $min) {
}
}
+ $currentMemberships = NULL;
+ if ($membershipIsActive) {
+ $is_test = $self->_mode != 'live' ? 1 : 0;
+ $memContactID = $self->_membershipContactID;
+
+ // For anonymous user check using dedupe rule
+ // if user has Cancelled Membership
+ if (!$memContactID) {
+ $dedupeParams = CRM_Dedupe_Finder::formatParams($fields, 'Individual');
+ $dedupeParams['check_permission'] = FALSE;
+ $ids = CRM_Dedupe_Finder::dupesByParams($dedupeParams, 'Individual');
+ // if we find more than one contact, use the first one
+ $memContactID = CRM_Utils_Array::value(0, $ids);
+ }
+ $currentMemberships = CRM_Member_BAO_Membership::getContactsCancelledMembership($memContactID,
+ $is_test
+ );
+
+ $errorText = 'Your %1 membership was previously cancelled and can not be renewed online. Please contact the site administrator for assistance.';
+ foreach ($self->_values['fee'] as $fieldKey => $fieldValue) {
+ if ($fieldValue['html_type'] != 'Text' && CRM_Utils_Array::value('price_' . $fieldKey, $fields)) {
+ if (!is_array($fields['price_' . $fieldKey])) {
+ if (array_key_exists('membership_type_id', $fieldValue['options'][$fields['price_' . $fieldKey]])
+ && in_array($fieldValue['options'][$fields['price_' . $fieldKey]]['membership_type_id'], $currentMemberships)) {
+ $errors['price_' . $fieldKey] = ts($errorText, array(1 => CRM_Member_PseudoConstant::membershipType($fieldValue['options'][$fields['price_' . $fieldKey]]['membership_type_id'])));
+ }
+ }
+ else {
+ foreach ($fields['price_' . $fieldKey] as $key => $ignore) {
+ if (array_key_exists('membership_type_id', $fieldValue['options'][$key])
+ && in_array($fieldValue['options'][$key]['membership_type_id'], $currentMemberships)) {
+ $errors['price_' . $fieldKey] = ts($errorText, array(1 => CRM_Member_PseudoConstant::membershipType($fieldValue['options'][$key]['membership_type_id'])));
+ }
+ }
+ }
+ }
+ }
+ }
+
// CRM-12233
if ($membershipIsActive && !$self->_membershipBlock['is_required']
&& $self->_values['amount_block_is_active']) {
if (!empty($value['options'])) {
foreach ($value['options'] as $val) {
- if (!empty($val['membership_type_id'])) {
+ if (!empty($val['membership_type_id']) && (
+ ($fields['price_' . $priceId] == $val['id']) ||
+ (isset($fields['price_' . $priceId]) && !empty($fields['price_' . $priceId][$val['id']]))
+ )
+ ) {
$priceFieldMemTypes[] = $val['membership_type_id'];
}
}
*/
public function postProcess() {
$config = CRM_Core_Config::singleton();
-
// we first reset the confirm page so it accepts new values
$this->controller->resetPage('Confirm');
// get the submitted form values.
$params = $this->controller->exportValues($this->_name);
+ //carry campaign from profile.
+ if (array_key_exists('contribution_campaign_id', $params)) {
+ $params['campaign_id'] = $params['contribution_campaign_id'];
+ }
+
+ if (!empty($params['onbehalfof_id'])) {
+ $params['organization_id'] = $params['onbehalfof_id'];
+ }
+
+ $params['currencyID'] = $config->defaultCurrency;
+
if (!empty($params['priceSetId'])) {
$is_quick_config = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config');
if ($is_quick_config) {
$this->assign('pay_later_receipt', $this->_values['pay_later_receipt']);
}
- //carry campaign from profile.
- if (array_key_exists('contribution_campaign_id', $params)) {
- $params['campaign_id'] = $params['contribution_campaign_id'];
- }
-
- if (!empty($params['onbehalfof_id'])) {
- $params['organization_id'] = $params['onbehalfof_id'];
- }
-
- $params['currencyID'] = $config->defaultCurrency;
// from here on down, $params['amount'] holds a monetary value (or null) rather than an option ID
$params['amount'] = self::computeAmount($params, $this);
$params['separate_amount'] = $params['amount'];
$params['amount'] = $memFee ? $memFee : 0;
}
}
-
- //If the membership & contribution is used in contribution page & not seperate payment
+ //If the membership & contribution is used in contribution page & not separate payment
$fieldId = $memPresent = $membershipLabel = $fieldOption = $is_quick_config = NULL;
$proceFieldAmount = 0;
if (property_exists($this, '_separateMembershipPayment') && $this->_separateMembershipPayment == 0) {
}
}
}
-
+
if (!isset($params['amount_other'])) {
$this->set('amount_level', CRM_Utils_Array::value('amount_level', $params));
}
$lineItem = array();
$is_quick_config = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config' );
if ( $is_quick_config ) {
- foreach ( $this->_values['fee'] as $key => & $val ) {
- if ( $val['name'] == 'other_amount' && $val['html_type'] == 'Text' && array_key_exists( 'price_'.$key, $params ) && $params['price_'.$key] != 0 ) {
- foreach ( $val['options'] as $optionKey => & $options ) {
- $options['amount'] = CRM_Utils_Array::value( 'price_'.$key, $params );
- break;
+ foreach ( $this->_values['fee'] as $key => & $val ) {
+ if ( $val['name'] == 'other_amount' && $val['html_type'] == 'Text' && array_key_exists( 'price_'.$key, $params ) ) {
+ $params['price_'.$key] = CRM_Utils_Rule::cleanMoney($params['price_'.$key]); //Clean out any currency symbols
+ if($params['price_'.$key] != 0){
+ foreach ( $val['options'] as $optionKey => & $options ) {
+ $options['amount'] = CRM_Utils_Array::value( 'price_'.$key, $params );
+ break;
+ }
}
$params['price_'.$key] = 1;
break;
}
}
}
-
$component = '';
if ($this->_membershipBlock) {
$component = 'membership';
}
+
CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetId], $component);
if ($proceFieldAmount) {
$invoiceID = md5(uniqid(rand(), TRUE));
$this->set('invoiceID', $invoiceID);
- // required only if is_monetary and valid postive amount
+ // required only if is_monetary and valid positive amount
if ($this->_values['is_monetary'] &&
is_array($this->_paymentProcessor) &&
((float ) $params['amount'] > 0.0 || $memFee > 0.0)
// redirect to thank you page
CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contribute/transact', "_qf_ThankYou_display=1&qfKey=$qfKey", TRUE, NULL, FALSE));
}
+
}
/**