Codes d'erreur¶
Quand le module refuse une demande, il répond en HTTP 400 avec un corps de trois champs : un code, des paramètres et un message.
{
"code": "STOCKS.OPERATION.SOURCE_REQUIRED",
"params": {},
"message": "Vous devez renseigner l'emplacement source !"
}
Le code et les params forment le contrat stable : c'est sur eux qu'un
programme réagit, jamais sur le texte. Le message répète la raison dans la
langue de l'appelant — le français pour un appel machine — afin qu'un client qui
ne lit que le message continue de fonctionner. Ce contrat est additif : de
nouveaux codes peuvent apparaître, les existants ne changent pas de sens. Une
réponse sans code est un refus hérité, pas encore migré ; traitez-la comme une
erreur générique.
Les paramètres avant le texte
Les valeurs citées dans un message — un article, un lot, une quantité — sont
aussi présentes dans params. Extrayez-les de là plutôt que de les lire
dans la phrase : la phrase peut être reformulée, la clé non.
Opérations¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.OPERATION.NOT_FOUND |
— | L'opération n'a pas été trouvée ! |
STOCKS.OPERATION.NOT_DRAFT |
— | Le document doit être en mode brouillon pour être modifiée ! |
STOCKS.OPERATION.NOT_DRAFT_TO_VALIDATE |
— | L'Opération doit être en mode brouillon pour être validée ! |
STOCKS.OPERATION.NOT_VALIDATED |
— | L'Opération doit être validée pour être exécutée ! |
STOCKS.OPERATION.EXECUTED_UNDELETABLE |
— | Vous ne pouvez pas supprimer une opération exécutée ! |
STOCKS.OPERATION.CANCEL_REQUIRES_EXECUTED |
operation |
L'opération operation doit être exécutée pour être annulée |
STOCKS.OPERATION.RETURN_TYPE_REQUIRED |
operation |
Le type de retour doit être défini pour annuler l'opération operation |
STOCKS.OPERATION.ALREADY_CANCELLED |
operation |
Une opération d'annulation existe déjà pour l'opération operation |
STOCKS.OPERATION.SOURCE_REQUIRED |
— | Vous devez renseigner l'emplacement source ! |
STOCKS.OPERATION.DESTINATION_REQUIRED |
— | Vous devez renseigner l'emplacement de destination ! |
STOCKS.OPERATION.SOURCE_EQUALS_DESTINATION |
— | L'emplacement source doit être différent de l'emplacement de destination ! |
STOCKS.OPERATION.SOURCE_MUST_BE_VIRTUAL |
— | Vous devez indiquer un emplacement virtuel comme emplacement source ! |
STOCKS.OPERATION.SOURCE_MUST_BE_INTERNAL |
— | Vous devez indiquer un emplacement interne comme emplacement source ! |
STOCKS.OPERATION.DESTINATION_MUST_BE_VIRTUAL |
— | Vous devez indiquer un emplacement virtuel comme emplacement de destination ! |
STOCKS.OPERATION.DESTINATION_MUST_BE_INTERNAL |
— | Vous devez indiquer un emplacement interne comme emplacement de destination ! |
STOCKS.OPERATION.PARENT_LOCATION_AS_SOURCE |
— | Un emplacement parent ne peut pas servir de source d'opération |
STOCKS.OPERATION.PARENT_LOCATION_AS_DESTINATION |
— | Un emplacement parent ne peut pas servir de destination d'opération |
STOCKS.OPERATION.INTERNAL_LOCATION_REQUIRED |
— | Vous devez sélectionner au moins un emplacement interne ! |
STOCKS.OPERATION.SEQUENCE_EMPTY |
— | La séquence est vide ! |
STOCKS.OPERATION.REFERENCE_TAKEN |
— | Cette référence existe déjà ! |
STOCKS.OPERATION.CATEGORY_UNSUPPORTED |
— | Catégorie d'opération non prise en charge ! |
STOCKS.OPERATION.MUST_BE_INBOUND |
— | L'opération doit être une opération d'entrée ! |
STOCKS.OPERATION.MUST_BE_OUTBOUND |
— | L'opération doit être une opération de sortie ! |
STOCKS.OPERATION.MUST_BE_INTERNAL |
— | L'opération doit être une opération interne ! |
Lignes d'opération¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.OPERATION_LINE.NOT_FOUND |
— | Le mouvement de l'opération n'a pas été trouvé ! |
STOCKS.OPERATION_LINE.QUANTITY_NOT_POSITIVE |
— | La quantité doit être supérieure 0 ! |
STOCKS.OPERATION_LINE.QUANTITY_INVALID |
— | Quantité invalide : elle ne peut pas être inférieure ou égale à 0 ! |
STOCKS.OPERATION_LINE.COST_NEGATIVE |
— | Le coût de l'article ne peut pas être négatif ! |
STOCKS.OPERATION_LINE.AMOUNT_NOT_POSITIVE |
— | Vous devez entrer un montant positif ! |
STOCKS.OPERATION_LINE.MOVEMENT_ALREADY_EXECUTED |
— | Le mouvement a déjà été exécuté ! |
STOCKS.OPERATION_LINE.PARENT_LOCATION_AS_DESTINATION |
— | Vous ne pouvez pas utiliser un emplacement parent comme emplacement de destination ! |
STOCKS.OPERATION_LINE.STOCK_INSUFFICIENT |
article, available, requested |
Le stock de l'article article est atteint ! Quantité en stock : available / Quantité à retirer : requested |
STOCKS.OPERATION_LINE.BATCH_NOT_IN_LOCATION |
location, batch |
L'emplacement location ne contient pas le lot batch ! |
STOCKS.OPERATION_LINE.BATCH_INSUFFICIENT |
batch, article, location |
Le lot batch ne contient pas suffisamment de article dans l'emplacement location ! |
Inventaires¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.INVENTORY.NOT_FOUND |
— | L'inventaire est introuvable ! |
STOCKS.INVENTORY.INTERNAL_LOCATION_REQUIRED |
— | Vous devez sélectionner au moins un emplacement interne ! |
STOCKS.INVENTORY.LOCATION_MUST_BE_INTERNAL |
— | L'emplacement doit être interne ! |
STOCKS.INVENTORY.LOCATION_WAREHOUSE_MISMATCH |
— | L'emplacement ne correspond pas à l'entrepôt sélectionné ! |
STOCKS.INVENTORY.LOCATION_NOT_OF_INVENTORY_WAREHOUSE |
— | L'emplacement ne correspond pas à l'entrepôt de l'inventaire ! |
STOCKS.INVENTORY.LOCATION_NOT_OF_GIVEN_WAREHOUSE |
— | L'emplacement ne correspond pas à l'entrepôt fourni ! |
STOCKS.INVENTORY.ADJUSTMENT_LOCATION_MUST_BE_INTERNAL |
— | L'emplacement doit être interne pour les ajustements d'inventaire ! |
STOCKS.INVENTORY.PERIOD_AND_TYPE_REQUIRED |
— | Les informations de période et de type sont obligatoires |
STOCKS.INVENTORY.COUNTED_QUANTITY_NEGATIVE |
— | La quantité inventoriée doit être supérieure ou égale à 0 ! |
STOCKS.INVENTORY.TREATED_LINE_REQUIRED |
— | L'inventaire doit avoir au moins une ligne traitée ! |
STOCKS.INVENTORY.CLOSED_NOT_VALIDATABLE |
— | Un inventaire fermé ne peut être validé ! |
STOCKS.INVENTORY.CLOSED_NOT_EXECUTABLE |
— | Impossible d'exécuter un inventaire clôturé ! |
STOCKS.INVENTORY.CLOSED_NOT_EDITABLE |
inventory |
Un inventaire clôturé ne peut pas être modifié ! |
STOCKS.INVENTORY.CLOSED_NOT_REOPENABLE |
— | Impossible de réouvrir un inventaire clôturé ! |
STOCKS.INVENTORY.ALREADY_CLOSED |
— | L'inventaire a déjà été clôturé ! |
STOCKS.INVENTORY.ADJUSTMENTS_REQUIRED |
— | Vous devez appliquer les ajustements avant de finaliser ! |
STOCKS.INVENTORY.ADJUSTMENT_TYPES_MISSING |
inventory |
Types d'opération pour ajustement introuvables id inventory |
STOCKS.INVENTORY.LINES_TREAT_AFTER_VALIDATION |
— | Impossible de traiter les lignes après validation ! |
STOCKS.INVENTORY.LINES_UNTREAT_AFTER_VALIDATION |
— | Impossible de détraiter les lignes après validation ! |
STOCKS.INVENTORY.VALIDATED_UNDELETABLE |
— | Impossible de supprimer un inventaire validé ou clôturé ! |
STOCKS.INVENTORY.NOT_CANCELABLE |
— | L'inventaire ne peut pas être annulé dans son état actuel ! |
STOCKS.INVENTORY.NOT_CANCELED |
— | L'inventaire n'est pas annulé ! |
STOCKS.INVENTORY.IMPORT_FILE_INVALID |
line, column |
Fichier inventaire invalide à la ligne line pour la colonne column |
Lignes d'inventaire¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.INVENTORY_LINE.NOT_FOUND |
— | La ligne d'inventaire est introuvable ! |
STOCKS.INVENTORY_LINE.REAL_QUANTITY_ON_STOCKOUT |
— | La quantité réelle ne peut pas être > 0 lorsque l'état est Rupture de stock ! |
STOCKS.INVENTORY_LINE.TREAT_AFTER_VALIDATION |
— | Impossible de traiter/détraiter une ligne après validation ! |
STOCKS.INVENTORY_LINE.SPLIT_QUANTITY_INVALID |
— | La quantité de scission doit être > 0 et < quantité théorique ! |
STOCKS.INVENTORY_LINE.LOCATION_MUST_BE_INTERNAL |
location |
L'emplacement doit être interne id location |
STOCKS.INVENTORY_LINE.LOCATION_WAREHOUSE_MISMATCH |
warehouse |
L'emplacement ne correspond pas à l'entrepôt id warehouse |
STOCKS.INVENTORY_LINE.LOCATION_NOT_OF_INVENTORY |
inventory |
L'emplacement n'est pas associé à l'inventaire id inventory |
STOCKS.INVENTORY_LINE.ARTICLE_ALREADY_LISTED |
inventory |
L'article est déjà présent dans l'inventaire id inventory |
Articles¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.ARTICLE.NOT_FOUND |
— | L'article n'a pas été trouvé ! |
STOCKS.ARTICLE.LABEL_REQUIRED |
— | Vous devez renseigner le libellé ! |
STOCKS.ARTICLE.LABEL_MISSING |
— | Vous devez renseigner un libellé ! |
STOCKS.ARTICLE.REFERENCE_MISSING |
— | Vous devez renseigner une référence ! |
STOCKS.ARTICLE.INTERNAL_REFERENCE_REQUIRED |
— | Vous devez renseigner la référence interne ! |
STOCKS.ARTICLE.PACKAGING_REQUIRED |
— | Vous devez renseigner le conditionnement de l'article ! |
STOCKS.ARTICLE.INTERNAL_REFERENCE_TAKEN |
— | Cette référence interne existe déjà ! |
STOCKS.ARTICLE.REFERENCE_TAKEN |
— | Cette référence est déjà utilisée ! |
STOCKS.ARTICLE.NOT_STORABLE |
— | Cet article n'est pas stockable |
STOCKS.ARTICLE.HAS_MOVEMENTS |
— | Des mouvements de stocks ont déjà été réalisés sur cet article ! |
STOCKS.ARTICLE.DELIVERY_TYPE_MISSING |
— | Aucune opération de livraison n'est configurée ! |
STOCKS.ARTICLE.RECEPTION_TYPE_MISSING |
— | Aucune opération de réception n'est configurée ! |
STOCKS.ARTICLE.CONVERSION_STOCK_INSUFFICIENT |
article, available, requested |
Il n'y a pas suffisamment de article. Stock actuel : available / Quantité à retirer : requested |
STOCKS.ARTICLE.CONVERSION_NOT_MULTIPLE |
quantity, rule |
quantity n'est pas un multiple de rule ! |
STOCKS.ARTICLE.CONVERSION_QUANTITY_NOT_MULTIPLE |
quantity, target |
La quantité à convertir (quantity) n'est pas un multiple de la quantité de l'article cible (target) ! |
STOCKS.ARTICLE.CONVERSION_TARGET_NOT_STORABLE |
source, target, article |
La conversion de source en target a échoué : l'article article n'est pas un article stockable ! |
STOCKS.ARTICLE.CONVERSION_FAILED |
sourceQuantity, source, targetQuantity, target |
La conversion de sourceQuantity source en targetQuantity target a échoué ! |
STOCKS.ARTICLE.CONVERSION_FAILED_DETAILED |
source, sourceQuantity, target, targetQuantity |
La conversion de source (quantité=sourceQuantity) en target (quantité=targetQuantity) a échoué ! |
Familles et sous-familles¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.ARTICLE_FAMILY.NOT_FOUND |
— | La famille d'article n'a pas été trouvée ! |
STOCKS.ARTICLE_FAMILY.LABEL_REQUIRED |
— | Vous devez renseigner le libellé ! |
STOCKS.ARTICLE_FAMILY.NAME_REQUIRED |
— | Le libellé ne peut pas être vide ! |
STOCKS.ARTICLE_FAMILY.UNDELETABLE |
— | Vous ne pouvez pas supprimer cette famille ! |
STOCKS.ARTICLE_SUB_FAMILY.NOT_FOUND |
— | La sous-famille n'a pas été trouvée ! |
STOCKS.ARTICLE_SUB_FAMILY.CODE_NOT_FOUND |
code |
La sous-famille de code code est introuvable ! |
STOCKS.ARTICLE_SUB_FAMILY.CODE_REQUIRED |
— | Vous devez fournir un code ! |
STOCKS.ARTICLE_SUB_FAMILY.LABEL_REQUIRED |
— | Vous devez fournir un libellé ! |
STOCKS.ARTICLE_SUB_FAMILY.NAME_REQUIRED |
— | Le libellé ne peut pas être vide ! |
Plannings¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.ARTICLE_PLANNING.NOT_FOUND |
— | Les données de planification n'ont pas été trouvées ! |
STOCKS.ARTICLE_PLANNING.LOCATION_NOT_OF_WAREHOUSE |
— | L'emplacement n'appartient pas à cet entrepôt ! |
STOCKS.ARTICLE_PLANNING.MAXIMUM_NEGATIVE |
— | Le stock maximum ne peut pas être négatif ! |
STOCKS.ARTICLE_PLANNING.SAFETY_NEGATIVE |
— | Le stock de sécurité ne peut pas être négatif ! |
STOCKS.ARTICLE_PLANNING.MINIMUM_NEGATIVE |
— | Le stock minimum ne peut pas être négatif ! |
Emplacements¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.LOCATION.NOT_FOUND |
— | L'emplacement n'a pas été trouvé ! |
STOCKS.LOCATION.DELETE_TARGET_NOT_FOUND |
— | L'emplacement à supprimer n'a pas été trouvé ! |
STOCKS.LOCATION.HAS_OPERATIONS |
— | Des opérations ont déjà été effectuées sur cet emplacement ! |
STOCKS.LOCATION.LABEL_REQUIRED |
— | Vous devez renseigner le libellé ! |
STOCKS.LOCATION.LABEL_MISSING |
— | Vous devez renseigner un libellé ! |
STOCKS.LOCATION.SHORT_NAME_REQUIRED |
— | Vous devez renseigner le nom court ! |
STOCKS.LOCATION.SHORT_NAME_MISSING |
— | Vous devez renseigner un nom court ! |
STOCKS.LOCATION.OWN_PARENT |
— | Un emplacement ne peut pas être son propre parent |
STOCKS.LOCATION.PARENT_ON_NON_INTERNAL |
— | Seuls les emplacements internes peuvent avoir un parent |
STOCKS.LOCATION.PARENT_MUST_BE_INTERNAL |
— | Le parent doit être un emplacement interne |
STOCKS.LOCATION.PARENT_HOLDS_STOCK |
— | Le parent contient des stocks disponibles |
STOCKS.LOCATION.NOT_VIRTUAL |
type |
L'emplacement type n'est pas un emplacement virtuel ! |
Entrepôts¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.WAREHOUSE.NOT_FOUND |
— | L'entrepôt n'a pas été trouvé ! |
STOCKS.WAREHOUSE.HAS_MOVEMENTS |
— | Des mouvements de stocks ont déjà été effectués sur cet entrepôt ! |
STOCKS.WAREHOUSE.NAME_REQUIRED |
— | Le libellé ne peut pas être vide ! |
STOCKS.WAREHOUSE.LABEL_MISSING |
— | Vous devez renseigner un libellé ! |
STOCKS.WAREHOUSE.SHORT_NAME_EMPTY |
— | Le nom court ne peut pas être vide ! |
STOCKS.WAREHOUSE.SHORT_NAME_MISSING |
— | Vous devez renseigner un nom court ! |
Types d'opération¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.OPERATION_TYPE.NOT_FOUND |
— | Le type d'opération n'a pas été trouvé ! |
STOCKS.OPERATION_TYPE.DELETE_TARGET_NOT_FOUND |
— | Le type d'opération à supprimer n'a pas été trouvé ! |
STOCKS.OPERATION_TYPE.HAS_OPERATIONS |
— | Des opérations ont déjà été effectuées avec ce type d'opération ! |
STOCKS.OPERATION_TYPE.LAST_OF_CATEGORY |
category |
Vous ne pouvez pas supprimer le dernier type d'opération category |
STOCKS.OPERATION_TYPE.LABEL_REQUIRED |
— | Vous devez renseigner le libellé ! |
STOCKS.OPERATION_TYPE.NAME_REQUIRED |
— | Le libellé ne peut pas être vide ! |
STOCKS.OPERATION_TYPE.CATEGORY_REQUIRED |
— | La catégorie ne peut pas être vide ! |
STOCKS.OPERATION_TYPE.SEQUENCE_REQUIRED |
— | La séquence ne peut pas être vide ! |
STOCKS.OPERATION_TYPE.SOURCE_LOCATION_REQUIRED |
— | L'emplacement source par défaut ne peut pas être vide ! |
STOCKS.OPERATION_TYPE.DESTINATION_LOCATION_REQUIRED |
— | L'emplacement de destination par défaut ne peut pas être vide ! |
STOCKS.OPERATION_TYPE.PREPARATION_SELF |
— | Type de préparation invalide : il ne peut pas être égal au type courant ! |
STOCKS.OPERATION_TYPE.RETURN_SELF |
— | Type de retour invalide : il ne peut pas être égal au type courant ! |
Lots¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.BATCH.NOT_FOUND |
— | Le lot n'a pas été trouvé ! |
STOCKS.BATCH.NOT_AVAILABLE |
— | Le lot n'est pas disponible ! |
STOCKS.BATCH.NOT_EDITABLE |
— | Vous ne pouvez pas modifier le lot ! |
STOCKS.BATCH.AMOUNT_NOT_POSITIVE |
— | Vous devez renseigner un montant positif ! |
STOCKS.BATCH.QUANTITY_NOT_POSITIVE |
— | Vous devez renseigner une quantité positive ! |
STOCKS.BATCH.LIFO_UNSUPPORTED |
— | LIFO non supporté ! |
STOCKS.BATCH.NONE_LEFT_IN_LOCATION |
location, article |
Il n'existe plus de lot sur l'emplacement location pour l'article article ! |
STOCKS.BATCH.CANCEL_TARGET_NOT_FOUND |
batch |
Le lot batch est introuvable |
STOCKS.BATCH.ALREADY_CANCELED |
batch |
Le lot batch a déjà été annulé |
STOCKS.BATCH.CONSUMED |
batch |
Des articles ont déjà été consommés sur le lot batch |
STOCKS.BATCH.RECEPTION_NOT_EXECUTED |
batch |
La réception du lot batch doit être exécutée pour être annulée |
STOCKS.BATCH.NOT_FROM_RECEPTION |
batch |
Le lot batch ne provient pas d'une réception |
STOCKS.BATCH.RETURN_TYPE_REQUIRED |
batch |
Le type de retour doit être défini pour annuler le lot batch |
STOCKS.BATCH.NOT_OF_ORDER |
— | Ce lot n'a pas été reçu pour ce bon de commande |
Réceptions¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.RECEPTION.ARTICLE_REQUIRED |
— | Vous devez spécifier au moins un article à réceptionner ! |
STOCKS.RECEPTION.TYPE_REQUIRED |
— | Vous devez configurer une opération de réception ! |
STOCKS.RECEPTION.ALREADY_CONFIRMED |
— | La réception a déjà été confirmée pour ce bon de commande |
STOCKS.RECEPTION.NO_PENDING_OPERATION |
— | Aucune opération en cours n'est liée à ce bon de commande |
STOCKS.RECEPTION.NO_EXECUTED_RECEPTION |
— | Aucune réception exécutée n'est liée à ce bon de commande |
STOCKS.RECEPTION.ALREADY_CANCELED |
— | La réception a déjà été annulée pour ce bon de commande |
STOCKS.RECEPTION.BATCHES_CONSUMED |
— | Des articles ont déjà été consommés sur les lots de cette réception |
Divers¶
| Code | Paramètres | Message |
|---|---|---|
STOCKS.DELIVERY.ARTICLE_REQUIRED |
— | Vous devez spécifier au moins un article à livrer ! |
STOCKS.DELIVERY.TYPE_REQUIRED |
— | Vous devez configurer une opération de livraison ! |
STOCKS.STOCK_MOVEMENT.NOT_FOUND |
— | Le mouvement de stock n'a pas été trouvé ! |
STOCKS.MEASURE_UNIT.NOT_FOUND |
— | L'unité de mesure n'a pas été trouvée ! |
STOCKS.SETTINGS.COST_METHOD_REQUIRED |
— | Vous devez renseigner une méthode de valorisation du stocks ! |
STOCKS.PERIOD.INVALID |
— | La période est invalide ! |
STOCKS.INDICATOR.NOT_FOUND |
— | L'indicateur n'a pas été trouvé ! |
STOCKS.MODULE.PRODUCTS_REQUIRED |
— | Le module Produits doit être installé avant de continuer l'action ! |
STOCKS.MODULE.ALREADY_INSTALLED |
— | Le module Stocks est déjà installé ! |
Les messages ne sont pas un contrat
Les libellés ci-dessus reproduisent les messages tels que le module les renvoie aujourd'hui, ponctuation comprise. Ils peuvent être reformulés sans préavis ; les codes, eux, ne changent pas.
Changelog¶
- 1.0 (18 août 2026) : création du document.