Versões comparadas

Chave

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

...

Propiedad

Tipo de dato

Descripción

Requerido

seq

Entero positivo

Número identificador único del elemento dentro de la transacción.


Aviso
titleImportante

La cantidad límite de secuencias es seq= "999" por transacción.


Este será el único atributo que poseerán los comandos del tipo void, siendo este el atributo que indica el elemento que se desea eliminar.
Por otro lado, el comando add poseerá una serie de atributos que definirán las distintas propiedades del elemento que se está agregando (además del número de secuencia antes mencionado). Dependiendo del elemento en cuestión, los atributos serán los siguientes:

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



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

"-"


ProductcodeproductcodeAlfanumérico

Código del Producto.

A partir de Promo 7.2.6 soporta múltiples valores.

No

BarcodebarcodeAlfanumérico

Código de Barras del Producto.

A partir de Promo 7.2.6 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.

A partir de Promo 7.2.6 soporta múltiples valores.

No

"-"


level2

Alfanumérico

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

A partir de Promo 7.2.6 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.

A partir de Promo 7.2.6 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.

A partir de Promo 7.2.6 soporta múltiples valores.

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

(Versión > 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

(Versión > 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

(Versión > 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

(Versión > 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(Versión > 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.

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 reinjectados 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 tanto los segmentos internos como los 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. Si 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 Bolsillo 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 ítems a los cuales hay que aplicar el descuento. Si no viene el atributo o viene vacío se asume que es para todo el ticket. En caso de tener varios secuencias, las mismas deben venir separados por coma. Si algún 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


Informações
titleNota:

A partir de Promo 7.2.6 los siguientes atributos del elemento ítem soportan campos con múltiples valores: level1, level 2, level3, level 4, productCode y barcode.

Se podrá enviar por ej: <item-add ........... productCode="A,B,C,D" />

Y se le aplicarán las promociones que tengan como condición:

productCode = "A"

productCode = "B"

productCode = "C"

productCode = "D"

productCode alguno de: "A, D"

etc.


Nota
Nota: El número de secuencia debe ser único para cada tipo de elemento, pudiendo existir, por ejemplo, un cliente y un ítem la misma secuencia; pero nunca dos elementos con el mismo número de secuencia.

...

Siempre va a haber por lo menos un optional (sin importar que función de convivencia se esté utilizando). Solo la función de convivencia OPTION tiene un tag. Las otras funciones de convivencia modifican el resultado sin tener un tag, lo maneja internamente el motor. En el caso que se utilice la función de convivencia "OPTION" pueden venir varios optional para que puedan ser informados en pantalla, y la persona elija en el POS qué opción va a preferir. El POS deberá usar el campo "chosenOption" en el mensaje Finish, para informarle a Promo qué opción eligió la persona en la pantalla del POS. Para elegir la primer promoción deberá ingresar en chosenOption="0", para la segunda promoción chosenOption="1", y así
Informações
titleResponse de Opciones JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "7.2.2#236",
    "mapversion": "139",
    "messageId": "1",
    "store": "tienda 1",
    "terminal": "1",
    "optional": [
      {
        "promo": {
          "id": "PromoO1",
          "nro": "638e15f77e8f8e2654b40864",
          "benefit": [{
            "TLOGMessage": "PromoO1",
            "account": "",
            "applicationMethod": "resume",
            "baseAmount": "1400.00",
            "benefitType": "PercentageDiscount",
            "discountPercentage": "50.00",
            "displayMessage": "PromoO1",
            "name": "638e15f77e8f8e2654b40864",
            "nro": "638e16157e8f8e2654b4086b",
            "order": "1",
            "printerMessage": "PromoO1",
            "prorationMethod": "PROPORTIONAL",
            "unit": "qty",
            "apply": {
              "item": [{
                "magnitude": "0.000",
                "qty": "1.000",
                "seq": "1",
                "value": "700.00",
                "valueWithTaxes": "700.00",
                "xprice": "1400.00"
              }]
            }
          }]
        }
      },
      {
        "promo": [{
          "id": "PromoO2",
          "nro": "638e16317e8f8e2654b4086e",
          "benefit": {
            "TLOGMessage": "PromoO2",
            "account": "",
            "applicationMethod": "resume",
            "baseAmount": "1400.00",
            "benefitType": "FixedDiscount",
            "discountAmount": "1000.00",
            "displayMessage": "PromoO2",
            "name": "638e16317e8f8e2654b4086e",
            "nro": "638e16427e8f8e2654b40872",
            "order": "1",
            "printerMessage": "PromoO2",
            "prorationMethod": "PROPORTIONAL",
            "unit": "qty",
            "apply": {
              "item": [{
                "magnitude": "0.000",
                "qty": "1.000",
                "seq": "1",
                "value": "1000.00",
                "valueWithTaxes": "1000.00",
                "xprice": "1400.00"
              }]
            }
          }]
        }
      },
      {
        "promo": [{
          "id": "PromoO3",
          "nro": "638e16757e8f8e2654b40878",
          "benefit": [{
            "TLOGMessage": "PromoO3",
            "account": "",
            "amount": "",
            "applicationMethod": "resume",
            "baseAmount": "1400.00",
            "benefitType": "CouponBenefit",
            "couponId": "601",
            "displayMessage": "PromoO3",
            "infoPos": "0",
            "name": "638e16757e8f8e2654b40878",
            "nro": "638e16997e8f8e2654b4087f",
            "order": "1",
            "printerMessage": "PromoO3",
            "qty": "1.000",
            "apply": {
              "item": [{
                "magnitude": "0.000",
                "qty": "1.000",
                "seq": "1",
                "value": "0.00",
                "valueWithTaxes": "0.00",
                "xprice": "1400.00"
              }]
            }
          }]
        }]
      }
    ]
  }
}

Nota

Para seleccionar una opción, en el finish se debe agregar chosenOption y el orden de la que haya seleccionado el cliente:

Bloco de código
languagexml
themeEmacs
titleRequest Opcion
<message companyId="2" store="3" terminal="1" date-time="2023-07-26 15:00:00" init-tck="false" messageId="1" void-trx="false" response="true" status="finish" evaluate="true" suggest="false" chosenOption="1">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="12000" xprice="12000" qty="1"  code="Coca-Cola" discountable="true"/>
</message>


Nota

Siempre va a haber por lo menos un optional (sin importar que función de convivencia se esté utilizando). Solo la función de convivencia OPTION tiene un tag. Las otras funciones de convivencia modifican el resultado sin tener un tag, lo maneja internamente el motor. En el caso que se utilice la función de convivencia "OPTION" pueden venir varios optional para que puedan ser informados en pantalla, y la persona elija en el POS qué opción va a preferir. El POS deberá usar el campo "chosenOption" en el mensaje Finish, para informarle a Promo qué opción eligió la persona en la pantalla del POS. Para elegir la primer promoción deberá ingresar en chosenOption="0", para la segunda promoción chosenOption="1", y así sucesivamente.



Âncora
_Toc513731662
_Toc513731662
Promociones

...

Âncora
_Toc513731663
_Toc513731663
Participantes de condición


Los participantes de condición son un componente opcional que indica los elementos que influyeron en la condición (ver Manual de usuario) que provocaron que se otorgue el beneficio. Estos elementos estarán agrupados dentro de una etiqueta del tipo <conditionParticipants>. Los elementos participantes de condición estarán representados por la etiqueta que corresponda al tipo de elemento, agrupados como ya se describió dentro de <conditionParticipants>. Los elementos participantes poseerán los atributos informados al momento de agregarlos a la sesión.
Los participantes de condición son completamente opcionales, pudiendo no ser informados si así se configura en el archivo de definición de promociones (mapa) Módulo de administracion/Informacion de configuracion o si no existen participantes de condición. En ese caso la etiqueta <conditionParticipants> no formará parte de la promoción. Esta etiqueta no posee atributos.


Aviso
iconfalse
titleImportante

Si la variable :

Image Added

es true, los participantes de condición siempre se verán, independientemente que la promoción tenga o no tildado el check de "Reporta Participantes".


Bloco de código
languagexml
themeEmacs
titleEjemplo XML
<message companyId="sts" store="MX" mapversion="3241" messageId="160" terminal="100" engine="2.6" ack="0">
<optional>
<promo id="Promoción navideña" nro="1">
<conditionParticipants>
<item code="0056" brand="PANASONIC" xprice="99.0" magnitude="0.0" family="TV" type="qty" dept="ELECTRONIC" qty="1.0" seq="2"/>
<customer seq="2" id="000004" type="preferred" />
<coupon seq="1" id="0001" amount="" qty="1.0" type="A" />
</conditionParticipants>

… beneficios …

</promo>
</optional>
</message>

...

A partir de 7.2.3 al realizar un loyaltyValidation de un cliente, además de mostrar los datos del cliente, si este posee tarjetas o cupones, mostrará la misma información que al realizar un loyaltyValidation de tarjetas o cupones por separado".

...

languagexml
themeEmacs
titleRequest XML


...

A partir de 7.2.6 si el código de cliente enviado en el loyaltyValidation está en mayúsculas y en la base de datos también, el response mostrará los datos del cliente. Si el código de cliente enviado en el loyaltyValidation está en minúsculas y en la base de datos también, el response mostrará los datos del cliente. Si el código de cliente enviado en el loyaltyValidation está en minúsculas y en la base de datos está en mayúsculas, se responderá con el mensaje de error 9603: cliente inexistente. Si el código de cliente enviado en el loyaltyValidation está en mayúsculas y en la base de datos está en minúsculas, se responderá con el mensaje de error 9603: cliente inexistente.


Bloco de código
languagexml
themeEmacs
titleRequest XML
<message companyId="napse" store="3" terminal="1" date-time="2023-08-02 12:30:00" init-tck="falsetrue" messageId="1" void-trx="false" response="true" status="loyaltyvalidation" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="1000000000" />
<loyaltycard-add seq="2" id="1000000009" />
<loyaltycard-add seq="3" id="6010000009" />
<customer-add seq="1" id="1"/>
</message>
  


Informações
titleRequest JSON

{
  "message": {
    "companyId": "2napse",
    "store": "1",
    "terminal": "1",
    "date-time": "2023-0308-17 1902 12:30030:00",
    "init-tck": "false",
    "messageId": "1",
    "void-trx": "false",
    "response": "true",
    "status": "loyaltyvalidation",
    "evaluate": "true",
    "suggest": "false",
    "customer-add": [{
      "seq": "1",
      "id": "1"
    }]
  }
}

...

Bloco de código
languagexml
themeEmacs
titleResponse XML
----- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.2.4#2646#282" mapversion="374" messageId="1" store="13" terminal="1" transaction="2_13_1_2023031800000020230802123000">
  <loyalty>
    <loyaltycards/>
    <coupons/>
    <errors/>
    <customers>
      <customer code="1" email="[email protected]" identifier="12345" lastName="perezPerez" limitedBenefits="" name="juanJUAN" segment="" seq="1" type="empleadoEMPLEADO">
        <coupon ack="0" amount="0.00" barcode="10100100164711050030016471" couponId="16"/>
        <coupon<loyaltycard ack="0" amount="1.00" amountChargeLimit="0.00" barcodecontract="" id="1000000000" status="Activa" type="10200100164701" couponIdusePartial="2true"/>
        <loyaltycard ack="0" amount="0.00" amountChargeLimit="0.00" contract="" id="1000000009" status="Activa" type="1" usePartial="true"/>
        <loyaltycard ack="0" amount="200000.00" amountChargeLimit="0.00" contract="1" id="6010000009" status="Activa" type="4" usePartial="true"/>
      </customer>
    </customers>
    <redeemTable/>
  </loyalty>
</message>

  


Informações
titleResponse JSON

{
  "message": {
    "ack": "0",
    "companyId": "2napse",
    "engine": "7.2.4#2646#282",
    "mapversion": "374",
    "messageId": "1",
    "store": "13",
    "terminal": "1",
    "transaction": "2_13_1_2023031800000020230802123000",
    "loyalty": {
      "loyaltycards": {},
      "coupons": {},
      "errors": {},
      "customers": {
        "customer": [{
          "code": "1",
          "email": "promonapse@gmail.com",
          "identifier": "12345",
          "lastName": "perez",
          "limitedBenefits": "",
          "name": "juan",
          "segment": "",
          "seq": "1",
          "type": "empleado",
          "coupon": [
            {
              "ack": "0",
              "amount": "0.00",
              "barcode": "1010010016471",
              "couponId": "1"
            },
            {
              "ack": "0",
              "amount": "0.00",
              "barcode": "1020010016470",
              "couponId": "2"
            }
          ],
          "loyaltycard": [{
            "ack": "0",
            "amount": "0.00",
            "amountChargeLimit": "0.00",
            "contract": "",
            "id": "10000000091000000000",
            "status": "Activa",
            "type": "1",
            "usePartial": "true"
          }],

          }]
{ "ack": "0",
            }"amount": "1.00",
            "redeemTableamountChargeLimit": {}
    }
  }
}"0.00",
            "contract": "",
            "id": "1000000009",
            "status": "Activa",
            "type": "1",
            "usePartial": "true"
        },

        { "ack": "0",
            "amount": "200000.00",
            "amountChargeLimit": "0.00",
            "contract": "",
            "id": "6010000009",
            "status": "Activa",
            "type": "4",
            "usePartial": "true"
      }]
      "redeemTable": {}
    }
  }
}


