Básicos
A partir de la versión 6.0, trabajar con descuentos se estructura de manera diferente. El cambio clave es que el descuento en el pedido no se tiene en cuenta en el monto total del pedido, sino que se distribuye entre los productos y se tiene en cuenta en el monto de cada artículo individual del producto en el pedido. Al mismo tiempo, el descuento de pedido distribuido no afecta a los descuentos en productos, que se pueden especificar por separado como antes.
Demostremos con un ejemplo. Digamos que tienes el siguiente orden:
| Nombre | Precio | Descuento | Cantidad | Precio despues del descuento |
| | | | | |
| Pantalones cortos | 60 Euros | 5 Euros (por producto) | 2 | 110 Euros |
| | | | | |
| Sandalias | 30 Euros | 0 Euros (por producto) | 3 | 90 Euros |
| | |
| Precio Final | 200 Euros |
Dimos un descuento por el pedido de 10 Euros
En la version del sistema 5.0 y anterior
este descuento se incluirá en el precio total del pedido:
| Nombre| Precio | Descuento | Cantidad | Precio despues del descuento |
| | | | | |
| Pantalones cortos| 60 Euros | 5 Euros (por producto) | 2 | 110 Euros |
| | | | | |
| Sandalias | 30 Euros | 0 Euros (por producto) | 3 | 90 Euros |
| | |
| Descuento por pedido | 30 Euros |
| | |
| Precio Final| 170 Euros |
En la version 6.0 y superior
el descuento del pedido se distribuirá entre las articulos y se tendrá en cuenta en su coste:
| Nombre| Precio| Descuento| Cantidad | Precio despues del descuento |
| | | | | |
| Pantalones cortos | 60 Euros | 5 Euros (por producto) | 2 | 98 Euros |
| | | 6 Euros (por pedido) | | |
| | | | | |
| Sandalias | 30 Euros | 0 Euros (por producto) | 3 | 72 Euros |
| | | 6 Euros (por pedido) | | |
| | |
| Precio Final | 170 Euros |
En este caso, el costo del pedido se calcula de la siguiente manera: `(60 – 5 – 6) x 2 + (30 – 6) x 3 = 170
API
API v4
En API v4 y versiones anteriores, los campos de descuento order[discount]
, order[discountPercent]
, order[items][][discount]
, order[items][][discountPercent]
en el pedido permanecen sin cambios y están disponibles tanto para escritura como para lectura.
Utilizando el ejemplo de pedido anterior, al crear un pedido, los valores deben pasarse de la siguiente forma:
order = {
// ...
"discount": 10,
"items": [
{
"offer": { "externalId": "1" },
"initialPrice": 60,
"discount": 5,
"quantity": 2
},
{
"offer": { "externalId": "2" },
"initialPrice": 30,
"quantity": 3
}
],
// ...
}
En los métodos API para recibir pedidos, la composición y los valores de los campos serán similares:
{
// ...
"discount": 10,
"items": [
{
"offer": { "externalId": "1" },
"initialPrice": 60,
"discount": 5,
"quantity": 2
},
{
"offer": { "externalId": "2" },
"initialPrice": 30,
"quantity": 3
}
],
// ...
}
API v5
En los métodos para la creación y edición de fin de /api/v5/orders/create
, /api/v5/orders/{externalId}/edit
, /api/v5/orders/upload
, puede transferir Orden de descuentos y productos en los campos order[discountManualAmount]
, order[discountManualAmount]
, order[discountManualAmount]
, [[TRANSLATE_PLACEHOLDER_381], /api/v5/orders/{externalId}/edit
order[items][][discountManualPercent]
, mientras que los descuentos en pedidos se distribuirán entre los artículos.
Utilizando el ejemplo de pedido anterior, al crear un pedido, los valores deben pasarse de la siguiente forma:
order = {
// ...
"discountManualAmount": 10,
"items": [
{
"offer": { "externalId": "1" },
"initialPrice": 60
"discountManualAmount": 5,
"quantity": 2
},
{
"offer": { "externalId": "2" },
"initialPrice": 30,
"quantity": 3
}
],
// ...
}
Los métodos para recibir pedidos /api/v5/orders
, /api/v5/orders/{externalId}
devuelven el descuento por pronto pago calculado total por artículo para cada artículo en el campo order[items][][discountTotal]
, que tiene en cuenta tanto los descuentos de artículos actuales como los descuentos de pedidos asignados entre articulos.
{
// ...
"items": [
{
"offer": { "externalId": "1" },
"initialPrice": 60,
"discountTotal": 11,
"quantity": 2
},
{
"offer": { "externalId": "2" },
"initialPrice": 30,
"discountTotal": 6,
"quantity": 3
}
],
// ...
}
Casos extremos al distribuir descuentos de pedidos entre productos
En algunos casos, el sistema no puede distribuir el descuento del pedido entre artículos. Demostremos con un ejemplo.
Digamos que hay un pedido con la siguiente composición:
| Nombre | Precio | Descuento | Cantidad | Precio despues de descuento |
| | | | | |
| Pantalones cortos | 60 Euros | – | 3 | 180 Euros |
| | |
| Precio Final | 180 Euros |
Aplicamos un descuento por el pedido de 2 Euros. El sistema debe distribuir el descuento del pedido entre todas las unidades de productos, de las cuales hay 3 piezas en el pedido.
De forma predeterminada, cuando intenta especificar dicho descuento para un pedido, el sistema mostrará un mensaje de error. Lo que es importante, se generará un error tanto si realiza dicho pedido en el sistema como a través de la API, independientemente de la versión de la API '.
Si la configuración "Ajustar descuento del pedido" está habilitada en el sistema en la sección Configuración>Pedidos, el sistema ajustará el descuento del pedido al valor divisible más cercano (en este caso, cambiará el descuento del pedido de 2 euros a 1.99 euros).
Redondeo
En la versión 6.0, se ha agregado una función de redondeo, que se puede habilitar en la sección Configuración>Pedidos. El redondeo, si está habilitado, se aplica a los elementos del pedido. El precio que se descarta de la suma de los productos como resultado del redondeo se incorpora al descuento de los productos.
En la configuración también hay una opción para redondear el costo del producto teniendo en cuenta el valor del pedido, que se establece de forma predeterminada cuando el redondeo está implementado. Con esta opción, el precio de los productos se redondea de tal manera que el precio final del pedido sea lo más cercano posible al precio del pedido sin redondeo.