Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Informações
titleImportante
  • Si el motor posse posee la opción de seguridad via vía https, entonces todas las referencias a http:// deben leerse como https://
  • Si se encuentra activa la autenticación por usuario/clave, entonces los request deberan incoporar en el encabezado(headers) las siguiente propiedad:  "Authorization":"Basic user:encrypted_password_MD5"
  • Para mayor información consultar el manual de instalación y configuración

...

Propiedad

Tipo de dato

Descripción

Requerido

Valor ante ausencia

companyId

Alfanumérico

Identifica la compañía que envia envía el mensaje

SI


store

Alfanumérico

Identifica el local que envía el mensaje.


channelAlfanuméricoIdentifica el canal donde asociado a la transacción.No""

terminal

Numérico

Identifica la terminal emisora


date-time

YYYY-MM-DD HH:MM:SS

Fecha y hora del mensaje. (date-time="2017-03-21 15:20:26")


messageId

Numérico positivo

Identifica cada uno de los mensajes enviados por la terminal, siendo este número utlizado por el Motor de Promociones como identificador cuando envíe una respuesta.


void-trx

Booleano

Indica si la transacción es una devolución.

No

"false"

response

Booleano

Indica si se desea que el Motor dé una respuesta ante el mensaje enviado.

No

"false"

init-tck

Booleano

Indica si con este mensaje se debe iniciar una nueva sesión.

No

"false"

evaluate

Booleano

Le indica al motor que calcule las promociones utilizando los elementos ingresado hasta ese momento.

No

"false"

status

Alfanumérico

Indica en que estado se encuentra el punto de venta

  • sales
  • total
  • payment
    Existen valores específicos de esta propiedad que serán presentados en la sección de Fidelidad

No

""

msg-version

Alfanumérico

Indica la versión del mensaje en cuestión

No

""

map-version

Entero positivo

Indica al motor que mapa utilizar. Tendrá sentido sólo si el valor de "void-trx" es verdadero.

No

""

suggest

Booleano

Le indica al motor si debe sugerir promociones o no. Si suggest-seq y suggest-seq-type no están presentes se tomará todo el contexto para realizar la sugerencia.

No

"false"

suggest-seq

Numérico

Indica el número de secuencia sobre el que el motor realizará la sugerencia en caso de que el atributo suggest="true". Este atributo será acompañado por el suggest-seq-type, que de no ser especificado, se asumirá suggest-seq-type="item"

No

"1" o null

suggest-seq-type

Alfabético

Indica el tipo de línea sobre la que deberá hacerse la sugerencia en caso de que el atributo suggest="true". Este atributo será acompañado por el suggest-seq, que de no estar especificado, se asumirá sugget-seq="1". Los valores que puede tomar este atributo son: item, coupon, payment, event, customer.

No

"item" o null

suggest-per-type

Booleano

Le indica al motor si deben sugerir promociones teniendo en cuenta el tipo de los conjuntos participantes de la promoción o no. Si suggest-filter-type no está presente se sugerirán todas las promociones que estén disponibles para sugerencia teniendo en cuenta el atributo suggest del mapa y las promociones. Si está presente y en verdadero, los atributos suggest, suggest-seq y suggest-seq-type serán ignorados.

No

"false"

suggest-filter-type

Alfabético

Indica el tipo de conjunto participante de la promoción que deberá tenerse en cuenta para la sugerencia en caso de que el atributo suggest-per-type="true". Los valores que puede tomar este atributo son: item, coupon, payment, event, customer. Si no estuviera presente, se asume todos los tipos de conjuntos.

No

"null"

suggest-extended

Booleano

Le indica al motor si debe mostrar la informacion de los beneficios de cada promocion sugerida. Si suggest es false, el valor de este campo no tiene relevancia.

No

"false"

offline

Booleano

Le indica al motor que la transacción será tratada en modo offline, es decir ante una contingencia de comunicación con PROMO Central se almacenará para su posterior envío (ver nota debajo "Comportamiento de Promo en modo offline").

No

"false"

originalTransaction

Alfabético

Para el caso de un valor de status = requestTransaction, esta propiedad indicará la transacción que se requiere consultar

No

""

chosenOptionEntero positivioEn el caso de que el resultado de la evaluación haya resultado en una serie de opciones (varios bloques "optional") este atributo permite que el sistema externo informe al motor de Promo, cual de esas opciones fue la que finalmente se han aplicado u otorgado al cliente.  El valor es basado en 0, es decir la primer opción es la número 0, la siguiente la número 1 y así sucesivamente.No0
storeChainAlfabéticoIdentificador de la "Cadena" a la que pertenece la tienda (Store) de la transacción.  Puede ser utilizada en la condición de una promoción.No""
formatAlfabéticoIdentificador del Formato al cual pertenece la tienda (Store) de la transacción.  Puede ser utilizada en la condición de una promoción.No""
zoneAlfabéticoIdentificador de la Zona a la cual pertenece la tienda (Store) de la transacción.  Puede ser utilizada en la condición de una promoción.No""
subZoneAlfabéticoIdentificador de la SubZona a la cual pertenece la tienda (Store) de la transacción.  Puede ser utilizada en la condición de una promoción.No""
tenderGroupCodeAlfabéticoCuando se utilice preciadores, si se envia el valor "cr" retornara el precio a crédito, en caso de otro valor o de no enviarlo retornara el precio de venta.No""
currencyCodeAlfabéticoCódigo de la moneda en la cual se está realizando la transacción. Puede ser utilizada en la condición de una promoción, por ejemplo para condicionar la entrega de puntos a esa moneda.No""
limitBalancesBooleanoCuando se envíe en 'true' se devolverá en la respuesta del motor al POS los saldos de limites de Tienda y General (retail) que tengan definido las promociones que hayan participado de la transacción en curso. Valor por defecto "false" (A partir de Promo 7.0.2)No"false"

...

Elemento

Propiedad

Tipo de dato

Descripción

Requerido

Valor ante ausencia

Ítem

unitprice

Numérico positivo

Precio unitario del artículo en cuestión.

Si



xprice

Numérico positivo

Precio extendido del artículo en cuestión. Es igual a la cantidad por el precio unitario.

Si



qty

Entero positivo

Cantidad de artículos en la línea.

Si

1


magnitude

Numérico positivo

Si el artículo es mensurable por otro unidad que no sea la cantidad, deberá ser expresad en esta propiedad.

No

0


code

Alfanumérico

Código propio del artículo.

No

"-"


ProductcodeAlfanumérico

Código del Producto.

Soporta múltiples valores.

No

BarcodeAlfanumérico

Código de Barras del Producto.

Soporta múltiples valores.

No


brand

Alfanumérico

Marca del artículo.

No

"-"


supplier

Alfanumérico

Proveedor al que pertenece el artículo.

No

"-"


discountable

Alfanumérico

Si el artículo es puede recibir descuentos o no.

No

"-"


level1

Alfanumérico

Nivel 1 de categorización del artículo. Anteriormente este nivel se conocía con el nombre de Departamento.

Soporta múltiples valors.

No

"-"


level2

Alfanumérico

Nivel 2 de categorización del artículo. Anteriormente este nivel se conocía como la Familia del artículo.

Soporta múltiples valores.

No

"-"


level3

Alfanumérico

Nivel 3 de categorización del artículo. Anteriormente este nivel se conocía como la Categoría del artículo.

Soporta múltiples valores.

No

"-"


level4

Alfanumérico

Nivel 4 de categorización del artículo. Anteriormente este nivel se conocía como la subcategoría del artículo.

Soporta múltiples valorses.

No

"-"


discontinuousbooleanoDetermina si el producto es un producto discontinuoNofalse

lowTurnoverbooleanoDetermina si el producto es un producto de baja rotaciónNofalse

keyProductbooleanoDetermina si el producto es un producto estrellaNofalse

applyCatalogRedeembooleanoDetermina si el producto participa en el Canje de Puntos por CatálogoNofalse

taxesNumérico positivoValor de los impuestos discriminados respecto al precio unitario. (Ver atributo valueWithTaxes)No0

qty2

Entero positivo

(Version > 7.EP2.1) Cantidad del producto a superar para otorgar el precio 2 (price2).  Solo para Promociones de Nuevo Precio que indican usar monto externo.No0

price2

Numérico positivo

(Version > 7.EP2.1) Precio una vez superada la cantidad 2 (qty2). Solo para Promociones de Nuevo Precio que indican usar monto externo.No0

qty3

Entero positivo

(Version > 7.EP2.1) Cantidad del producto a superar para otorgar el precio 3 (price3). Solo para Promociones de Nuevo Precio que indican usar monto externo.No0

price3

Numérico positivo

(Version > 7.EP2.1) Precio una vez superada la cantidad 3 (qty3). Solo para Promociones de Nuevo Precio que indican usar monto externo.No0

redeemOptionAlfanumérico(Version > 7.EP2.1) Beneficio "Canje con opciones" - informara las opciones entre las que puede elegir el cliente para acceder a un determinado beneficio canjeando una determinada cantidad de puntos (del cliente y/o elemento de fidelidad) Mas detalle en Apéndice I - Canje con opcionesNo

Coupon

amount

Numérico positivo

Se utiliza para indicar el valor monetario del cupón. Si no tiene no se utiliza.

No

0


type

Alfanumérico

Tipo de cupón (Aclaración: el tipo de cupón externo son cupones no administrados por PROMO. Este tipo de cupón es emitido y/o redimido por un sistema externo a PROMO).

No

"-"


qty

Entero positivo

Cantidad

No

1


id

Alfanumérico

Identificador del cupón.

No

"-"

LoyaltyCard

type

Alfanumérico

Tipo de elemento de fidelidad loyalty

No

"-"


id

Alfanumérico

Idenficiador del elemento de fidelidad loyalty

Si

"-"


amount

Numérico positivo

Saldo del elemento de fidelidad loyalty

No

0


chargeAmount

Numérico positivo

Saldo a acreditar a un elemento de fidelidad loyalty

No

0


consumeAmount

Numérico positivo

Saldo a debitar a un elemento de fidelidad loyalty

No

0


status

Alfanumérico

ENABLED o DISABLED para habilitar o deshabilitar un elemento de fidelidad  (solo valido en status LoyatyActivation)

ENABLED para habilitar un elemento de fidelidad (solo valido en status FINISH)

No

"ENABLED"


nextExpDate

NuméricoFecha de la próxima expiración de puntos en format YYYYmmdd.  Solo es informado en elementos de fidelidad que posean vencimiento de carga definido.No"-"

nextExpValue

NuméricoCantidad de puntos que vencerán en el próximo vencimiento (nextExpDate) y se informa solo si el elemento de fidelidad posee vencimiento de carga definido.No"-"

reason

Alfanumérico

Código del motivo por el cual se está realizando el chargeAmount o consumeAmount pertinente.  Este código corresponde a los valores de motivos definidos en la consola de PromoNo"-"

cvv

Alfanumérico

Corresponde al código de seguridad o cvv asociado al elemento de fidelidad.No"-"

validFromAlfanuméricoFecha de inicio de vigencia . Formato "YYYY-MM-DD" (Año-Mes-Dia) .Ejemplo"2021-07-16"No"-"

validToAlfanuméricoFecha de fin de vigencia . Formato "YYYY-MM-DD" (Año-Mes-Dia) .Ejemplo"2021-07-16"No"-"

Customer

type

Alfanumérico

Tipo de cliente.

No

"-"


id

Alfanumérico

Identifica al cliente a través del Código.

No

"-"


remainingAmount

Numérico positivo

Propiedad que se puede utilizar para indicar el saldo a favor o en contra del cliente en cuestión. (compatibilidad con PROMO 4 y versiones anteriores)

No

0


points

Entero positivo

Saldo que posee el cliente. (compatibilidad con PROMO 4 y versiones anteriores)

No

0


email

Alfanumérico

Atributo incluido para la consulta de clientes

No

""


name

Alfanumérico

Atributo incluido para la consulta de clientes

No

""


lastName

Alfanumérico

Atributo incluido para la consulta de clientes

No

""


Identifier

Numérico positivo

Atributo incluido para la consulta de clientes

No

""


cardNumber

Numérico positivo

Atributo incluido para la consulta de clientes

No

""


creditCampaignCode

Alfanumérico

Código de la Campaña crediticia

No

""


profileCode

Alfanumérico

Código del perfil del cliente

No

""


limitedBenefits

Alfanumérico

Consiste en un listado de Limites asociados a Convenios.  El mismo es del tipo: limitedBenefits:"limite1:valor1;limite2:valor2;limite3:valor3.....".  Estos valores pueden ser informados desde el Punto de Venta o bien son obtenidos mediante una respuesta a LoyaltyValidation y reinyectados por parte del Puntos de venta como han sido recibidos.

No

""

segmentAlfanuméricoLista de Códigos de Segmento a los cuales pertenece el cliente, separados por ;. Se listarán sólo los segmentos externos.No""

amountNumérico positivoPropiedad que se puede utilizar para indicar el saldo correspondiente a un clienteNo0

raffleData

Alfanumérico

Datos para imprimir en cupones informativos, orientado principalmente a sorteos.  Ver Manual de Usuario para información sobre cupones Informativos.No"-"

"Payment Los atributos amount e itemamount son excluyentes y su uso depende de la versión de la promoción codificada que se
configure en el motor para manejar los pagos parciales.

type

Alfanumérico

Tipo de medio de pago.

No

"-"


id

Alfanumérico

Identificador del pago.

No

"-"


plan

Alfanumérico

Plan del medio de pago.

No

"-"


amount

Numérico positivo

Dinero que se utiliza con ese medio de pago. Dado que el monto del pago (PA) se calcula como PA = PIA  (1 - %desc) o PA = PIA * (1+%recargo)*
se obtiene que el monto de los ítems que se desea pagar (PIA) se calcula como PIA = PA / (1 - %desc) o PIA = PA / (1+%recargo)

No

0


bank

Alfanumérico

Banco relacionado con el medio de pago.

No

"-"


itemamount

Numérico positivo

Dinero que representa el monto de ítems que se desea pagar.

No

0


balance

Booleano

Indica si con este medio de pago se cancela el saldo de la transacción. Sí el valor es true, entonces no es necesario enviar el amount o itemaount.

No

false


pointsTypeAlfanuméricoIdentifica el tipo de pago con puntos (ver manual de usuario Final Promo 7 - "Ignorar pago con Puntos" - Ver también beneficio PromotionPaidInPoints)No""

installmentsNumérico positivo

Indica la cantidad de cuotas asociadas al pago

No""

prefixAlfanuméricoIndica el Prefijo asociado al pagoNo""

pocketAlfanuméricoIndica el Bolsllo asociado al pago No""

prefixGroupAlfanuméricoIndica el grupo de Prefijos asociado al pagoNo""

payCreditCampaignAlfanuméricoIndica la Campaña Crediticia asociada al pagoNo""

Event

type

Alfanumérico

Tipo de evento.

No

"-"


id

Alfanumérico

Identificador del evento.

No

"-"


value

Alfanumérico

Valor que representa el evento.

No

"-"

BenefitidAlfanumérico

Identificador del beneficio externo.

Si

typeAlfanumérico

Tipo de beneficio externo.

Si

amountNumérico positivo

Se utiliza para indicar el monto a descontar o el porcentaje de descuento (de acuerdo al benefitType).

Si

benefitTypeAlfanumérico

Indica el tipo de beneficio a generar.

  • desc: aplica el descuento sobre los ítem. Valor por defecto.
  • porc: porcentaje de descuento
No"desc"

seqItemAlfanumérico

Número de secuencia de los items a los cuales hay que aplicar el descuento. Si no viene el atributo o viene vacio se asume que es para todo el ticket. En caso de tener varios secuencias, las mismas deben venir separados por coma. Si algun alguna secuencia tiene mas de una cantidad, se debe concatenar con un =. Ejemplo: 1=2,2,3=3 (indica que el descuento se aplica a dos elementos de la secuencia uno, uno de la secuencia dos y tres la secuencia 3

No

...

Aviso
titleConsideración del balance con saldo 0 o ya consumido por otro beneficio

Cuando el balance informado tenga saldo 0 o exista en la mismo mapa a evaluar promociones que apliquen al mismo balance y el saldo del mismo no alcanza para todos los beneficios solo se dará los beneficios que alcancen.


Ejemplos de beneficios monetarios con balances:

Canje de cupón Calculado:

  • Con Balance con saldo


Bloco de código
languagexml
themeEmacs
titleRequest - xml
<message companyId="napse" store="napse" terminal="8" date-time="2022-07-01 11:16:23" init-tck="true" messageId="1" void-trx="false" response="true" status="sales" evaluate="true" offline="false" suggest="false" map-version="5469">
 <item-add seq="1" code="1" qty="1" magnitud="0" xprice="1000" unitprice="1000"/>
 <coupon-add seq="1" id="12321321" type="cupcal" amount="1000" />
 <customer-add seq="1" type="vip" id="1234" balances="1:2000"/>
</message>

...

Informações
titleResponse - JSON

{
  "message": {
    "companyId": "napse",
    "ack": "0",
    "engine": "2.6",
    "mapversion": "5469",
    "messageId": "2",
    "store": "napse",
    "terminal": "8",
    "optional": [{
      "promo": [{
        "code": "balance1cupcal",
        "id": "balance1cupcal",
        "nro": "62bf19ce8275810d9cc9f643",
        "benefit": [{
          "TLOGMessage": "balance1",
          "account": "",
          "applicationMethod": "resume",
          "balance": "1",
          "baseAmount": "1000.00",
          "benefitType": "CalculatedCouponApplicationBenefit",
          "couponId": "cupcal",
          "discountAmount": "10.00",
          "displayMessage": "balance1",
          "name": "62bf19ce8275810d9cc9f643",
          "nro": "62bf51168275812a6488efdd",
          "order": "1",
          "printerMessage": "balance1",
          "prorationMethod": "PROPORTIONAL",
          "unit": "",
          "usedCoupons": "12321321",
          "apply": {
            "item": [{
              "magnitude": "0.000",
              "qty": "1.000",
              "seq": "1",
              "value": "10.00",
              "valueWithTaxes": "10.00",
              "xprice": "1000.00"
            }]
          }
        }]
      }]
    }]
  }
}


Beneficio Externo:

  • Con Balance con saldo


Bloco de código
languagexml
themeEmacs
titleRequest - xml
<message companyId="napse" store="napse" terminal="8" date-time="2022-07-01 11:16:25" init-tck="true" messageId="3" void-trx="false" response="true" status="sales" evaluate="true" offline="false" suggest="false" map-version="5469">
 <item-add seq="1" code="2" qty="1" magnitud="0" xprice="1000" unitprice="1000"/>
 <customer-add seq="1" balances="2:1000" type="vip" id="1234"/>
 <benefit-add seq="1" type="ben" amount="10" benefitType="porc"/>
</message>

...

Informações
titleResponse - JSON

{
  "message": {
    "companyId": "napse",
    "ack": "0",
    "engine": "2.6",
    "mapversion": "5469",
    "messageId": "5",
    "store": "napse",
    "terminal": "8",
    "optional": [{
      "promo": [{
        "code": "balance2_benext",
        "id": "balance2_benext",
        "nro": "62bf1d5a8275810d9cc9f650",
        "benefit": [{
          "TLOGMessage": "balance2",
          "account": "",
          "applicationMethod": "resume",
          "balance": "2",
          "baseAmount": "1000.00",
          "benefitType": "ExternalBenefit",
          "discountPercentage": "10.00",
          "displayMessage": "balance2",
          "id": "-",
          "nro": "62bf51478275812a6488efe3",
          "order": "1",
          "printerMessage": "balance2",
          "prorationMethod": "PROPORTIONAL",
          "seq": "1",
          "type": "ben",
          "apply": {
            "item": [{
              "magnitude": "0.000",
              "qty": "1.000",
              "seq": "1",
              "value": "90.00",
              "valueWithTaxes": "0.00",
              "xprice": "1000.00"
            }]
          }
        }]
      }]
    }]
  }
}

Descuento Fijo:

  • Con balance con saldo


Bloco de código
languagexml
themeEmacs
titleRequest - xml
<message companyId="napse"store="napse" terminal="8" date-time="2022-07-01 11:16:30" init-tck="true" messageId="7" void-trx="false" response="true" status="sales" evaluate="true" offline="false" suggest="false" map-version="5469">
  <item-add seq="1" code="5" qty="1" magnitud="0" xprice="10000" unitprice="10000"/>
<customer-add seq="1" id="1" type="vip" balances="5:10000"/>
<loyaltycard-add seq="1" id="123123123" type="tipo" amount="1000"/>
</message>

...

Informações
titleResponse - JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "2.6",
    "mapversion": "5469",
    "messageId": "8",
    "store": "napse",
    "terminal": "8",
    "optional": [{
      "promo": [{
        "code": "balance5DescuentoFijo",
        "id": "balance5DescuentoFijo",
        "nro": "62bf521c8275812a6488eff8",
        "benefit": [{
          "TLOGMessage": "balance5",
          "account": "",
          "applicationMethod": "resume",
          "balance": "5",
          "baseAmount": "10000.00",
          "benefitType": "FixedDiscount",
          "discountAmount": "10.00",
          "displayMessage": "balance5",
          "name": "62bf521c8275812a6488eff8",
          "nro": "62bf523e8275812a6488efff",
          "order": "1",
          "printerMessage": "balance5",
          "prorationMethod": "PROPORTIONAL",
          "unit": "qty",
          "apply": {
            "item": [{
              "magnitude": "0.000",
              "qty": "1.000",
              "seq": "1",
              "value": "10.00",
              "valueWithTaxes": "10.00",
              "xprice": "10000.00"
            }]
          }
        }]
      }]
    }]
  }
}

Descuento por Convenio:

  • Con balance con saldo


Bloco de código
languagexml
themeEmacs
titleRequest - xml
<message companyId="napse" store="napse" terminal="8" date-time="2022-07-01 11:16:32" init-tck="true" messageId="8" void-trx="false" response="true" status="sales" evaluate="true" offline="false" suggest="false" map-version="5469">
 <item-add seq="1" code="6" qty="1" magnitud="0" xprice="10000" unitprice="10000"/>
<customer-add seq="1" id="1" type="vip" balances="6:10000"/>
<loyaltycard-add seq="1" id="123123123" type="tipo" amount="1000"/>
</message>

...

Informações
titleResponse - JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "2.6",
    "mapversion": "5469",
    "messageId": "9",
    "store": "napse",
    "terminal": "8",
    "optional": [{
      "promo": [{
        "code": "balance6Convenio",
        "id": "balance6Convenio",
        "nro": "62bf52708275812a6488f004",
        "benefit": [{
          "TLOGMessage": "balance6",
          "account": "",
          "applicationMethod": "resume",
          "balance": "6",
          "baseAmount": "10000.00",
          "benefitType": "ContractPercentageDiscount",
          "discountPercentage": "10.00",
          "displayMessage": "balance6",
          "name": "62bf52708275812a6488f004",
          "nro": "62bf528e8275812a6488f00b",
          "order": "1",
          "printerMessage": "balance6",
          "prorationMethod": "PROPORTIONAL",
          "unit": "qty",
          "apply": {
            "item": [{
              "magnitude": "0.000",
              "qty": "1.000",
              "seq": "1",
              "value": "10.00",
              "valueWithTaxes": "10.00",
              "xprice": "10000.00"
            }]
          }
        }]
      }]
    }]
  }
}

Descuento por Porcentaje:

  • Con Balance con saldo


Bloco de código
languagexml
themeEmacs
titleRequest - xml
<message companyId="napse" store="napse" terminal="8" date-time="2022-07-01 11:16:34" init-tck="true" messageId="10" void-trx="false" response="true" status="sales" evaluate="true" offline="false" suggest="false" map-version="5469">
 <item-add seq="1" code="7" qty="1" magnitud="0" xprice="10000" unitprice="10000"/>
<customer-add seq="1" id="1" type="vip" balances="7:10000"/>
<loyaltycard-add seq="1" id="123123123" type="tipo" amount="1000"/>
</message>

...

Informações
titleResponse - JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "2.6",
    "mapversion": "5469",
    "messageId": "11",
    "store": "napse",
    "terminal": "8",
    "optional": [{
      "promo": [{
        "code": "balance7Porcentaje",
        "id": "balance7Porcentaje",
        "nro": "62bf52b78275812a6488f010",
        "benefit": [{
          "TLOGMessage": "balance7",
          "account": "",
          "applicationMethod": "resume",
          "balance": "7",
          "baseAmount": "10000.00",
          "benefitType": "PercentageDiscount",
          "discountPercentage": "15.00",
          "displayMessage": "balance7",
          "name": "62bf52b78275812a6488f010",
          "nro": "62bf52d18275812a6488f017",
          "order": "1",
          "printerMessage": "balance7",
          "prorationMethod": "PROPORTIONAL",
          "unit": "qty",
          "apply": {
            "item": [{
              "magnitude": "0.000",
              "qty": "1.000",
              "seq": "1",
              "value": "10.00",
              "valueWithTaxes": "10.00",
              "xprice": "10000.00"
            }]
          }
        }]
      }]
    }]
  }
}

Nuevo Precio

  • Con Balance con saldo


Bloco de código
languagexml
themeEmacs
titleRequest - xml
<message companyId="napse" store="napse" terminal="8" date-time="2022-07-01 11:16:34" init-tck="true" messageId="12" void-trx="false" response="true" status="sales" evaluate="true" offline="false" suggest="false" map-version="5469">
 <item-add seq="1" code="8" qty="1" magnitud="0" xprice="10000" unitprice="10000"/>
<customer-add seq="1" id="1" type="vip" balances="8:10000"/>
<loyaltycard-add seq="1" id="123123123" type="tipo" amount="1000"/>
</message>

...

Informações
titleResponse -JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "2.6",
    "mapversion": "5469",
    "messageId": "13",
    "store": "napse",
    "terminal": "8",
    "optional": [{
      "promo": [{
        "code": "balance8NuevoPrecio",
        "id": "balance8NuevoPrecio",
        "nro": "62bf52f58275812a6488f01c",
        "benefit": [{
          "TLOGMessage": "balance8",
          "account": "",
          "applicationMethod": "resume",
          "balance": "8",
          "baseAmount": "10000.00",
          "benefitType": "NewPrice",
          "displayMessage": "balance8",
          "name": "62bf52f58275812a6488f01c",
          "newPrice": "300.00",
          "nro": "62bf53128275812a6488f023",
          "order": "1",
          "printerMessage": "balance8",
          "prorationMethod": "PROPORTIONAL",
          "unit": "qty",
          "apply": {
            "item": [{
              "magnitude": "0.000",
              "qty": "1.000",
              "seq": "1",
              "value": "10.00",
              "valueWithTaxes": "10.00",
              "xprice": "10000.00"
            }]
          }
        }]
      }]
    }]
  }
}

Canje de Puntos

  • Con Balance con saldo


Bloco de código
languagexml
themeEmacs
titleRequest - xml
<message companyId="napse" store="napse" terminal="8" date-time="2022-07-01 11:16:36" init-tck="true" messageId="14" void-trx="false" response="true" status="sales" evaluate="true" offline="false" suggest="false" map-version="5469">
<item-add seq="1" code="9" qty="1" magnitud="0" xprice="10000" unitprice="10000"/>
<customer-add seq="1" id="1" type="vip" balances="9:10000"/>
<loyaltycard-add seq="1" id="123123123" type="tipo" amount="1000"/>
</message>

...

Informações
titleResponse - JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "2.6",
    "mapversion": "5469",
    "messageId": "15",
    "store": "napse",
    "terminal": "8",
    "optional": [{
      "promo": [{
        "code": "balance9CanjeDePtos",
        "id": "balance9CanjeDePtos",
        "nro": "62bf53708275812a6488f028",
        "benefit": [{
          "TLOGMessage": "balance9",
          "account": "",
          "applicationMethod": "resume",
          "balance": "9",
          "baseAmount": "10000.00",
          "benefitType": "RedeemPointsBenefit",
          "discountAmount": "10.00",
          "displayMessage": "balance9",
          "factor": "1",
          "name": "62bf53708275812a6488f028",
          "nro": "62bf538e8275812a6488f02f",
          "order": "1",
          "printerMessage": "balance9",
          "prorationMethod": "PROPORTIONAL",
          "type": "tipo",
          "unit": "",
          "usedPoints": "10.0",
          "apply": {
            "item": [{
              "magnitude": "0.000",
              "qty": "1.000",
              "seq": "1",
              "value": "10.00",
              "valueWithTaxes": "10.00",
              "xprice": "10000.00"
            }]
          }
        }]
      }]
    }]
  }
}

Canje con Opciones

  • Con Balance con saldo


Bloco de código
languagexml
themeEmacs
titleRequest - xml
<message companyId="napse" store="napse" terminal="8" date-time="2022-07-01 11:16:32" init-tck="true" messageId="8" void-trx="false" response="true" status="sales" evaluate="true" offline="false" suggest="false" map-version="5469">
<item-add seq="1" code="3" qty="1" magnitud="0" xprice="10000" unitprice="10000" redeemOption="62bf51a78275812a6488efea_1"/>
<customer-add seq="1" id="1" type="vip" balances="3:10000" points="40000" redeemPointsPriceFactor="2"/>
<loyaltycard-add seq="1" id="123123123" type="tipo" amount="1000"/>
</message>

...

Aviso
titleConsideración canje con opciones

El canje con opciones se aplicará el recorte en el descuento (value) pero no alterará el consumo de los puntos.

Canje de puntos por catálogo

Primero se debe cargar el catálogo

...

Informações
titleResponse catalogRedeemValidation con balance - JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "7.2.3-SNAPSHOT",
    "mapversion": "7004",
    "messageId": "1",
    "store": "napse",
    "terminal": "1",
    "optional": [{
      "promo": [{
        "code": "canjePtosCatalogo",
        "id": "canjePtosCatalogo",
        "nro": "62c5b86c677f912b04181c4f",
        "benefit": [{
          "TLOGMessage": "canjePtosCatalogo",
          "account": "",
          "applicationMethod": "resume",
          "balance": "10",
          "baseAmount": "10000.00",
          "benefitType": "CatalogRedeemBenefit",
          "discountAmount": "1000.00",
          "displayMessage": "canjePtosCatalogo",
          "name": "62c5b86c677f912b04181c4f",
          "nro": "62c5cf8f677f912b04181c73",
          "order": "1",
          "printerMessage": "canjePtosCatalogo",
          "prorationMethod": "PROPORTIONAL",
          "type": "tipo",
          "unit": "",
          "usedPoints": "10.50",
          "apply": {
            "item": [{
              "magnitude": "0.000",
              "qty": "1.000",
              "seq": "1",
              "value": "1000.00",
              "valueWithTaxes": "1000.00",
              "xprice": "10000.00"
            }]
          }
        }]
      }]
    }]
  }
}

Ejemplo de convivencia entre límites y balance


Aviso
titleConsideración de límites y balances

Siempre aplicará el recorte por límite primero y luego aplicará el recorte por balance, es decir si el límite es menor al beneficio dado recortara el mismo, mas allá de que el balance sea suficiente, si el límite es superior al descuento pero el balance es menor a este último, se aplicará el recorte del balance.

...

Beneficio

Propiedad

Tipo de dato

Requerido

Descripción

FixedDiscount

unit

Alfanumérico

No

El valor de "unit" indicará si el descuento estará aplicado sobre todo el conjunto o sobre cada unidad de la propiedad seleccionada. Los valores posibles son:

  • "qty" (se aplica el descuento a cada unidad de cantidad)
  • "magnitude" (se aplica el descuento a cada unidad de cantidad)
    Si no se informase la unidad (atributo vacío), la aplicación es sobre todo el conjunto de aplicados (ver "Elementos aplicados").


discountAmount

Real positivo

Si

Descuento que se realizará sobre los elementos aplicados. El valor a descontar a cada artículo variará dependiendo de la unidad de aplicación.


prorationMethod

Alfanumérico

Si

Método que se utilizará para prorratear el beneficio entre los elementos aplicados, pudiendo ser:

  • "default"
  • "proportional" (prorratea el beneficio proporcionalmente al precio)
  • "most-expensive-first" (aplica el beneficio al artículo más caro)
  • "cheapest-first" (aplica el beneficio al artículo más barato)

PercentageDiscount

unit

Alfanumérico

No

Indicará si debe aplicarse el porcentaje de descuento a cada unidad o al total. Los valores que puede tener son los indicados anteriormente.


discountPercentage

Real positivo

Si

Porcentaje de descuento que se realizará sobre los elementos participantes. El valor a descontar a cada artículo variará dependiendo de la unidad de aplicación.


name

Alfanumérico

No

Nombre de la promoción que ha originado el beneficio.


prorationMethod

Alfanumérico

Si

Método que se utilizará para prorratear el beneficio entre los elementos aplicados. Los valores que a tomar son los mismos indicados anteriormente.

NewPrice

unit

Alfanumérico

No

Indicará si debe aplicarse el nuevo precio a cada unidad o al total. Los valores que puede tener son los indicados anteriormente.


newPrice

Real positivo

Si

Descuento fijo que se realizará sobre los elementos participantes. El valor a descontar a cada artículo variará dependiendo de la unidad de aplicación.


prorationMethod

Alfanumérico

Si

Método que se utilizará para prorratear el beneficio entre los elementos aplicados. Los valores que puede tomar son los mismos indicados anteriormente.

TenderDiscountBenefit

tender

Alfanumérico

Si

Medio/s de pago que se pueden utilizar. Puede ser una lista separada por comas.


limit

Real positivo

No

Indica el máximo que se podrá abonar con el medio de pago. Este tope sólo tendrá utilidad en el punto de venta sin afectar los calculos del Motor de Promociones. Si este valor es vacío significa que el monto es ilimitado.


planId

Alfanumérico

Si

Identificador del plan que se otorga.


Type

Alfanumérico

No

Tipo de medio de pago.


Bank

Alfanumérico

No

Banco asociado al medio de pago.


Percent

Real positivo

Si

Porcentaje de descuento o recargo que se realizará sobre los elementos participantes.


percenttype

Alfanumérico

No

Indica si el porcentaje es un descuento (valor=discount) o recargo (valor=surcharge).


tenderseq

Entero positivo

Si

Número identificador único del elemento medio de pago (payment) dentro de la transacción.


amount

Real positivo

Si

Dinero que se utiliza con ese medio de pago


itemamount

Real positivo

Si

Dinero que representa el monto de ítems que se desea pagar.


paymentAmount

Real positivo

Si

Indica el monto total sobre el cual se calculó el beneficio en cuestión.


installments

Real positivo

No

Indica la cantidad de cuotas asociadas al plan de pago


benefitedamount

Real positivo

Si

Descuento que se realizará sobre los elementos aplicados.

RedeemPointsBenefit

Type

Alfanumérico

Si

Indica el tipo de elemento de fidelidad a la que se aplicara el beneficio


factor

Real positivo

Si

Indica el factor de conversión para el cálculo del descuento en base al monto informado en el amount


usedPoints

Real positivo

Si

Indica la cantidad de saldo (punto, dinero, etc.) que será utilizado para la aplicación de dicho beneficio


discountAmount

Real positivo

Si

Descuento que se realizará sobre los elementos aplicados. El valor a descontar a cada artículo variará dependiendo de la unidad de aplicación.


prorationMethod

Alfanumérico

Si

Método que se utilizará para prorratear el beneficio entre los elementos aplicados. Los valores que puede tomar son los mismos indicados anteriormente.


unit

Alfanumérico

Si

Indicará si debe aplicarse el nuevo precio a cada unidad o al total. Los valores que puede tener son los indicados anteriormente.

CalculatedCouponApplicationBenefit

discountAmount

Real positivo

Si

Descuento que se realizará sobre los elementos aplicados. El valor a descontar a cada artículo variará dependiendo de la unidad de aplicación.


couponId

Alfanumérico

Si

Identificador del cupón a redimir.


usedCoupons

AlfanuméricoSiConsiste en una cadena con valores separados por coma indicando cada uno de los codigos de cupon utilizados en la redención.  Este dato es basado en los cupones utilizados para cubrir el monto de redención.  Ejemplo usedCoupons=A645746566, BCD8383, P39393A9393

PaymentPlanBenefit

tender

Alfanumérico

Si

Medio/s de pago que se pueden utilizar. Puede ser una lista separada por comas. Cuando en el request de una transacción no se especifica el Id y/o el nombre, y/o cuotas, y/o tipos, y/o plan, y/o prefijo y/o pocket del plan de pago; el mismo igual se aplica.


limitAmount

Real positivo

No

Indica el máximo que se podrá abonar con el medio de pago. Este tope sólo tendrá utilidad en el punto de venta sin afectar los calculos del Motor de Promociones. Si este valor es vacío significa que el monto es ilimitado.


planid

Alfanumérico

Si

Identificador del plan que se otorga.


type

Alfanumérico

No

Tipo de medio de pago.


bank

Alfanumérico

Si

Banco asociado al medio de pago.


percent

Real positivo

No

Porcentaje de descuento o recargo que se realizará sobre los elementos participantes. El descuento o recargo será informado como un beneficio TenderDiscountBenefit


percenttype

Alfanumérico

No

Indica si el porcentaje es un descuento (valor=discount) o recargo (valor=surcharge).


installments

Real positivo

No

Indica la cantidad de cuotas asociadas al plan de pago


paymentAmount

Real positivo

Si

Indica el monto total sobre el cual se calculó el beneficio en cuestión.

CouponBenefit

couponId

Alfanumérico

Si

Identificador del cupón a otorgar.


amount

Real positivo

Si

Indicara el monto asociado a un cupon cuyo monto fue calculado


qty

Entero positivo

Si

Cantidad de cupones a otorgar.


infoPos

Alfanumérico

NoEn el caso de Cupones Informativos existe la posibilidad de enviar al Punto de Venta la opción seleccionada de las disponibles para configurar por el usuario.  Ver manual de Usuario para Cupones Informativos.

GiftBenefit

giftid

Alfanumérico

Si

Identificador del regalo a entregar. En caso de que sea un producto en stock, puede representar el código del artículo a regalar.


giftType

Alfanumérico

Si

Tipo de regalo a entregar. Puede ser vacío.


qty

Entero positivo

Si

Cantidad de regalos con el identificador indicado.

LoyaltyBenefit

type

Alfanumérico

Si

Tipo de valor (puntos, dinero, millas, etc.) de fidelidad que se están otorgando.


amount

Entero positivo

Si

Cantidad de puntos, dinero, millas, etc. a otorgar del tipo especificado en el atributo anterior.


unit

Alfanumérico

Si

Indicará si debe aplicarse la cantidad de puntos, dinero, millas, etc. a cada unidad o al total. Los valores que puede tener son los indicados anteriormente.


totalpoints

Real positivo

