$this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this);
$this->_contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $this);
$this->_processors = array();
- CRM_Core_Resources::singleton()->addSetting(array('ids' => array('contact' => $this->_contactID)));
+ $this->assign('contactID', $this->_contactID);
// check for edit permission
if (!CRM_Core_Permission::checkActionPermission('CiviMember', $this->_action)) {
$mem['status_id'],
'label', 'id'
);
- if ($this->_mode) {
- $mem['renewUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership',
- "reset=1&action=renew&cid={$this->_contactID}&id={$mem['id']}&context=membership&selectedChild=member&mode=live"
- );
- }
- else {
- $mem['renewUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership',
- "reset=1&action=renew&cid={$this->_contactID}&id={$mem['id']}&context=membership&selectedChild=member"
- );
- }
+ $mem['renewUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership',
+ "reset=1&action=renew&cid={$this->_contactID}&id={$mem['id']}&context=membership&selectedChild=member"
+ . ($this->_mode ? '&mode=live' : '')
+ );
$mem['membershipTab'] = CRM_Utils_System::url('civicrm/contact/view',
"reset=1&force=1&cid={$this->_contactID}&selectedChild=member"
);
$mems_by_org[$mem['member_of_contact_id']] = $mem;
}
- $resources = CRM_Core_Resources::singleton();
- $resources->addSetting(array('existingMems' => array('memberorgs' => $mems_by_org)));
- $resources->addScriptFile('civicrm', 'templates/CRM/Member/Form/Membership.js');
+ $this->assign('existingContactMemberships', $mems_by_org);
}
}
else {
+ // In standalone mode we don't have a contact id yet so lookup will be done client-side with this script:
$resources = CRM_Core_Resources::singleton();
$resources->addScriptFile('civicrm', 'templates/CRM/Member/Form/MembershipStandalone.js');
- $statuses = array();
- $membershipStatus = new CRM_Member_DAO_MembershipStatus();
- $membershipStatus->is_current_member = 1;
- $membershipStatus->find();
- $membershipStatus->selectAdd();
- $membershipStatus->selectAdd('id');
- while ($membershipStatus->fetch()) {
- $statuses[$membershipStatus->id] = $membershipStatus->label;
- }
- $membershipStatus->free();
$passthru = array(
'typeorgs' => CRM_Member_BAO_MembershipType::getMembershipTypeOrganization(),
- 'memtypes' => CRM_Member_BAO_MembershipType::getMembershipTypes(FALSE),
- 'statuses' => $statuses,
+ 'memtypes' => CRM_Core_PseudoConstant::get('CRM_Member_BAO_Membership', 'membership_type_id'),
+ 'statuses' => CRM_Core_PseudoConstant::get('CRM_Member_BAO_Membership', 'status_id'),
);
$resources->addSetting(array('existingMems' => $passthru));
}
$this->assign('onlinePendingContributionId', $this->_onlinePendingContributionId);
$this->_fromEmails = CRM_Core_BAO_Email::getFromEmail();
- // Set title
- if ($this->_contactID) {
- $displayName = CRM_Contact_BAO_Contact::displayName($this->_contactID);
+ $this->setPageTitle(ts('Membership'));
- // Check if this is default domain contact CRM-10482
- if (CRM_Contact_BAO_Contact::checkDomainContact($this->_contactID)) {
- $displayName .= ' (' . ts('default organization') . ')';
- }
- // omitting contactImage from title for now since the summary overlay css doesn't work outside of our crm-container
- CRM_Utils_System::setTitle(ts('Membership for') . ' ' . $displayName);
- }
parent::preProcess();
}
$billingDefaults = $this->getProfileDefaults('Billing', $this->_contactID);
$defaults = array_merge($defaults, $billingDefaults);
- // now fix all state country selectors, set correct state based on country
- CRM_Core_BAO_Address::fixAllStateSelects($this, $defaults);
-
// // hack to simplify credit card entry for testing
// $defaults['credit_card_type'] = 'Visa';
// $defaults['credit_card_number'] = '4807731747657838';
}
if ($this->_context == 'standalone') {
- $this->addEntityRef('contact_id', ts('Contact'), array('create' => TRUE), TRUE);
+ $this->addEntityRef('contact_id', ts('Contact'), array('create' => TRUE, 'api' => array('extra' => array('email'))), TRUE);
}
$selOrgMemType[0][0] = $selMemTypeOrg[0] = ts('- select -');
return;
}
+ $isTest = ($this->_mode == 'test') ? 1 : 0;
+
+ $lineItems = NULL;
+ if (!empty($this->_lineItem)) {
+ $lineItems = $this->_lineItem;
+ }
+
$config = CRM_Core_Config::singleton();
// get the submitted form values.
$this->_params = $formValues = $this->controller->exportValues($this->_name);
$$dateVariable = CRM_Utils_Date::processDate($formValues[$dateField]);
}
- $memTypeNumTerms = CRM_Utils_Array::value('num_terms', $formValues);
+ $memTypeNumTerms = empty($termsByType) ? CRM_Utils_Array::value('num_terms', $formValues) : NULL;
$calcDates = array();
foreach ($this->_memTypeSelected as $memType) {
);
}
- // add all the additioanl payment params we need
+ // add all the additional payment params we need
$this->_params["state_province-{$this->_bltID}"] = $this->_params["billing_state_province-{$this->_bltID}"] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($this->_params["billing_state_province_id-{$this->_bltID}"]);
$this->_params["country-{$this->_bltID}"] = $this->_params["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($this->_params["billing_country_id-{$this->_bltID}"]);
$result,
$this->_contributorContactID,
$contributionType,
- FALSE,
TRUE,
- FALSE
+ FALSE,
+ $isTest,
+ $lineItems
);
//create new soft-credit record, CRM-13981
- $softParams['contribution_id'] = $contribution->id;
- $softParams['currency'] = $contribution->currency;
- $softParams['amount'] = $contribution->total_amount;
- CRM_Contribute_BAO_ContributionSoft::add($softParams);
+ if ($softParams) {
+ $softParams['contribution_id'] = $contribution->id;
+ $softParams['currency'] = $contribution->currency;
+ $softParams['amount'] = $contribution->total_amount;
+ CRM_Contribute_BAO_ContributionSoft::add($softParams);
+ }
- $paymentParams['contactID'] = $contactID;
+ $paymentParams['contactID'] = $this->_contactID;
$paymentParams['contributionID'] = $contribution->id;
$paymentParams['contributionTypeID'] = $contribution->financial_type_id;
$paymentParams['contributionPageID'] = $contribution->contribution_page_id;
if ($params['total_amount'] > 0.0) {
$payment = CRM_Core_Payment::singleton($this->_mode, $this->_paymentProcessor, $this);
- $result = & $payment->doDirectPayment($paymentParams);
+ $result = $payment->doDirectPayment($paymentParams);
}
if (is_a($result, 'CRM_Core_Error')) {
}
$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']);
$this->_membershipIDs[] = $membership->id;
$createdMemberships[$memType] = $membership;
$count++;
$lineItems[$itemId]['line_total'] = $params['total_amount'];
$lineItems[$itemId]['id'] = $itemId;
$lineItem[$priceSetId] = $lineItems;
- CRM_Price_BAO_LineItem::processPriceSet($params['contribution_id'], $lineItem);
+ $contributionBAO = new CRM_Contribute_BAO_Contribution();
+ $contributionBAO->id = $params['contribution_id'];
+ $contributionBAO->find();
+ CRM_Price_BAO_LineItem::processPriceSet($params['contribution_id'], $lineItem, $contributionBAO, 'civicrm_membership');
//create new soft-credit record, CRM-13981
- $softParams['contribution_id'] = $params['contribution_id'];
- $dao = new CRM_Contribute_DAO_Contribution();
- $dao->id = $params['contribution_id'];
- $dao->find();
- while ($dao->fetch()) {
- $softParams['currency'] = $dao->currency;
- $softParams['amount'] = $dao->total_amount;
+ if ($softParams) {
+ $softParams['contribution_id'] = $params['contribution_id'];
+ while ($contributionBAO->fetch()) {
+ $softParams['currency'] = $contributionBAO->currency;
+ $softParams['amount'] = $contributionBAO->total_amount;
+ }
+ CRM_Contribute_BAO_ContributionSoft::add($softParams);
}
- CRM_Contribute_BAO_ContributionSoft::add($softParams);
}
//carry updated membership object.
}
$membership = CRM_Member_BAO_Membership::create($membershipParams, $ids);
+ $params['contribution'] = CRM_Utils_Array::value('contribution', $membershipParams);
+ unset($params['lineItems']);
$this->_membershipIDs[] = $membership->id;
$createdMemberships[$memType] = $membership;
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'], '%d%f %b, %Y') : '-';
-
- $priceFieldOp['end_date'] = $membershipTypeValues[$priceFieldOp['membership_type_id']]['end_date'] ? CRM_Utils_Date::customFormat($membershipTypeValues[$priceFieldOp['membership_type_id']]['end_date'], '%d%f %b, %Y') : '-';
+ $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') : '-';
+ $priceFieldOp['end_date'] = $membershipTypeValues[$priceFieldOp['membership_type_id']]['end_date'] ? CRM_Utils_Date::customFormat($membershipTypeValues[$priceFieldOp['membership_type_id']]['end_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'];
}
}
}
}
}
- $this->assign('totalTaxAmount', $totalTaxAmount);
+ if ($taxAmount) {
+ $this->assign('totalTaxAmount', $totalTaxAmount);
+ $this->assign('taxTerm', CRM_Utils_Array::value('tax_term', $invoiceSettings));
+ }
$this->assign('dataArray', $dataArray);
}
}
$formValues['contact_id'] = $this->_contactID;
+ $formValues['contribution_id'] = CRM_Member_BAO_Membership::getMembershipContributionId($membership->id);
// send email receipt
$mailSend = self::emailReceipt($this, $formValues, $membership);
}
$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)
)
);