> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rocky.global/llms.txt
> Use this file to discover all available pages before exploring further.

# Management fees

# Funcionalidad de Cobros de Gestión

## Descripción

Esta funcionalidad permite a los organizadores configurar quién paga las tarifas de gestión asociadas a sus eventos. Los organizadores pueden tener configuradas tarifas con diferentes tipos (monto fijo, porcentaje, o combinado) y esta funcionalidad permite decidir si el participante o el organizador absorbe estos costos.

## Características Implementadas

### 1. Base de Datos

* **Nuevos campos en la tabla `eventos`:**
  * `management_fees_config`: JSON para configuración adicional
  * `participant_pays_fees`: Boolean (true si el participante paga)
  * `organizer_pays_fees`: Boolean (true si el organizador paga)

### 2. Modelo Evento

* Agregados los nuevos campos al `$fillable` y `$casts`
* Método `getOrganizerTariffConfig()` para obtener la configuración de tarifas del organizador

### 3. Controlador

* `ManagementFeesController` con métodos:
  * `index()`: Muestra la configuración actual
  * `update()`: Actualiza la configuración
  * Validación de permisos de acceso

### 4. Vistas

* Vista principal en `resources/views/eventos/config/management_fees/index.blade.php`
* Muestra la configuración de tarifas del organizador
* Formulario para configurar quién paga las tarifas
* Integración con el sistema de navegación existente

### 5. Rutas

* `GET events/config/management-fees/{id}`: Ver configuración
* `PUT events/config/management-fees/{id}/update`: Actualizar configuración

## Cómo Usar

### Para Organizadores

1. **Acceder a la configuración:**
   * Ir a la edición de un evento
   * En el menú lateral, expandir la sección "Configuración"
   * Hacer clic en "Cobros de Gestión" (debajo de "Impuestos")

2. **Ver configuración del organizador:**
   * La vista muestra automáticamente las tarifas configuradas para el organizador
   * Incluye tipo, monto, porcentaje, período y estado

3. **Configurar quién paga:**
   * Seleccionar entre "Participante" o "Organizador"
   * Agregar configuración adicional si es necesario
   * Guardar los cambios

### Para Desarrolladores

#### Acceder a la configuración programáticamente:

```php theme={null}
$evento = Evento::find($id);

// Ver quién paga las tarifas
$participantPays = $evento->participant_pays_fees;
$organizerPays = $evento->organizer_pays_fees;

// Obtener configuración de tarifas del organizador
$organizerTariff = $evento->getOrganizerTariffConfig();

// Configuración adicional
$additionalConfig = $evento->management_fees_config;
```

#### Aplicar la lógica de cobros:

```php theme={null}
if ($evento->participant_pays_fees) {
    // El participante paga las tarifas de gestión
    $totalFee = $organizerTariff->total_price;
    if ($organizerTariff->percentage) {
        $totalFee += ($amount * $organizerTariff->percentage / 100);
    }
    // Aplicar tarifa al participante
} else {
    // El organizador absorbe las tarifas
    // No cobrar tarifas adicionales al participante
}
```

## Estructura de Archivos

```
app/
├── Http/Controllers/Eventos/
│   └── ManagementFeesController.php
├── Models/
│   └── Evento.php (actualizado)

resources/views/eventos/config/management_fees/
└── index.blade.php

database/migrations/
└── 2025_10_08_021356_add_management_fees_to_eventos_table.php

routes/
└── eventos.php (actualizado)
```

## Validaciones

* Solo organizadores y administradores pueden acceder
* Validación de que al menos una opción esté seleccionada
* Validación de tipos de datos para los campos booleanos

## Notas Técnicas

* Los campos son mutuamente excluyentes (solo uno puede ser true)
* La configuración se guarda en formato JSON para flexibilidad
* Integración completa con el sistema de navegación existente
* Compatible con el sistema de tarifas existente
* Acceso desde el menú lateral de configuración de eventos
