Comando OrderCopy
Questo comando consente di creare, unire o modificare gli ordini che hanno un attributo dello stato di "P" o "E".

Valori dei parametri
- http://nome_host/percorso/
- (Obbligatorio) Il nome completo del WebSphere Commerce Server e il percorso di configurazione.
- langId
- Imposta o reimposta la lingua prescelta per la durata della sessione; le lingue supportate per un negozio si trovano nella tabella STORELANG
- forUser
- L'ID di collegamento dell'utente per conto del quale viene eseguito il comando; solo una persona con l'autorizzazione per elaborare ordini può specificare questo parametro.
- forUserId
- Come per forUser, ma con identificazione dell'utente mediante
l'ID utente interno,
come rilevato nella tabella
USERS.
- URL
- (Obbligatorio) L'URL di reindirizzamento richiamato quando il comando termina correttamente.
- fromOrderId_i
- Specifica zero o più ordini di origine, da cui copiare gli articoli dell'ordine quando viene elaborato il gruppo di enumerazione i. Le abbreviazioni speciali "." , "*", "
.t" , "*t" e "q" vengono risolte utilizzando memberId_i
e storeId.
- toOrderId
- Specifica l'ordine da creare o modificare. Può essere specificato come numero di riferimento ordine oppure come una delle abbreviazioni speciali ".",
"*", ".t", "*t", "**" e
".**.". Se non viene specificato, viene utilizzata l'impostazione predefinita "**", che crea un nuovo ordine. Se viene specificato più di un ordine, per il programma sarà come se fosse stato specificato solo l'ordine aggiornato più di recente.
Le abbreviazioni vengono risolte utilizzando il cliente corrente
(il cliente che esegue il comando) e il negozio specificato dal parametro storeId.
- copyOrderItemId_i
- Specifica quali articoli dell'ordine devono essere copiati dall'ordine di origine specificato da
fromOrderId_i ed aggiunti all'ordine di destinazione specificato da toOrderId.
- Se non viene specificato, oppure viene specificato "*", il parametro si riferisce a tutti gli articoli dell'ordine che appartengono agli ordini specificati da fromOrderId_i
- Se viene specificato "." , il parametro si riferisce all'articolo più aggiornato dell'ordine che appartiene agli ordini specificati da fromOrderId_i
- Se viene specificato "**", all'ordine di destinazione verrà aggiunto un solo articolo dell'ordine nuovo utilizzando solo le informazioni contenute negli altri parametri nel gruppo di enumerazione specificato da i ma non dagli ordini di origine per questo gruppo di enumerazione. In questo caso, è necessario specificare catEntryId_i o partNumber_i. Il comando OrderCopy richiama a sua volta il comando OrderItemUpdate per aggiungere nuovi articoli all'ordine di destinazione.
- updateOrderItemId_i
- Specifica gli articoli dell'ordine contenuti nell'ordine di destinazione da aggiornare. Viene aggiornato utilizzando le informazioni da altri parametri nel gruppo di enumerazione specificato da i, ma non dagli ordini di origine per tale gruppo di enumerazione né da i e partNumber_i.
L'ID della voce di catalogo di un articolo di un ordine non può essere aggiornato. Il comando OrderCopy richiama il comando OrderItemUpdate per aggiornare gli altri articoli nell'ordine di destinazione.
- Se viene specificato "*", significa che devono essere presi in considerazione tutti gli articoli dell'ordine nell'ordine di destinazione.
- Se viene specificato ".", significa che devono essere presi in considerazione gli articoli dell'ordine aggiornati più di recente.
- orderInfoFrom
- Specifica il numero di riferimento di un ordine da cui copiare le informazioni di livello (valori per le colonne DESCRIPTION, ADDRESS_ID, SEQUENCE, FIELD1,
FIELD2 e FIELD3 nella tabella ORDERS).
- Se viene specificato più di un ordine, per il programma sarà come se fosse stato specificato solo quello tra questi ordini che è stato aggiornato più di recente.
- Se viene specificato "**", le informazioni sul livello dell'ordine non vengono copiate da alcun ordine.
- Se il parametro non è specificato ed esiste un solo ordine di origine
specificato dai parametri fromOrderId_i,
per cui si considera come se l'ordine fosse stato specificato. Altrimenti, il parametro prenderà, per impostazione predefinita, il valore "**". Le abbreviazioni vengono risolte utilizzando l'acquirente corrente
e il negozio specificato dal parametro storeId.
- payInfoFrom
- Specifica il numero di riferimento di un ordine da cui eseguire la copia delle informazioni di pagamento ottenute richiamando il comando di attività GetOrderPaymentInfoCmd. Se viene specificato più di un ordine, per il programma sarà come se fosse stato specificato solo quello tra questi ordini che è stato aggiornato più di recente.
Se viene specificato "**", le informazioni sul livello dell'ordine non vengono copiate da alcun ordine. Se il parametro non è specificato ed esiste un solo ordine di origine
specificato dai parametri fromOrderId_i,
per cui si considera come se l'ordine fosse stato specificato. Altrimenti, il parametro prenderà, per impostazione predefinita, il valore "**". Le abbreviazioni vengono risolte utilizzando il cliente corrente
e il negozio specificato dal parametro storeId.
- catEntryId_i
- Imposta l'ID della voce di catalogo degli articoli dell'ordine nel gruppo di enumerazione i.
- quantity_i
- Imposta la quantità degli articoli dell'ordine nel gruppo di enumerazionei.
- UOM_i
- L'unità di misura per quantity_i.
- partNumber_i
- Il numero parte da risolvere in un ID di voce di catalogo. Sostituisce catEntryId_i.
- addressId_i
- Il numero di riferimento dell'indirizzo a cui spedire gli articoli nel gruppo di enumerazione specificato da i. L'indirizzo deve appartenere all'acquirente che esegue questo comando.
- shipModeId_i
- Specifica un numero di riferimento per il tipo di spedizione, da trasmettere al comando OrderItemUpdate quando gli articoli vengono aggiunti o aggiornati nell'ordine di destinazione, per il gruppo di enumerazione specificato da i.
Tale numero di riferimento è associato a un particolare servizio di spedizione.
- comment_i
- Un commento da includere nell'articolo da trasmettere al comando OrderItemUpdate quando gli articoli dell'ordine vengono aggiunti o aggiornati nella destinazione.
- field1_i
- Specifica un valore intero da trasmettere al comando OrderItemUpdate quando gli articoli dell'ordine vengono aggiunti o aggiornati nell'ordine di destinazione, per il gruppo di enumerazione specificato da i
- field2_i
- Specifica una stringa di carattere da trasmettere al comando OrderItemUpdate quando gli articoli dell'ordine vengono aggiunti o aggiornati nell'ordine di destinazione, per il gruppo di enumerazione specificato da i
- contractId_i
- Il numero di riferimento del contratto associato all'ordine da trasmettere al comando OrderItemUpdate quando gli articoli dell'ordine vengono aggiunti o aggiornati nella destinazione.
- offerId_i
- Un elenco di ID delle offerte da scegliere quando viene creato un nuovo articolo dell'ordine. Tale elenco viene quindi trasmesso al comando OrderItemUpdate. Non esiste un valore predefinito.
- outOrderName
- Specifica i nomi delle coppie nome-valore da aggiungere all'URL di reindirizzamento. Il valore di ogni coppia nome-valore è il numero di riferimento di un ordine di destinazione. Il valore predefinito è "orderId".
- outOrderItemName
- Specifica i nomi delle coppie nome-valore da aggiungere all'URL di reindirizzamento. Il valore di ogni coppia nome-valore è il numero di riferimento di un articolo dell'ordine di destinazione. Il valore predefinito è "orderItemId".
- descrizione
- Imposta la descrizione dell'ordine di destinazione. Se non specificato, verrà utilizzata la descrizione dell'ordine "orderInforFrom", se ne esiste una.
- billingAddressId
- Imposta l'ID dell'indirizzo di fatturazione dell'ordine di destinazione. Se non specificato, verrà utilizzato l'ID dell'indirizzo di spedizione dell'ordine "orderInfoFrom", se presente.
- displaySeq
- Imposta la sequenza di visualizzazione dell'ordine di destinazione. Se non specificata, viene visualizzata la sequenza "orderInforFrom", se presente.
- da field1 a field3
- Imposta rispettivamente i valori field1, field2 e field3 dell'ordine di destinazione. Se non specificato, verrà utilizzato il valore del campo corrispondente del comando "orderInfoFrom", se ne esiste uno.
- status
- Specifica lo stato dell'ordine di destinazione. Sono valori validi solo I (inoltrato) e P (in sospeso). Il valore predefinito è P. Se viene specificato I, dopo essere stato aggiornato, l'ordine di destinazione viene preparato per la visualizzazione e bloccato, come se fosse stato richiamato il comando OrderPrepare, quindi lo stato viene impostato su I. In questo modo, l'ordine viene preparato per essere accettato da OrderProcess,
e vengono impedite eventuali ulteriori modifiche da parte dell'acquirente.
- memberId_i
- Il numero di riferimento di un membro, utilizzato per risolvere speciali abbreviazioni(".", "*", ".t", ".**." e "*t")
quando appaiono in
fromOrderId_i. Ad esempio, il seguente comando si riferisce a tutti gli ordini in sospeso del membro 1001:
fromOrderId_1=*&memberId_1=1001
Il valore predefinito è l'ID del membro dell'utente corrente.
Se l'acquirente corrente prova ad accedere agli ordini di altri acquirenti ma senza avere l'autorizzazione a farlo, viene inviata un'eccezione.
- storeId
- Imposta l'ID del negozio dell'ordine di destinazione. Viene utilizzato anche per risolvere abbreviazioni speciali (".", "*", ".t",
".**.", e "*t"), quando vengono visualizzate in fromOrderId_i, toOrderId, orderInfoFrom e
payInfoFrom. Ad esempio, il comando seguente si riferisce a tutti gli ordini in sospeso del membro 1001 nel negozio 1:
fromOrderId_1=*&memberId_1=1001&storeId=1
- attr_i_name
- Specifica un nome e un valore di attributo da trasmettere al comando OrderItemUpdate quando si aggiungono articoli per il gruppo di enumerazione specificato da i all'ordine di destinazione. Ad esempio, il seguente comando si riferisce alla parte ABC123 con attributo "length"=="10":
partNumber_1=ABC123&attr_1_length=10
- pay_payment_name
- Imposta le coppie di valori e nomi del pagamento dell'ordine di destinazione. Il comando seguente, ad esempio, si riferisce alla coppia nome-valore "creditCardNumber==2222222222":
pay_creditCardNumber=2222222222
Queste coppie nome-valore del pagamento verranno aggiunte alla tabella ORDPAYINFO
mediante il comando SetOrderPaymentInfoCmd. Se non vengono specificate, verranno utilizzate le coppie nome-valore dell'ordine payInfoFrom, se esistono.
- partOwner_Id_i
- L'ID membro del proprietario utilizzato con partNumber_i; l'impostazione predefinita è il proprietario del negozio.
- remerge
- Un elenco di OrderItems che devono essere unificati con altri OrderItems nello stesso ordine e con lo stesso attributo correlationGroup, se possibile.
- merge
- Un elenco di OrderItems che devono essere unificati con altri OrderItems nello stesso ordine, indipendentemente dall'attributo correlationGroup.
- check
- Un elenco di OrderItems che devono essere verificati con il comando di attività CheckInventory.
- allocate
- Un elenco di OrderItems che devono essere assegnati da un inventario esistente.
- backorder
- Un elenco di OrderItems che devono essere assegnati da un inventario atteso.
- reverse
- Un elenco di OrderItems le cui assegnazioni devono essere rilasciate (ovvero, deve essere annullata l'assegnazione dell'inventario esistente o atteso).
- configurationId_i
- Se l'OrderItem rappresenta un Kit dinamico configurato, questo è l'ID di configurazione.
Nota: I parametri remerge, merge, check, allocate, backorder e reverse
sono applicabili soltanto se viene abilitato l'inventario ATP (consultare la colonna ALLOCATIONGOODFOR
nella tabella STORE). Essi rappresentano l'elenco degli OrderItem che saranno trasferiti al comando di attività AllocateInventory, che richiama i comandi di attività CheckInventoryAvailability,
AllocateExistingInventory, AllocateExpectedInventory, DeallocateExistingInventory e
DeallocateExpectedInventory, come specificato di seguito. Inoltre, questi parametri accettano le abbreviazioni di OrderItem, che sono descritte minuziosamente nella guida ai Comandi del sottosistema dell'ordine.
I valori del parametro ATP predefiniti sono i seguenti:
- remerge=*n
- merge=*n
- check=***
- allocate=*n
- backorder=*n
- reverse=*n
Esempio 1
Il seguente esempio crea un ordine utilizzando fromOrderId_1 in quanto il valore predefinito toOrder è
** (nuovo ordine) ed il valore predefinito per copyOrderItemId_1 è * (tutti gli articoli dell'ordine).
http://myhostname/webapp/wcs/stores/servlet/OrderCopy?fromOrderId_1=388
&URL=OrderItemDisplay
Esempio 2
Nel seguente esempio vengono creati due ordini in sospeso, quindi vengono uniti tutti gli articoli dell'ordine da tutti gli ordini in sospeso del cliente.
http://myhostname/webapp/wcs/stores/servlet/OrderItemAdd?catEntryId=322200305
&quantity=11&URL=OrderItemDisplay&storeId=32&orderId=**
http://myhostname/webapp/wcs/stores/servlet/OrderItemAdd?catEntryId=322200301
&quantity=11&URL=OrderItemDisplay&storeId=32&orderId=**
http://myhostname/webapp/wcs/stores/servlet/OrderCopy?URL=OrderItemDisplay
&fromOrderId_1=*©OrderItemId_1=*
Esempio 3
Nel seguente esempio viene aggiunto un nuovo articolo all'ordine 111.
http://myhostname/webapp/wcs/stores/servlet/OrderCopy?fromOrderId_1=111
&toOrderId=111&partNumber_1=PART-I312200303&quantity_1=21&memberId_1=0
&storeId=31&URL=OrderItemDisplay
Esempio 4
Nel seguente esempio viene effettuata una copia utilizzando partNumber. Se viene specificato, il parametro catEntryId_i viene ignorato. Il parametro partNumber_i e il numero di riferimento negozio specificato o indicato dagli altri parametri vengono utilizzati per determinare un numero di riferimento del prodotto, selezionando le colonne PARTNUMBER e MEMBER_ID nella tabella CATENTRY. Il comando si comporta come se il numero di riferimento del prodotto fosse specificato come valore per catEntryId_i. Il comando deve essere in grado di determinare un numero di riferimento di negozio dagli altri parametri. Il risultato è che un nuovo articolo viene aggiunto all'ordine 111.
http://myhostname/webapp/wcs/stores/servlet/OrderCopy?fromOrderId_1=111
&toOrderId=111&partNumber_1=PART-I312200303&quantity_1=21
&memberId_1=1&storeId=31&URL=OrderItemDisplay
Azione
- I comandi di attività ResolveOrdersCmd e ResolveOrderItemsCmd vengono richiamati per risolvere le abbreviazioni di OrderId e OrderItemId e per determinare quali Ordini e OrderItems sono specificati dai parametri.
- Se richiesto, nella tabella ORDERS viene creato l'ordine di destinazione, con stato P, senza blocchi.
- L'attività CheckOrderCopyCmd viene richiamata per verificare l'autorità dell'acquirente a copiare informazioni dagli ordini specificati nei parametri fromOrderId_i, orderInfoFrom e payInfoFrom, e per aggiornare le informazioni nell'ordine di destinazione.
- Le informazioni dell'ordine vengono aggiornate nella tabella ORDERS.
- Le informazioni di pagamento sono contenute nell'ordine specificato dal parametro payInfoFrom, richiamando
il comando di attività GetOrderPaymentInfoCmd, aggiornato come specificato dai parametri pay_payment_name
e inserito nell'ordine di destinazione specificato dal parametro toOrderIdparameter, richiamando l'attività di elaborazione SetOrderPaymentInfoCmd.
- Per ciascun parametro copyOrderItem_i e updateOderItem_i
in ordine ascendente di of i, le informazioni per gli articoli specificati vengono copiate o aggiornate nella tabella ORDERITEMS
per l'ordine di destinazione, richiamando il comando OrderItemUpdate.
- Se il parametro di stato indica I, l'ordine di destinazione viene preparato per essere visualizzato e inoltrato come se si richiamasse il comando OrderPrepare, (vengono calcolati i valori e l'ordine è bloccato) quindi lo stato dell'ordine di destinazione e i relativi articoli vengono modificati come I nelle tabelle ORDERS e
ORDERITEMS.
- Viene richiamato il comando ExtOrderCopyCmd.
- Le coppie nome-valore vengono aggiunte all'URL di reindirizzamento, secondo quanto specificato dai parametri outOrderName
e outShiptoName.
Condizioni di eccezione
- Il comando CheckOrderCopyCmd
lancia una ECApplicationException del tipo _ERR_ORDER_COPY con la visualizzazione errori OrderCopyErrorView se al comando OrderCopy viene negato l'accesso a un ordine. Verranno impostate le seguenti coppie nome-valore:
- ERROR_CODE=601
- orderId=l'ID dell'ordine che crea l'eccezione
- Se l'ordine di destinazione non si trova nello stato in sospeso, viene lanciata una eccezione ECApplicationException del tipo _ERR_ORDER_WRONG_STATUS con la visualizzazione errori OrderCopyErrorView. Anche qui verranno impostate le seguenti coppie nome-valore:
- ERROR_CODE=603
- orderId=l'ID dell'ordine che crea l'eccezione
- Tutte le condizioni di eccezione OrderItemUpdate.