Deprecated feature

URL OrderItemAdd

Añadir artículos o productos a la lista de artículos que se van a enviar.

URL

OrderItemAdd

Mandato de controlador

com.ibm.commerce.orderitems.commands.OrderItemAddCmd

Clase de implementación

com.ibm.commerce.orderitems.commands.OrderItemAddCmdImpl

Mandatos llamados

Estructura de URL

http://host_name/path/
El nombre completo de Transaction server y la vía de acceso de configuración.

Este diagrama visualiza la estructura para el URL OrderItemAdd.

Valores de parámetros

forUser
El ID de conexión del usuario en cuyo nombre se ejecuta el mandato. Este parámetro solo puede especificarlo una persona que tenga autorización para procesar pedidos.
forUserId
Igual que forUser, pero el usuario se identifica mediante el ID de usuario interno que aparece en la tabla USERS.
langId
Establece o restablece el idioma preferido durante la sesión. Los idiomas soportados para una tienda se encuentran en la tabla STORELANG.
URL
Se necesita: El URL al que se debe llamar cuando el mandato se completa satisfactoriamente.
storeId
Se necesita: El número de referencia de la tienda, que es obligatorio porque no puede comprar desde un centro comercial.
catEntryId_i
Se necesita: El número de referencia de los artículos que se han de poner en el pedido. Este parámetro es obligatorio si el cliente no tiene un carro de la compra. No es obligatorio si ya existe un pedido de cliente.
partNumber_i
Si se especifica este parámetro, se hace caso omiso del parámetro catEntryId. Los parámetros partNumber y memberId se utilizan para determinar un catentry_id, seleccionando PARTNUMBER y MEMBER_ID en la tabla CATENTRY. Este mandato aplica el número de referencia al valor de catEntryId.
expandConfigurationId_ i
Si se especifica este parámetro, añadir un artículo de pedido para cada componente identificado por este parámetro cuyo atributo orderItemId sea nulo.
memberId_i
El identificador del miembro que es el propietario del catálogo donde se formalizará el pedido. Para la compatibilidad con las versiones anteriores de HCL Commerce, establezca memberID en *storeOwner. Este valor especifica el memberID del propietario del objeto de tienda actual.
attrName_i
Cualquier atributo diferenciado que se defina para el artículo. Este parámetro puede repetirse.
attrValue_i
El valor del atributo especificado en attrName. Este parámetro puede repetirse.
quantity_i
Se necesita: La cantidad del artículo que se ha de añadir al pedido.
UOM_i
La unidad de medida para quantity_i. Este valor debe coincidir con una de las claves primarias de la tabla QTYUNIT. Cuando no se especifica, se utiliza el valor de la columna QUANTITYMEASURE de la tabla CATENTSHIP para la fila con el mismo CATENTRY_ID que el utilizar. El valor del parámetro quantity_i se multiplica por el valor de la columna NOMINALQUANTITY de la misma fila en la tabla CATENTSHIP.
addressId_i
El número de referencia de la dirección a la que se enviarán los productos y artículos.
shipModeId_i
El número de referencia de la modalidad de envío que se ha de utilizar para el producto o artículo.
comentario_i
Un comentario que se incluirá con los artículos de pedido creados o actualizados.
contractId_i
El identificador del contrato que rige el pedido al que se va a añadir el artículo. Hay un contrato predeterminado para cada tienda pero se pueden configurar otros. Este parámetro puede repetirse.
field1_i
Un valor de número entero reservado para la tienda.
field2_i
Un valor de texto reservado para la tienda. Este parámetro acepta un máximo de 254 caracteres.
ID_oferta_i
El identificador de la oferta que rige el pedido al que se va a añadir el artículo. Este parámetro puede repetirse.
orderId
El identificador del pedido al que se va a añadir el artículo. Este parámetro puede repetirse.
outOrderName
Especifica los nombres de los números de referencia de los pedidos creados o actualizados que se han de añadir al URL de redirección. Utilice este parámetro y outOrderItemName cuando encadene mandatos. Este parámetro puede repetirse.
outOrderItemName
Los nombres de los números de referencia de los artículos de pedido creados o actualizados que se han de añadir al URL de redirección. Este parámetro puede repetirse.
listId
El ID de la lista de artículos de interés. Cuando se especifica este parámetro, el mandato OrderItemAdd crea un pedido que contiene todos los artículos de la lista.
orderDesc
Especifica la descripción para un nuevo pedido creado por este mandato.
continue
Controla si la adición de artículos de pedido continúa cuando uno o más de los artículos de pedido no se pueden crear o actualizar. El valor 0 termina y retrotrae la ejecución si un artículo de pedido no se puede crear o actualizar en el pedido de destino. El valor 1 ignora la operación de creación o actualización para ese artículo de pedido y continúa la ejecución. El valor predeterminado es 0.
orderComment
Establece el comentario del pedido, si se especifica.
remerge
Una lista de los artículos de pedido que deben fusionarse con otros artículos de pedido del mismo pedido y con el mismo atributo correlationGroup, si es posible. Los artículos de pedido no se fusionan a menos que su estado de inventario (InventoryStatus) sea "NALC", o a menos que los especifique uno o más de los parámetros allocate, backorder y reverse. Este parámetro puede repetirse.
merge
Una lista de los artículos de pedido que deben fusionarse con otros artículos de pedido del mismo pedido si es posible, independientemente de sus atributos correlationGroup. Los artículos de pedido no se fusionan a menos que su estado de inventario (InventoryStatus) sea "NALC", o a menos que los especifique uno o más de los parámetros allocate, backorder y reverse. Este parámetro puede repetirse.
check
Una lista de artículos de pedido que debe comprobar el mandato de tarea CheckInventory. Este parámetro puede repetirse.
allocate
Una lista de artículos de pedido que deben asignarse del inventario existente mediante el mandato de tarea AllocateExistingInventory. Este parámetro puede repetirse.
backorder
Una lista de artículos de pedido que deben ponerse en espera mediante el mandato de tarea AllocateExpectedInventory. Si el mismo artículo de pedido lo especifica tanto el parámetro allocate como el parámetro backorder, no se pone en espera si puede asignarse. Este parámetro puede repetirse.
reverse
Una lista de artículos de pedido cuyas asignaciones deben liberarse (desasignarse del inventario existente o esperado según corresponda) llamando a los mandatos de tarea DeallocateExistingInventory o DeallocateExpectedInventory. Este parámetro puede repetirse.
configurationId_i
Si el artículo de pedido representa un kit dinámico configurado, este valor representa el ID de configuración. Este parámetro puede repetirse.
correlationGroup_i
El grupo con el que este artículo de pedido está relacionado. Normalmente, correlationGroup es igual a OrderItemID. Los artículos de pedido que tienen el mismo valor de atributo correlationGroup representan el mismo objeto que el cliente quiere comprar. Se puede especificar y propagar un valor para correlationGroup cuando los artículos de pedido están separados (por ejemplo, por centro de despacho de pedidos) cuando se asigna el inventario o cuando se recibe un presupuesto para un artículo de pedido. Cuando se divide un artículo de pedido durante la asignación de inventario, el artículo de pedido recién creado hereda el valor correlationGroup del artículo de pedido original. En una situación de presupuesto, el artículo de pedido hereda el valor correlationGroup del artículo de pedido correspondiente del pedido padre.
expandConfigurationId_i
Añadir varios artículos de pedido, uno para cada componente identificado por expandConfigurationId_ i cuyo atributo orderItemId sea nulo.
orderComment
Establece el atributo de comentario del pedido.
isExpedited_i
El valor predeterminado es N. Si el valor se establece en Y, el orderitem se marca como EXPEDITED.
calculateOrder
El valor predeterminado es 0. Si el valor es 1, se llama a OrderCalculateCmd para calcular los cargos para el pedido. Si el valor es 0, no se calculan cargos del pedido en este mandato.
requestedShipDate_i
Marca la fecha de envío solicitada para un artículo de pedido.
shipInstructions_i
Especifica las instrucciones de envío para una shipmode.
shipChargTypeId_i
Resulta en la política de costes de envío, cargo por empresa de transportes y cargo por comerciante.
shipCarrAccntNum_i
El número de cuenta de la empresa de transportes
externalId_i
El identificador externo de registro de regalo exclusivo.
giftMessage_i
Un mensaje que proporciona el obsequiante al registrante de regalos.
shipToRegistrant_i
Especifica en lugar en el que se deben entregar los regalos. El valor 1 indica que los regalos se envían directamente al registrante de regalos, utilizando la dirección que se proporciona durante la creación del perfil de registro de regalos.
doPrice
Especifica si se deben realizar o no las subtareas de cálculo de precios. Establézcalo para que realice las tareas de precios (Y) o no (N). Desactivar estas tareas puede dar como resultado un mejor rendimiento, pero es posible que los usuarios no obtengan el precio más reciente o la autorización para el producto cuando se produzcan los cambios.
doInventory
Especifica si el mandato debe realizar las subtareas de cálculo de inventario. Establézcalo para que realice las tareas de precios (Y) o no (N). Desactivar estas tareas puede dar como resultado un mejor rendimiento, pero es posible que los usuarios no obtengan el mejor nivel de inventario actual cuando se produzcan los cambios.

