Exemple : Insertion et remplacement de stock disponible à la vente

Vous pouvez insérer et remplacer votre stock disponible à la vente à l'aide de l'utilitaire de chargement de données. L'exemple ci-après utilise un fichier CSV pour expliquer comment insérer et remplacer les informations de stock disponible à la vente.

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.

Vous pouvez utiliser l'utilitaire de chargement de données pour charger des données de configuration de stock ATP dans la base de données. Les données peuvent être insérées ou remplacées dans la table BASEITEM, BASEITMDSC, STOREITEM, DISTARRANG, ITEMVERSN, ITEMSPC ou VERSIONSPC.

Lors de leur chargement initial, les données de configuration de stock disponible à la vente sont généralement chargées en même temps que les données d'entrée de catalogue depuis un fichier CSV unique étant donné que chaque donnée de configuration de stock disponible à la vente est associée à un enregistrement d'entrée de catalogue dans la base de données. Dans ce cas, CatalogEntryMediator est utilisé pour le chargement des données.

Dans un autre cas, les données d'entrée de catalogue sont chargées initialement par CatalogEntryMediator sans données de configuration de stock disponible à la vente, de sorte que les données de configuration de stock disponible à la vente par défaut sont chargées dans la base de données. Ensuite, si l'utilisateur souhaite modifier les données de configuration de stock disponible à la vente, FulfillmentPropertyMediator peut être utilisé pour charger seulement les données de configuration de stock disponible à la vente sans affecter les données d'entrée de catalogue existantes.

Prérequis

Avant d'exécuter cet exemple, vérifiez que le système de stock est un système de stock disponible à la vente. Par exemple, vérifiez la table STORE pour vous assurer que INVENTORYSYSTEM=-1.

Fichier CSV avec exemples de données de configuration de stock ATP

Dans cet exemple, les données source proviennent d'un fichier CSV nommé ATPconfig.csv. Ce fichier contient des exemples de données de configuration de stock disponible à la vente. Chaque colonne est délimitée par une virgule.

Fichier CSV avec exemples de données

PartNumber ParentPartNumber Type INVQuantityMeasure INVQuantityMultiple TrackingInventory BackOrderable ReleaseSeparately Creditable ForceBackorder ReturnNotDesired MinQTYForSplit PickingMethod Discontinued CatEntryStoreIdentifier
Example-PN-10001 Produit C62 2 N N O N O O 10 L O 10701
Example-PN-10002 Example-PN-10001 Elément C62 2 N N O N O O 10 L O
Remarque : Si les données d'entrée de catalogue ne sont pas chargées dans la base de données, les données de configuration de stock disponible à la vente doivent être chargées conjointement avec les données d'entrée de catalogue dans un fichier CSV source unique ; dans ce cas, cette table fait partie du fichier CSV pour le chargement de données d'entrée de catalogue. Si les données d'entrée de catalogue existent déjà dans la base de données, les données de configuration de stock disponible à la vente de la table ci-dessus peuvent être chargées séparément.

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

PartNumber
(Requis, chaîne) Numéro de référence identifiant le numéro de pièce de l'entrée de catalogue. Identifie de manière unique une entrée de catalogue d'un propriétaire spécifique. Cette zone est requise et ne peut pas contenir la valeur null.
ParentPartNumber
(Chaîne) Numéro de référence d'un produit parent de cet article. Utilisé pour extraire BASEITEM_ID de la table BASEITEM, en même temps que l'ID du propriétaire de cet article.
Type
(Requis, chaîne) Cette zone définit le type d'entrée de catalogue. Les valeurs correspondant au type sont "Item" (article), "Product" (produit), "Bundle" (offre groupée) et "Package" (lot). Cette zone est requise et ne peut pas contenir la valeur null.
INVQuantityMeasure
(Chaîne) Unité de mesure pour QUANTITYMULTIPLE. Par exemple, pour représenter un quart de pouce, QUANTITYMULTIPLE serait égal à 0.25, et QUANTITYMEASURE désignerait l'élément QTYUNIT représentant les pouces (habituellement INH). La valeur par défaut 'C62' est utilisée si aucune valeur n'est indiquée dans le fichier CSV.
INVQuantityMultiple
(Double) Les quantités de ce BaseItem sont mesurées en unités indivisibles. QUANTITYMULTIPLE, de pair avec QUANTITYMEASURE, indique ce que représente chaque quantité indivisible. Par exemple, des textiles pourraient être mesurés en quantités indivisibles, chacune représentant un quart de pouce. La valeur par défaut 1.0 est utilisée si aucune valeur n'est indiquée dans le fichier CSV.
TrackingInventory
(Chaîne) Indique si le stock est suivi. La valeur peut être :
  • N = Suivi du stock.
  • Y = Le stock est suivi.
  • E = Suivi externe du stock.
