-- Script para crear las tablas de finanzas del club
-- Ejecutar este script en tu base de datos MySQL

-- Crear tabla de categorías financieras
CREATE TABLE `finance_categories` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `type` enum('income','expense') NOT NULL,
  `description` text DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_by` bigint(20) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `finance_categories_name_type_unique` (`name`,`type`),
  KEY `finance_categories_type_is_active_index` (`type`,`is_active`),
  KEY `finance_categories_created_by_foreign` (`created_by`),
  CONSTRAINT `finance_categories_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Crear tabla de finanzas del club
CREATE TABLE `club_finances` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `type` enum('income','expense') NOT NULL,
  `category` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `amount` decimal(10,2) NOT NULL,
  `date` date NOT NULL,
  `reference` varchar(255) DEFAULT NULL,
  `created_by` bigint(20) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `club_finances_type_date_index` (`type`,`date`),
  KEY `club_finances_category_index` (`category`),
  KEY `club_finances_created_by_foreign` (`created_by`),
  CONSTRAINT `club_finances_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Insertar categorías por defecto
INSERT INTO `finance_categories` (`name`, `type`, `description`, `is_active`, `created_by`, `created_at`, `updated_at`) VALUES
-- Categorías de ingresos
('Donaciones', 'income', 'Contribuciones voluntarias de socios y simpatizantes del club', 1, 1, NOW(), NOW()),
('Membresías', 'income', 'Cuotas anuales y mensuales de socios del club', 1, 1, NOW(), NOW()),
('Eventos', 'income', 'Venta de entradas, eventos especiales y actividades del club', 1, 1, NOW(), NOW()),
('Patrocinios', 'income', 'Apoyo financiero de empresas y patrocinadores', 1, 1, NOW(), NOW()),
('Marketing', 'income', 'Ingresos por promociones, publicidad y merchandising', 1, 1, NOW(), NOW()),

-- Categorías de egresos
('Equipamiento', 'expense', 'Material deportivo, uniformes, balones y equipos', 1, 1, NOW(), NOW()),
('Mantenimiento', 'expense', 'Reparaciones, limpieza y mantenimiento de instalaciones', 1, 1, NOW(), NOW()),
('Servicios Públicos', 'expense', 'Luz, agua, internet, teléfono y otros servicios básicos', 1, 1, NOW(), NOW()),
('Salarios', 'expense', 'Personal del club, entrenadores y empleados', 1, 1, NOW(), NOW()),
('Transporte', 'expense', 'Viajes, combustible, alquiler de vehículos para partidos', 1, 1, NOW(), NOW()),
('Alquiler', 'expense', 'Alquiler de instalaciones, oficinas y espacios', 1, 1, NOW(), NOW()),
('Marketing', 'expense', 'Publicidad, promociones y material promocional', 1, 1, NOW(), NOW()),
('Seguros', 'expense', 'Seguros del club, de instalaciones y de deportistas', 1, 1, NOW(), NOW()),
('Otros', 'expense', 'Gastos diversos no categorizados específicamente', 1, 1, NOW(), NOW());

-- Insertar datos de ejemplo de transacciones
INSERT INTO `club_finances` (`type`, `category`, `description`, `amount`, `date`, `reference`, `created_by`, `created_at`, `updated_at`) VALUES
('income', 'donations', 'Donaciones de socios y simpatizantes', 15000.00, '2024-01-15', 'DON-2024-001', 1, NOW(), NOW()),
('income', 'sponsors', 'Patrocinio de empresa local', 8000.00, '2024-02-10', 'SPO-2024-001', 1, NOW(), NOW()),
('income', 'events', 'Venta de entradas - Partido amistoso', 3500.00, '2024-03-20', 'EVE-2024-001', 1, NOW(), NOW()),
('income', 'membership', 'Membresías anuales de socios', 12000.00, '2024-01-05', 'MEM-2024-001', 1, NOW(), NOW()),
('income', 'donations', 'Donación especial para equipamiento', 5000.00, '2024-04-12', 'DON-2024-002', 1, NOW(), NOW()),
('expense', 'equipment', 'Compra de balones y equipamiento deportivo', 2500.00, '2024-01-20', 'EQU-2024-001', 1, NOW(), NOW()),
('expense', 'maintenance', 'Mantenimiento de cancha y instalaciones', 3200.00, '2024-02-15', 'MAN-2024-001', 1, NOW(), NOW()),
('expense', 'utilities', 'Servicios de luz y agua', 800.00, '2024-03-01', 'SER-2024-001', 1, NOW(), NOW()),
('expense', 'transport', 'Transporte para partidos fuera de casa', 1500.00, '2024-03-25', 'TRA-2024-001', 1, NOW(), NOW()),
('expense', 'equipment', 'Uniformes para el equipo', 4000.00, '2024-04-05', 'EQU-2024-002', 1, NOW(), NOW()),
('expense', 'utilities', 'Servicios de luz y agua', 750.00, '2024-04-01', 'SER-2024-002', 1, NOW(), NOW()),
('income', 'donations', 'Donaciones del año anterior', 12000.00, '2023-12-15', 'DON-2023-001', 1, NOW(), NOW()),
('income', 'membership', 'Membresías del año anterior', 10000.00, '2023-12-01', 'MEM-2023-001', 1, NOW(), NOW()),
('expense', 'equipment', 'Equipamiento del año anterior', 3000.00, '2023-12-20', 'EQU-2023-001', 1, NOW(), NOW()),
('expense', 'maintenance', 'Mantenimiento del año anterior', 2500.00, '2023-12-10', 'MAN-2023-001', 1, NOW(), NOW());
