/** * This function sets the default values for the form. * the default values are retrieved from the database * * @access public * @return None */ function setDefaultValues() { $defaults = array(); if ($this->_id) { $params['id'] = $this->_id; require_once 'CRM/Pledge/BAO/Payment.php'; CRM_Pledge_BAO_Payment::retrieve($params, $defaults); list($defaults['scheduled_date']) = CRM_Utils_Date::setDateDefaults($defaults['scheduled_date']); $statuses = CRM_Contribute_PseudoConstant::contributionStatus(); $this->assign('status', $statuses[$defaults['status_id']]); } return $defaults; }
/** * Function to set variables up before form is built * * @return void * @access public */ public function preProcess() { //check permission for action. if (!CRM_Core_Permission::checkActionPermission('CiviContribute', $this->_action)) { CRM_Core_Error::fatal(ts('You do not have permission to access this page')); } $this->_cdType = CRM_Utils_Array::value('type', $_GET); $this->assign('cdType', false); if ($this->_cdType) { $this->assign('cdType', true); return CRM_Custom_Form_CustomData::preProcess($this); } $this->_formType = CRM_Utils_Array::value('formType', $_GET); // get price set id. $this->_priceSetId = CRM_Utils_Array::value('priceSetId', $_GET); $this->set('priceSetId', $this->_priceSetId); $this->assign('priceSetId', $this->_priceSetId); //get the pledge payment id $this->_ppID = CRM_Utils_Request::retrieve('ppid', 'Positive', $this); //get the contact id $this->_contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $this); //get the action. $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, false, 'add'); $this->assign('action', $this->_action); //get the contribution id if update $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); $this->_context = CRM_Utils_Request::retrieve('context', 'String', $this); $this->assign('context', $this->_context); //set the contribution mode. $this->_mode = CRM_Utils_Request::retrieve('mode', 'String', $this); $this->assign('contributionMode', $this->_mode); $this->_paymentProcessor = array('billing_mode' => 1); $this->assign('showCheckNumber', false); //ensure that processor has a valid config //only valid processors get display to user if ($this->_mode) { $validProcessors = array(); $processors = CRM_Core_PseudoConstant::paymentProcessor(false, false, "billing_mode IN ( 1, 3 )"); foreach ($processors as $ppID => $label) { require_once 'CRM/Core/BAO/PaymentProcessor.php'; require_once 'CRM/Core/Payment.php'; $paymentProcessor =& CRM_Core_BAO_PaymentProcessor::getPayment($ppID, $this->_mode); if ($paymentProcessor['payment_processor_type'] == 'PayPal' && !$paymentProcessor['user_name']) { continue; } else { if ($paymentProcessor['payment_processor_type'] == 'Dummy' && $this->_mode == 'live') { continue; } else { $paymentObject =& CRM_Core_Payment::singleton($this->_mode, 'Contribute', $paymentProcessor, $this); $error = $paymentObject->checkConfig(); if (empty($error)) { $validProcessors[$ppID] = $label; } $paymentObject = null; } } } if (empty($validProcessors)) { CRM_Core_Error::fatal(ts('You will need to configure the %1 settings for your Payment Processor before you can submit credit card transactions.', array(1 => $this->_mode))); } else { $this->_processors = $validProcessors; } } // this required to show billing block $this->assign_by_ref('paymentProcessor', $paymentProcessor); $this->assign('hidePayPalExpress', true); if ($this->_contactID) { require_once 'CRM/Contact/BAO/Contact/Location.php'; list($this->userDisplayName, $this->userEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID); $this->assign('displayName', $this->userDisplayName); } // also check for billing information // get the billing location type $locationTypes =& CRM_Core_PseudoConstant::locationType(); $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(); require_once 'CRM/Core/Payment.php'; require_once 'CRM/Core/Payment/Form.php'; // payment fields are depending on payment type if ($this->_processors['payment_type'] & CRM_Core_Payment::PAYMENT_TYPE_DIRECT_DEBIT) { CRM_Core_Payment_Form::setDirectDebitFields($this); } else { CRM_Core_Payment_Form::setCreditCardFields($this); } if ($this->_action & CRM_Core_Action::DELETE) { return; } $config =& CRM_Core_Config::singleton(); if (in_array("CiviPledge", $config->enableComponents) && !$this->_formType) { //get the payment values associated with given pledge payment id OR check for payments due. $this->_pledgeValues = array(); if ($this->_ppID) { $payParams = array('id' => $this->_ppID); require_once "CRM/Pledge/BAO/Payment.php"; CRM_Pledge_BAO_Payment::retrieve($payParams, $this->_pledgeValues['pledgePayment']); $this->_pledgeID = CRM_Utils_Array::value('pledge_id', $this->_pledgeValues['pledgePayment']); $paymentStatusID = CRM_Utils_Array::value('status_id', $this->_pledgeValues['pledgePayment']); $this->_id = CRM_Utils_Array::value('contribution_id', $this->_pledgeValues['pledgePayment']); //get all status $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(); if (!($paymentStatusID == array_search('Pending', $allStatus) || $paymentStatusID == array_search('Overdue', $allStatus))) { CRM_Core_Error::fatal(ts("Pledge payment status should be 'Pending' or 'Overdue'.")); } //get the pledge values associated with given pledge payment. require_once 'CRM/Pledge/BAO/Pledge.php'; $ids = array(); $pledgeParams = array('id' => $this->_pledgeID); CRM_Pledge_BAO_Pledge::getValues($pledgeParams, $this->_pledgeValues, $ids); $this->assign('ppID', $this->_ppID); } else { // Not making a pledge payment, so check if pledge payment(s) are due for this contact so we can alert the user. CRM-5206 if (isset($this->_contactID)) { require_once "CRM/Pledge/BAO/Pledge.php"; $contactPledges = array(); $contactPledges = CRM_Pledge_BAO_Pledge::getContactPledges($this->_contactID); if (!empty($contactPledges)) { $payments = null; $paymentsDue = null; $multipleDue = false; require_once "CRM/Pledge/BAO/Payment.php"; foreach ($contactPledges as $key => $pledgeId) { $payments = CRM_Pledge_BAO_Payment::getOldestPledgePayment($pledgeId); if ($payments) { if ($paymentsDue) { $multipleDue = true; break; } else { $paymentsDue = $payments; } } } if ($multipleDue) { // Show link to pledge tab since more than one pledge has a payment due $pledgeTab = CRM_Utils_System::url('civicrm/contact/view', "reset=1&force=1&cid={$this->_contactID}&selectedChild=pledge"); CRM_Core_Session::setStatus(ts('This contact has pending or overdue pledge payments. <a href="%1">Click here to view their Pledges tab</a> and verify whether this contribution should be applied as a pledge payment.', array(1 => $pledgeTab))); } else { if ($paymentsDue) { // Show user link to oldest Pending or Overdue pledge payment require_once 'CRM/Utils/Date.php'; require_once 'CRM/Utils/Money.php'; $ppAmountDue = CRM_Utils_Money::format($payments['amount']); $ppSchedDate = CRM_Utils_Date::customFormat(CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_Payment', $payments['id'], 'scheduled_date')); if ($this->_mode) { $ppUrl = CRM_Utils_System::url('civicrm/contact/view/contribution', "reset=1&action=add&cid={$this->_contactID}&ppid={$payments['id']}&context=pledge&mode=live"); } else { $ppUrl = CRM_Utils_System::url('civicrm/contact/view/contribution', "reset=1&action=add&cid={$this->_contactID}&ppid={$payments['id']}&context=pledge"); } CRM_Core_Session::setStatus(ts('This contact has a pending or overdue pledge payment of %2 which is scheduled for %3. <a href="%1">Click here to apply this contribution as a pledge payment<a/>.', array(1 => $ppUrl, 2 => $ppAmountDue, 3 => $ppSchedDate))); } } } } } } $this->_values = array(); // current contribution id if ($this->_id) { $this->_online = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_FinancialTrxn', $this->_id, 'id', 'contribution_id'); if ($this->_online) { $this->assign('isOnline', true); } //to get Premium id $sql = "\nSELECT *\nFROM civicrm_contribution_product\nWHERE contribution_id = {$this->_id}\n"; $dao = CRM_Core_DAO::executeQuery($sql, CRM_Core_DAO::$_nullArray); if ($dao->fetch()) { $this->_premiumID = $dao->id; $this->_productDAO = $dao; } $dao->free(); $ids = array(); $params = array('id' => $this->_id); require_once "CRM/Contribute/BAO/Contribution.php"; CRM_Contribute_BAO_Contribution::getValues($params, $this->_values, $ids); //unset the honor type id:when delete the honor_contact_id //and edit the contribution, honoree infomation pane open //since honor_type_id is present if (!CRM_Utils_Array::value('honor_contact_id', $this->_values)) { unset($this->_values['honor_type_id']); } //to get note id require_once 'CRM/Core/BAO/Note.php'; $daoNote =& new CRM_Core_BAO_Note(); $daoNote->entity_table = 'civicrm_contribution'; $daoNote->entity_id = $this->_id; if ($daoNote->find(true)) { $this->_noteID = $daoNote->id; $this->_values['note'] = $daoNote->note; } $this->_contributionType = $this->_values['contribution_type_id']; $csParams = array('contribution_id' => $this->_id); $softCredit = CRM_Contribute_BAO_Contribution::getSoftContribution($csParams, true); if (CRM_Utils_Array::value('soft_credit_to', $softCredit)) { $softCredit['sort_name'] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $softCredit['soft_credit_to'], 'sort_name'); } $this->_values['soft_credit_to'] = $softCredit['sort_name']; $this->_values['softID'] = $softCredit['soft_credit_id']; $this->_values['soft_contact_id'] = $softCredit['soft_credit_to']; $this->_values['pcp_made_through_id'] = $softCredit['pcp_id']; $this->_values['pcp_display_in_roll'] = $softCredit['pcp_display_in_roll']; $this->_values['pcp_roll_nickname'] = $softCredit['pcp_roll_nickname']; $this->_values['pcp_personal_note'] = $softCredit['pcp_personal_note']; //display check number field only if its having value or its offline mode. if (CRM_Utils_Array::value('payment_instrument_id', $this->_values) == CRM_Core_OptionGroup::getValue('payment_instrument', 'Check', 'name') || CRM_Utils_Array::value('check_number', $this->_values)) { $this->assign('showCheckNumber', true); } } // when custom data is included in this page if (CRM_Utils_Array::value("hidden_custom", $_POST)) { $this->set('type', 'Contribution'); $this->set('subType', $this->_contributionType); $this->set('entityId', $this->_id); CRM_Custom_Form_Customdata::preProcess($this); CRM_Custom_Form_Customdata::buildQuickForm($this); CRM_Custom_Form_Customdata::setDefaultValues($this); } require_once 'CRM/Price/BAO/Set.php'; $this->_lineItems = array(); if ($this->_id && ($priceSetId = CRM_Price_BAO_Set::getFor('civicrm_contribution', $this->_id))) { $this->_priceSetId = $priceSetId; require_once 'CRM/Price/BAO/LineItem.php'; $this->_lineItems[] = CRM_Price_BAO_LineItem::getLineItems($this->_id, 'contribution'); } $this->assign('lineItem', empty($this->_lineItems) ? false : $this->_lineItems); }