Saltar a contenido

Integración por Lotes (Batch) de Productos

Introducción

Esta sección describe el proceso de integración por lotes (batch) para la entidad de producto. Se detalla la estructura de datos de la entidad producto y se definen las interfaces estándar asociadas a esta entidad.

También se describe la optimización en el proceso de generación del archivo JSON de surtido, incluyendo solo la información imprescindible de los productos para su posterior carga.

El producto permite mantener información a dos niveles:

  • Nivel producto: Información relativa al producto y que se comparte con todas las zonas (tiendas) de la aplicación (código, descripciones, marca, tipo, etc.). Por tanto, si se modifica la información relativa al nivel de producto, esto aplicará a todas las tiendas y no es necesario enviar un registro de modificación por tienda.

  • Nivel producto/tienda preparadora: Información relativa al producto y que aplica a una zona (tienda) de la aplicación (precios, orden web, resaltado, etc.).

Definición productos base

Tipo de productos

A continuación, se muestra un ejemplo para cada tipo de producto, qué valores especificar y el resultado final en la tienda.

Tipo 1. Producto por unidades

Ejemplo: Patatas fritas

Campo Valor
Precio 1.49
Unidad de medida U
Precio unitario 3.73
Unidad medida precio unitario Kg.

Ejemplo:

En el listado de productos se mostrará: Image Image
En el carrito se mostrará: Image

Tipo 2. Producto al peso

Caso A. Precio y precio unitario en la misma unidad

Ejemplo: Manzanas. Se venden por kg

Campo Valor
Precio 3,2
Unidad de medida Kg.
Precio unitario 3,2
Unidad medida precio unitario Kg.
En el listado de productos se mostrará: Image Image
En el carrito se mostrará: Image
Caso B. Precio y precio unitario en distinta unidad.

Ejemplo: Cerezas. Se venden por gramos

Campo Valor
Precio 0,00545
Unidad de medida Gr.
Precio unitario 5,45
Unidad medida precio unitario Kg.
En el listado de productos se mostrará: Image
En el carrito se mostrará: Image

Tipo 3. Producto al peso vendido por unidades.

Ejemplo: Plátanos. Se venden por unidades pero el precio se calcula al peso.

Campo Valor
Precio 0,4
Unidad de medida loncha
Precio unitario 19,96
Unidad medida precio unitario Kg.
En el listado de productos se mostrará: Image Image
En el carrito se mostrará: Image

Definición precios producto

Ver definición en carga de precios

Categorías

Las categorías deben existir en la tabla categorías

Para cada producto se pueden informar tantas categorías como se desee, y de niveles diferentes.

Ejemplo: Pizza congelada puede estar en la categoría de Alimentación/Arroz, pasta/Pizzas y en la de Congelados/Pizza

En el caso de una modificación de producto, si se desea modificar alguna categoría, deben informarse toda la lista de categorías asignadas al producto

Las categorías se pueden mantener desde el backoffice o mediante la interfaz de carga de categorías. Ver documento de carga de categorías.

Jerarquías

Las jerarquías no tienen tabla de validación en la TOL, para cada producto se pueden informar tantas jerarquías como se desee, y de niveles diferentes.

En el caso de una modificación de producto, si se desea modificar alguna jerarquía, deben informarse toda la lista de jerarquías asignadas al producto

Carga imágenes productos

Las imágenes serán depositadas por parte del cliente en un directorio definido en el servidor de archivos.

Diariamente, y de madrugada, se ejecutará un proceso que copiará las imágenes de dicho servidor al directorio web de imágenes de la tienda online.

Imagen del producto

El campo imagen indica el nombre del fichero de la imagen de reserva del producto, con extensión y hasta 30 caracteres. El fichero se sube con la carga de imágenes.

Todas las pantallas de la tienda (ficha, listados, carrito, pedidos y listas de la compra) muestran las imágenes de la carga de imágenes. Esta imagen solo se usa si el producto no tiene ninguna imagen cargada. Si el fichero tampoco existe, se muestra una imagen genérica.

  • Si no se informa en un producto nuevo, se asigna CODIGO.jpg (por ejemplo, 123456.jpg).
  • Si no se informa en un producto existente, se conserva el valor que tenía. Enviar el campo vacío ("imagen": "") equivale a no informarlo.
  • Si se informa, sustituye al valor actual.