Si

Indica la cantidad total de puntos, dinero, millas, etc. que otorga el beneficio luego de ser calculado.

FactorLoyaltyBenefit

type

Alfanumérico

Si

Tipo de puntos, dinero, millas, etc. de fidelidad que se están otorgando.


factor

Real positivo

Si

Factor multiplicador a utilizar para el cálculo de los puntos, dinero, millas, etc.

PercentLoyaltyBenefit

type

Alfanumérico

Si

Tipo de puntos, dinero, millas, etc. de fidelidad que se están otorgando.


percent

Real positivo

Si

Porcentaje de puntos, dinero, millas, etc., que se aplica sobre el xprice u originalXPrice para calcular la cantidad de puntos, dinero, millas, etc. que corresponden otorgar.


totalpoints

Real positivo

Si

Indica la cantidad total de puntos, dinero, millas, etc. que otorga el beneficio luego de ser calculado.

CalculatedCouponBenefit

couponId

Alfanumérico

Si

Identificador del cupón a otorgar.


amount

Entero positivo

Si

Indicara el monto asociado a un cupon cuyo monto fue calculado


Percentage

Alfanumérico

Si

Indica el porcentaje en base al cual fue calculado el monto del cupon


qty

Entero positivo

Si

Cantidad de cupones a otorgar.

PromotionPaidInPointsqty

Entero positivo

Si

Cantidad de items a beneficiar.


pointsAlfanuméricoSiCantidad de puntos a descontar del beneficio que ha entregado puntos en la transacción en curso (informado en el apply) Se informara cuando en el pago se envíe el atributo pointsType="" (ver manual de usuario final Promo 7 - Ignorar pago con puntos.)


CatalogRedeemBenefit

discountAmount

Real positivo

Si

Descuento que se realizará sobre los elementos aplicados. El valor a descontar a cada artículo variará dependiendo de la unidad de aplicación.


type

Alfanumérico

Si

Tipo de puntos, dinero, millas, etc. de fidelidad que se están otorgando.


unit

Alfanumérico

Si

Actualmente el beneficio se aplica sobre la cantidad o magnitud de cada producto en cuestión por lo cual no se espera funcionalidad en este atributo.


usedPoints

Real positivo

Si

Indica la cantidad de saldo (punto, dinero, etc.) que será utilizado para la aplicación de dicho beneficio

...

Informações
titleResponse JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "7.3.0RC1",
    "mapversion": "2",
    "messageId": "1",
    "store": "2",
    "terminal": "1",
    "transaction": "napse_2_1_20221228120800",
    "loyalty": {
      "loyaltycards": {
        "loyaltycard": [{
          "ack": "0",
          "amount": "1250.00",
          "id": "1111000000000",
          "seq": "1",
          "type": "tipo1"
        }],
      },
      "coupons": {},
      "errors": {},
      "customers": {},
      "redeemTable": {},
      "goalsPrograms": {},
    }
  }
}


Si todavía no tuvo segmento asignado, muestra un guion:

Bloco de código
languagexml
themeEmacs
titleResponse XML
<message ack="0" companyId="napse" engine="7.3.0RC1" mapversion="2" messageId="1" store="2" terminal="1" transaction="napse_2_1_20221228121400">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" amount="2010.00" id="1111000000000" seq="1" type="tipo1"/>
    </loyaltycards>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
    <goalsPrograms>
      <goalsProgram id="108" lastIncrement="20221228" lastPurchase="20221228" segment="-" value="2.00"/>
      <goalsProgram id="107" lastIncrement="20221228" lastPurchase="20221228" segment="-" value="4.00"/>
    </goalsPrograms>
  </loyalty>
</message>

...

En el ejemplo se han registrado cada uno de los ítem que se desean devolver, junto a los elementos de fidelidad asociados al cliente: Cupón y Elemento de Fidelidad.

Devolución Total

A partir de la versión 7.2.3, no requiere que el operador tenga la necesidad de escanear todos los productos para hacer la devolución total de la compra.

En este ejemplo se observa que sólo se ingresa el ID de la transacción original, sin necesidad de ingresar los ítems de la compra:

...

Informações
titleRequest JSON

{
  "message": {
    "ack": "0",
    "companyId": "2",
    "engine": "7.2.4#264",
    "mapversion": "8",
    "messageId": "1",
    "store": "3",
    "terminal": "2",
    "transaction": "2_3_2_20230425120000",
    "loyaltycards": {},
    "coupons": {
      "coupon": [{
        "ack": "0",
        "barcode": "1030BC0031172",
        "benefitNro": "58d2a8f8ef5a63133c3ca31d",
        "couponId": "TC_IM",
        "format": "PRINTED",
        "encoding": "EAN13",
        "promotionName": "Emisión C-impreso",
        "promotionNro": "58d2acdaef5a63133c3ca346",

        "cdata": respuesta de consola codificada en base64
      }]
    },
    "errors": {},
    "customers": {}
  }
}


Como hemos mencionado por cada uno de los cupones generados tendremos un elemento cupón, como se muestra en el siguiente ejemplo para 3 cupones:

Bloco de código
languagexml
themeEmacs
titleResponse XML
<message companyId="sts" ack="0" engine="2.6" mapversion="1" messageId="1" store="1" terminal="1" transaction="1_1_20170515152511">
 <loyalty>
 <loyaltycards/>
 <coupons>
 <coupon ack="0" barcode="1030BC0037648" format="PRINTED" benefitNro="58d2a8f8ef5a63133c3ca31d" couponId="TC_IM" format="PRINTED" encoding="EAN13" promotionName="Emisión C-impreso" promotionNro="58d2acdaef5a63133c3ca346"><!\[CDATA\[..datos libres...\]\]>
 </coupon>
 <coupon ack="0" barcode="1030BC0034111" benefitNro="58d2a8f8ef5a63133c3ca31d" couponId="TC_IM" format="PRINTED" encoding="EAN13" promotionName="Emisión C-impreso" promotionNro="58d2acdaef5a63133c3ca346">
<!CDATA\[ … datos libres …. \]>
 </coupon>
 <coupon ack="0" amount="10.0" barcode="1030BC0030588" benefitNro="5900e18ea846390de08a7afd" couponId="1" encoding="EAN13" format="PRINTED" promotionName="emite impreso calculado" promotionNro="5900e173a846390de08a7af7"><!\[CDATA\[..datos libres...\]\]>
 </coupon>
 </coupons>
 <errors/>
 <redeemTable/>
 </loyalty>
 </message>

...

Informações
titleInyeccion automaticamente Segmentos en Clientes (loyaltyValidationex)

Se incluye la funcionalidad de agregar de forma automática, en la validación del cliente, los segmentos a los que este pertenece, utilizando la funcionalidad loyaltyValidationex.


Aviso
titleIMPORTANTE

Lo segmentos podrán ser dados de alta desde consola (Negocio/Segmentos) o vía servicio REST. Para mas información sobre asociación de clientes a Segmentos Promo via REST, ver "Servicio de importación de Segmentos" en Manual de Integración Promo - Servicios.

Cuando se reciba en Promo una consulta del tipo loyaltyValidationex y y se informe un cliente, se incluirán en el mensaje de respuesta los segmentos a los que este cliente pertenece junto con el resultado de la evaluacion evaluación de promociones con el mapa vigente.

Expandir
titleEjemplo de Input


Bloco de código
languagexml
themeEmacs
titleInput XML
<message companyId="napse" store="013" terminal="001" date-time="2021-08-06 01:30:00" messageId="0011" map-version="494"  void-trx="false" response="true" init-tck="true" evaluate="true" status="loyaltyvalidationex">
<item-add seq="1" qty="1" code="112233" magnitude="0" xprice="5000" unitprice="5000" type="555"/>
<customer-add seq="1" id="c4"  />
</message>


Informações
titleInput JSON

