Definición de XML de condición de compra

La condición de compra define qué debe tener un cliente en su carro de la compra antes de reunir las condiciones para una promoción. Si el pedido reúne los requisitos, la condición de compra define la bonificación aplicable. El XML de condición de compra forma parte del XML de promoción de ejecución, que el motor de promoción utiliza para evaluar las promociones durante el flujo de compra.

Elementos de alto nivel

La condición de compra define los siguientes elementos de una promoción:
  1. El patrón con el que deben coincidir las entradas de catálogo del carro de la compra antes de que se aplique la promoción al pedido.
  2. La bonificación que el cliente recibe cuando se satisface el patrón necesario.

Elemento PurchaseCondition

El elemento PurchaseCondition es uno de los elementos principales del XML de promoción de tiempo de ejecución y define la condición de compra. Sin embargo, al crear una condición de compra personalizada, está realmente interesado en crear o personalizar los elementos contenidos en el elemento PurchaseCondition, en lugar del propio elemento.

Este elemento tiene un parámetro impl que en casi cada caso se debe establecer en el valor predeterminado, que hace referencia a la clase com.ibm.commerce.marketing.promotion.condition.PurchaseCondition.

El elemento PurchaseCondition contiene un elemento Pattern y un elemento Distribution.

Elemento Pattern

El elemento Pattern es uno de los dos elementos principales contenidos en el elemento de condición de compra. El elemento Pattern contiene los elementos que definen qué debe tener un cliente en el carro de la compra para tener derecho a la promoción. Este elemento no es muy interesante y sirve para diferenciar los elementos de los elementos de bonificación.

Este elemento tiene un parámetro impl que prácticamente en cada caso se debe establecer en el valor predeterminado, que hace referencia a la clase com.ibm.commerce.marketing.promotion.condition.Pattern.

Un elemento Pattern contiene uno o más elementos Constraint.

Elemento Constraint

El elemento Constraint es el único elemento contenido en el elemento Pattern, aunque puede que existan varios elementos Constraint. El elemento Constraint contiene elementos que especifican una lista de elementos que forman una parte del patrón. No deben existir secciones cruzadas entre restricciones. De nuevo, este elemento no es muy interesante por sí mismo.

Este elemento tiene un parámetro impl que casi en cada caso se debe establecer en el valor predeterminado, que hace referencia a la clase com.ibm.commerce.marketing.promotion.condition.Constraint.

Un elemento Cosntraint contiene un elemento WeightedRange y un elemento FilterChain.

Elemento WeightedRange

El elemento WeigthedRande define el requisito de cantidad de la restricción.

Este elemento tiene un parámetro impl que en prácticamente cada caso se debe establecer en el valor predeterminado, que hace referencia a la clase com.ibm.commerce.marketing.promotion.condition.WeightedRange.

Un elemento Constraint contiene XML similar al ejemplo siguiente que define el rango. Este ejemplo ilustra un rango de 1 a infinito.
<LowerBound>1</LowerBound>
<UpperBound>-1</UpperBound>
<Weight>1</Weight>
Los elementos LowerBound y UpperBound pueden contener cualquier número positivo o -1. -1 significa que el valor no tiene límites. Por ejemplo, si se establece el límite superior en -1, el rango se extiende desde el límite inferior hasta el infinito.

Elemento FilterChain

El elemento FilterChain contiene uno o varios filtros que se aplican para la restricción.

Este elemento tiene un parámetro impl que en casi cada caso se debe establecer en el valor predeterminado, que hace referencia a la clase com.ibm.commerce.marketing.promotion.condition.FilterChain.

Un elemento FilterChain contiene uno o varios elementos XML de definición de filtro que definen los filtros aplicables. El filtro genérico visualizado aquí como ejemplo devuelve todo lo que se pasa.
<Filter impl="com.ibm.commerce.marketing.promotion.condition.DummyFilter"/>
Al establecer el parámetro impl, se especifica el filtro aplicable. En el tema Ejemplo: Fragmentos XML de filtros se puede encontrar la lista de filtros predeterminados válidos, así como cualquier XML de configuración adicional que necesiten.

Elemento Distribution

El elemento Distribution es uno de los dos elementos principales contenidos en el elemento de condición de compra. El elemento Distribution contiene los elementos que definen la bonificación que un cliente recibe si tiene derecho a la promoción. Este elemento no es muy interesante y sirve para diferenciar los elementos de los elementos de patrón.

Este elemento tiene un parámetro impl que prácticamente en cada caso se debe establecer en el valor predeterminado, que hace referencia a la clase com.ibm.commerce.marketing.promotion.reward.Distribution.

Un elemento de distribución (Distribution) contiene el siguiente XML que define el método de distribución:
<Type>Volume</Type>
<Base>Cost</Base>
<Currency>CAD</Currency>
El elemento de tipo (Type) determina el tipo de la distribución. Los valores válidos son Volume y Tiered. El elemento Base determina si la distribución se basa en la cantidad o en el coste. Los valores válidos son Quantity y Cost. El elemento Currency define la moneda en la que se evalúan las distribuciones basadas en el coste. Los valores válidos incluyen los códigos ISO para cualquier moneda soportada en la tienda, pero normalmente deberán ser la moneda predeterminada de la tienda. El elemento Currency no es significativo para distribuciones basadas en la cantidad.

Un elemento Distribution también contiene un elemento PatternFilter y uno o más elementos Range.

