X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FEvent%2FForm%2FParticipant.php;h=06a73a5b26941f889aebf846f667206832cbd69f;hb=79d001a2d5bbeb910826f3f8089c6d4ce9455583;hp=13b11010610fcb969e782dff42a12b9e5dca2c1f;hpb=0554664067cdf3fb0f8e9210481a3346b905394a;p=civicrm-core.git diff --git a/CRM/Event/Form/Participant.php b/CRM/Event/Form/Participant.php index 13b1101061..06a73a5b26 100644 --- a/CRM/Event/Form/Participant.php +++ b/CRM/Event/Form/Participant.php @@ -192,6 +192,12 @@ class CRM_Event_Form_Participant extends CRM_Contact_Form_Task { */ public $_paymentId = NULL; + /** + * @todo add explanatory note about this + * @var null + */ + public $_onlinePendingContributionId = NULL; + /** * Function to set variables up before form is built * @@ -413,11 +419,12 @@ class CRM_Event_Form_Participant extends CRM_Contact_Form_Task { // when custom data is included in this page if (!empty($_POST['hidden_custom'])) { - //custom data of type participant role + // Custom data of type participant role + // Note: Some earlier commits imply $_POST['role_id'] could be a comma separated string, + // not sure if that ever really happens if (!empty($_POST['role_id'])) { - foreach ($_POST['role_id'] as $k => $val) { - $roleID = $val; - CRM_Custom_Form_CustomData::preProcess($this, $this->_roleCustomDataTypeID, $k, 1, 'Participant', $this->_id); + foreach ($_POST['role_id'] as $roleID) { + CRM_Custom_Form_CustomData::preProcess($this, $this->_roleCustomDataTypeID, $roleID, 1, 'Participant', $this->_id); CRM_Custom_Form_CustomData::buildQuickForm($this); CRM_Custom_Form_CustomData::setDefaultValues($this); } @@ -1087,15 +1094,17 @@ class CRM_Event_Form_Participant extends CRM_Contact_Form_Task { list($this->_contributorDisplayName, $this->_contributorEmail, $this->_toDoNotEmail) = CRM_Contact_BAO_Contact::getContactDetails($this->_contactId); } + //modify params according to parameter used in create + //participant method (addParticipant) + $this->_params['participant_status_id'] = $params['status_id']; + $this->_params['participant_role_id'] = is_array($params['role_id']) ? $params['role_id'] : explode(',', $params['role_id']); + $this->_params['participant_register_date'] = $params['register_date']; + $roleIdWithSeparator = implode(CRM_Core_DAO::VALUE_SEPARATOR, $this->_params['participant_role_id']); + if ($this->_mode) { if (!$this->_isPaidEvent) { CRM_Core_Error::fatal(ts('Selected Event is not Paid Event ')); } - //modify params according to parameter used in create - //participant method (addParticipant) - $this->_params['participant_status_id'] = $params['status_id']; - $this->_params['participant_role_id'] = explode(',', $params['role_id']); - $this->_params['participant_register_date'] = $params['register_date']; $eventTitle = CRM_Core_DAO::getFieldValue( @@ -1153,32 +1162,34 @@ class CRM_Event_Form_Participant extends CRM_Contact_Form_Task { $contactID = CRM_Contact_BAO_Contact::createProfileContact($params, $fields, $this->_contactId, NULL, NULL, $ctype); } - if ($this->_params['role_id']) { - foreach ($this->_params['role_id'] as $rkey) { - $customFieldsRole = CRM_Core_BAO_CustomField::getFields('Participant', FALSE, FALSE, $rkey, $this->_roleCustomDataTypeID); - $customFieldsEvent = CRM_Core_BAO_CustomField::getFields('Participant', - FALSE, - FALSE, - CRM_Utils_Array::value('event_id', $params), - $this->_eventNameCustomDataTypeID - ); - $customFieldsEventType = CRM_Core_BAO_CustomField::getFields('Participant', - FALSE, - FALSE, - $this->_eventTypeId, - $this->_eventTypeCustomDataTypeID - ); - $customFields = CRM_Utils_Array::crmArrayMerge($customFieldsRole, - CRM_Core_BAO_CustomField::getFields('Participant', FALSE, FALSE, NULL, NULL, TRUE) - ); - $customFields = CRM_Utils_Array::crmArrayMerge($customFieldsEvent, $customFields); - $customFields = CRM_Utils_Array::crmArrayMerge($customFieldsEventType, $customFields); - $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, - $customFields, - $this->_id, - 'Participant' - ); + if ($this->_params['participant_role_id']) { + $customFieldsRole = array(); + foreach ($this->_params['participant_role_id'] as $roleKey) { + $customFieldsRole = CRM_Utils_Array::crmArrayMerge(CRM_Core_BAO_CustomField::getFields('Participant', + FALSE, FALSE, $roleKey, $this->_roleCustomDataTypeID), $customFieldsRole); } + $customFieldsEvent = CRM_Core_BAO_CustomField::getFields('Participant', + FALSE, + FALSE, + CRM_Utils_Array::value('event_id', $params), + $this->_eventNameCustomDataTypeID + ); + $customFieldsEventType = CRM_Core_BAO_CustomField::getFields('Participant', + FALSE, + FALSE, + $this->_eventTypeId, + $this->_eventTypeCustomDataTypeID + ); + $customFields = CRM_Utils_Array::crmArrayMerge($customFieldsRole, + CRM_Core_BAO_CustomField::getFields('Participant', FALSE, FALSE, NULL, NULL, TRUE) + ); + $customFields = CRM_Utils_Array::crmArrayMerge($customFieldsEvent, $customFields); + $customFields = CRM_Utils_Array::crmArrayMerge($customFieldsEventType, $customFields); + $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, + $customFields, + $this->_id, + 'Participant' + ); } //do cleanup line items if participant edit the Event Fee. @@ -1277,7 +1288,7 @@ class CRM_Event_Form_Participant extends CRM_Contact_Form_Task { $participants = array(); if ($this->_single) { if ($params['role_id']) { - $params['role_id'] = str_replace(',', CRM_Core_DAO::VALUE_SEPARATOR, $params['role_id']); + $params['role_id'] = $roleIdWithSeparator; } else { $params['role_id'] = 'NULL'; @@ -1381,6 +1392,10 @@ class CRM_Event_Form_Participant extends CRM_Contact_Form_Task { } } + if (CRM_Utils_Array::value('tax_amount', $this->_params)) { + $contributionParams['tax_amount'] = $this->_params['tax_amount']; + } + if ($this->_single) { if (empty($ids)) { $ids = array(); @@ -1434,6 +1449,9 @@ class CRM_Event_Form_Participant extends CRM_Contact_Form_Task { ($params['status_id'] != array_search('Partially paid', $participantStatus)) ) { $line['unit_price'] = $line['line_total'] = $params['total_amount']; + if (!empty($params['tax_amount'])) { + $line['unit_price'] = $line['unit_price'] - $params['tax_amount']; + } } $lineItem[$this->_priceSetId][$lineKey] = $line; } @@ -1612,6 +1630,28 @@ class CRM_Event_Form_Participant extends CRM_Contact_Form_Task { if ($this->_isPaidEvent) { // fix amount for each of participants ( for bulk mode ) $eventAmount = array(); + //add dataArray in the receipts in ADD and UPDATE condition + $totalTaxAmount = 0; + $dataArray = array(); + if ($this->_action & CRM_Core_Action::ADD) { + $line = $lineItem[0]; + } + elseif ($this->_action & CRM_Core_Action::UPDATE) { + $line = $this->_values['line_items']; + } + foreach ($line as $key => $value) { + if (isset($value['tax_amount'])) { + $totalTaxAmount += $value['tax_amount']; + 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); + } + } + } + $this->assign('totalTaxAmount', $totalTaxAmount); + $this->assign('dataArray', $dataArray); if (!empty($additionalParticipantDetails)) { $params['amount_level'] = preg_replace('//', '', $params['amount_level']) . ' - ' . $this->_contributorDisplayName; }