Comando OrderItemUpdate
Questo comando esegue tutto quello che esegue il comando OrderItemAdd
(ovvero aggiunge prodotti e articoli a uno o più ordini all'interno dell'elenco ordini). E' possibile anche aggiornare gli OrderItems in un ordine esistente.

Valori dei parametri
- http://nome_host/percorso/
- (Obbligatorio) Il nome completo del WebSphere Commerce Server e il percorso di configurazione.
- 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.
- langId
- Imposta o reimposta la lingua prescelta per la durata della sessione; le lingue supportate per un negozio si trovano nella tabella STORELANG
- URL
- (Obbligatorio) L'URL da richiamare quando il comando viene eseguito correttamente.
- orderItemId_i
- L'identificativo di OrderItem da aggiornare. Se specificato, i parametri
catEntryId_i e partNumber_i (per lo stesso valore di i) vengono ignorati.
- storeId
- L'identificativo del negozio, che è obbligatorio solo se si desidera
aggiungere agli ordini prodotti o articoli Il valore storeId è necessario per
verificare se un articolo è disponibile nel negozio. Una volta specificato il valore
storeId, esso viene memorizzato nella cache per gli usi futuri.
- catEntryId_i
- L'identificativo di una voce di catalogo da utilizzare per creare un nuovo
OrderItem.
- partNumber_i
- Se specificato, il parametro catEntryId_i viene ignorato. Quando
vengono specificati i parametri partNumber_i e
memberId_i, essi determinano una voce di catalogo selezionando le colonne
PARTNUMBER e MEMBER_ID nella tabella CATENTRY. Questo comando funziona come se
l'identificativo della voce di catalogo fosse stata specificata come il valore di
catEntryId_i.
- memberId_i
- L'identificativo per il membro proprietario del catalogo in cui verrà effettuato l'ordine.
- attrName_i
- Qualsiasi attributo definito per l'articolo.
- attrValue_i
- Il valore dell'attributo in attrName.
- quantity_i
- La quantità dell'articolo da aggiungere nell'ordine. Questo
parametro è necessario quando viene specificato
catEntryId_i o partNumber_id. E' facoltativo quando
viene specificato OrderItemId_i.
- UOM_i
- L'unità di misura per quantity_i. Tale valore dovrebbe corrispondere alle chiavi principali nella tabella
QTYUNIT. Quando non viene specificato, allora il valore della colonna QUANTITYMEASURE della tabella
CATENTSHIP per la riga con lo stesso CATENTRY_ID, viene utilizzato come OrderItem,
e il valore del parametro di quantity_i viene moltiplicato tramite la colonnaNOMINALQUANTITY della stessa riga nella tabella CATENTSHIP.
- addressId_i
- L'identificativo dell'indirizzo cui vengono spediti prodotti e articoli.
- shipModeId_i
- Il numero di riferimento della modalità di spedizione utilizzata per il prodotto o l'articolo.
- comment_i
- Un commento da includere negli articoli dell'ordine creati o aggiornati.
- contractId_i
- L'ID del contratto associato all'ordine.
- field1_i
- Un valore intero riservato al negozio.
- field2_i
- Un valore di testo riservato al negozio. Questo parametro accetta fino a
254 caratteri.
- offerId_i
- L'ID dell'offerta associata all'ordine.
- orderId
- E' un identificativo creato internamente che specifica zero o più ordini da aggiornare, utilizzando i numeri di riferimento ordine oppure una delle abbreviazioni speciali "**", ".",
"*", ".t", "*t". Per una descrizione di queste abbreviazioni, consultare Abbreviazioni ordini. Se non esistono ordini in sospeso per un determinato negozio, ne verrà creato uno nuovo. Se viene specificato più di un ordine in sospeso, verranno create o aggiornate anche le voci presenti nell'ordine per ciascun ordine specificato.
- outOrderName
- Specifica i nomi delle coppie nome-valore da aggiungere all'URL di reindirizzamento. I valori delle coppie nome-valore aggiunte sono i numeri di riferimento degli ordini creati o aggiornati.
- outOrderItemName
- Specifica i nomi delle coppie nome-valore da aggiungere all'URL di reindirizzamento. I valori delle coppie nome-valore aggiunte sono i numeri di riferimento delle voci dell'ordine aggiornate o aggiunte.
- listId
- L'ID elenco di articoli. Quando si specifica questo parametro,
il comando OrderItemUpdate creerà un nuovo ordine contenente tutti gli articoli presenti
nell'elenco. E' possibile utilizzare una delle abbreviazioni speciali
"." e "*". Per ulteriori informazioni, consultare la sezione
sulle abbreviazioni del catalogo.
- orderDesc
- Specifica la descrizione per il nuovo ordine creato con questo comando
- remerge
- Un elenco di OrderItems che devono essere unificati con altri OrderItems nello stesso ordine e con lo stesso attributo correlationGroup, se possibile. OrderItems non sono unificati a meno che InventoryStatus sia "NALC", o non sono specificati da uno o più assegnazioni, backorder e parametri inversi.
- 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 dal comando attività CheckInventoryAvailability.
- allocate
- Un elenco di OrderItems che devono essere assegnati da un inventario esistente.
- backorder
- Un elenco di OrderItems che devono essere assegnati dall'inventario atteso se non vengono assegnati dall'inventario esistente.
- 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 questo OrderItem rappresenta un Kit dinamico configurato, questo è l'ID di configurazione.
Nota:
I parametri remerge, merge, check, allocate, backorder e reverse
sono applicabili solo 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 record di spedizione per un'unità della voce di catalogo con numero di riferimento 18 e ha un attributo di monogramma CJK. Questo
record di spedizione viene aggiunto agli ordini in sospeso correnti del cliente. Dopo avere eseguito il comando,
viene richiamato il comando OrderItemDisplay.
http://myhostname/webapp/wcs/stores/servlet/OrderItemUpdate?addressId=2
&catEntryId=18&attrName=monogram&attrValue=CJK&quantity=1&shipModeId=4
&URL=OrderItemDisplay
Esempio 2
Il seguente esempio aggiunge dieci unità della voce di catalogo numero 2
a tutti gli ordini in sospeso correnti del cliente. Dopo avere eseguito il comando,
viene richiamato il comando OrderItemDisplay.
http://myhostname/webapp/wcs/stores/servlet/OrderItemUpdate?catEntryId=2
&quantity=10&orderId=*&outOrderName=orderId&URL=/webapp/wcs/stores/servlet/OrderItemDisplay
Esempio 3
Nel seguente esempio vengono aggiornati tre ID OrderItem.
http://myhostname/webapp/wcs/stores/servlet/OrderItemUpdate?URL=OrderItemDisplay
&quantity_1=2&quantity_2=7&orderItemId_1=117&orderItemId_2=118
&orderItemId_3=113&quantity_3=2
Azione
- Il comando richiama il ResolveOrdersCmd con il parametro di immissione orderId per ottenere un elenco di ordini. Se orderId non è specificato,
il valore predefinito è "." (gli ordini in sospeso correnti).
- Per ciascun gruppo di enumerazione 'i' di parametri, il comando esegue i seguenti passi:
- Se viene specificato il parametro orderItemId_i, sono ignorati i parametri partNumber_i e
catEntryId_i. Il comando cerca di aggiornare l'articolo dell'ordine.
- Se viene specificato il parametro partNumber_i, il parametro catEntryId_i è ignorato. Il comando utilizza
partNumber_i con il parametro facoltativo memberId_i per trovare la voce di catalogo. Se non viene specificato memberId_i, l'ID del membro predefinito è l'Id del membro del proprio negozio.
- Se non viene specificato il parametro orderItemId_i e vengono specificati o il parametro partNumber_i o
quello catEntryId_i, il comando cerca di creare un nuovo articolo ordine e lo inserisce
in tutti gli ordini eseguiti. Se l'elenco degli ordini eseguiti è vuoto, sarà creato un nuovo ordine in sospeso.
- Quando viene creato un nuovo ordine, l'ID membro del nuovo ordine
viene impostato sull'utente corrente nel contesto comando e la valuta viene estratta
da quella presente nel contesto comando.
- Quando viene creato un nuovo articolo ordine, viene richiesto il parametro quantity_i e deve essere un numero positivo. L'ID
membro e la valuta dell'articolo dell'ordine viene impostata in modo da essere
identica all'ID membro e alla valuta dell'ordine.
Il storeId è anche obbligatorio.
- Se gli stessi gruppi di enumerazione 'i' vengono specificati più di una volta, soltanto uno è valido, gli altri vengono ignorati.
- Se si aggiorna l'articolo dell'ordine esistente quando
è specificato orderItemId_i o se si crea un nuovo articolo dell'ordine
quando è specificato partNumber_i o catEntryId_i, il comando utilizza gli altri
parametri per aggiornare l'articolo dell'ordine.
- Se il parametro addressId_i non viene specificato, per l'utente registrato, il valore predefinito
sarà quello di addressId nella tabella ADDRESS (dove la colonna STATUS ha un valore P ed il valore nella colonna NICKNAME è l'ID di collegamento utente ottenuto dalla colonna LOGONID nella tabella USERREG). Se non c'è l'indirizzo nella tabella ADDRESS, l'address_id sarà
NULL per l'articolo ordine nella tabella ORDERITEMS.
- Se il parametro quantity_i è zero, l'articolo ordine viene rimosso dagli ordini.
- Se non viene specificato il parametro shipModeId_i, il valore predefinito viene preso dalla tabella STOREDEF.
- Richiama il comando di attività GetContractUnitPriceCmd per ottenere
il prezzo del contratto del prodotto
o dell'articolo utilizzando gli accordi commerciali specificati
(contratti) o tutti gli accordi commerciali (contratti) per i quali il membro
dell'ordine è idoneo, ad eccezione degli articoli dell'ordine generati o
i cui prezzi sono stati immessi manualmente (sovrascritti dal responsabile). Per ulteriori
informazioni, consultare la colonna PREPAREFLAGS della tabella
ODERITEMS. Per tutti gli accordi commerciali (contratti) da utilizzare verrà
verificato che vengono applicati metodi di pagamento compatibili.
La valuta è sempre uguale alla valuta dell'ordine.
- Per ogni ordine in cui uno o più articoli ordine sono stati aggiornati o inseriti, gli ordini vengono sbloccati e i campi lastUpdate vengono aggiornati con la data/ora corrente.
- Dopo avere elaborato tutti i gruppi di enumerazione,
il comando determina il centro di evasione ordini
e verifica l'inventario per tutti gli articoli dell'ordine modificati o creati. Se viene abilitato l'inventario
ATP, esso richiama AllocateInventoryCmd. Altrimenti vene richiamato il comando ResolveFulfillmentCenterCmd che è compatibile
con quelli descritti precedentemente.
- Richiama il comando di attività ExtendOrderItemProcessCmd per eseguire un ulteriore elaborazione che soddisfi
tutti i requisiti univoci.
- Imposta una RedirectView che sarà rispedita all'URL che viene specificato.
Condizioni di eccezione
- Vengono richiamate attività di eccezione diverse a seconda dell'errore.
- Se i valori del parametro non sono validi, il comando genera un ECApplicationException con il messaggio:_ERR_INVALID_INPUT e la visualizzazione dell'errore : InvalidInputErrorView.
- Se viene specificato il partNumber e non è possibile trovarlo, il comando genera
un ECApplicationException con il messaggio: _ERR_PROD_NOT_EXISTING e la visualizzazione dell'errore : badPartNumberErrorView.
- ECApplicationException verrà generato anche se si presentano i seguenti errori:
- Gli accordi commerciali di immissione (contratti) non sono validi o idonei per essere utilizzati.
- Gli accordi commerciali (contratti) essendo utilizzati nell'ordine applicano metodi di pagamento incompatibili.
- I listini prezzi non possono essere richiamati
- Se ATP non è abilitato, il comando di attività ResolveFulfillmentCenterCmd potrebbe generare
ECApplicationException con il messaggio: _API_BAD_INV e la visualizzazione dell'errore:
ResolveFulfillmentCenterErrorView.