PROMO 7.4 - Circuito para Uso de Promociones con Descuento por Convenios




CONTENIDO


Definición de Convenio

Un convenio es un acuerdo establecido entre dos o más entidades con la finalidad de dar beneficios a los clientes.

Pre-Condiciones

Para utilizar el beneficio "Descuento por Convenios" en una promoción ,es necesario:

  1. Crear en la consola el/los convenios que van a intervenir en la promoción:


2. Asociar el/los convenio/s a un elemento de fidelidad y a un cliente:


El archivo debe contener la siguiente información:

  • Número de elemento de fidelidad
  • Código de Cliente
  • Saldo

Ej:


el nombre debe ser de tipo: tipodeelemento_codigodeconvenio_timestap.catalog: 3_1_20230629091300.catalog

Una vez procesado el archivo se detallará en la consola:


Importante

Un cliente sólo podrá tener un tipo de  elemento de fidelidad asociado a un mismo convenio. Es decir un cliente no podrá poseer dos o más elementos de fidelidad de fidelidad que estén asociadas a un mismo convenio.

Se trató de procesar el archivo,

donde el cliente 1 tiene asociado dos elementos de fidelidad a un mismo convenio:

Al procesarlo, la consola arroja el siguiente error:


Crear la Promoción:

En la consola se crea la promoción cuyo beneficio será el descuento por convenio:

  1. Se debe agregar un convenio:

2. luego seleccionar clase de beneficio: "Descuento por Convenio" y completar el porcentaje de descuento:


3. Se debe agregar un límite, por cliente y por cantidad de dinero:

Importante

Si falta cualquiera de estos tres puntos , la promoción no se aplicará.


Resumen de la promoción:



Se realiza primeramente un loyaltyValidation:

Request
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:00:00" init-tck="false" messageId="1" void-trx="false" response="true" status="loyaltyvalidation" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
</message>
Response
----- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1" transaction="2_3_1_20230629100000">
  <loyalty>
    <loyaltycards/>
    <coupons/>
    <errors/>
    <customers>
      <customer age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="649d780063ca194ebc8dbe7c:20000.00;" name="juan" segment="Seg1" seq="1" type="empleado">
        <loyaltycard ack="0" amount="200000.00" amountChargeLimit="0.00" contract="1" id="2010000019" status="Activa" type="3" usePartial="true"/>
      </customer>
    </customers>
    <redeemTable/>
    <goalsPrograms/>
  </loyalty>
</message>   


En la respuesta se observa el id del convenio, asociado a la tarjeta:

<loyaltycard ack="0" amount="200000.00" amountChargeLimit="0.00" contract="1" id="2010000019" status="Activa" type="3" usePartial="true"/>


Luego se hace la venta:

Request
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:00:00" init-tck="false" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="2010000019"  type="3" contract="1"/>
<customer-add seq="1" id="1" age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="649d780063ca194ebc8dbe7c:20000.00;" name="juan" segment="Seg1" type="empleado"/>
<item-add seq="1" unitprice="4000" xprice="4000" qty="1"  code="Coca-Cola" discountable="true"/>
</message>
Response
---- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo Descuento por Convenio" nro="649d77c463ca194ebc8dbe70">
      <benefit TLOGMessage="Promo Descuento por Convenio" account="" applicationMethod="resume" baseAmount="4000.00" benefitType="ContractPercentageDiscount" discountPercentage="50.00" displayMessage="Promo Descuento por Convenio" hasLimit="true" name="649d77c463ca194ebc8dbe70" nro="649d780063ca194ebc8dbe7c" order="1" printerMessage="Promo Descuento por Convenio" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="2000.00" valueWithTaxes="2000.00" xprice="4000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>
Finish
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:00:00" init-tck="false" messageId="1" void-trx="false" response="true" status="finish" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="2010000019"  type="3" contract="1"/>
<customer-add seq="1" id="1" age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="649d780063ca194ebc8dbe7c:20000.00;" name="juan" segment="Seg1" type="empleado"/>
<item-add seq="1" unitprice="4000" xprice="4000" qty="1"  code="Coca-Cola" discountable="true"/>
</message>
Finish
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1" transaction="2_3_1_20230629100000">
  <loyalty>
    <loyaltycards/>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
    <goalsPrograms/>
  </loyalty>
</message>  
Commit
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:00:00" init-tck="false" messageId="1" void-trx="false" response="true" status="commit" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="2010000019"  type="3" contract="1"/>
<customer-add seq="1" id="1" age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="649d780063ca194ebc8dbe7c:20000.00;" name="juan" segment="Seg1" type="empleado"/>
<item-add seq="1" unitprice="4000" xprice="4000" qty="1"  code="Coca-Cola" discountable="true"/>
</message>
Commit
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1" transaction="2_3_1_20230629100000"/>
  