Para obtener más información sobre los mandatos de tarea a los que llama el URL OrderItemAdd, consulte OrderItemBaseCmdImpl.

ATP inventory: Los parámetros remerge, merge, check, allocate, backorder y reverse solo son aplicables si el inventario ATP está habilitado (consulte la columna STORE.INVENTORYSYSTEM en la tabla STORE). Representan listas de artículos de pedido que se pasan al mandato de tarea DoInventoryAction. Este mandato invoca AllocateInventory, que llama a CheckInventoryAvailability, AllocateExistingInventory, AllocateExpectedInventory, DeallocateExistingInventory y DeallocateExpectedInventory, como se especifica en la lista siguiente. Además, estos parámetros aceptan abreviaturas de artículo de pedido, las cuales se describen en la ayuda para los URL del subsistema de gestión de pedidos.
Valores predeterminados para los parámetros de ATP:
  • remerge=*n
  • merge=*n
  • check=***
  • allocate=*n
  • backorder=*n
  • reverse=*n
  • Si orderitem no está asociado con un registro de regalo y shipToRegistrant_i se establece en 1, se genera una excepción.

Varios artículos en una transacción

El mandato puede manejar múltiples artículos en una transacción. Los múltiples artículos se especifican utilizando el grupo de enumeración 'i'. Si desea actualizar varios artículos de pedido, puede especificar orderItemId_i como parámetros. Por ejemplo, i puede ser 1, 2 o 3. Para obtener más información sobre el manejo de varios artículos, consulte OrderItemAddCmd.

