Instruction OrderProcess
Cette instruction transmet une commande. La commande doit avoir été verrouillée par
OrderPrepare. Lorsque l'instruction OrderProcess est lancée, la commande ne peut plus être
annulée par OrderCancel.

Valeurs des paramètres
- http://host_name/path/
- (Obligatoire) Nom qualifié complet de votre serveur WebSphere Commerce Server et chemin de configuration.
- forUser
- ID de connexion de l'utilisateur au nom duquel l'instruction est exécutée. Seule une personne disposant des droits de traitement des commandes peut spécifier ce paramètre.
- forUserId
- Identique à forUser, mais identifie l'utilisateur par l'ID d'utilisateur interne, tel qu'il est indiqué dans la table USERS.
- langId
- Définit ou restaure la langue préférée pour la durée de la session ; les langues prises en charge pour un
magasin figurent dans la table STORELANG.
- storeId
- Référence du magasin concerné par l'instruction. Cette valeur est
ignorée si aucune erreur ne se produit pendant le traitement de la commande. Elle n'est alors utilisée que pour lancer le gestionnaire
d'exception du magasin approprié.
- orderId
- (Obligatoire) numéro de référence de la commande.
- billtoAddressId
- Numéro de référence de l'adresse de facturation.
- field1, field2 et field3
- Zones personnalisables
- notifyMerchant
- Indique si le magasin doit avoir notification de la fin du traitement de la commande.
1=Oui
0=Non
- notifyShopper
- Indique si le client doit avoir notification de la fin du traitement de la commande.
1=Oui
0=Non
- quoteExpiredURL
- Spécifie l'URL de réacheminement si le total de la commande a expiré conformément aux modalités d'expiration
spécifiées par le paramètre quoteExpiryPolicy
- quoteExpiryPolicy
- Définit le comportement de l'instruction si le total de la commande expire ou si le centre de distribution d'un article de commande change pendant l'attribution de stock. C'est le cas lorsque l'heure actuelle est supérieure ou égale à l'horodatage de la dernière mise à jour de la commande majoré du nombre de secondes spécifié dans la colonne QUOTEGOODFOR de la table STORE. Ce paramètre peut avoir trois valeurs :
- alwaysProceed = toujours poursuivre le traitement de la commande après le recalcul du total de la commande.
- stopOnBiggerTotal = poursuivre le traitement de la commande si le total de la commande recalculé
est inchangé ou inférieur au total de la commande précédente. Autrement, réacheminer vers une URL spécifiée par quoteExpiredUrl.
- neverProceed= toujours réacheminer vers l'URL spécifiée par le paramètre quoteExpiredUrl.
- notifyOrderSubmitted
- Indique si le client doit être averti lorsque la commande a bien été transmise pour traitement.
1=Oui
0=Non (par défaut)
- availabilityChangeURL
- Indique l'URL de réacheminement lorsque l'heure de disponibilité et le délai de livraison prévus
pour un article de commande ont dépassé (à la suite d'attribution de stock ou de
stock en amont) la variation spécifiée dans le paramètre maxAvailabilityChange. Ce paramètre est ignoré
si l'attribution de stock n'est pas activée.
- maxAvailabilityChange
- Indique l'intervalle de temps, en secondes, mentionné dans la description du
paramètre availabilityChangeURL. La valeur par défaut est 3600 (une heure). Ce paramètre
est ignoré si le paramètre availabilityChangeURL n'est pas précisé, ou si l'attribution
de stock ATP n'est pas activée.
- noInventoryURL
- Indique l'URL de réacheminement lorsqu'un des articles de la commande ne peut être attribué ou mis en amont. Ce paramètre est ignoré
si l'attribution de stock n'est pas activée.
- tcId
- Identificateur des modalités (voir la table TERMCOND). Si cet ID est
indiqué et qu'il identifie un PaymentTC, et si ce PaymentTC indique les valeurs memberId et address nickName
(reportez-vous à la rubrique consacrée au mappage de PaymentTC), les valeurs memberId et address nickName sont utilisées
pour déterminer l'adresse de facturation, auquel cas le paramètre billToAddressId est ignoré.
Remarques à propos des paiements
L'instruction OrderProcess ne gère pas seule les paiements. Pour cela,
utilisez la classe d'interface DoPaymentCmd,
implémentée par l'instruction d'activité DoPayment. Les paramètres qui sont affectés de l'instruction OrderProcess à cette instruction peuvent être quelconques, bien que généralement ils mettraient en application les informations relatives aux cartes de crédit.
WebSphere Commerce fournit deux classes d'implémentation de l'instruction OH , les classes DoPaymentCmdImpl
et DoPaymentMPFCmdImpl. La classe DoPaymentCmdImpl est
un exemple d'implémentation permettant d'afficher le mode d'écriture de l'implémentation de l'instruction d'activité DoPayment qui fonctionne avec l'instruction OrderProcess.
La classe DoPaymentMPFCmdImpl est la classe d'implémentation standard conçue pour être utilisée avec IBM WebSphere Payment
Manager, version 3.1 et inclut une prise en charge des fonctions de commerce interentreprises introduites par cette
version de WebSphere Commerce Business Edition.
Remarques sur la notification des commandes
Si vous devez configurer la notification de commande, vous devrez :
- activer la fonction de messagerie sortante,
- créer des modèles de composition de messages afin de composer des messages de notification de commandes.
Exemple 1
L'instruction ci-après traite le passage d'un commande dont le numéro de référence est 3.
http://myhostname/webapp/wcs/stores/servlet/OrderProcess?orderId=3
Exemple 2
Si l'on suppose que Payment Manager a déjà été configuré, cette instruction affecte les informations relatives au paiement du client à Payment Manager. Le paramètre policyId=200 renvoie à la méthode OfflineCard utilisée par défaut par Payment Manager.
http://myhostname/webapp/wcs/stores/servlet/OrderProcess?storeId=34
&orderId=556677&policy=200&cardBrand=Visa
&cardNumber=41111111111111111&cardExpiryMonth=12&cardExpiryYear=2001
Remarque : le paramètre payMethodId est uniquement pris en charge pour la comptabilité en amont.
Pour les nouvelles cassettes Payment Manager et les nouvelles fonctions de commerce interentreprises, utilisez plutôt le paramètre policyId (comme dans l'exemple 2). Pour voir une liste de règles de paiement définies, reportez-vous au lien connexe ci-dessous.
La classe DoPaymentMPFCmdImpl prend en charge un autre paramètre appelé tcId, utilisé pour préciser l'ID des modalités de paiement à utiliser pour une commande. Les modalités doivent faire partie des modalités de paiement courantes précisées
dans les contrats associés aux articles commandés. Pour vous assister dans la sélection d'un fichier JSP de modalités de paiement courantes, utilisez UsablePaymentTCListDataBean. Le paramètre tcId est obligatoire si les contrats utilisés pour les OrderItems est associé à des modalités de paiement.
Comportement
- L'instruction OrderProcess appelle l'instruction d'activité ProcessOrder pour effectuer les tâches suivantes :
- Si la commande n'est pas verrouillée (ce qui signifie que la commande n'a pas été modifiée depuis qu'elle a été préparée à l'aide de l'instruction OrderPrepare), ou si la commande n'est pas à l'état 'P', 'I', 'E', 'W',
'N' ou 'B', une exception ECApplicationException est générée.
- Lorsque la valeur de la colonne QUOTEGOODFOR dans la table STORE n'est pas NULL, que les paramètres quoteExpiryPolicy et quoteExpiredURL sont indiqués et que
la commande est à l'état 'P', 'I', 'W' ou 'N', l'instruction vérifie l'horodatage de la dernière
mise à jour de la commande.
Si l'heure en cours est supérieure ou égale à l'horodatage de la dernière mise à jour plus le nombre de secondes spécifié dans la colonne QUOTEGOODFOR, OrderProcess appelle PrepareOrder et lance l'une des opérations suivantes, en fonction de la valeur de quoteExpiryPolicy :
- Si le total recalculé de la commande est inchangé et si le paramètre
quoteExpiryPolicy ne l'interdit pas, la procédure s'exécute normalement.
- Si le total recalculé de la commande est inférieur et si le paramètre
quoteExpiryPolicy ne l'interdit pas, la procédure s'exécute normalement.
- Si le total recalculé de la commande est supérieur et si le paramètre
quoteExpiryPolicy l'autorise, la procédure s'exécute normalement.
- Sinon, le système ne traite pas la commande et réachemine plutôt vers l'URL spécifiée par le paramètre quoteExpiredURL
- Si l'attribution de stock ATP est activée :
- Tous les orderitems qui ne sont pas encore affectés ou commandés en amont, ou ceux qui ont été modifiés
depuis leur dernière affectation ou commande en amont, sont affectés ou commandés en amont s'ils ne peuvent pas être affectés,
par l'appel de l'instruction
AllocateInventory.
- Si des articles de commande ne peuvent pas être affectés ou commandés en amont :
- Si le paramètre noInventoryURL est précisé, l'instruction renvoie un réacheminement vers cette adresse URL.
- Sinon, la commande passe à l'état L et l'instruction est retournée.
- Si le paramètre availabilityChangeURL est indiqué et que les dates de disponibilité prévues
pour des articles de commande sont repoussées à une date postérieure à celle indiquée par le paramètre
maxAvailabilityChange lors de leur attribution ou commande en amont, l'instruction renvoie un
réacheminement vers cette adresse URL.
- Si l'instruction AllocateInventory déverrouille la commande, en indiquant que le centre de distribution d'un article de la commande a été modifié :
- Les frais de port et le montant des taxes sont recalculés, la commande est verrouillée, via l'appel de l'instruction ReprepareOrder. Si cette opération modifie le montant total de la commande, et que les paramètres quoteExpiryPolicy et quoteExpiredUrl sont indiqués :
- Si le total recalculé de la commande est inchangé et si le paramètre
quoteExpiryPolicy ne l'interdit pas, la procédure s'exécute normalement.
- Si le total recalculé de la commande est inférieur et si le paramètre
quoteExpiryPolicy ne l'interdit pas, la procédure s'exécute normalement.
- Si le total recalculé de la commande est supérieur et si le paramètre
quoteExpiryPolicy l'autorise, la procédure s'exécute normalement.
- Sinon, le système ne traite pas la commande et réachemine plutôt vers l'URL spécifiée par le paramètre quoteExpiredURL
- Les dates de disponibilité prévues pour l'article de commande sont redéfinies aux dates en cours.
- Si la commande est à l'état 'I', l'instruction CheckOrder est appelée afin de vérifier qu'elle n'a pas été soumise pour traitement.
- L'instruction CheckOrderAcceptance est appelée afin de vérifier que les contrats de l'article de commande sont actifs.
- La table ORDOPTIONS est mise à jour afin d'indiquer les nouvelles valeurs des paramètres notifyMerchant et notifyShopper.
- L'adresse de facturation, le cas échéant, comme indiqué par les paramètres tcID ou billToAddressId, est stockée dans la commande.
- Les valeurs de paramètre field1, field2 et field3, le cas échéant, sont stockées dans la commande (consulter la table ORDERS).
- Si l'attribution de stock ATP n'est pas activée, et si la mise en oeuvre de l'interface de l'instruction DoPayment ne provoque pas celle de l'interface DoInventory, l'instruction UpdateInventory est appelée pour décrémenter le stock des articles commandés. (L'interface DoInventory ne déclare aucune méthode. Une instruction
DoPayment qui met en oeuvre cette interface déclare que la mise en oeuvre de l'instruction ou des fonctions et instructions qui lui sont associées vont procéder à la mise à jour du stock.)
- L'instruction DoPayment appropriée est appelée pour une vérification supplémentaire des erreurs et le traitement des paiements, par la transmission des données de paiement (paires nom-valeur) à partir de la table
ORDPAYINFO, et la fusion avec les paramètres transmis à l'instruction
OrderProcess URL. Si l'un des paramètres transmis à l'instruction OrderProcess URL comporte le même nom que l'une des
paires nom-valeur de la table ORDPAYINFO, les valeurs les plus anciennes remplace les plus récentes. La liste fusionnée des paires est stockée dans la table ORDPAYINFO, et remplace les données de paiement précédentes. Cependant, les paramètres
plus spécifiques de l'instruction OrderProcess URL (ceux décrits plus haut), à l'exception du paramètre tcId, ne sont pas
considérés comme des données de paiement et ne sont donc pas stockés dans la table ORDPAYINFO.
- Si l'instruction DoPayment renvoie une valeur d'état de commande, l'état de la commande prend cette valeur. Sinon, la commande passe à l'état 'C' ou, si l'attribution de stock ATP est activée et que la commande contient des
articles commandés en amont, la commande passe à l'état 'B'.
- Si la commande n'est pas à l'état 'I', l'instruction ExtOrderProcess est appelée.
(L'instruction du planificateur PaySynchronizePM appellera l'instruction ExtOrderProcess ultérieurement, lorsque la commande passera à un état différent de 'I'.)
- L'instruction OrderMessaging est appelée.
- Si le paramètre notifyOrderSubmitted indique 1 (Oui), l'instruction OrderNotify est appelée pour informer le client que la commande a été soumise.
- Si l'instruction DoPayment a retourné des données en octets, elle sont transmises à la vue
DirectView, avant d'être transmises directement dans le navigateur du client (par exemple, pour lancer un paiement électronique de type application de portefeuille). Sinon, la vue RedirectView est transmise via l'URL de de réacheminement afin d'afficher un accusé de prise en compte de commande pour le client.
Conditions d'exception
- Si la commande n'est pas verrouillée, l'instruction signale l'exception ECApplicationException spécifiant l'instruction d'affichage des erreurs OrderUnlockErrorView.
- Si le client a saisi des données erronées, l'instruction signale l'exception ECApplicationException spécifiant l'instruction d'affichage des erreurs BadOrderDataErrorView pour avertir le client.
- Si la commande n'est pas en attente, l'instruction signale l'exception
ECApplicationException spécifiant l'instruction d'affichage des erreurs
OrderNoneErrorView.
- Si tous les contrats ne sont pas valides, l'instruction lance ECApplicationException.