No es necesario informarlo si las imágenes del producto se suben con la carga de imágenes nombradas por código o EAN. Es obligatorio si los ficheros usan otro nombre, porque la carga de imágenes los asocia al producto a través de este campo. Si se informa, conviene que sea el nombre exacto de un fichero existente (por ejemplo, "imagen": "123456.png" junto con el fichero 123456.png), ya que se mostrará si el producto se queda sin imágenes cargadas.

Configuración de acciones

  • El tipo de producto tiene que estar habilitado en la TOL para que se procese.
  • Si es un producto base, no hace falta informar de las tienda preparadora y precios.
  • En el caso de querer informar un campo a null, se informará con el valor null (sin comillas).

La carga de cada registro de producto se procesa en función de:

Alta

Realiza el alta del producto en el sistema. Es obligatorio informar todos los campos obligatorios.

Si se intenta dar de alta un producto que ya esta dado de alta el sistema escribe un error en la tabla de errores de carga

Modificación

Realiza la modificación de un producto.

Es obligatorio informar como mínimo el producto y el canal y algún campo a modificar. Solo realiza la modificación de los campos informados.

Si se realiza un cambio de precio y no se informa el campo precio unitario se calcula el nuevo precio unitario como regla de tres.

Si el campo precio unitario se envía a null, no se calcula: el precio unitario se guarda vacío (ver Precio unitario a null).

Gestión de errores

Si se intenta modificar un producto que esta dado de baja el sistema escribe un error en la tabla de errores de carga

Baja

Realiza la baja del producto en el sistema. La acción de baja es una baja lógica, no física.

Es obligatorio informar el producto y canal.

Gestión de errores

Si se intenta dar de baja un producto que ya esta dado de baja el sistema escribe un error en la tabla de errores de carga

Fecha de vigencia:

Fecha a partir de la cual será efectiva la acción del registro procesado.

  • Fecha de vigencia no informada o fecha de vigencia <= fecha actual.

Se realiza el alta del producto en el sistema en ese momento.

  • Fecha de vigencia >= fecha actual.

El registro se guarda en BBDD (sin realizar validaciones) para su proceso el día de vigencia.

Configuraciones

Procesar solo modificaciones.

Es posible configurar la carga para procesar las altas como modificaciones.

Las Altas y modificaciones se envían como “M” y el sistema realiza el alta de los registros cuando no están en el sistema.

Gestión de modificaciones de productos dados de baja.

Es posible configurar la acción a realizar para el caso que se reciba una modificación para un producto que está de baja:

  • Alta. Se realiza la modificación del producto y se da de alta.
  • Modificación. Se realizar la modificación de producto, pero se mantiene de baja.

Interface de productos

Nomenclatura del fichero

Diariamente y según la planificación establecida, se ejecutará un proceso que recibirá un archivo JSON incremental con la información de los productos mostrados en la tienda online

Este archivo tendrá el siguiente nombre: “prefijoAAAAMMDDHHmmss”, donde:

  • Prefijo: Prefijo a definir en cada instalación
  • AAAA: Año.
  • MM: Mes.
  • DD: Día.
  • HH: Hora.
  • mm: Minutos.
  • ss: Segundos.

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

Adicionalmente se puede definir que la carga del archivo de surtido 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 “clotprefijoAAAAMMDDHHmmss”

Planificación del proceso

Según la planificación establecida, se ejecutará el proceso de carga que leerá los archivos JSON y cargara la información de los productos en la BBDD

En primer lugar, se procesarán la información que tiene fecha de vigencia ese día y que se hubieran enviado con anterioridad, por lo que, si el fichero del día contiene información nueva, sobrescribirá la información enviada con anterioridad.

El proceso se puede lanzar de forma manual desde el backend.

Formato del archivo JSON

