# Datos de proveedores en Ergonode, mapeados visualmente

Ergonode solo ofrece GraphQL, y cada tipo de atributo tiene su propia mutación tipada. SDM Portal sabe cuál usar, escribe tus variantes en el orden que Ergonode exige y repite las mismas reglas en cada archivo que envía ese proveedor.

Versión web: https://sdmportal.com/es/ergonode/

## La conexión

- **Protocolo:** Solo GraphQL, /api/graphql/
- **Autenticación:** API key en una cabecera X-API-KEY
- **Estructura:** Plantilla
- **Escritura:** Mutaciones GraphQL con alias, 25 operaciones por petición
- **Variantes:** Primero los simple products, después el variable product con bindings
- **Delta sync:** Hash por operación de escritura

## Dónde se atasca de verdad un feed de proveedor en Ergonode

### Cada tipo tiene su propia mutación

Text, numeric, select, multi select, unit, price y relation necesitan cada uno una mutación tipada distinta. Si envías un valor por la equivocada, Ergonode responde con un error desconocido y sin detalle.

### Las variantes necesitan un orden

Los hijos tienen que existir antes de que el variable product pueda vincularlos. Si el orden falla, los bindings fallan.

### El estado es un grafo, no un campo

Ergonode valida las transiciones de workflow en el servidor, así que no puedes fijar sin más el estado que quieres desde donde esté el producto ahora.

## Cómo escribe SDM Portal en Ergonode

### Mapeo por plantilla

Elige la plantilla y el panel de atributos se limita a sus atributos. Las plantillas no llevan nombre visible en la API, así que el selector muestra el código de la plantilla. El SKU integrado no forma parte del flujo de atributos, así que se añade un campo llamado esa_sku y mapeas el SKU como cualquier otra columna.

### Escrituras tipadas, resueltas en vivo

Text, textarea y date salen como string, numeric, price y unit como float, select como código de opción, multi select como lista de códigos de opción y relation como lista de SKU. El tipo viene de tu catálogo en vivo, no de la forma del valor, así que un número de artículo que parece numérico sigue llegando como texto.

### Valores por locale

La locale es una propiedad de la conexión que dibujas. Tres columnas de descripción alimentan un atributo en tres idiomas, y el idioma de la ejecución decide el valor por defecto.

### Variantes con ejes y bindings

Marca en las columnas de origen una parent key, uno o varios ejes de variante y el SKU de variante. Primero se crean los simple products y después el variable product con sus bindings, que es el orden que Ergonode exige. Los valores de eje que pasan por un ValueMap siguen resolviéndose en códigos de binding.

### Estado de workflow por el camino más corto

Como Ergonode impone el grafo de transiciones, se calcula el camino más corto desde el estado actual del producto hasta el que has mapeado y se recorre paso a paso en lugar de fijarse de un salto.

### Categorías de varias taxonomías

Un flujo puede contener más de un nodo de taxonomía. Cada uno mapea un valor de origen a una categoría, y un producto recibe la unión sin duplicados de todo lo que se resolvió, en una sola llamada de categorías.

### Opciones, creadas y enriquecidas

Las opciones que faltan se crean con un código corto sugerido, en minúsculas, que puedes editar valor por valor. Los custom fields de opción de tipo text, textarea y rich text pueden rellenarse desde otras columnas de la misma fila, así que el texto largo de cuidados acaba en un custom field mientras la opción conserva un nombre legible. Los nombres de opción se limitan a 255 caracteres.

### Atributos nuevos desde el editor

Crea atributos de tipo text, textarea, numeric, date, select, multi select, unit, price y relation desde el lienzo. Ergonode no tiene una API para añadir un atributo a una plantilla, así que un atributo creado vale para toda la instancia y lo añades a la plantilla dentro de Ergonode. El editor te lo indica en el momento en que creas uno.

### Lotes que sobreviven a una celda mala

Las escrituras salen como mutaciones GraphQL con alias, 25 operaciones por petición, con pausas. Un solo valor rechazado puede hacer fallar todo un documento agrupado, así que un lote en el que todas las operaciones fallaron con el mismo error se reintenta operación por operación. Solo falla el culpable real, y el detalle de validación de Ergonode aparece en la fila.

