Exemple : Insertion et remplacement d'offres en plusieurs devises

L'utilitaire de chargement des données propose deux modes de chargement des offres en plusieurs devises : insertion ou remplacement. Le comportement de chaque mode varie selon que l'identificateur a été spécifié ou non.

Cet exemple utilise un fichier CSV pour expliquer comment insérer, remplacer ou supprimer vos données. Vous pouvez aussi créer et utiliser un fichier au format XML pour insérer, remplacer ou supprimer vos données. Si vous choisissez de créer et d'utiliser un fichier au format XML, assurez-vous que vos éléments XML utilisent les mêmes noms que ceux des colonnes CSV.

Fichier CSV avec exemples de données d'offre pour plusieurs devises

Mode insertion
  • Identificateur spécifié : L'insertion échoue si une offre avec la même combinaison existe dans la base de données.
  • Identificateur non spécifié : L'offre est insérée avec succès.
Mode de remplacement
  • Identificateur spécifié : Met à jour l'offre spécifiée en fonction de l'identificateur. Si une offre avec cet identificateur n'existe pas dans la base de données, l'offre est insérée.
  • Identificateur non spécifié :
    • Si le nombre d'enregistrements avec la même paire dans la base de données est égal à 1, met à jour l'offre existante. Les prix de vente non spécifiés dans des devises de l'offre ne sont pas modifiés.
    • Si le nombre d'enregistrements avec la même paire dans la base de données est supérieur à 1, supprime toutes les offres existantes ; insère ensuite les nouvelles offres à partir du fichier CSV.
Dans cet exemple, les données source proviennent d'un fichier CSV nommé MultiCurrencyOfferGroup.csv. Ce fichier contient des exemples de données d'offres. Chaque colonne est délimitée par une virgule.
Exemple de fichier MultiCurrencyOfferGroup.csv
Standard Price List,1000573,1100456,3,2009-03-15 15:47:00.0,2009-05-15 15:47:00.0,each,10,0,2009-03-16 
15:47:00.0,Elegant wine glass,4.50,10.05,30.75,3.48,442.56,6074.84,152.42
Holiday price list,1000574,1100457,5,2009-12-15 15:47:00.0,2009-12-31 15:47:00.0,each,5,0,2009-11-28 15:47:00.0,
Decorative bed cover,25,55.84,170.84,19.31,2,458.61,33691.25,846.71
Legacy system price list,1000575,1100458,2,2009-02-15 15:47:00.0,2009-06-02 15:47:00.0,each,10,0,2009-02-22 15:47:00.0,
Old Cologne,9.99,22.31,68.27,7.72,982.46,13,463.02,338.35
Overstock price list,1000576,1100459,3,2009-03-15 15:47:00.0,2009-03-31 15:47:00.0,each,10,0,2009-03-16 15:47:00.0,
Candle holder,3,6.70,20.50,2.32,295.03,4042.95,101.61
La première ligne du fichier CSV peut également être composée de noms de colonnes, en fonction de l'attribut firstLineIsHeader du fichier de configuration de chargement des données de la liste de prix. firstLineIsHeader est un attribut de l'élément <_config:DataReader>.
firstLineIsHeader
true
Indique que la première ligne du fichier CSV sera traitée comme des données de nom de colonne et ne sera pas insérée dans la base de données.
false
Indique que la première ligne du fichier CSV contient des données devant être lues et insérées dans la base de données.

définitions de colonne CSV et d'élément XML

L'ordre des colonnes est défini dans le fichier de configuration de chargement des données d'offres. Reportez-vous à l'attribut number dans l'élément <_config:Data>.