Si vous ne spécifiez pas cette valeur, la valeur par défaut est Y.
BackOrderable
(Chaîne) Indique si l'article peut être commandé en amont. La valeur peut être :
  • N = Les articles ne peuvent pas être commandés en amont.
  • Y = Les articles peuvent être commandés en amont.
Si vous ne spécifiez pas cette valeur, la valeur par défaut est Y.
ReleaseSeparately
(Chaîne) Indique si la préparation de l'article de la commande peut être lancée séparément. La valeur peut être :
  • N = La préparation des articles de la commande peut être lancée avec d'autres articles de commande.
  • Y = La préparation de ces articles de commande doit être lancée séparément (dans leur propre cadre).
Si vous ne spécifiez pas cette valeur, la valeur par défaut est N.
Creditable
(Chaîne) Indique si le commerçant, sans remplacement, peut émettre un crédit pour cet article. Cette valeur peut être :
  • N = Vendu tel quel.
  • Y = Remboursable.
L'exigence de retour de la marchandise est évaluée séparément. Si vous ne spécifiez pas cette valeur, la valeur par défaut est Y.
ForceBackorder
(Chaîne) Indique si le stock peut être alloué. Peut être utilisé pour interrompre temporairement l'allocation d'articles spécifiés pour cet article de base. La valeur peut être :
  • N = Le stock peut être affecté (comportement habituel).
  • Y = Le stock ne peut pas être affecté, même si le nombre d'articles en stock le permet.
Si vous ne spécifiez pas cette valeur, la valeur par défaut est N.
ReturnNotDesired
(Chaîne) Indique si le retour de l'article est souhaité, même si le client est prêt ou en mesure de renvoyer l'article. Par exemple, aliments périssables. La valeur peut être :
  • N = La demande de crédit est évaluée en fonction de l'intention du client de renvoyer l'article. Le client doit renvoyer la marchandise.
  • Y = La demande de crédit est évaluée comme si un retour était prévu. Le client ne doit pas renvoyer la marchandise.
Si vous ne spécifiez pas cette valeur, la valeur par défaut est N.
MinQTYForSplit
(Entier) Quantité minimale non allouée qui doit rester pour le fractionnement des articles de la commande dans l'allocation du stock. Si vous ne spécifiez pas cette valeur, la valeur par défaut est 0.
PickingMethod
(Chaîne) Détermine la méthode de prélèvement du stock dans cet accord de distribution. La valeur peut être :
  • F = FIFO (Premier entré, premier sorti) - stock le moins récent d'abord.
  • L = dernier entré, premier sorti - stock le plus récent d'abord.
Discontinued
(Chaîne) Indique si l'article spécifié est interrompu (fin de série). La valeur peut être :
  • Y = L'article est interrompu. Il peut être commandé si le stock disponible le permet, mais ne peut pas être commandé en amont.
  • N = L'article est actif et peut être commandé en amont s'il est indisponible.
CatEntryStoreIdentifier
(Chaîne) Cet identificateur est utilisé dans un magasin de site étendu. Si l'élément CatalogEntry est défini dans un magasin de ressources d'entrées de catalogue, cette zone correspond à l'identificateur de ce magasin. Cet identificateur est utilisé pour extraire le paramètre entryOwner du catalogue.
HCL Commerce EnterpriseCette zone est requise si vous utilisez un magasin de site étendu.

Autres zones facultatives non incluses dans l'exemple :

CatalogEntryUniqueId
(Long) Identificateur de l'entrée de catalogue. Utilisé pour extraire un enregistrement de la table CATENTRY, après quoi BASEITEM_ID, ITEMSPC_ID et CATENTTYPE_ID peuvent être extraits de l'enregistrement. Si cette zone n'est pas spécifiée dans le fichier CSV, PartNumber est utilisé pour extraire ces ID.
ParentCatalogEntryUniqueId
(Long) Identificateur de l'entrée de catalogue parent. Utilisé pour extraire l'élément BASEITEM_ID correspondant à l'entrée de catalogue parent. Si cette zone n'est pas spécifiée dans le fichier CSV, BASEITEM_ID est extrait en fonction du numéro de référence parent (ParentPartNumber).
Supprimer
(Chaîne) Indique si cet enregistrement doit être supprimé. Cette zone prend effet lorsque dataLoadMode est défini à "replace". Si la valeur de cette zone est égale à deleteValue, l'enregistrement correspondant est supprimé. La valeur par défaut de deleteValue est 1 et la valeur deleteValue peut être configurée sous l'élément <DataMapping> dans le fichier BusinessObjectConfigFile.

