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

Consultez les rubriques suivantes pour bien comprendre les définitions d'objet dans le Centre de gestion et la définition proPurchaseConditionObjectDefinition que vous devez étendre, ainsi que les tables de base de données qui stockent les données de création des promotions :

Pourquoi et quand exécuter cette tâche

Dans l'outil Promotions, chaque type de promotion a sa propre définition d'objet. Si vous créez une nouvelle condition d'achat, la définition d'objet définit une condition d'achat pour le nouveau type de promotion et doit être : une définition basée sur la définition PurchaseConditionObjectDefinition Cette définition est l'une des définitions d'élément racine qui étend l'élément racine de condition d'achat d'une promotion et inclut tous les sous-éléments de la promotion, tels que la condition d'achat et la récompense.

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

  1. 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.

  2. Ouvrez HCL Commerce Developer et basculez vers la vue Explorateur d'entreprise.
  3. 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
  4. Créez un fichier XML pour la définition d'objet d'élément de promotion :
  5. 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.
  6. 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 :
Exemple de données PX_ELEMENT
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
Exemple de données PX_ELEMENTNVP
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>
Enfin, vous définissez la définition d'objet personnalisée là où elle est utilisée :
<PrimaryObjectDefinition definitionName="proBasePromotionPrimaryObjectDefinition" 	
   isBaseDefinition="true"...>
      .
      .
      .
   <PromotionElementObjectDefinition
      baseDefinitionName="proProductLevelPWPFixedCostPurchaseConditionObjectDefinition"
      package="pro"/>
   .
   .
</PrimaryObjectDefinition>