El archivo JSON tendrá la estructura siguiente:

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.
Zonas “zonas” Lista de tiendas preparadoras a las que pertenece el surtido Lista de Tipo Código Zona Sí
Canal “canal” Canal al que pertenece el producto Numérico entero Sí
Código producto “codigo” Código interno del producto en los sistemas del cliente Literal (50 caracteres máx.) Sí
Marca “marca” Marca del producto Literal (50 caracteres máx.) Sí
Descripciones “descripciones” Descripciones del producto en el idioma correspondiente Lista de Tipo Literal Multi-idioma (50 caracteres máx.) Sí
Tipo producto “tipo” 1: Producto estándar 2: Producto al peso 3: Producto al peso que se vende por unidades 4: Producto kits 5: Servicios transporte 6: Regalo 7: Obsequio (sin zonas ni divisas) Numérico entero Si
EAN “ean” EAN del producto Literal (15 caracteres máx.) Sí
Imagen “imagen” Nombre del fichero de la imagen de reserva del producto, con extensión (p. ej. 123456.png). Ver Imagen del producto. Literal (30 caracteres máx.) No
Unidad de medida “unidadMedida” Es la unidad de compra del producto. Literal (10 carácter máx.) No
Unidad Medida Precio Unitario “unidadMedidaPrecioUnitario” Unidad de medida en la que se expresa el precio unitario. Este dato es meramente informativo. Literal (10 caracteres máx.) Sí
Conversion Unidad Medida Valor “conversionUnidadMedidaValor” Indica el valor de la medida de conversion en productos de tipo 2/3 (Por ejemplo: 0.160, 3, 1) Decimal (10,2) No
Conversion Unidad Medida “conversionUnidadMedida” Indica launidad de medida de conversion en productos de tipo 2/3 (Por ejemplo: Kg, L., ud.) Literal (10) No
Conversion Unidad Cantidad “conversionUnidadCantidad” Valor para aplicar la regla de 3 en la conversion entre unidades de medida para tipo 2/3 Decimal (10,2) No
Habilitar conversor entre unidades “conversionUnidadHabilitada” Habilita el conversor de unidades en el selector para tipo 2/3. Por defecto activado. Booleano (1,0) No
Contiene alérgenos o intolerancias “contieneAlergeno” (deprecado) Indicador para resaltar el producto con un icono determinado al mostrarlo en la tienda online Booleano (1,0) No
Permite comentarios “permiteComentarios” Indica si el articulo permite añadir comentarios en la línea del pedido. Si no se informa valor por defecto 0 Booleano (1,0) No
Categorías “categorias” Categorías del producto en la tienda online. Si no hay categoría asignada, se preestablecerá la categoría estipulada por defecto Lista de Tipo Categoría No
Jerarquías “jerarquias” Jerarquías a las que pertenece el producto dentro del árbol de jerarquías propio de la tienda física Lista de Tipo Jerarquía No
Precios “precios” Precios del producto Lista de Tipo Moneda Sí
Tipo IVA “tipoIva” Tipo de IVA aplicado al producto Numérico entero No
IVA “iva” Porcentaje de IVA del producto Numérico Sí
Orden Web “ordenWeb” Peso del producto que marcará el orden de aparición de los productos en la tienda online Numérico entero Sí
Resaltado “resaltado” Indicador para resaltar el producto con un aspecto determinado al mostrarlo en la tienda online Booleano (1,0) No
Mínimo “minimo” Unidades mínimas seleccionables Numérico Sí
Máximo “maximo” Unidades máximas seleccionables Numérico Sí
Intervalo “intervalo” Unidades a sumar o restar al modificar la cantidad del producto en la cesta. Numérico Sí
Riesgo rotura stock “riesgoStock” Unidades por las que se considera que se puede generar un problema de stock. En este caso se avisa a la tienda. También causará el aplazamiento de las franjas de entrega disponible. Numérico entero No
Grupo picking “grupoPicking” Para la división de los pedidos en grupos de picking en el Backoffice Numérico entero No
Orden picking 1 “ordenPicking1” Para la ordenación de los productos en la lista de picking dentro de su grupo Numérico entero No
Orden picking 2 “ordenPicking2” Para la ordenación de los productos en la lista de picking dentro de su grupo Numérico entero No
Orden picking 3 “ordenPicking3” Para la ordenación de los productos en la lista de picking dentro de su grupo Numérico entero No
Proveedor “proveedor” Proveedor/operador al que esta asociado el producto Literal (20 caracteres max.) No
Novedad “novedadHasta” (deprecado) Fecha hasta que el producto se considerará como novedad. Si no viene informado se inicializa a 1-1-2000 Fecha (dd/mm/aaaa HH:mm) No
Disponible “disponible” Indica si el producto está disponible para la venta: “1” à Disponible “0” à Actualmente no disponible en esta zona “DATE.01/10/2021 à Disponible a partir del 01/10/2021 “FUTURE” à Próximamente en tu tienda “NOSTOCK” à Temporalmente sin stock Si no viene informado se inicializa a 1. Funcionalidad habilitada a partir de la versión 6.6 de la TOL Literal (50 caracteres max.) No
Fecha vigencia “fechaVigencia” Fecha a partir de la cual será efectiva la acción Si no viene informada la aplicación será inmediata Fecha (dd/mm/aaaa HH:mm) No
Acción “accion” Alta, baja o modificación Literal (1 carácter) “A”, “B” o “M” Sí

