PROMO 7.4 - Ejemplos de Funciones de Convivencia




CONTENIDO



Funciones de Convivencia


En esta sección se brindarán ejemplos de las distintas funciones de convivencia, para la mejor comprensión del usuario.

Las funciones de convivencia son:

  1. Secuencial:

Se generan las siguientes promociones :

Promo 1Promo 2Promo 3

Son distribuidas en el mapa usando la función secuencial:

Este mapa indica que se debe aplicar primero la promoción descuento 1, luego la promoción desc 2 y por ultimo la promo cupón.

Se realiza la venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-05-31 13:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="446"/>
<item-add seq="2" unitprice="500" xprice="500" qty="1"  code="111"/>
<item-add seq="1" unitprice="800" xprice="800" qty="1"  code="222"/>
</message>
Response
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="47" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo descuento 1" nro="6467c020a62e4348187d892c">
      <benefit TLOGMessage="Promo descuento 1" account="" applicationMethod="resume" baseAmount="500.00" benefitType="PercentageDiscount" discountPercentage="15.00" displayMessage="Promo descuento 1" name="6467c020a62e4348187d892c" nro="6467c06ba62e4348187d8930" order="1" printerMessage="Promo descuento 1" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="2" value="75.00" valueWithTaxes="75.00" xprice="500.00"/>
        </apply>
      </benefit>
    </promo>
    <promo id="Promo desc 2" nro="6467c0b0a62e4348187d8935">
      <benefit TLOGMessage="Promo desc 2" account="" applicationMethod="resume" baseAmount="800.00" benefitType="FixedDiscount" discountAmount="1000.00" displayMessage="Promo desc 2" name="6467c0b0a62e4348187d8935" nro="6467c0d9a62e4348187d893c" order="2" printerMessage="Promo desc 2" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="3" value="1000.00" valueWithTaxes="1000.00" xprice="800.00"/>
        </apply>
      </benefit>
    </promo>
    <promo id="Promo cupon" nro="6467c10ca62e4348187d893e">
      <benefit TLOGMessage="Promo cupon" account="" amount="" applicationMethod="resume" baseAmount="400.00" benefitType="CouponBenefit" couponId="1" displayMessage="Promo cupon" infoPos="0" name="6467c10ca62e4348187d893e" nro="6467c13ea62e4348187d8945" order="3" printerMessage="Promo cupon" qty="1.000">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="0.00" valueWithTaxes="0.00" xprice="400.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

Se observa que las promociones se fueron otorgando en el orden en que se había definido en el mapa.

2. Todas:

Utilizando las mismas promociones que en el caso anterior, las distribuimos usando la función "TODAS":

Se realiza la venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-02 15:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true"  suggest="false">
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="446"/>
<item-add seq="2" unitprice="500" xprice="500" qty="1"  code="111"/>
<item-add seq="3" unitprice="800" xprice="800" qty="1"  code="222"/>
</message>
Response
---- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="48" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo descuento 1" nro="6467c020a62e4348187d892c">
      <benefit TLOGMessage="Promo descuento 1" account="" applicationMethod="resume" baseAmount="500.00" benefitType="PercentageDiscount" discountPercentage="15.00" displayMessage="Promo descuento 1" name="6467c020a62e4348187d892c" nro="6467c06ba62e4348187d8930" order="1" printerMessage="Promo descuento 1" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="2" value="75.00" valueWithTaxes="75.00" xprice="500.00"/>
        </apply>
      </benefit>
    </promo>
    <promo id="Promo desc 2" nro="6467c0b0a62e4348187d8935">
      <benefit TLOGMessage="Promo desc 2" account="" applicationMethod="resume" baseAmount="800.00" benefitType="FixedDiscount" discountAmount="1000.00" displayMessage="Promo desc 2" name="6467c0b0a62e4348187d8935" nro="6467c0d9a62e4348187d893c" order="2" printerMessage="Promo desc 2" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="3" value="1000.00" valueWithTaxes="1000.00" xprice="800.00"/>
        </apply>
      </benefit>
    </promo>
    <promo id="Promo cupon" nro="6467c10ca62e4348187d893e">
      <benefit TLOGMessage="Promo cupon" account="" amount="" applicationMethod="resume" baseAmount="1700.00" benefitType="CouponBenefit" couponId="1" displayMessage="Promo cupon" infoPos="0" name="6467c10ca62e4348187d893e" nro="6467c13ea62e4348187d8945" order="3" printerMessage="Promo cupon" qty="3.000">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="0.00" valueWithTaxes="0.00" xprice="400.00"/>
          <item magnitude="0.000" qty="1.000" seq="2" value="0.00" valueWithTaxes="0.00" xprice="500.00"/>
          <item magnitude="0.000" qty="1.000" seq="3" value="0.00" valueWithTaxes="0.00" xprice="800.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

