TODO: Gestión de Variantes de Productos

Funcionalidades Pendientes

1. Añadir Variantes a Productos Existentes

Descripción:

Permitir agregar nuevas variantes a productos ya creados desde el drawer de variantes.

Casos de Uso:

  • Expansión de línea de producto (agregar nuevas tallas/colores)
  • Corrección de inventario (agregar variantes faltantes)
  • Productos sincronizados de Shopify que necesitan variantes locales
  • Inventario local especial para tienda física

Implementación:

Frontend (apps/app/.../products/components/)

  • Agregar botón "+ Añadir Variante" en header del drawer
  • Crear formulario AddVariantForm.tsx con campos:
    • Nombre/título de la variante
    • SKU (con validación de unicidad)
    • Barcode
    • Precio
    • Costo
    • Opciones (talla, color, material, etc.)
    • Estado inicial (ACTIVE/DRAFT)
  • Si producto tiene shopifyProductId: mostrar warning
  • Crear action createVariantAction en products/actions.ts
  • Agregar traducciones (ES/EN)

Backend (apps/api/src/modules/tenant/)

  • Validar que el producto exista
  • Validar unicidad de SKU en el tenant
  • Crear variante en BD local
  • Crear registros de inventario por cada branch
  • Emitir evento variant.created

Integración Shopify (FUTURO - Prioridad Media)

Complejidad: Alta | Estimación: 2-3 días

  • Implementar addVariantToProduct() en shopify-product.adapter.ts
  • Usar mutación GraphQL productVariantCreate
  • Crear InventoryItem en Shopify
  • Configurar InventoryLevel para location
  • Sincronizar IDs de vuelta a BD local
  • Manejar estrategia multi-branch → single location de Shopify
  • Agregar toggle en settings: "Sincronizar variantes con Shopify"

2. Editar Variantes Existentes

Descripción:

Permitir editar datos básicos de variantes ya creadas.

Campos Editables:

  • Nombre/título de la variante
  • SKU (con validación)
  • Barcode
  • Precio
  • Costo
  • Opciones (talla, color, etc.)
  • Estado (ACTIVE/DRAFT/ARCHIVED)

Implementación:

Frontend (apps/app/.../products/components/)

  • Agregar botón "Editar" (ícono lápiz) en cada fila de variante
  • Crear formulario EditVariantForm.tsx (puede reutilizar campos de AddVariantForm)
  • Si variante tiene shopifyVariantId: mostrar warning
  • Crear action updateVariantAction en products/actions.ts
  • Agregar traducciones (ES/EN)

Backend (apps/api/src/modules/tenant/)

  • Validar que la variante exista
  • Validar unicidad de SKU (si cambió)
  • Actualizar variante en BD local
  • Emitir evento variant.updated

Integración Shopify (FUTURO - Prioridad Media)

Complejidad: Media | Estimación: 1-2 días

  • Implementar updateVariant() en shopify-product.adapter.ts
  • Usar mutación GraphQL productVariantUpdate
  • Actualizar datos en Shopify
  • Mantener consistencia de inventario
  • Agregar toggle en settings: "Sincronizar cambios con Shopify"

Tareas Adicionales Relacionadas

3. Gestión de Opciones de Producto

  • Permitir crear/editar opciones del producto (talla, color, material)
  • Validar que variantes tengan combinaciones únicas de opciones
  • Sincronizar opciones con Shopify (si aplica)

4. Inventario Multi-Branch

  • Al crear variante: inicializar inventario en todas las branches
  • Permitir configurar inventario inicial por branch
  • Manejar estrategia de qué branch es "master" para Shopify

5. Validaciones y UX

  • Validar que SKU sea único en el tenant
  • Validar que barcode sea único (opcional)
  • Preview de cómo se verá la variante antes de crearla
  • Confirmación al editar variantes con inventario existente

Prioridades

Funcionalidad Prioridad Complejidad Estimación
Añadir Variante (Local) Alta Baja 4-6 horas
Editar Variante (Local) Alta Baja 3-4 horas
Añadir Variante → Shopify Media Alta 2-3 días
Editar Variante → Shopify Media Media 1-2 días
Gestión de Opciones Baja Media 1 día

Checklist de Implementación

Fase 1: Funcionalidad Local (Sprint 1)

  • Diseñar y validar UX con equipo
  • Implementar botón "Añadir Variante"
  • Implementar botón "Editar Variante"
  • Crear formularios con validaciones
  • Agregar traducciones
  • Testing E2E
  • Documentar en README

Fase 2: Integración Shopify (Sprint 2-3)

  • Investigar limitaciones de Shopify API
  • Implementar adapters de Shopify
  • Manejar casos edge (multi-branch → single location)
  • Agregar toggles de configuración
  • Testing de sincronización
  • Documentar estrategia de inventario

Última actualización: 2025-01-13

Responsable: Equipo de Desarrollo ThreeTrackr