Instruction OrderPrepare
Cette instruction peut être utilisée pour la détermination des prix,
des remises, des frais de port et des taxes. Si aucune référence de commande n'est spécifiée,
cette instruction prépare toutes les commandes des commerçants relevant du magasin
concerné.

Valeurs des paramètres
- http://host_name/path/
- (Obligatoire) Nom qualifié complet de votre serveur WebSphere Commerce Server et chemin de configuration
- 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.
- 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.
- URL
- (Obligatoire) URL devant être lancée lorsque l'instruction aboutit.
- storeId
- Numéro de référence du magasin pour lequel la commande doit être préparée.
- orderId
- Référence de la commande à pré-traiter. Si ce paramètre est omis,
cette instruction traite par défaut les commandes en attente. Reportez-vous à la rubrique
Abréviations de commandes pour obtenir une description.
- outOrderName
- Indique les noms des combinaisons nom-valeur à ajouter à l'URL de réacheminement. La valeur de chaque combinaison nom-valeur est le numéro de référence de la commande préparée. Si le nom n'est pas indiqué, le nom par défaut orderId sera utilisé.
- remerge
- Liste des OrderItems qui doivent être fusionnés avec d'autres OrderItems de la même commande et avec le même
attribut correlationGroup, si cela est possible. Les OrderItems ne fusionnent pas, à moins que leur InventoryStatus ne soit "NALC", ou qu'ils soient spécifiés par un ou plusieurs paramètres tels que allocate, backorder et reverse.
- merge
- Liste des OrderItems qui doivent être fusionnés avec d'autres OrderItems de la même commande si possible, sans distinction d'attributs correlationGroup.
- check
- Liste des OrderItems qui doivent être contrôlés par l'instruction d'activité CheckInventory.
- allocate
- Liste des OrderItems qui doivent être attribués à partir d'un stock existant.
- backorder
- Liste des OrderItems qui doivent être attribués à partir d'un stock prévu.
- reverse
- Liste des OrderItems dont les attributions doivent être préparées (en d'autres termes, les attributions doivent être retirées du stock existant ou prévu concerné).
Remarque : les paramètres remerge, merge, check, allocate, backorder et reverse sont applicables uniquement si le stock ATP est activé (voir la colonne ALLOCATIONGOODFOR dans la table STORE). Ils
représentent les listes d'articles de commande (OrderItems) qui seront transmises à l'instruction AllocateInventory, qui
appelle les instructions CheckInventoryAvailability, AllocateExistingInventory, AllocateExpectedInventory,
DeallocateExistingInventory et DeallocateExpectedInventory, comme indiqué ci-après. Ces paramètres acceptent également les
abréviations d'OrderItem, qui sont présentées en détails dans la rubrique d'aide Instructions du
sous-système commandes.
Les valeurs par défaut des paramètres ATP sont les suivantes :
- remerge=*
- merge=*n
- check=*n
- allocate=*
- backorder=*
- reverse=*
Exemple
L'exemple ci-après prépare la commande dont le numéro de référence est 1 puis la réachemine vers l'instruction
OrderDisplay pour la visualiser.
http://myhostname/webapp/wcs/stores/servlet/OrderPrepare?orderId=1
&URL=/webapp/commerce/OrderDisplay
Comportement
- Prépare les commandes spécifiées pour leur affichage (grâce à l'instruction OrderDisplay) ou leur traitement
(grâce à l'instruction OrderProcess).
En l'absence de référence de commande, l'instruction pré-traite toutes les commandes du client relevant du magasin indiqué.
- L'état des commandes indiquées doit être l'un des suivants : 'P', 'I', 'E', 'W', ou 'N'.
- L'instruction OrderPrepare appelle l'instruction PrepareOrder
pour effectuer les opérations suivantes pour chacune des commandes indiquées :
- Suppression des articles de commande générés (consultez la colonne PREPAREFLAGS dans la table ORDERITEMS).
- Vérification que tous les articles de la commande sont vendables (consultez la colonne BUYABLE dans la table CATENTRY).
- Si l'attribution de stock ATP est activée (voir colonne ALLOCATIONGOODFOR
dans la table STORE), appel de l'instruction
AllocateInventory
pour le traitement des OrderItems identifiés par les paramètres ATP
(merge, remerge, check, allocate, backorder et reverse), et extraction des estimations de
périodes de disponibilité, des décalages de livraison et des centres de distribution
pour les articles de commande attribués ou mis en amont. Les articles de commande peuvent
être divisés ou fusionnés avec cette instruction. La mise en oeuvre par défaut de cette instruction appelle les instructions GetEligibleFulfillmentCenters,
CheckInventoryAvailability,
AllocateExistingInventory,
AllocateExpectedInventory,
DeallocateExistingInventory,
et DeallocateExpectedInventory
afin d'effectuer les opérations indiquées par les paramètres ATP.
Ces tâches contrôlent RECEIPT, RADETAIL, et les tables associées afin de déterminer la disponibilité du stock existant et prévu.
- Si le stock ATP n'est pas activé, appel de l'instruction ResolveFulfillmentCenter
pour l'attribution d'un centre de distribution à chaque OrderItem, en fonction de la disponibilité du stock. La mise en oeuvre par défaut de cette instruction appelle l'instruction CheckInventory
pour la détermination de la disponibilité de stock. La mise en oeuvre par défaut de l'instruction CheckInventory utilise la table INVENTORY.
- Appel de l'instruction ValidateDynamicKitConfiguration.
- Extraction des nouveaux prix unitaires pour chaque article de commande, à l'exception de ceux dont les prix ont été remplacés manuellement (voir la colonne PREPAREFLAGS de la table ORDERITEMS), par l'appel de l'instruction GetContractSpecialPrice, ou, si cette dernière n'est pas définie, par l'appel de l'instruction GetBaseSpecialPrice.
- Multiplication de la quantité par le prix unitaire de chaque article de commande et stockage de ce dernier dans la colonne TOTALPRODUCT de la table ORDERITEMS.
- Recalcul des montants pour les calculs identifiés par la colonne
USAGEFLAGS dans la table STENCALUSG. Sont d'abord appelées l'ensemble des méthodes identifiées par la colonne CALMETHOD_ID_INI de la table STENCALUSG. Sont ensuite appelées toutes les méthodes identifiées par la colonne CALMETHOD_ID_APP. Pour une compatibilité en amont, si l'indicateur est défini pour l'utilisation -1, l'instruction ApplyOrderAdjustments est appelée, si elle est définie dans la table CMDREG, au lieu de la méthode identifiée par la colonne CALMETHOD_ID_APP de la table STENCALUSG. Pour une compatibilité en amont, si l'indicateur est défini pour l'utilisation -2, l'instruction ApplyOrderShippingCharges est appelée, si elle est définie dans la table CMDREG, au lieu de la méthode identifiée par la colonne CALMETHOD_ID_APP. Pour une compatibilité amont, si l'indicateur est défini pour l'utilisation -3 et -4, l'instruction ApplyOrderTaxes est appelée, si elle est définie dans la table CMDREG, au lieu des méthodes identifiées par la colonne CALMETHOD_ID_APP de la table STENCALUSG.
- Recréation des sous-commandes (lignes de la table SUBORDERS) pour chaque adresse de livraison, puis récapitulatif des données recalculées pour chacune des sous-commandes, par l'appel des méthodes identifiées par la colonne CALMETHOD_ID_SUM dans la table STENCALUSG pour chaque type de calcul identifié par la colonne CALUSGAEFLAGS.
- Verrouillage de la commande afin d'indiquer qu'elle est prête pour l'instruction OrderProcess. Le verrouillage peut être redéfini soit par expiration, en modifiant la commande
(par exemple, en utilisant l'instruction OrderItemUpdate), ou de façon explicite, par l'utilisation de l'instruction OrderUnlock. La période d'expiration d'un verrouillage est enregistrée dans la colonne QUOTEGOODFOR de la table STORE.
Conditions d'exception
- Si aucune commande ne correspond aux paramètres spécifiés, l'instruction lance l'exception ECApplicationException
en précisant l'instruction d'affichage des erreursErrorOrderNoneCmd.
- Si un des produits ou des articles de la commande ne peuvent être achetés, la commande lance l'exception ECApplicationException en précisant BadOrderDataErrorView (instruction d'affichage des erreurs).
Pour obtenir de plus amples informations sur les conditions d'exceptions pour les erreurs de commandes, reportez-vous à la section relative aux codes d'erreur pour les affichages d'erreurs.
- L'instruction lance l'exception ECApplicationException en précisant l'instruction d'affichage des erreurs RetrievePriceErrorView si une des conditions suivantes est vérifiée :
- Les accords commerciaux d'entrée (contrats) sont non valides ou non admissibles pour l'utilisation.
- Les accords commerciaux (contrats) en cours d'utilisation dans la commande appliquent des modes de paiement incompatibles.
- Les listes de prix ne peuvent être extraites pour aucun produit ou article.
- Si l'une des méthodes indiquées par la colonne USAGEFLAGS de la table STENCALUSG ne peut pas calculer une valeur pour chaque article de la commande, et si la colonne USAGEFLAGS de la table STENCALUSG indique qu'une valeur doit être calculée, une exception ECApplicationException est générée.
- Si une commande ne comporte pas d'OrderItems, une exception ECApplicationException est générée.