MANUAL DE LENGUAJE DE PROMOCIONES
PROMO 7.1
Índice
Propósito y alcance
El presente manual pretende mostrar los pasos para definir promociones vía formato Json para luego importarlas vía Servicio REST o RabbitMQ. La información aquí presentada es válida también para el formato xml de promociones, al respecto se presenta un ejemplo operativo para que a partir de los mapas xml de Promo se puedan obtener las definiciones en formato Json de las promociones.
Introducción
La importación de las promociones se realiza a través del "Servicio de Importación Masiva de Promociones vía REST" y tiene la necesidad de recibir las promociones en formato “Json”. Para mayor información de este servicio referirse al Manual de Integración de Servicios. Aquí solo haremos referencia a la definición vía Json específicamente.
La formación del Json
El Json de promoción tiene los parámetros de la promoción y de la operación a realizar sobre el registro en cuestión. Los campos son:
Campo | Detalle |
operation | Las operaciones que desea realizar. Pueden ser: ( I: Insertar / U: Actualizar / R: Cancelar ) |
name | Nombre de la promoción |
evaluateConditionInCombo | Si la promoción tiene condición simple como parte del combo (ver en Manual de Usuario, definición de Promociones: parámetro "Evaluar condiciones en combo") |
reportParticipants | Se refiere a la opción de reportar participantes de la promoción. Valores posibles: "always", "not". |
code | El código de la promoción. |
sets | List de las referencias a los conjuntos que definirán la condición y el beneficio de la promoción (más detalles en Json Sets). |
condition | Definición de condiciones. |
benefits | Definición de beneficios que otorga la promoción. |
Nota: Para la operación U o R, es requerido que se ingrese al menos uno de los dos campos: name o code. Tenga en cuenta que si solo envia el Código (code) de la promoción, éste debe ser único, porque en caso contrario el sistema realizará la acción indicada (U o R) sobre la primera promoción que encuentre con ese código. Para mas detalle ver en el Manual de Usuario las Notas: "Campo Código Clave" y "Nombre y Código de Promoción Concatenados".
En el siguiente ejemplo mostramos una estructura básica, incompleta, de algunos de los campos mencionados, solo a los fines de referencia:
{ "operation": "I", "name": "2305 Promo wal1", "reportParticipants": "false", "suggest": "not", "sets": { "set": [] }, "condition": { }, "benefits": { } }
Definición de Sets
Hace referencia a los conjuntos de elementos que serán parte de la condición y los que formarán el conjunto de aplicación.
Los campos son:
Campo | Detalle | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | Es el identificador unívoco del set. Este id va a ser referenciado tanto en las condiciones como en el conjunto de aplicación del beneficio. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type | El code del elemento, sus valores posibles son:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
attribute | Es el código del Atributo de los elementos. Sus valores posibles son:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
comparator | Es el código del comparador de los atributos de los elementos. Sus valores posibles son:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
value | El valor |
A continuación se muestra un ejemplo donde el conjunto es para todos los productos con código igual a 111:
"set": { "name": "6171aabde830a52d9c434b95", "type": "item", "attribute": "code", "comparator": "Into", "value": "111" }
El siguiente es un ejemplo donde el conjunto es para todos los productos con level1 igual a maderas y que el tipo de pago sea tarjeta:
"set": [ { "name": "5feaf1324b10b84760e83f37", "type": "item", "attribute": "level1", "comparator": "Into", "value": "maderas" }, { "name": "5feaf13a4b10b84760e83f3a", "type": "payment", "attribute": "type", "comparator": "Into", "value": "card" } ]
Ejemplo con una Condición Simple:
"condition": { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "60f5d150e830a518e0976625" } }
Detalle de los campos:
Campo | Detalle | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type | El tipo de condición. Sus valores son: (basic o composite). "Basic" es que la promoción tiene solo una condición (condición simple) y "composite" que es una condición por composición o sea un combo. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | Es el método de la condición, sus valores son:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
parameter | Son una lista de los parámetros de la condición. Tiene dos valores “key” y “value”. El elemento “key” puede tener 2 valores: - “attribute” con esta “Key” el “value” puede tener varios valores. Los valores de “vaule” además del valor real de la condición son los code: Con los elementos “Distinct” y “Header” en la condición con “Transacción” sus “value” son distintas de los además. Los de transición son:
Los demás son (cuando no son “Transacción”):
Algunos ejemplos cuando usamos atributo (attribute): Observe que siempre hay que tener un set con el “type”, cuando no es condición de una “Transacción”.
Este ejemplo muestra que hay una condición simple con el precio total de todos los items (SKU) con valor mayor o igual a 1000. |
Ejemplo de una Condición Simple con dos sets relacionados mediante la función AND lógico:
"condition": { "type": "composite", "name": "And", "condition": [ { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "60f58668e830a518e09765d6" } }, { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "60f58672e830a518e09765d9" } } ] }
Aquí se detallan los campos del ejemplo anterior:
Campo | Detalle | |||||||
type | Tipo de condición. Sus valores son: (basic o composite). | |||||||
name | Esta es la operación sobre la condición, sus posibles valores son:
| |||||||
condition | Una lista de condiciones. |
Ejemplo de un combo limitado a 1 sola instancia compuesto por 1 producto y 1 pago que vaya entre 1300 y 1500:
"set": [ { "name": "60f089dee830a518e0976217", "type": "payment" }, { "name": "60f08bafe830a518e097621e ", "type": "item" } [....] "combo": { "limit": "1", "combo-component": [ { "min": "1", "max": "1", "attribute": "qty", "use-set": "60f08bafe830a518e097621e" }, { "min": "1300", "max": "1500", "attribute": "itemamount", "use-set": "60f089dee830a518e0976217" } ] }
Detalle de los campos utilizados en el ejemplo anterior:
Campo | Detalle |
limit | Límite de veces que se agruparán |
combo-component | Una lista de componentes de combo |
Los campos dentro de combo-component son:
Campo | Detalle | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
min | cantidad mínima | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
max | cantidad máxima | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
attribute | Son las Unidades de medida (están diferenciadas por el tipo (type) y por el set (use-set) )
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
use-set | Es la relación con la lista de sets. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
order-criteria | Es el Criterio de ordenamiento. Los posibles valores son:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
equivalence-attribute | Es el Atributo de equivalencia (si tiene). Los posibles valores son:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
inequivalence-attribute | Es el Atributo de inequivalencia (si tiene). Los posibles valores son:
|
Json de Beneficios
El elemento “benefits” es un objeto que tiene una lista de beneficios (“benefit”) que tiene la promoción con sus parámetros particulares. Aquí se muestra un ejemplo con dos beneficios uno con Cupón Calculado y otro con Beneficio Externo.
"benefits": { "benefit": [ { "instance": "CalculatedCouponApplicationBenefit", "nro": "60131bd5acb1e948c01a28a6", "parameter": [… Los parameros del beneficio …], "applied-elements": { "use-set": { "name": "60131abbacb1e948c01a2889" } } }, { "instance": "ExternalBenefit", "nro": "60131bf5acb1e948c01a28a8", "parameter": [ … Los parameros del beneficio …], "applied-elements": { "use-set": { "name": "60131abbacb1e948c01a2889" } } } ] }
El siguiente es otro ejemplo con un beneficio Monedero:
"benefits": { "benefit": { "instance": "WalletBenefit", "nro": "6171aaaee830a52d9c434b91", "parameter": [ … Los parameros del beneficio … ], "applied-elements": { "use-set": {"name": "6171aabde830a52d9c434b95"} } } }
Cada beneficio posee su tipo (instance), sus parámetros (parameter) y a quien aplica ese beneficio (applied-elements) este último se compone formando un único beneficio. Sus campos son:
instance | Son los códigos (code) del tipo de beneficio. Estos son los posibles valores de ese campo:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nro | Es el id de la base de datos cuando hace las operaciones (U: Actualizar / R: Cancelación) es un campo requerido. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Parameter | Es la lista de parámetros que tienen los tipos de beneficio. Aquí se muestran parámetros que tienen todos los beneficios y otros que son exclusivos. En el campo "Key code" se muestra la "key". El campo "value" son los valores (los que están en blanco son insertados por el usuario), algunos de ellos tienen valores predefinidos (Obtions values (codes)) como se ve abajo. Parámetros generales:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
applied-elements | Es el Json de la aplicación de la promoción |
Applied-elements
El applied-elements es la aplicación del beneficio. Se aplica a los mas caros primero en base a 2 elementos.
"applied-elements": { "use-set": { "name": "628bedd8a6c1d243c013421e", "order-criteria": "MoreExpensiveFirst", " max ": "2.0", "attribute": "qty", " min ": "2.0" } }
Sus campos son:
Campo | Detalle | ||||||||
name | Referencia a un set | ||||||||
order-criteria | Son los Criterios de ordenamento, sus posibles valores son :
| ||||||||
max | Es la Aplicación máxima (valor) | ||||||||
min | Es el Descuento mínimo a aplicar | ||||||||
attribute | Es la Aplicación máxima (medida), sus posibles valores son :
|
Escalones:
Son Escalones de la definición de promociones escalonadas de un beneficio.
"staggered": { "unit": "qty", "staggeredStep": { "nro": "629602c8a6c1d21bc8985ddb", "min": "1", "max": "1", "applyValue": "1" } }
Sus campos son:
unit | Es la Unidad de Escalonada. Sus posibles valores son:
| ||||||||||
staggeredStep | Es una lista de la definición de la Escalones, sus campos son:
|
Ejemplos
Ejemplo 1:
El siguiente es un ejemplo donde se inserta una nueva promoción con una condición simple y tiene un beneficio monedero.
{ "companyId": "napse", "promotions": [ { "operation": "I", "name": "2305 Promo wal1", "reportParticipants": "false", "suggest": "not", "sets": { "set": { "name": "6171aabde830a52d9c434b95", "type": "item", "attribute": "code", "comparator": "Into", "value": "111" } }, "condition": { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "6171aabde830a52d9c434b95" } }, "benefits": { "benefit": { "instance": "WalletBenefit", "nro": "6171aaaee830a52d9c434b91", "parameter": [ { "key": "displayMessage", "value": "Promo wal1" }, { "key": "printerMessage", "value": "Promo wal1" }, { "key": "TLOGMessage", "value": "Promo wal1" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "6171a7c5e830a52d9c434b89" }, { "key": "wallet", "value": "w1" }, { "key": "limitAmount", "value": "10" }, { "key": "percent", "value": "50" } ], "applied-elements": { "use-set": {"name": "6171aabde830a52d9c434b95"} } } } } ] }
Ejemplo 2:
En el siguiente json se muestra como se inserta una promoción simple donde se otorga como beneficio un cupón.
{ "companyId": "napse", "promotions": [ { "operation": "I", "name": "Teste import 01", "reportParticipants": "false", "suggest": "not", "sets": { "set": { "name": "setCond1", "type": "item", "attribute": "code", "comparator": "Into", "value": "111" } }, "condition": { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setCond1" } }, "benefits": { "benefit": { "instance": "CouponBenefit", "nro": "610ae160e830a528c4383a44", "parameter": [ { "key": "displayMessage", "value": "Teste import 01" }, { "key": "printerMessage", "value": "Teste import 01 impreso" }, { "key": "TLOGMessage", "value": "Teste import 01 tlog" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "benefit01" }, { "key": "qty", "value": "1" }, { "key": "couponid", "value": "tipcupelectm1" }, { "key": "infoPos", "value": "0" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType", "value": "" } ], "applied-elements": { "use-set": {"name": "setCond1"} } } } } ] }
La siguiente imagen muestra como se ve el resumen de la promoción en la consola de Promo:
Ejemplo 3:
En este ejemplo se inserta una promoción que tiene una condición simple y una condición por composición (combo) y se dá como beneficio un descuento de 100% sobre 1 producto papas. Esta promo sería: si lleva 1 coca y 1 papas, lleva las papas gratis.
{ "companyId": "napse", "promotions": [ { "operation": "I", "name": "Teste import 02", "reportParticipants": "false", "suggest": "not", "sets": { "set": [ { "name": "setTeste1", "type": "item", "attribute": "code", "comparator": "Into", "value": "coca" }, { "name": "setTeste2", "type": "item", "attribute": "code", "comparator": "Into", "value": "papas" }, { "name": "setTeste3", "type": "item", "attribute": "code", "comparator": "Into", "value": "papas" } ] }, "condition": { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste1" } }, "combo": { "limit": "1", "combo-component": [ { "min": "1", "max": "1", "attribute": "qty", "use-set": "setTeste1" }, { "min": "1", "max": "1", "attribute": "qty", "use-set": "setTeste2" } ] }, "benefits": { "benefit": { "instance": "PercentageDiscount", "parameter": [ { "key": "displayMessage", "value": "1Promo Coca+ Papas, papas gratis" }, { "key": "printerMessage", "value": "1Promo Coca+ Papas, papas gratis impreso" }, { "key": "TLOGMessage", "value": "1Promo Coca+ Papas, papas gratis Tlog" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "BeneficioTeste3" }, { "key": "percent", "value": "100" }, { "key": "unit", "value": "qty" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType", "value": "" }, { "key": "prorateBCP", "value": "false" } ], "applied-elements": { "use-set": { "name": "setTeste3", "max": "1.0", "attribute": "qty" } } } } } ] }
La siguiente imagen muestra como se ve el resumen de la promoción en la consola de Promo:
Ejemplo 4:
En el siguiente ejemplo tiene condiciones de rango horario, condiciones simples y condiciones por composicion. Si realiza la compra dentro del rango de fechas y hora indicados y además cumple con la condición simple que en este caso es un evento específico y además debe cumplir con la condición por composición indicada se le dará como beneficio un descuento de $2 sobre 1 producto con código 0000118287.
{ "companyId": "napse", "promotions": [ { "operation": "I", "name": "Teste import 03", "code": "2237", "reportParticipants": "false", "suggest": "always", "descriptor": "[REQPREV|CUPON_VIRTUAL_DELIVERY_1800_VITA_C]-PRM CUPON DELIVERY 1800 VITA C MK 03-30 NOV20", "sets": { "set": [ { "name": "setTeste1", "type": "event", "attribute": "value", "comparator": "Into", "value": "CUPON_VIRTUAL_DELIVERY_1800_VITA_C" }, { "name": "setTeste2", "type": "item", "attribute": "code", "comparator": "Into", "value": "0000118287" }, { "name": "setTeste3", "type": "item", "attribute": "code", "comparator": "Into", "value": "0000122033" }, { "name": "setTeste4", "type": "item", "attribute": "code", "comparator": "Into", "value": "0000118287" } ] }, "condition": { "type": "composite", "name": "And", "condition": [ { "type": "composite", "name": "And", "condition": { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste1" } } }, { "type": "basic", "name": "Between", "parameter": [ { "key": "attribute", "value": "datetime" }, { "key": "valuefrom", "value": "03/11/2020 00:00" }, { "key": "valueto", "value": "30/12/2021 23:59" } ] } ] }, "combo": { "limit": "1", "combo-component": [ { "min": "1", "max": "1", "attribute": "qty", "equivalence-attribute": "code", "use-set": "setTeste2" }, { "min": "3", "max": "3", "attribute": "qty", "equivalence-attribute": "code", "use-set": "setTeste3" } ] }, "benefits": { "benefit": { "instance": "FixedDiscount", "nro": "603e80c7e830a523b48a0739", "parameter": [ { "key": "displayMessage", "value": "PRM CUPON DELIVERY 1800 VITA C MK 03-30 NOV20" }, { "key": "printerMessage", "value": "PRM CUPON DELIVERY 1800 VITA C MK 03-30 NOV20 impreso" }, { "key": "TLOGMessage", "value": "PRM CUPON DELIVERY 1800 VITA C MK 03-30 NOV20 tlog" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "testeBenefit1" }, { "key": "amount", "value": "2" }, { "key": "unit", "value": "qty" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType", "value": "" } ], "applied-elements": { "use-set": { "name": "setTeste4", "max": "1.0", "attribute": "qty" } } } } } ] }
La siguiente imagen muestra como se ve el resumen de la promoción en la consola de Promo:
Ejemplo 5:
En el siguiente ejemplo se inserta una promoción con condiciones simples donde indica que el código del producto debe ser igual a: a, b y c , y debe tener los siguientes tipos de medios de pago: VISA y los medios de pago deben tener la siguiente cantidad de cuotas: 1, 2 o 3. El beneficio que se dará será un plan de pagos en 3 cuotas con el tipo de pago VISA para los productos a, b y c.
{ "companyId": "napse", "promotions": [ { "operation": "I", "name": "Teste import 04", "reportParticipants": "false", "suggest": "not", "sets": { "set": [ { "name": "setTeste1", "type": "item", "attribute": "code", "comparator": "Into", "value": "a,b,c" }, { "name": "setTeste2", "type": "payment", "attribute": "type", "comparator": "Into", "value": "VISA" }, { "name": "setTeste3", "type": "payment", "attribute": "installments", "comparator": "Into", "value": "1,2,3" } ] }, "condition": { "type": "composite", "name": "And", "condition": [ { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste1" } }, { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste2" } }, { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste3" } } ] }, "benefits": { "benefit": { "instance": "PaymentPlanBenefit", "parameter": [ { "key": "displayMessage", "value": "CodifMedioPago3Cuotas" }, { "key": "printerMessage", "value": "CodifMedioPago3Cuotas" }, { "key": "TLOGMessage", "value": "CodifMedioPago3Cuotas" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "benefitteste1" }, { "key": "paymentplanid", "value": "1" }, { "key": "type", "value": "VISA" }, { "key": "tender", "value": "1" }, { "key": "installments", "value": "1,2,3" }, { "key": "percenttype", "value": "indistinct" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType", "value": "" } ], "applied-elements": { "use-set": {"name": "setTeste1"} } } } } ] }
La siguiente imagen muestra como se ve el resumen de la promoción en la consola de Promo:
Ejemplo 6:
En el siguiente json se inserta una promoción con condición simple donde indica que debe comprar el producto 05935 y presentar el tipo de tarjeta de fidelidad 5. Obtendrá como beneficio: canje de puntos para el tipo de tarjeta y producto mencionados, el factor de conversión será: por cada peso se otorgarán 2 puntos.
{ "companyId": "napse", "promotions": [ { "operation": "I", "name": "Teste import 05", "reportParticipants": "false", "suggest": "not", "sets": { "set": [ { "name": "setTeste01", "type": "item", "attribute": "code", "comparator": "Into", "value": "05935" }, { "name": "setTeste02", "type": "loyaltycard", "attribute": "type", "comparator": "Into", "value": "5" } ] }, "condition": { "type": "composite", "name": "And", "condition": [ { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste01" } }, { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste02" } } ] }, "benefits": { "benefit": { "instance": "RedeemPointsBenefit", "nro": "60f586dce830a518e09765dd", "parameter": [ { "key": "displayMessage", "value": "Canje de puntos A" }, { "key": "printerMessage", "value": "Canje de puntos A" }, { "key": "TLOGMessage", "value": "Canje de puntos A" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "promoBenefit" }, { "key": "type", "value": "5" }, { "key": "factor", "value": "2" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType", "value": "" }, { "key": "prorateBCP", "value": "false" } ], "applied-elements": { "use-set": {"name": "setTeste01"} } } } } ] }
La siguiente imagen muestra como se ve el resumen de la promoción en la consola de Promo:
Ejemplo 7:
En el siguiente ejemplo se inserta una promoción con condición simple donde indica que se debe comprar el producto 05935 o cualquier producto y como beneficio se podrán canejear puntos sobre el producto 05935 y te tomará por cada peso 2 puntos.
{ "companyId": "napse", "promotions": [ { "operation": "I", "name": "Teste import 006", "reportParticipants": "false", "suggest": "not", "sets": { "set": [ { "name": "setTeste01", "type": "item", "attribute": "code", "comparator": "Into", "value": "05935" }, { "name": "61126855e830a505e41642a3", "type": "item" }, ] }, "condition": { "type": "composite", "name": "And", "condition": [ { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste01" } }, { "type": "basic", "name": "Exists", "parameter": [ { "key": "use-set", "value": "61126855e830a505e41642a3" }, { "key": "attribute", "value": "xprice" }, { "key": "value", "value": "1000" } ] } ] }, "benefits": { "benefit": { "instance": "RedeemPointsBenefit", "nro": "60f586dce830a518e09765dd", "parameter": [ { "key": "displayMessage", "value": "Canje de puntos A" }, { "key": "printerMessage", "value": "Canje de puntos A" }, { "key": "TLOGMessage", "value": "Canje de puntos A" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "promoBenefit" }, { "key": "type", "value": "5" }, { "key": "factor", "value": "2" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType", "value": "" }, { "key": "prorateBCP", "value": "false" } ], "applied-elements": { "use-set": {"name": "setTeste01"} } } } } ] }
La siguiente imagen muestra como se ve el resumen de la promoción en la consola de Promo:
Ejemplo 8:
En este ejemplo se inserta una promoción con condición simple donde indica que se puede llevar cualquier producto y en condición por composición indica que debe llevar 2 vestidos y obtendrá de beneficio el 100% de descuento sobre 1 de papas.
{ "companyId": "napse", "promotions": [ { "operation": "I", "name": "Teste import 07", "reportParticipants": "false", "suggest": "not", "sets": { "set": [ { "name": "setTest1", "type": "item" }, { "name": "setTest2", "type": "item", "attribute": "code", "comparator": "Into", "value": "vestido" }, { "name": "setTest3", "type": "item", "attribute": "code", "comparator": "Into", "value": "papas" } ] }, "condition": { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTest1" } }, "combo": { "limit": "1", "combo-component": { "min": "2", "max": "2", "attribute": "qty", "use-set": "setTest2" } }, "benefits": { "benefit": { "instance": "PercentageDiscount", "nro": "611183a0e830a505e4164209", "parameter": [ { "key": "displayMessage", "value": "1Promo Coca+ Papas, papas gratis" }, { "key": "printerMessage", "value": "1Promo Coca+ Papas, papas gratis" }, { "key": "TLOGMessage", "value": "1Promo Coca+ Papas, papas gratis" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "611183a0e830a505e416420b" }, { "key": "percent", "value": "100" }, { "key": "unit", "value": "qty" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType", "value": "" }, { "key": "prorateBCP", "value": "false" } ], "applied-elements": { "use-set": { "name": "setTest3", "max": "1.0", "attribute": "qty" } } } } } ] }
La siguiente imagen muestra como se ve el resumen de la promoción en la consola de Promo:
Ejemplo 9:
Este ejemplo muestra como insertar una promoción con condición de rango horario y condiciones simples: comprando cualquier producto, presentando un cupón de tipo tc26, el cliente debe ser tipo vip y pertenecer al segmento abc1, debe pagar con medio de pago tipo VISA y contar con una tarjeta de fidelidad tipo 6, la compra debe realizarse en la Terminal 081 y debe pertenecer a Zona norte. De cumplirse con todas esas condiciones se otorgarán los siguientes beneficios: canje de cupón calculado , se le dará un beneficioo externo, tendrá un canje con opciones, tendrá un canje de puntos por catálogo, un descuento fijo de $200, un descuento por convenio de 10%, un descuento porcentaje de 50%, un descuento nuevo precio, un canje de puntos, un beneficio general, un coeficiente de fidelización, se le otrogará un cupón tipo tc26, se le otorgarán 100 cupones calculados tipo tc19 por valor 10, porcentaje de fidelización de 10%, se le otorgará un regalocon id bigbox1, se le otorgará un reintegro bancario con el plan ahora18.
{ "companyId": "napse", "promotions": [ { "operation": "I", "name": "Teste import 08", "code": "Teste import 08", "reportParticipants": "false", "suggest": "not", "sets": { "set": [{ "name": "setTeste1", "type": "item" }, { "name": "setTeste2", "type": "coupon", "attribute": "type", "comparator": "Into", "value": "tc26" }, { "name": "setTeste3", "type": "customer", "attribute": "type", "comparator": "Into", "value": "vip" }, { "name": "setTeste4", "type": "customer", "attribute": "segment", "comparator": "Into", "value": "abc1" }, { "name": "setTeste5", "type": "payment", "attribute": "type", "comparator": "Into", "value": "visa" }, { "name": "setTeste6", "type": "loyaltycard", "attribute": "type", "comparator": "Into", "value": "6" } ] }, "condition": { "type": "composite", "name": "And", "condition": [{ "type": "composite", "name": "And", "condition": [{ "type": "composite", "name": "And", "condition": [{ "type": "composite", "name": "And", "condition": [{ "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste1" } }, { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste2" } }, { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste3" } }, { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste4" } }, { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste5" } }, { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "setTeste6" } } ] }, { "type": "basic", "name": "Header", "parameter": [{ "key": "attribute", "value": "terminal" }, { "key": "value", "value": "081" } ] } ] }, { "type": "basic", "name": "Header", "parameter": [{ "key": "attribute", "value": "zone" }, { "key": "value", "value": "norte" } ] } ] }, { "type": "composite", "name": "And", "condition": [{ "type": "basic", "name": "Between", "parameter": [{ "key": "attribute", "value": "time" }, { "key": "valuefrom", "value": "02:00" }, { "key": "valueto", "value": "23:00" } ] }, { "type": "basic", "name": "Between", "parameter": [{ "key": "attribute", "value": "datetime" }, { "key": "valuefrom", "value": "28/01/2021 00:00" }, { "key": "valueto", "value": "31/10/2021 23:59" } ] } ] } ] }, "benefits": { "benefit": [ { "instance": "CalculatedCouponApplicationBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "couponid", "value": "tc19" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "ExternalBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "type", "value": "compensacion" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "RedeemWithOptionsBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } }, "redeemOptions": { "redeemOption": { "benefitToApplyOptionCode": "fixedDiscount", "forEachUnit": "qty", "requiredPoints": "1000", "applyValue": "100", "cardType": "6", "cardPoints": "100" } } }, { "instance": "CatalogRedeemBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "type", "value": "6" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "FixedDiscount", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "amount", "value": "200" }, { "key": "unit", "value": "qty" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "ContractPercentageDiscount", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "percent", "value": "10" }, { "key": "unit", "value": "qty" }, { "key": "balance", "value": "balance1" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "PercentageDiscount", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "percent", "value": "50" }, { "key": "unit", "value": "qty" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "NewPrice", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "externalAmount", "value": "false" }, { "key": "newprice", "value": "300" }, { "key": "unit", "value": "qty" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "RedeemPointsBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "type", "value": "6" }, { "key": "factor", "value": "10" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "GeneralBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "qty", "value": "10" }, { "key": "generalid", "value": "33" }, { "key": "generaltype", "value": "general" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "FactorLoyaltyBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "type", "value": "6" }, { "key": "factor", "value": "10" }, { "key": "trxPointsLimit", "value": "100" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "CouponBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "qty", "value": "1" }, { "key": "couponid", "value": "tc26" }, { "key": "infoPos", "value": "0" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "CalculatedCouponBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "couponid", "value": "tc19" }, { "key": "amountApplicationType", "value": "percentage" }, { "key": "calculatedCouponValue", "value": "10" }, { "key": "qty", "value": "100" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "PercentLoyaltyBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "percent", "value": "10" }, { "key": "type", "value": "6" }, { "key": "trxPointsLimit", "value": "200" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "GiftBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "qty", "value": "1" }, { "key": "giftid", "value": "bigbox1" }, { "key": "gifttype", "value": "bigbox" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } }, { "instance": "BankRefundBenefit", "parameter": [{ "key": "displayMessage", "value": "superPromox" }, { "key": "printerMessage", "value": "superPromox" }, { "key": "TLOGMessage", "value": "superPromox" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "name", "value": "60131a84acb1e948c01a2883" }, { "key": "paymentplanid", "value": "ahora18" }, { "key": "type", "value": "credito" }, { "key": "tender", "value": "visa" }, { "key": "installments", "value": "18" }, { "key": "bank", "value": "santander" }, { "key": "limitamount", "value": "200000" }, { "key": "percent", "value": "10" }, { "key": "percenttype", "value": "discount" }, { "key": "pocket" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType" } ], "applied-elements": { "use-set": { "name": "setTeste1" } } } ] } }] }
La siguiente imagen muestra como se ve el resumen de la promoción en la consola de Promo:
Pasos para importar a la consola de Promo una promoción que está en un mapa xml
Una buena práctica cuando iniciamos en la confeccion del Json es tomar una promocion de un mapa existente o bien definirla en consola y obtener el mapa en formato xml para convertirlo en el Json equivalente y así poder por comparación lograr una comprensión para luego ya confeccionarlos por otros medios.
En este apartado se detalla un procedimiento propuesto para realizar la conversión de un mapa xml existente a el Json que se espera como imput (entrada) al sericio de importación de promociones.
1. Importación de una promoción desde un mapa .xml
Dado el siguiente mapa.xml
Mapa XML |
<?xml version="1.0" encoding="UTF-8"?> <promo-engine start-date="19/05/2022 00:00" end-date="26/05/2022 23:59" map-version="1" suggest="not"> <parameter key="Logging" value="true" /> <parameter key="LogConfigurationFile" value="logrsca.xml" /> <parameter key="LogConfigurationCategory" value="com.synthesis.promo" /> <parameter key="Descriptors" value="descriptor.properties" /> <parameter key="DAOConfigurationFeatures" value="com.synthesis.promo.engine.dao.ConfigurationFeatures" /> <parameter key="EvaluationAlgorithmClass" value="com.synthesis.promo.engine.evaluation.InStepsAlgorithm" /> <promotions> <promotion nro="62867033c9512b0184381178" name="Promos con limites 1" code="30" className="com.synthesis.promo.engine.promotion.ModularPromotion" reportParticipants="false" suggest="not"> <sets> <set name="62867340c9512b01843811b5" type="item" attribute="code" comparator="Into" value="111" /> </sets> <condition type="composite" name="And"> <condition type="basic" name="Exists"> <parameter key="use-set" value="62867340c9512b01843811b5" /> </condition> <condition type="basic" name="Header"> <parameter key="attribute" value="store" /> <parameter key="value" value="napse,napse2" /> </condition> </condition> <benefits> <benefit instance="FixedDiscount" nro="628670c9c9512b018438117f"> <parameter key="displayMessage" value="Promos con limites 1" /> <parameter key="printerMessage" value="Promos con limites 1" /> <parameter key="TLOGMessage" value="Promos con limites 1" /> <parameter key="applicationMethod" value="resume" /> <parameter key="prorationMethod" value="proportional" /> <parameter key="applicationPriceType" value="benefited-price" /> <parameter key="hasLimit" value="true" /> <parameter key="name" value="62867033c9512b0184381178" /> <parameter key="amount" value="300" /> <parameter key="unit" value="qty" /> <parameter key="prorateBCP" value="false" /> <parameter key="recoveryValue" value="0" /> <parameter key="recoveryType" value="" /> <applied-elements> <use-set name="62867340c9512b01843811b5" /> </applied-elements> </benefit> </benefits> </promotion> </promotions> <evaluation-algorithm> <step> <function name="ALL"> <function name="SIMPLE"> <promotion-usage name="Promos con limites 1" /> </function> </function> </step> </evaluation-algorithm> </promo-engine> |
Se deberá copiar solo la sección del bloque <promotion ….>, tal como se ve en la siguiente imagen:
XML -> Bloque promotion |
<promotion nro="62867033c9512b0184381178" name="Promos con limites 1" code="30" className="com.synthesis.promo.engine.promotion.ModularPromotion" reportParticipants="false" suggest="not"> <sets> <set name="62867340c9512b01843811b5" type="item" attribute="code" comparator="Into" value="111" /> </sets> <condition type="composite" name="And"> <condition type="basic" name="Exists"> <parameter key="use-set" value="62867340c9512b01843811b5" /> </condition> <condition type="basic" name="Header"> <parameter key="attribute" value="store" /> <parameter key="value" value="napse,napse2" /> </condition> </condition> <benefits> <benefit instance="FixedDiscount" nro="628670c9c9512b018438117f"> <parameter key="displayMessage" value="Promos con limites 1" /> <parameter key="printerMessage" value="Promos con limites 1" /> <parameter key="TLOGMessage" value="Promos con limites 1" /> <parameter key="applicationMethod" value="resume" /> <parameter key="prorationMethod" value="proportional" /> <parameter key="applicationPriceType" value="benefited-price" /> <parameter key="hasLimit" value="true" /> <parameter key="name" value="62867033c9512b0184381178" /> <parameter key="amount" value="300" /> <parameter key="unit" value="qty" /> <parameter key="prorateBCP" value="false" /> <parameter key="recoveryValue" value="0" /> <parameter key="recoveryType" value="" /> <applied-elements> <use-set name="62867340c9512b01843811b5" /> </applied-elements> </benefit> </benefits> </promotion> |
2. Cómo convertir el xml en json
Luego, ir a la web https://www.oxygenxml.com/xml_json_converter.html, para convertir el xml a formato json.
Pegar el xml dentro del campo XML y generar el Json presionando el botón con la flecha ( ->).
Esto generará el siguiente resultado, del cual solo se deberá copiar lo que está dentro de "promotion": { marcado en azul, tal como se muestra en el siguiente ejemplo:
JSON generado |
{ "promotion": { "nro": "62867033c9512b0184381178", "name": "Promos con limites 1", "code": "30", "className": "com.synthesis.promo.engine.promotion.ModularPromotion", "reportParticipants": "false", "suggest": "not", "sets": { "set": { "name": "62867340c9512b01843811b5", "type": "item", "attribute": "code", "comparator": "Into", "value": "111" } }, "condition": { "type": "composite", "name": "And", "condition": [ { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "62867340c9512b01843811b5" } }, { "type": "basic", "name": "Header", "parameter": [ { "key": "attribute", "value": "store" }, { "key": "value", "value": "napse,napse2" } ] } ] }, "benefits": { "benefit": { "instance": "FixedDiscount", "nro": "628670c9c9512b018438117f", "parameter": [ { "key": "displayMessage", "value": "Promos con limites 1" }, { "key": "printerMessage", "value": "Promos con limites 1" }, { "key": "TLOGMessage", "value": "Promos con limites 1" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "hasLimit", "value": "true" }, { "key": "name", "value": "62867033c9512b0184381178" }, { "key": "amount", "value": "300" }, { "key": "unit", "value": "qty" }, { "key": "prorateBCP", "value": "false" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType", "value": "" } ], "applied-elements": { "use-set": {"name": "62867340c9512b01843811b5"} } } } } } |
3. Cómo enviar el json obtenido a través del servicio Importación Masiva de Promociones a la consola de Promo
Una vez copiado todo el contenido marcado en azul, se deberá actualizar el formato estándar de importación de promociones. Por ejemplo:
- Deberá pegar el contenido copiado dentro después de “operation”: I, tal como se ve en la siguiente imagen.
Esto da el siguiente resultado con el formato de importación ya completo y listo para usar desde POSTMAN:
Resultado del JSON de importación de promoción El contenido pegado está marcado en azul |
{ "companyId":"napse", "promotions": [ { "operation":"I", "nro": "62867033c9512b0184381178", "name": "Promos con limites 1", "code": "30", "className": "com.synthesis.promo.engine.promotion.ModularPromotion", "reportParticipants": "false", "suggest": "not", "sets": { "set": { "name": "62867340c9512b01843811b5", "type": "item", "attribute": "code", "comparator": "Into", "value": "111" } }, "condition": { "type": "composite", "name": "And", "condition": [ { "type": "basic", "name": "Exists", "parameter": { "key": "use-set", "value": "62867340c9512b01843811b5" } }, { "type": "basic", "name": "Header", "parameter": [ { "key": "attribute", "value": "store" }, { "key": "value", "value": "napse,napse2" } ] } ] }, "benefits": { "benefit": { "instance": "FixedDiscount", "nro": "628670c9c9512b018438117f", "parameter": [ { "key": "displayMessage", "value": "Promos con limites 1" }, { "key": "printerMessage", "value": "Promos con limites 1" }, { "key": "TLOGMessage", "value": "Promos con limites 1" }, { "key": "applicationMethod", "value": "resume" }, { "key": "prorationMethod", "value": "proportional" }, { "key": "applicationPriceType", "value": "benefited-price" }, { "key": "hasLimit", "value": "true" }, { "key": "name", "value": "62867033c9512b0184381178" }, { "key": "amount", "value": "300" }, { "key": "unit", "value": "qty" }, { "key": "prorateBCP", "value": "false" }, { "key": "recoveryValue", "value": "0" }, { "key": "recoveryType", "value": "" } ], "applied-elements": { "use-set": {"name": "62867340c9512b01843811b5"} } } } } ] } |
Importación del json desde POSTMAN:
4. Resultado
Promo importada y creada correctamente en la consola de Promo: