Ejemplo: Insertar y sustituir registros de inventario esperado

Puede insertar y sustituir registros de inventario esperado utilizando el programa de utilidad de carga de datos. Este ejemplo utiliza un archivo CSV para demostrar cómo eliminar la información de inventario.

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.

Utilice el programa de utilidad de carga de datos para cargar datos de registro de inventario esperado en la tabla RA table and RADETAIL con un único archivo CSV.

Requisitos previos

Antes de ejecutar este ejemplo, asegúrese de que se han cumplido los siguientes requisitos previos:

  • Asegúrese de que el sistema de inventario es ATP. Por ejemplo, compruebe la tabla STORE para asegurarse de que INVENTORYSYSTEM=-1
  • Los datos del catálogo, los datos de grupo de catálogo y los datos de entrada de catálogo que se utilizan en este ejemplo deben cargarse en la base de datos.
  • Los datos de configuración de inventario ATP se cargan en la base de datos.
  • Los datos de VendorName en el archivo CSV de origen existen en la tabla VENDOR de la base de datos.

Archivo CSV con datos de ejemplo

En este ejemplo, la fuente de datos es un archivo CSV denominado ra_radetail.csv. El archivo contiene datos de ejemplo de registro de inventario esperado (RA) y detalles de inventario esperado (RADETAIL). Cada columna está delimitada por una coma.

Archivo CSV con datos de ejemplo

VendorName RACreateTime OrderDate DateClosed OpenIndicator ExternalId PartNumber ExpectedDate Cantidad RADetailComment CatEntryStoreIdentifier
MyCompany 2005-07-12 01:01:01.123456 2005-06-12 00:00:00 2005-08-08 00:00:00.0 True ATP-1201 Record 1 FULO-0101 2005-12-08 00:00:00 10000 RADETAIL comment x 10701
MyCompany 2005-07-12 01:01:01.123456 2005-06-12 00:00:00 2005-08-08 00:00:00.0 True ATP-1201 Record 1 FULO-0201 2005-12-24 00:00:00 500 RADETAIL comment y
AdvancedB2BDirect Vendor 2009-05-21 00:00:00 2009-04-21 00:00:00 FULO-0301 2009-12-31 00:00:00
Nota: Si desea insertar un registro en una tabla RA y varios registros relacionados en la tabla RADETAIL, debe grabar varios registros en el archivo CSV con los mismos datos RA. Por ejemplo, la fila 1 y la fila 2 en la tabla anterior representan 2 registros RADETAIL que están relacionados con el mismo registro RA. En este caso, dataLoadMode debe ser 'Replace' en lugar de 'Insert'. De lo contrario, se produce un error de clave duplicada.

Definición de las columnas del archivo CSV

VendorName
(Necesario, serie) Proveedor que ha suministrado el inventario. Este campo es necesario y no puede ser nulo.
CreateTime
(Necesario, indicación de fecha y hora) Fecha y hora de creación del registro. El formato de la entrada es yyyy-mm-dd hh:mm:ss.SSSSSS. La longitud de las fracciones de segundos no debe ser superior a 6. El formato puede personalizarse estableciendo la propiedad timestampPattern en wc-dataload.xml. Este campo forma parte del índice exclusivo de la tabla RA. Este campo es necesario y no puede ser nulo.
OrderDate
(Necesario, indicación de fecha y hora) Fecha y hora de creación de este pedido con el proveedor. El formato es el mismo que el indicado para CreateTime. Este campo es necesario y no puede ser nulo.
DateClosed
(Indicación de fecha y hora) Fecha y hora de cierre del registro. El formato es el mismo que el indicado para CreateTime.
OpenIndicator
(Booleano) Si se establece en true, es posible que el inventario esperado se siga recibiendo y asignando a pedidos en espera. Si se establece en false, no se recibe más inventario. Es posible que el inventario esperado no se asigne a pedidos en espera.
ExternalId
(Serie) Identificador externo. Los proporciona el proveedor y pueden utilizarse para hacer referencia a este registro.
PartNumber
(Necesario, serie) Número de pieza de este artículo. Identifica de forma exclusiva un artículo de un determinado propietario. Junto con el identificador de propietario, se utiliza para recibir la clave primaria de la tabla ITEMSPC, como por ejemplo ITEMSPC_ID. Este campo es necesario y no puede ser nulo si no se especifica el campo CatalogEntryUniqueId en el archivo CSV.
ExpectedDate
(Indicación de fecha y hora) Fecha en que se espera recibir este inventario. El formato es el mismo que el especificado para el campo RACreateTime.
Cantidad
(Entero) Cantidad que se solicita del proveedor en este registro de inventario esperado.
RADetailComment
(Serie) Comentarios. El comentario no debe tener una longitud superior a 254.
CatEntryStoreIdentifier
(Serie) Este campo se utiliza en una tienda de sitios ampliados. Si el valor de CatalogEntry se define en una tienda con elementos de entrada de catálogo, este campo corresponde al identificador de la tienda con elementos de entrada de catálogo. Este identificador se utiliza para recuperar el catálogo entryOwner.
HCL Commerce EnterpriseEste campo es necesario si está utilizando una tienda de sitios ampliados.

