Crear las definiciones de objeto para el nuevo tipo de promoción

Defina nuevas definiciones de objeto de elemento de promoción para recopilar entrada del Centro de gestión. Cuando los usuarios de empresa crean nuevas promociones en el Centro de gestión, las definiciones de objeto de elemento de promoción mantienen datos de elementos de promoción en dos tablas: PX_ELEMENT y PX_ELEMENTNVP.

Antes de empezar

Revise los temas siguientes para asegurarse de que conoce las definiciones de objeto del Centro de gestión y la definición proPurchaseConditionObjectDefinition que debe ampliar, además de las tablas de base de datos que almacenan datos de autoría de promoción:

Por qué y cuándo se efectúa esta tarea

En la herramienta Promociones, cada tipo de promoción tiene su propia definición de objeto. Si va a crear una nueva condición de compra, la definición de objeto define una condición de compra para el nuevo tipo de promoción y debería ser una clase de extensión de la clase PurchaseConditionObjectDefinition. Esta definición es una de las definiciones de elemento raíz que amplían el elemento raíz de condición de compra de promoción e incluye todos los subelementos de la promoción, como la condición de compra y la bonificación.

Cuando un usuario de empresa crea una promoción, los datos de entrada sobre la promoción se conservan en las tablas PX_ELEMENT y PX_ELEMENTNVP. Cuando el usuario de empresa activa la promoción, los datos de entrada se utilizan para formar el XML de promoción de creación; las plantillas XSLT transforman entonces el XML de promoción de creación en el XML de promoción de tiempo de ejecución.

Procedimiento

  1. Examine la estructura XML abreviada que ha creado en el procedimiento anterior (Identificar la entrada de usuario de empresa para el nuevo tipo de promoción) e identifique cada nodo de la estructura como:
    • Un elemento: Son nodos que tienen nodos hijo.
    • Un par nombre-valor (NVP): Son nodos que no tienen elementos hijo y se utilizan para describir un valor.

    Consulte la sección de ejemplos que figura a continuación del último paso de este procedimiento.

    Ahora que ha identificado los elementos y pares nombre-valor, puede crear la definición de objeto para recopilar información de la interfaz de usuario del Centro de gestión y mantener los datos en las tablas PX_ELEMENT y PX_ELEMENTNVP.

  2. Abra HCL Commerce Developer y cambie a la vista Explorador de empresa.
  3. Cree un directorio para almacenar su nueva definición de objeto de elemento de promoción.
    Puede almacenar el archivo en una estructura de directorios parecida a la del ejemplo siguiente: LOBTools/WebContent/WEB-INF/src/xml/your_company_name/promotion/objectDefinitions/elements/PurchaseConditionObjectDefinition.xml
  4. Cree un archivo XML nuevo para la definición del objeto de elemento de promoción:
  5. Defina la definición de objeto de elemento de promoción.
    Consulte el ejemplo de definición de objeto de elemento de promoción que hay después del último paso de este procedimiento.
  6. Defina la definición de objeto de elemento de promoción siempre que se utilice.

Ejemplo

Para su tipo de promoción personalizado, Los clientes que compren dos sillas de comedor (FULO-01) cumplen los requisitos para comprar una mesa de comedor (FULO-02) al precio rebajado de 200 dólares, debe crear una definición de objeto de condición de compra con el nombre siguiente: ProductLevelPWPFixedCostPurchaseCondition.

En primer lugar, examine la estructura XML abreviada que ha creado anteriormente e identifique cada nodo de la estructura como un elemento o un par nombre-valor (NVP), como se muestra a continuación:

Para este tipo de promoción personalizado, reutilice el elemento IncludedCatalogEntryIdentifier predefinido para recopilar el ID de entrada de catálogo.

Cuando un usuario de empresa active una promoción creada con su tipo de promoción personalizado, el XML de promoción de creación se creará a partir de las tablas PX_ELEMENT y PX_ELEMENTNVP. El XML de promoción de autoría es parecido al ejemplo siguiente:

