-- Agregar campo codigo si no existe
ALTER TABLE categories 
ADD COLUMN IF NOT EXISTS codigo VARCHAR(10);

-- Crear categoría de ejemplo si no existe
INSERT INTO categories (nombre, slug, descripcion, codigo, orden)
VALUES ('Electrónica', 'electronica', 'Productos electrónicos y tecnología', 'ELEC', 1)
ON CONFLICT (slug) DO NOTHING;

-- Obtener el ID de la categoría
DO $$
DECLARE
  cat_id INTEGER;
  prod_id INTEGER;
BEGIN
  -- Buscar categoría
  SELECT id INTO cat_id FROM categories WHERE slug = 'electronica';
  
  -- Crear producto de ejemplo
  INSERT INTO products (
    sku,
    nombre,
    descripcion,
    category_id,
    precio_base,
    peso_gramos,
    alto_cm,
    ancho_cm,
    largo_cm,
    is_active
  )
  VALUES (
    'ELEC-001',
    'Mouse Inalámbrico Logitech M185',
    'Mouse inalámbrico con sensor óptico de alta precisión, batería de larga duración (hasta 12 meses), receptor nano USB. Color negro.',
    cat_id,
    12990,
    85,
    3.8,
    6.2,
    10.5,
    true
  )
  ON CONFLICT (sku) DO UPDATE
  SET nombre = EXCLUDED.nombre,
      descripcion = EXCLUDED.descripcion,
      precio_base = EXCLUDED.precio_base
  RETURNING id INTO prod_id;

  -- Crear inventario inicial
  INSERT INTO inventory (product_id, stock_actual, stock_minimo)
  VALUES (prod_id, 25, 5)
  ON CONFLICT (product_id) DO UPDATE
  SET stock_actual = 25;

  -- Registrar movimiento de inventario
  INSERT INTO inventory_movements (
    product_id,
    tipo,
    cantidad,
    cantidad_anterior,
    cantidad_nueva,
    notas
  )
  VALUES (
    prod_id,
    'entrada',
    25,
    0,
    25,
    'Stock inicial de ejemplo'
  );

  RAISE NOTICE 'Producto creado exitosamente: ELEC-001 con 25 unidades en stock';
END $$;
