Mandato OrderItemUpdate
Este mandato puede hacer todo lo que hace el mandato OrderItemAdd
(es decir, añadir productos y artículos a uno o más pedidos de la lista de pedidos). También
puede actualizar artículos de pedido de un pedido existente.

Valores de los parámetros
- http://nombre_sistpral/vía de acceso/
- (Obligatorio) El nombre totalmente calificado del servidor WebSphere Commerce
y la vía de acceso de configuración.
- forUser
- El ID de conexión del usuario en cuyo nombre se ejecutará el
mandato; este parámetro sólo lo puede especificar una persona con
autorización para procesar pedidos.
- forUserId
- Igual que forUser, pero identifica al usuario mediante el ID de usuario interno, como se encuentra en la
tabla USERS.
- langId
- Establece o restaura el idioma preferido para la duración de la sesión;
los idiomas soportados para una tienda se encuentran en la tabla
STORELANG.
- URL
- (Obligatorio) 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 sólo 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
antememoria 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, 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.
- memberId_i
- El identificador del miembro que es el propietario del catálogo donde se formalizará el pedido.
- attrName_i
- Cualquier atributo diferenciado que se defina para el artículo.
- attrValue_i
- El valor del atributo especificado en attrName.
- 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 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 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.
- 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.
- 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 obtener una descripción de estas abreviaturas. Si no hay 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 parejas 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 parejas 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 contenga 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.
- 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 InventoryStatus sea "NALC", o a menos
que los especifique uno o más de los parámetros allocate, backorder y reverse.
- 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.
- check
- Una lista de artículos de pedido que debe comprobar el mandato de tarea CheckInventoryAvailability.
- allocate
- Una lista de artículos de pedido que deben asignarse del inventario existente.
- backorder
- Una lista de artículos de pedido que deben asignarse del inventario esperado si
no se han asignado del inventario existente.
- reverse
- Una lista de artículos de pedido cuyas asignaciones deben liberarse (es decir,
desasignarse del inventario existente o esperado según corresponda).
- configurationId_i
- Si el artículo de pedido representa un kit dinámico configurado, éste es el ID de configuración.
Nota:
Los parámetros remerge, merge, check, allocate, backorder y reverse
sólo son aplicables si el inventario ATP está habilitado (consulte la columna ALLOCATIONGOODFOR
de la tabla STORE). Representan listas de artículos de pedido que se pasarán al 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 detallan en la ayuda de
los Mandatos del subsistema de pedidos.
Los valores por omisión para 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
con el número de referencia 18 y tiene 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://misistpral/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://misistpral/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://misistpral/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
- El mandato llama a ResolveOrdersCmd
con el parámetro de entrada orderId para obtener una lista de pedidos. Si no se especifica el
parámetro orderId, el valor por omisión es "." (los pedidos pendientes actuales).
- El mandato efectúa lo siguiente para cada grupo de enumeración 'i' de parámetros:
- Si se especifica el parámetro orderItemId_i, se hace caso omiso de los parámetros
partNumber_i y catEntryId_i. El mandato intenta actualizar el artículo de pedido.
- Si se especifica el parámetro partNumber_i, se hace caso omiso del parámetro catEntryId_i. El
mandato utiliza partNumber_i con el parámetro opcional memberId_i para buscar la entrada
de catálogo. Si no se especifica memberId_i, el ID de miembro por omisión es el ID
de miembro del propietario de la tienda.
- Si no se especifica el parámetro orderItemId_i y se especifica el parámetro partNumber_i o
el parámetro catEntryId_i, el mandato intenta crear un nuevo artículo de pedido e insertarlo
en todos los pedidos resueltos. Si la lista de pedidos resueltos está vacía, se creará
un nuevo pedido pendiente.
- Cuando se crea un nuevo pedido, el ID de miembro del nuevo pedido se establece en el
usuario actual del contexto del mandato y la moneda también obtiene de una de las que hay
en el contexto del mandato.
- Cuando se crea un nuevo artículo de pedido, el parámetro quantity_i es obligatorio y
debe ser un número positivo. El ID de miembro y la moneda del artículo de pedido se
establecen para que sean igual que el ID de miembro y la moneda del pedido.
El parámetro storeId también es obligatorio.
- Si el mismo grupo de enumeración 'i' se especifica más de una vez, sólo uno es efectivo,
los demás no se toman en cuenta.
- Al actualizar el artículo de pedido existente cuando se especifica orderItemId_i o al
crear un nuevo artículo de pedido cuando se especifica partNumber_i o catEntryId_i, el mandato
utiliza el resto de parámetros para actualizar el artículo de pedido.
- Si no se especifica el parámetro addressId_i, para un usuario registrado, el valor
por omisión será el valor de addressId en la tabla ADDRESS (donde la columna STATUS
tiene el valor P y el valor de la columna NICKNAME es el ID de conexión del usuario
obtenido de la columna LOGONID de la tabla USERREG. Si no se puede encontrar la
dirección en la tabla ADDRESS, address_id será NULL para el artículo de pedido
en la tabla ORDERITEMS.
- Si quantity_i es cero, el artículo de pedido se elimina de los pedidos.
- Si no se especifica el parámetro shipModeId_i, el valor por omisión se obtiene
de la tabla STOREDEF.
- Llama al mandato de tarea GetContractUnitPriceCmd para obtener el precio de
contrato del producto o artículo utilizando los acuerdos comerciales (contratos)
especificados o todos los acuerdos comerciales (contratos) para los que
el miembro del pedido tenga autorización, excepto para los artículos de pedido que
se han generado o cuyo precio se ha entrado manualmente (reemplazado por el
administrador; consulte la columna PREPAREFLAGS de la tabla ODERITEMS
para más detalles). Todos los acuerdos comerciales (contratos) de entrada a utilizar
se comprobarán para verificar que utilizan métodos de pago compatibles.
La moneda siempre es la misma que la moneda del pedido.
- Para los pedidos en los que se haya actualizado o insertado uno o más artículos de pedido,
los pedidos se desbloquean y los campos lastUpdate se actualizan con la indicación de la hora actual.
- Una vez procesados todos los grupos de enumeración, el mandato determina el
centro de despacho de pedidos y comprueba el inventario disponible para todos
los artículos de pedido modificados o creados. Si el inventario ATP está habilitado,
llama a AllocateInventoryCmd. De lo contrario,
llama a ResolveFulfillmentCenterCmd que es compatible con versiones anteriores.
- Llama al mandato de tarea ExtendOrderItemProcessCmd para que realice un proceso adicional
a fin de satisfacer cualquier requisito exclusivo.
- Establece un mandato RedirectView que redirigirá al URL que se haya especificado.
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 la vista de error InvalidInputErrorView.
- Si se especifica el partNumber pero no se puede encontrar en el catálogo, el mandato genera
una excepción ECApplicationException con el mensaje _ERR_PROD_NOT_EXISTING y la vista
de error badPartNumberErrorView.
- La excepción ECApplicationException también se generará si se encuentran los siguientes errores:
- Los acuerdos comerciales (contratos) de entrada no son válidos o elegibles para utilizarlos.
- Los acuerdos comerciales (contratos) que se utilizan en el pedido aplican métodos
de pago incompatibles.
- No se pueden recuperar listas de precios.
- Si ATP no está habilitado, el mandato de tarea ResolveFulfillmentCenterCmd puede
generar la excepción ECApplicationException con el mensaje _API_BAD_INV y la
vista de error ResolveFulfillmentCenterErrorView.