A partir de Promo 7.2.6 en la respuesta del mensaje loyaltyvalidation se envía el campo: paymentCode. Dicho campo utiliza el catálgo catalogPaymetCode.catalog.

...

Si se especifica un cvv el mismo será registrado y asociado al elemento de fidelidad que se ha creado.En la siguiente figura se muestra un tipo de ejemplo denominado tn1

Image Removed

Procedemos a la creación sin carga del primer elemento de fidelidad:

Bloco de código
languagexml
themeEmacs
titleRequest XML
<message companyId="2napse" store="2" terminal="10" date-time="2023-0407-1011 1711:0030:00" init-tck="true" messageId="1" void-trx="false" response="true" status="loyaltyActivation" evaluate="false" offline="false">
<loyaltycard-add seq="1" id="40100000101600000003" type="37" status="CREATE" />
</message> 

...

Informações
titleRequest JSON

{
  "message": {
    "companyId": "2napse",
    "store": "2",
    "terminal": "10",
    "date-time": "2023-0407-10 1711 11:0030:00",
    "init-tck": "true",
    "messageId": "1",
    "void-trx": "false",
    "response": "true",
    "status": "loyaltyActivation",
    "evaluate": "false",
    "offline": "false",
    "loyaltycard-add": [{
      "seq": "1",
      "id": "40100000101600000003",
      "type": "37",
      "status": "CREATE"
    }]
  }
}

...

Bloco de código
languagexml
themeEmacs
titleResponse XML
----- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2napse" engine="7.2.4#2646#282" mapversion="071" messageId="1" store="2" terminal="10" transaction="2_2_10_2023041017000020230711113000">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" amount="0.00" id="40100000101600000003" seq="1" type="37"/>
    </loyaltycards>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
  </loyalty>
</message>



Informações
titleResponse JSON

{
  "message": {
    "ack": "0",
    "companyId": "2napse",
    "engine": "7.2.4#2646#282",
    "mapversion": "071",
    "messageId": "1",
    "store": "2",
    "terminal": "10",
    "transaction": "2_2_10_2023041017000020230711113000",
    "loyalty": {
      "loyaltycards": {
        "loyaltycard": [{
          "ack": "0",
          "amount": "0.00",
          "id": "40100000101600000003",
          "seq": "1",
          "type": "37"
        }]
      },
      "coupons": {},
      "errors": {},
      "customers": {},
      "redeemTable": {}
    }
  }
}

...

Bloco de código
languagexml
themeEmacs
titleRequest XML
<message companyId="2napse" store="2" terminal="10" date-time="2023-0407-1011 1711:0030:00" init-tck="true" messageId="1" void-trx="false" response="true" status="loyaltyActivation" evaluate="false" offline="false">
<loyaltycard-add seq="1" id="40100000121600000004" type="37" status="CREATE" chargeAmount="105.001000" />
</message> 


Informações
titleRequest JSON

{
  "message": {
    "companyId": "2napse",
    "store": "2",
    "terminal": "10",
    "date-time": "2023-0407-10 1711 11:0030:00",
    "init-tck": "true",
    "messageId": "1",
    "void-trx": "false",
    "response": "true",
    "status": "loyaltyActivation",
    "evaluate": "false",
    "offline": "false",
    "loyaltycard-add": [{
      "seq": "1",
      "id": "40100000121600000004",
      "type": "37",
      "status": "CREATE",
      "chargeAmount": "1051000.00"
    }]
  }
}



Respuesta

Bloco de código
languagexml
themeEmacs
titleResponse XML
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2napse" engine="7.2.4#2646#282" mapversion="071" messageId="1" store="2" terminal="10" transaction="2_2_10_2023041017000020230711113000">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" amount="1051000.00" id="40100000121600000004" seq="1" type="37"/>
    </loyaltycards>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
  </loyalty>
</message>
  


Informações
titleResponse JSON

{
  "message": {
    "ack": "0",
    "companyId": "2napse",
    "engine": "7.2.4#2646#28",
    "mapversion": "071",
    "messageId": "1",
    "store": "2",
    "terminal": "10",
    "transaction": "2_2_10_2023041017000020230711113000",
    "loyalty": {
      "loyaltycards": {
        "loyaltycard": [{
          "ack": "0",
          "amount": "1051000.00",
          "id": "40100000121600000004",
          "seq": "1",
          "type": "37"
        }]
      },
      "coupons": {},
      "errors": {},
      "customers": {},
      "redeemTable": {}
    }
  }
}

