# Motor de promos externo

## **Request**

El *request* de Fenicio será una variante del objeto [**Orden**](/developers/referencia/modelos-de-datos/integraciones.md#orden), enviando los datos del cliente y las líneas de productos del carrito de compras.

```json
{
  "_idSolicitud": "200325120000-FNSHPUY-3c7621ed5a707177c1421cce79338668",
  "comprador": {
    "id": 123,
    "codigo": "doc1234567",
    "email": "mail@dominio.com",
    "nombre": "Juan",
    "apellido": "Pérez",
    "telefono": "+59899123456",
    "genero": "M",
    "extras": null,
    "documento": {
      "numero": "41234568",
      "pais": "UY",
      "tipo": "DOCUMENTO_IDENTIDAD"
    }
  },
  "moneda": "UYU",
  "lineas": [
    {
      "nombre": "Remera Slim Fit",
      "sku": "0000123",
      "cantidad": 2,
      "cantidadRegalo": 0,
      "codigoPrecio": "1",
      "precio": 500,
      "descuentos": null
    },
    {
    "nombre": "Nombre de articulo",
      "sku": "0000124",
      "cantidad": 1,
      "cantidadRegalo": 1,
      "codigoPrecio": "1",
      "precio": 500,
      "descuentos": [
        {
          "nombre": "Cupon 2024",
          "codigo": "123",
          "origen": "CUPON",
          "monto": 250
        }
      ]
    },
    {
      "nombre": "Costo envío",
      "sku": "ENVIO_100",
      "cantidad": 1,
      "cantidadRegalo": 0,
      "codigoPrecio": "1",
      "precio": 100,
      "descuentos": null
    }
  ]
}
```

## Response

El servicio debe retornar una lista de objetos, con los siguientes datos:

### **Producto**

| Clave            | Tipo                                  | Descripción                                                    |
| ---------------- | ------------------------------------- | -------------------------------------------------------------- |
| **`sku`**        | String(128)                           | Código único que identifica al artículo en el sistema externo. |
| **`cantidad`**   | Int(4)                                | Cantidad de unidades.                                          |
| **`moneda`**     | String(4)                             | Código ISO 4217 de la moneda. Ejemplo: UYU o USD               |
| **`descuentos`** | [**Descuentos**](#descuentos) \| null | Lista de descuentos a aplicar a cada unidad de la línea.       |

### **Descuentos**

| Clave                 | Tipo        | Descripción                                              |
| --------------------- | ----------- | -------------------------------------------------------- |
| **`id`**              | String(32)  | Id que identifica el descuento a aplicar en el producto. |
| **`nombre`**          | String(128) | Nombre descuento.                                        |
| **`cantidadAplica`**  | Int(4)      | Cantidad a la que debe aplicar el descuento.             |
| **`precioDescuento`** | Numeric     | Precio del descuento. (Monto fijo)                       |

```json
[
  {
    "sku": "0000123",
    "cantidad:": 2,
    "precioOriginal:": 500,
    "moneda:": "UYU",
    "descuentos": [
      {
        "id": "DX1",
        "nombre": "DOS POR UNO",
        "cantidadAplica": 1,
        "precioDescuento": 500
      }
    ]
  },
  {
    "sku": "0000124",
    "cantidad:": 1,
    "precioOriginal:": 500,
    "moneda:": "UYU",
    "descuentos": null
  },
  {
    "sku": "ENVIO_100",
    "cantidad": 1,
    "precioOriginal": 100,
    "moneda:": "UYU",
    "descuentos": [
      {
        "id": "DAC",
        "nombre": "ENVIO GRATIS DAC",
        "cantidadAplica": 1,
        "precioDescuento": 100
      }
    ]
  }
]
```

## Consideraciones

* El descuento que nos retornan debe ser un monto, no un porcentaje. Esto nos permitiría aplicar e descuento directamente y evitar posibles diferencias entre sistemas. De esta forma, garantizamos que el valor final para el cliente sea el correcto.
* Los descuentos que estén configurados en Fenicio los vamos a enviar en el request, los descuentos serán de productos y cupones.
* Los descuentos de medios de pago se manejan del lado de Fenicio, ya que contamos con los BINs de las tarjetas para aplicar correctamente el descuento.
* Los descuentos de medios de pago van a acumularse en todo momento a los descuentos brindados por el motor.
* En caso de que el motor de promociones no responda dentro del tiempo esperado, no se aplicará el descuento y el cliente podrá continuar con la compra sin los descuentos. Se notificará al cliente que no fue posible calcular los descuentos en ese momento, pero la transacción procederá normalmente.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guia.fenicio.help/developers/integracion-motor-de-promos-externo/motor-de-promos-externo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
