Deprecated feature

URL OrderItemUpdate

El URL OrderItemUpdate actualiza artículos de pedido en un pedido existente.

URL

OrderItemUpdate

Mandato de controlador

com.ibm.commerce.orderitems.commands.OrderItemUpdateCmd

Clase de implementación

com.ibm.commerce.orderitems.commands.OrderItemUpdateCmdImpl

Mandatos llamados

Captura de pantalla
Descripción

Estructura de URL

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

Este diagrama muestra la estructura para el URL OrderItemUpdate.

Valores de parámetros

Los parámetros que no se indican como obligatorios son opcionales. Los parámetros opcionales son para fines de personalización.

forUser
El ID de inicio de sesión del usuario en cuyo nombre se ejecutará el mandato; este parámetro solo lo puede especificar una persona con 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 el tiempo que dura 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.
orderItemId_ i
El identificador del artículo de pedido que se ha de actualizar. Si se especifica, se hace caso omiso los parámetros catEntryId_i y partNumber_i (para el mismo valor de i).
storeId
El identificador de la tienda, que solo es obligatorio si desea añadir productos o artículos a los pedidos. El ID de tienda (storeId) es necesario para comprobar si el artículo está disponible en la tienda. Si especifica el ID de tienda una vez, se almacena en la memoria caché para uso futuro.
catEntryId_ i
El identificador de una entrada de catálogo que se utilizará para crear un nuevo artículo de pedido.
partNumber_ i
Si se especifica partNumber, se hace caso omiso del parámetro catEntryId_i. Cuando los parámetros partNumber_i y memberId_i se especifican, determinan una entrada de catálogo seleccionando las columnas PARTNUMBER y MEMBER_ID de la tabla CATENTRY. Este mandato se comporta como si el identificador de esa entrada de catálogo se hubiera especificado como el valor de catEntryId_i.
expandConfigurationId_ i
Si se especifica, 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. Esto 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
La cantidad del artículo que se ha de añadir al pedido. Este parámetro es obligatorio cuando se especifica catEntryId_i o partNumber_id. Es opcional cuando se especifica OrderItemId_i.
UOM_ i
La unidad de medida para quantity_i. Este valor debería coincidir una de las claves primarias en 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 artículo de pedido, y 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 identificador 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.
comment_ i
Un comentario que se incluirá con los artículos de pedido creados o actualizados.
contractId_ i
El ID del contrato asociado con el pedido. 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.
offerId_ i
El ID de la oferta asociada con el pedido. Este parámetro puede repetirse.
orderId
Es un identificador generado internamente que especifica cero o más pedidos que se deben actualizar, utilizando números de referencia de pedido o una de las abreviaturas especiales "**", "." "*", ".t", "*t". Consulte las Abreviaturas de pedidos para ver una descripción de estas abreviaturas. Si no existe ningún pedido pendiente para una tienda determinada, se creará un pedido pendiente nuevo. Si se especifica más de un pedido pendiente, se crearán o actualizarán entradas de artículo de pedido para cada uno de los pedidos especificados.
outOrderName
Especifica los nombres de pares nombre-valor que se han de añadir al URL de redirección. Los valores de las parejas nombre-valor añadidas son los números de referencia de los pedidos creados o actualizados.
outOrderItemName
Especifica los nombres de pares nombre-valor que se han de añadir al URL de redirección. Los valores de las parejas nombre-valor añadidas son los números de referencia de los artículos de pedido creados o actualizados.
listId
El ID de la lista de artículos de interés. Cuando se especifica este parámetro, el mandato OrderItemUpdate creará un nuevo pedido que contendrá todos los artículos de la lista. Puede utilizar una de las abreviaturas especiales "." y "*". Consulte las Abreviaturas de catálogos para obtener una descripción.
orderDesc
Especifica la descripción para el nuevo pedido creado por este mandato.
continue
Controla si la actualización de artículos de pedido continúa cuando uno o más de los artículos 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 pasa por alto 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. Este parámetro puede repetirse.
check
Una lista de artículos de pedido que debe comprobar el mandato de tarea CheckInventoryAvailability. Este parámetro puede repetirse.
allocate
Una lista de artículos de pedido que deben asignarse del inventario existente. Este parámetro puede repetirse.
backorder
Una lista de artículos de pedido que deben asignarse del inventario esperado si no se han asignado del inventario existente. Este parámetro puede repetirse.
reverse
Una lista de artículos de pedido cuyas asignaciones deben liberarse (es decir, desasignarse del inventario existente o esperado según corresponda). Este parámetro puede repetirse.
configurationId_ i
Si el artículo de pedido representa un kit dinámico configurado, éste es el ID de configuración. Este parámetro puede repetirse.
continue
Si no se puede crear un artículo de pedido, 0 termina la ejecución y retrotrae y 1 ignora la operación de creación o actualización para ese artículo de pedido y continúa la ejecución.
expandConfigurationId_ i
Añade varios artículos de pedido, uno para cada componente identificado por expandConfigurationId_ i cuyo atributo orderItemId sea nulo.
isExpedited_i
El valor predeterminado para este parámetro es N. Si es Y, orderitem se marcará como EXPEDITED.
calculateOrder
El valor predeterminado para este parámetro es 0. Si es 1, se llamará a OrderCalculateCmd para calcular los cargos del pedido.
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 modalidad de envío.
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 donante del regalo al que registra el regalo.
shipToRegistrant_i
Especifica en lugar en el que se deben entregar los regalos. El valor 1 indica que los regalos deben enviarse directamente al que registra los regalos, utilizando la dirección proporcionada durante la creación del perfil de registro del regalo.
doPrice
Especifica si el mandato debe realizar 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.
Nota: Inventario ATP: 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 pasarán a DoInventoryActionCmd, que invoca el mandato de tarea AllocateInventory, que llama a los mandatos de tarea CheckInventoryAvailability, AllocateExistingInventory, AllocateExpectedInventory, DeallocateExistingInventory y DeallocateExpectedInventory, tal como se especifica más abajo. 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.