Se observa que se han aplicado todas las promociones que forman parte del mapa. La promoción "Promo cupón" se ha aplicado a los tres productos de la venta, otorgando tres cupones:

3. Opciones:

Utilizando las mismas promociones que en el caso anterior, las distribuimos usando la función "OPCIONES":

Se realiza una venta y se observa que entre los tags <optional></optional> se encuentran las distintas opciones de promociones, entre las que el cliente puede optar:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-02 15:30:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true"  suggest="false">
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="446"/>
<item-add seq="2" unitprice="500" xprice="500" qty="1"  code="111"/>
<item-add seq="3" unitprice="800" xprice="800" qty="1"  code="222"/>
</message>
Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="49" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo descuento 1" nro="6467c020a62e4348187d892c">
      <benefit TLOGMessage="Promo descuento 1" account="" applicationMethod="resume" baseAmount="500.00" benefitType="PercentageDiscount" discountPercentage="15.00" displayMessage="Promo descuento 1" name="6467c020a62e4348187d892c" nro="6467c06ba62e4348187d8930" order="1" printerMessage="Promo descuento 1" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="2" value="75.00" valueWithTaxes="75.00" xprice="500.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
  <optional>
    <promo id="Promo desc 2" nro="6467c0b0a62e4348187d8935">
      <benefit TLOGMessage="Promo desc 2" account="" applicationMethod="resume" baseAmount="800.00" benefitType="FixedDiscount" discountAmount="1000.00" displayMessage="Promo desc 2" name="6467c0b0a62e4348187d8935" nro="6467c0d9a62e4348187d893c" order="1" printerMessage="Promo desc 2" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="3" value="1000.00" valueWithTaxes="1000.00" xprice="800.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
  <optional>
    <promo id="Promo cupon" nro="6467c10ca62e4348187d893e">
      <benefit TLOGMessage="Promo cupon" account="" amount="" applicationMethod="resume" baseAmount="1700.00" benefitType="CouponBenefit" couponId="1" displayMessage="Promo cupon" infoPos="0" name="6467c10ca62e4348187d893e" nro="6467c13ea62e4348187d8945" order="1" printerMessage="Promo cupon" qty="3.000">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="0.00" valueWithTaxes="0.00" xprice="400.00"/>
          <item magnitude="0.000" qty="1.000" seq="2" value="0.00" valueWithTaxes="0.00" xprice="500.00"/>
          <item magnitude="0.000" qty="1.000" seq="3" value="0.00" valueWithTaxes="0.00" xprice="800.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

Si se hace una nueva distribución:

y una nueva venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-02 15:30:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true"  suggest="false">
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="446"/>
<item-add seq="2" unitprice="500" xprice="500" qty="1"  code="111"/>
<item-add seq="3" unitprice="800" xprice="800" qty="1"  code="222"/>
</message>
Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="50" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo descuento 1" nro="6467c020a62e4348187d892c">
      <benefit TLOGMessage="Promo descuento 1" account="" applicationMethod="resume" baseAmount="500.00" benefitType="PercentageDiscount" discountPercentage="15.00" displayMessage="Promo descuento 1" name="6467c020a62e4348187d892c" nro="6467c06ba62e4348187d8930" order="1" printerMessage="Promo descuento 1" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="2" value="75.00" valueWithTaxes="75.00" xprice="500.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
  <optional>
    <promo id="Promo desc 2" nro="6467c0b0a62e4348187d8935">
      <benefit TLOGMessage="Promo desc 2" account="" applicationMethod="resume" baseAmount="800.00" benefitType="FixedDiscount" discountAmount="1000.00" displayMessage="Promo desc 2" name="6467c0b0a62e4348187d8935" nro="6467c0d9a62e4348187d893c" order="1" printerMessage="Promo desc 2" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="3" value="1000.00" valueWithTaxes="1000.00" xprice="800.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>


Se observa que sólo se dieron como opciones, la Promo descuento 1 y la Promo cupón; ya que la promo Seg1 no aplica a los productos de la transacción. 

Importante

Si el cliente no selecciona ninguna de la opciones se aplica la primera del mapa:

Ej.:

Se parte de la distribución:

Donde el resumen de cada promocion es:


y el mapa:


Si se hace una venta y no se selecciona una opción:

Venta
<message companyId="napse" store="3" terminal="1" date-time="2023-07-26 13:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="12000" xprice="12000" qty="1"  code="Coca-Cola" discountable="true"/>
</message>

Aquí muestra las opciones:

Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="napse" engine="7.3.0RC3#71" mapversion="70" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo Opción 1" nro="64c12701b29c1e1dd8aa1027">
      <benefit TLOGMessage="Promo Opción 1" account="" applicationMethod="resume" baseAmount="12000.00" benefitType="PercentageDiscount" discountPercentage="50.00" displayMessage="Promo Opción 1" name="64c12701b29c1e1dd8aa1027" nro="64c1271bb29c1e1dd8aa102e" order="1" printerMessage="Promo Opción 1" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="6000.00" valueWithTaxes="6000.00" xprice="12000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
  <optional>
    <promo id="Promo Opción 2" nro="64c1273fb29c1e1dd8aa1030">
      <benefit TLOGMessage="Promo Opción 2" account="" applicationMethod="resume" baseAmount="12000.00" benefitType="FixedDiscount" discountAmount="1000.00" displayMessage="Promo Opción 2" name="64c1273fb29c1e1dd8aa1030" nro="64c1275ab29c1e1dd8aa1037" order="1" printerMessage="Promo Opción 2" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="1000.00" valueWithTaxes="1000.00" xprice="12000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
  <optional>
    <promo id="Promo Opción 3" nro="64c12789b29c1e1dd8aa1039">
      <benefit TLOGMessage="Promo Opción 3" account="" applicationMethod="resume" baseAmount="12000.00" benefitType="PercentageDiscount" discountPercentage="100.00" displayMessage="Promo Opción 3" name="64c12789b29c1e1dd8aa1039" nro="64c127b9b29c1e1dd8aa1040" order="1" printerMessage="Promo Opción 3" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="12000.00" valueWithTaxes="12000.00" xprice="12000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

----- message ------

En el Finish:

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

y en el commit:

Commit
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="napse" engine="7.3.0RC3#71" mapversion="70" messageId="1" store="3" terminal="1" transaction="2_3_1_20230726130000"/>

en la consola, se observa que se otorgó el beneficio de la primer promoción, que es un descuento del 50%: 

en el caso de seleccionar una opcion:

Finish
<message companyId="napse" store="3" terminal="1" date-time="2023-07-26 14:00:00" init-tck="false" messageId="1" void-trx="false" response="true" status="finish" evaluate="true" suggest="false" chosenOption="2">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="12000" xprice="12000" qty="1"  code="Coca-Cola" discountable="true"/>
</message>
Finish Response
---- message ------
<?xml version="1.0" encoding="UTF-8"?><message ack="0" companyId="2" engine="7.3.0RC3#71" mapversion="70" messageId="1" store="3" terminal="1" transaction="2_3_1_20230726140000">
  <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="70" messageId="1" store="3" terminal="1" transaction="2_3_1_20230726140000"/>

En la consola, se observa que aplicó el beneficio de la promoción "Promo Opción 3" con un descuento del 100%

Las opciones se comienzan a enumerar desde 0.

4. Excluir:

Distribuimos las siguiente promociones, usando la función "Excluir":

y realizamos una venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-02 16:30:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="446"/>
<item-add seq="2" unitprice="500" xprice="500" qty="1"  code="111"/>
<item-add seq="3" unitprice="800" xprice="800" qty="1"  code="222"/>
</message>
Response
---- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="51" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo descuento 1" nro="6467c020a62e4348187d892c">
      <benefit TLOGMessage="Promo descuento 1" account="" applicationMethod="resume" baseAmount="500.00" benefitType="PercentageDiscount" discountPercentage="15.00" displayMessage="Promo descuento 1" name="6467c020a62e4348187d892c" nro="6467c06ba62e4348187d8930" order="1" printerMessage="Promo descuento 1" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="2" value="75.00" valueWithTaxes="75.00" xprice="500.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

Se observa que otorgó la Promo 1, que fue la primera que pudo otorgar y la otra promoción ya no la otorgó.

