Ejemplo: Insertar y reemplazar inventario ATP

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

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 los datos de configuración de inventario ATP en la base de datos. Los datos pueden insertarse o sustituirse en la tabla BASEITEM, BASEITMDSC, STOREITEM, DISTARRANG, ITEMVERSN, ITEMSPC, VERSIONSPC.

Los datos de configuración del inventario ATP se cargan generalmente junto con los datos de entrada de catálogo en un único archivo CSV para la carga inicial, ya que cada dato de configuración de inventario ATP está relacionado con un registro de entrada de catálogo de la base de datos. En este caso, se utiliza CatalogEntryMediator para cargar datos.

En otro caso, los datos de entrada de catálogo se cargan inicialmente mediante CatalogEntryMediator sin datos de configuración de inventario ATP, por lo que en la base de datos se cargan los datos de configuración de inventario ATP predeterminados. Si el usuario desea modificar los datos de configuración de inventario ATP después de eso, FulfillmentPropertyMediator puede utilizarse para cargar únicamente datos de configuración de inventario ATP sin impacto en los datos de entrada de catálogo existentes.

Requisitos previos

Antes de ejecutar este ejemplo, asegúrese de que el sistema de inventario es ATP. Por ejemplo, compruebe la tabla STORE para asegurarse de que INVENTORYSYSTEM=-1

Archivo CSV con datos de configuración de inventario ATP de ejemplo

En este ejemplo, el origen de datos es un archivo CSV denominado ATPconfig.csv. El archivo contiene datos de configuración de inventario ATP de ejemplo. Cada columna está delimitada por una coma.

Archivo CSV con datos de ejemplo

PartNumber ParentPartNumber Tipo INVQuantityMeasure INVQuantityMultiple TrackingInventory BackOrderable ReleaseSeparately Creditable ForceBackorder ReturnNotDesired MinQTYForSplit PickingMethod Discontinued CatEntryStoreIdentifier
Example-PN-10001 Producto C62 2 N N Y N Y Y 10 L Y 10701
Example-PN-10002 Example-PN-10001 Artículo C62 2 N N Y N Y Y 10 L Y
Nota: Si los datos de entrada de catálogo no se cargan en la base de datos, los datos de configuración del inventario de ATP deben cargarse junto con los datos de entrada de catálogo en un archivo CSV de origen único, en cuyo caso esta tabla forma parte del archivo CSV para la carga de datos de entrada de catálogo. Si los datos de entrada de catálogo existían en la base de datos, los datos de configuración de inventario de ATP en la tabla anterior puede cargarse por separado.

Definiciones de columnas CSV y de elementos XML

PartNumber
(Necesario, serie) Número de referencia que identifica el número de pieza de la entrada de catálogo. Este número identifica de forma exclusiva una entrada de catálogo para un propietario determinado. Este campo es necesario y no puede ser nulo.
ParentPartNumber
(Serie) Número de pieza de un producto padre de este artículo. Se utiliza para recuperar el valor de BASEITEM_ID de la tabla BASEITEM, junto con el ID del propietario de este artículo.
Tipo
(Necesario, serie) Este campo define el tipo de entrada de catálogo. Los valores para Type son "Item", "Product", "Bundle" y "Package". Este campo es necesario y no puede ser nulo.
INVQuantityMeasure
(Serie) Unidad de medida para QUANTITYMULTIPLE. Por ejemplo, para representar un cuarto de pulgada, QUANTITYMULTIPLE sería 0.25, y QUANTITYMEASURE indicaría la unidad de medida (QTYUNIT) que representa pulgadas (normalmente INH). Se utiliza el valor predeterminado 'C62' si está vacío en el archivo CSV.
INVQuantityMultiple
(Doble) Los importes de este artículo base se miden en unidades integrales. QUANTITYMULTIPLE, junto con QUANTITYMEASURE, indica la cantidad que cada unidad integral representa. Por ejemplo, los tejidos pueden medirse en unidades integrales que representan un cuarto de pulgada. Se utiliza el valor predeterminado 1.0 si está vacío en el archivo CSV.
TrackingInventory
(Serie) Indica si se realiza un seguimiento del inventario. El valor puede ser:
  • N = no se hace un seguimiento del inventario.
  • Y = se hace un seguimiento del inventario.
  • E = se hace un seguimiento del inventario externamente.
Si no especifica este valor, el valor predeterminado es Y.
BackOrderable
(Serie) Indica si el artículo puede estar en espera. El valor puede ser:
  • N = los artículos no pueden estar en espera.
  • Y = los artículos pueden estar en espera.