Otros campos opcionales no incluidos en este ejemplo son:

StoreIdentifier
(Serie) Identificador de la tienda a la que pertenece este artículo. Esta columna puede añadirse en CSV si el artículo pertenece a una tienda que es distinta a la tienda que está definida en elementos BusinessContext de wc-dataload-env.xml. Si esta columna no se proporciona en el archivo CSV, se utiliza el valor de StoreIdentifier en el contexto de negocio.
FulfillmentCenterId
(Serie) El identificador del centro de despacho de pedidos al que pertenece este artículo. Esta columna puede añadirse a CSV si el artículo pertenece a un centro de despacho de pedidos, que es diferente al definido en la propiedad BusinessContext de wc-dataload-env.xml. Si esta columna no se proporciona en el archivo CSV, FulfillmentCenterName recupera el valor de fulfillmentCenterIdentifier. Si no se encuentra, se utiliza fulfillmentCenterIdentifier del contexto de negocio. Si no se especifica ni en el archivo CSV ni en el contexto de negocio, se utiliza fufillmentCenter predeterminado de la tienda predefinida.
FulfillmentCenterName
(Serie) El identificador del centro de despacho de pedidos al que pertenece este artículo. Esta columna se utiliza para recuperar el valor de fulfillmentCenterIdentifier.
OwnerId
(Largo) El identificador del catálogo entryOwner de este artículo. Si no se especifica en el archivo CSV, se recupera el propietario de la tienda con elementos de entrada de catálogo. Si no se encuentra, se recupera el propietario de la tienda actual. Si tampoco se encuentra, se utiliza el ownerId especificado en la propiedad BusinessContext de wc-dataload-env.xml.
CatalogEntryUniqueId
(Largo) Identificador de la entrada de catálogo de este artículo. Si este campo no se especifica en el archivo CSV, el número de pieza y el propietario de la entrada de catálogo recuperan el identificador de la entrada de catálogo.

Datos de contexto de negocio

El siguiente fragmento de código del archivo de configuración wc-dataload-env.XML proporciona los datos de contexto de negocio necesarios para cargar los datos:

<_config:BusinessContext storeIdentifier="AuroraESite">
<_config:property name="fulfillmentCenterName" value="Aurora Home"/>
<_config:property name="ownerId" value="7000000000000000102"/>
</_config:BusinessContext>
FulfillmentCenterId
(Serie) El identificador del centro de despacho de pedidos al que pertenece este artículo. Se utiliza si el identificador no puede recuperarse por FulfillmentCenterId o FulfillmentCenterName especificado en el archivo CSV.
FulfillmentCenterName
(Serie) El nombre del centro de despacho de pedidos al que pertenece este artículo. Se utiliza para recuperar fulfillmentCenterID, si fulfillmentCenterID no se recupera del archivo CSV o define en el contexto de negocio.
OwnerId
(Largo) Identificador del propietario de este artículo. Se utiliza si el propietario del elemento no se proporciona en el archivo CSV y no se puede recuperar por el identificador de tienda especificado.

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="VendorName" />
		<_config:column number="2" name="CreateTime" />
		<_config:column number="3" name="OrderDate" />
		<_config:column number="4" name="ClosedDate" />
		<_config:column number="5" name="OpenIndicator" />
		<_config:column number="6" name="ExternalId" /> 
		<_config:column number="7" name="PartNumber" />
		<_config:column number="8" name="ExpectedDate" />
		<_config:column number="9" name="Quantity" />
		<_config:column number="10" name="RADetailComment" /> 
		<_config:column number="11" name="CatEntryStoreIdentifier" />

	</_config:Data>
