Création des définitions d'objet pour le nouveau type de promotion
Créez de nouvelles définitions d'objet d'élément de promotion pour collecter les entrées du Centre de gestion. Lorsque des professionnels créent des promotions dans le Centre de gestion, les définitions d'objet d'élément de promotion mémorisent les données de l'élément de promotion dans deux tables : PX_ELEMENT et PX_ELEMENTNVP.
Avant de commencer
- Définition PurchaseConditionObjectDefinition déclarée dans LOBTools/WebContent/WEB-INF/src/xml/commerce/promotion/objectDefinitions/elements/PurchaseConditionObjectDefinition.xml
- Stockage et gestion des données de promotion
- Tables de création de promotion pour le Centre de gestion :
Pourquoi et quand exécuter cette tâche
Lorsqu'un utilisateur professionnel crée une promotion, les données d'entrée sont mémorisées dans les tables PX_ELEMENT et PX_ELEMENTNVP. Lorsqu'il active la promotion, ces données d'entrée sont utilisées pour générer le code de création de promotion, puis des modèles XSLT transforment ce code en code d'exécution XML de promotion.
Procédure
- Examinez la structure XML succincte que vous avez créée lors de la procédure précédente (Identification des entrées du professionnel pour le nouveau type de promotion) et identifiez chaque noeud de la structure comme désignant l'un ou l'autre des types suivants :
- Un élément : il s'agit de nœuds comportant des nœuds enfants.
- Une paire nom-valeur (NVP) : il s'agit de nœuds ne comportant pas d'éléments enfants et utilisés pour décrire une valeur.
Reportez-vous à la section de l'exemple après la dernière étape de cette procédure.
A présent que vous avez identifié les éléments et les paires nom-valeur, vous pouvez construire la définition d'objet en vue de collecter des informations depuis l'interface utilisateur du Centre de gestion et de mémoriser les données dans les tables PX_ELEMENT et PX_ELEMENTNVP.
- Ouvrez HCL Commerce Developer et basculez vers la vue Explorateur d'entreprise.
-
Créez un répertoire pour héberger votre nouvelle définition d'objet d'élément de promotion.
Vous pouvez stocker le fichier dans une structure de répertoire similaire à l'exemple suivant : LOBTools/WebContent/WEB-INF/src/xml/your_company_name/promotion/objectDefinitions/elements/PurchaseConditionObjectDefinition.xml
- Créez un fichier XML pour la définition d'objet d'élément de promotion :
- Créez la définition d'objet de l'élément de campagne.Reportez-vous à l'exemple de définition d'objet d'élément de promotion après la dernière étape de cette procédure.
- Créez la définition d'objet de l'élément de promotion là où elle est utilisée.
Exemple
Dans le cas de votre type de promotion personnalisé, Les clients acquérant deux chaises de table (FULO-01) se qualifient pour l'achat d'une table haute (FULO-02) au prix promotionnel de $200, vous devez créer une définition d'objet de condition d'achat nommée : ProductLevelPWPFixedCostPurchaseCondition.
Examinez d'abord la structure XML succincte que vous avez créée auparavant et identifiez chaque noeud de la structure comme désignant soit un élément, soit une paire nom-valeur, comme illustré ici :

Pour ce type de promotion personnalisé, vous réutiliserez l'identificateur IncludedCatalogEntryIdentifier prédéfini pour collecter l'ID d'entrée de catalogue.
Lorsqu'un professionnel active une promotion créée avec votre type de promotion personnalisé, le code XML de création de promotion est généré à partir des tables PX_ELEMENT et PX_ELEMENTNVP. Ce code est similaire à l'exemple suivant :
<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>
Les tables PX_ELEMENT et PX_ELEMENTNVP sont similaires aux exemples suivants : | 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 |
Certains types d'élément prédéfinis par défaut, tels que IncludeCatalogEntryIdentifier, requièrent un processus supplémentaire dans la commande Java pour générer le code XML correspondant, lequel contient un index à entrées uniques telles que des SKU et des noms distinctifs. Dans cet exemple, le nouveau type de promotion utilise le type d'élément prédéfini IncludedCatalogEntryIdentifier.
Vous devez ensuite créer la nouvelle définition d'objet ProductLevelPWPFixedCostPurchaseCondition. Elle sera similaire à l'exemple ci-dessous. Dans cet exemple, vous pouvez observer que les définitions d'objet d'élément de promotion existantes proPWPPurchaseItemObjectDefinition et proPWPRewardItemObjectDefinition sont réutilisées.
<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>