Ejemplo 1

En el ejemplo siguiente se añaden tres unidades del producto con número de referencia 24 a cada uno de los pedidos pendientes actuales del cliente que se han creado bajo la tienda que contiene la entrada de catálogo 24. En el ejemplo se indica que se deben enviar a la dirección con número de referencia de dirección 2 y, a continuación, llama al mandato OrderItemDisplay.


http://myhostname/webapp/wcs/stores/servlet/OrderItemAdd?addressId=2
    
&URL=/webapp/wcs/stores/servlet/OrderItemDisplay&catEntryId=24&quantity=3

Ejemplo 2

El ejemplo siguiente añade diez unidades de la entrada de catálogo con número de referencia 2 al nuevo pedido del cliente actual. El parámetro orderId se añade al URL de redirección; su valor es el número de referencia del pedido creado, y se llama al mandato OrderItemDisplay.


    
http://myhostname/webapp/wcs/stores/servlet/OrderItemAdd?catEntryId=2&quantity=10
    
&orderId=**&outOrderName=orderId&URL=/webapp/wcs/stores/servlet/OrderItemDisplay

Ejemplo 3

El ejemplo siguiente añade un paquete compuesto cuyos componentes son:
  • Artículo 312200001
  • Artículo 312200301
  • Producto 312200200 con atributo 312200201
    