{
  "message": {
    "companyId": "napse",
    "store": "013",
    "terminal": "001",
    "date-time": "2021-08-06 01:30:00",
    "messageId": "0011",
    "map-version": "494",
    "void-trx": "false",
    "response": "true",
    "init-tck": "true",
    "evaluate": "true",
    "status": "loyaltyvalidationex",
    "item-add": [{
      "seq": "1",
      "qty": "1",
      "code": "112233",
      "magnitude": "0",
      "xprice": "5000",
      "unitprice": "5000",
      "type": "555"
    }],
    "customer-add": [{
      "seq": "1",
      "id": "c4"
    }]
  }
}



Expandir
titleEjemplo de Output


Bloco de código
languagexml
themeEmacs
titleOutput XML
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="napse" engine="6.5" mapversion="494" messageId="0011" store="013" terminal="001" transaction="napse_013_001_20210806013000">
  <loyalty>
    <loyaltycards/>
    <coupons/>
    <errors/>
    <customers>
      <customer code="c4" email="-" identifier="-" lastName="-" limitedBenefits="" name="-" segment="5500,555" type="EMPLEADO" seq="1"/>
    </customers>
    <redeemTable/>
    <stores/>
  </loyalty>
  <optional>
    <promo code="40705" id="segmento clientes" nro="610cb87616f79a30b457e44c">
      <benefit TLOGMessage="segmento clientes" account="" applicationMethod="resume" baseAmount="5000" benefitType="PercentageDiscount" discountPercentage="50" displayMessage="segmento clientes" name="610cb87616f79a30b457e44c" nro="610cb89b16f79a30b457e456" order="1" printerMessage="segmento clientes" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="2500" valueWithTaxes="2500" xprice="5000"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>


Informações
titleOutput JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "6.5",
    "mapversion": "494",
    "messageId": "0011",
    "store": "013",
    "terminal": "001",
    "transaction": "napse_013_001_20210806013000",
    "loyalty": {
      "loyaltycards": {},
      "coupons": {},
      "errors": {},
      "customers": {
        "customer": [{
          "code": "c4",
          "email": "-",
          "identifier": "-",
          "lastName": "-",
          "limitedBenefits": "",
          "name": "-",
          "segment": "5500,555",
          "type": "EMPLEADO",
          "seq": "1"
        }]
      },
      "redeemTable": {},
      "stores": {}
    },
    "optional": [{
      "promo": [{
        "code": "40705",
        "id": "segmento clientes",
        "nro": "610cb87616f79a30b457e44c",
        "benefit": [{
          "TLOGMessage": "segmento clientes",
          "account": "",
          "applicationMethod": "resume",
          "baseAmount": "5000",
          "benefitType": "PercentageDiscount",
          "discountPercentage": "50",
          "displayMessage": "segmento clientes",
          "name": "610cb87616f79a30b457e44c",
          "nro": "610cb89b16f79a30b457e456",
          "order": "1",
          "printerMessage": "segmento clientes",
          "prorationMethod": "PROPORTIONAL",
          "unit": "qty",
          "apply": {
            "item": [{
              "magnitude": "0.000",
              "qty": "1.000",
              "seq": "1",
              "value": "2500",
              "valueWithTaxes": "2500",
              "xprice": "5000"
            }]
          }
        }]
      }]
    }]
  }
}

Se listarán tanto segmentos internos, como externos.


...

Bloco de código
languagexml
themeEmacs
titleRequest
<message companyId="2" store="1" terminal="1" date-time="2023-08-15 16:00:00" init-tck="false" messageId="1" void-trx="false" response="true" status="salesales" evaluate="true" suggest="false">
<customer-add seq="1" id="1" email="[email protected]" identifier="12345" incompleteData="false" lastName="perez" limitedBenefits="" name="JUAN" segment="Seg1" seq="1"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="Coca-Cola" discountable="true"/>
</message>

...

Informações
titleCode JSON

{
  "message": {
    "companyId": "napse",
    "store": "1",
    "terminal": "10",
    "date-time": "2018-08-09 10:51:50",
    "init-tck": "true",
    "messageId": "1",
    "void-trx": "false",
    "response": "true",
    "status": "loyaltyValidation",
    "evaluate": "true",
    "offline": "false",
    "customer-add": [{
      "seq": "1",
      "id": "10090504",
      "identifier": "10090504",
      "type": "test",
      "limitedBenefits": "5b7044246491fa1604a6d15b:200.00;",
      "name": "pepe",
      "lastName": "rodrigues",
      "identifierType": "cpf"
    }]
  }
}


La respuesta aun contiene datos por defecto:

Bloco de código
languagexml
themeEmacs
firstline1
titleResponse XML
linenumberstrue
<message ack="0" companyId="napse" engine="6.4.6" mapversion="1" messageId="1" store="1" terminal="10" transaction="napse_1_10_20180809105150">
<loyalty>
<loyaltycards/>
<coupons/>
<errors/>
<customers>
<customer code="10090504" email="-" identifier="10090504" lastName="rodrigues" limitedBenefits="" name="pepe" segment="" seq="1"/>
</customers>  
</loyalty></message>


...

Âncora
_Toc513731704
_Toc513731704
Operatoria (en base a los posibles escenarios):

OperatoOriaOperatoria

GiftCard

Monedero

Tarj de Puntos

Gift - Único Uso

Alta de tarjeta

Por ArchivoINACTIVAS

Por Archivo/ManualInactivas o Activas

Por ArchivoINACTIVAS

Por ArchivoINACTIVAS

Consulta de Tarjetas

Se informara en tag Errors (por estar inactiva)el Amount - Type

Se informara en tag Errors, si esta inactiva o en tag LoyaltyCard si esta activaType - Amount

Se informara en tag Errors (por estar inactiva)Amount –Customer-Type

Se informara en tag Errors (por estar inactiva)Amount - Type

Activación de Tarjeta

Deberá activarse por medio del mensaje "Loyaltyactivation" o "finish" Valida CVV

Podrá activarse por el mensaje "Loyaltyactivation", "finish" o cuando se realiza su primera recarga

Podrá activarse por el mensaje "Loyaltyactivation", "finish" o cuando se realiza su primera recarga Si se envía Cliente lo validará

Podrá activarse por el mensaje "Loyaltyactivation", "finish" o cuando se realiza su primera recarga. Valida CVV

Transferencia

Admite solo transferencia de saldo totales - Una vez transferido el saldo total de la tarjeta, ésta se cancela. Valida CVV

Admite transferencias parciales sin alterar el estado del elemento.

No admite transferencia de ningún tipo.

No admite transferencia de ningún tipo.

Imputación de Saldo

No admite recarga de saldo.

Admite recargas hasta un valor máximo.

Admite recargas sin tope. Si se envía cliente se validara.

Admite recargas sin tope. Valida CVV.

Consumo de Saldo

Admite consumir el saldo en más de una transacción sin alterar el estado de la tarjeta. Valida CVV

Admite consumir el saldo en más de una transacción sin alterar el estado de la tarjeta

Admite consumir el saldo en más de una transacción sin alterar el estado de la tarjeta Si se envía cliente se validara

Solo permite un único consumo de saldo ya sea total o parcial, luego de ese único consumo el elemento de fidelidad se INACTIVA. Valida CVV

...

Aviso
titleValidaciones no cumplidas
De no cumplirse con las 6 validaciones anteriores, el calculo del beneficio será 0 para dicho ítem (value="0")


...

Alta del Elemento de Fidelidad asociada al cliente identificado en la transacción (al momento de  aplicar el beneficio de acumulación)

Para la asignación y carga de un elemento de fidelidad que acumule puntos de fidelidad deberá considerarse la siguiente secuencia entre el pos y Promo: 

  • Pre-Requisitos:

Para que el alta de clientes pueda efectuarse al momento de procesarse una transacción, deberá de habilitarse en el archivo de configuraciones de la Consola de Promo (“promoplus.properties”) el siguiente atributo:

Nota

 # Habilita el alta de clientes on the fly

promo.allowNonExistingCustomers = true

