Indexation des prix des contrats dans HCL Commerce Search

Vous pouvez indexer les prix dans HCL Commerce Search. Par exemple, vous pouvez générer l'index de prix HCL Commerce Search en émettant l'appel RESTful Calculer le prix, puis en indexant les prix des contrats.

Prix dans HCL Commerce Search

Les prix qui sont renvoyés par HCL Commerce Search sont indexés ou calculés :
  • Les prix de l'offre, ou prix des contrats par défaut, sont indexés directement à partir du contrat par défaut du magasin propriétaire.
  • Les prix de liste sont indexés directement à partir des tables de base de données LISTPRICE ou OFFER, en fonction de la source des prix.
  • Les prix des contrats sont calculés en fonction du contrat choisi. Ils sont ensuite indexés dans HCL Commerce Search, soit dans l'index d'entrée de catalogue ou dans l'index d'extension des prix, selon le nombre de contrats que votre site contient, soit dans la source des données de prix.

Les prix indexés sont renseignés rapidement, mais pas évalués dynamiquement. Pour garantir que la vitrine affiche des prix précis, vous pouvez modifier le mode de tarification en fonction des besoins de votre entreprise.

Lorsque vous utilisez des prix et des devises dans HCL Commerce Search, une colonne d'index distincte est utilisée par défaut pour gérer plusieurs devises.

Indexation des prix

Vous pouvez indexer les données sur les prix dans les endroits suivants, en fonction du nombre de contrats que votre site contient ou de la source des données sur les prix :
  • Dans l'index Entrée de catalogue, lorsque votre site contient moins de 1 000 contrats et que les données sur les prix sont contenues dans HCL Commerce. Vous pouvez calculer et indexer les prix à l'aide de l'appel RESTful Index de génération. Pour plus d'informations, consultez la rubrique Génération de l'index HCL Commerce Search

    L'appel RESTful Calculer le prix met à jour les informations de l'index de prix à la demande en fonction du modèle de tarification utilisé par votre magasin. Pour plus d'informations, voir Générer de prix des contrats tel qu'il est intégré dans l'index CatalogEntry.

    L'instruction de travail ContractPriceCalculate est utilisée pour calculer les prix selon une planification pour toutes les entrées de catalogue qui appartiennent à un catalogue principal. Le prix d'entrée du catalogue est calculé en fonction de tous les contrats qui appartiennent au magasin. Pour plus d'informations, voir Création et planification du travail ContractPriceCalculate.

  • Dans l'index d'extension de prix, lorsque votre site contient plus de 1 000 contrats, ou si vous utilisez une source externe pour renseigner les prix. Les prix sont indexés à l'aide du chargement d'index, car il peut remplir une grande quantité de données dans un index d'extension distinct plus rapidement que l'index des entrées de catalogue ne peut indexer les données de prix. Pour plus d'informations, voir Chargement d'index.
  • Lors de l'indexation des prix des contrats, assurez-vous que la valeur de wc.search.priceMode.compatiblePriceIndex est définie sur 1.0 dans le tableau STORECONF :
    
    insert into storeconf(storeent_id,name,value) values('storeent_id', 'wc.search.priceMode.compatiblePriceIndex', '1.0');
    

Calcul des prix

Les prix peuvent être calculés soit intégralement, soit pour une entrée de catalogue, un contrat ou une devise spécifique. Lorsque des recalculs complets des prix sont utilisés, toutes les données de prix antérieures sont supprimées de l'index avant que les prix des contrats B2B ne soient recalculés.

Pour aider à décider quand et où calculer les prix, considérez les options suivantes :
Serveur ou environnement dédié
Attribuez un serveur ou une instance dédiée pour calculer les prix.
appel de service d'indexation pour calculer et générer l'index après que le flux de prix est disponible sur la base de données HCL Commerce sur un nœud actif.
Dans cette configuration, le calcul des prix n'a aucun impact sur les performances du nœud HCL Commerce.
Environnement de production au niveau du répéteur
Vous pouvez calculer et générer l'index de prix au niveau d'un répéteur. Ensuite, les prix et autres données de l'entrée de catalogue et de l'index du groupe de catalogues sont reproduits pour les subordonnés de la recherche.
Dans cette configuration, le calcul des prix n'a pas d'impact sur les performances du nœud actif.
Environnement de création sur un maître
Calculez les prix sur un nœud HCL Commerce sur un auteur/maître.
Générez le prix avec d'autres données d'index sur le nœud de transaction sur l'auteur/le maître, puis appelez l'API RESTful indexprop pour reproduire l'index au niveau du répéteur. Pour plus d'informations sur l'utilisation de cet appel, voir Propagation de l'index de recherche.
Dans cette configuration, aucun changement de topologie supplémentaire n'est requis. Cette fonction reste compatible avec les versions antérieures du pack de fonctions de HCL Commerce.

