# Sistema de Categorías Personalizadas - Club Atlético Torino

## Descripción

Se ha implementado un sistema completo de **categorías personalizadas** para las finanzas del club, permitiendo a los administradores crear, editar y gestionar sus propias categorías de ingresos y egresos de manera dinámica.

## 🎯 Funcionalidades Implementadas

### ✅ **Gestión Completa de Categorías**
- **Crear nuevas categorías** personalizadas
- **Editar categorías existentes**
- **Activar/desactivar categorías** según necesidad
- **Eliminar categorías** (solo si no están en uso)
- **Ver estadísticas de uso** de cada categoría

### ✅ **Integración con Finanzas**
- **Categorías dinámicas** en formularios de transacciones
- **Compatibilidad** con categorías por defecto
- **Filtros automáticos** por tipo de transacción
- **Validación** de categorías únicas por tipo

### ✅ **Panel de Administración**
- **Interfaz intuitiva** para gestionar categorías
- **Filtros y búsqueda** avanzada
- **Estadísticas de uso** en tiempo real
- **Confirmaciones** para acciones destructivas

## 📍 Ubicaciones de Acceso

### **Desde el Panel de Finanzas:**
1. **Panel de Finanzas** → Botón "**Gestionar Categorías**"
2. **URL Directa**: `/admin/finance-categories`

### **Acceso Rápido:**
- **Dashboard de Administración** → "Gestionar Finanzas" → "Gestionar Categorías"

## 🛠️ Funcionalidades Detalladas

### **Panel Principal de Categorías** (`/admin/finance-categories`)

#### **Información Mostrada:**
- **ID** de la categoría
- **Nombre** de la categoría
- **Tipo** (Ingreso/Egreso) con colores distintivos
- **Descripción** (truncada para mejor visualización)
- **Estado** (Activa/Inactiva)
- **Uso** (número de transacciones que la usan)
- **Creado por** (usuario administrador)
- **Fecha** de creación
- **Acciones** (Editar/Activar-Desactivar/Eliminar)

#### **Características:**
- **Paginación** para manejar grandes volúmenes
- **Ordenamiento** por tipo y nombre
- **Protección** contra eliminación de categorías en uso
- **Estados visuales** claros (activa/inactiva)

### **Formulario de Nueva Categoría** (`/admin/finance-categories/create`)

#### **Campos Requeridos:**
- **Nombre**: Nombre único de la categoría
- **Tipo**: Ingreso o Egreso

#### **Campos Opcionales:**
- **Descripción**: Explicación de cuándo usar la categoría

#### **Validaciones:**
- **Nombre único** por tipo (no puede haber dos categorías con el mismo nombre para el mismo tipo)
- **Longitud máxima** de 255 caracteres para el nombre
- **Longitud máxima** de 1000 caracteres para la descripción

### **Formulario de Edición** (`/admin/finance-categories/{id}/edit`)

#### **Características:**
- **Mismos campos** que el formulario de creación
- **Valores pre-cargados** de la categoría existente
- **Checkbox para activar/desactivar** la categoría
- **Información adicional** sobre la categoría:
  - ID de la categoría
  - Estado actual
  - Usuario que la creó
  - Fecha de creación y última actualización
  - Número de transacciones que la usan

## 📊 Categorías por Defecto Incluidas

### **Ingresos:**
- **Donaciones**: Contribuciones voluntarias de socios y simpatizantes
- **Membresías**: Cuotas anuales y mensuales de socios
- **Eventos**: Venta de entradas, eventos especiales
- **Patrocinios**: Apoyo financiero de empresas
- **Marketing**: Ingresos por promociones y publicidad

### **Egresos:**
- **Equipamiento**: Material deportivo, uniformes, balones
- **Mantenimiento**: Reparaciones y mantenimiento de instalaciones
- **Servicios Públicos**: Luz, agua, internet, teléfono
- **Salarios**: Personal del club, entrenadores
- **Transporte**: Viajes, combustible, alquiler de vehículos
- **Alquiler**: Alquiler de instalaciones y oficinas
- **Marketing**: Publicidad, promociones y material promocional
- **Seguros**: Seguros del club y deportistas
- **Otros**: Gastos diversos no categorizados

## 🔧 Instrucciones de Uso

### **Para Crear una Nueva Categoría:**

1. **Acceder al panel**:
   - Ir a "Gestionar Finanzas" → "Gestionar Categorías"
   - O ir directamente a `/admin/finance-categories`

2. **Crear la categoría**:
   - Hacer clic en "Nueva Categoría"
   - Seleccionar tipo (Ingreso/Egreso)
   - Escribir nombre descriptivo
   - Agregar descripción (opcional)
   - Guardar