### Los fallos leves siguen siendo leves

Un valor como nvt en un atributo numérico se omite con un aviso que nombra el SKU. Un valor duplicado en un atributo único, como un código aduanero compartido, se registra como omisión en lugar de hacer fallar el producto. Una relación a un SKU que todavía no existe se elimina de esa escritura y se nombra en el aviso, así que el resto de la relación sí llega.

## Qué podemos escribir en Ergonode

Select y multi select se mapean a códigos de opción, y las opciones que faltan pueden crearse y enriquecerse. Un atributo de precio es un único float cuya divisa se configura en el propio atributo dentro de Ergonode, y un atributo unit lee su símbolo del atributo.

- Texto
- Textarea
- Numeric
- Fecha
- Select
- Multi select
- Unit
- Price
- Relación de productos
- Categorías
- Estado de workflow
- Bindings de variante

## Lo que el conector de Ergonode todavía no hace

### Imágenes, galerías, archivos (no escribible)

Los atributos de medios son visibles en el panel pero no se escriben. Los custom fields de opción de tipo image se filtran por el mismo motivo.

### Precios (una sola divisa)

Un atributo de precio de Ergonode contiene un float y su divisa se configura en el propio atributo dentro de Ergonode. La divisa por conexión, donde varias columnas se unen en una colección, es una función de Akeneo.

### Grouping products (fuera de alcance)

Solo simple products y variable products. Los grouping products no se crean.

### Añadir un atributo a una plantilla (paso manual)

Ergonode no tiene una API para eso. Un atributo creado desde el editor existe en toda la instancia, y lo añades a la plantilla dentro de Ergonode antes de que aparezca en el panel filtrado.

### Nombres de opción de más de 255 caracteres (límite de la api)

Ergonode rechaza los nombres de opción más largos con un error opaco, así que los nombres se recortan a 255. Pon el texto completo en un custom field de la opción.

### Nombres de plantilla (cosmético)

La API de Ergonode no devuelve un nombre visible para una plantilla, así que los selectores y los avisos muestran el código de la plantilla.

## FAQ

### ¿Cómo se conecta SDM Portal a Ergonode?

Ergonode solo expone GraphQL, en /api/graphql/. Añades la URL de la instancia y una API key, que se envía como cabecera X-API-KEY, y la conexión se verifica con un handshake real. La key se almacena cifrada y nunca forma parte de un mapeo exportado.

### ¿Gestiona SDM Portal las variantes de Ergonode?

Sí. Marcas en las columnas de origen la parent key, los ejes de variante y el SKU de variante. Primero se crean los simple products y después el variable product con sus bindings, que es el orden que Ergonode exige. Los valores de eje que pasan por un ValueMap siguen resolviéndose en códigos de binding.

### ¿Puede fijar el estado de workflow de Ergonode?

Sí. Ergonode valida las transiciones de estado en el servidor, así que SDM Portal calcula el camino más corto desde el estado actual del producto hasta el que has mapeado y lo recorre paso a paso.

### ¿Cómo evita una celda mala que falle todo un lote?

Las escrituras se agrupan como mutaciones GraphQL con alias, 25 operaciones por petición. Un único valor rechazado puede hacer fallar todo el documento agrupado, así que un lote en el que todas las operaciones fallaron con el mismo error se reintenta operación por operación. Solo falla el culpable real, y el motivo que devolvió Ergonode aparece en la fila.

### ¿Una segunda ejecución vuelve a enviar todo?

No. Cada escritura se hashea por operación, así que volver a ejecutar un archivo sin cambios informa de los productos como sin cambios y no escribe nada. Para las veces en las que sí quieres volver a enviar todo, existe una resincronización completa forzada.

## Empezar

Prueba gratis 14 días: https://app.sdmportal.com/signup?lang=es

Otros PIM: https://sdmportal.com/es/ergonode/ · https://sdmportal.com/es/akeneo/ · https://sdmportal.com/es/pimcore/

SDM Portal.