Los valores predeterminados de los parámetros de ATP son los siguientes:

  • remerge=*n
  • merge=*n
  • check=***
  • allocate=*n
  • backorder=*n
  • reverse=*n

Ejemplo 1

El ejemplo siguiente crea un registro de envío para una unidad de una entrada de catálogo que tiene el número de referencia 18 y un atributo de monograma CJK. Este registro de envío se añade a los pedidos pendientes actuales del cliente. Cuando el mandato se completa, se llama al mandato OrderItemDisplay.


   
http://myhostname/webapp/wcs/stores/servlet/OrderItemUpdate?addressId=2
   
&catEntryId=18&attrName=monogram&attrValue=CJK&quantity=1&shipModeId=4
    &URL=OrderItemDisplay

Ejemplo 2

El ejemplo siguiente añade diez unidades de la entrada de catálogo número 2 a todos los pedidos pendientes actuales del cliente. Cuando el mandato se completa, se llama al mandato OrderItemDisplay.


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

Ejemplo 3

El ejemplo siguiente actualiza tres ID de artículo de pedido:


   
http://myhostname/webapp/wcs/stores/servlet/OrderItemUpdate?URL=OrderItemDisplay
   
&quantity_1=2&quantity_2=7&orderItemId_1=117&orderItemId_2=118
    &orderItemId_3=113&quantity_3=2

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.

Si se pasa orderItemId:
  • Actualizar artículo de pedido existente con cualquiera de la información siguiente que se pasa: requestedShipDate, isExpedited, tieCode, quantity, correlationGroup, itemSpecId, comments, description, field1, field2
  • Registrar el nuevo artículo de pedido como modificado.
  • Si la cantidad es 0, eliminar el artículo de pedido y llamar a DoInventoryActionCmd para anular la actualización de inventario
  • Si el artículo de pedido es un kit o un paquete, llamar a AddOrderItemComponentsCmd para actualizar las listas de componentes
De lo contrario, si se pasa orderId:
  • Actualizar la información de envío a nivel de pedido:
    • Para todos los artículos de pedido en el pedido:
      • Actualizar la fecha de envío solicitada (requestedShipDate) si se ha pasado para el artículo de pedido
      • Registrar el nuevo artículo de pedido como modificado.
        Notes:
        • Cuando se pasan ambos parámetros, shipModeId y addressId, shipModeId se actualiza solo si el addressId que se ha pasado es idéntico al addessId existente del artículo de pedido. Si los valores de addressId no son idénticos, shipModeId no se actualiza.
        • Cuando solo se pasa uno de los dos parámetros, shipModeId o addressId, se actualiza shipModeId o addressId según corresponda.

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

Actualizar los comentarios, la descripción y el parámetro shipAsComplete para el pedido

Para todos los artículos actualizados:
  • 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 el cálculo de precio
  • 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 los cálculos basándose en los identificadores de uso de cálculo (calUsageId) que se han pasado
  • Llamar a ExtendOrderItemProcessCmd para ejecutar cualquier lógica de personalización

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.
  • La excepción ECApplicationException también se genera si se encuentran los siguientes errores:
    1. Los acuerdos comerciales de entrada no son válidos o elegibles para utilizarlos.
    2. Los acuerdos comerciales que se utilizan 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 de este tipo, el número de pieza es ambiguo. Se genera la excepción ECApplicationException que especifica el mensaje de error ERR_PROD_NOT_EXISTING. Pase las parejas de nombre-valor erróneas 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.