Elemento PatternFilter

El elemento PatternFilter determina el patrón de la bonificación.

Este elemento tiene un parámetro impl que en casi cada caso se debe establecer en el valor predeterminado, que hace referencia a la clase com.ibm.commerce.marketing.promotion.condition.DummyFilter.

No todos los patrones coincidentes tienen bonificación, por ejemplo se deberá eliminar una combinación de camisas y pantalones con un precio superior a 120 dólares si se fija el precio de una combinación de camisas y pantalones en 100 dólares.

Elemento Range

El elemento Range define el rango al que se aplica el ajuste subsiguiente. El elemento de rango necesita XML similar al del ejemplo siguiente. Similar al elemento WeightedRange, define el rango aplicable utilizando un límite superior e inferior.
<UpperBound>200</UpperBound>
<LowerBound>100</LowerBound>

Este elemento tiene un parámetro impl que en prácticamente cada caso se debe establecer en el valor predeterminado, que hace referencia a la clase com.ibm.commerce.marketing.promotion.reward.DistributionRange.

El elemento Range contiene un elemento Reward.

Elemento Reward

Este elemento tiene un parámetro impl que en prácticamente cada caso se debe establecer en el valor predeterminado, que hace referencia a la clase com.ibm.commerce.marketing.promotion.reward.DefaultReward.

El elemento Reward contiene un elemento AdjustmentFunction.

Elemento AdjustmentFunction

Este elemento tiene un parámetro impl que en casi cada caso se debe establecer en el valor predeterminado, que hace referencia a la clase com.ibm.commerce.marketing.promotion.reward.AdjustmentFunction.

AdjustmentFunction contiene un elemento FilterChain y un elemento Adjustment.

Elemento Adjustment

El elemento Adjustment define el ajuste en el pedido del cliente. Puede ser un ajuste de precio en una entrada de catálogo, un ajuste en el precio del pedido, un regalo gratis o bien otro ajuste de este tipo.

Este elemento tiene un parámetro impl que corresponde al ajuste que se está aplicando al pedido. La lista de ajustes predeterminados válidos, así como cualquier XML de configuración adicional que necesiten, se pueden encontrar en el . Ejemplo: tema Fragmentos XML de ajuste.

<PurchaseCondition impl="com.ibm.commerce.marketing.promotion.condition.PurchaseCondition">
   <Pattern impl="com.ibm.commerce.marketing.promotion.condition.Pattern">
      <Constraint impl="com.ibm.commerce.marketing.promotion.condition.Constraint">
         <WeightedRange impl="com.ibm.commerce.marketing.promotion.condition.WeightedRange">
            <LowerBound>1</LowerBound>
            <UpperBound>-1</UpperBound>
            <Weight>1</Weight>
         </WeightedRange>
         <FilterChain impl="com.ibm.commerce.marketing.promotion.condition.FilterChain">
            <Filter impl="com.ibm.commerce.marketing.promotion.condition.DummyFilter"/>
         </FilterChain>
      </Constraint>
   </Pattern>
   <Distribution impl="com.ibm.commerce.marketing.promotion.reward.Distribution">
      <Type>Volume</Type>
      <Base>Cost</Base>
      <Currency>CAD</Currency>
      <PatternFilter impl="com.ibm.commerce.marketing.promotion.condition.DummyPatternFilter" />
      <Range impl="com.ibm.commerce.marketing.promotion.reward.DistributionRange">
         <UpperBound>200</UpperBound>
         <LowerBound>100</LowerBound>
         <Reward impl="com.ibm.commerce.marketing.promotion.reward.DefaultReward">
            <AdjustmentFunction impl="com.ibm.commerce.marketing.promotion.reward.AdjustmentFunction">
               <FilterChain impl="com.ibm.commerce.marketing.promotion.condition.FilterChain">
                  <Filter impl="com.ibm.commerce.marketing.promotion.condition.DummyFilter" />
               </FilterChain>
               <Adjustment impl="com.ibm.commerce.marketing.promotion.reward.FixedAmountOffAdjustment">
                  <AmountOff>15</AmountOff>
                  <Currency>CAD</Currency>
                  <AdjustmentType>wholeOrder</AdjustmentType>
               </Adjustment>
            </AdjustmentFunction>
         </Reward>
      </Range>
      <Range impl="com.ibm.commerce.marketing.promotion.reward.DistributionRange">
         <UpperBound>-1</UpperBound>
         <LowerBound>200</LowerBound>
         <LowerBoundIncluded>false</LowerBoundIncluded>
         <Reward impl="com.ibm.commerce.marketing.promotion.reward.DefaultReward">
            <AdjustmentFunction impl="com.ibm.commerce.marketing.promotion.reward.AdjustmentFunction">
               <FilterChain impl="com.ibm.commerce.marketing.promotion.condition.FilterChain">
                  <Filter impl="com.ibm.commerce.marketing.promotion.condition.DummyFilter"/>
               </FilterChain>
               <Adjustment impl="com.ibm.commerce.marketing.promotion.reward.FixedAmountOffAdjustment">
                  <AmountOff>45</AmountOff>
                  <Currency>CAD</Currency>
                  <AdjustmentType>wholeOrder</AdjustmentType>
               </Adjustment>
            </AdjustmentFunction>
         </Reward>
      </Range>
   </Distribution>
</PurchaseCondition>