Mandato ReturnItemAdd
Este mandato añade productos a una autorización de devolución de mercancía (RMA).

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.
- creditAdjustment_i
- La cantidad en la que hay que ajustar el importe del abono del producto. El formato de este
número debe ajustarse a las normas para un objeto java.math.BigDecimal. El número
debe utilizar un punto para una posición decimal. Este importe se coloca en la
columna ADJUSTMENT de la tabla RMAITEM. Este
parámetro es opcional y sólo es válido si se especifica el parámetro forUserId.
- 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.
- storeId
- (Obligatorio) El número de referencia de la tienda.
- orderItemId_i
- (Obligatorio) El ID del artículo de pedido, si está disponible. Para devolver un componente
que no forma parte de un kit dinámico, o el kit entero de un artículo de pedido, debe
especificarse un valor para este parámetro. Para devolver una parte de un kit dinámico
que tiene un artículo de pedido, debe especificarse un valor para este parámetro y para el parámetro
catEntryId_i.
- catEntryId_i
- (Obligatorio) La entrada de catálogo que se devuelve. Este valor debe ser un producto o un artículo. No se
aceptan otros valores de entrada de catálogo y, si se especifican, llamarán a la
excepción BAD_MISSING_CMD_PARAMETER. Para devolver un componente que no sea un artículo
de pedido, debe especificarse un valor para este parámetro. Para devolver una parte
de un kit dinámico que tiene un artículo de pedido, debe especificarse un valor para
este parámetro y para el parámetro orderItem_i.
- attrName_i
- Cualquier atributo diferenciado definido para el producto.
- attrValue_i
- El valor del atributo de producto.
- RMAId
- El identificador de una RMA existente a la que se han de añadir los artículos
de devolución. Para crear una nueva RMA, utilice el valor "**". Si no se especifica
un valor para este parámetro, se utiliza ** como el valor por omisión.
- quantity_i
- (Obligatorio) La cantidad que se devuelve.
- 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.
- comment_i
- Un comentario sobre el artículo que se devuelve.
- reason_i
- (Obligatorio) La razón de la devolución, como la ha proporcionado el comprador. Este
valor se puede encontrar en la columna CODE de la tabla RTNREASON
con un tipo de razón 'B' o 'C'.
- outRMAName
- El nombre a utilizar para la pareja nombre-valor que se pasará al URL
redirigido. Este parámetro es útil para encadenar mandatos. Si este parámetro
no se especifica, entonces se utilizará el valor del parámetro RMAId.
- URL
- (Obligatorio) El URL al que se debe llamar cuando el mandato se completa satisfactoriamente.
- forUserId
- El ID de conexión del usuario en cuyo nombre se ejecutará el mandato; este parámetro sólo
lo puede especificar una persona cuyo rol de seguridad sea Representante de servicio al cliente.
El usuario se identifica mediante un ID de usuario interno, como se encuentra
en la tabla USERS.
Ejemplo
El ejemplo siguiente añade 5 unidades del artículo de pedido 15 a una nueva RMA. El código de
razón para la devolución es DEFECT. Una vez creada la RMA, se visualizará.
http://misistpral/webapp/wcs/stores/servlet/ReturnItemAdd?
orderItemId_1=15&quantity_1=5&reason_1=DEFECT&RMAId=**&storeId=1
&URL=ReturnDisplay
Comportamiento
- Si RMAId se establece en "**", se crea una nueva RMA. La moneda de la nueva RMA se
establece en la moneda de uno de los artículos de devolución que esté basado en un artículo de pedido. Si
no se devuelve ningún artículo de pedido (es decir, sólo se devuelven entradas de catálogo), la
moneda se establece en la moneda de compra del emisor de la llamada. El ID de comercio de la nueva RMA se
establece en el ID de comercio de uno de los artículos de pedido devueltos. Si no se devuelve
ningún artículo de pedido, se utiliza el primer ID de comercio encontrado en el contexto
del mandato (método getCurrentTradingAgreements()). El memberId de la RMA se establece
en el ID de usuario del contexto del mandato.
- Si RMAId no se establece en "**", abrir la RMA existente y verificar que
pertenece a la tienda actual.
- El distintivo PREPARED de la RMA se establece en 'N'.
- Si se especifica el parámetro forUser o forUserId, la RMA debe iniciarse en
estado 'EDT', 'PND', 'APP' y el estado se establece en 'EDT'. De lo contrario, la
RMA debe iniciarse en estado 'PRC' y el estado se cambia a 'PRC'.
- El mandato se puede invocar con una lista de artículos de pedido y entradas de catálogo.
Cada uno se procesará de la siguiente manera:
- Si se ha de añadir el artículo de pedido a la RMA, el mandato efectúa lo siguiente:
- Llama al mandato de tarea CheckReturnItemInCorrectStateCmd
para verificar que el artículo de pedido está en un estado retornable.
- Comprueba que la moneda del artículo de pedido sea la misma que la moneda de la RMA.
- Comprueba que el ID de comercio del artículo de pedido sea el mismo que el ID de comercio de la RMA.
- Comprueba que haya términos y condiciones de devolución para este artículo de pedido.
- Comprueba que los términos y condiciones asociados al ID de comercio e ID de miembro del
artículo de pedido sean compatibles con los términos y condiciones asociados a la RMA (los mismos
términos y condiciones). Los términos y condiciones asociados a la RMA se calculan utilizando
el ID de comercio de la RMA y el ID de miembro de un artículo de pedido devuelto existente o el
ID de miembro de la RMA (si todos los artículos de pedido devueltos existentes son entradas de catálogo).
- Si se especifica catEntryId (una devolución de kit parcial), llamar al mandato de tarea
ResolveSkuCmd para resolver el ID de entrada de catálogo y el ID de especificación de artículo.
- Si se trata de una devolución de kit parcial, llamar al mandato de tarea CalculateReturnItemCreditForCatEntryCmd;
de lo contrario, llamar al mandato de tarea CalculateReturnItemCreditCmd.
- Añade un artículo a la RMA y descompone el artículo de RMA en los componentes del artículo de RMA. Si se trata
de un kit, crear los registros de componentes a partir de la tabla OICOMPLIST
asociada al artículo de pedido. De lo contrario, se crea un componente para el artículo
devuelto.
- Si se ha de añadir la entrada de catálogo a la RMA, el mandato efectúa lo
siguiente:
- Llama al mandato de tarea ResolveSkuCmd para resolver el ID de entrada de catálogo
y el ID de especificación de artículo.
- La moneda del artículo devuelto se establece en la moneda de la RMA.
- Llama al mandato de tarea CalculateReturnItemCreditForCatEntryCmd para calcular los
importes de abono.
- Para todos los artículos, se llama al mandato de tarea AutoApproveReturnItemCmd
para ver si el artículo se puede aprobar automáticamente. El artículo devuelto se establecerá
en el estado 'PND' o 'APP' en función del resultado de la aprobación automática.
- Las unidades de medida se manejan de forma similar al mandato
OrderItemAdd. La cantidad con las unidades de
medida especificadas se convertirá a una cantidad normalizada que sea un múltiplo de
la cantidad nominal especificada en la tabla CATENTSHIP.
- Para devolver un componente que no es parte de un kit dinámico, o el kit entero de un
artículo de pedido, el mandato toma el valor del parámetro orderItemId_i y añade
una entrada a la tabla RMAITEM y añade varias entradas
a la tabla RMAITEMCMP, para un kit, o una entrada
a la tabla RMAITEMCMP en caso contrario. Cuando los componentes de un kit se
añaden a la tabla RMAITEMCMP, aquellos componentes marcados como opcionales (columna REQUIRED
de la tabla OICOMPLIST establecida en 'N') no se registran.
- Para devolver una parte de un kit dinámico que tiene un artículo de pedido, el mandato
toma los valores para el parámetro orderItemId_i y el parámetro catEntryId_i y
añade una entrada a la tabla RMAITEM y una entrada a la tabla RMAITEMCMP.
- Para devolver un componente que no es un artículo de pedido, el mandato toma
los valores para el parámetro catEntryId_i y añade una entrada a la tabla
RMAITEM y una entrada a la tabla RMAITEMCMP.
- Sólo las entradas de catálogo que son productos o artículos se pueden devolver.
- Una vez completado satisfactoriamente, establece la redirección al URL especificado.
- Llama al mandato de tarea ExtendReturnItemAddCmd.
Condiciones de excepción
- Si la moneda del artículo de pedido no es la misma que la moneda de la RMA, se genera
una excepción ECApplicationException con el mensaje _ERR_ITEM_RMA_CURRENCY_MISMATCH.
- Si el artículo de pedido no está en el estado correcto (esto lo determina el mandato
de tarea CheckReturnItemInCorrectStateCmd), se genera una excepción ECApplicationException
con el mensaje _ERR_ORD_ITEM_NOT_RETURNABLE.
- Si el estado de la RMA no está establecido en 'PRC' (si los parámetros forUser o forUserId
no se utilizan) o no está establecido en 'EDT', 'PND' o 'APP' (si los parámetros forUser o forUserId no se
utilizan), se genera una excepción ECApplicationException con el mensaje
_ERR_RMA_IN_INVALID_STATE_FOR_COMMAND.
- Si el ID de comercio del artículo de pedido no es el mismo que el ID de comercio de la RMA, se
genera una excepción ECApplicationException con el mensaje _ERR_ITEM_RMA_TRADING_MISMATCH.
- Si no hay términos y condiciones de devolución para este artículo de pedido, se
genera una excepción ECApplicationException con el mensaje _ERR_NO_RETURN_TERMCOND.
- Si los términos y condiciones del artículo de pedido son diferentes de los términos y
condiciones asociados a la RMA, se genera una excepción ECApplicationException con el
mensaje _ERR_ITEM_RMA_TERMS_MISMATCH.