Mandato OrderPrepare
Este mandato prepara un pedido determinando los precios, descuentos, costes de envío
e impuestos para el pedido. Si no se especifica un número de
referencia de pedido, se prepararán todos los pedidos pendientes actuales
para el cliente actual en la tienda especificada.

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.
- 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
- 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.
- URL
- (Obligatorio) El URL al que se debe llamar cuando el mandato se completa satisfactoriamente.
- storeId
- El número de referencia de la tienda para la que se ha de preparar el pedido.
- orderId
- El número de referencia del pedido que se va a preparar. Si se
omite este parámetro, este mandato toma por omisión los pedidos
pendientes actuales. Consulte Abreviaturas de pedidos para
obtener una descripción.
- outOrderName
- Especifica los nombres de parejas nombre-valor que se han de añadir al URL
de redirección. El valor de cada pareja nombre-valor añadida es el número de
referencia del pedido preparado. Si no se proporciona el nombre, por omisión se utilizará orderId.
- 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
CheckInventory.
- 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.
- reverse
- Una lista de artículos de pedido cuyas asignaciones deben liberarse (es decir,
desasignarse del inventario existente o esperado según corresponda).
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=*
- merge=*n
- check=*n
- allocate=*
- backorder=*
- reverse=*
Ejemplo
El ejemplo siguiente prepara el pedido con número de referencia 1 y
redirige al mandato OrderDisplay para ver este pedido.
http://misistpral/webapp/wcs/stores/servlet/OrderPrepare?orderId=1
&URL=/webapp/commerce/OrderDisplay
Comportamiento
- Prepara los pedidos especificados para su visualización (mediante el mandato
OrderDisplay) o para su proceso (mediante el mandato OrderProcess).
Si no se especifica ningún número de pedido, el mandato preparará todos los
pedidos pendientes actuales del cliente actual que pertenezcan a la tienda
especificada.
- El estado de los pedidos especificados debe ser uno de los siguientes: 'P', 'I', 'E', 'W' o
'N'.
- El mandato OrderPrepare llama al mandato de tarea PrepareOrder
para que realice lo siguiente para cada uno de los pedidos especificados:
- Suprimir artículos de pedido generados (consulte la columna PREPAREFLAGS de la tabla ORDERITEMS.
- Comprobar que todos los artículos de pedido del pedido se pueden comprar (consulte la
columna BUYABLE de la tabla CATENTRY).
- Si la asignación de inventario ATP está habilitada (consulte la columna ALLOCATIONGOODFOR
de la tabla STORE), llamar al mandato de tarea
AllocateInventory
para procesar los artículos de pedido identificados por los parámetros ATP
(merge, remerge, check, allocate, backorder y reverse), y obtener el tiempo de
disponibilidad estimado, los márgenes de tiempo de envío y los centros de despacho de pedidos
para los artículos de pedido asignados o en espera. Este mandato de tarea puede dividir
o fusionar artículos de pedido. La implementación por omisión de este mandato de tarea
llama a los mandatos de tarea GetEligibleFulfillmentCenters,
CheckInventoryAvailability,
AllocateExistingInventory,
AllocateExpectedInventory,
DeallocateExistingInventory
y DeallocateExpectedInventory
para realizar las operaciones especificadas por los parámetros ATP.
Estos mandatos de tarea utilizan las tablas RECEIPT, RADETAIL
y sus tablas asociadas para determinar la disponibilidad del inventario existente y
del inventario esperado.
- Si el inventario ATP no está habilitado, llamar al mandato de tarea ResolveFulfillmentCenter
para asignar un centro de despacho de pedidos a cada artículo de pedido, basándose en la
disponibilidad de inventario. La implementación por omisión de este mandato de tarea
llama al mandato de tarea CheckInventory
para determinar la disponibilidad de inventario. La implementación por omisión
del mandato de tarea CheckInventory utiliza la tabla INVENTORY.
- Llamar al mandato de tarea ValidateDynamicKitConfiguration.
- Obtener nuevos precios unitarios para cada artículo de pedido, excepto para aquellos con precios
reemplazados manualmente (consulte la columna PREPAREFLAGS de la tabla ORDERITEMS),
llamando al mandato de tarea GetContractSpecialPrice
o, si no está definido, llamando al mandato de tarea
GetBaseSpecialPrice.
- Multiplicar la cantidad por el precio unitario para cada artículo de pedido, y
almacenar el resultado en la columna TOTALPRODUCT de la tabla ORDERITEMS.
- Volver a calcular los importes para los usos de cálculo identificados por
la columna USAGEFLAGS de la tabla STENCALUSG.
Primero se llama a todos los métodos identificados por la columna CALMETHOD_ID_INI
de la tabla STENCALUSG. Después se llama a todos los métodos identificados por la
columna CALMETHOD_ID_APP. Para compatibilidad con versiones anteriores, si el distintivo
se establece para uso -1, se llama al mandato de tarea ApplyOrderAdjustments,
si está definido en la tabla CMDREG, en lugar del
método identificado por la columna CALMETHOD_ID_APP de la tabla
STENCALUSG. Para compatibilidad con versiones anteriores, si este distintivo se
establece para uso -2, se llama al mandato de tarea ApplyOrderShippingCharges,
si está definido en la tabla CMDREG, en lugar del método identificado por la
columna CALMETHOD_ID_APP. Para compatibilidad con versiones anteriores, si este
distintivo se establece para uso -3 y -4, se llama al mandato de tarea ApplyOrderTaxes,
si está definido en la tabla CMDREG, en lugar del método identificado por la
columna CALMETHOD_ID_APP de la tabla STENCALUSG.
- Volver a crear subpedidos (filas en la tabla SUBORDERS)
para cada dirección de envío distinta y, a continuación, resumir la información
recalculada para cada uno de los subpedidos, llamando a los métodos
identificados por la columna CALMETHOD_ID_SUM de la tabla STENCALUSG
para cada uso de cálculo identificado por la columna CALUSGAEFLAGS.
- Bloquear el pedido para indicar que está preparado para el mandato
OrderProcess. El bloqueo se puede restablecer por caducidad, cambiando el pedido
(por ejemplo, utilizando el mandato OrderItemUpdate),
o explícitamente utilizando el mandato OrderUnlock. El
periodo de caducidad para un bloqueo se almacena en la columna QUOTEGOODFOR
de la tabla STORE.
Condiciones de excepción
- Si no hay ningún pedido que coincida con los parámetros especificados, el mandato genera
la excepción ECApplicationException
especificando el mandato de vista de error ErrorOrderNoneCmd.
- Si alguno de los productos o artículos del pedido no se puede comprar, el mandato
genera la excepción ECApplicationException especificando el mandato de vista de error
BadOrderDataErrorView.
Para obtener más información sobre las condiciones de excepción de los errores de pedidos, consulte Códigos de error para vistas de error de pedidos.
- El mandato genera una excepción ECApplicationException especificando el mandato de vista
de error RetrievePriceErrorView si
se cumple alguna de las condiciones siguientes:
- 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 para ninguno de los productos o artículos.
- Si alguno de los cálculos indicados por la columna USAGEFLAGS de la tabla
STENCALUSG no ha podido calcular un valor para cada artículo de pedido de un
pedido, y si la columna USAGEFLAGS de la tabla STENCALUSG indica que debe
calcularse un valor, se genera una excepción ECApplicationException.
- Si un pedido no tiene ningún artículo de pedido, se genera una excepción
ECApplicationException.