PROMO 7.1 - Manual de Lenguaje de Promociones




CONTENIDO


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:

CampoDetalle
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:

Ejemplo Json
{    
	"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:

CampoDetalle

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:

Valor

Descripción

customer

Clientes

benefit

Beneficio externo

coupon

Cupones

event

Eventos

item

Productos

loyaltycard

Tarjetas de fidelidad

payment

Medios de Pago

intersection

Crear un "AND" para más de una condición

union

Crear un "OR" para más de una condición

Para los "type" de "intersection" y "union" se necesita poner una lista de sets. Puede tener intersección dentro de unión y unión dentro de intersección.

attribute

Es el código del Atributo de los elementos. Sus valores posibles son:

Valor

Descripción

Valor de Type

code

Codigo (SKU)

item

unitprice

Precio unitario

item

brand

Marca

item

supplier

Proveedor

item

level1

Departamento

item

level2

Familia

item

level3

Categoria

item

level4

Sub Categoria

item

qty

Cantidad

item

magnitude

Magnitud

item

xprice

Precio total

item

all

Aplica a TODOS

item

discontinuous

Discontinuo

item

lowTurnover

Baja Rotacion

item

keyProduct

Producto Estrella

item

id

Id

coupon

type

Tipo

coupon

qty

Cantidad

coupon

amount

Monto

coupon

all

Aplica a TODOS

coupon

id

Id

customer

type

Tipo

customer

points

Puntos

customer

amount

Saldo

customer

remainingAmount

Monto restante

customer

segment

Segmento

customer

profileCode

Perfil de cliente

customer

creditCampaignCode

Campaña crediticia

customer

all

Aplica a TODOS

customer

redeemPointsPriceFactor

redeemPointsPriceFactor

customer

id

Numero

event

type

Tipo de Transacción

event

value

Valor

event

all

Aplica a TODOS

event

id

Codigo

payment

type

Tipo

payment

bank

Banco

payment

plan

Plan

payment

installments

Cuotas

payment

amount

Monto

payment

itemamount

Monto del Ítem

payment

prefix

Prefijo

payment

all

Aplica a TODOS

payment

payCreditCampaign

Campaña crediticia

payment

prefixGroup

Grupo de Prefijos

payment

pocket

Bolsillo

payment

id

Id

benefit

type

Tipo de beneficio

benefit

amount

Monto

benefit

benefitType

Tipo de beneficio

benefit

comparator

Es el código del comparador de los atributos de los elementos. Sus valores posibles son:

Valor

Descripción

GreaterThan

MAYOR

Distinct

DISTINTO

LessThan

MENOR

Into

IGUAL

value

El valor


A continuación se muestra un ejemplo donde el conjunto es para todos los productos con código igual a 111:

Ejemplo Json
"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:

Ejemplo 2 Json
"set": [
                    {
                        "name": "5feaf1324b10b84760e83f37",
                        "type": "item",
                        "attribute": "level1",
                        "comparator": "Into",
                        "value": "maderas"
                    },
                    {
                        "name": "5feaf13a4b10b84760e83f3a",
                        "type": "payment",
                        "attribute": "type",
                        "comparator": "Into",
                        "value": "card"
                    }
          ]


El siguiente es un ejemplo donde se utiliza el "type" "union":

Ejemplo 3 Json
"set": {
           "name": "6171aabde830a52d9c434b95",
           "type": "union",
           "set" :[
                     {
                         "type": "item",
                         "attribute": "level1",
                         "comparator": "Into",
                         "value": "maderas"
                      },
                     {
                         "type": "payment",
                         "attribute": "type",
                         "comparator": "Into",
                         "value": "card"
                      }
                   ]
         }  


Ejemplo con una Condición Simple:

Ejemplo Json
"condition": {
            "type": "basic",
            "name": "Exists",
            "parameter": {
              "key": "use-set",
              "value": "60f5d150e830a518e0976625"
            }
          }

Detalle de los campos:

CampoDetalle

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:

Valor

Descripción

Between


DayFrequence


WeekFrequence


DayMonthFrequence


DayOfTheMonthFrequence


WeekDay


DayMonth


EqualOrMoreThan


MoreThan


EqualOrLessThan


LessThan


PaymentTotalBenefitedItems


Exists


Distinct

Distinct (solamente de transacciones)

Header

IGUAL (solamente en transacciones)

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:
      - “use-set” que hace referencia a la lista del set y su valor es lo mismo que tiene el "name" del set.

      - “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:

Valor

Descripción

subZone

Sub Zone

zone

Zone

format

Format

storeChain

StoreChain

currencyCode

CurrencyCode

channel

Channel

store

Tienda

terminal

Terminal


Los demás son (cuando no son “Transacción”):

Valor

Descripción

Valor del Type

code

Codigo (SKU)

Item

unitprice

Precio unitario

Item

brand

Marca

Item

supplier

Proveedor

item

level1

Departamento

item

level2

Familia

item

level3

Categoria

item

level4

Sub Categoria

item

qty

Cantidad

item

magnitude

Magnitud

item

xprice

Precio total

item

all

Aplica a TODOS

item

discontinuous

Discontinuo

item

lowTurnover

Baja Rotacion

item

keyProduct

Producto Estrella

item

id

Id

coupon

type

Tipo

coupon

qty

Cantidad

coupon

amount

Monto

coupon

all

Aplica a TODOS

coupon

id

Id

customer

type

Tipo

customer

points

Puntos

customer

amount

Saldo

customer

remainingAmount

Monto restante

customer

segment

Segmento

customer

profileCode

Perfil de cliente

customer

creditCampaignCode

Campaña crediticia

customer

all

Aplica a TODOS

customer

redeemPointsPriceFactor

redeemPointsPriceFactor

customer

id

Numero

event

type

Tipo de Transacción

event

value

Valor

event

all

Aplica a TODOS

event

id

Codigo

payment

type

Tipo

payment

bank

Banco

payment

plan

Plan

payment

installments

Cuotas

payment

amount

Monto

payment

itemamount

Monto del Ítem

payment

prefix

Prefijo

payment

all

Aplica a TODOS

payment

payCreditCampaign

Campaña crediticia

payment

prefixGroup

Grupo de Prefijos

payment

pocket

Bolsillo

payment

id

Id

benefit

type

Tipo de beneficio

benefit

amount

Monto

benefit

benefitType

Tipo de beneficio

benefit


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”.

Json Ejemplo con transacción 

[…]

 {

      "type": "basic",

       "name": "Header",

        "parameter": [

                                   {

                                     "key": "attribute",

                                     "value": "store"

                                      },

                                      {

                                      "key": "value",

                                      "value": "666"

                                       }

                                    ]

 }

[…]


Json Ejemplo sin transacción 
 

"set": [

              {

                "name": "61126855e830a505e41642a3",

                "type": "item"

              },
[...]

"type": "basic",

"name": "EqualOrMoreThan",
"parameter": [

              {

                "key": "use-set",

                "value": "61126855e830a505e41642a3"

              },

              {

                "key": "attribute",

                "value": "xprice"

              },

              {

                "key": "value",

                "value": "1000"

              }

            ] 


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:

Ejemplo Json
"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:

CampoDetalle

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:

Operación

SIMPLE

AND

OR

NOT

AND_NOT

OR_NOT

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:

Ejemplo Json
"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:

CampoDetalle

limit

Límite de veces que se agruparán

combo-component

Una lista de componentes de combo


Los campos dentro de combo-component son:

CampoDetalle

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) )

Valor

Descripción

Valor del Type

qty

Cantidad

item

magnitude

Magnitud

item

xprice

Precio total

item

qty

Cantidad

coupon

amount

Monto

coupon

points

Puntos

customer

amount

Saldo

customer

amount

Monto

payment

itemamount

Monto del Ítem

payment

amount

Monto

loyaltycard

use-set

Es la relación con la lista de sets.

order-criteria

Es el Criterio de ordenamiento. Los posibles valores son:

Valor

Nombre

OneLessExpensive

Uno mas barato por condicion

LessExpensiveFirst

Los mas baratos primero

OneMoreExpensive

Uno mas caro por condicion

MoreExpensiveFirst

Los mas caros primero

equivalence-attribute

Es el Atributo de equivalencia (si tiene). Los posibles valores son:

Valor

Descripción

Valor del Type

unitprice

Precio unitario

item

code

Codigo (SKU)

item

brand

Marca

item

supplier

Proveedor

item

level1

Departamento

item

level2

Familia

item

level3

Categoria

item

level4

Sub Categoria

item

all

Aplica a TODOS

item

discontinuous

Discontinuo

item

lowTurnover

Baja Rotacion

item

keyProduct

Producto Estrella

item

productCode

Cod. Producto

item

barcode

Cod. Barra Producto

item

id

Id

coupon

type

Tipo

coupon

qty

Cantidad

coupon

amount

Monto

coupon

all

Aplica a TODOS

coupon

type

Tipo

customer

profileCode

Perfil de cliente

customer

creditCampaignCode

Campaña crediticia

customer

id

Codigo

payment

type

Tipo

payment

bank

Banco

payment

plan

Plan

payment

installments

Cuotas

payment

itemamount

Monto del Ítem

payment

prefix

Prefijo

payment

all

Aplica a TODOS

payment

payCreditCampaign

Campaña crediticia

payment

prefixGroup

Grupo de Prefijos

payment

pocket

Bolsillo

payment

type

Tipo

loyaltycard

contract

Convenio

loyaltycard

inequivalence-attribute


Es el Atributo de inequivalencia (si tiene). Los posibles valores son:

Valor

Descripción

Valor del Type

brand

Marca

item

code

Codigo (SKU)

item

unitprice

Precio unitario

item

supplier

Proveedor

item

level1

Departamento

item

level2

Familia

item

level3

Categoria

item

level4

Sub Categoria

item

qty

Cantidad

item

magnitude

Magnitud

item

xprice

Precio total

item

all

Aplica a TODOS

item

discontinuous

Discontinuo

item

lowTurnover

Baja Rotacion

item

keyProduct

Producto Estrella

item

redeemOption

redeemOption

item

productCode

Cod. Producto

item

barcode

Cod. Barra Producto

item

id

Id

coupon

type

Tipo

coupon

qty

Cantidad

coupon

amount

Monto

coupon

all

Aplica a TODOS

coupon

type

Tipo

customer

profileCode

Perfil de cliente

customer

creditCampaignCode

Campaña crediticia

customer

id

Codigo

payment

type

Tipo

payment

bank

Banco

payment

plan

Plan

payment

installments

Cuotas

payment

amount

Monto

payment

itemamount

Monto del Ítem

payment

prefix

Prefijo

payment

all

Aplica a TODOS

payment

payCreditCampaign

Campaña crediticia

payment

prefixGroup

Grupo de Prefijos

payment

pocket

Bolsillo

payment

type

Tipo

loyaltycard

contract

Convenio

loyaltycard


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.

Ejemplo Json
"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:

Ejemplo 2 Json
"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:

Valor

Descripción

CalculatedCouponApplicationBenefit

Aplicación de Cupón Calculado

WalletBenefit

Beneficio Monedero

ContractPercentageDiscount

Descuento por convenio

RedeemPointsBenefit

Redención de Puntos

CalculatedCouponBenefit

Cupón Calculado

CatalogRedeemBenefit

Canje de Puntos por Catálogo

RedeemWithOptionsBenefit

Canje con Opciones

ExternalBenefit

Beneficio Externo

BankRefundBenefit

Reintegro bancario

PercentLoyaltyBenefit

Porcentaje de fidelización

GeneralBenefit

Beneficio General

GiftBenefit

Regalo

PaymentPlanBenefit

Plan de pagos

CouponBenefit

Cupón

FactorLoyaltyBenefit

Coeficiente de fidelización

LoyaltyBenefit

Puntos de fidelización

PercentageDiscount

Descuento porcentaje

FixedDiscount

Descuento fijo

NewPrice

Nuevo precio

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 (Options values (codes)) como se ve abajo.

Parámetros generales:

Options value (codes)

Key code

Descripción


displayMessage


Mensaje en POS


TLOGMessage


Coca + Papas, lleva las papas gratis


printerMessage


Mensaje en impresora


account


Cuenta contable

{"code" : "cheapest-first","name" : "Mas baratos primero"

}


prorationMethod


Método de prorrateo 

{"code" : "most-expensive-first","name" : "Mas caros primero"}


prorationMethod

Método de prorrateo 

{"code" : "proportional","name" : "Proporcional"}

prorationMethod

Método de prorrateo 

{"code" : "benefited-price","name" : "Precio beneficiado"

}

applicationPriceType


Aplicar sobre.. 

{"code" : "original-price","name" : "Precio original"}

applicationPriceType


Aplicar sobre.. 

{"code" : "resume","name" : "Resumen"}

applicationMethod


Método de aplicación

{"code" : "lineByLine","name" : "Linea a linea"}

applicationMethod


Método de aplicación


name


El número de la promoción se necesita cuando se hacen las operaciones (U: Actualizar / R: Cancelar )


Parámetros exclusivos:

Key codeRequeridoDescripciónTipo de beneficioOptions value (Code)Options value (Name)
externalAmountfalsePrecio informado por el POSNuevo precio

newpricefalseEl siguiente precio ($)Nuevo precio

unitfalsePor cada unidad deNuevo precioqtyCantidad
unitfalsePor cada unidad deNuevo preciomagnitudeMagnitud
unitfalsePor cada unidad deNuevo precionaTodo
recoveryValuefalseValor del RecuperoNuevo precio

recoveryTypefalseTipo de RecuperoNuevo preciopPorcentaje
recoveryTypefalseTipo de RecuperoNuevo precioaMonto fijo
prorateBCPfalseProrratear entre participantesNuevo precio

amounttrueEl siguiente monto ($)Descuento fijo

unitfalsePor cada unidad deDescuento fijoqtyCantidad
unitfalsePor cada unidad deDescuento fijomagnitudeMagnitud
unitfalsePor cada unidad deDescuento fijonaTodo
recoveryValuefalseValor del RecuperoDescuento fijo

recoveryTypefalseTipo de RecuperoDescuento fijopPorcentaje
recoveryTypefalseTipo de RecuperoDescuento fijoaMonto fijo
prorateBCPfalseProrratear entre participantesDescuento fijo

percenttrueEl siguiente porcentaje (%)Descuento porcentaje

unitfalsePor cada unidad deDescuento porcentajeqtyCantidad
unitfalsePor cada unidad deDescuento porcentajemagnitudeMagnitud
unitfalsePor cada unidad deDescuento porcentajenaTodo
recoveryValuefalseValor del RecuperoDescuento porcentaje

recoveryTypefalseTipo de RecuperoDescuento porcentajepPorcentaje
recoveryTypefalseTipo de RecuperoDescuento porcentajeaMonto fijo
prorateBCPfalseProrratear entre participantesDescuento porcentaje

valuetrueOtorgar puntos (cantidad)Puntos de fidelización

typetrueDe tipoPuntos de fidelización

unitfalsePor cada unidad dePuntos de fidelizaciónqtyCantidad
unitfalsePor cada unidad dePuntos de fidelizaciónmagnitudeMagnitud
unitfalsePor cada unidad dePuntos de fidelizaciónnaTodo
trxPointsLimitfalseMáximo de puntos por transacciónPuntos de fidelización

recoveryValuefalseValor del RecuperoPuntos de fidelización

recoveryTypefalseTipo de RecuperoPuntos de fidelizaciónpPorcentaje
recoveryTypefalseTipo de RecuperoPuntos de fidelizaciónaMonto fijo
ignorePaidInPointsfalseIgnorar Pagado con PuntosPuntos de fidelización

typetrueOtorgar puntos de tipoCoeficiente de fidelización

factortrueCon el siguiente factorCoeficiente de fidelización

trxPointsLimitfalseMáximo de puntos por transacciónCoeficiente de fidelización

recoveryValuefalseValor del RecuperoCoeficiente de fidelización

recoveryTypefalseTipo de RecuperoCoeficiente de fidelizaciónpPorcentaje
recoveryTypefalseTipo de RecuperoCoeficiente de fidelizaciónaMonto fijo
ignorePaidInPointsfalseIgnorar Pagado con PuntosCoeficiente de fidelización

qtytrueOtorgar cupones (cantidad)Cupón

couponidtrueDe tipo/identificadorCupón

infoPostrueDatos para el POSCupón0nameInfoPos0
infoPostrueDatos para el POSCupón1nameInfoPos1
infoPostrueDatos para el POSCupón2nameInfoPos2
recoveryValuefalseValor del RecuperoCupón

recoveryTypefalseTipo de RecuperoCupónpPorcentaje
recoveryTypefalseTipo de RecuperoCupónaMonto fijo
paymentplanidtrueOtorgar el plan de pagosPlan de pagos

paymentplanvtolidfalsePlan de Pago VtolPlan de pagos

typetruePara tipo de pagoPlan de pagos

tendertrueCon medio de pagoPlan de pagos

installmentstrueCuotasPlan de pagos

bankfalseDel bancoPlan de pagos

limitamountfalseMonto limitePlan de pagos

prefixesfalsePrefijoPlan de pagos

percentfalseCon un PorcentajePlan de pagos

percenttypefalseDe (Descuento/Recargo)Plan de pagosindistinctIndistinto
percenttypefalseDe (Descuento/Recargo)Plan de pagosdiscountDescuento
percenttypefalseDe (Descuento/Recargo)Plan de pagossurchargeRecargo
installmentsToDisplayfalseCuotas a mostrar en el POSPlan de pagos

pocketfalseBolsilloPlan de pagos

recoveryValuefalseValor del RecuperoPlan de pagos

recoveryTypefalseTipo de RecuperoPlan de pagospPorcentaje
recoveryTypefalseTipo de RecuperoPlan de pagosaMonto fijo
vtoloperationtypefalseOperationType VtolPlan de pagos

qtytrueOtorgar regalos (cantidad)Regalo

giftidtrueCon ID de regaloRegalo

gifttypetrueY tipo de regaloRegalo

recoveryValuefalseValor del RecuperoRegalo

recoveryTypefalseTipo de RecuperoRegalopPorcentaje
recoveryTypefalseTipo de RecuperoRegaloaMonto fijo
qtytrueCantidad de beneficios generalesBeneficio General

generalidtrueCon IDBeneficio General

generaltypetrueY tipoBeneficio General

recoveryValuefalseValor del RecuperoBeneficio General

recoveryTypefalseTipo de RecuperoBeneficio GeneralpPorcentaje
recoveryTypefalseTipo de RecuperoBeneficio GeneralaMonto fijo
percenttrueOtorgar un porcentaje del precio en puntosPorcentaje de fidelización

typetrueDe tipoPorcentaje de fidelización

trxPointsLimitfalseMáximo de puntos por transacciónPorcentaje de fidelización

recoveryValuefalseValor del RecuperoPorcentaje de fidelización

recoveryTypefalseTipo de RecuperoPorcentaje de fidelizaciónpPorcentaje
recoveryTypefalseTipo de RecuperoPorcentaje de fidelizaciónaMonto fijo
ignorePaidInPointsfalseIgnorar Pagado con PuntosPorcentaje de fidelización

paymentplanidtruebankRefoundBenefit-Otorgar el plan de pagosReintegro bancario

paymentplanvtolidfalsePlan de Pago VtolReintegro bancario

typetruebankRefoundBenefit-Para tipo de pagoReintegro bancario

tendertruebankRefoundBenefit-Con medio de pagoReintegro bancario

installmentstruebankRefoundBenefit-CuotasReintegro bancario

bankfalsebankRefoundBenefit-Del bancoReintegro bancario

limitamountfalsebankRefoundBenefit-Monto limiteReintegro bancario

prefixesfalsebankRefoundBenefit-PrefijoReintegro bancario

percenttruebankRefoundBenefit-Con un PorcentajeReintegro bancario

percenttypefalsebankRefoundBenefit-De (Descuento/Recargo)Reintegro bancariodiscountDescuento
pocketfalsebankRefoundBenefit-Del bolsilloReintegro bancario

recoveryValuefalseValor del RecuperoReintegro bancario

recoveryTypefalseTipo de RecuperoReintegro bancariopPorcentaje
recoveryTypefalseTipo de RecuperoReintegro bancarioaMonto fijo
vtoloperationtypefalseOperationType VtolReintegro bancario

typetrueDe tipoBeneficio Externo

recoveryValuefalseValor del RecuperoBeneficio Externo

recoveryTypefalseTipo de RecuperoBeneficio ExternopPorcentaje
recoveryTypefalseTipo de RecuperoBeneficio ExternoaMonto fijo
prorateBCPfalseProrratear entre participantesBeneficio Externo

recoveryValuefalseValor del RecuperoCanje con Opciones

recoveryTypefalseTipo de RecuperoCanje con OpcionespPorcentaje
recoveryTypefalseTipo de RecuperoCanje con OpcionesaMonto fijo
typetrueTipo tarjeta canje puntos por catalogoCanje de Puntos por Catalogo

recoveryValuefalseValor del RecuperoCanje de Puntos por Catalogo

recoveryTypefalseTipo de RecuperoCanje de Puntos por CatalogopPorcentaje
recoveryTypefalseTipo de RecuperoCanje de Puntos por CatalogoaMonto fijo
prorateBCPfalseProrratear entre participantesCanje de Puntos por Catalogo

couponidtrueTipoAplicacion de Cupón Calculado

recoveryValuefalseValor del RecuperoAplicacion de Cupón Calculado

