-- TPV HOSTELERÍA - SCRIPT SQL
CREATE DATABASE IF NOT EXISTS tpv_hosteleria CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE tpv_hosteleria;

-- ROLES
CREATE TABLE IF NOT EXISTS roles (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nombre VARCHAR(50) NOT NULL UNIQUE,
    descripcion TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO roles (nombre, descripcion) VALUES
('Administrador', 'Acceso total'),
('Camarero', 'Gestión de mesas y TPV'),
('Cocina', 'Ver comandas');

-- CATEGORÍAS
CREATE TABLE IF NOT EXISTS categorias (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nombre VARCHAR(100) NOT NULL UNIQUE,
    activo TINYINT DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO categorias (nombre) VALUES ('Bebidas'), ('Comidas'), ('Postres'), ('Snacks');

-- PRODUCTOS
CREATE TABLE IF NOT EXISTS productos (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nombre VARCHAR(100) NOT NULL,
    precio DECIMAL(10,2) NOT NULL,
    iva INT DEFAULT 21,
    categoria_id INT NOT NULL,
    marca VARCHAR(50),
    activo TINYINT DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (categoria_id) REFERENCES categorias(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO productos (nombre, precio, categoria_id, marca) VALUES
('Agua', 2.50, 1, 'ninguna'),
('Refresco', 3.00, 1, 'ninguna'),
('Cerveza', 3.50, 1, 'ninguna'),
('Hamburguesa', 9.99, 2, 'cocina'),
('Ensalada', 7.50, 2, 'cocina'),
('Helado', 4.50, 3, 'ninguna'),
('Patatas Fritas', 3.50, 4, 'ninguna');

-- MESAS
CREATE TABLE IF NOT EXISTS mesas (
    id INT PRIMARY KEY AUTO_INCREMENT,
    numero INT NOT NULL UNIQUE,
    capacidad INT NOT NULL,
    estado ENUM('libre','ocupada','reservada') DEFAULT 'libre',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO mesas (numero, capacidad) VALUES (1,2),(2,2),(3,4),(4,4),(5,6),(6,6),(7,8),(8,8),(9,10),(10,10);

-- COMANDAS
CREATE TABLE IF NOT EXISTS comandas (
    id INT PRIMARY KEY AUTO_INCREMENT,
    mesa_id INT NOT NULL,
    usuario_id INT NOT NULL,
    estado ENUM('pendiente','en_preparacion','lista','cerrada') DEFAULT 'pendiente',
    total DECIMAL(10,2) DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (mesa_id) REFERENCES mesas(id),
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- DETALLE COMANDAS
CREATE TABLE IF NOT EXISTS comandas_detalle (
    id INT PRIMARY KEY AUTO_INCREMENT,
    comanda_id INT NOT NULL,
    producto_id INT NOT NULL,
    cantidad INT NOT NULL,
    precio_unitario DECIMAL(10,2) NOT NULL,
    total DECIMAL(10,2) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (comanda_id) REFERENCES comandas(id) ON DELETE CASCADE,
    FOREIGN KEY (producto_id) REFERENCES productos(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- IMPRESORAS
CREATE TABLE IF NOT EXISTS impresoras (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nombre VARCHAR(100) NOT NULL,
    tipo ENUM('cocina','barra','cliente') NOT NULL,
    ip_address VARCHAR(15) NOT NULL,
    puerto INT DEFAULT 9100,
    ancho_papel VARCHAR(10) DEFAULT '80mm',
    activa TINYINT DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO impresoras (nombre, tipo, ip_address) VALUES
('Cocina', 'cocina', '192.168.1.100'),
('Barra', 'barra', '192.168.1.101'),
('Cliente', 'cliente', '192.168.1.102');