<PurchaseCondition> 	
   <Data>
      <Currency>USD<Currency>
  	   <FixedCost>200</FixedCost> 
   </Data>
   <Purchase> 		
      <Data>
         <Quantity>2</Quantity> 		
      </Data>
      <IncludeCatalogEntryIdentifier> 	
         <Data>
            <Id>10251</Id>
            <SKU>FULO-01</SKU>
            <DN>ou=b2c,o=seller organization,o=root organization</DN> 
         </Data>
      </IncludeCatalogEntryIdentifier>
   </Purchase> 
   <Reward> 		
      <Data>
         <Quantity>1</Quantity>
      </Data>		
      <IncludeCatalogEntryIdentifier>
         <Data>
            <Id>10253<Id>
            <SKU>FULO-02</SKU>
            <DN>ou=b2c,o=seller organization,o=root organization</DN> 
         </Data>
      </IncludeCatalogEntryIdentifier> 	
   </Reward> 	
</PurchaseCondition>
Las tablas PX_ELEMENT y PX_ELEMENTNVP correspondientes se parecen a los siguientes ejemplos:
Datos PX_ELEMENT de ejemplo
PX_ELEMENT_ID PX_PROMOTION_ID NAME TYPE SUBTYPE PARENT SEQUENCE OPTCOUNTER
65 10002701 '65' 'PurchaseCondition' 'ProductLevelPWPFixedCostPurchaseCondition' NULL 0.0 0
66 10002701 '66' 'Reward' 'Reward' '65' 0.0 0
67 10002701 '67' 'IncludeCatalogEntryIdentifier' 'Identifier_CatalogEntry' '66' 0.0 0
68 10002701 '68' 'Purchase' 'Purchase' '65' 0.0 0
69 10002701 '69' 'IncludeCatalogEntryIdentifier' 'Identifier_CatalogEntry' '68' 0.0 0
Datos PX_ELEMENTNVP de ejemplo
PX_ELEMENTNVP_ID PX_ELEMENT_ID NAME VALUE OPTCOUNTER
65 65 'Currency' 'USD' 0
66 65 'FixedCost' '200' 0
68 66 'Quantity' '1' 0
69 67 'Id' '10253' 0
70 68 'Quantity' '2' 0
71 69 'Id' '10251' 0

Existen algunos tipos de elementos predefinidos predeterminados, como IncludeCatalogEntryIdentifier, que requieren un proceso adicional en el mandato Java para generar el fragmento XML correspondiente, que contiene un índice exclusivo, como el código de artículo y el nombre distinguido (DN). Este nuevo tipo de promoción de este ejemplo utiliza el tipo de elemento IncludedCatalogEntryIdentifier predefinido.

A continuación, cree la nueva definición de objeto ProductLevelPWPFixedCostPurchaseCondition. Es parecida al ejemplo siguiente. En este ejemplo, puede ver que se reutilizan las definiciones de objeto de elemento de promoción existentes proPWPPurchaseItemObjectDefinition y proPWPRewardItemObjectDefinition.

<PromotionElementObjectDefinition
   package="pro"
   definitionName="proProductLevelPWPFixedCostPurchaseConditionObjectDefinition"
   baseDefinitionName="proPurchaseConditionObjectDefinition"
   objectType="ProductLevelPWPFixedCostPurchaseCondition">
   <PromotionElementObjectDefinition
      package="pro"
      baseDefinitionName="proPWPPurchaseItemObjectDefinition">
      <Xml name="template">
         <elementType>Purchase</elementType>
      </Xml>
   </PromotionElementObjectDefinition>
   <PromotionElementObjectDefinition
      package="pro"
      baseDefinitionName="proPWPRewardItemObjectDefinition">
      <Xml name="template">
         <elementType>Reward</elementType>
      </Xml>
   </PromotionElementObjectDefinition>
   <PropertyDefinition propertyName="FixedCost" required="true" minValue="0" 
         displayName="Fixed cost (no translation)" />
</PromotionElementObjectDefinition>
Finalmente, defina la definición de objeto personalizado donde se utilice:
<PrimaryObjectDefinition definitionName="proBasePromotionPrimaryObjectDefinition" 	
   isBaseDefinition="true"...>
      .
      .
      .
   <PromotionElementObjectDefinition
      baseDefinitionName="proProductLevelPWPFixedCostPurchaseConditionObjectDefinition"
      package="pro"/>
   .
   .
</PrimaryObjectDefinition>