Mandato OrderCopy
Este mandato crea, fusiona o modifica pedidos que tienen un atributo de estado de
"P" o "E".

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 de redirección al que se llama cuando el mandato se ejecuta satisfactoriamente.
- fromOrderId_i
- Especifica cero o más pedidos de origen desde los que se copiarán
los artículos de pedido cuando se procese el grupo de enumeración
i. Las abreviaturas especiales "." ,
"*", " .t" , "*t" y
"q" se resuelven utilizando memberId_i y storeId.
- toOrderId
- Especifica el pedido que se ha de crear o modificar.
Se puede especificar como un número de referencia de pedido o como una de
las abreviaturas especiales ".", "*",
".t", "*t", "**". y
".**.". Si no se especifica, toma por omisión el valor
"**", que crea un nuevo pedido.
Si se especifica más de un pedido, el resultado será
como si sólo se hubiera especificado el pedido actualizado más recientemente.
Las abreviaturas se resuelven utilizando el cliente actual (el cliente que ejecuta
este mandato) y la tienda especificada en el parámetro storeId.
- copyOrderItemId_i
- Especifica qué artículos de pedido se deben copiar de los pedidos de
origen especificados mediante fromOrderId_i y añadir al pedido de
destino especificado mediante toOrderId.
- Si no se especifica o si se especifica "*", el
parámetro hace referencia a todos los artículos de pedido que pertenecen a
los pedidos especificados mediante fromOrderId_i.
- Si se especifica ".", el parámetro
hace referencia al artículo de pedido actualizado más recientemente que
pertenezca a los pedidos especificados mediante fromOrderId_i.
- Si se especifica "**", el parámetro hace
referencia a un solo nuevo artículo de pedido que se añadirá al pedido de
destino utilizando únicamente la información procedente de otros
parámetros del grupo de enumeración especificado mediante i, pero
no de otros pedidos de origen de dicho grupo de enumeración. En este caso, se debe especificar catEntryId_i o
partNumber_i. El mandato OrderCopy llama al mandato OrderItemUpdate para que añada artículos de pedido nuevos al pedido de destino.
- updateOrderItemId_i
- Especifica los artículos de pedido del pedido destino que se ha de actualizar. Se
actualiza utilizando información de otros parámetros del grupo de enumeración
especificado mediante i, pero no de los pedidos de origen de dicho grupo
de enumeración, ni tampoco de catEntryId_i ni partNumber_i. Tenga
en cuenta que el ID de entrada de catálogo de un artículo de pedido no se puede
actualizar. El mandato OrderCopy llama al mandato OrderItemUpdate para
que actualice los artículos de pedido del pedido de destino.
- Si se especifica "*", indica todos los artículo de pedido del
pedido de destino.
- Si se especifica ".", indica el
artículo de pedido actualizado más recientemente.
- orderInfoFrom
- Especifica el número de referencia de un pedido del que copiar la
información de nivel de pedido (los valores de las columnas DESCRIPTION,
ADDRESS_ID, SEQUENCE, FIELD1, FIELD2, FIELD3 de la tabla
ORDERS).
- Si se especifica más de un
pedido, el resultado será como si sólo se hubiera especificado el pedido
actualizado más recientemente de dichos pedidos.
- Si se especifica "**", no se copia la información de
nivel de pedido de ningún pedido.
- Si este parámetro no se
especifica y sólo se ha especificado un pedido de origen en los
parámetros FromOrderId_i, será como si
se hubiera especificado dicho pedido. De lo contrario, toma por
omisión el valor "**". Las abreviaturas se resuelven utilizando el comprador actual y la tienda especificados en el parámetro storeId.
- payInfoFrom
- Especifica el número de referencia de un pedido desde el que se copia la información de pago obtenida llamando al mandato de tarea GetOrderPaymentInfoCmd. Si se especifica más de un
pedido, el resultado será como si sólo se hubiera especificado el pedido
actualizado más recientemente de dichos pedidos.
Si se especifica "**", no se copia la información de
nivel de pedido de ningún pedido. Si este parámetro no se
especifica y sólo se ha especificado un pedido de origen en los
parámetros FromOrderId_i, será como si
se hubiera especificado dicho pedido. De lo contrario, toma por
omisión el valor "**". Las abreviaturas se resuelven utilizando
el cliente actual y la tienda especificada en el parámetro storeId.
- catEntryId_i
- Establece el ID de entrada del catálogo para los artículos del pedido del grupo de enumeración i.
- quantity_i
- Establece la cantidad de artículos de pedido del grupo de enumeración i.
- UOM_i
- La unidad de medida de quantity_i.
- partNumber_i
- El número de pieza que se ha de resolver en un ID de entrada de catálogo. Reemplaza a catEntryId_i.
- addressId_i
- El número de referencia de la dirección a la que se van a enviar los artículos de pedido del grupo de enumeración especificado mediante i. La dirección debe pertenecer al comprador que
ejecuta este mandato.
- shipModeId_i
- Especifica un número de referencia de modalidad de envío, que se ha de pasar al mandato
OrderItemUpdate cuando se añaden o actualizan artículos de pedido en el pedido de destino,
para el grupo de enumeración especificado mediante i. Este número de referencia
se asocia a un servicio de envío determinado.
- comment_i
- Un comentario que se ha de incluir con el artículo, que se ha de pasar
al mandato OrderItemUpdate cuando se añaden o actualizan artículos de
pedido en el pedido de destino.
- field1_i
- Especifica un valor entero, que se ha de pasar al mandato OrderItemUpdate
cuando se añaden o actualizan artículos de pedido en el pedido de destino,
para el grupo de enumeración especificado mediante i
- field2_i
- Especifica una serie de caracteres, que se ha de pasar al mandato OrderItemUpdate
cuando se añaden o actualizan artículos de pedido en el pedido de destino, para
el grupo de enumeración especificado mediante i
- contractId_i
- El número de referencia de contrato asociado al pedido, que se ha de pasar
al mandato OrderItemUpdate cuando se añaden o actualizan artículos de pedido
en el pedido de destino.
- offerId_i
- Una lista de los ID de oferta que se pueden seleccionar cuando se crea un nuevo
artículo de pedido. Esta lista se pasará al mandato OrderItemUpdate. No
existe un valor por omisió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 de nombre-valor añadida es el número
de referencia de un pedido de destino. El valor por omisión es "orderId".
- outOrderItemName
- Especifica los nombres de parejas nombre-valor que se han de añadir al URL
de redirección. El valor de cada pareja de nombre-valor añadida es el número de
referencia de un artículo de pedido de destino. El valor por omisión
es "orderItemId".
- description
- Establece la descripción del pedido de destino. Si no se especifica, se
utilizará la descripción del pedido "orderInfoFrom", si existe.
- billingAddressId
- Establece el ID de dirección de facturación del pedido de destino. Si no se
especifica, se utilizará el ID de dirección de facturación del pedido "orderInfoFrom",
si existe.
- displaySeq
- Establece la secuencia de visualización del pedido de destino. Si no se especifica,
se utilizará la secuencia de visualización del pedido "orderInfoFrom", si existe.
- field1 a field3
- Establece los valores de field1, field2 y field3 del pedido de destino, respectivamente. Si
no se especifican, se utilizará el valor del campo correspondiente del pedido
"orderInfoFrom", si existe.
- status
- Especifica el estado del pedido de destino. Los únicos valores válidos son
I (sometido) y P (pendiente). El valor por omisión es P. Si se especifica
el valor I, una vez actualizado el pedido de destino, se prepara para su
visualización y se bloquea, como si se hubiera llamado a OrderPrepare
y, a continuación, se establece el estado en I. De este modo, se prepara
el pedido para que lo acepte OrderProcess,
y se impide que el comprador pueda modificarlo posteriormente.
- memberId_i
- El número de referencia de un miembro, que se utiliza para resolver
las abreviaturas especiales (".", "*", ".t",
".**.", y "*t") cuando aparecen en
fromOrderId_i. Por ejemplo, el mandato siguiente hace
referencia a todos los pedidos pendientes del miembro 1001:
fromOrderId_1=*&memberId_1=1001
El valor por omisión es el ID de miembro del usuario actual.
Si el comprador actual intenta acceder a los pedidos de otros compradores pero no está autorizado para hacerlo, se genera una excepción.
- storeId
- Establece el ID de tienda del pedido de destino. También se utiliza para
resolver las abreviaturas especiales
(".", "*",
".t", ".**.", y "*t") cuando
aparecen en fromOrderId_i, toOrderId, orderInfoFrom, y payInfoFrom.
Por ejemplo, el mandato siguiente hace referencia a todos los pedidos
pendientes del miembro 1001 en la tienda 1:
fromOrderId_1=*&memberId_1=1001&storeId=1
- attr_i_nombre
- Especifica un nombre de atributo y un valor que se ha de pasar al
mandato OrderItemUpdate cuando se
añaden al pedido de destino artículos de pedido para el grupo de
enumeración especificado mediante i. Por ejemplo, el mandato
siguiente hace referencia al número de pieza ABC123 con el atributo
"length"=="10":
partNumber_1=ABC123&attr_1_length=10
- pay_nombre_pago
- Establece las parejas nombre-valor de pago del pedido de destino. Por ejemplo,
el siguiente mandato hace referencia a la pareja nombre-valor de pago "creditCardNumber==2222222222":
pay_creditCardNumber=2222222222
Estas parejas nombre-valor de pago se añadirán a la tabla
ORDPAYINFO mediante el mandato
de tarea
SetOrderPaymentInfoCmd.
Si no se especifican, se utilizarán las parejas nombre-valor de
pago del pedido payInfoFrom, si existe.
- partOwner_Id_i
- El ID de miembro del propietario de la pieza, se utiliza junto con
partNumber_i; toma por omisión el valor del propietario de la tienda
- 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.
- 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).
- 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 copia un pedido utilizando fromOrderId_1 porque el valor por omisión de toOrder es
** (nuevo pedido) y el valor por omisión para copyOrderItemId_1 es * (todos los artículos de pedido).
http://misistpral/webapp/wcs/stores/servlet/OrderCopy?fromOrderId_1=388
&URL=OrderItemDisplay
Ejemplo 2
El ejemplo siguiente crea dos pedidos pendientes y luego fusiona todos los artículos de pedido de
todos los pedidos pendientes del cliente.
http://misistpral/webapp/wcs/stores/servlet/OrderItemAdd?catEntryId=322200305
&quantity=11&URL=OrderItemDisplay&storeId=32&orderId=**
http://misistpral/webapp/wcs/stores/servlet/OrderItemAdd?catEntryId=322200301
&quantity=11&URL=OrderItemDisplay&storeId=32&orderId=**
http://misistpral/webapp/wcs/stores/servlet/OrderCopy?URL=OrderItemDisplay
&fromOrderId_1=*©OrderItemId_1=*
Ejemplo 3
El ejemplo siguiente añade un nuevo artículo de pedido al pedido 111.
http://misistpral/webapp/wcs/stores/servlet/OrderCopy?fromOrderId_1=111
&toOrderId=111&partNumber_1=PART-I312200303&quantity_1=21&memberId_1=0
&storeId=31&URL=OrderItemDisplay
Ejemplo 4
El ejemplo siguiente efectúa la copia utilizando partNumber. Si se especifica, se hace caso
omiso del parámetro catEntryId_i. El parámetro partNumber_i y el
número de referencia de la tienda especificados o aludidos por los
demás parámetros se utilizan para determinar un número de referencia de producto,
seleccionando las columnas PARTNUMBER y MEMBER_ID de la tabla
CATENTRY. Este mandato se comporta
como si ese número de referencia de producto se hubiera especificado
como el valor de catEntryId_i. El mandato debe poder determinar un
número de referencia de tienda a partir de otros parámetros. Como resultado,
se añade un nuevo artículo de pedido al pedido 111.
http://misistpral/webapp/wcs/stores/servlet/OrderCopy?fromOrderId_1=111
&toOrderId=111&partNumber_1=PART-I312200303&quantity_1=21
&memberId_1=1&storeId=31&URL=OrderItemDisplay
Comportamiento
- Se llama a los mandatos de tarea ResolveOrdersCmd y ResolveOrderItemsCmd para resolver
las abreviaturas de OrderId y OrderItemId y determinar qué Pedidos y Artículos de pedido
especifican los parámetros.
- Si es necesario, se crea el pedido de destino en la tabla ORDERS con un estado P, sin bloquear.
- Se llama a la tarea
CheckOrderCopyCmd para comprobar la autorización del comprador para
copiar información de los pedidos especificados mediante los parámetros
fromOrderId_i, orderInfoFrom, y payInfoFrom, y para actualizar la
información en el pedido de destino.
- La información de pedido se actualiza en la tabla
ORDERS.
- La información de pago se lee del pedido especificado mediante el parámetro payInfoFrom, llamando al mandato de
tarea
GetOrderPaymentInfoCmd, se actualiza según lo que especifiquen los
parámetros pay_nombre_pago y se graba en el pedido de destino
especificado mediante el parámetro toOrderId llamando a la tarea de proceso
SetOrderPaymentInfoCmd.
- Para cada parámetro copyOrderItem_i y updateOderItem_i
por orden ascendente del valor i, la información de artículo de pedido especificada se copia o se actualiza en la tabla
ORDERITEMS para el pedido de destino,
llamando al mandato OrderItemUpdate.
- Si el parámetro status indica "I", el pedido de destino se prepara para su visualización y proceso como si se hubiera llamado al mandato
OrderPrepare (las cantidades se calculan y el pedido queda bloqueado), y el estado del pedido de destino y de sus artículos de pedido
se cambia a "I" en las tablas ORDERS y
ORDERITEMS.
- Se llama al mandato de tarea
ExtOrderCopyCmd.
- Se añaden parejas de nombre-valor al URL de redirección, según lo especificado por
los parámetros outOrderName y outShiptoName.
Condiciones de excepción
- El mandato de tarea
CheckOrderCopyCmd generará una excepción ECApplicationException de
tipo _ERR_ORDER_COPY con la vista de error OrderCopyErrorView, si el
mandato OrderCopy no obtiene acceso a un pedido. Se establecerán las
siguientes parejas de nombre-valor:
- ERROR_CODE=601
- orderId=el ID del pedido problemático
- Si el pedido de destino no está en estado pendiente, se genera una excepción ECApplicationException
de tipo _ERR_ORDER_WRONG_STATUS con la vista de error OrderCopyErrorView. Además,
se establecerán las siguientes parejas de nombre-valor:
- ERROR_CODE=603
- orderId=el ID del pedido problemático
- Todas las condiciones de excepción de OrderItemUpdate.