Gestionar Variantes
Exportar contenido
Crea variantes de un producto con atributos personalizables (talla, color, modelo) y precios/stock independientes.
- En la página de detalle del producto, ve a la sección “Variantes”.
- Clic en ”+ Agregar Variante”.
- Completa los campos obligatorios (ver tabla abajo).
- Define los atributos en formato JSON:
{"talla": "M", "color": "Rojo"}. - Clic en “Guardar” — variante creada.
Nota: Las variantes solo están disponibles para productos de tipo “Producto”, no para servicios.
Campos obligatorios
Sección titulada «Campos obligatorios»| Campo | Descripción | Ejemplo |
|---|---|---|
| Nombre de variante | Identificador descriptivo | Camiseta Roja M |
| SKU variante | Código único de la variante | CAM-RED-M |
| Ajuste de precio | Diferencia sobre precio base (+/-) | +2.00 € |
| Stock | Cantidad disponible | 50 |
| Atributos | JSON con propiedades | {"talla": "M", "color": "Rojo"} |
Cómo sé que lo hice bien
Sección titulada «Cómo sé que lo hice bien»- La variante aparece en la tabla de variantes del producto.
- El precio final se calcula correctamente (precio base + ajuste).
- El stock de la variante es independiente del producto base.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa | Solución |
|---|---|---|
| ”El nombre de variante es requerido” | Campo vacío | Introduce nombre descriptivo |
| ”SKU duplicado” | SKU ya existe | Usa código único para la variante |
| ”Formato de atributos inválido” | JSON mal formado | Verifica sintaxis: {"clave": "valor"} |
🔧 Detalles Técnicos — Gestionar Variantes
Tablas involucradas:
| Tabla | Columnas clave | FK |
|---|---|---|
product_variants | id, product_id, variant_name, sku_variant, price_adjustment, stock_quantity, attributes, is_active | products |
Tipo de dato:
interface ProductVariant { id?: string; variant_name: string; sku_variant: string; price_adjustment: number; stock_quantity: number; attributes: Record<string, string>; is_active: boolean;}Componente:
ProductVariantsManager.tsx- Tabla editable con inline editing
- JSON editor para atributos
Queries de diagnóstico:
-- Variantes de un productoSELECT id, variant_name, sku_variant, price_adjustment, stock_quantity, attributesFROM product_variantsWHERE product_id = '<product_id>' AND is_active = true;
-- Precio final con variantesSELECT pv.variant_name, p.unit_price as precio_base, pv.price_adjustment as ajuste, (p.unit_price + pv.price_adjustment) as precio_finalFROM product_variants pvINNER JOIN products p ON p.id = pv.product_idWHERE p.id = '<product_id>';