Otro ejemplo:

Se hace la venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-02 16:30:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="446"/>
<item-add seq="2" unitprice="500" xprice="500" qty="1"  code="111"/>
<item-add seq="3" unitprice="800" xprice="800" qty="1"  code="222"/>
</message>
Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="53" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo desc 2" nro="6467c0b0a62e4348187d8935">
      <benefit TLOGMessage="Promo desc 2" account="" applicationMethod="resume" baseAmount="800.00" benefitType="FixedDiscount" discountAmount="1000.00" displayMessage="Promo desc 2" name="6467c0b0a62e4348187d8935" nro="6467c0d9a62e4348187d893c" order="1" printerMessage="Promo desc 2" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="3" value="1000.00" valueWithTaxes="1000.00" xprice="800.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

Se observa que otorgó la Promo desc 2, porque es la primera que encontró y pudo otorgar el descuento.

Otro ejemplo:

Al realizar la venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-02 17:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="446"/>
<item-add seq="2" unitprice="500" xprice="500" qty="1"  code="111"/>
<item-add seq="3" unitprice="800" xprice="800" qty="1"  code="222"/>
</message>
Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="54" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo cupon" nro="6467c10ca62e4348187d893e">
      <benefit TLOGMessage="Promo cupon" account="" amount="" applicationMethod="resume" baseAmount="1700.00" benefitType="CouponBenefit" couponId="1" displayMessage="Promo cupon" infoPos="0" name="6467c10ca62e4348187d893e" nro="6467c13ea62e4348187d8945" order="1" printerMessage="Promo cupon" qty="3.000">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="0.00" valueWithTaxes="0.00" xprice="400.00"/>
          <item magnitude="0.000" qty="1.000" seq="2" value="0.00" valueWithTaxes="0.00" xprice="500.00"/>
          <item magnitude="0.000" qty="1.000" seq="3" value="0.00" valueWithTaxes="0.00" xprice="800.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

Se observa que aplicó la Promo cupón; o sea la primera que encontró y no tiene en cuenta la otra.

5. Evalúa SI(IF):

Se generan las promociones:

Promo APromo B

  y las distribuimos usando la función  "Evalúa SI" 

Se realiza una venta  de un ítem que cumple con la Promo A y otro que cumple con la Promo B.

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-02 18:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="111" level2="electro"/>
<item-add seq="2" unitprice="1000" xprice="1000" qty="1"  code="436" level2="electro"/>
</message>
Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="55" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo A" nro="646ba922a62e432a98f450a3">
      <benefit TLOGMessage="Promo A" account="" applicationMethod="resume" baseAmount="400.00" benefitType="FixedDiscount" discountAmount="10.00" displayMessage="Promo A" name="646ba922a62e432a98f450a3" nro="646ba9a6a62e432a98f450ae" order="1" printerMessage="Promo A" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="10.00" valueWithTaxes="10.00" xprice="400.00"/>
        </apply>
      </benefit>
    </promo>
    <promo id="Promo B" nro="646ba9cba62e432a98f450b0">
      <benefit TLOGMessage="Promo B" account="" applicationMethod="resume" baseAmount="390.00" benefitType="FixedDiscount" discountAmount="18.00" displayMessage="Promo B" name="646ba9cba62e432a98f450b0" nro="646baa32a62e432a98f450b7" order="2" printerMessage="Promo B" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="18.00" valueWithTaxes="18.00" xprice="390.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

Se observa que  se aplicó la promoción B porque sus productos fueron beneficiados por la promoción A.

Realizamos otra venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-02 18:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="2" unitprice="1000" xprice="1000" qty="1"  code="436" level2="electro"/>
</message>
Input
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="55" messageId="1" store="3" terminal="1"/>

En este caso se observa que no se aplicó ninguna promoción; porque al no poderse aplicar la Promo A; no evalúa lo que sigue.

6. EVALÚA SINO (IFNOT):

Partiendo de las promociones usadas en el ítem anterior, las distribuimos en el mapa:

