Personalización de la organización de las promociones

Si los grupos de promociones predeterminados (a nivel de pedido, a nivel de producto y envío) no satisfacen sus necesidades empresariales, puede personalizar la organización de las promociones. En concreto, puede crear grupos personalizados que son diferentes de los grupos predeterminados, de modo que las promociones del nuevo grupo se rijan por políticas diferentes. Esta personalización debería tener lugar durante la configuración de la tienda. Este proceso incluye la incorporación de los grupos de promociones nuevos en una plantilla de invocación y asociar políticas a estos nuevos grupos.

Antes de empezar

Este escenario presupone que no existe ninguna personalización en la gestión de persistencia de grupos de promociones, promociones o políticas.

Antes de personalizar la organización de la promoción, debe determinar si el grupo de promociones personalizado está disponible para todas las tiendas, o sólo un subconjunto. También debe determinar el nombre del grupo, las políticas que están asociadas a este grupo y cómo incluir este grupo en la evaluación de promociones existente. Los pasos siguientes sólo detallan cómo añadir más grupos, asociarles políticas y utilizarlos en tiempo de ejecución.

Procedimiento

  1. Crear las políticas que se asignan a este grupo. Para crear estas políticas, debe insertar una o más entradas en la tabla PX_POLICY. Para ayudar a crear sus políticas, considere la posibilidad de utilizar una política predeterminada como base para el modelo de la nueva política. Para buscar las políticas predeterminadas que se asignan a la tienda, abra una conexión de base de datos y ejecute la consulta siguiente:
    SELECT * FROM PX_POLICY WHERE STOREENT_ID=storeId;
    
    En los resultados de esta consulta, la columna IMPLCLS define el nombre de la clase que implementa una política. La columna XMLPARAM contiene la definición XML de una política. El contenido real de este fragmento XML depende del modelo XML para la implementación de la política. Una definición XML de ejemplo para una política de promoción se parece al código siguiente:
    <PromotionPolicy impl="com.ibm.commerce.marketing.promotion.policy.RedemptionLimitEnforcementPolicy">
          <PromotionPolicyKey>
                <PolicyName>Unique Name for the policy</PolicyName>
                <StoreKey>
                      <DN>o=root organization</DN>
                      <Identifier>BlueStore 202</Identifier>
                </StoreKey>
          </PromotionPolicyKey>
          <Status>Active</Status>
    </PromotionPolicy>
    

    Puede utilizar una definición XML que se devuelva de la consulta para ayudar a modelar la nueva política. Para obtener más información sobre políticas de promoción personalizadas, consulte Personalización de políticas de promoción.

  2. Cree el grupo de promociones insertando una entrada para el grupo en la tabla PX_GROUP. Para ayudar a crear la entrada para el grupo, puede utilizar una entrada de grupo existente como modelo para crear el grupo. Para buscar los grupos predeterminados que se asignan a la tienda, abra una conexión de base de datos y ejecute la consulta siguiente:
    SELECT * FROM PX_GROUP WHERE STOREENT_ID=storeId;
    En los resultados que se devuelven de la consulta, la columna XMLPARAM contiene la definición XML de los grupos de promociones. Una definición XML de ejemplo para un grupo de promocionesse parece al código siguiente:
    
    <PromotionGroup impl="com.ibm.commerce.marketing.promotion.group.PromotionGroup">
       <!-- Key is made up of a reference to the store that owns this group, and a string name -->
       <PromotionGroupKey>
          <GroupName>OrderLevelPromotion</GroupName>
          <StoreKey>
             <DN>o=root organization</DN>
             <Identifier>BlueStore 202</Identifier>
          </StoreKey>
       </PromotionGroupKey>
       <!-status is active -->
       <Status>active</Status>
    
       <!-- Associated policies -->
    
       <AssociatedPromotionPolicies>
          <PromotionPolicyKey>
             <PolicyName>New Policy One</PolicyName>
                <StoreKey>
                   <DN>o=root organization</DN>
                   <Identifier>BlueStore 202</Identifier>
                </StoreKey>
          </PromotionPolicyKey>
          <PromotionPolicyKey>
             <PolicyName>New Policy Two</PolicyName>
             <StoreKey>
                <DN>o=root organization</DN>
                <Identifier>BlueStore 202</Identifier>
             </StoreKey>
          </PromotionPolicyKey>
       </AssociatedPromotionPolicies>
    </PromotionGroup>
    
  3. Asigne una política a cada grupo de promociones que vaya a crear. Para asignar una política a un grupo, debe insertar una entrada en la tabla de base de datos de PX_GRPPOLICY. Esta entrada asocia el PX_GROUP_ID del grupo de promociones con una política específica, PX_POLICY_ID.
  4. Añada el grupo a una plantilla de invocación actualizando el XML de configuración del motor de promociones. Para añadir un grupo a una plantilla de invocación, puede editar una plantilla existente o duplicar una plantilla y modificarla para que cumpla con los requisitos. Si desea que el grupo de promociones nuevo se comparta entre todas las tiendas, puede añadir una entrada para el grupo a la plantilla existente "Todas las promociones". Si el grupo es específico de una tienda, debe duplicar una plantilla y modificar la plantilla específica de la tienda.
    1. Vaya al directorio workspace_dir/WC/xml/PromotionEngineConfiguration.
    2. Abra el archivo WCSPromotionEngineConfig.xml para editarlo.
    3. Localice el fragmento de código siguiente. Este fragmento de código es el fragmento XML que define la plantilla "Todas las promociones".
      
      <Template>
         <TemplateKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <Name>All Promotions</Name>
         </TemplateKey>
         <MonetaryValuePresence>
            <Price>true</Price>
            <ShippingCharge>false</ShippingCharge>
            <Tax>false</Tax>
            <ShippingTax>false</ShippingTax>
         </MonetaryValuePresence>
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>ProductLevelPromotion</GroupName>
         </PromotionGroupKey>
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>OrderLevelPromotion</GroupName>
         </PromotionGroupKey>
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>ShippingPromotion</GroupName>
         </PromotionGroupKey>
      </Template>
      
    4. Añada el grupo a esta plantilla o duplique y modifique la plantilla para especificar un grupo específico de la tienda. Inserte la entrada para el grupo que se basa en el pedido en el que desea que se evalúen las promociones.
      Por ejemplo, si desea que las promociones del nuevo grupo se evalúan después de las promociones del grupo "ProductLevelPromotion", la plantilla puede parecerse al fragmento de código siguiente:
      
      <Template>
         <TemplateKey
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <Name>All Promotions</Name>
         </TemplateKey>
         <MonetaryValuePresence>
            <Price>true</Price>
            <ShippingCharge>false</ShippingCharge>
            <Tax>false</Tax>
            <ShippingTax>false</ShippingTax>
         </MonetaryValuePresence>
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>ProductLevelPromotion</GroupName>
         </PromotionGroupKey>
            
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>My New Group</GroupName>
         </PromotionGroupKey>
            
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>OrderLevelPromotion</GroupName>
         </PromotionGroupKey>
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>ShippingPromotion</GroupName>
         </PromotionGroupKey>
      </Template>
      
  5. Reinicie HCL Commerce. Puesto que tanto los grupos de promociones como las políticas y las plantillas son información de configuración, y se almacenan en la memoria caché, debe reiniciar HCL Commerce para que los cambios entren en vigor.