PriceListUniqueID
(Facultatif, Chaîne) Identificateur de la liste de prix. S'il existe un mappage de données pour la valeur UniqueID de liste de prix dans le fichier de configuration de chargement des données de liste de prix, la valeur uniqueID est requise dans le fichier CSV.
PriceListName
(Optionnel, Chaîne) Nom de la liste de prix qui contient cette offre. Lors du chargement d'une offre, le nom ou l'élément UniqueID de la liste de prix est facultatif. Lorsqu'aucun des deux n'est fourni dans le fichier CSV, le nom de la liste de prix par défaut du magasin est utilisé pour le chargement. Si l'un des eux est fourni, le nom indiqué est utilisé pour le chargement. Si les deux sont fournis dans le fichier CSV, l'élément uniqueID de la liste de prix est utilisé pour le chargement.
CatentryUniqueID
(Facultatif, Chaîne) Identificateur unique de l'entrée de catalogue associée. Lorsqu'il existe un mappage de données dans le fichier de configuration des données d'offre, l'élément CatentryUniqueID est obligatoire. Si les deux données sont fournies dans le fichier CSV, la valeur de CatentryUniqueID est utilisée pour le chargement.
CatentryPartNumber
(Requis, chaîne) Référence de l'entrée de catalogue pour laquelle cette offre est définie. Lorsque vous chargez une offre, le nom CatentryPartNumber ou CatentryUniqueID est requis. Lorsqu'aucun des deux n'est fourni dans le fichier CSV, le chargement de l'offre échoue. Si l'un des deux est fourni, l'élément catentry indiqué est utilisé pour le chargement. Si les deux données sont fournies dans le fichier CSV, la valeur de CatentryUniqueID est utilisée pour le chargement.
Identificateur

(Facultatif, double) Nombre qui identifie l'offre de façon unique lorsque la valeur de la colonne est combinée avec des valeurs d'ID d'entrée de catalogue et d'ID de liste de prix uniques pour l'offre. Mappé à la colonne de base de données OFFER.IDENTIFIER.

Priorité
(Optionnel, Double) Si plusieurs offres sont en vigueur simultanément, celle dont la priorité est la plus élevée est utilisée. Si elle n'est pas définie dans le fichier d'entrée, elle reçoit la valeur par défaut "0.0".
StartDate
(Facultatif, Horodatage) Début de la plage de dates pendant laquelle l'offre est en vigueur. Utilisez le format yyyy-mm-dd hh:mm:ss.millis.
EndDate
(Optionnel, Horodatage) Fin de la plage de dates pendant laquelle l'offre est en vigueur. Utilisez le format yyyy-mm-dd hh:mm:ss.millis.
QuantityUnitIdentifier
(Optionnel, String) Unité de mesure utilisée dans les champs MinimumQuantity (quantité minimale) et MaximumQuantity (quantité maximale).
MaximumQuantity
(Facultatif, Double) Quantité maximale pouvant être achetée dans une même commande au titre de cette offre.
MinimumQuantity
(Optionnel, Double) Quantité minimale pouvant être achetée dans une même commande au titre de cette offre.
LastUpdate
(Optionnel, Horodatage) Date et heure de dernière mise à jour de l'offre. Utilisez le format yyyy-mm-dd hh:mm:ss.millis.
Description
(Optionnel, Chaîne) Description de cette offre.
PriceInUSD
(Facultatif, Décimal) Prix en dollars US.
PriceInBRL
(Optionnel, Décimal) Prix en reais brésiliens.
PriceInCAD
(Optionnel, Décimal) Prix en dollars canadiens.
PriceInCNY
(Optionnel, Décimal) Prix en Yuan Ren-min-bi.
PriceInEUR
(Optionnel, Décimal) Prix en euros.
PriceInJPY
(Facultatif, Décimal) Prix en yen japonais.
PriceInKRW
(Optionnel, Décimal) Prix en wons sud-coréens.
PriceInTWD
(Optionnel, Décimal) Prix en nouveaux dollars de Taïwan.

Données de mappage

Le fragment suivant du fichier d'exemple de configuration illustre comment mapper chaque colonne de données dans le fichier CSV source à une valeur.