http://myhostname/webapp/wcs/stores/servlet/OrderItemAdd?catEntryId_1=312200001
    &quantity_1=1&shipModeId_1=1&catEntryId_2=312200301&quantity_2=1
    &shipModeId_2=1&catEntryId_3=312200200&attrName_3=312200201
    &attrValue_3=Value+2200200+1&quantity_3=1&shipModeId_3=1&URL=OrderItemDisplay

Ejemplo 4

El ejemplo siguiente añade dos productos con varios atributos a un carro de la compra. La primera entrada de catálogo tiene dos atributos y la segunda entrada de catálogo tiene tres atributos:

http://myhostname/webapp/wcs/stores/servlet/OrderItemAdd?catEntryId_1=111&attrName_1=1
&attrValue_1=a&attrName_1=2&attrValue_1=b&quantity_1=1&catEntryId_2=222&attrName_2=21
&attrValue_2=aa&attrName_2=22&attrValue_2=bb&attrName_2=33&attrValue_2=cc&quantity_2=1
&URL=OrderItemDisplay 

Comportamiento

Comprobar si el pedido está bloqueado por el CSR actual. Si el pedido no está bloqueado y ha sido llamado por un CSR, o si está bloqueado por otro CSR, se emite una excepción.

Llamar a ResolveSkuCmd (mandato de catálogo) para resolver el código de artículo y comprobar si la entrada de catálogo se puede adquirir en esta tienda.

Llamar a ResolveOrdersCmd para resolver los ID de pedido. Si no se resuelve ningún pedido, entonces llamar a OrderCreateCmd para crear un pedido.

Crear un artículo de pedido con la información si se pasa: catEntryId/partNumber, requestedShipDate, isExpedited, quantity, correlationGroup, comments, orderDesc, field1, field2 y todos los demás parámetros.

Copiar los artículos de la lista de deseos especificados en artículos de pedido

Actualizar comments, description y shipAsComplete para el pedido

Para todos los nuevos artículos:
  • Llamar a ResolveOrderItemPriceCmd para calcular el mejor precio y actualizar el total del pedido
  • Pasar el parámetro doPrice a ResolveOrderItemPriceCmd para controlar si los artículos de pedido pueden saltarse de nuevo la fijación de precios
  • Llamar a UpdateShippingAddressCmd para actualizar la dirección de envío
  • Actualizar la modalidad de envío
  • Llamar a ValidateTradingPaymentCmd para validar que el método de pago es compatible con el acuerdo comercial
  • Si doInventory = Y, llamar a DoInventoryActionCmd para actualizar los centros de despacho de pedidos y comprobar si hay inventario disponible
  • Llamar a UpdateShipInfoCmd para actualizar las instrucciones de envío, el número de cuenta de envío y el tipo de cargo de envío
  • Llamar a RaiseOrderEventCmd para generar un suceso ORDERITEM_CREATION_EVENT u ORDERITEM_UPDATE_EVENT
  • Si el distintivo calculateOrder está establecido:
    • Llamar a OrderCalculateCmd para que realice cálculos que se basan en los identificadores de uso de cálculo (calUsageId) que se han pasado
  • Llamar a ExtendOrderItemProcessCmd para ejecutar cualquier lógica de personalización