...

Si observamos el detalle de alguna de ellas:

Image RemovedImage Added


Cambio y reseteo de CVV de un elemento de fidelidad (CVVCHANGE y CVVRESET)

...

Expandir
titleCVVCHANGE

Para el cambio de CVV se deberá enviar en el status="loyaltyActivation" el tag <loyaltycard/> el status "CVVCHANGE"

Ejemplo de envio de cambio de CVV

Bloco de código
languagexml
themeEmacs
titleRequest XML
<message status="loyaltyActivation" companyId="napse" date-time="20212023-0407-11 1612:00:4400" evaluate="true" init-tck="true" messageId="1" offline="false" response="true" store="00433" terminal="0011" void-trx="false">
<loyaltycard-add seq="1" id="44000000000000121600000014" status="CVVCHANGE" cvv="1234" />
</message>


Informações
titleRequest JSON

{
  "message": {
    "status": "loyaltyActivation",
    "companyId": "napse",
    "date-time": "20212023-0407-11 1612:00:4400",
    "evaluate": "true",
    "init-tck": "true",
    "messageId": "1",
    "offline": "false",
    "response": "true",
    "store": "00433",
    "terminal": "0011",
    "void-trx": "false",
    "loyaltycard-add": [{
      "seq": "1",
      "id": "44000000000000121600000014",
      "status": "CVVCHANGE",
      "cvv": "1234"
    }]
  }
}


Cuando la operación termine de manera satisfactoria se obtendrá la siguiente respuesta:

Bloco de código
languagexml
themeEmacs
titleResponse XML
<?xml version=---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="napse" engine="7.12.5-SNAPSHOT#1326#282" mapversion="71471" messageId="1" store="00433" terminal="0011" transaction="napse2_00433_0011_2021080616440020230711120000">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" id="44000000000000121600000004" seq="1" type="-"/>
    </loyaltycards>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
  </loyalty>
</message>


Informações
titleResponse JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "7.12.5-SNAPSHOT#1326#282",
    "mapversion": "71471",
    "messageId": "1",
    "store": "00433",
    "terminal": "0011",
    "transaction": "napse2_00433_0011_2021080616440020230711120000",
    "loyalty": {
      "loyaltycards": {
        "loyaltycard": [{
          "ack": "0",
          "id": "44000000000000121600000004",
          "seq": "1",
          "type": "-7"
        }]
      },
      "coupons": {},
      "errors": {},
      "customers": {},
      "redeemTable": {}
    }
  }
}


En caso de error en el proceso de cambio de CVV se devolverá la siguiente respuesta:

