-- Crear base de datos
CREATE DATABASE contabilidad;

-- Seleccionar la base de datos a usar
USE contabilidad;

-- Crear tabla para almacenar las cuentas contables
CREATE TABLE cuentas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(255) NOT NULL,
    tipo ENUM('Activo', 'Pasivo', 'Patrimonio', 'Ingresos', 'Gastos') NOT NULL,
    saldo DECIMAL(15, 2) DEFAULT 0.00
);

-- Crear tabla para almacenar los comprobantes contables
CREATE TABLE comprobantes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    fecha DATE NOT NULL,
    descripcion TEXT,
    monto DECIMAL(15, 2) NOT NULL
);

-- Crear tabla para almacenar los detalles del libro mayor
CREATE TABLE libro_mayor (
    id INT AUTO_INCREMENT PRIMARY KEY,
    cuenta_id INT,
    comprobante_id INT,
    monto DECIMAL(15, 2) NOT NULL,
    tipo_transaccion ENUM('Débito', 'Crédito') NOT NULL,
    fecha DATE NOT NULL,
    FOREIGN KEY (cuenta_id) REFERENCES cuentas(id),
    FOREIGN KEY (comprobante_id) REFERENCES comprobantes(id)
);

-- Crear tabla para el balance general
CREATE TABLE balance_general (
    id INT AUTO_INCREMENT PRIMARY KEY,
    fecha DATE NOT NULL,
    tipo ENUM('Activo', 'Pasivo') NOT NULL,
    monto DECIMAL(15, 2) NOT NULL
);

-- Crear tabla para los reportes de cierre fiscal
CREATE TABLE cierre_fiscal (
    id INT AUTO_INCREMENT PRIMARY KEY,
    fecha_inicio DATE NOT NULL,
    fecha_fin DATE NOT NULL,
    monto DECIMAL(15, 2) NOT NULL,
    tipo ENUM('Ingreso', 'Egreso') NOT NULL
);

-- Crear tabla para los reportes de cierre fiscal (formulario)
CREATE TABLE cierre_fiscal_form (
    id INT AUTO_INCREMENT PRIMARY KEY,
    fecha DATE NOT NULL,
    descripcion TEXT,
    monto DECIMAL(15, 2) NOT NULL
);

-- Crear tabla para las cuentas de explotación
CREATE TABLE cuentas_explotacion (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(255) NOT NULL,
    tipo ENUM('Ingreso', 'Gasto') NOT NULL,
    monto DECIMAL(15, 2) DEFAULT 0.00
);

-- Crear tabla para la relación de libros y reportes
CREATE TABLE reportes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tipo ENUM('Balance', 'Libro Mayor', 'Comprobante') NOT NULL,
    fecha DATE NOT NULL,
    descripcion TEXT
);

-- Verifica que las tablas han sido creadas correctamente
SHOW TABLES;