Logique des recalculs des prix complets

  • Le recalcul des prix utilise les contrats de magasin actuels et futurs qui partagent le catalogue principal.
  • Seules les devises prises en charge pour tous les magasins actifs identifiés dans le catalogue principal sont respectées, tandis que les autres sont ignorées et ne sont pas indexées. Cette restriction existe parce que les prix sont recalculés au nom de l'administrateur de site, et ne peut donc pas calculer les prix au niveau du segment de clientèle.
  • Par défaut, les calculs de prix sont basés soit sur une unité de mesure (kilos, caisses, lots) qui a une quantité numérique de base de 1, soit sur une unité de C62. C62 est utilisé pour signifier les éléments qui ne sont pas comptés selon une unité de mesure distincte. Par exemple, les chemises ne sont généralement pas mesurées en kilos, mais en quantité. Leur unité de mesure peut être définie sur C62. L'une des limites de cette approche est que toute tarification par étape, c'est-à-dire basée sur la quantité, est ignorée.
    Conseil : Vous pouvez contourner cette limitation en définissant explicitement C62 comme ayant une valeur de 1, puis en définissant une unité basée sur C62 qui peut être multipliée. Par exemple, la requête SQL suivante crée une nouvelle unité, CS, basée sur C62, qui peut être multipliée pour permettre une tarification par étape ou par quantité.
    INSERT INTO QTYCONVERT VALUE('CS',1,'C62',1,'M','N',0);

Logique des recalculs

  • Les ID de contrat ne sont pas validés lorsqu'ils sont transmis en tant que paramètre distinct. Ainsi, les contrats futurs affichent les prix corrects lorsque vous prévisualisez une date future dans l'aperçu d'un magasin.
  • Tous les contrats expirés et suspendus peuvent être retirés en toute sécurité de la table temporaire TI_CNTRPRICE pour l'entrée de catalogue ou le contrat spécifié dans les paramètres de l'utilitaire. Autrement dit, la liste de purge est limitée uniquement à l'entrée ou au contrat de catalogue spécifié. Par exemple, si vous spécifiez un contrat expiré, toutes les entrées de catalogue couvertes par ce contrat sont purgées. Toutefois, si vous spécifiez une entrée de catalogue, tous les contrats expirés sont purgés uniquement pour l'entrée de catalogue spécifiée.
  • Si un contrat est suspendu et inactif, le prix des contrats est supprimé. Si un utilisateur professionnel reprend le contrat et qu'il redevient actif, le prix n'est pas indiqué dans la vitrine tant qu'il n'est pas calculé à nouveau pour le contrat repris.
  • Lorsqu'un produit, un contrat ou une devise non valide est transmis, la logique l'ignore et n'indexe donc pas les valeurs non valides.
  • Si un contrat transmis est expiré ou suspendu, il est supprimé et purgé du résultat de calcul. Dans le cas contraire, si un contrat qui sera actif à une date ultérieure est transmis, il est indexé. C'est-à-dire, même s'il n'est pas actuellement actif au moment du recalcul des prix.
  • Les paramètres storeId et de devise ne peuvent pas être spécifiés avec d'autres paramètres.

Logique de personnalisation

Les prix des contrats actifs et futurs sont intégrés dans l'index d'entrée de catalogue à l'aide de définitions de zones qui commencent par price_, suivies d'une combinaison de contrat et de devise. Par exemple, price_USD_10001 ou price_CNY_10002. En revanche, pour les versions sans prix des contrats indexés, l'index d'entrée de catalogue utilise des définitions de zone qui commencent par price_, suivies uniquement par sa devise.

L'appel ResTful Calculer le prix résout tous les contrats déployés pour les magasins qui partagent le catalogue principal spécifié. Ensuite, il initialise la commande API de prix pour calculer les prix pour toutes les entrées de catalogue qui appartiennent au catalogue principal spécifié. Lorsque les données de prix sont intégrées dans l'index CatalogEntry maître, le résultat de prix calculé est enregistré dans la table temporaire TI_CNTRPRICE_#INDEX_SCOPE#. Alors que lorsque les données de prix sont situées dans le sous-noyau étendu, les résultats de prix calculés sont enregistrés dans la table TI_EXT_CNTRPRICE_#INDEX_SCOPE#. Tous les résultats calculés pour une entrée de catalogue sont regroupés dans une seule colonne :

TI_CNTRPRICE_#INDEX_SCOPE

