Saltar a contenido

Integración por Lotes (Batch) de Atributos de Producto

Introducción

Esta sección describe la interfaz de carga de atributos de producto para la integración por lotes (batch) en la Tol.

Los atributos de producto permiten añadir información adicional a los productos más allá de las características básicas que se gestionan a través de la carga estándar de surtido. Estos atributos se definen a nivel de producto, pero pueden tener valores específicos para una tienda preparadora o idioma, lo que permite una gran flexibilidad en la gestión de la información del producto.

Definición

La interfaz permite realizar altas, modificaciones y bajas de atributos de producto. Las bajas se gestionan a través del backend de la aplicación.

Validaciones por Artículo

Al procesar la carga de atributos, se realizan las siguientes validaciones:

  • Si el producto no está dado de alta en la TOL, no se darán de alta los atributos y se escribirá un error en la tabla de errores de carga.
  • Si el identificador de un atributo no existe en la tabla de atributos, no se insertará y se escribirá un error en la tabla de errores de carga.

Atributos

Los identificadores de atributos se definen en el back-office de la TOL. Estos identificadores se utilizan para la carga de atributos en la plataforma.

También es posible configurar validaciones a través de expresiones regulares para asegurar la integridad de los datos.

Tienda Preparadora

Un atributo puede tener valores diferentes en función de la tienda preparadora. Si no se especifica una tienda preparadora, el atributo se aplicará a todas las tiendas.

En caso de que un atributo tenga valores definidos tanto para una tienda preparadora específica como para la tienda preparadora por defecto, prevalecerá el valor más restrictivo (el de la tienda preparadora específica).

Ejemplo:

  • Tienda preparadora "0001": Atributo "nutriscore" = "A"
  • Tienda preparadora por defecto: Atributo "nutriscore" = "B"

En este caso, el producto en la tienda preparadora "0001" tendrá el atributo "nutriscore" = "A", mientras que en el resto de tiendas preparadoras tendrá "nutriscore" = "B".

Idiomas

Los valores de los atributos pueden cargarse por idioma. Si no se especifica un idioma, el valor se aplicará a todos los idiomas.

Si un atributo tiene un valor definido para un idioma específico y también para el idioma por defecto, prevalecerá el valor más restrictivo (el del idioma específico).

Interfaz

Acción

Alta

Realiza el alta del atributo en el sistema.

Es obligatorio informar todos los campos obligatorios.

Si se intenta dar de alta un atributo que ya existe, se modificará su valor.

  • Gestión de errores

Si el producto está dado de baja en la TOL, se generará un error de tipo warning, pero se ejecutará la acción.

Si el identificador de un atributo no existe en la tabla, no se insertará y se escribirá un error en la tabla de errores de carga.

Mensaje Descripción
El producto con código [{0}] no existe El código del producto, “productCode”, no existe en BBDD
El atributo [{0}] del producto [{1}] no existe El código del atributo, “code” no existe ó esta desactivado en BBDD
zona [{0}] no existe La tienda preparadora, “zoneId”, no existe ó esta desactivada en BBDD.
Idioma [{0}] no soportado en el atributo [{1}] del producto [{2}] El idioma,”lang”, no existe ó está desactivado.
El atributo [{0}] del producto [{1}] no tiene informado el valor El valor, “values”, no tiene valor asignado
El valor [{0}] del atributo [{1}] del producto [{2}] no cumple la expresión regular [{3}] El valor, “values”, no cumple con el patrón del atributo
El valor [{0}] del atributo [{1}] del producto [{2}] no es un número El valor, “values”, no es un numero según el atributo.
El valor [{0}] del atributo [{1}] del producto [{2}] es menor que el mínimo [{3}] El valor, “values”, si es un número no puede ser menor al valor minimo del atributo
El valor [{0}] del atributo [{1}] del producto [{2}] es mayor que el máximo [{3}] El valor, “values”, si es un número no puede ser menor al valor mayor del atributo
El valor [{0}] del atributo [{1}] del producto [{2}] no es un booleano El valor, “values”, si es un booleano debe ser “true” ó “false”

Baja

Realiza el borrado físico del atributo en el sistema.

Es obligatorio informar todos los campos obligatorios.

  • Gestión de errores

Si se intenta dar de baja un atributo que no existe en el sistema, se escribirá un error en la tabla de errores de carga.

Mensaje Descripción
El producto con código [{0}] no existe El código del producto, “productCode”, no existe en BBDD
El atributo [{0}] del producto [{1}] no existe El código del atributo, “code” no existe ó esta desactivado en BBDD
zona [{0}] no existe La tienda preparadora, “zoneId”, no existe ó esta desactivada en BBDD.
Idioma [{0}] no soportado en el atributo [{1}] del producto [{2}] El idioma,”lang”, no existe ó está desactivado.

Nomenclatura del fichero