Se hace la venta de los ítems 111 y 436:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-02 19:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="111" level2="electro"/>
<item-add seq="2" unitprice="1000" xprice="1000" qty="1"  code="486" level2="electro"/>
</message>
Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="56" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo A" nro="646ba922a62e432a98f450a3">
      <benefit TLOGMessage="Promo A" account="" applicationMethod="resume" baseAmount="400.00" benefitType="FixedDiscount" discountAmount="10.00" displayMessage="Promo A" name="646ba922a62e432a98f450a3" nro="646ba9a6a62e432a98f450ae" order="1" printerMessage="Promo A" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="10.00" valueWithTaxes="10.00" xprice="400.00"/>
        </apply>
      </benefit>
    </promo>
    <promo id="Promo B" nro="646ba9cba62e432a98f450b0">
      <benefit TLOGMessage="Promo B" account="" applicationMethod="resume" baseAmount="1000.00" benefitType="FixedDiscount" discountAmount="18.00" displayMessage="Promo B" name="646ba9cba62e432a98f450b0" nro="646baa32a62e432a98f450b7" order="2" printerMessage="Promo B" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="2" value="18.00" valueWithTaxes="18.00" xprice="1000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

En este caso se observa que primero se beneficia al producto cuyo SKU = 111 con la promoción A y luego se beneficia al producto SKU = 436 con la promoción B; porque este ultimo no había sido alcanzado por la Promo A.



Las siguientes funciones son sólo para BENEFICIOS MONETARIOS:

7. MAXIMO DESCUENTO (MAX DISCOUNT):

Se generaron las siguientes promociones:

Promo 1Promo 2

Las distribuimos en un mapa usando la función Máximo Descuento:

Se realiza una venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-04 09:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="2000" xprice="2000" qty="1"  code="2345"/>
<item-add seq="2" unitprice="1000" xprice="1000" qty="1"  code="1234"/>
</message>
Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="57" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo MD 2" nro="646bd7a5a62e432a98f450fa">
      <benefit TLOGMessage="Promo MD 2" account="" applicationMethod="resume" baseAmount="2000.00" benefitType="PercentageDiscount" discountPercentage="20.00" displayMessage="Promo MD 2" name="646bd7a5a62e432a98f450fa" nro="646bd7d2a62e432a98f45103" order="1" printerMessage="Promo MD 2" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="1" value="400.00" valueWithTaxes="400.00" xprice="2000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>


Se observa que se aplicó el beneficio sobre el ítem 2345, ya que el 20% de 2000 = 400 > al 30% de 1000 = 300.

8. MINIMO DESCUENTO (MIN DISCOUNT):

Las promociones anteriores son distribuidas ahora con la funcion Minimo Descuento:

Se hace una venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-04 09:30:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="2000" xprice="2000" qty="1"  code="2345"/>
<item-add seq="2" unitprice="1000" xprice="1000" qty="1"  code="1234"/>
</message>


Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="58" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo MD1" nro="646bd747a62e432a98f450f1">
      <benefit TLOGMessage="Promo MD1" account="" applicationMethod="resume" baseAmount="1000.00" benefitType="PercentageDiscount" discountPercentage="30.00" displayMessage="Promo MD1" name="646bd747a62e432a98f450f1" nro="646bd783a62e432a98f450f8" order="1" printerMessage="Promo MD1" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="2" value="300.00" valueWithTaxes="300.00" xprice="1000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

Se observa que el beneficio fue aplicado al ítem SKU= 1234, ya que 30% de 1000 = 300 < que el ítem 2345 20% de 2000 = 400.

9. Máximo Descuento Combinado:

Se generan  las promociones:

Promo 1Promo 2Promo 3

las distribuimos con una función de Máximo Descuento Combinado:

y se realiza una venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-04 10:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="1234"/>
<item-add seq="2" unitprice="700" xprice="700" qty="1"  code="2345"/>
<item-add seq="3" unitprice="1000" xprice="1000" qty="1"  code="973"/>
</message>
Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="59" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo MDC III" nro="646e1081a62e43534826e493">
      <benefit TLOGMessage="Promo MDC III" account="" applicationMethod="resume" baseAmount="1400.00" benefitType="PercentageDiscount" discountPercentage="15.00" displayMessage="Promo MDC III" name="646e1081a62e43534826e493" nro="646e10a0a62e43534826e49a" order="1" printerMessage="Promo MDC III" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="3" value="150.00" valueWithTaxes="150.00" xprice="1000.00"/>
          <item magnitude="0.000" qty="1.000" seq="1" value="60.00" valueWithTaxes="60.00" xprice="400.00"/>
        </apply>
      </benefit>
    </promo>
    <promo id="Promo MDC II" nro="646e1019a62e43534826e48a">
      <benefit TLOGMessage="Promo MDC II" account="" applicationMethod="resume" baseAmount="700.00" benefitType="PercentageDiscount" discountPercentage="20.00" displayMessage="Promo MDC II" name="646e1019a62e43534826e48a" nro="646e104ca62e43534826e491" order="2" printerMessage="Promo MDC II" prorationMethod="PROPORTIONAL" unit="qty">
        <apply>
          <item magnitude="0.000" qty="1.000" seq="2" value="140.00" valueWithTaxes="140.00" xprice="700.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

