// 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);
}
/**
* global validation rules for the form
*
- * @param array $fields posted values of the form
+ * @param $values
+ * @param $files
+ * @param $self
+ *
+ * @internal param array $fields posted values of the form
*
* @return array list of errors to be posted back to the form
* @static
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(
$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.
$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';
}
}
+ if (CRM_Utils_Array::value('tax_amount', $this->_params)) {
+ $contributionParams['tax_amount'] = $this->_params['tax_amount'];
+ }
+
if ($this->_single) {
if (empty($ids)) {
$ids = array();
($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;
}
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('/\ 1/', '', $params['amount_level']) . ' - ' . $this->_contributorDisplayName;
}