Aller au contenu

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.