Bloco de código
languagexml
themeEmacs
titleResponse XML
--- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="napse" engine="7.12.5-SNAPSHOT#1326#282" mapversion="71471" messageId="1" store="00433" terminal="0011" transaction="napse2_00433_0011_2021080616550020230711120000">
  <loyalty>
    <loyaltycards/>
    <coupons/>
    <errors>
      <error ack="9500" id="4400000000033000121600000014" info="4400000000033000121600000014" seq="1" type="loyaltycard-activation"/>
    </errors>
    <customers/>
    <redeemTable/>
  </loyalty>
</message>


Informações
titleResponse JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "7.12.5-SNAPSHOT#1326#282",
    "mapversion": "71471",
    "messageId": "1",
    "store": "00433",
    "terminal": "0011",
    "transaction": "napse2_00433_0011_2021080616550020230711120000",
    "loyalty": {
      "loyaltycards": {},
      "coupons": {},
      "errors": {
        "error": [{
          "ack": "9500",
          "id": "4400000000033000121600000014",
          "info": "4400000000033000121600000014",
          "seq": "1",
          "type": "loyaltycard-activation"
        }]
      },
      "customers": {},
      "redeemTable": {}
    }
  }
}


En este caso se informa que el elemento no existe en la Base de Promol.


Al realizarse un cambio de CVV, podrá observarse el movimiento en el detalle del elemento de la siguiente forma:

Image RemovedImage Added



Expandir
titleCVVRESET

Para el reset de CVV se deberá enviar en el status="loyaltyActivation" el tag <loyaltycard/> el status "CVVRESET"

Ejemplo de envío de reset de CVV:

Bloco de código
languagexml
themeEmacs
titleRequest XML
<message status="loyaltyActivation" companyId="napse" date-time="20212023-0407-11 1612:00:2000" evaluate="true" init-tck="true" messageId="1" offline="false" response="true" store="00433" terminal="0011" void-trx="false">
<loyaltycard-add seq="1" id="44000000000000111600000004" status="CVVRESET" />
</message>


Informações
titleRequest JSON

{
  "message": {
    "status": "loyaltyActivation",
    "companyId": "napse",
    "date-time": "20212023-0407-11 1612:00:2000",
    "evaluate": "true",
    "init-tck": "true",
    "messageId": "1",
    "offline": "false",
    "response": "true",
    "store": "00433",
    "terminal": "0011",
    "void-trx": "false",
    "loyaltycard-add": [{
      "seq": "1",
      "id": "44000000000000111600000004",
      "status": "CVVRESET"
    }]
  }
}


Cuando la operación termine de manera satisfactoria se obtendrá la siguiente respuesta:

Bloco de código
languagexml
themeEmacs
titleResponse XML
----- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="napse" engine="7.12.5-SNAPSHOT#1326#282" mapversion="71471" messageId="1" store="00433" terminal="0011" transaction="napse2_00433_0011_2021041116100020230711120000">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" id="44000000000000801600000004" seq="1" type="-"/>
    </loyaltycards>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
  </loyalty>
</message>
 


Informações
titleResponse JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "7.12.5-SNAPSHOT#1326#282",
    "mapversion": "71471",
    "messageId": "1",
    "store": "00433",
    "terminal": "0011",
    "transaction": "napse2_00433_0011_2021041116100020230711120000",
    "loyalty": {
      "loyaltycards": {
        "loyaltycard": [{
          "ack": "0",
          "id": "44000000000000801600000004",
          "seq": "1",
          "type": "-"
        }]
      },
      "coupons": {},
      "errors": {},
      "customers": {},
      "redeemTable": {}
    }
  }
}


En caso de error en el proceso de reset de CVV se devolverá la siguiente respuesta:

Bloco de código
languagexml
themeEmacs
titleResponse XML
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="napse" engine="7.12.5-SNAPSHOT#1326#282" mapversion="71471" messageId="1" store="00433" terminal="0011" transaction="napse2_00433_0011_2021041116100020230711120000">
  <loyalty>
    <loyaltycards/>
    <coupons/>
    <errors>
      <error ack="95079500" id="44000000000000801600000014" info="44000000000000801600000014" seq="1" type="loyaltycard-activation"/>
    </errors>
    <customers/>
    <redeemTable/>
  </loyalty>
