-- 1. Tabla de Productos (Stock)
CREATE TABLE `productos` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `codigo` VARCHAR(50) UNIQUE NOT NULL,
  `nombre` VARCHAR(150) NOT NULL,
  `precio_venta` DECIMAL(10,2) NOT NULL,
  `costo` DECIMAL(10,2) NOT NULL,
  `stock` INT NOT NULL DEFAULT 0,
  `tasa_iva` INT DEFAULT 10 COMMENT '10 o 5',
  `activo` TINYINT(1) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 2. Tabla de Ventas (Cabecera)
CREATE TABLE `ventas` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `fecha` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `cliente_nombre` VARCHAR(150) DEFAULT 'Consumidor Final',
  `cliente_ruc` VARCHAR(20) DEFAULT '00000000-0',
  `total_gravado` DECIMAL(10,2) DEFAULT 0.00,
  `total_iva` DECIMAL(10,2) DEFAULT 0.00,
  `total_pagar` DECIMAL(10,2) NOT NULL,
  `estado` ENUM('PENDIENTE', 'PAGADO', 'ANULADO') DEFAULT 'PAGADO'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 3. Tabla de Detalle de Venta (Items)
CREATE TABLE `ventas_detalle` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `venta_id` INT NOT NULL,
  `producto_id` INT NOT NULL,
  `cantidad` INT NOT NULL,
  `precio_unitario` DECIMAL(10,2) NOT NULL,
  `subtotal` DECIMAL(10,2) NOT NULL,
  FOREIGN KEY (`venta_id`) REFERENCES `ventas`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`producto_id`) REFERENCES `productos`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 4. Tabla de Gastos
CREATE TABLE `gastos` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `fecha` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `descripcion` VARCHAR(255) NOT NULL,
  `monto` DECIMAL(10,2) NOT NULL,
  `categoria` VARCHAR(50) DEFAULT 'General'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 5. Tabla de Auditoría SIFEN (El puente con SifenD)
CREATE TABLE `sifen_logs` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `venta_id` INT NOT NULL,
  `cdc` VARCHAR(44) DEFAULT NULL,
  `qr_url` VARCHAR(255) DEFAULT NULL,
  `estado_sifen` ENUM('PENDIENTE', 'APROBADO', 'RECHAZADO', 'ERROR_API') DEFAULT 'PENDIENTE',
  `respuesta_json` TEXT DEFAULT NULL COMMENT 'Respuesta cruda de SifenD para auditoría',
  `fecha_envio` DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (`venta_id`) REFERENCES `ventas`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- DATOS DE PRUEBA (Para que no empieces vacío)
INSERT INTO `productos` (`codigo`, `nombre`, `precio_venta`, `costo`, `stock`, `tasa_iva`) VALUES
('PROD-001', 'Coca Cola 500ml', 5000, 3500, 100, 10),
('PROD-002', 'Pan Flauta', 2000, 1200, 50, 10),
('PROD-003', 'Agua Mineral 1L', 4000, 2500, 80, 10);



-- Agregar columna de código de barras e indexarla para búsquedas instantáneas
ALTER TABLE `productos` ADD COLUMN `codigo_barras` VARCHAR(50) NULL AFTER `id`;
ALTER TABLE `productos` ADD INDEX `idx_codigo_barras` (`codigo_barras`);
ALTER TABLE `productos` ADD INDEX `idx_codigo` (`codigo`);

-- Actualizar productos de prueba con códigos de barras ficticios (tipo EAN-13)
UPDATE `productos` SET `codigo_barras` = '7891234567890' WHERE `codigo` = 'PROD-001';
UPDATE `productos` SET `codigo_barras` = '7891234567891' WHERE `codigo` = 'PROD-002';
UPDATE `productos` SET `codigo_barras` = '7891234567892' WHERE `codigo` = 'PROD-003';