Tipo Moneda

El campo precios definido en el json dependen de la divisa, Para cada uno de ellos se tiene que especificar un valor para cada divisa que se quiere soporte: en la tabla anterior dichos campos están especificados con formato Tipo Moneda

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.
Divisa “divisa” Código que identifica la divisa (ISO-4217) Literal (3 caracteres máx.) Sí
Precio “precio” PVP del producto. Precio con IVA. Según el tipo de producto tiene el siguiente significado: 1(estándar): precio por unidad de producto 2 (al peso): precio por unidad de producto. 3 (al peso por unidades): precio por unidad de medida Este dato se utiliza para el cálculo del importe de la línea del carrito. Decimal (10,5) Sí
Precio Unitario “precioUnitario” Precio unitario del producto. En función de la “Unidad de Medida Precio Unitario” y de la Moneda será: €/Kg, €/Litro, €/metro. Este dato es meramente informativo. Si se envía a null, el producto se guarda sin precio unitario. Ver Precio unitario a null. Decimal (10,5) o null No
Desde unidades “desdeUnidades” Unidades a partir de las que aplica el precio Decimal (10,5) Sí
Fecha desde “fechaDesde” Fecha y hora inicio validez del precio Fecha (dd/mm/aaaa HH:mm) Sí
Fecha hasta “fechaHasta” Fecha y hora fin validez del precio Fecha (dd/mm/aaaa HH:mm) Sí

Precio unitario a null

El campo “precioUnitario” no es obligatorio. Según cómo venga en el fichero, la carga se comporta así:

“precioUnitario” en el fichero Resultado
Informado con un valor Se guarda el precio unitario recibido.
null explícito El producto se guarda sin precio unitario, también si ya tenía uno de una carga anterior. Tampoco se calcula el precio unitario de oferta y no se genera aviso de precio unitario incorrecto.
Campo no enviado Se mantiene el comportamiento habitual: en una modificación se conserva el valor anterior o se recalcula como regla de tres.

El precio “precio” no se ve afectado. Si más adelante se vuelve a enviar “precioUnitario” con un valor, el producto recupera su precio unitario.

Ejemplo de un producto que se carga sin precio unitario:

"precios": [
  {
    "divisa": "EUR",
    "precio": 12.4,
    "precioUnitario": null,
    "desdeUnidades": 1,
    "fechaDesde": "01/01/2026 00:00",
    "fechaHasta": "31/12/2099 23:59"
  }
]

Tipo código zona

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

Tipo literal multiidioma

El campo descripciones definido en el json dependen del idioma

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.
Idioma “idioma” Identificador del idioma (ISO 639-1) Literal (2 caracteres máx.) Sí
Descripción breve “descripcionBreve” Descripción del producto. Aparecerá en el listado de productos a seleccionar y en el carrito Literal (500 caracteres máx.) Sí
Descripción larga “descripcionLarga” Descripción larga del producto. Aparecerá en la ficha del producto. Puede informarse un html. Literal (3000 caracteres máx.) Sí
Formato “formato” Formato de presentación del producto (“Cajas”, “Botellas”…) Este valor se presenta en la página de detalle de producto concatenado a la descripción breve. Literal (50 caracteres máx.) No
seo “seo” Valor que se utilizar para el SEO. Si no viene informado se crea con la descripción larga del producto incluyendo “-“ Literal (1024 caracteres máx.) No

