*/
protected $_memberEmail = NULL;
- /*
+ /*l43
* Contact ID of the member
*/
- protected $_contactID = NULL;
+ public $_contactID = NULL;
/*
* Display name of the person paying for the membership (used for receipts)
return CRM_Custom_Form_CustomData::preProcess($this);
}
+ parent::preProcess();
// get price set id.
$this->_priceSetId = CRM_Utils_Array::value('priceSetId', $_GET);
$this->set('priceSetId', $this->_priceSetId);
$this->assign('priceSetId', $this->_priceSetId);
- // action
- $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'add');
- $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this);
- $this->_contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $this);
- $this->_processors = array();
- $this->assign('contactID', $this->_contactID);
// check for edit permission
if (!CRM_Core_Permission::checkActionPermission('CiviMember', $this->_action)) {
- CRM_Core_Error::fatal(ts('You do not have permission to access this page'));
+ CRM_Core_Error::fatal(ts('You do not have permission to access this page.'));
}
if ($this->_action & CRM_Core_Action::DELETE) {
}
}
- $this->_context = CRM_Utils_Request::retrieve('context', 'String', $this);
- $this->assign('context', $this->_context);
-
- if ($this->_id) {
- $this->_memType = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership', $this->_id, 'membership_type_id');
- $this->_membershipIDs[] = $this->_id;
- }
-
- $this->_mode = CRM_Utils_Request::retrieve('mode', 'String', $this);
- $this->assign('membershipMode', $this->_mode);
-
- if ($this->_mode) {
- $this->_paymentProcessor = array('billing_mode' => 1);
- $validProcessors = array();
- $processors = CRM_Core_PseudoConstant::paymentProcessor(FALSE, FALSE, 'billing_mode IN ( 1, 3 )');
-
- foreach ($processors as $ppID => $label) {
- $paymentProcessor = CRM_Financial_BAO_PaymentProcessor::getPayment($ppID, $this->_mode);
- if ($paymentProcessor['payment_processor_type'] == 'PayPal' && !$paymentProcessor['user_name']) {
- continue;
- }
- elseif ($paymentProcessor['payment_processor_type'] == 'Dummy' && $this->_mode == 'live') {
- continue;
- }
- else {
- $paymentObject = CRM_Core_Payment::singleton($this->_mode, $paymentProcessor, $this);
- $error = $paymentObject->checkConfig();
- if (empty($error)) {
- $validProcessors[$ppID] = $label;
- }
- $paymentObject = NULL;
- }
- }
- if (empty($validProcessors)) {
- CRM_Core_Error::fatal(ts('Could not find valid payment processor for this page'));
- }
- else {
- $this->_processors = $validProcessors;
- }
- // also check for billing information
- // get the billing location type
- $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id', array(), 'validate');
- // CRM-8108 remove ts around Billing location type
- //$this->_bltID = array_search( ts('Billing'), $locationTypes );
- $this->_bltID = array_search('Billing', $locationTypes);
- if (!$this->_bltID) {
- CRM_Core_Error::fatal(ts('Please set a location type of %1', array(1 => 'Billing')));
- }
- $this->set('bltID', $this->_bltID);
- $this->assign('bltID', $this->_bltID);
-
- $this->_fields = array();
-
- CRM_Core_Payment_Form::setCreditCardFields($this);
-
- // this required to show billing block
- $this->assign_by_ref('paymentProcessor', $paymentProcessor);
- $this->assign('hidePayPalExpress', TRUE);
- }
-
if ($this->_action & CRM_Core_Action::ADD) {
if (!CRM_Member_BAO_Membership::statusAvailabilty($this->_contactID)) {
// all possible statuses are disabled - redirect back to contact form
);
}
$this->assign('onlinePendingContributionId', $this->_onlinePendingContributionId);
- $this->_fromEmails = CRM_Core_BAO_Email::getFromEmail();
$this->setPageTitle(ts('Membership'));
-
-
- parent::preProcess();
}
/**
return CRM_Custom_Form_CustomData::buildQuickForm($this);
}
+ $this->assign('taxRates', json_encode(CRM_Core_PseudoConstant::getTaxRates()));
// build price set form.
$buildPriceSet = FALSE;
if ($this->_priceSetId || !empty($_POST['price_set_id'])) {
$this->add('select', 'from_email_address', ts('Receipt From'), $this->_fromEmails);
$this->add('textarea', 'receipt_text_signup', ts('Receipt Message'));
- if ($this->_mode) {
-
- $this->add('select', 'payment_processor_id',
- ts('Payment Processor'),
- $this->_processors, TRUE,
- array('onChange' => "buildAutoRenew( null, this.value );")
- );
- CRM_Core_Payment_Form::buildCreditCard($this, TRUE);
- }
// Retrieve the name and email of the contact - this will be the TO for receipt email
if ($this->_contactID) {
));
$tmp_statuses = $result['values'];
$status_ids = array();
- foreach($tmp_statuses as $cur_stat) {
+ foreach($tmp_statuses as $cur_stat) {
$status_ids[] = $cur_stat['id'];
}
if (empty($params['status_id']) || in_array( $params['status_id'] , $status_ids) == false) {
if ($priceSetId) {
CRM_Price_BAO_PriceSet::processAmount($this->_priceSet['fields'],
$this->_params, $lineItem[$priceSetId]);
+ if (CRM_Utils_Array::value('tax_amount', $this->_params)) {
+ $params['tax_amount'] = $this->_params['tax_amount'];
+ }
$params['total_amount'] = CRM_Utils_Array::value('amount', $this->_params);
$submittedFinancialType = CRM_Utils_Array::value('financial_type_id', $formValues);
if (!empty($lineItem[$priceSetId])) {
}
if (!$this->_onlinePendingContributionId) {
- $params['contribution_source'] = ts('%1 Membership: Offline signup (by %2)',
- array(1 => $membershipType, 2 => $userName)
- );
+ if (empty($formValues['source'])) {
+ $params['contribution_source'] = ts('%1 Membership: Offline signup (by %2)', array(1 => $membershipType, 2 => $userName));
+ }
+ else {
+ $params['contribution_source'] = $formValues['source'];
+ }
}
if (empty($params['is_override']) &&
$this->_params['ip_address'] = CRM_Utils_System::ipAddress();
$this->_params['amount'] = $params['total_amount'];
$this->_params['currencyID'] = $config->defaultCurrency;
+ $this->_params['description'] = ts('Office Credit Card Membership Signup Contribution');
$this->_params['payment_action'] = 'Sale';
$this->_params['invoiceID'] = md5(uniqid(rand(), TRUE));
$this->_params['financial_type_id'] = $params['financial_type_id'];
}
$membershipParams = array_merge($membershipTypeValues[$memType], $params);
+ //CRM-15366
+ if (!empty($softParams) && empty($paymentParams['is_recur'])) {
+ $membershipParams['soft_credit'] = $softParams;
+ }
$membership = CRM_Member_BAO_Membership::create($membershipParams, $ids);
$params['contribution'] = CRM_Utils_Array::value('contribution', $membershipParams);
unset($params['lineItems']);
$result = CRM_Contribute_BAO_Contribution::transitionComponents($params, TRUE);
if (!empty($result) && !empty($params['contribution_id'])) {
$lineItem = array();
- $lineItems = CRM_Price_BAO_LineItem::getLineItems($params['contribution_id'], 'contribution');
+ $lineItems = CRM_Price_BAO_LineItem::getLineItems($params['contribution_id'], 'contribution', NULL, TRUE, TRUE);
$itemId = key($lineItems);
$priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', $lineItems[$itemId]['price_field_id'], 'price_set_id');
$fieldType = NULL;
$lineItem[$priceSetId] = $lineItems;
$contributionBAO = new CRM_Contribute_BAO_Contribution();
$contributionBAO->id = $params['contribution_id'];
+ $contributionBAO->contact_id = $params['contact_id'];
$contributionBAO->find();
CRM_Price_BAO_LineItem::processPriceSet($params['contribution_id'], $lineItem, $contributionBAO, 'civicrm_membership');
//display end date w/ status message.
$endDate = $membership->end_date;
- $membershipStatues = CRM_Member_PseudoConstant::membershipStatus();
if (!in_array($membership->status_id, array(
- array_search('Cancelled', $membershipStatues),
- array_search('Expired', $membershipStatues),
+ // CRM-15475
+ array_search('Cancelled', CRM_Member_PseudoConstant::membershipStatus(NULL, " name = 'Cancelled' ", 'name', FALSE, TRUE)),
+ array_search('Expired', CRM_Member_PseudoConstant::membershipStatus()),
))
) {
$cancelled = FALSE;
}
if (!empty($lineItem[$priceSetId])) {
+ $invoiceSettings = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME,'contribution_invoice_settings');
+ $invoicing = CRM_Utils_Array::value('invoicing', $invoiceSettings);
+ $taxAmount = FALSE;
+ $totalTaxAmount = 0;
foreach ($lineItem[$priceSetId] as & $priceFieldOp) {
if (!empty($priceFieldOp['membership_type_id'])) {
$priceFieldOp['start_date'] = $membershipTypeValues[$priceFieldOp['membership_type_id']]['start_date'] ? CRM_Utils_Date::customFormat($membershipTypeValues[$priceFieldOp['membership_type_id']]['start_date'], '%B %E%f, %Y') : '-';
else {
$priceFieldOp['start_date'] = $priceFieldOp['end_date'] = 'N/A';
}
+ if ($invoicing && isset($priceFieldOp['tax_amount'])) {
+ $taxAmount = TRUE;
+ $totalTaxAmount += $priceFieldOp['tax_amount'];
+ }
+ }
+ if ($invoicing) {
+ $dataArray = array();
+ foreach ($lineItem[$priceSetId] as $key => $value) {
+ if (isset($value['tax_amount']) && isset($value['tax_rate'])) {
+ if (isset($dataArray[$value['tax_rate']])) {
+ $dataArray[$value['tax_rate']] = $dataArray[$value['tax_rate']] + CRM_Utils_Array::value('tax_amount', $value);
+ } else {
+ $dataArray[$value['tax_rate']] = CRM_Utils_Array::value('tax_amount', $value);
+ }
+ }
+ }
+ if ($taxAmount) {
+ $this->assign('totalTaxAmount', $totalTaxAmount);
+ $this->assign('taxTerm', CRM_Utils_Array::value('tax_term', $invoiceSettings));
+ }
+ $this->assign('dataArray', $dataArray);
}
}
$this->assign('lineItem', !empty($lineItem) && !$isQuickConfig ? $lineItem : FALSE);
$form->_receiptContactId = $formValues['contact_id'];
}
}
+ $template = CRM_Core_Smarty::singleton( );
+ $taxAmt = $template->get_template_vars('dataArray');
+ $eventTaxAmt = $template->get_template_vars('totalTaxAmount');
+ $prefixValue = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME, 'contribution_invoice_settings');
+ $invoicing = CRM_Utils_Array::value('invoicing', $prefixValue);
+ if ((!empty($taxAmt) || isset($eventTaxAmt)) && (isset($invoicing) && isset($prefixValue['is_email_pdf']))) {
+ $isEmailPdf = True;
+ }
+ else {
+ $isEmailPdf = False;
+ }
list($mailSend, $subject, $message, $html) = CRM_Core_BAO_MessageTemplate::sendTemplate(
array(
'from' => $receiptFrom,
'toName' => $form->_contributorDisplayName,
'toEmail' => $form->_contributorEmail,
+ 'PDFFilename' => ts('receipt').'.pdf',
+ 'isEmailPdf' => $isEmailPdf,
+ 'contributionId' => $formValues['contribution_id'],
'isTest' => (bool) ($form->_action & CRM_Core_Action::PREVIEW)
)
);