Mandato OrderProcess
Este mandato somete un pedido. El pedido debe haberlo bloqueado
OrderPrepare. Una vez iniciada la ejecución del
mandato OrderProcess, el pedido no se puede cancelar
con OrderCancel.

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.
- storeId
- El número de referencia de la tienda en la que se va a
formalizar el pedido. Este valor se ignora, a menos que se se produzca un error antes de que
se resuelva el pedido. Se utiliza únicamente para llamar al manejador de excepciones de la tienda correcta.
- orderId
- (Obligatorio) El número de referencia del pedido.
- billtoAddressId
- El número de referencia de la dirección de facturación.
- field1, field2 y field3
- Campos personalizables
- notifyMerchant
- Si se debe notificar a la tienda cuando se complete el proceso del pedido.
1=Sí
0=No
- notifyShopper
- Si se debe notificar al cliente cuando se complete el proceso del pedido.
1=Sí
0=No
- quoteExpiredURL
- Especifica el URL al que se ha de redirigir si el total del pedido ha caducado según
lo acordado por la política de caducidad especificada mediante el parámetro quoteExpiryPolicy.
- quoteExpiryPolicy
- Define el comportamiento del mandato si el total del pedido caduca o el centro
de despacho de un artículo de pedido cambia durante la asignación de inventario. El
total del pedido caduca si la hora actual es posterior o igual a la indicación
de la hora de la última actualización del pedido más el número de segundos
especificados en la columna QUOTEGOODFOR de la tabla STORE. Este
parámetro puede tener tres valores:
- alwaysProceed=continuar siempre con el proceso del pedido después
de recalcular el total del pedido.
- stopOnBiggerTotal=continuar con el proceso del pedido si
el total del pedido recalculado es igual o inferior al total del pedido
anterior. De lo contrario, redirigir a un URL especificado por el parámetro quoteExpiredUrl.
- neverProceed= redirigir siempre al URL especificado
por el parámetro quoteExpiredUrl.
- notifyOrderSubmitted
- Especifica si debe notificarse al cliente cuando el pedido se ha sometido
satisfactoriamente para su proceso.
1=Sí
0=No (valor por omisión)
- availabilityChangeURL
- Especifica el URL al que redirigirse cuando el tiempo de disponibilidad estimado,
más el margen de tiempo para el envío de cualquier artículo de pedido, sufre un retraso (como resultado
de asignar inventario o ponerlo en espera) superior al intervalo de tiempo
especificado por el parámetro maxAvailabilityChange. Se hace caso omiso de este
parámetro si la asignación de inventario ATP no está habilitada.
- maxAvailabilityChange
- Especifica el intervalo de tiempo, en segundos, mencionado en la descripción
del parámetro availabilityChangeURL. El valor por omisión es 3600 (una
hora). Se hace caso omiso de este parámetro si el parámetro availabilityChangeURL
no se especifica o si la asignación de inventario ATP no está habilitada.
- noInventoryURL
- Especifica el URL al que redirigirse si alguno de los artículos de pedido
del pedido no se pueden asignar o poner en espera. Se hace caso omiso de este
parámetro si la asignación de inventario ATP no está habilitada.
- tcId
- El identificador de un objeto de Términos y Condiciones (consulte la tabla
TERMCOND). Si este parámetro se
especifica, e identifica un PaymentTC, y si ese PaymentTC especifica un ID de miembro
y un apodo de dirección (consulte la correlación de PaymentTC), entonces el
ID de miembro y el apodo de dirección se utilizan para determinar la dirección
de facturación, en cuyo caso se hace caso omiso del parámetro billToAddressId.
Notas sobre pagos
El mandato OrderProcess en sí no maneja los pagos. Para manejar los pagos, utilice
la clase de interfaz DoPaymentCmd,
que implementarían los mandatos de tarea DoPayment. Se puede pasar
cualquier parámetro desde OrderProcess a este mandato, aunque generalmente
implementan la información de tarjeta de crédito.
WebSphere Commerce incluye dos clases de implementación del mandato de tarea OH, la clase DoPaymentCmdImpl
y la clase DoPaymentMPFCmdImpl. La
clase DoPaymentCmdImpl es una implementación de ejemplo que se utiliza
para mostrar cómo se puede escribir una implementación de mandato de tarea
DoPayment que funcione con el mandato OrderProcess. La clase DoPaymentMPFCmdImpl es
la clase de implementación DoPaymentCmd estándar que está diseñada para utilizarla
con IBM WebSphere Payment Manager, Versión 3.1, e incluye soporte para las
funciones de Empresa a Empresa (B2B) introducidas en este release de WebSphere Commerce Business
Edition.
Notas sobre la notificación de pedidos
Si necesita configurar la notificación de pedidos, tendrá que hacer lo siguiente:
- Habilitar la mensajería de salida.
- Crear plantillas de composición de mensajes para componer
los mensajes de notificación de pedidos.
Ejemplo 1
El mandato siguiente procesa la formalización de un pedido cuyo número
de referencia es 3:
http://misistpral/webapp/wcs/stores/servlet/OrderProcess?orderId=3
Ejemplo 2
Presuponiendo que Payment Manager ya se haya configurado, este
mandato pasa la información de pago del cliente a Payment Manager. El
parámetro policyId=200 hace referencia al método OfflineCard que el
modelo de tienda utiliza por omisión para Payment Manager.
http://misistpral/webapp/wcs/stores/servlet/OrderProcess?storeId=34
&orderId=556677&policy=200&cardBrand=Visa
&cardNumber=41111111111111111&cardExpiryMonth=12&cardExpiryYear=2001
Nota: El parámetro payMethodId está soportado únicamente para la
compatibilidad con versiones anteriores. Para los nuevos casetes de Payment Manager y
las nuevas funciones de Empresa a Empresa (B2B), utilice en su lugar el parámetro
policyId (como en el Ejemplo 2). Para obtener una lista de las políticas de pago
definidas, consulte el enlace de referencia relacionada que aparece más abajo.
La clase DoPaymentMPFCmdImpl soporta un parámetro adicional denominado tcId, que se
utiliza para especificar el ID de los términos y condiciones de pago que se han de
utilizar para un pedido. Los términos y condiciones deben ser uno de los términos y
condiciones comunes especificados en los contratos asociados a los artículos del
pedido. Si necesita ayuda para seleccionar un archivo JSP de términos y condiciones
de pago comunes, utilice el bean de datos UsablePaymentTCListDataBean. El parámetro tcId
es obligatorio si alguno de los contratos utilizados para los artículos de pedido
tiene asociados términos y condiciones de pago.
Comportamiento
- El mandato OrderProcess llama al mandato de tarea ProcessOrder para realizar
lo siguiente:
- Si el pedido no está bloqueado (lo que indica que el pedido no ha cambiado
desde que lo preparó el mandato OrderPrepare), o si el estado del pedido no
es 'P', 'I', 'E', 'W', 'N' o 'B', se genera una excepción ECApplicationException.
- Cuando el valor de la columna QUOTEGOODFOR de la tabla STORE no es NULL,
se especifican los parámetros quoteExpiryPolicy y quoteExpiredURL, y el pedido tiene
el estado 'P', 'I', 'W' o 'N', el mandato comprueba la indicación de la hora de la última actualización del pedido.
Si la hora actual es es posterior o igual a la indicación de la hora de la última
actualización más el número de segundos especificados en la columna QUOTEGOODFOR,
OrderProcess llama al mandato de tarea PrepareOrder
para renovar los importes del pedido y, a continuación, efectúa una de las acciones
siguientes, en función del valor de quoteExpiryPolicy:
- Si el total del pedido recalculado no ha cambiado y el
parámetro quoteExpiryPolicy lo permite, se continuará de forma normal.
- Si total del pedido recalculado es inferior y el parámetro quoteExpiryPolicy
lo permite, se continuará de forma normal.
- Si total del pedido recalculado es superior y el parámetro quoteExpiryPolicy
lo permite, se continuará de forma normal.
- De lo contrario, no se procesará el pedido sino que se redirigirá
al URL especificado mediante el parámetro quoteExpiredURL
- Si la asignación de inventario ATP está habilitada:
- Todos los artículos de pedido que todavía no están asignados o en espera, o que
han cambiado desde la última vez que se asignaron o se pusieron en espera, se asignan,
o se ponen en espera si no pueden asignarse, llamando al mandato de tarea
AllocateInventory.
- Si algún artículo de pedido no se puede asignar o poner en espera:
- Si el parámetro noInventoryURL se ha especificado, el mandato devuelve una
redirección a ese URL.
- De lo contrario, el estado del pedido cambia a L y se devuelve el mandato.
- Si se especifica el parámetro availabilityChangeURL, y el tiempo
de disponibilidad estimado para cualquiera de los artículos de pedido
se retrasó más de lo especificado por el parámetro
maxAvailabilityChange cuando se asignaron o se pusieron en espera,
el mandato devuelve una redirección a ese URL.
- Si el mandato de tarea AllocateInventory desbloqueó el pedido, lo que indica que
el centro de despacho de pedidos para un artículo de pedido ha cambiado, entonces:
- Los importes de impuestos y costes de envío se vuelven a calcular, y el pedido se
bloquea, llamando al mandato de tarea ReprepareOrder. Si
esto cambia el importe total del pedido, y se especifican los parámetros
quoteExpiryPolicy y quoteExpiredUrl, entonces:
- Si el total del pedido recalculado no ha cambiado y el
parámetro quoteExpiryPolicy lo permite, se continuará de forma normal.
- Si total del pedido recalculado es inferior y el parámetro quoteExpiryPolicy
lo permite, se continuará de forma normal.
- Si total del pedido recalculado es superior y el parámetro quoteExpiryPolicy
lo permite, se continuará de forma normal.
- De lo contrario, no se procesará el pedido sino que se redirigirá
al URL especificado mediante el parámetro quoteExpiredURL
- Los tiempos de disponibilidad prometidos de los artículos de pedido se establecen
en los tiempos de disponibilidad estimados actuales.
- Si el estado del pedido es 'I', se llama al mandato de tarea CheckOrder para que verifique
que este pedido no se ha sometido ya para su proceso.
- Se llama al mandato de tarea CheckOrderAcceptance para
que verifique que los contratos de los artículos de pedido están activos.
- La tabla ORDOPTIONS se actualiza para
que refleje los valores de los parámetros notifyMerchant y notifyShopper.
- La dirección de facturación, si la hay, como se especifica en los parámetros tcId o
billToAddressId, se almacena en el pedido.
- Los valores de los parámetros field1, field2 y field3, si se especifican, se almacenan en
el pedido (consulte la tabla ORDERS).
- Si la asignación de inventario ATP no está habilitada, y si la implementación de
la interfaz del mandato de tarea DoPayment no implementa también la interfaz DoInventory,
se llama al mandato de tarea UpdateInventory para restar del inventario los
artículos pedidos. (La interfaz DoInventory no declara ningún método. Un
mandato de tarea DoPayment que implemente esta interfaz declara al mundo que la
implementación del mandato o sus funciones y mandatos relacionados manejará la
actualización del inventario.)
- Se llama al mandato de tarea DoPayment apropiado para efectuar una comprobación
de errores adicional y procesar el pago, pasando las parejas nombre-valor de información
de pago de la tabla ORDPAYINFO, fusionadas
con los parámetros pasados al mandato URL OrderProcess. Si alguno de los parámetros pasados
al mandato URL OrderProcess tiene el mismo nombre que alguna de las parejas nombre-valor
de la tabla ORDPAYINFO, los valores de los parámetros sustituyen a los de las parejas nombre-valor. La lista
fusionada de parejas nombre-valor se almacena en la tabla ORDPAYINFO, sustituyendo a la
información de pago anterior. No obstante, los parámetros específicos del
mandato URL OrderProcess (los citados más arriba, en esta página), con la excepción del parámetro
tcId, no se consideran información de pago y no se almacenan en la tabla
ORDPAYINFO.
- Si el mandato de tarea DoPayment devuelve un valor de estado de pedido, el estado
del pedido se establece en dicho valor. De lo contrario, el estado se establece en 'C' o, si
la asignación de inventario ATP está habilitada y el pedido contiene algún artículo en espera,
el estado se establece en 'B'.
- Si el estado del pedido no es 'I', se llama al mandato de tarea ExtOrderProcess.
(El mandato de planificador PaySynchronizePM llamará al mandato
de tarea ExtOrderProcess más adelante, cuando cambie el estado del pedido de 'I' a otro diferente.)
- Se llama al mandato de tarea OrderMessaging.
- Si el parámetro notifyOrderSubmitted especifica 1 (Sí), se llama al mandato de tarea
OrderNotify para
notificar al comprador que el pedido ha sido sometido.
- Si el mandato de tarea DoPayment ha devuelto datos de bytes, se pasan a la vista
DirectView, para transferirlos directamente al navegador del cliente (por ejemplo, para
iniciar una aplicación "monedero" de pago electrónico). De lo contrario, el
URL de redirección OrderOKView se pasa a la vista RedirectView para que muestre
un acuse de recibo de pedido al cliente.
Condiciones de excepción
- Si el pedido no está bloqueado, el mandato genera la excepción ECApplicationException
especificando el mandato de vista de error OrderUnlockErrorView.
- Si el cliente ha escrito datos incorrectos, el mandato genera la
excepción ECApplicationException especificando el mandato de vista de error
BadOrderDataErrorView
para notificárselo al cliente.
- Si el pedido no está pendiente, el mandato genera la excepción
ECApplicationException especificando el mandato de vista de error
OrderNoneErrorView.
- Si alguno de los contratos que utiliza el pedido no es válido, el mandato genera
la excepción ECApplicationException.