3. **Usar la categoría**:
   - La nueva categoría aparecerá automáticamente en los formularios de transacciones
   - Se puede usar inmediatamente para nuevas transacciones

### **Para Editar una Categoría:**

1. **Localizar la categoría** en el panel principal
2. **Hacer clic en el botón de editar** (ícono de lápiz)
3. **Modificar los campos necesarios**
4. **Activar/desactivar** según necesidad
5. **Guardar los cambios**

### **Para Activar/Desactivar una Categoría:**

1. **Localizar la categoría** en el panel principal
2. **Hacer clic en el botón de activar/desactivar** (ícono de play/pause)
3. **Confirmar la acción**
4. **La categoría cambiará de estado** inmediatamente

### **Para Eliminar una Categoría:**

1. **Verificar que no esté en uso** (debe mostrar "Sin uso")
2. **Hacer clic en el botón de eliminar** (ícono de basura)
3. **Confirmar la eliminación**
4. **La categoría se eliminará permanentemente**

## 🚀 Beneficios del Sistema

### **Para los Administradores:**
- **Flexibilidad total** para crear categorías específicas del club
- **Control granular** sobre la organización financiera
- **Fácil gestión** con interfaz intuitiva
- **Protección** contra eliminación accidental de categorías en uso

### **Para el Club:**
- **Organización personalizada** de finanzas
- **Categorías específicas** para las necesidades del club
- **Mejor seguimiento** de gastos e ingresos
- **Reportes más precisos** y detallados

### **Para los Usuarios:**
- **Transparencia mejorada** con categorías más específicas
- **Mejor comprensión** de las finanzas del club
- **Información más detallada** en los reportes públicos

## 📁 Archivos Creados/Modificados

### **Nuevos Archivos:**
- `app/Models/FinanceCategory.php` - Modelo para categorías
- `database/migrations/2024_01_01_000005_create_finance_categories_table.php` - Migración
- `app/Http/Controllers/FinanceCategoryController.php` - Controlador
- `resources/views/admin/finance-categories/index.blade.php` - Panel principal
- `resources/views/admin/finance-categories/create.blade.php` - Formulario de creación
- `resources/views/admin/finance-categories/edit.blade.php` - Formulario de edición
- `database/seeders/FinanceCategorySeeder.php` - Seeder con categorías por defecto

### **Archivos Modificados:**
- `app/Models/ClubFinance.php` - Integración con categorías dinámicas
- `app/Http/Controllers/AdminController.php` - Uso de categorías dinámicas
- `routes/web.php` - Rutas de categorías agregadas
- `resources/views/admin/finances/index.blade.php` - Enlace a categorías
- `database/seeders/DatabaseSeeder.php` - Seeder incluido
- `create_club_finances_table.sql` - SQL actualizado con categorías

## 🔮 Características Avanzadas

### **Validaciones Inteligentes:**
- **Nombres únicos** por tipo de transacción
- **Protección contra eliminación** de categorías en uso
- **Validación de integridad** de datos

### **Estados de Categorías:**
- **Activa**: Aparece en formularios de nuevas transacciones
- **Inactiva**: No aparece en formularios, pero las transacciones existentes siguen funcionando

### **Estadísticas de Uso:**
- **Contador de transacciones** por categoría
- **Información de creación** y última modificación
- **Historial de cambios** visible

## 📞 Instrucciones de Instalación

### **Para Usar el Sistema:**

1. **Ejecutar el SQL actualizado**:
   ```sql
   -- Ejecutar el contenido de create_club_finances_table.sql
   ```

2. **O usar los seeders** (cuando tengas PHP 8.2+):
   ```bash
   php artisan migrate
   php artisan db:seed --class=FinanceCategorySeeder
   php artisan db:seed --class=ClubFinanceSeeder
   ```

3. **Acceder al sistema**:
   - Ir a `/admin/finance-categories`
   - O desde "Gestionar Finanzas" → "Gestionar Categorías"

## 🎉 Resultado Final

Ahora tienes un sistema **completamente personalizable** para las categorías financieras del club:

- ✅ **Categorías por defecto** listas para usar
- ✅ **Creación de categorías personalizadas** ilimitada
- ✅ **Gestión completa** desde el panel de administración
- ✅ **Integración perfecta** con el sistema de finanzas
- ✅ **Protección de datos** y validaciones inteligentes

¡Ya no tendrás que preocuparte por categorías faltantes! Puedes crear cualquier categoría que necesites para organizar perfectamente las finanzas del Club Atlético Torino.