<_config:DataReader className="com.ibm.commerce.foundation.dataload.datareader.CSVReader" 
firstLineIsHeader="true" >
	<_config:Data>
		<_config:column number="1" name="PriceListUniqueId" />
		<_config:column number="2" name="PriceListName" />
	  	<_config:column number="3" name="CatentryUniqueId" />
		<_config:column number="4" name="CatentryPartNumber" />
	  <_config:column number="5" name="Identifier" />
	  	<_config:column number="6" name="Precedence" />
	  	<_config:column number="7" name="StartDate" />
		<_config:column number="8" name="EndDate" />
		<_config:column number="9" name="QuantityUnitIdentifier" />
	  	<_config:column number="10" name="MinimumQuantity" />
	 	<_config:column number="11" name="MaximumQuantity" />
	  	<_config:column number="12" name="LastUpdate" />
		<_config:column number="13" name="Description" />
	  	<_config:column number="14" name="PriceInUSD" />
	  	<_config:column number="15" name="PriceInBRL" />
	  	<_config:column number="16" name="PriceInCAD" />
	  	<_config:column number="17" name="PriceInCNY" />
		<_config:column number="18" name="PriceInEUR" />
	  	<_config:column number="19" name="PriceInJPY" />
	  	<_config:column number="20" name="PriceInKRW" />
	  <_config:column number="21" name="PriceInTWD" />
		<_config:column number="22" name="Delete" />
	</_config:Data>
</_config:DataReader>

L'attribut number dans l'élément <_config:column> définit l'ordre des colonnes dans le fichier des enregistrements CSV. L'attribut name définit le nom de colonne utilisé dans l'élément <_config:DataMapping>.

Le fragment suivant du fichier d'exemple de configuration illustre comment mapper chaque valeur à un chemin de schéma logique d'objet métier.
<_config:DataMapping>	
  <_config:mapping xpath="PriceListIdentifier/UniqueID" value="PriceListUniqueId" valueFrom="InputData" />
  <_config:mapping xpath="PriceListIdentifier/ExternalIdentifier/Name" value="PriceListName" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/CatalogEntryIdentifier/UniqueID" value="CatentryUniqueId" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/CatalogEntryIdentifier/ExternalIdentifier/PartNumber" 
    value="CatentryPartNumber" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Qualifier" value="Identifier" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/precedence" value="Precedence" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/startDate" value="StartDate" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/endDate" value="EndDate" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/lastUpdate" value="LastUpdate" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/quantityUnit" value="QuantityUnitIdentifier" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/minimumQuantity" value="MinimumQuantity" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/maximumQuantity" value="MaximumQuantity" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Description/value" value="Description" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/Price/currency" value="USD" valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/Price/value" value="PriceInUSD" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[0]/currency" value="BRL" 
    valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[0]/value" value="PriceInBRL" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[1]/currency" value="CAD" 
    valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[1]/value" value="PriceInCAD" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[2]/currency" value="CNY" 
    valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[2]/value" value="PriceInCNY" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[3]/currency" value="EUR" 
    valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[3]/value" value="PriceInEUR" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[4]/currency" value="JPY" 
    valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[4]/value" value="PriceInJPY" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[5]/currency" value="KRW" 
    valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[5]/value" value="PriceInKRW" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[6]/currency" value="TWD" 
    valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[6]/value" value="PriceInTWD" 
    valueFrom="InputData" />	
  <_config:mapping xpath="" value="Delete" valueFrom="InputData" />
</_config:DataMapping>

L'attribut value dans l'élément <_config:DataMapping> doit être cohérent avec l'attribut name de l'article correspondant dans l'élément <_config:column>. Les deux attributs sont sensibles à la casse.

Médiateur d'objet métier

Le nom de classe de médiateur est com.ibm.commerce.price.dataload.mediator.OfferMediator.

Remarque : Lorsque vous utilisez un médiateur qui est fourni avec HCL Commerce avec l'utilitaire de chargement des données, l'utilitaire suppose que vous chargez des données dans toutes les colonnes d'un objet métier. Si vous souhaitez mettre à jour les données dans des colonnes spécifiques seulement, configurez une liste d'exclusion de colonne pour le processus de chargement. Une liste d'exclusion de colonne amène l'utilitaire de chargement de données à ignorer des colonnes spécifiques au cours de l'opération de chargement. Si vous n'utilisez pas de liste d'exclusion de colonne, l'utilitaire met à jour toutes les colonnes dans la ligne d'une table base de données lorsque l'utilitaire met la ligne à jour. Si aucune valeur n'est définie dans le fichier d'entrée, l'utilitaire peut remplacer la valeur de colonne existante par une valeur par défaut ou définir que la valeur sera nulle. Pour plus d'informations, voir Configuration d'une liste d'exclusion de colonnes.