Si no especifica este valor, el valor predeterminado es Y.
ReleaseSeparately
(Serie) Indica si el artículo de pedido puede despacharse por separado. El valor puede ser:
  • N = los artículos de pedido pueden despacharse junto con otros artículos de pedido.
  • Y = los artículos de pedido deben despacharse por separado (en sus propias cajas).
Si especifica este valor, el valor predeterminado es N.
Creditable
(Serie) Indica si el comerciante, sin una alteración temporal, puede emitir un crédito para este artículo. Este valor puede ser:
  • N = vendido tal cual.
  • Y = puede emitir abono
El requisito para la devolución de las mercancías se evalúa por separado. Si no especifica este valor, el valor predeterminado es Y.
ForceBackorder
(Serie) Indica si el inventario puede asignarse. Puede utilizarse para suspender temporalmente la asignación de artículos específicos correspondientes a este artículo base. El valor puede ser:
  • N = puede asignarse inventario (funcionamiento normal).
  • Y = no puede asignarse inventario, incluso si hay suficiente.
Si especifica este valor, el valor predeterminado es N.
ReturnNotDesired
(Serie) Indica si se desea la devolución del artículo, aunque el cliente esté dispuesto o pueda devolver el artículo. Por ejemplo, artículos que son comida perecedera. El valor puede ser:
  • N = la solicitud de crédito se evalúa en base a la intención del cliente de devolver el artículo. Se requiere al cliente que devuelva la mercancía.
  • Y = la solicitud de crédito se evalúa como si se esperara una devolución. No se requiere al cliente que devuelva la mercancía.
Si especifica este valor, el valor predeterminado es N.
MinQTYForSplit
(Entero) La cantidad desasignada mínima que debe quedar para dividir artículos del pedido en asignación de inventario. Si especifica este valor, el valor predeterminado es 0.
PickingMethod
(Serie) Determina el método en el que se recoge el inventario en esta distribución. El valor puede ser:
  • F = FIFO (primero en entrar, primero en salir) - el último inventario recibido.
  • L = LIFO (último en entrar, primero en salir) - el inventario recibido más recientemente.
Discontinued
(Serie) Indica si el artículo especificado se ha dejado de suministrar. El valor puede ser:
  • Y = el artículo se ha dejado de suministrar. Puede pedirse si hay suficientes existencias pero no puede ponerse en un pedido en espera.
  • N = el artículo está activo y puede ponerse en espera si se han agotado las existencias del producto.
CatEntryStoreIdentifier
(Serie) Este identificador 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 el ejemplo:

CatalogEntryUniqueId
(Largo) Identificador de la entrada de catálogo. Se utiliza para recuperar un registro de una tabla CATENTRY, para luego poder obtener BASEITEM_ID, ITEMSPC_ID y CATENTTYPE_ID del registro. Si este campo no se especifica en el archivo CSV, se utiliza PartNumber para recuperar estos CD.
ParentCatalogEntryUniqueId
(Largo) Identificador de la entrada de catálogo padre. Se utiliza para recuperar el valor de BASEITEM_ID que corresponde a la entrada de catálogo padre. Si este campo no se especifica en el archivo CSV, ParentPartNumber recupera BASEITEM_ID.
eliminar
(Serie) Indica si debe eliminarse el registro. Este campo es efectivo cuando el valor de dataLoadMode es "replace". Si el valor de este campo es deleteValue, se suprime el registro correspondiente. El valor predeterminado de deleteValue es 1, y deleteValue puede configurarse bajo el elemento <DataMapping> en el archivo BusinessObjectConfigFile.

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" langId="-1" >
</_config:BusinessContext>
storeIdentifier
(Serie) Identificador de la tienda a la que pertenece la entrada de catálogo.
langId
(Int) El identificador de un idioma que se utiliza para cargar datos en BASEITEMDSC. El valor predeterminado es "-1".

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. Si los datos de configuración de inventario de ATP se carga junto con los datos de entrada de catálogo en un archivo CSV de origen único, la siguiente correlación debe incorporarse en el archivo de configuración. Si solo se cargan datos de configuración de inventario ATP, debe definirse la siguiente información de correlación en un archivo de configuración individual.

<_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 >

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. Cada columna del archivo CSV debe tener una correlación con la vía de acceso de esquema lógico.


<_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>

Mediador de objetos de negocio

Si los datos de configuración de inventario de ATP de este ejemplo se cargan junto con los datos de entrada de catálogo, el nombre de la clase de mediador es com.ibm.commerce.catalog.dataload.mediator.CatalogEntryMediator. Si los datos de configuración de inventario ATP se cargan por separado, el nombre de la clase de mediador es com.ibm.commerce.catalog.dataload.mediator.FulfillmentPropertyMediator. El esquema lógico correspondiente es CatalogEntry.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.