Comando OrderProcess
Questo comando inoltra un ordine. L'ordine deve essere stato bloccato dal comando OrderPrepare. Una volta avviato il comando OrderProcess, non è possibile annullare l'ordine con il comando OrderCancel.

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
- storeId
- Il numero di riferimento del negozio a cui mandare l'ordine. Questo valore viene ignorato
a meno che non si verifichi un errore prima che l'ordine
sia stato risolto. Viene utilizzato solo per richiamare il programma adatto per la gestione eccezioni del negozio.
- orderId
- (Obbligatorio) Il numero di riferimento dell'ordine.
- billtoAddressId
- Il numero di riferimento dell'indirizzo per la fatturazione.
- field1, field2 e field3
- Campi personalizzabili
- notifyMerchant
- Se il negozio deve essere notificato al termine dell'inoltro dell'ordine
1=Sì
0=No
- notifyShopper
- Se il cliente deve essere notificato al termine dell'inoltro dell'ordine
1=Sì
0=No
- quoteExpiredURL
- Specifica l'URL a cui effettuare il reindirizzamento se il totale dell'ordine è scaduto secondo i criteri di scadenza specificati dal parametro quoteExpiryPolicy.
- quoteExpiryPolicy
- Definisce il comportamento del comando se il totale dell'ordine scade o un centro di evasione ordini di un articolo ordinato viene modificato durante un'assegnazione di inventario. L'ordine scade se la data e l'ora correnti sono successivi alla data e l'ora dell'ultimo aggiornamento più il numero di secondi specificati nella colonna QUOTEGOODFOR della tabella STORE. Questo parametro può avere tre valori:
- alwaysProceed=procede sempre con l'elaborazione dell'ordine dopo aver ricalcolato il totale dell'ordine.
- stopOnBiggerTotal=procede con l'elaborazione dell'ordine se il totale dell'ordine ricalcolato è invariato o inferiore al totale dell'ordine precedente. In caso contrario, effettua il reindirizzamento a un URL specificato da quoteExpiredUrl.
- neverProceed= effettua sempre il reindirizzamento ad un URL specificato dal parametro quoteExpiredUrl.
- notifyOrderSubmitted
- Se il cliente deve ricevere notifica al termine dell'inoltro dell'ordine.
1=Yes
0=No (predefinito)
- availabilityChangeURL
- Specifica l'URL a cui vengono reindirizzate le informazioni se il tempo disponibile stimato più l'offset di spedizione per un articolo dell'ordine viene posticipato (come risultato dell'assegnazione o backorder dell'inventario) per un periodo superiore all'intervallo specificato dal parametro maxAvailabilityChange. Questo parametro viene ignorato se l'assegnazione di inventario ATP non è abititata.
- maxAvailabilityChange
- Specifica l'intervallo di tempo, in secondi, specificato nella descrizione del parametro availabilityChangeURL. Il valore predefinito è 3600 secondi )un'ora). Questo parametro viene ignorato se il parametro availabilityChangeURL non viene specificato o se l'assegnazione di inventario ATP non è abilitata.
- noInventoryURL
- Specifica il nuovo URL da utilizzare se non è possibile assegnare o respingere
alcuni articoli dell'ordine. Questo parametro viene ignorato se l'assegnazione di inventario ATP non è abititata.
- tcId
- L'identificativo dell'oggetto termini e condizioni (consultare la tabella TERMCOND). Se specificato e se identifica un PaymentTC e il PaymentTC specifica un memberId ed un nickName indirizzo (associazione PaymentTC) il memberId e il nickName indirizzo vengono utilizzati per determinare l'indirizzo di fatturazione; in tal caso il parametro billToAddressId viene ignorato.
Note sui pagamenti
Il comando OrderProcess non gestisce da solo i pagamenti. Per gestire i pagamenti, utilizzare la classe di interfaccia DoPaymentCmd, implementata dai comandi di attività DoPayment. I parametri che vengono trasferiti da OrderProcess a questo comando possono essere di qualsiasi tipo, anche se, generalmente, implementano le informazioni sulla carta di credito.
WebSphere Commerce include due classi di implementazione del comando di attività OH, DoPaymentCmdImpl
e DoPaymentMPFCmdImpl. La classe DoPaymentCmdImpl è una implementazione di esempio utilizzata per mostrare come scrivere un'implementazione del comando DoPaymentimplementation che funziona con il comando OrderProcess.
La classe DoPaymentMPFCmdImpl è la classe di implementazione DoPaymentCmd standard progettata per essere utilizzata
con IBM WebSphere Payment Manager, Versione 3.1 ed include il supporto per le funzioni Business-to-Business introdotte con questo rilascio di WebSphere Commerce Business Edition.
Note sulla notifica degli ordini
Per configurare la funzione di notifica degli ordini, è necessario:
- Attivare la messaggistica in uscita.
- Creare le maschere di composizione messaggi per la composizione dei messaggi di notifica degli ordini.
Esempio 1
Il seguente comando elabora un ordine con un numero di riferimento 3.
http://myhostname/webapp/wcs/stores/servlet/OrderProcess?orderId=3
Esempio 2
Partendo dal presupposto che Payment Manager sia già stato impostato, questo comando trasferisce le informazioni relative al pagamento del cliente a Payment Manager. Il parametro criterioId=200 si riferisce al metodo OfflineCard che il modello del negozio utilizza per impostazione predefinita per Payment Manager.
http://myhostname/webapp/wcs/stores/servlet/OrderProcess?storeId=34
&orderId=556677&criterio=200&cardBrand=Visa
&cardNumber=41111111111111111&cardExpiryMonth=12&cardExpiryYear=2001
Nota: Il parametro payMethodId è supportato soltanto per compatibilità verso il basso.
Per nuove Payment Manager Cassettes e nuove funzioni Business-to-Business, utilizzare invece il parametro
criterioId (come nell'Esempio 2). Per un elenco dei criteri di pagamento definiti, fare riferimento ai relativi link associati di seguito riportati.
La classe DoPaymentMPFCmdImpl supporta un parametro aggiuntivo chiamato tcId, che viene utilizzato per specificare l'ID dei termini e delle condizioni del pagamento da utilizzare per un ordine. I termini e le condizioni devono essere
quelli specificati nel contratto associato agli articoli ordinati. Per semplificare la selezione del file JSP dei termini e delle condizioni dei pagamenti comuni, utilizzare UsablePaymentTCListDataBean. Il parametro tcId è obbligatorio se ai contratti utilizzati per gli OrderItem sono associati termini di pagamento e condizioni.
Azione
- Il comando OrderProcess richiama il comando di attività ProcessOrder per effettuare quanto segue:
- Se l'ordine non viene bloccato (indicando che l'ordine non è stato modificato dalla preparazione del comando OrderPrepare) o se lo stato dell'ordine non è 'P', 'I', 'E', 'W', 'N' o 'B', viene attivata un'eccezione ECApplicationException.
- Quando il valore della colonna QUOTEGOODFOR nella tabella STORE non è NULL e sono stati specificati i parametri quoteExpiryPolicy e quoteExpiredURL e lo stato dell'ordine è 'P', 'I', 'W' o 'N', il comando controlla la data e l'ora dell'ultimo aggiornamento dell'ordine.
Se la data e l'ora correnti sono successive a quelle dell'ultimo aggiornamento più il numero di secondi specificato nella colonna QUOTEGOODFOR,
OrderProcess richiama il comando di attività PrepareOrder per aggiornare le quantità degli ordini e quindi effettua una delle seguenti operazioni in base al valore di quoteExpiryPolicy:
- Se il totale dell'ordine ricalcolato rimane inalterato e il parametro quoteExpiryPolicy non lo disabilita, procedere normalmente.
- Se il totale dell'ordine ricalcolato è inferiore e il parametro quoteExpiryPolicy non lo disabilita, procedere normalmente.
- Se il totale dell'ordine ricalcolato è superiore e il parametro quoteExpiryPolicy non lo disabilita, procedere normalmente.
- In caso contrario, non elaborare l'ordine, ma effettuare il reindirizzamento all'URL specificato dal parametro quoteExpiredURL
- Se viene abilitato l'inventario ATP:
- Gli articoli dell'ordine non ancora assegnati o respinti, o modificati successivamente all'ultima assegnazione o rifiuto, sono assegnati o respinti (se non è possibile assegnarli), richiamando il comando di attività AllocateInventory.
- Se non è possibile assegnare o respingere un articolo dell'ordine:
- Se è specificato il parametro noInventoryURL, il comando esegue un reindirizzamento a tale URL.
- In caso contrario, lo stato dell'ordine viene modificato a L.
- Se viene specificato il parametro availabilityChangeURL e il tempo disponibile stimato per un articolo dell'ordine viene posticipato superando il valore specificato dal parametro maxAvailabilityChange dopo l'assegnazione o il rifiuto, il comando restituisce un reindirizzamento a tale URL.
- Se il comando di attività AllocateInventory ha sbloccato l'ordine, indicando che il centro di evasione ordini per un articolo dell'ordine è stato modificato:
- I costi di spedizione e le tasse vengono ricalcolate e l'ordine viene bloccato richiamando il comando di attività ReprepareOrder. Se in tal modo il costo totale dell'ordine cambia e vengono specificati i parametri quoteExpiryPolicy e quoteExpiredUrl:
- Se il totale dell'ordine ricalcolato rimane inalterato e il parametro quoteExpiryPolicy non lo disabilita, procedere normalmente.
- Se il totale dell'ordine ricalcolato è inferiore e il parametro quoteExpiryPolicy non lo disabilita, procedere normalmente.
- Se il totale dell'ordine ricalcolato è superiore e il parametro quoteExpiryPolicy non lo disabilita, procedere normalmente.
- In caso contrario, non elaborare l'ordine, ma effettuare il reindirizzamento all'URL specificato dal parametro quoteExpiredURL
- I tempi di disponibilità offerti per l'articolo dell'ordine sono impostati sui tempi di disponibilità stimati correnti.
- Se lo stato dell'ordine è 'I', viene richiamato il comando di attività CheckOrder per verificare che l'ordine non è sia stato inoltrato per l'elaborazione.
- Il comando di attività CheckOrderAcceptance viene richiamato per verificare che i contratti per gli articoli dell'ordine siano attivi.
- La tabella ORDOPTIONS viene aggiornata per rispecchiare i valori dei parametri notifyMerchant e notifyShopper.
- L'indirizzo di fatturazione, se presente, come specificato dai parametri tcId o billToAddressId, viene memorizzato nell'ordine.
- I valori di parametro field1, field2 e field3, se specificati, sono memorizzati nell'ordine (fare riferimento alla tabella ORDERS).
- Se l'assegnazione di catalogo ATP non è abilitata e l'implementazione dell'interfaccia del comando di attività DoPayment non implementa anche l'interfaccia DoInventory, viene richiamato il comando UpdateInventory per eliminare dall'inventario gli articoli ordinati. L'interfaccia DoInventory non dichiara alcun metodo. Un comando di attività DoPayment che implementa questa interfaccia dichiara apertamente che l'implementazione del comando e le funzioni e i comandi correlati eseguiranno un aggiornamento dell'inventario.
- Viene richiamato il comando di attività DoPayment appropriato per eseguire ulteriori controlli errori ed per elaborare il pagamento, inoltrando le coppie nome-valore delle informazioni sui pagamenti dalla tabella ORDPAYINFO con i parametri inoltrati al comando OrderProcess URL. Se alcuni parametri inoltrati al comando OrderProcess URL presentano lo stesso nome delle coppie nome-valore della tabella
ORDPAYINFO, i valori precedenti sostituiscono gli ultimi. L'elenco delle coppie nome-valore è memorizzato nella tabella ORDPAYINFO e sostituisce le precedenti informazioni sul pagamento. I parametri specifici del comando OrderProcess
URL (sopra documentati, in questa pagina), tranne il parametro tcId, non sono considerati informazioni sul pagamento e non sono memorizzati nella tabella ORDPAYINFO.
- Se il comando di attività DoPayment restituisce un valore per lo stato dell'ordine, lo stato dell'ordine viene impostato con questo valore. In caso contrario, lo stato viene impostato su 'C' o, se l'assegnazione di inventario ATP è abilitata e l'ordine contiene articoli respinti, lo stato viene impostato su 'B'.
- Se lo stato dell'ordine non è 'I', viene richiamato il comando di attività ExtOrderProcess.
Il comando del programma di pianificazione PaySynchronizePM richiamerà successivamente il comando di attività ExtOrderProcess alla modifica dello stato dell'ordine 'I'.
- Viene richiamato il comando di attività OrderMessaging.
- Se il parametro notifyOrderSubmitted specifica 1 (Yes), viene richiamato il comando di attività OrderNotify per informare l'acquirente dell'inoltro dell'ordine.
- I dati di byte restituiti dal comando di attività DoPayment vengono inoltrati alla vista DirectView, per poi essere inoltrati direttamente al browser del cliente (ad esempio, per avviare un'applicazione "wallet" di pagamento elettronico). In caso contrario, la vista RedirectView viene inoltrata all'URL di reindirizzamento OrderOKView per visualizzare un avviso circa l'ordine al cliente.
Condizioni di eccezione
- Se l'ordine non è bloccato, il comando emette l'eccezione ECApplicationException
specificando il comando della visualizzazione errori OrderUnlockErrorView.
- Se l'acquirente ha immesso dati non corretti, il comando emette l'eccezione ECApplicationException specificando il comando di visualizzazione
errori BadOrderDataErrorView per inviare una notifica all'acquirente.
- Se l'ordine non è in sospeso, il comando lancia l'eccezione ECApplicationException che specifica il comando della visualizzazione errori OrderNoneErrorView.
- Se i contratti utilizzati per l'ordine non sono validi, il comando genera ECApplicationException.