Saltar a contenido

Manual integración producto precios

Introducción

Este documento describe la interfaz para la carga de precios de productos en el sistema TOL.

El precio de un producto está asociado a un canal y una tienda preparadora.

En esta integración, se contempla la posibilidad de establecer precios por volumen, así como la vigencia de los precios.

Definición

La interfaz permite altas, modificaciones y bajas de los precios de los productos ya existentes en el sistema.

Precio Base

Se entiende como precio base al precio que se define desde 0 unidades y con un intervalo de vigencia. Es el registro mínimo de precio para que se muestre en la Tienda.

Si un producto no tiene un registro de precio valido, se mostrará en la tienda, pero no podrá añadirse al carrito.

Precio por volumen

Es posible definir diferentes precios en función de las unidades de un producto

Para activar esta funcionalidad deberán cargarse registros con los diferentes tramos de precio y su correspondiente vigencia.

Ejemplo:

  • Precio base: 1,00€
  • Precio desde 4 unidades: 3,00€
  • Precio desde 8 unidades: 2,50€

Image

Prevalencia de precio

En el caso que se definan varios precios para las mismas unidades el precio valido para una fecha concreta se calculara de la siguiente forma:

  • 1ª prioridad: registro con “fecha de validez hasta” más próxima a la fecha actual.
  • 2ª prioridad: registro con “fecha de validez desde” más próxima a la fecha actual
  • 3ª prioridad: registro con fecha de creación o modificación más reciente.

Validaciones por artículo

Para que se aplique alguna acción debe cumplir las siguientes condiciones:

  • El artículo debe existir en la TOL.
  • La tienda preparadora debe existir en la TOL.

Si no se cumplen alguna de estas condiciones el registro no se procesara y se registrará error en la tabla de logs.

Interfaz

Acción:

Alta/Modificación:

Realiza el alta/modificación del precio en el sistema.

  • Gestión de errores

Si el producto

El parámetro incremental puede ser [0 ó 1]:

  • 0 -> Desactivamos todos los tramos incluidos el base que tenga el producto e insertamos los nuevos que nos llega por la carga
  • 1 -> Hace la acción de insertado si no existe y actualiza si existe el precio del artículo.

Baja:

La acción baja hace una baja lógica actualizando la “fechaHasta” con la fecha actual. De esta forma no será visible en la tienda para el cliente final.

Nomenclatura del fichero

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

  • Prefijo: Prefijo a definir en cada instalación. Por defecto es “precios”
  • 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 ftp 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.

Formato del archivo JSON

El archivo JSON tendrá la estructura siguiente:

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.[M] Oblig [B]
Surtido “surtido” Lista con la información de producto y precios Lista del Tipo Surtido Sí Sí

Tipo Producto Surtido

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.[M] Oblig. [B]
Zonas “zonas” Lista de tiendas preparadoras a las que pertenece el surtido Lista de Tipo Código Zona Sí Sí
Canal “canal” Canal al que pertenece el producto Numérico entero Sí Sí
Acción “accion” baja o modificación Literal (1 carácter) “B” o “M” Sí Sí
Código producto “codigo” Código interno del producto en los sistemas del cliente Literal (10 caracteres máx.) Sí Sí
Incremental “incremental” Incremental influye en la acción [M]: “0” -> se ejecuta primero la baja y luego la inserción “1” -> se actualiza si existe en el sistema, en caso contrario, se insertará. Número entero “0” o “1” Sí No
Precios “precios” Precios del producto. Lista de Tipo Moneda Sí No

Tipo código zona

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.[M] Oblig. [B]
Código “codigo” Código que identifica distintivamente la tienda preparadora. Numérico entero Sí Sí

Lista de Tipo Moneda

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.[M] Oblig. [B]
Divisa “divisa” Código que identifica la divisa (ISO-4217) Literal (3 caracteres máx.) Sí No
Precio “precio” PVP del producto. Precio con IVA. Decimal (10,5) Sí No
Precio Unitario “precioUnitario” Precio unitario del producto. En función de la “Unidad de Medida Precio Unitario” Este dato es meramente informativo. Decimal (10,5) Sí No
Desde unidades “desdeUnidades” Unidades a partir de las que aplica el precio Decimal (10,5) Sí No
Fecha desde “fechaDesde” Fecha y hora inicio validez del precio Fecha (dd/mm/aaaa HH:mm) Sí No
Fecha hasta “fechaHasta” Fecha y hora fin de validez del precio Fecha (dd/mm/aaaa HH:mm) Sí No

ANEXOS

Listado de errores

Gestión de errores generales [M y B]