</_config:DataReader >

El siguiente fragmento de código del archivo de configuración de ejemplo muestra cómo correlacionar cada columna de datos del archivo CSV con una vía de acceso de esquema lógico de objeto de negocio. El atributo 'value' representa el nombre de la columna del archivo CSV, que se define en el fragmento de código de configuración anterior. Cada columna del archivo CSV debe tener una correlación con la vía de acceso de esquema lógico. Si los campos opcionales especificados más arriba están presentes en el archivo CSV, debe añadirse una correlación para los mismos. La vía de acceso del esquema lógico de correlación se especifica en la siguiente tabla.

<_config:DataMapping>
	<_config:mapping xpath="ExpectedInventoryRecordIdentifier/ExternalIdentifier/VendorName" value="VendorName" valueFrom="InputData" /> 
	<_config:mapping xpath="OrderDate" value="OrderDate" valueFrom="InputData" />
	<_config:mapping xpath="ExpectedInventoryRecordIdentifier/ExternalIdentifier/CreateDate" value="CreateTime" valueFrom="InputData" />
	<_config:mapping xpath="CloseDate" value="ClosedDate" valueFrom="InputData" />
	<_config:mapping xpath="OpenIndicator" value="OpenIndicator" valueFrom="InputData" />
	<_config:mapping xpath="ExternalId" value="ExternalId" valueFrom="InputData" />
	<_config:mapping xpath="ExpectedInventoryDetail[0]/ExpectedInventoryDetailIdentifier/ExternalIdentifier/CatalogEntryIdentifier/ExternalIdentifier/PartNumber" value="PartNumber" valueFrom="InputData" />
	<_config:mapping xpath="ExpectedInventoryDetail[0]/ExpectedInventoryDetailIdentifier/ExternalIdentifier/ExpectedDate" value="ExpectedDate" valueFrom="InputData" />
	<_config:mapping xpath="ExpectedInventoryDetail[0]/QuantityOrdered/value" value="Quantity" valueFrom="InputData" />
	<_config:mapping xpath="ExpectedInventoryDetail[0]/QuantityRemaining/value" value="Quantity" valueFrom="InputData" />
	<_config:mapping xpath="ExpectedInventoryDetail[0]/Comment" value="RADetailComment" valueFrom="InputData" />
	<_config:mapping xpath="InventoryReceiptIdentifier/ExternalIdentifier/CatalogEntryIdentifier/ExternalIdentifier/StoreIdentifier/ExternalIdentifier/NameIdentifier" value="CatEntryStoreIdentifier" />
</_config:DataMapping>

Mediador de objetos de negocio

El nombre de la clase de mediador es com.ibm.commerce.inventory.dataload.mediator.ExpectedInventoryMediator. El esquema lógico correspondiente es ExpectedInventoryRecord.xsd.

Nota: Cuando utiliza un mediador que se proporciona con HCL Commerce con el programa de utilidad de carga de datos, el programa de utilidad de carga de datos da por supuesto que está cargando datos para todas las columnas para un objeto de negocio. Si desea actualizar los datos solamente en columnas específicas, configure una lista de exclusión de columnas para el proceso de carga. Una lista de exclusión de columnas hace que el programa de utilidad de carga de datos ignore columnas concretas durante la operación de carga. Si no utiliza una lista de exclusión de columnas, el programa de utilidad actualiza todas las columnas de la fila de una fila de tabla de base de datos cuando el programa de utiliza actualiza la fila. Si el valor se establece en el archivo de entrada, el programa de utilidad puede sustituir el valor de columna existente por un valor predeterminado o establecer el valor en nulo. Para obtener más información, consulte Configuración de una lista de exclusión de columnas.