El archivo tendrá el siguiente nombre: “prefijo_Nombrefichero”, donde:

  • Prefijo: Prefijo a definir en cada instalación. Por defecto es “producto_atributos”
  • NombreFichero: A definir por el cliente en la instalación, p.ej . AAAAMMDDHHmmss

Adicionalmente, se puede definir que la carga del archivo se ejecute teniendo en cuenta la existencia de un archivo de semáforo para asegurar que el archivo de surtido está completo.

El archivo de semáforo tendrá el siguiente nombre “prefijosemaforoprefijo_AAAAMMDDHHmmss

  • Prefijosemaforo: texto configurable en cada instalación

El fichero deberá estar en formato UTF-8 sin BOM

  • Planificación del proceso

Normalmente, este proceso se ejecutará automáticamente al finalizar la carga de surtido, pero se podrá configurar según necesidad desde el gestor de cargas.

El proceso recogerá el archivo JSON desde una carpeta del servidor de archivos definido y una vez procesado lo moverá a una carpeta de archivos procesados

Las carpetas de lectura y de archivos procesados son configurables en cada instalación.

El proceso se puede lanzar de forma manual desde el back-office.

El proceso envía un email con el resultado de la ejecución a la cuenta de correo definida en la instalación.

Image

Formato del archivo JSON

El archivo JSON tendrá la estructura siguiente:

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.
Producto atributos “products” Lista con la información de los producto atributos Lista del Tipo Producto Atributo Sí

Tipo Producto Atributo

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.
Acción “action” Acción a realizar: A: Alta/Modificación/Borrar Literal (1 Carácter): “A” ó “M” No
Código “productCode” Código interno del producto en los sistemas del cliente Literal (10 caracteres máx.) Sí
Tipo de atributo “code” Código del atributo definido en la configuración Literal (50 caracteres máx.) Sí
Id de la zona “zoneId” Id de la tienda preparadora del articulo Si no se informa (‘’) el atributo aplicara a todas las tiendas. Literal (20 caracteres máx.) No
Id del idioma “lang” Idioma del atributo Si no se informa (‘’) el atributo aplicará a todos los idiomas. Literal (2 caracteres máx.) No
Listado de valores “values” Listado de los valores del atributo. Si no es de tipo lista, tan solo hay que agregar un valor. Lista de Tipo String Sí

ANEXOS. Ejemplos json

Alta/modificación con tienda preparadora e idioma por defecto

{
  "products": [
    {
      "action": "A",
      "productCode": "317784",
      "code": "filter.text.wine-type",
      "values": ["Generosos"]
    },
    {
      "action": "A",
      "productCode": "317784",
      "code": "filter.text.wine-pairing",
      "values": ["Aperitivos"]
    }
  ]
}

Alta/modificación con tienda preparadora e idioma

{
  "products": [
    {
      "action": "A",
      "productCode": "317784",
      "code": "filter.text.wine-type",
      "lang": "en",
      "values": ["General"]
    },
    {
      "action": "A",
      "productCode": "317784",
      "code": "filter.text.wine-pairing",
      "lang": "es",
      "values": ["Aperitivos"]
    },
    {
      "action": "A",
      "productCode": "317784",
      "code": "filter.text.wine-pairing",
      "lang": "es",
      "zoneId": "174",
      "values": ["Aperitivos de la Tierra"]
    }
  ]
}

Baja de atributos

{
  "products": [
    {
      "action": "B",
      "productCode": "317784",
      "code": "filter.id.eco",
      "values": [""]
    },
    {
      "action": "B",
      "productCode": "317784",
      "code": "filter.id.eco",
      "lang": "es",
      "values": [""]
    },
    {
      "action": "B",
      "productCode": "317784",
      "code": "filter.id.eco",
      "zoneId": "",
      "values": [""]
    },
    {
      "action": "B",
      "productCode": "317784",
      "code": "filter.id.eco",
      "zoneId": "174",
      "values": [""]
    },
    {
      "action": "B",
      "productCode": "317784",
      "code": "filter.id.eco",
      "lang": "es",
      "zoneId": "174",
      "values": [""]
    }
  ]
}

Atributos reconocidos por la plataforma

Además de los atributos que cada instalación pueda definir en el back-office, la plataforma reconoce los siguientes códigos de atributo (code) con un significado específico:

Código (code) Tipo de valor Descripción
filter.id.eco Booleano (true/false) Marca el producto como ecológico.
filter.id.brand.distributor Booleano Marca el producto como marca propia del distribuidor.
filter.id.glutenFree Booleano Indica que el producto es sin gluten.
filter.id.localMarket Booleano Marca el producto como producto de mercado/local.
filter.id.novelty Booleano Marca el producto como novedad.
filter.id.nutriscore Texto (A–E) Valor Nutriscore del producto.
product.gross.weight Número (kg) Peso bruto del producto. Se utiliza para el cálculo del coste de envío por peso.
product.net.weight Número (kg) Peso neto del producto. Informativo.

Gestión de versiones

Versión Cambios
25.0 Importación inicial
25.3 Eliminación versionJ