---
title: "product_concrete"
url: "https://wiki.merchant.mercanto.ch/fr/article/product-concrete"
language: "fr"
last_updated: "2026-01-20T09:04:35.891Z"
---

# product_concrete

Exemple de fichier dans [gitlab](https://gitlab.com/mercanto/iocanto-spec/-/blob/master/examples/product_concrete.iocanto.json).

## Description

Contient les variantes de vente d’un `product_abstract`. Pour chaque Abstract, au moins un Concrete (`product_concrete`) doit être défini. Il est essentiel que la liaison vers le `product_abstract` soit effectuée (`abstract_sku`), que le numéro d’article (`concrete_sku`, correspond toujours au `abstract_sku`) soit défini, que le statut de disponibilité (`availability/status`) soit indiqué et que les unités d’emballage (`packaging`) soient définies pour l’article.

Une particularité des unités d’emballage est qu’elles sont structurées de manière hiérarchique ; ainsi, la base d’emballage peut varier selon l’unité d’emballage.

Pour la construction de l’objet `packaging`, les règles suivantes s’appliquent :

-   Si le packaging correspond à l’unité de base et qu’il s’agit d’une « quantité mesurée », comme kilogramme (`kg`), mètre (`m`) ou litre (`l`), alors le champ `measurement_quantity` doit être renseigné.
-   Si le packaging correspond à l’unité de base mais n’est pas une « quantité mesurée », comme carton (`karton`), bouteille (`flasche`) ou conteneur roulant (`rollbehalter`), alors le champ `base_quantity` doit être renseigné.
-   Si le packaging ne correspond pas à l’unité de base, alors l’objet `packaging_base` doit être renseigné avec `code` et `quantity` définissant l’unité sur laquelle ce packaging se base.

**Exemple 1 : Unité de base (**`base_packaging_code`**) = Pack (**`pack`**)**

```javascript
"packaging": {
    "pack": {
        "is_active": false,
        "base_quantity": 1
    },
    "multipack": {
        "is_active": true,
        "packaging_base": {
            "code": "pack",
            "quantity": 200
        }
    },
    "umkarton": {
        "is_active": true,
        "packaging_base": {
            "code": "multipack",
            "quantity": 10
        }
    }
}
```

-   Premier packaging : `pack` est l’unité de base = « quantité non mesurée », donc `base_quantity`.
-   Deuxième packaging : `multipack`, construit sur `packaging_base` → `pack`.
-   Troisième packaging : `umkarton`, construit sur `packaging_base` → `multipack`.

**Exemple 2 : Unité de base (**`base_measurement_code`**) = Liter (**`LITR`**)**

```javascript
"packaging": {
    "flasche": {
        "is_active": false,
        "measurement_quantity": 1
    },
    "karton": {
        "is_active": true,
        "packaging_base": {
            "code": "flasche",
            "quantity": 10
        }
    },
    "umkarton": {
        "is_active": true,
        "packaging_base": {
            "code": "karton",
            "quantity": 4
        }
    }
}
```

-   Premier packaging : `flasche` est l’unité de base = « quantité mesurée », donc `measurement_quantity`.
-   Deuxième packaging : `karton`, construit sur `packaging_base` → `flasche`.
-   Troisième packaging : `umkarton`, construit sur `packaging_base` → `karton`.

## Champs disponibles

| **Champ**   <br>(\* = Obligatoire) | **Description** |
| --- | --- |
| `abstract_sku` \*  <br>*String (100)* | Unité de gestion des stocks de l’article (numéro d’article).  <br>Caractères autorisés : chiffres `0-9`, lettres `A-Z a-z`, tirets `–`, traits de soulignement `_`, parenthèses `()`, points `.`. |
| `concrete_sku` \*  <br>*String (100)* | Unité de gestion des stocks de l’article (numéro d’article) – doit correspondre à l'`abstract_sku`.  <br>Caractères autorisés : chiffres `0-9`, lettres `A-Z a-z`, tirets `–`, traits de soulignement `_`, parenthèses `()`, points `.`. |
| `availability/status`  <br>*String (enum)* | Statut de disponibilité actuel de l’article.   <br>Valeurs autorisées : [https://my.mercanto.ch/fr/valeurs-definies#statutdedisponibilite](https://my.mercanto.ch/fr/valeurs-definies#statutdedisponibilite) |
| `availability/ order_deadline_date`  <br>*String (YYYY-MM-DD)* | Détermine le dernier jour où l’article peut encore être commandé. Obligatoire pour les articles en précommande. |
| `availability/ order_deliverable_ from_date`  <br>*String (YYYY-MM-DD)* | Détermine la première date à laquelle l’article peut être livré. Obligatoire pour les articles en précommande ou avec retard de livraison. |
| `availability/ information_text`  <br>*Localized String (10000)* | Informations supplémentaires relatives à la disponibilité. |
| `packaging/is_active`  <br>*boolean (true, false)* | Les articles inactifs ne sont pas affichés dans le webshop et sont supprimés après deux ans.  <br>défaut = `true` |
| `packaging/gtin`  <br>*String (8,14)* | Global Trade Item Number de l’unité d’emballage. |
| `packaging/ packaging_base/code`  <br>*String (enum)* | Détermine l’unité contenue dans cette unité d’emballage (ex. : carton à 10 **rouleaux**).  <br>Valeurs autorisées : [https://my.mercanto.ch/fr/valeurs-definies#unitedemballage](https://my.mercanto.ch/fr/valeurs-definies#unitedemballage) et [https://my.mercanto.ch/fr/valeurs-definies#unite](https://my.mercanto.ch/fr/valeurs-definies#unite) |
| `packaging/ packaging_base/quantity`  <br>*Number (0, 10000000)* | Quantité d’unités de base contenues dans cette unité d’emballage (ex. : carton à **10** rouleaux). |
| `packaging/ measurement_quantity`  <br>*Number (0, 10000000)* | Quantité dans laquelle l’article est vendu lorsque l’unité = `base_measurement_code`. Ce champ ou `base_quantity` doit être rempli. |
| `packaging/base_quantity`  <br>*Number (0, 10000000)* | Quantité dans laquelle l’article est vendu lorsque l’unité = `base_packaging_code`. Ce champ ou `measurement_quantity` doit être rempli. |
| `packaging/ quantity_increment`  <br>*Number (0, 10000000)* | Valeur d’incrément permettant d’augmenter/diminuer la quantité. |
| `packaging/ minimum_quantity`  <br>*Number (1, 10000000)* | Quantité minimale requise pour une commande. |
| `packaging/ maximum_quantity`  <br>*Number (1, 10000000)* | Quantité maximale autorisée dans une commande. |
| `packaging/deposit`  <br>*Number (1, 10000000)* | Montant de la consigne applicable à cet emballage. |
