Competidores y sus Valores (Stores)
Competidores y sus Valores (Stores)
Section titled “Competidores y sus Valores (Stores)”Los competidores permiten asignar tiendas competidoras a tus puntos de venta (stores). Puedes marcar uno o más competidores y designar cuál es el competidor principal (marker).
Section titled “Los competidores permiten asignar tiendas competidoras a tus puntos de venta (stores). Puedes marcar uno o más competidores y designar cuál es el competidor principal (marker).”Formato CSV (Archivos Planos)
Section titled “Formato CSV (Archivos Planos)”El campo de valores de competidores es una cadena de texto compuesta que permite múltiples competidores.
Estructura Básica
Section titled “Estructura Básica”{{Código del competidor}}:{{Valor booleano IsMarker}}Componentes:
- Código del competidor: Identificador único del competidor (ej:
COMP0001) - IsMarker (opcional):
truesi es el competidor principal,falseo ausente si no lo es
Ejemplos CSV
Section titled “Ejemplos CSV”Ejemplo 1: Un solo competidor (sin marcar como principal)
Section titled “Ejemplo 1: Un solo competidor (sin marcar como principal)”CompetitorValuesCOMP0001Resultado:
- Competidor:
COMP0001 - Es principal:
false(por defecto)
Ejemplo 2: Un competidor marcado como principal
Section titled “Ejemplo 2: Un competidor marcado como principal”CompetitorValuesCOMP0001;trueResultado:
- Competidor:
COMP0001 - Es principal:
true
Ejemplo 3: Múltiples competidores con uno principal
Section titled “Ejemplo 3: Múltiples competidores con uno principal”CompetitorValuesCOMP0001;true;COMP0002;false;COMP0003;falseResultado:
- Competidor:
COMP0001→ Es principal:true - Competidor:
COMP0002→ Es principal:false - Competidor:
COMP0003→ Es principal:false
Archivo CSV Completo de Ejemplo
Section titled “Archivo CSV Completo de Ejemplo”StoreCode|StoreName|CompetitorValuesSTORE001|Tienda Centro|COMP0001;trueSTORE002|Tienda Norte|COMP0001;true;COMP0002;falseSTORE003|Tienda Sur|COMP0001;false;COMP0002;false;COMP0003;trueInterpretación:
- STORE001: Tiene 1 competidor (COMP0001) que es el principal
- STORE002: Tiene 2 competidores, COMP0001 es el principal
- STORE003: Tiene 3 competidores, COMP0003 es el principal
Errores Comunes en CSV
Section titled “Errores Comunes en CSV”| ❌ Incorrecto | ✅ Correcto | Problema |
|---|---|---|
COMP0001 : true | COMP0001;true | Espacios alrededor de : |
COMP0001;true; | COMP0001;true | Termina con ; |
COMP0001,COMP0002 | COMP0001;COMP0002 | Usa , en lugar de ; |
Formato JSON (API REST)
Section titled “Formato JSON (API REST)”En las APIs REST, los competidores se encuentran anidados dentro del array CompetitorValues.
Estructura Básica
Section titled “Estructura Básica”"CompetitorValues": [ { "Code": "COMP0001", "IsMarker": true }]Propiedades:
- Code: Código del competidor
- IsMarker:
truesi es el competidor principal,falsesi no
Ejemplos JSON
Section titled “Ejemplos JSON”Ejemplo 1: Un solo competidor principal
Section titled “Ejemplo 1: Un solo competidor principal”{ "StoreCode": "STORE001", "StoreName": "Tienda Centro", "CompetitorValues": [ { "Code": "COMP0001", "IsMarker": true } ]}Ejemplo 2: Múltiples competidores
Section titled “Ejemplo 2: Múltiples competidores”{ "StoreCode": "STORE002", "StoreName": "Tienda Norte", "CompetitorValues": [ { "Code": "COMP0001", "IsMarker": true }, { "Code": "COMP0002", "IsMarker": false }, { "Code": "COMP0003", "IsMarker": false } ]}Interpretación:
- COMP0001 es el competidor principal
- COMP0002 y COMP0003 son competidores secundarios
Request Completo de Ejemplo (POST)
Section titled “Request Completo de Ejemplo (POST)”POST /api/storesContent-Type: application/jsonAuthorization: Bearer {token}
{ "StoreCode": "STORE003", "StoreName": "Tienda Shopping Las Palmas", "Address": "Av. Principal 123", "City": "Buenos Aires", "CompetitorValues": [ { "Code": "WALMART-001", "IsMarker": true }, { "Code": "CARREFOUR-002", "IsMarker": false }, { "Code": "DIA-003", "IsMarker": false } ]}Comparativa CSV vs JSON
Section titled “Comparativa CSV vs JSON”Misma información en ambos formatos
Section titled “Misma información en ambos formatos”CSV:
StoreCode|CompetitorValuesSTORE001|COMP0001;true;COMP0002;false;COMP0003;falseJSON:
{ "StoreCode": "STORE001", "CompetitorValues": [ { "Code": "COMP0001", "IsMarker": true }, { "Code": "COMP0002", "IsMarker": false }, { "Code": "COMP0003", "IsMarker": false } ]}Casos de Uso
Section titled “Casos de Uso”Retail: Asignar Competencia Local
Section titled “Retail: Asignar Competencia Local”Tienda ubicada en un centro comercial con 3 competidores cercanos:
{ "StoreCode": "STORE-MALL-001", "StoreName": "Mi Tienda - Mall Center", "CompetitorValues": [ { "Code": "ZARA-MALL", "IsMarker": true }, { "Code": "HM-MALL", "IsMarker": false }, { "Code": "UNIQLO-MALL", "IsMarker": false } ]}CSV equivalente:
StoreCode|CompetitorValuesSTORE-MALL-001|ZARA-MALL;true;HM-MALL;false;UNIQLO-MALL;falseSupermercados: Competencia Directa
Section titled “Supermercados: Competencia Directa”{ "StoreCode": "SUPER-NORTE-01", "StoreName": "Supermercado Norte", "CompetitorValues": [ { "Code": "CARREFOUR-NORTE", "IsMarker": true }, { "Code": "DIA-NORTE", "IsMarker": false } ]}CSV equivalente:
SUPER-NORTE-01|CARREFOUR-NORTE;true;DIA-NORTE;falseReglas de Negocio
Section titled “Reglas de Negocio”Competidor Principal (IsMarker = true)
Section titled “Competidor Principal (IsMarker = true)”Recomendaciones
Section titled “Recomendaciones”- ✅ Solo un competidor principal por tienda (aunque el sistema permite múltiples)
- ✅ El competidor principal debe ser el más relevante estratégicamente
- ✅ Puedes tener hasta N competidores secundarios (sin límite técnico)
- ✅ Los competidores deben estar previamente registrados en el sistema
Validación Pre-Envío
Section titled “Validación Pre-Envío”Checklist antes de enviar
Section titled “Checklist antes de enviar”- Los códigos de competidores existen en el sistema Prisma
- Solo hay un competidor con
IsMarker: truepor tienda (recomendado) - No hay espacios alrededor de
:(CSV) - Se usa
;como separador (CSV) - No termina con
;(CSV) - El JSON está bien formado (API)
Solución de Problemas
Section titled “Solución de Problemas”Error: “Competitor not found”
Section titled “Error: “Competitor not found””Causa: El código del competidor no existe en Prisma
Solución:
- Verifica que el competidor esté creado en el sistema
- Revisa que el código sea exactamente el mismo (case-sensitive)
- Solicita la lista de competidores disponibles
Error: “Invalid boolean value”
Section titled “Error: “Invalid boolean value””Causa CSV: El valor booleano no es true o false
Solución:
❌ COMP0001;yes❌ COMP0001;1✅ COMP0001;true✅ COMP0001;falseAdvertencia: “Multiple markers detected”
Section titled “Advertencia: “Multiple markers detected””Causa: Hay más de un competidor con IsMarker: true
Solución: Revisa tu lógica de negocio. Generalmente, solo debe haber un competidor principal.
// ⚠️ Poco común pero válido"CompetitorValues": [ { "Code": "COMP0001", "IsMarker": true // Principal }, { "Code": "COMP0002", "IsMarker": true // ¿También principal? }]
// ✅ Recomendado"CompetitorValues": [ { "Code": "COMP0001", "IsMarker": true // Principal }, { "Code": "COMP0002", "IsMarker": false // Secundario }]Ejemplos de Código
Section titled “Ejemplos de Código”Python: Generar formato CSV
Section titled “Python: Generar formato CSV”def format_competitors_csv(competitors): """ Genera string de competidores en formato CSV competitors: lista de tuplas (code, is_marker) """ parts = [] for code, is_marker in competitors: if is_marker: parts.append(f"{code};true") else: parts.append(code) return ";".join(parts)
# Usocompetitors = [ ("COMP0001", True), # Principal ("COMP0002", False), # Secundario ("COMP0003", False) # Secundario]
result = format_competitors_csv(competitors)print(result)# Output: COMP0001;true;COMP0002;COMP0003Python: Generar formato JSON
Section titled “Python: Generar formato JSON”def format_competitors_json(competitors): """ Genera array de competidores en formato JSON competitors: lista de tuplas (code, is_marker) """ return [ {"Code": code, "IsMarker": is_marker} for code, is_marker in competitors ]
# Usocompetitors = [ ("WALMART-001", True), ("CARREFOUR-002", False)]
import jsonresult = format_competitors_json(competitors)print(json.dumps(result, indent=2))Output:
[ { "Code": "WALMART-001", "IsMarker": true }, { "Code": "CARREFOUR-002", "IsMarker": false }]Actualizar Competidores
Section titled “Actualizar Competidores”Reemplazar completamente
Section titled “Reemplazar completamente”Cuando envías una actualización, reemplazas completamente la lista de competidores:
// Estado actual"CompetitorValues": [ {"Code": "COMP0001", "IsMarker": true}]
// Envías actualización"CompetitorValues": [ {"Code": "COMP0002", "IsMarker": true}, {"Code": "COMP0003", "IsMarker": false}]
// Resultado: COMP0001 fue removido, se agregaron COMP0002 y COMP0003Recursos Relacionados
Section titled “Recursos Relacionados”- Etiquetas y sus Valores - Formato similar para etiquetas
- Códigos y sus Valores - Formato similar para códigos
- Formatos de Archivos - Especificaciones generales
- Autenticación API REST - Cómo autenticarte en la API
Soporte
Section titled “Soporte”¿Necesitas ayuda con los competidores?
- 📧 Contacta al equipo de soporte
- 🔍 Solicita la lista de competidores disponibles
- 📋 Envía ejemplos para validación
- 🏪 Consulta sobre estrategias de asignación de competidores