En la venta se observa que:

  1. Para el producto SKU = 1234, se aplicó el beneficio de la promoción "Promo MDC III" porque le da un beneficio mayor (15%) que la promoción "Promo MDC" (10%),
  2. Para el producto SKU = 2345, se aplicó el beneficio de la promoción "Promo MDCII" porque le da un beneficio mayor (20%) que la promoción "Promo" MDC III" (15%).
  3. Por último al producto SKU = 973 se le aplicó la promoción "Promo MDC III" porque es la única que aplica.


10. MAXIMOS PUNTOS (MAX POINTS):

Se crean las siguientes promociones:

Promo 1Promo 2Promo 3

Y se distribuye en un mapa con una función MAXIMOS PUNTOS:

Se hace una venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-04 10:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="111"/>
<item-add seq="2" unitprice="700" xprice="700" qty="1"  code="222"/>
<item-add seq="3" unitprice="1000" xprice="1000" qty="1"  code="973"/>
</message>
Response
----- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="60" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo Puntos III" nro="646e7263a62e43534826e4e5">
      <benefit TLOGMessage="Promo Puntos III" account="" applicationMethod="resume" baseAmount="2100.00" benefitType="LoyaltyBenefit" displayMessage="Promo Puntos III" name="646e7263a62e43534826e4e5" nro="646e7286a62e43534826e4ec" order="1" printerMessage="Promo Puntos III" totalpoints="900.00" type="1" unit="qty" value="300.00">
        <apply>
          <item magnitude="0.000" points="300.00" qty="1.000" seq="1" value="0.00" valueWithTaxes="0.00" xprice="400.00"/>
          <item magnitude="0.000" points="300.00" qty="1.000" seq="2" value="0.00" valueWithTaxes="0.00" xprice="700.00"/>
          <item magnitude="0.000" points="300.00" qty="1.000" seq="3" value="0.00" valueWithTaxes="0.00" xprice="1000.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

Se observa que se otorgó la promoción "Promo Puntos III", que es la que más puntos otorga.

11. MINIMOS PUNTOS (MIN POINTS):

Las promociones usadas en el punto anterior, la vamos a distribuir en el mapa con una función Mínimos Puntos:


Se hace la venta:

Input
<message companyId="2" store="3" terminal="1" date-time="2023-06-04 16:00:00" init-tck="true" messageId="1" void-trx="false" response="true" status="sale" evaluate="true" suggest="false">
<customer-add seq="1" id="1"/>
<item-add seq="1" unitprice="400" xprice="400" qty="1"  code="111"/>
<item-add seq="2" unitprice="700" xprice="700" qty="1"  code="222"/>
<item-add seq="3" unitprice="1000" xprice="1000" qty="1"  code="973"/>
</message>
Response
---- message ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<message ack="0" companyId="2" engine="7.3.0RC3#70" mapversion="61" messageId="1" store="3" terminal="1">
  <optional>
    <promo id="Promo Puntos I" nro="646e71b3a62e43534826e4d3">
      <benefit TLOGMessage="Promo Puntos I" account="" applicationMethod="resume" baseAmount="400.00" benefitType="LoyaltyBenefit" displayMessage="Promo Puntos I" name="646e71b3a62e43534826e4d3" nro="646e71e3a62e43534826e4da" order="1" printerMessage="Promo Puntos I" totalpoints="100.00" type="1" unit="qty" value="100.00">
        <apply>
          <item magnitude="0.000" points="100.00" qty="1.000" seq="1" value="0.00" valueWithTaxes="0.00" xprice="400.00"/>
        </apply>
      </benefit>
    </promo>
  </optional>
</message>

En este caso se observa que sólo se benefició al producto SKU = 111,con la promocion "Promo Puntos I", que otorgaba la menor cantidad de puntos.





















  • Sem rótulos