-- ============================================
-- SQL PARA SERIES DE COMPROBANTES
-- Ejecutar si no tienes las tablas
-- ============================================

-- Tabla tipos_comprobante (si no existe)
CREATE TABLE IF NOT EXISTS tipos_comprobante (
    id_tipo_comprobante INT PRIMARY KEY AUTO_INCREMENT,
    codigo VARCHAR(2) NOT NULL COMMENT '01=Factura, 03=Boleta, 07=NC, 08=ND',
    nombre VARCHAR(50) NOT NULL,
    descripcion VARCHAR(255),
    estado TINYINT(1) DEFAULT 1,
    fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Insertar tipos de comprobante estándar SUNAT
INSERT IGNORE INTO tipos_comprobante (id_tipo_comprobante, codigo, nombre, descripcion) VALUES
(1, '01', 'Factura', 'Factura Electrónica'),
(2, '03', 'Boleta de Venta', 'Boleta de Venta Electrónica'),
(3, '07', 'Nota de Crédito', 'Nota de Crédito Electrónica'),
(4, '08', 'Nota de Débito', 'Nota de Débito Electrónica'),
(5, '09', 'Guía de Remisión', 'Guía de Remisión Electrónica');

-- Tabla series_comprobantes (si no existe)
CREATE TABLE IF NOT EXISTS series_comprobantes (
    id_serie INT PRIMARY KEY AUTO_INCREMENT,
    id_tipo_comprobante INT NOT NULL,
    serie VARCHAR(10) NOT NULL COMMENT 'Ej: F001, B001, FC01',
    numero_actual INT DEFAULT 0 COMMENT 'Último número emitido',
    numero_inicio INT DEFAULT 1,
    numero_fin INT DEFAULT 99999999,
    id_almacen INT NOT NULL COMMENT 'Almacén/Sucursal',
    es_electronico TINYINT(1) DEFAULT 1,
    estado TINYINT(1) DEFAULT 1,
    fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (id_tipo_comprobante) REFERENCES tipos_comprobante(id_tipo_comprobante),
    FOREIGN KEY (id_almacen) REFERENCES almacenes(id_almacen),
    UNIQUE KEY unique_serie_almacen (serie, id_almacen)
);

-- Insertar series de ejemplo para el almacén principal (id_almacen = 1)
-- Ajusta el id_almacen según tu configuración
INSERT IGNORE INTO series_comprobantes (id_tipo_comprobante, serie, numero_actual, id_almacen, es_electronico) VALUES
-- Facturas
(1, 'F001', 0, 1, 1),
-- Boletas
(2, 'B001', 0, 1, 1),
-- Notas de Crédito para Facturas
(3, 'FC01', 0, 1, 1),
-- Notas de Crédito para Boletas
(3, 'BC01', 0, 1, 1),
-- Notas de Débito para Facturas
(4, 'FD01', 0, 1, 1),
-- Notas de Débito para Boletas
(4, 'BD01', 0, 1, 1);

-- Si tienes más almacenes, agregar series adicionales:
-- INSERT INTO series_comprobantes (id_tipo_comprobante, serie, numero_actual, id_almacen, es_electronico) VALUES
-- (1, 'F002', 0, 2, 1),  -- Factura Almacén 2
-- (2, 'B002', 0, 2, 1);  -- Boleta Almacén 2

-- ============================================
-- VERIFICACIÓN
-- ============================================
SELECT 'Tipos de Comprobante:' as info;
SELECT * FROM tipos_comprobante;

SELECT 'Series de Comprobantes:' as info;
SELECT sc.*, tc.nombre as tipo, a.nombre as almacen 
FROM series_comprobantes sc
JOIN tipos_comprobante tc ON sc.id_tipo_comprobante = tc.id_tipo_comprobante
JOIN almacenes a ON sc.id_almacen = a.id_almacen
ORDER BY sc.id_almacen, tc.codigo, sc.serie;
