URL ReturnItemAdd

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

Estructura de URL

http:// host_name/path/
El nombre totalmente calificado de HCL Commerce Server y la vía de acceso de configuración.

Diagrama de sintaxis

Valores de parámetros

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.
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 de 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 solo es válido si se especifica el parámetro forUserId.
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.
storeId
Se necesita: El número de referencia de la tienda.
orderItemId_ i
Se necesita: El ID del artículo de pedido, si está disponible. Para devolver un componente que no forma parte de un kit dinámico o estático, 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 o estático que tiene un artículo de pedido, debe especificarse un valor para este parámetro y para el parámetro catEntryId_ i.
catEntryId_ i
Se necesita: 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 o estático 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
Se necesita: 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 predeterminado.
quantity_ i
Se necesita: 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
Se necesita: 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 el tipo de razón 'B' o 'C'.
outRMAName
El nombre a utilizar para el par nombre-valor que se pasará al URL redirigido. Este parámetro es útil para encadenar mandatos. Si este parámetro no se especifica, se utilizará el valor de RMAId.
URL
Se necesita: la URL al que se debe llamar cuando el mandato se completa satisfactoriamente.

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://myhostname/webapp/wcs/stores/servlet/
ReturnItemAdd?;orderItemId_1=15&quantity_1=5&reason_1=DEFECT&RMAId=**&storeId=1;&URL=ReturnDisplay

Comportamiento

  • Si el parámetro 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, solo 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 el parámetro 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:
      1. Llama al mandato de tarea CheckReturnItemInCorrectStateCmd para verificar que el artículo de pedido esté en un estado retornable.
      2. Comprueba que la moneda del artículo de pedido sea la misma que la moneda de la RMA.
      3. Comprueba que el ID de comercio del artículo de pedido sea el mismo que el ID de comercio de la RMA.
      4. Comprueba que haya términos y condiciones de devolución para este artículo de pedido.
      5. 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).
      6. 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.
      7. 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.
      8. 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:
      1. Llama al mandato de tarea ResolveSkuCmd para resolver el ID de entrada de catálogo y el ID de especificación de artículo.
      2. La moneda del artículo devuelto se establece en la moneda de la RMA.
      3. 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 estático, 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 o estático que tiene un artículo de pedido, el mandato toma los valores para el i 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 añade una entrada a la tabla RMAITEM y una entrada a la tabla RMAITEMCMP.
  • Solo 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.
  • Surge una ECApplicationException con el mensaje _ERR_RMA_ININVALID_STATE_FOR_COMMAND en las siguientes circunstancias:
    • Si no se ha especificado ninguno de los parámetros forUser o forUserId y el estado RMA no está establecido en 'PRC'
    • Si se especificado alguno de los parámetros forUser o forUserId y el estado RMA no está establecido en 'EDT', 'PND' o 'APP'.
  • 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.