Mensaje Descripción
El producto con código {0} no existe/no habilitado. El código del producto, “codigo”, existe/no habilitado en el sistema.
Error, El canal {0} no existe/no habilitado. El canal informado no existe/no habilitado en el sistema.
Error, en el producto con código: {0} no tiene canal asignado. No se ha informado el canal.
Acción desconocida para el producto con código {0}. La acción informada no existe. debe ser [“M” o “B”]
Error, en el producto con código: {0} no tiene zonas asignadas. No se ha informado la tienda preparadora.
La zona con código {0} no existe. La zona con dicho código no existe. Debe existir en el sistema

Gestión de errores de Modificación [M]

Mensaje Descripción
Error en el producto con código: {0} zona: {1} no tiene precios asignados. No se ha informado del nodo precios dentro del articulo.
Warning en el producto con código: {0} zona: {1} no tiene precios asignados para esta divisa. No se ha informado de la divisa. No se insertará este precio.
Warning en el producto con código: {0} tienda preparadora: {1} el precio es 0 o inexistente. Debe informarse el precio mayor a 0. No se insertará este precio.
Warning en el producto con código: {0} tienda preparadora: {1} la fecha desde debe ser inferior a fecha hasta. La “fechaDesde” debe ser inferior a “fechaHasta”. No se insertará este precio.
Warning en el producto con código: {0} tienda preparadora: {1} la fecha hasta debe ser superior a hoy. La “fechaHasta” debe ser superior a ahora. No se insertará este precio.
Warning, el producto con código: {0} tienda preparadora: {1} las unidades desde no son correctas. Si el tipo de producto es diferente 2 (al peso) y “desdeUnidades” tiene decimales no se insertará este precio.
Error, no se ha modificado del precio del producto con código: {0}, zona: {1}, desdeUnidades: {2}, fechaDesde: {3}, fechaDesde: {4}. Error al insertar/modificar el precio del producto general.

Gestión de errores de Baja [B]

Se aplican las generales y estas son las particulares:

Mensaje Descripción
Error, no se ha deshabilitado/actualizado los precios a "fecha hasta" con valor de ahora para el producto con código {0} tienda preparadora: {1}. Error al actualizar la “fechaHasta” del precio del producto. Reportar de incidencia a soporte si fuera necesario.

Ejemplos json

Alta/modificación de precio base

El archivo en formato JSON

{
  "surtido": [
    {
      "zonas": [
        {
          "codigo": 1
        },
        {
          "codigo": 2
        }
      ],
      "canal": 1,
      "codigo": "111814061",
      "accion": "M",
      "incremental": 0,
      "precios": [
        {
          "divisa": "EUR",
          "precio": 99.99,
          "precioUnitario": 99.99,
          "desdeUnidades": 0,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2025 23:59"
        }
      ]
    }
  ]
}

Alta/modificación con precios por volumen con incremental igual a 0

{
  "surtido": [
    {
      "zonas": [
        {
          "codigo": 1
        }
      ],
      "canal": 1,
      "codigo": "111814061",
      "accion": "M",
      "incremental": 0,
      "precios": [
        {
          "divisa": "EUR",
          "precio": 99.99,
          "precioUnitario": 99.99,
          "desdeUnidades": 0,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2025 23:59"
        },
        {
          "divisa": "EUR",
          "precio": 77.77,
          "precioUnitario": 77.77,
          "desdeUnidades": 3,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2025 23:59"
        },
        {
          "divisa": "EUR",
          "precio": 55.55,
          "precioUnitario": 55.55,
          "desdeUnidades": 5,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2025 23:59"
        },
        {
          "divisa": "EUR",
          "precio": 33.33,
          "precioUnitario": 33.33,
          "desdeUnidades": 7,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2025 23:59"
        }
      ]
    }
  ]
}

Alta/modificación con precios por volumen con incremental igual a 1

{
  "surtido": [
    {
      "zonas": [
        {
          "codigo": 1
        }
      ],
      "canal": 1,
      "codigo": "111814061",
      "accion": "M",
      "incremental": 1,
      "precios": [
        {
          "divisa": "EUR",
          "precio": 99.99,
          "precioUnitario": 99.99,
          "desdeUnidades": 0,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2025 23:59"
        },
        {
          "divisa": "EUR",
          "precio": 77.77,
          "precioUnitario": 77.77,
          "desdeUnidades": 3,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2025 23:59"
        },
        {
          "divisa": "EUR",
          "precio": 55.55,
          "precioUnitario": 55.55,
          "desdeUnidades": 5,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2025 23:59"
        },
        {
          "divisa": "EUR",
          "precio": 33.33,
          "precioUnitario": 33.33,
          "desdeUnidades": 7,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2025 23:59"
        }
      ]
    }
  ]
}

Baja de precios

{
  "surtido": [
    {
      "zonas": [
        {
          "codigo": 1
        }
      ],
      "canal": 1,
      "codigo": "111814061",
      "accion": "B"
    }
  ]
}

Gestión de versiones

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