-- PrintCenter Costeador / Cotizador - Actualización v1.0.1
-- Cobertura tinta CMYK, presets y columnas opcionales de cotización.
-- Ejecutar sobre la base de datos del sistema.

CREATE TABLE IF NOT EXISTS pc_schema_migrations (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    migration VARCHAR(190) NOT NULL,
    executed_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    UNIQUE KEY uq_pc_schema_migrations_migration (migration)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS pc_ink_coverage_presets (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    code VARCHAR(50) NOT NULL,
    name VARCHAR(120) NOT NULL,
    description VARCHAR(255) NULL,
    coverage_percent DECIMAL(8,2) NOT NULL DEFAULT 90.00,
    sort_order INT NOT NULL DEFAULT 0,
    is_default TINYINT(1) NOT NULL DEFAULT 0,
    active TINYINT(1) NOT NULL DEFAULT 1,
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    UNIQUE KEY uq_pc_ink_coverage_presets_code (code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO pc_ink_coverage_presets
(code, name, description, coverage_percent, sort_order, is_default, active)
VALUES
('low', 'Baja / texto y logos simples', 'Trabajos con poca tinta, textos, líneas y logos simples.', 20.00, 10, 0, 1),
('medium', 'Media / diseño normal', 'Diseño gráfico habitual con imágenes o fondos parciales.', 45.00, 20, 0, 1),
('high', 'Alta / imagen con fondos parciales', 'Mayor carga de color y áreas importantes impresas.', 70.00, 30, 0, 1),
('full_color', 'Full color / fotográfica', 'Criterio recomendado por defecto para impresión full color CMYK.', 90.00, 40, 1, 1),
('solid_background', 'Fondo pleno / alta saturación', 'Fondos plenos, colores muy saturados o alta carga de tinta.', 120.00, 50, 0, 1),
('custom', 'Personalizada', 'Permite ingresar un porcentaje manual.', 90.00, 60, 0, 1)
ON DUPLICATE KEY UPDATE
    name = VALUES(name),
    description = VALUES(description),
    coverage_percent = VALUES(coverage_percent),
    sort_order = VALUES(sort_order),
    is_default = VALUES(is_default),
    active = VALUES(active),
    updated_at = CURRENT_TIMESTAMP;

-- Las siguientes columnas deben agregarse en la tabla principal de cotizaciones/presupuestos.
-- Como el nombre exacto de la tabla puede variar, revisar la tabla real antes de ejecutar manualmente.
-- Ejemplo para tabla `cotizaciones`:
-- ALTER TABLE cotizaciones ADD COLUMN ink_coverage_code VARCHAR(50) NULL DEFAULT 'full_color';
-- ALTER TABLE cotizaciones ADD COLUMN ink_coverage_percent DECIMAL(8,2) NULL DEFAULT 90.00;
-- ALTER TABLE cotizaciones ADD COLUMN has_printing TINYINT(1) NOT NULL DEFAULT 1;
-- ALTER TABLE cotizaciones ADD COLUMN has_die_cutting TINYINT(1) NOT NULL DEFAULT 0;
-- ALTER TABLE cotizaciones ADD COLUMN subtotal_printing_net DECIMAL(14,2) NOT NULL DEFAULT 0.00;
-- ALTER TABLE cotizaciones ADD COLUMN subtotal_die_cutting_net DECIMAL(14,2) NOT NULL DEFAULT 0.00;
-- ALTER TABLE cotizaciones ADD COLUMN subtotal_net DECIMAL(14,2) NOT NULL DEFAULT 0.00;
-- ALTER TABLE cotizaciones ADD COLUMN iva_amount DECIMAL(14,2) NOT NULL DEFAULT 0.00;
-- ALTER TABLE cotizaciones ADD COLUMN total_gross DECIMAL(14,2) NOT NULL DEFAULT 0.00;

INSERT IGNORE INTO pc_schema_migrations (migration) VALUES ('2026_05_20_update_cobertura_tinta_v1_0_1');
