Mandato OrderItemAdd
Este mandato añade artículos o productos a la lista de artículos que se han de enviar.

Valores de 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.
- storeId
- (Obligatorio) El número de referencia de la tienda, que es obligatorio porque no puede comprar desde un centro comercial.
- catEntryId_i
- (Obligatorio) El número de referencia de los artículos que se han de poner en el pedido.
- partNumber_i
- Si se especifica, se hace caso omiso del parámetro catEntryId. Los parámetros partNumber
y memberId se utilizan para determinar un valor para catentry_id seleccionando PARTNUMBER y
MEMBER_ID en la tabla CATENTRY, y este mandato
se comporta como si ese número de referencia se hubiera especificado como el valor de catEntryId.
- 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
- (Obligatorio) 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 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 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.
- comment_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 por omisión para cada tienda pero se pueden establecer otros.
- 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 identificador de la oferta que rige el pedido al que se va a añadir el artículo.
- orderId
- El identificador del pedido al que se va a añadir el artículo.
- 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.
- 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.
- listId
- El ID de la lista de artículos de interés. Cuando se especifica este parámetro,
el mandato OrderItemAdd creará un nuevo pedido que contendrá todos los artículos de la lista.
- orderDesc
- Especifica la descripción de un pedido nuevo 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. 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.
- check
- Una lista de artículos de pedido que debe comprobar el mandato de tarea
CheckInventory.
- allocate
- Una lista de artículos de pedido que deben asignarse del inventario existente mediante
el mandato de tarea AllocateExistingInventory.
- 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.
- reverse
- Una lista de artículos de pedido cuyas asignaciones deben liberarse (es decir,
desasignarse del inventario existente o esperado según corresponda) llamando a los
mandatos de tarea DeallocateExistingInventory o DeallocateExpectedInventory
según sea el caso.
- 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 añade tres unidades del producto con número de
referencia 24 a cada uno de los pedidos pendientes actuales del
cliente (sólo aquellos pedidos pendientes actuales que se han creado bajo
la tienda que contiene la entrada de catálogo 24) indicando que se han
de enviar a la dirección que corresponde al número de referencia de dirección 2 y, a
continuación, llama al mandato OrderItemDisplay.
http://misistpral/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://misistpral/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 los siguientes:
Artículo 312200001
Artículo 312200301
Producto 312200200 con el atributo 312200201
http://misistpral/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, donde la primera entrada de catálogo tiene dos atributos y la segunda
entrada de catálogo tiene tres atributos:
http://misistpral/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
- 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 es 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 del artículo de pedido se
obtiene del ID de miembro 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 los acuerdos
de comercio (contratos) elegibles, excepto para los artículos de pedido que se han generado o
cuyo precio se ha entrado manualmente (lo ha reemplazado el administrador). Todos los
acuerdos comerciales (contratos) de entrada a utilizar serán verificados si aplican
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 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.