Productos con Variantes
Las variantes permiten ofrecer un producto en diferentes tallas, colores o configuraciones.Estructura de Variantes
Las variantes se guardan en el campovariants (JSON) de la tabla products:
Crear Variantes
Edita un producto existente
Desde el dashboard de productos, haz clic en “Editar” sobre el producto que quieres variantizar.
Haz clic en 'Agregar variantes'
Verás un modal para configurar variantes.Tipo de variante: Talla, Color, Material, Capacidad (o personalizado)
Define cada variante
Ejemplo para una camisa:
El modificador de precio se suma al precio base del producto.Ejemplo:
| Nombre | Modificador de precio | Stock |
|---|---|---|
| S | +0 REF | 10 |
| M | +0 REF | 15 |
| L | +2 REF | 8 |
| XL | +3 REF | 5 |
- Precio base: 25 REF
- Talla L: 25 + 2 = 27 REF
- Talla XL: 25 + 3 = 28 REF
Variantes Extras (Plan Anual)
Solo disponible en Plan Anual de SYNTIcat.
Sistema de Carrito
Flujo del Carrito
Cliente navega el catálogo
Ve productos con imágenes, precios y badges.URL pública:
https://{subdomain}.syntiweb.comAgrega productos al carrito
Haz clic en “Agregar al carrito” sobre un producto.Si tiene variantes, primero selecciona la variante deseada.El carrito se guarda en localStorage del navegador:
Drawer lateral del carrito
Al agregar un producto, se abre un drawer lateral mostrando:
- Productos agregados
- Cantidades
- Subtotal por producto
- Total general
- Cambiar cantidad
- Eliminar productos
- Continuar comprando
- Proceder al checkout
Checkout y Generación de Orden
Envía el formulario
Endpoint:Controlador:
CheckoutController::store()El sistema:- Valida datos del cliente
- Calcula total con tasa BCV actual
- Genera código de orden SC-XXXX (Shopping Cart)
- Guarda en tabla
orders - Retorna mensaje formateado para WhatsApp
Formato del código SC
Generación del código (CheckoutController.php):El código es único y se usa para rastreo del pedido.
Planes y Funcionalidades del Carrito
SYNTIcat Features por Plan:
| Feature | Básico ($9) | Semestral ($39) | Anual ($69) |
|---|---|---|---|
| Productos | 20 | 100 | Ilimitado |
| Carrito completo | ✗ | ✅ | ✅ |
| Código SC-XXXX | ✗ | ✅ | ✅ |
| Variantes (talla/color) | ✅ | ✅ | ✅ |
| Extras/opciones | ✗ | ✗ | ✅ |
- Solo catálogo visual
- Botón “Consultar precio” → WhatsApp simple
- Sin carrito ni checkout
- Carrito completo con drawer
- Generación de código SC-XXXX
- Checkout con formulario
- Mensaje estructurado a WhatsApp
Gestión de Órdenes (Dashboard)
Accede a 'Órdenes'
Desde el dashboard del negocio, ve a la pestaña Órdenes.Solo visible para Plan Semestral y Anual de SYNTIcat.
Lista de pedidos
Verás tabla con:Controlador:
- Código (SC-XXXX)
- Cliente
- Total
- Fecha y hora
- Estado (pendiente, procesando, completado, cancelado)
OrdersController::index()Detalles del pedido
Haz clic en un pedido para ver:
- Productos con cantidades y variantes
- Datos del cliente
- Dirección de entrega
- Notas adicionales
- Histórico de estados
Badges de Productos
Los badges son etiquetas visuales sobre las imágenes:- hot → Producto popular (ícono de fuego)
- new → Producto nuevo (ícono de estrella)
- promo → En promoción (ícono de etiqueta)
Configuración de Moneda
El catálogo soporta los mismos modos de moneda que SYNTIstudio:- reference_only → Solo REF
- bolivares_only → Solo Bs (con tasa BCV)
- both_toggle → Toggle automático REF/Bs
- hidden → Sin precios (solo “Consultar”)
Ejemplo Completo: Tienda de Ropa
Producto 1: Camisa Polo
Producto 2: Jeans
Flujo de Compra
- Cliente navega
tutienda.syntiweb.com - Agrega:
- 1x Camisa polo (Talla L, Azul marino) → 27 REF
- 1x Jeans (Talla 32, Negro) → 40 REF
- Total carrito: 67 REF
- Procede al checkout:
- Nombre: Juan Pérez
- Dirección: Parque Central, Caracas
- Sistema genera: SC-H8K3
- Mensaje a WhatsApp con resumen completo
- Dueño de tienda ve orden en dashboard y confirma por WhatsApp
Rutas de la API
| Acción | Método | Endpoint |
|---|---|---|
| Ver catálogo público | GET | /{subdomain} |
| Crear orden | POST | /{subdomain}/checkout |
| Listar órdenes (dashboard) | GET | /tenant/{tenantId}/orders |
| Ver detalle de orden | GET | /tenant/{tenantId}/orders/{orderId} |