Ejemplo: Insertar y sustituir ofertas con varias monedas
El programa de utilidad de carga de datos ofrece dos modalidades para cargar ofertas con una única moneda: insertar y sustituir. El comportamiento de cada modalidad depende de si se especifica o no el identificador.
Este ejemplo utiliza un archivo CSV para mostrar cómo insertar, sustituir o eliminar los datos. También puede crear y utilizar un archivo con formato XML para insertar, sustituir o eliminar los datos. Si decide crear y utilizar un archivo con formato XML, asegúrese de que los elementos XML utilizan los mismos nombres que los nombres de columna CSV.
Archivo CSV con datos de oferta de ejemplo para varias monedas
- Modalidad de inserción
- Identificador especificado: La inserción falla si existe una oferta con la misma combinación en la base de datos.
- Identificador no especificado: La oferta se ha insertado satisfactoriamente.
- Modalidad de sustitución
- Identificador especificado: Actualiza la oferta especificada de acuerdo con el Identificador. Si la oferta con el Identificador no existe en la base de datos, se inserta la oferta.
- Identificador no especificado:
- Si el número de registros con la misma pareja en la base de datos es uno, actualiza la oferta existente. Los precios de oferta sin especificar para las monedas de la oferta no se modifican.
- Si el número de registros con la misma pareja en la base de datos es mayor que uno, suprime todas las ofertas existentes y, a continuación, inserta las ofertas nuevas del archivo CSV.
Definiciones de columnas CSV y de elementos XML
El orden de las columnas se define en el archivo de configuración de carga de datos de oferta. Consulte el atributo number
en el elemento <_config:Data>
.
- PriceListUniqueID
- (Opcional, Serie) El identificador de la lista de precios. Cuando hay una correlación de datos para el ID exclusivo de lista de precios en el archivo de configuración de carga de datos de lista de precios, el ID exclusivo es necesario en el archivo CSV.
- PriceListName
- (Opcional, String) El nombre de la lista de precios que contiene esta oferta. Al cargar una oferta, el nombre de la lista de precios o el ID exclusivo de la lista de precios es opcional. Si no se proporciona ninguno de ellos en el archivo CSV, la lista de precios predeterminada de la tienda se utiliza para la carga. Si se proporciona uno de ellos, la lista de precios proporcionada se utiliza para la carga. Si se proporcionan ambos en el archivo CSV, el ID exclusivo de la lista de precios se utiliza para la carga.
- CatentryUniqueID
- (Opcional, Serie) El identificador exclusivo para la entrada de catálogo relacionada. Cuando hay una correlación de datos en el archivo de configuración de carga de datos de oferta, la columna CatentryUniqueID es necesaria. Si se proporcionan ambos en el archivo CSV, el ID exclusivo de la entrada de catálogo se utiliza para la carga.
- CatentryPartNumber
- (Necesario, Serie) El número de pieza de la entrada de catálogo para la que se ha definido esta oferta. Al cargar una oferta, el nombre CatentryPartNumber o CatentryUniqueID es necesario. Si no se proporciona ninguno de ellos en el archivo CSV, la oferta no se carga. Si se proporciona alguno de ellos, la entrada de catálogo proporcionada se utiliza para la carga. Si se proporcionan ambos en el archivo CSV, el ID exclusivo de la entrada de catálogo se utiliza para la carga.
- Identificador
-
(Opcional, Doble) El número que identifica de forma exclusiva la oferta cuando el valor para la columna se combina con los valores de ID de entrada de catálogo exclusivo e ID de lista de previos para la oferta. Se correlaciona con la columna de base de datos OFFER.IDENTIFIER.
- Precedence
- (Opcional, Double) Cuando hay más de una oferta en vigor en un momento determinado, se utiliza la que tiene la prioridad más alta. Si no se especifica en el archivo de entrada, establece un valor predeterminado de "0.0".
- StartDate
- (Opcional, Indicación de fecha y hora)El inicio del intervalo de tiempo durante el que esta oferta es efectiva. Utilice el formato
yyyy-mm-dd hh:mm:ss.millis
. - EndDate
- (Opcional, Timestamp) El final del intervalo de tiempo durante el que esta oferta es efectiva. Utilice el formato
yyyy-mm-dd hh:mm:ss.millis
. - QuantityUnitIdentifier
- (Opcional, String) La unidad de medida para Cantidad mínima y Cantidad máxima.
- MaximumQuantity
- (Opcional, Double) La cantidad máxima que se puede adquirir en un solo pedido bajo esta oferta.
- MinimumQuantity
- (Opcional, Double) La cantidad mínima que se puede adquirir en un solo pedido bajo esta oferta.
- LastUpdate
- (Opcional, Indicación de fecha y hora) La última vez que se actualizó la oferta. Utilice el formato
yyyy-mm-dd hh:mm:ss.millis
. - Descripción:
- (Opcional, Serie) La descripción para esta oferta.
- PriceInUSD
- (Opcional, Decimal) El precio en dólares estadounidenses.
- PriceInBRL
- (Opcional, Decimal) El precio en reales brasileños.
- PriceInCAD
- (Opcional, Decimal) El precio en dólares canadienses.
- PriceInCNY
- (Opcional, Decimal) El precio en yuanes renminbi chinos.
- PriceInEUR
- (Opcional, Decimal) El precio en euros.
- PriceInJPY
- (Opcional, Decimal) El precio en yenes japoneses.
- PriceInKRW
- (Opcional, Decimal) El precio en wons surcoreanos.
- PriceInTWD
- (Opcional, Decimal) El precio en nuevos dólares taiwaneses.
Correlación de datos
El siguiente fragmento de código del archivo de configuración de ejemplo muestra cómo correlacionar cada columna de datos del archivo CSV de origen con un valor.
<_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>
El atributo number
del elemento <_config:column>
define el orden de las columnas en el archivo de registro CSV. El atributo name
define el nombre de columna que se utiliza en el elemento <_config:DataMapping>
.
<_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>
El atributo value
del elemento <_config:DataMapping>
debe ser coherente con el atributo name
del elemento correspondiente en el elemento <_config:column>
. Ambos atributos son sensibles a las mayúsculas y minúsculas.
Mediador de objetos de negocio
El nombre de la clase de mediador es com.ibm.commerce.price.dataload.mediator.OfferMediator
.