Nom Type Description
CATENTRY_ID BIGINT NOT NULL ID de l'entrée de catalogue. Cette colonne contient toutes les entrées de catalogue pour le catalogue principal spécifié.
PRIX.TITRE Objet CLOB Paires de valeurs multiples pour différents contrats et valeurs de devises séparés par un espace blanc.
Le paramètre NameValuePairTransformer est le transformateur par défaut qui transforme la colonne de valeur multiple large en zone de prix dynamique. Vous pouvez générer différents noms de colonnes de prix dynamiques dans Solr en personnalisant ou en créant un nouveau transformateur. Si vous personnalisez le transformateur, vous devez remplacer la méthode applyFieldNamingPattern dans les classes suivantes pour obtenir les noms de colonne de prix mis à jour :
  • SolrRESTSearchCatalogEntryViewPriceQueryPostprocessor
  • SolrRESTSearchByPriceExpressionProvider
  • SolrSearchResultFieldQueryPreprocessor
  • SolrSearchFacetQueryPreprocessor

Dans les sites étendus, le magasin de ressources de catalogue définit le prix dans le catalogue principal afin que les sites étendus partagent les prix du magasin de ressources de catalogue. Le site étendu peut également remplacer les prix afin de contenir les prix étendus spécifiques au site. Différents sites étendus peuvent créer des articles spécifiques avec un prix spécifique. Lorsque les prix sont calculés, les articles spécifiques au magasin sont calculés en premier. Les articles partagés sont calculés par magasin en fonction de leur contrat et de leur devise spécifiques. L'API de prix obtient le prix correct, basé sur le contrat spécifié, la règle de tarification, le modèle de prix, ou les termes et conditions du contrat. Différents sites étendus peuvent définir des prix différents en utilisant différents contrats. Lorsqu'un client se connecte à un autre magasin de sites étendu, différents contrats sont résolus. Ensuite, le client voit les prix pertinents dans le magasin, même pour le même produit dans le catalogue principal.

Plusieurs colonnes de prix sont établies dans l'index des entrées du catalogue. Lorsqu'un acheteur se connecte à la vitrine, le contrat d'acheteur admissible est récupéré. S'il existe plusieurs contrats admissibles, l'acheteur peut choisir un contrat à définir pour la session. Ensuite, la colonne de prix correspondante liée au contrat en session est affichée dans la vitrine. Pour personnaliser ce comportement, l'URL ContractPriceCalculate utilise ContractPriceCalculatCmd comme commande d'entrée globale. La logique peut être remplacée en enregistrant une nouvelle implémentation de commande dans la table de registre de commandes. Si vous souhaitez introduire une logique de calcul différente, remplacez les méthodes calculateStoreSpecificItemPrice et calculateStoreSpecificItemPrice dans la commande ContractPriceCalculateCmd.

Le profil d'accès IBM_Admin_CalculatePriceIndex est utilisé pour amorcer l'entrée commune de l'API com.ibm.commerce.price.commands.CompositeGetContractUnitPriceCmdImpl price :

<cmdreg storeent_id="0" interfacename="com.ibm.commerce.price.commands.GetContractUnitPriceCmd+IBM_Admin_CalculatePriceIndex" 
classname="com.ibm.commerce.price.commands.CompositeGetContractUnitPriceCmdImpl" target="Local"/>
Si votre magasin utilise le modèle de prix de la règle de tarification, vous pouvez utiliser l'implémentation de commandes suivante pour des raisons de performance :

<cmdreg storeent_id="0" interfacename="com.ibm.commerce.price.commands.GetContractUnitPriceCmd+IBM_Admin_CalculatePriceIndex" 
classname="com.ibm.commerce.price.commands.PriceRuleGetContractUnitPriceCmdImpl" target="Local"/>

Si votre magasin utilise le modèle de prix externe, vous pouvez enregistrer votre propre commande de prix pour obtenir votre résultat de prix prévu.

Aperçu de l'espace de travail

Lorsque vous utilisez l'aperçu de l'espace de travail :
  • Les prix B2B affichés dans l'aperçu du magasin ne proviennent que du contenu approuvé.
  • Les prix futurs peuvent être prévisualisés si le contrat futur approprié est indexé. La date future est respectée dans le contexte de la prévisualisation et montre le affiche correct pour l'affichage.
  • Les prix ne peuvent pas être associés à du nouveau contenu non approuvé, tels que l'aperçu d'un nouveau produit non approuvé qui n'appartient à aucun contrat.
  • Lorsqu'un utilisateur professionnel modifie le prix de vente standard sur CMC, il souhaite prévisualiser ces modifications dans l'aperçu du magasin de l'espace de travail. Si l'index de prix des contrats est activé, sans recalcul, ces modifications ne peuvent pas être prévisualisées. Vous devez exécuter le service d'indexation manuellement, via le service d'indexation des planifications, ou calculer un travail de prix pour capturer les prix modifiés. Cette opération permet aux produits concernés de suivre les nouveaux changements de prix.