Instruction OrderItemAdd
Cette instruction ajoute des articles ou des produits à la liste des articles à expédier.

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.
- URL
- (Obligatoire) URL devant être lancée lorsque l'instruction aboutit.
- storeId
- (Obligatoire) Référence du magasin, indispensable car vous ne pouvez acheter auprès d'un centre commercial.
- catEntryId_i
- (Obligatoire) Numéro de référence des articles à placer dans la commande.
- partNumber_i
- Si spécifié, le paramètre catEntryId est ignoré. Les paramètres partNumber et memberId servent à déterminer une référence catentry_id en sélectionnant PARTNUMBER et MEMBER_ID dans la table CATENTRY. Cette instruction se comporte comme si la référence avait été spécifiée comme valeur de catEntryId.
- memberId_i
- Identificateur du membre qui possède le catalogue concerné par la commande.
- attrName_i
- Tout attribut distinct défini pour l'article.
- attrValue_i
- Valeur de l'attribut dans attrName.
- quantity_i
- (Obligatoire) Quantité de l'article à ajouter à la commande.
- UOM_i
- Unité de mesure pour quantity_i. Cette valeur doit correspondre à une des clés principales de la table QTYUNIT. Lorsqu'elle n'est pas précisée, alors la valeur de la colonne QUANTITYMEASURE de la table CATENTSHIP pour la rangée avec la même CATENTRY_ID que celle utilisée par OrderItem,
et la valeur du paramètre quantity_i est multipliée par la colonne NOMINALQUANTITY de la même rangée dans la table CATENTSHIP.
- addressId_i
- Numéro de référence de l'adresse d'expédition des produits et articles.
- shipModeId_i
- Numéro de référence du mode d'expédition utilisé pour le produit ou l'article.
- comment_i
- Commentaire à inclure dans les articles créés ou mis à jour.
- contractId_i
- Identificateur du contrat régissant la commande à laquelle est ajouté l'article ; il existe un contrat par défaut pour chaque magasin, mais vous avez la possibilité d'en définir d'autres.
- field1_i
- Valeur entière réservée au magasin.
- field2_i
- Valeur de type texte réservée au magasin. Ce paramètre peut contenir 254 caractères au maximum.
- offerId_i
- Identificateur de l'offre régissant la commande à laquelle est ajouté l'article.
- orderId
- Identificateur de la commande à laquelle est ajouté l'article.
- outOrderName
- Noms des numéros de référence des commandes créées ou ajoutées et
devant être ajoutées à l'URL de réacheminement. Utilisez ce paramètre
et outOrderItemName lors du chaînage des instructions.
- outOrderItemName
- Noms des numéros de référence des articles de commande créés ou mis à jour à ajouter à l'URL de réacheminement.
- listId
- ID de la liste d'articles. Ce paramètre permet à l'instruction
OrderItemAdd de créer une nouvelle commande avec
tous les articles de la liste.
- orderDesc
- Spécifie la description de la nouvelle commande créée par cette instruction.
- 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. 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.
- 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 de stock existant par l'instruction d'activité AllocateExistingInventory.
- backorder
- Liste des OrderItems qui doivent être contrôlés par l'instruction d'activité AllocateExpectedInventory. Si le même OrderItem est précisé par les paramètres d'affectation et de commande en amont, il ne peut être en amont s'il est affecté.
- reverse
- Liste d'OrderItems dont les affectations doivent être libérée (c'est-à-dire réaffectées à partir à partir d'un stock existant ou presque) en lançant comme il se doit les instructions d'activité DeallocateExistingInventory
ou DeallocateExpectedInventory.
- configurationId_i
- Si l'OrderItem représente un kit dynamique configuré, c'est l'ID de configuration.
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=*n
- merge=*n
- check=***
- allocate=*n
- backorder=*n
- reverse=*n
Exemple 1
L'exemple ci-après ajoute trois exemplaires du produit portant le numéro de référence 24 dans chacune des commandes
client actuellement en attente (c'est-à-dire uniquement les commandes en attente créées pour le magasin qui offre l'entrée
de catalogue 24) en précisant que ces commandes doivent être expédiées à l'adresse correspondant au numéro de
référence 2, puis il appelle l'instruction OrderItemDisplay.
http://myhostname/webapp/wcs/stores/servlet/OrderItemAdd?addressId=2
&URL=/webapp/wcs/stores/servlet/OrderItemDisplay&catEntryId=24&quantity=3
Exemple 2
L'exemple ci-après ajoute dix exemplaires de l'entrée de catalogue portant le numéro de référence 2 à la nouvelle commande en cours. Le paramètre orderId est ajouté à l'URL de réacheminement, sa valeur correspondant au numéro de référence de la
commande créée, puis l'instruction OrderItemDisplay est appelée.
http://myhostname/webapp/wcs/stores/servlet/OrderItemAdd?catEntryId=2&quantity=10
&orderId=**&outOrderName=orderId&URL=/webapp/wcs/stores/servlet/OrderItemDisplay
Exemple 3
L'exemple ci-après ajoute un groupe dont les composants sont les suivants :
Item 312200001
Item 312200301
Produit 312200200 avec attribut 312200201
http://myhostname/webapp/wcs/stores/servlet/OrderItemAdd?catEntryId_1=312200001
&quantity_1=1&shipModeId_1=1&catEntryId_2=312200301&quantity_2=1
&shipModeId_2=1&catEntryId_3=312200200&attrName_3=312200201
&attrValue_3=Value+2200200+1&quantity_3=1&shipModeId_3=1&URL=OrderItemDisplay
Exemple 4
L'exemple suivant ajoute au chariot deux produits ayant plusieurs attributs, la première entrée de catalogue ayant deux attributs et la seconde entrée de catalogue, trois attributs :
http://myhostname/webapp/wcs/stores/servlet/OrderItemAdd?catEntryId_1=111&attrName_1=1
&attrValue_1=a&attrName_1=2&attrValue_1=b&quantity_1=1&catEntryId_2=222&attrName_2=21
&attrValue_2=aa&attrName_2=22&attrValue_2=bb&attrName_2=33&attrValue_2=cc&quantity_2=1
&URL=OrderItemDisplay
Comportement
- L'instruction appelle ResolveOrdersCmd avec le paramètre d'entrée orderId afin d'obtenir une liste des commandes. Si
l'orderId n'est pas précisé, la liste par défaut répertorie les commandes en attente courantes.
- L'instruction s'exécute de la façon suivante pour chaque groupe d'énumération 'i' des paramètres :
- Si le paramètre orderItemId_i est précisé, les paramètres partNumber_i et
catEntryId_i sont ignorés. L'instruction essaie de mettre à jour l'article commandé.
- Si le paramètre partNumber_i est précisé, le paramètre catEntryId_i est ignoré. L'instruction utilise partNumber_i avec le paramètre en option memberId_i pour chercher l'entrée du catalogue. Si le memberId_i n'est pas précisé, le member ID par défaut est le member ID du propriétaire du magasin.
- Si le paramètre orderItemId_i n'est pas précisé et que ni le paramètrepartNumber_i ni le paramètre catEntryId_i ne le sont, l'instruction tente de créer un nouvel article commandé et de l'insérer dans toutes les commandes résolues. Si la liste des commandes résolues est vide, une nouvelle commande en attente sera créée.
- Lorsqu'une nouvelle commande est créée, member ID est l'utilisateur courant dans le contexte de l'instruction et la devise est également choisie parmi celle du contexte d'instruction.
- Lorsqu'il crée un nouvel article commandé, le paramètre quantity_i est exigé et doit être un numéro positif. Le member ID de l'article commandé est pris du member ID de la commande.
Le storeId est également exigé.
- Si le même groupe d'énumération 'i' est spécifié plus d'une fois, un seul sera efficace, les autres seront ignorés.
- L'instruction utilise le reste des paramètres pour mettre à jour l'article commandé, qu'elle mette à jour des articles de commande existants lorsque orderItemId_i est spécifié, ou qu'elle crée de nouveaux articles de commandes lorsque partNumber_i ou catEntryId_i sont spécifiés.
- Si le paramètre addressId_i n'est pas précisé pour un utilisateur enregistré, la valeur par défaut est
l'addressId figurant dans la table ADDRESS (où la colonne STATUS contient la valeur P et colonne NICKNAME a pour valeur l'ID de connexion de l'utilisateur obtenu à partir de la colonne LOGONID de la table USERREG). Si l'adresse est introuvable dans la table ADDRESS, l'address_id
de l'article de commande est NULL dans la table ORDERITEMS.
- Si la quantity_i est zéro, l'article commandé est supprimé des commandes.
- Si le paramètre shipModeId_i n'est pas indiqué, la valeur par défaut est prise à partir de la table
STOREDEF.
- L'instruction d'activité GetContractUnitPriceCmd est appelée afin d'obtenir le prix contractuel du produit ou de
l'article en utilisant les accords commerciaux (contrats) précisés ou admissibles, sauf pour les articles commandés qui
ont été générés ou dont le prix a été entré manuellement (remplacé par l'administrateur). Tous les accords commerciaux
d'entrée (contrats) à utiliser seront vérifiés afin de s'assurer qu'ils appliquent des modes de paiement compatibles. La devise est toujours la même que celle de la commande.
- Chaque commande dans laquelle un ou plusieurs articles commandés ont été mis à jour ou insérés est déverrouillée et les zones lastUpdate sont mises à jour avec l'actuel horodatage.
- Une fois que tous les groupes d'énumération ont été exécutés, l'instruction effectue une mise à jour de distribution
et un contrôle du stock pour tous les articles commandés modifiés ou crées. Si l'ATP est activé, il lance AllocateInventoryCmd. Sinon, il lance ResolveFulfillmentCenterCmd qui est compatible en défilement arrière.
- Lance l'instruction d'activité ExtendOrderItemProcessCmd pour exécuter d'autres traitements afin de trouver toute demande unique.
- Définissez un RedirectView qui se redirigé vers l'URL spécifié.
Conditions d'exception
- Selon l'erreur, différentes tâches d'exception sont appelées.
- Si une valeur de paramètre est non valide, l'instruction lance ECApplicationException avec un message:_ERR_INVALID_INPUT et un message d'erreur: RLInvalidInputErrorView.
- Si le partNumber est précisé et qu'il n'est pas disponible dans le catalogue, l'instruction lance ECApplicationException avec un message:_ERR_PROD_NOT_EXISTING et un message d'erreur: RLBadPartNumberErrorView
- ECApplicationException sera également lancée si les erreurs suivantes se produisent :
- 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.
- Si ATP n'est pas activé, l'instruction de commande ResolveFulfillmentCenterCmd doit lancer ECApplicationException avec un message : _API_BAD_INV et une fenêtre d'erreur :
ResolveFulfillmentCenterErrorView.