</message>


Informações
titleResponse JSON

{
  "message": {
    "ack": "0",
    "companyId": "napse",
    "engine": "7.12.5-SNAPSHOT#1326#282",
    "mapversion": "71471",
    "messageId": "1",
    "store": "00433",
    "terminal": "0011",
    "transaction": "napse2_00433_0011_2021041116100020230711120000",
    "loyalty": {
      "loyaltycards": {},
      "coupons": {},
      "errors": {
        "error": [{
          "ack": "9507",
          "id": "44000000000000801600000014",
          "info": "44000000000000801600000014",
          "seq": "1",
          "type": "loyaltycard-activation"
        }]
      },
      "customers": {},
      "redeemTable": {}
    }
  }
}


En este caso se informa que el estado enviado del elemento no existe. (error de sintaxis en el request)


Al realizarse un reset de CVV, podrá observarse el movimiento en el detalle del elemento de la siguiente forma:

Image Removed

Al realizar un reset del CVV de un elemento de Fidelidad, en la Base de datos se mostrara el campo cvv de la tarjeta de la siguiente fomar:

Image Removed

Image Added


Âncora
_Toc513731673
_Toc513731673
LoyaltyTransfer

Realiza la transferencia de saldo de un elemento de fidelidad a otra del mismo tipo. Una transferencia de saldos puede ser total, cuando se transfiere todo el monto, o parcial, si sólo se realiza el intercambio de una parte del valor. En el caso de una transferencia total, hay que considerar en dar de baja el primer elemento de fidelidad, del cual se obtiene el monto.
Para poder realizar una transferencia de saldos, tanto el elemento de origen (la que da saldo) como la de destino (la que recibe saldo) deben ser del mismo tipo.
En la seq=1 enviada por el POS se informara la tarjeta origen, es decir, a quien se le descontaran los puntos, dinero, millas, etc.
En la seq=2 enviada por el POS se informara la tarjeta destino, es decir, la que recibirá los puntos, dinero, millas, etc.
(Ver también Manual de Usuario, "Conceptos de Tarjetas Elementos de Fidelidad" para más detalle sobe los distintos tipos de transferencia posible,)

...

Bloco de código
languagexml
themeEmacs
titleRequest XML
<message companyId="stsnapse"
 store="13" terminal="1" date-time="20172023-07-12-29 1618:4900:1600" init-tck="true" 
messageId="1" void-trx="false" response="true" status="loyaltyTransfer" msg-versionevaluate="9true" map-versionsuggest="1false">
 <loyaltycard-add seq="1" typeid="21600000004" idtype="22200000000007" />
 <loyaltycard-add seq="2" id="1600000002" type="7" chargeAmount="500"/>
</message> 


Bloco de código
languagexml
themeEmacs
titleResponse
----- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="napse" engine="7.2.6#282" mapversion="71" messageId="1" store="3" terminal="1" transaction="2_3_1_20230712180000">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" amount="500.00" id="1600000004" seq="1" type="7"/>
      <loyaltycard ack="0" amount="2000.00" id="22200000000011600000002" chargeAmountseq="42" type="7"/>
   </message>  
 </loyaltycards>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
  </loyalty>
</message>



Informações
titleRequest JSON

{
  "message": {
    "companyId": "stsnapse",
    "store": "13",
    "terminal": "1",
    "date-time": "20172023-07-12 -29 1618:4900:1600",
    "init-tck": "true",
    "messageId": "1",
    "void-trx": "false",
    "response": "true",
    "status": "loyaltyTransfer",
    "msg-version": "9",
    "map-version": "171",
    "loyaltycard-add": [
      {
        "seq": "1",
        "type": "27",
        "id": "22200000000001600000004"
      },
      {
        "seq": "2",
        "type": "27",
        "id": "22200000000011600000002",
        "chargeAmount": "4500"
      }
    ]
  }
}


(Ver también Engine Response - LoyaltyTransfer)
Se requiere COMMIT o ROLLBACK para confirmar o reversar la transacción.