Données de contexte métier

Le fragment de code suivant du fichier de configuration wc-dataload-env.xml fournit les données de contexte métier requises pour le chargement des données :

<_config:BusinessContext storeIdentifier="AuroraESite" langId="-1" >
</_config:BusinessContext>
storeIdentifier
(Chaîne) Identificateur du magasin auquel l'entrée de catalogue appartient.
langId
(Entier) Identificateur de langue, utilisé pour charger des données dans BASEITEMDSC. La valeur par défaut est "-1".

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. Si les données de configuration de stock disponible à la vente sont chargées avec les données d'entrée de catalogue dans un fichier CSV source unique, le mappage suivant peut être ajouté dans le fichier de configuration. Si les données de configuration de stock disponible à la vente sont chargées, les informations de mappage suivantes doivent être définies dans un fichier de configuration individuel :

<_config:DataReader className="com.ibm.commerce.foundation.dataload.datareader.CSVReader" firstLineIsHeader="true">
               <_config:Data>
             <_config:column number="1" name="PartNumber" />
                     <_config:column number="2" name="ParentPartNumber" />
                     <_config:column number="3" name="Type" />
                     <_config:column number="4" name="INVQuantityMeasure" />
                     <_config:column number="5" name="INVQuantityMultiple" />
                     <_config:column number="6" name="TrackingInventory" />
                     <_config:column number="7" name="BackOrderable" />
                     <_config:column number="8" name="ReleaseSeparately" />
                     <_config:column number="9" name="Creditable" />
                     <_config:column number="10" name="ForceBackorder" />
                     <_config:column number="11" name="ReturnNotDesired" />
                     <_config:column number="12" name="MinQTYForSplit" />
                     <_config:column number="13" name="PickingMethod" />
                     <_config:column number="14" name="Discontinued" />
                     <_config:column number="15" name="CatEntryStoreIdentifier" />
               </_config:Data>
</_config:DataReader >

Le fragment suivant du fichier d'exemple de configuration illustre comment mapper chaque colonne de données dans le fichier CSV à un chemin de schéma logique d'objet métier. L'attribut 'value' représente le nom d'une colonne du fichier CSV, qui est défini dans le fragment de configuration. Chaque colonne du fichier CSV doit disposer d'un mappage avec le chemin de schéma logique.


<_config:DataMapping>
       <_config:mapping xpath="CatalogEntryIdentifier/ExternalIdentifier/PartNumber" value="PartNumber" valueFrom="InputData"/>
       <_config:mapping xpath="ParentCatalogEntryIdentifier/ExternalIdentifier/PartNumber" value="ParentPartNumber" valueFrom="InputData"/>
       <_config:mapping xpath="catalogEntryTypeCode" value="Type" valueFrom="InputData"/>       
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/quantityMeasure' value="INVQuantityMeasure" valueFrom="InputData"/>
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/quantityMultiple' value="INVQuantityMultiple" valueFrom="InputData"/>
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/trackingInventory' value="TrackingInventory" valueFrom="InputData"/>
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/backOrderable' value="BackOrderable" valueFrom="InputData"/>
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/releaseSeparately' value="ReleaseSeparately" valueFrom="InputData"/>
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/creditable' value="Creditable" valueFrom="InputData"/>
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/forceBackorder' value="ForceBackorder" valueFrom="InputData"/>
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/returnNotDesired' value="ReturnNotDesired" valueFrom="InputData"/>
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/minQTYForSplit' value="MinQTYForSplit" valueFrom="InputData"/>
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/pickingMethod' value="PickingMethod" valueFrom="InputData"/>
       <_config:mapping xpath='FulfillmentProperties/UserData/UserDataField[0]/discontinued' value="Discontinued" valueFrom="InputData"/>
			<_config:mapping xpath="InventoryReceiptIdentifier/ExternalIdentifier/CatalogEntryIdentifier/ExternalIdentifier/StoreIdentifier/ExternalIdentifier/NameIdentifier" value="CatEntryStoreIdentifier" />
  
</_config:DataMapping>

Médiateur d'objet métier

Si les données de configuration de stock ATP de cet exemple sont chargées en même temps que les données d'entrées de catalogue, le nom de la classe de médiateur est com.ibm.commerce.catalog.dataload.mediator.CatalogEntryMediator. Si les données de configuration de stock disponible à la vente sont chargées séparément, le nom de la classe de médiateur est com.ibm.commerce.catalog.dataload.mediator.FulfillmentPropertyMediator. Le schéma logique correspondant est CatalogEntry.xsd.

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.