Tipo categoría

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.
Código “codigo” Código que identifica distintivamente la categoría web. Existe una carga especifica de la tabla de categorías. Numérico entero Sí

Tipo jerarquía

Campo “Nombre campo” Descripción/Ejemplo Formato Oblig.
Código “codigo” Código que identifica distintivamente la jerarquía en los sistemas del cliente. Literal (30 caracteres máx.) Sí
Nivel “nivel” Nivel a la que pertenece la jerarquía correspondiente a la profundidad del árbol de jerarquías propio de la tienda física Numérico entero Sí

ANEXOS. Ejemplos json

Alta producto

El archivo JSON del surtido de productos tendrá el siguiente formato:

{
  "surtido": [
    {
      "accion": "A",
      "canal": 1,
      "marca": "Colgate",
      "codigo": "355",
      "tipo": 1,
      "ean": "848001760",
      "imagen": "colgatepasta.jpg",
      "unidadMedida": "u.",
      "unidadMedidaPrecioUnitario": "u.",
      "permiteComentarios": 0,
      "ordenWeb": 1,
      "resaltado": 1,
      "minimo": 1,
      "maximo": 100,
      "intervalo": 1,
      "iva": 21,
      "grupoPicking": 0,
      "descripciones": [
        {
          "idioma": "es",
          "descripcionBreve": "Pasta de dientes COLGATE ",
          "descripcionLarga": "Pasta dentífrica recomendada para uso diario COLGATE",
          "formato": "Sobre"
        }
      ],
      "zonas": [
        {
          "codigo": 65
        }
      ],
      "precios": [
        {
          "divisa": "EUR",
          "precio": 12.4,
          "precioUnitario": 2.4,
          "desdeUnidades": 0,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2099 23:59"
        }
      ],
      "categorias": [
        {
          "codigo": 1690
        }
      ],
      "jerarquias": [
        {
          "codigo": 12,
          "nivel": 1
        },
        {
          "codigo": 30,
          "nivel": 2
        }
      ]
    }
  ]
}

Alta en múltiples tiendas

Si se quiere dar de alta un producto con la misma información en diferentes tiendas, basta con informar un único registro con los datos del producto indicando el listado de tiendas en el campo ”zonas”.

Ej. Alta del producto código “7190416” en las zonas 16,315 y 512

{
  "surtido": [
    {
      "zonas": [
        {
          "codigo": 16
        },
        {
          "codigo": 315
        },
        {
          "codigo": 512
        }
      ],
      "descripciones": [
        {
          "idioma": "es",
          "descripcionBreve": "Delicias de Cabra Semicurado",
          "descripcionLarga": "Delicias de Cabra Semicurado",
          "formato": ""
        }
      ],
      "categorias": [
        {
          "codigo": 4097
        }
      ],
      "precios": [
        {
          "divisa": "EUR",
          "precio": 14.96,
          "precioUnitario": 14.96,
          "desdeUnidades": 0,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2099 23:59"
        }
      ],
      "canal": 1,
      "marca": "EL PASTOR",
      "codigo": "7190416",
      "tipo": 2,
      "ordenWeb": 6,
      "ean": "8413376015301",
      "imagen": "7190416.jpg",
      "iva": 4,
      "resaltado": 0,
      "minimo": 0.25,
      "maximo": 99,
      "intervalo": 0.1,
      "unidadMedida": "kg",
      "unidadMedidaPrecioUnitario": "1 Kg",
      "grupoPicking": 0,
      "accion": "A",
      "permiteComentarios": 1
    }
  ]
}

Alta de precios por volumen

Es un alta de producto con varios precios por volumen dependiendo “desdeUnidades”. Estos precios se mostrarán en la tienda igual como se explicó en la definición.