recoveryTypefalseTipo de RecuperoAplicacion de Cupón CalculadopPorcentaje
recoveryTypefalseTipo de RecuperoAplicacion de Cupón CalculadoaMonto fijo
prorateBCPfalseProrratear entre participantesAplicacion de Cupón Calculado

couponidtrueTipoCupón Calculado

amountApplicationTypetrueTipo de aplicacion de montoCupón CalculadopercentageCupón calculado - aplicación del monto por porcentaje
amountApplicationTypetrueTipo de aplicacion de montoCupón CalculadofixedAmountCupón calculado - aplicación del monto por monto fijo
amountApplicationTypetrueTipo de aplicacion de montoCupón CalculadoexternalAmountCupón calculado - aplicación del monto por monto externo
calculatedCouponValuetrueValor del tipo de cupón calculadoCupón Calculado

qtytrueCantidadCupón Calculado

recoveryValuefalseValor del RecuperoCupón Calculado

recoveryTypefalseTipo de RecuperoCupón CalculadopPorcentaje
recoveryTypefalseTipo de RecuperoCupón CalculadoaMonto fijo
accumulateInSingleCouponfalseAcumular el monto de beneficios en un cupón únicoCupón Calculado

typetrueTipoRedención de Puntos

factortrueTipoRedención de Puntos

recoveryValuefalseValor del RecuperoRedención de Puntos

recoveryTypefalseTipo de RecuperoRedención de PuntospPorcentaje
recoveryTypefalseTipo de RecuperoRedención de PuntosaMonto fijo
prorateBCPfalseProrratear entre participantesRedención de Puntos

percentfalseCon un PorcentajeDescuento por convenio

unitfalsePor cada unidad deDescuento por convenioqtyCantidad
unitfalsePor cada unidad deDescuento por conveniomagnitudeMagnitud
unitfalsePor cada unidad deDescuento por convenionaTodo
balancefalseBalanceDescuento por conveniobalance1Balance 1
balancefalseBalanceDescuento por conveniobalance2Balance 2
recoveryValuefalseValor del RecuperoDescuento por convenio

recoveryTypefalseTipo de RecuperoDescuento por conveniopPorcentaje
recoveryTypefalseTipo de RecuperoDescuento por convenioaMonto fijo
prorateBCPfalseProrratear entre participantesDescuento por convenio

wallettrueMonederoBeneficio Monedero

limitAmounttrueLimiteBeneficio Monedero

percenttruePorcentajeBeneficio Monedero

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.

Ejemplo Json
          "applied-elements": {
            "use-set": {
              "name": "628bedd8a6c1d243c013421e",
              "order-criteria": "MoreExpensiveFirst",
              " max ": "2.0",
              "attribute": "qty",
              " min ": "2.0"
            }
          }


Sus campos son:

CampoDetalle

name

Referencia a un set

order-criteria

Son los Criterios de ordenamento, sus posibles valores son :

Valor

Descripción

MoreExpensiveFirst

Los mas caros primero

LessExpensiveFirst

Los mas baratos primero

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 :

Valor

Descripción

qty

Cantidad

magnitude

Magnitud

xprice

Precio total


Escalones:

Son Escalones de la definición de promociones escalonadas de un beneficio.

Ejemplo Json
          "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:

Valor

Descripción

qty

Cantidad

magnitude

Magnitud

xprice

Precio total

staggeredStep

Es una lista de la definición de la Escalones, sus campos son:

CampoDescripción

nro

Número de la base de datos cuando se hacen las operaciones (U: Actualizar / R: Cancelar ) es un dato requerido.

min

Ocurrencias mínimas

max

Ocurrencias máximas

applyValue

Es el Valor



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.

Ejemplo Json
{
    "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.

Ejemplo 1 Json
{
	"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.

Ejemplo 2 Json
{
	"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.

Ejemplo 3 Json
{
	"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.

Ejemplo 4 Json
{
	"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.

Ejemplo 5 Json
{
	"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.

Ejemplo 6 Json
{
	"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.

Ejemplo 7 Json
{
	"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.

Ejemplo 8 Json
{
	"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 confección del Json es tomar una promoción 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 correctamente en la consola de Promo:


Importación de Promoción con tipo, subtipo y forma de aplicación:

Si se tiene una promoción con tipo, subtipo y forma de aplicación: 

Estas propiedades no son  propias del mapa:

pero se pueden agregar manualmente:

y se importará la promoción con su tipo, subtipo y forma de aplicación.

  • Sem rótulos