Una vez actualizado, deberá de reiniciarse el Wildfly para que los cambios sean tomados correctamente.

  • Alta de Cliente

Los clientes serán creados utilizando el estado "loyaltyValidation" en el caso de enviarse los datos mínimos y al mismo tiempo Promo detecte que el cliente no existe.  Los datos mínimos mencionados son (marcados en Negrita):

<customer-add seq="1" id="9" identifier="47001517" type="test" name="bruno" lastName="Lopez" identifierType="dni" email="mimail@test.com" />


Bloco de código
languagexml
themeEmacs
titleRequest
<?xml version="1.0" encoding="UTF-8"?>
<message companyId="2" store="3" terminal="1" date-time="2023-09-20 17:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="loyaltyValidation" evaluate="true" suggest="true">
<customer-add seq="1" id="9" identifier="47001517" type="test" name="bruno" lastName="Lopez" identifierType="dni" email="[email protected]" />
</message>

En la respuesta al loyaltyValidation no se informarán tarjetas ya que el cliente esta recién ingresado en la consola de Promo.

Bloco de código
languagexml
themeEmacs
titleRequest
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="86" messageId="1" store="3" terminal="1" transaction="2_3_1_20230920170000">
  <loyalty>
    <loyaltycards/>
    <coupons/>
    <errors/>
    <customers>
      <customer birthday="false" code="9" email="[email protected]" identifier="47001517" incompleteData="false" lastName="lopez" limitedBenefits="" name="bruno" segment="" seq="1" type="test"/>
    </customers>
    <redeemTable/>
    <goalsPrograms/>
  </loyalty>
</message>


  • Ingreso de ítem
Bloco de código
languagexml
themeEmacs
titleRequest
<?xml version="1.0" encoding="UTF-8"?>
<message companyId="2" store="3" terminal="1" date-time="2023-09-20 17:05:00" init-tck="false" messageId="1" void-trx="false" response="true" status="sales" evaluate="true" suggest="true">
<customer-add seq="1" id="9" identifier="47001517" type="test" name="bruno" lastName="Lopez" identifierType="cpf" email="[email protected]" />
<item-add seq="2" qty="1" code="111" level1="1121" magnitude="0" brand="Kumho" xprice="612" unitprice="612" />
</message>

Se devuelve la promoción que aplica puntos al tipo de elemento de fidelidad; en este caso "Promo P1"

Bloco de código
languagexml
themeEmacs
titleResponse
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="86" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo P1" nro="64ddfc0a92889f36286c9d88">
      <benefit TLOGMessage="Promo P1" account="" applicationMethod="resume" baseAmount="612.00" benefitType="PercentageDiscount" discountPercentage="100.00" displayMessage="Promo P1" name="64ddfc0a92889f36286c9d88" nro="64ddfc2d92889f36286c9d8f" order="1" printerMessage="Promo P1" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="2" value="612.00" valueWithTaxes="612.00" xprice="612.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

Dado que el cliente no tiene elementos asociados, se deberá dar de alta en Promo un nro. de elemento del mismo tipo que recibe el beneficio informado, y asociarla al cliente.


Nota

Los beneficios del tipo Loyalty que informen en su tipo (“type”) la palabra “external”, corresponderán a tipos de elementos no gestionadas por promo, las cuales no participan en las promociones que otorguen puntos de fidelidad.

Actualización: Se utilizara, para el alta de elementos durante la transacción el status “loyaltyActivation”, enviando el tag <loyaltyCard-add/> el parámetro status=”CREATE”, el campo Type del mismo tag deberá corresponderse con el tipo de elemento que es beneficiado durante la transacción, y en el campo id deberá indicarse el numero de elemento que se desea asignar.

Este número no necesariamente debe corresponderse con el largo y prefijo indicado en el tipo de elemento, podrá indicarse un código libre y se controlará que para dicho tipo de elemento no existan dos números de elementos iguales.


Bloco de código
languagexml
themeEmacs
titleRequest
<?xml version="1.0" encoding="UTF-8"?>
<message companyId="2" store="3" terminal="1" date-time="2023-09-20 17:00:00" init-tck="false" messageId="1" void-trx="false" response="true" status="loyaltyActivation" evaluate="true" suggest="true"> 
<loyaltycard-add id="1100000020" seq="1" type="5" status="CREATE"/>
</message>


Bloco de código
languagexml
themeEmacs
titleResponse
----- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="86" messageId="1" store="3" terminal="1" transaction="2_3_1_20230920170000">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" amount="0.00" id="1100000020" seq="1" type="5"/>
    </loyaltycards>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
    <goalsPrograms/>
  </loyalty>
</message>

Esta operación no requiere FINISH ni COMMIT.

Para confirmar la correcta asociación, deberá realizarse un LoyaltyValidation del cliente y aquí deberá de modificarse el TimeStamp de la transacción a fin de que los puntos otorgados luego por el beneficio sean asignados correctamente al elemento recientemente creado.

Bloco de código
languagexml
themeEmacs
titleRequest
<?xml version="1.0" encoding="UTF-8"?>
<message companyId="2" store="3" terminal="1" date-time="2023-09-20 18:30:00" init-tck="true" messageId="2" void-trx="false" response="true" status="loyaltyValidation" evaluate="true" suggest="true">
<customer-add seq="1" id="9" email="[email protected]" identifier="47001517" incompleteData="false" lastName="lopez" limitedBenefits="" name="bruno" segment="" type="test"/>
<loyaltycard-add seq="1" id="1100000020" type="5" amount="2000000.00" />
</message>


Bloco de código
languagexml
themeEmacs
titleResponse
----- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="86" messageId="1" store="3" terminal="1" transaction="2_3_1_20230920170000">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" amount="0.00" amountChargeLimit="0.00" contract="" customer="9" id="1100000020" seq="1" type="5" usePartial="true"/>
    </loyaltycards>
    <coupons/>
    <errors/>
    <customers>
      <customer birthday="false" code="9" email="[email protected]" identifier="47001517" incompleteData="false" lastName="lopez" limitedBenefits="" name="bruno" segment="" seq="1" type="test">
        <loyaltycard ack="0" amount="0.00" amountChargeLimit="0.00" contract="" id="1100000020" status="Activa" type="5" usePartial="true"/>
      </customer>
    </customers>
    <redeemTable/>
    <goalsPrograms/>
  </loyalty>
</message>

Una vez que el cliente ya tiene el elemento asociado y activo, podrá ingresarse ésta en la transacción para así asignarle los puntos otorgados por el beneficio.

Bloco de código
languagexml
themeEmacs
titleRequest
<?xml version="1.0" encoding="UTF-8"?>
<message companyId="napse" store="1" terminal="1" date-time="2020-11-03 11:25:33" init-tck="false" messageId="2" void-trx="false" response="true" status="sales" evaluate="true" map-version="2" tckpath="Y" suggest="true">
<item-add seq="2" qty="1" code="111" level1="1121" magnitude="0" brand="Kumho" xprice="612" unitprice="612" />
<loyaltycard-add seq="5" id="2220000000000003" type="111" amount="2000000.00" />
</message>


Bloco de código
languagexml
themeEmacs
titleResponse
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="napse" engine="7.0.0-EP2#52" mapversion="2" messageId="2" store="1" terminal="1">
  <optional>
    <promo code="3" id="otorga Stickers A-3" nro="5f9f589216f79af90c99c6a0">
      <benefit TLOGMessage="otorga Stickers A" account="" applicationMethod="resume" baseAmount="612.00" benefitType="LoyaltyBenefit" displayMessage="otorga Stickers A" name="5f9f589216f79af90c99c6a0" nro="5f9c446f16f79af90c99c6a6" order="1" printerMessage="otorga Stickers A" totalpoints="100.00" type="111" unit="" value="100.00">
        <apply>
          <item magnitude="0.000" points="100.00" qty="1.000" seq="2" value="0.00" valueWithTaxes="0.00" xprice="612.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>