Transferencia parcial

Se puede realizar una transferencia parcial desde un elemento de fidelidad a otro.

Aviso
titleImportante

Para permitir una transferencia parcial, el tipo de elemento de fidelidad debe tener seleccionada esta opción.


  1. Por servicio rest

Al operar con postman, como el mensaje correspondiente será en formato xml, la cabecera content type tendrá el valor application/xml en lugar de application/json.

Image Added


Tener en cuenta que la url cambia para hacer esta operación, ya que se interactúa contra el motor. El valor que aparece a la derecha de evaluate, en la dirección, es autocompletado por postman. El cuerpo del mensaje (body) tendrá que estar vacío. Los mensajes se enviarán como un parámetro en la dirección. Este parámetro es request. Separar el valor con dos puntos. Presionar, para facilitar el ingreso de datos, en bulk edit (a la derecha de la solicitud) que luego cambia a key-value edit. El valor del parámetro request es el xml a enviar al motor, el cual no deberá tener ningún espacio entre etiquetas.

Bloco de código
languagexml
themeEmacs
titleURL
http://localhost:8172/engine/evaluate?request=<?xml version="1.0" encoding="UTF-8"?><message store="3" terminal="1" date-time="2023-07-12 18:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="loyaltyTransfer" map-version="71" companyId="napse"><loyaltycard-add seq="1" type="7" id="1600000004"/><loyaltycard-add seq="2" type="7" id="1600000002" chargeAmount="500" /></message>

Image Added

En la respuesta aparece como quedarían estas tarjetas de confirmarse la operación. Se confirma la operación con el mismo mensaje, pero con el atributo status en "commit" en lugar de "loyaltyTransfer" o "rollback" para cancelar.

Bloco de código
languagexml
themeEmacs
titleResponse
<?xml version="1.0" encoding="UTF-8"?>
<message ack="0" companyId="napse" engine="7.2.6#282" mapversion="71" messageId="1" store="3" terminal="1" transaction="2_3_1_20230712180000">
    <loyalty>
        <loyaltycards>
            <loyaltycard ack="0" amount="500.00" id="1600000004" seq="1" type="7"/>
            <loyaltycard ack="0" amount="2000.00" id="1600000002" seq="2" type="7"/>
        </loyaltycards>
        <coupons/>
        <errors/>
        <customers/>
        <redeemTable/>
    </loyalty>
</message>


Al confirmar la operación....

Bloco de código
languagexml
themeEmacs
titleRequest
<?xml version="1.0" encoding="UTF-8"?>
<message ack="0" companyId="napse" engine="7.2.6#282" mapversion="71" messageId="1" store="3" terminal="1" transaction="2_3_1_20230712180000"/>


Image Added


se verá en la consola reflejado el cambio.

Image Added


2. Por servicio tcp:


Se realiza la consulta:

Bloco de código
languagexml
themeEmacs
titleRequest
<message companyId="napse" store="3" terminal="1" date-time="2023-07-12 17:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="loyaltyTransfer" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="1100000007" type="5" />
<loyaltycard-add seq="2" id="1100000006" type="5" chargeAmount="500"/>
</message>


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

En la respuesta aparece como quedarían estas tarjetas de confirmarse la operación. Se confirma la operación con el mismo mensaje, pero con el atributo status en "commit" en lugar de "loyaltyTransfer" o "rollback" para cancelar.

Al confirmar la operación....

Bloco de código
languagexml
themeEmacs
titleRequest
<message companyId="2" store="3" terminal="1" date-time="2023-07-11 10:30:00" init-tck="true" messageId="1" void-trx="false" response="true" status="commit" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="1600000000" type="7" />
<loyaltycard-add seq="2" id="1600000001" type="7" chargeAmount="500"/>
</message>


Bloco de código
languagexml
themeEmacs
titleResponse
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.2.6#282" mapversion="71" messageId="1" store="3" terminal="1" transaction="2_3_1_20230711103000"/>


se verá en la consola reflejado el cambio.

Image Added


Âncora
_LoyaltyVoid
_LoyaltyVoid
Âncora
_Toc513731674
_Toc513731674
LoyaltyVoid

...