Nota: Si tiene previsto integrar HCL Commerce e IBM Order Management Service, se espera que la asignación de inventario utilice el modelo de inventario Dom. Si la asignación de inventario utiliza un inventario no ATP e integra con el servicio de gestión de pedidos de IBM, la asignación de inventario se puede cambiar a un inventario DOM dentro HCL Commerce de como parte de la configuración de la integración. Cuando se produce este cambio, ya no se evita que los compradores añadan artículos de existencias al carro de la compra. Sin embargo, con la integración, los compradores no pueden someter su carro para el proceso de pedidos hasta que la asignación de inventario para el artículo agotado se emita desde el servicio de gestión de pedidos de IBM.

Puede personalizar el proceso añadir al carro de la compra para evitar que los compradores añadan artículos de stock a sus carros cuando la tienda utilice un modelo de inventario DOM. El proceso añadir al carro de la compra cuando se utiliza un modelo de inventario DOM incluye un mandato vacío (DOMValidateInventoryStatusCmd) que puede utilizar en una personalización para comprobar el estado del inventario para un artículo en la columna de base de datos ORDERITEMS.INVENTORYSTATUS. Si el inventario no está asignado (valor de NALC) tiene la implementación del mandato, genere una excepción para evitar que el artículo se añada al carro de la compra.

Condiciones de excepción

Dependiendo del error se llamará a diferentes tareas de excepción.

  • Si algún valor de parámetro no es válido, el mandato genera una excepción ECApplicationException con el mensaje: _ERR_INVALID_INPUT y vista de error: InvalidInputErrorView.
  • Si se especifica el partNumber y no se puede encontrar en el catálogo, el mandato genera una excepción ECApplicationException con el mensaje: _ERR_PROD_NOT_EXISTING y vista de error: badPartNumberErrorView.
  • También se genera la excepción ECApplicationException si se encuentran los siguientes errores:
    1. Los acuerdos comerciales de entrada no son válidos o elegibles para utilizarlos.
    2. Los acuerdos comerciales utilizados en el pedido aplican métodos de pago incompatibles.
    3. No se pueden recuperar listas de precios.
  • Al comprobar el inventario para una tienda no ATP, si hay suficiente inventario disponible, la comprobación de inventario es satisfactoria. De lo contrario, la comprobación falla. Si la comprobación falla, se genera excepción ecapplicationexception desde ResolveFulfillmentCenterCmd con el mensaje: _API_CANT_RESOLVE_FFMCENTER y vista de error: ResolveFulfillmentCenterErrorView, a menos que el parámetro continue se especifique como 1.

    Al comprobar inventario para una tienda ATP, la comprobación de inventario es satisfactoria si el inventario actual o el inventario esperado es suficiente. En los casos en que ambos inventarios sean insuficientes y el artículo base no se pueda poner en espera en esta tienda (consulte la tabla STOREITEM), o la especificación de artículo se haya discontinuado (consulte la tabla ITEMSPC), la comprobación de inventario falla y se genera la excepción ECApplicationException desde CheckInventoryAvailabilityCmd con el mensaje: _API_BAD_INV y vista de error: CheckInventoryErrorView.

  • Si hay más de un objeto CatalogEntry, el número de pieza es ambiguo. Se genera la excepción ECApplicationException que especifica el mensaje de error ERR_PROD_NOT_EXISTING. Los pares nombre-valor erróneos se pasan como se indica a continuación:
    • multiplePartNumberList especifica los números de pieza ambiguos
    • multiplePartNumberQuantityList especifica las cantidades solicitadas correspondientes, una para cada número de pieza ambiguo
    • multiplePartNumberCatalogEntriesList especifica los vectores de los identificadores CatalogEntry, uno para cada número de pieza ambiguo. Cada vector contiene una lista de identificadores CatalogEntry de objetos CatalogEntry que tienen el número de pieza ambiguo.
  • Si un orderitem no está asociado con un registro de regalos y shipToRegistrant_ i se establece en 1, se genera una excepción.