Se realiza otra venta:

Request
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:30:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="2010000019"  type="3" contract="1"/>
<customer-add seq="1" id="1" age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="649d780063ca194ebc8dbe7c:20000.00;" name="juan" segment="Seg1" type="empleado"/>
<item-add seq="1" unitprice="8000" xprice="8000" qty="1"  code="36" discountable="true"/>
<item-add seq="2" unitprice="1000" xprice="1000" qty="1"  code="92" discountable="true"/>
<item-add seq="3" unitprice="2000" xprice="2000" qty="1"  code="75" discountable="true"/>
</message>
Response
---- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo Descuento por Convenio" nro="649d77c463ca194ebc8dbe70">
      <benefit TLOGMessage="Promo Descuento por Convenio" account="" applicationMethod="resume" baseAmount="11000.00" benefitType="ContractPercentageDiscount" discountPercentage="50.00" displayMessage="Promo Descuento por Convenio" hasLimit="true" name="649d77c463ca194ebc8dbe70" nro="649d780063ca194ebc8dbe7c" order="1" printerMessage="Promo Descuento por Convenio" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="4000.00" valueWithTaxes="4000.00" xprice="8000.00"/>
          <item magnitude="0.000" qty="1.000" seq="2" value="500.00" valueWithTaxes="500.00" xprice="1000.00"/>
          <item magnitude="0.000" qty="1.000" seq="3" value="1000.00" valueWithTaxes="1000.00" xprice="2000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>


Finish
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1" transaction="2_3_1_20230629103000">
  <loyalty>
    <loyaltycards/>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
    <goalsPrograms/>
  </loyalty>
</message>
Commit
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1" transaction="2_3_1_20230629103000"/>
 

Por último realizamos otra venta:

<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:30:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="2010000019"  type="3" contract="1"/>
<customer-add seq="1" id="1" age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="649d780063ca194ebc8dbe7c:20000.00;" name="juan" segment="Seg1" type="empleado"/>
<item-add seq="1" unitprice="18000" xprice="18000" qty="1"  code="Parlantes" discountable="true"/>
</message>
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo Descuento por Convenio" nro="649d77c463ca194ebc8dbe70">
      <benefit TLOGMessage="Promo Descuento por Convenio" account="" applicationMethod="resume" baseAmount="18000.00" benefitType="ContractPercentageDiscount" discountPercentage="50.00" displayMessage="Promo Descuento por Convenio" hasLimit="true" name="649d77c463ca194ebc8dbe70" nro="649d780063ca194ebc8dbe7c" order="1" printerMessage="Promo Descuento por Convenio" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="9000.00" valueWithTaxes="9000.00" xprice="18000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>
  


Por último se hace otra venta:

LoyaltyValidation
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:30:00" init-tck="true" messageId="1" void-trx="false" response="true" status="loyaltyvalidation" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
</message>
LoyaltyValidation
----- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1" transaction="2_3_1_20230629103000">
  <loyalty>
    <loyaltycards/>
    <coupons/>
    <errors/>
    <customers>
      <customer age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="649d780063ca194ebc8dbe7c:12500.00;" name="juan" segment="Seg1" seq="1" type="empleado">
        <loyaltycard ack="0" amount="200000.00" amountChargeLimit="0.00" contract="1" id="2010000019" status="Activa" type="3" usePartial="true"/>
      </customer>
    </customers>
    <redeemTable/>
    <goalsPrograms/>
  </loyalty>
</message>

Se observa que el limite para descuentos ha disminuido:

limitedBenefits="649d780063ca194ebc8dbe7c:12500.00


Venta:

Sales
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:30:00" init-tck="false" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="2010000019" contract="1" type="3" />
<customer-add seq="1" id="1" age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="649d780063ca194ebc8dbe7c:12500.00;" name="juan" segment="Seg1"  type="empleado"/>
<item-add seq="1" unitprice="10000" xprice="40000" qty="4"  code="Pantalla-Video" discountable="true"/>
</message>
Sales
---- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo Descuento por Convenio" nro="649d77c463ca194ebc8dbe70">
      <benefit TLOGMessage="Promo Descuento por Convenio" account="" applicationMethod="resume" baseAmount="40000.00" benefitType="ContractPercentageDiscount" discountPercentage="50.00" displayMessage="Promo Descuento por Convenio" hasLimit="true" name="649d77c463ca194ebc8dbe70" nro="649d780063ca194ebc8dbe7c" order="1" printerMessage="Promo Descuento por Convenio" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="4.000" seq="1" value="12500.00" valueWithTaxes="12500.00" xprice="40000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>  

Se observa que se dió el descuento; sólo hasta los $12500, del limite que restaba.

<item magnitude="0.000" qty="4.000" seq="1" value="12500.00" valueWithTaxes="12500.00" xprice="40000.00"/>


Finish:

Finish
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:30:00" init-tck="false" messageId="1" void-trx="false" response="true" status="finish" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="2010000019" contract="1" type="3" />
<customer-add seq="1" id="1" age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="649d780063ca194ebc8dbe7c:12500.00;" name="juan" segment="Seg1"  type="empleado"/>
<item-add seq="1" unitprice="10000" xprice="40000" qty="4"  code="Pantalla-Video" discountable="true"/>
</message>
Finish
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1" transaction="2_3_1_20230629103000">
  <loyalty>
    <loyaltycards/>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
    <goalsPrograms/>
  </loyalty>
</message> 

Commit:

Commit
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:30:00" init-tck="false" messageId="1" void-trx="false" response="true" status="commit" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="2010000019" contract="1" type="3" />
<customer-add seq="1" id="1" age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="649d780063ca194ebc8dbe7c:12500.00;" name="juan" segment="Seg1"  type="empleado"/>
<item-add seq="1" unitprice="10000" xprice="40000" qty="4"  code="Pantalla-Video" discountable="true"/>
</message>
Commit
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="9002" companyId="2" engine="7.3.0RC3#71" mapversion="63" messageId="1" store="3" terminal="1" transaction="2_3_1_20230629103000"/>  


Ejemplo de casos erróneos:


Caso 1: La promoción no tiene  como condición simple el convenio


Se realiza primeramente el LoyaltyValidation:

LoyaltyValidation
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:30:00" init-tck="false" messageId="1" void-trx="false" response="true" status="loyaltyValidation" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
</message>
loyaltyvalidation
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="64" messageId="1" store="3" terminal="1" transaction="2_3_1_20230629103000">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" amount="200000.00" amountChargeLimit="0.00" contract="1" customer="1" id="2010000019" seq="1" type="3" usePartial="true"/>
    </loyaltycards>
    <coupons/>
    <errors/>
    <customers/>
    <redeemTable/>
    <goalsPrograms/>
  </loyalty>
</message>

Se observa que no trae los datos del cliente, porque el convenio está relacionado a la tarjeta de fidelidad.

Caso 2: La promoción tiene  como condición simple el convenio, pero al beneficio se le quita el limite

LoyaltyValidation:

LoyaltyValidation
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:30:00" init-tck="false" messageId="1" void-trx="false" response="true" status="loyaltyValidation" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
</message>
LoyaltyValidation
----- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="65" messageId="1" store="3" terminal="1" transaction="2_3_1_20230629103000">
  <loyalty>
    <loyaltycards>
      <loyaltycard ack="0" amount="200000.00" amountChargeLimit="0.00" contract="1" customer="1" id="2010000019" seq="1" type="3" usePartial="true"/>
    </loyaltycards>
    <coupons/>
    <errors/>
    <customers>
      <customer age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="" name="juan" segment="Seg1" seq="1" type="empleado">
        <loyaltycard ack="0" amount="200000.00" amountChargeLimit="0.00" contract="1" id="2010000019" status="Activa" type="3" usePartial="true"/>
        <event id="" type="ev" value="El producto del mes es Pañales Pampers, por su compra recibis 2 x 1"/>
        <event id="" type="ev" value="Si completas tus datos recibirás un regalo"/>
        <event id="" type="ev" value="Por pertenecer al segmento 1 tenes un 20% de descuento"/>
      </customer>
    </customers>
    <redeemTable/>
    <goalsPrograms/>
  </loyalty>
</message>

Venta:

sale
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:30:00" init-tck="false" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="2010000019" contract="1"  type="3"/>
<customer-add seq="1" id="1" age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="" name="juan" segment="Seg1"  type="empleado"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="Coca-Cola" discountable="true"/>
</message>
sale
---- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="65" messageId="1" store="3" terminal="1"/>

Se observa que el beneficio no fue otorgado.

Caso 3: Se aplica una condición simple a un cliente y no a un producto

Al crear una promoción sin condición simple por producto:

Venta:

Sale
<message companyId="2" store="3" terminal="1" date-time="2023-06-29 10:30:00" init-tck="false" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<loyaltycard-add seq="1" id="2010000019" contract="1"  type="3"/>
<customer-add seq="1" id="1" age="123" birthday="false" code="1" email="[email protected]" identifier="12345" incompleteData="true" lastName="perez" limitedBenefits="" name="juan" segment="Seg1"  type="empleado"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="Coca-Cola" discountable="true"/>
</message>
Sale
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="65" messageId="1" store="3" terminal="1"/>
  





  • Sem rótulos