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
- Definición de PurchaseConditionObjectDefinition declarada enLOBTools/WebContent/WEB-INF/src/xml/commerce/promotion/objectDefinitions/elements/PurchaseConditionObjectDefinition.xml
- Cómo se almacenan y gestionan los datos de promoción
- Tablas de autoría de promociones para el Centro de gestión:
Por qué y cuándo se efectúa esta tarea
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
- 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.
- Abra HCL Commerce Developer y cambie a la vista Explorador de empresa.
-
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
- Cree un archivo XML nuevo para la definición del objeto de elemento de promoción:
- 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.
- 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: 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 |
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>
<PrimaryObjectDefinition definitionName="proBasePromotionPrimaryObjectDefinition"
isBaseDefinition="true"...>
.
.
.
<PromotionElementObjectDefinition
baseDefinitionName="proProductLevelPWPFixedCostPurchaseConditionObjectDefinition"
package="pro"/>
.
.
</PrimaryObjectDefinition>