{
  "surtido": [
    {
      "zonas": [
        {
          "codigo": 16
        },
        {
          "codigo": 315
        },
        {
          "codigo": 512
        }
      ],
      "descripciones": [
        {
          "idioma": "es",
          "descripcionBreve": "Delicias de Cabra Semicurado",
          "descripcionLarga": "Delicias de Cabra Semicurado",
          "formato": ""
        }
      ],
      "categorias": [
        {
          "codigo": 4097
        }
      ],
      "precios": [
        {
          "divisa": "EUR",
          "precio": 14.96,
          "precioUnitario": 14.96,
          "desdeUnidades": 0,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2099 23:59"
        },
        {
          "divisa": "EUR",
          "precio": 13.96,
          "precioUnitario": 13.96,
          "desdeUnidades": 4,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2099 23:59"
        },
        {
          "divisa": "EUR",
          "precio": 12.96,
          "precioUnitario": 12.96,
          "desdeUnidades": 8,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2099 23:59"
        }
      ],
      "canal": 1,
      "marca": "EL PASTOR",
      "codigo": "7190416",
      "tipo": 2,
      "ordenWeb": 6,
      "ean": "8413376015301",
      "imagen": "7190416.jpg",
      "iva": 4,
      "resaltado": 0,
      "minimo": 0.25,
      "maximo": 99,
      "intervalo": 0.1,
      "unidadMedida": "kg",
      "unidadMedidaPrecioUnitario": "1 Kg",
      "grupoPicking": 0,
      "accion": "A",
      "permiteComentarios": 1
    }
  ]
}

Modificación mínima

Es suficiente informar en el registro de modificación los campos que se deseen modificar, más los campos obligatorios: código producto, zona y canal, tanto si se modifican datos a nivel de producto como a nivel de producto/zona.

Ej. Cambio de precio del producto código “7190416” en la zona 16

{
  "surtido": [
    {
      "zonas": [
        {
          "codigo": 16
        }
      ],
      "precios": [
        {
          "divisa": "EUR",
          "precio": 13.96,
          "desdeUnidades": 0,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2099 23:59"
        }
      ],
      "canal": 1,
      "codigo": "7190416",
      "accion": "M"
    }
  ]
}

Modificación a nivel producto

En el caso de que las modificaciones sean solo para datos definidos a nivel de producto, solo es necesario enviar un registro de modificación para una de las tiendas (cualquiera de las que tengan el producto dado da alta)

Ej. Cambio de ean del producto codigo “7190416”.

{
  "surtido": [
    {
      "zonas": [
        {
          "codigo": 16
        }
      ],
      "canal": 1,
      "codigo": "7190416",
      "ean": "8413376019999",
      "accion": "M"
    }
  ]
}

Modificación a nivel producto/zona

Si se modifica la misma información a nivel producto/zona para varias tiendas, es suficiente informar un registro con las modificaciones del producto e indicar las diferentes tiendas que se verán afectadas

Ej. Cambio de precio del producto código “7190416” en las zonas 315 y 323

{
  "surtido": [
    {
      "zonas": [
        {
          "codigo": 315
        },
        {
          "codigo": 323
        }
      ],
      "precios": [
        {
          "divisa": "EUR",
          "precio": 13.5,
          "desdeUnidades": 0,
          "fechaDesde": "01/01/2024 00:00",
          "fechaHasta": "31/12/2099 23:59"
        }
      ],
      "canal": 1,
      "codigo": "7190416",
      "accion": "M"
    }
  ]
}

Baja en múltiples zonas

Si se quiere dar de baja un mismo producto en diferentes zonas, informar la baja del producto una sola vez e indicar las distintas tiendas en el listado de zonas.

Ej. Baja del producto código “7190416” en las zonas 16 y 323

{
  "surtido": [
    {
      "zonas": [
        {
          "codigo": 16
        },
        {
          "codigo": 323
        }
      ],
      "canal": 1,
      "codigo": "7190416",
      "accion": "B"
    }
  ]
}

Gestión de versiones

Versión Cambios
25.0 Agregado: Precios por volumen y vigencia de precios
25.3 Eliminación versionJ
26.3 Documentado el uso del campo imagen como imagen de reserva y su valor por defecto