-- ============================================================
-- MG MARKET™ — PATCH v3
-- Ejecutar en: massolag_ofertas
-- ============================================================

SET NAMES utf8mb4;

-- ── 1. tbl_tienda_clientes: columna para URL de origen ───────
-- Guarda la página principal desde donde vino el cliente
-- Ejemplo: 'arroba.massolagroup.com' o 'zoeprint.massolagroup.com'
ALTER TABLE tbl_tienda_clientes
    ADD COLUMN IF NOT EXISTS pagina_origen VARCHAR(200) DEFAULT NULL
        COMMENT 'Dominio del sitio desde donde se registró el cliente'
        AFTER proyecto;

-- ── 2. tbl_tienda_categorias: link con categorías del ERP ────
ALTER TABLE tbl_tienda_categorias
    ADD COLUMN IF NOT EXISTS erp_categoria_id INT DEFAULT NULL
        COMMENT 'ID de categorias_servicios en el ERP de origen'
        AFTER orden,
    ADD COLUMN IF NOT EXISTS erp_prefijo VARCHAR(6) DEFAULT NULL
        COMMENT 'Prefijo del ERP (IMP, PAP, HW…)'
        AFTER erp_categoria_id,
    ADD COLUMN IF NOT EXISTS erp_origen ENUM('arroba','zoeprint','ambos') DEFAULT 'ambos'
        COMMENT 'Qué ERP sincronizó esta categoría'
        AFTER erp_prefijo;

-- ── 3. Limpiar categorías genéricas antiguas y reemplazar ────
--    con las del ERP (solo si están vacías de items)
-- BORRAR solo categorías que NO tengan items asociados
DELETE FROM tbl_tienda_categorias
    WHERE id NOT IN (SELECT DISTINCT categoria_id FROM tbl_tienda_items WHERE categoria_id IS NOT NULL)
    AND erp_categoria_id IS NULL;

-- ── 4. Insertar categorías del ERP (idempotente) ─────────────
-- Mapeo: nombre ERP → FA icon + slug para la tienda
INSERT INTO tbl_tienda_categorias
    (nombre, descripcion, icono, slug, activa, orden, erp_categoria_id, erp_prefijo, erp_origen)
VALUES
    ('Impresión y Modelaje', 'Servicios de impresión y modelaje gráfico', 'fa-print',         'impresion-modelaje',    1,  1, 1,  'IMP', 'ambos'),
    ('Papel y Acabados',     'Impresión por hoja, plasticado, escaneo',    'fa-file',          'papel-acabados',        1,  2, 2,  'PAP', 'ambos'),
    ('Hardware - Diagnóstico','Diagnóstico y defectación de equipos',       'fa-search',        'hardware-diagnostico',  1,  3, 3,  'DIA', 'ambos'),
    ('Hardware - Mantenimiento','Mantenimiento preventivo de equipos',      'fa-wrench',        'hardware-mantenimiento',1,  4, 4,  'MAN', 'ambos'),
    ('Hardware - Reparación','Reparación de equipos informáticos',          'fa-tools',         'hardware-reparacion',   1,  5, 5,  'REP', 'ambos'),
    ('Impresoras Láser',     'Mantenimiento y reparación impresoras láser', 'fa-print',         'impresoras-laser',      1,  6, 6,  'LAZ', 'ambos'),
    ('Impresoras Epson',     'Servicio técnico impresoras Epson',           'fa-print',         'impresoras-epson',      1,  7, 7,  'EPS', 'ambos'),
    ('Software y Sistemas',  'Instalación, configuración y soporte',        'fa-laptop',        'software-sistemas',     1,  8, 8,  'SW',  'ambos'),
    ('Venta de Piezas',      'Componentes y piezas informáticas',           'fa-shopping-cart', 'venta-piezas',          1,  9, 9,  'VNT', 'ambos'),
    ('Diseño Gráfico',       'Diseño visual e identidad corporativa',        'fa-paint-brush',   'diseno-grafico',        1, 10, 10, 'DIS', 'ambos'),
    ('Instalaciones',        'Instalación de redes y sistemas',             'fa-wifi',          'instalaciones',         1, 11, 11, 'INS', 'ambos')
ON DUPLICATE KEY UPDATE
    nombre          = VALUES(nombre),
    descripcion     = VALUES(descripcion),
    icono           = VALUES(icono),
    activa          = VALUES(activa),
    orden           = VALUES(orden),
    erp_categoria_id= VALUES(erp_categoria_id),
    erp_prefijo     = VALUES(erp_prefijo);

-- ── 5. Actualizar items existentes con categoria_id correcta ─
-- Para items cuyo codigo empieza por el prefijo del ERP
UPDATE tbl_tienda_items i
JOIN tbl_tienda_categorias c ON c.erp_prefijo = SUBSTRING(i.codigo, 1, LOCATE('-', i.codigo) - 1)
SET i.categoria_id = c.id
WHERE i.categoria_id IS NULL OR i.categoria_id NOT IN (SELECT id FROM tbl_tienda_categorias);
