# dfreparability — Indice de réparabilité et durabilité pour PrestaShop

> Le module dfreparability couvre l'obligation d'affichage de l'indice de réparabilité (loi AGEC, arrêté du 29 décembre 2020) et de l'indice de durabilité (décret du 22 avril 2022) pour les 11…

- Page: <https://www.datafirefly.com/documentation/dfreparability/>
- Langue: fr
- Mis à jour le: 2026-07-02
- Autres langues: [en](https://www.datafirefly.com/en/documentation/dfreparability/index.md), [es](https://www.datafirefly.com/es/documentation/dfreparability/index.md), [de](https://www.datafirefly.com/de/documentation/dfreparability/index.md), [it](https://www.datafirefly.com/it/documentation/dfreparability/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfreparability/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfreparability/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfreparability/index.md)
- Index: <https://www.datafirefly.com/documentation/llms.txt>

Le module **dfreparability** couvre l'obligation d'affichage de l'indice de réparabilité (loi AGEC, arrêté du 29 décembre 2020) et de l'indice de durabilité (décret du 22 avril 2022) pour les 11 catégories concernées, sur PrestaShop 8 et 9.

## Cadre légal

Deux textes structurent l'obligation :

- **Indice de réparabilité** — obligatoire depuis le 1er janvier 2021 pour 9 catégories initiales, étendu progressivement (loi AGEC de février 2020, arrêté du 29 décembre 2020).
- **Indice de durabilité** — introduit par le décret du 22 avril 2022. Remplace la réparabilité pour les téléviseurs depuis avril 2024, puis pour les lave-linge à hublot depuis avril 2025.

Les deux indices se calculent sur 10 à partir des 5 critères Bercy (chacun sur 20 sous-points). L'indice de durabilité y ajoute 3 critères supplémentaires (fiabilité, améliorabilité, maintenance).

**Sanction encourue** — l'absence d'affichage expose une personne morale à jusqu'à 15 000 € d'amende par produit non conforme (article L541-9-2 du Code de l'environnement).

## Installation

1. Depuis le back-office PrestaShop, ouvrez _Modules → Gestionnaire de modules_, cliquez sur _Envoyer un module_ et déposez le fichier `dfreparability.zip`.
2. Cliquez sur _Installer_. Le module :
   - crée la table `ps_dfreparability_product` pour stocker les notes par produit ;
   - crée une page CMS _Indice de réparabilité et de durabilité_ avec un contenu de référence prêt à personnaliser ;
   - enregistre 11 catégories préconfigurées avec les critères Bercy correspondants.
3. À l'installation seule, le module ne modifie _aucune_ fiche produit existante. Vous saisissez les notes produit par produit.

## Saisie de l'indice sur une fiche produit

dfreparability ajoute un panneau _Indice de réparabilité / durabilité_ à la fiche produit, disponible aussi bien en mode legacy qu'en mode Symfony (PrestaShop 9). La procédure est la même dans les deux modes.

### Les 4 étapes

1. **Type d'indice** — choisissez _Réparabilité_ ou _Durabilité_. Pour les téléviseurs et lave-linge à hublot, sélectionnez directement _Durabilité_ (nouvelle obligation).
2. **Catégorie** — sélectionnez parmi les 11 catégories préconfigurées. La grille des critères s'adapte automatiquement.
3. **Notes par critère** — chacun sur 20. Les 5 critères Bercy sont toujours présents. Si vous avez sélectionné _Durabilité_, les 3 critères supplémentaires apparaissent.
4. **Score final** — calculé automatiquement à partir des critères. Un champ _Score manuel_ permet de surcharger la note si vous appliquez un ajustement Bercy spécifique documenté dans la grille officielle du fabricant.

**Champ optionnel — Grille de calcul PDF** : renseignez le lien vers le PDF officiel de la grille détaillée fournie par le fabricant. Le lien est affiché sur la page de note détaillée du produit.

## Calcul du score sur 10

Le module applique la méthode officielle Bercy :

```
score_sur_10 = (somme des notes / nombre de critères) / 2
```

Exemple pour un smartphone en indice de réparabilité avec les 5 notes suivantes :

- Documentation : 16 / 20
- Démontabilité : 14 / 20
- Disponibilité des pièces : 12 / 20
- Prix des pièces : 10 / 20
- Spécifiques : 18 / 20

Score : (16 + 14 + 12 + 10 + 18) / 5 / 2 = 14 / 2 = **7,0 sur 10** — bande vert clair.

### Les 5 bandes réglementaires

La couleur du logo dépend du score et suit strictement les seuils officiels :

| Score | Bande | Code couleur |
| --- | --- | --- |
| ≥ 8,0 | Vert foncé | `#2d8c3c` |
| 7,0 à 7,9 | Vert clair | `#79c142` |
| 5,0 à 6,9 | Jaune | `#f5d70a` |
| 3,0 à 4,9 | Orange | `#f08017` |
| < 3,0 | Rouge | `#cf2127` |

## Les 11 catégories préconfigurées

1. Smartphones
2. Ordinateurs portables
3. Téléviseurs _(durabilité depuis avril 2024)_
4. Lave-linge à hublot _(durabilité depuis avril 2025)_
5. Lave-linge top
6. Lave-vaisselle
7. Aspirateurs filaires
8. Aspirateurs sans fil
9. Aspirateurs robots
10. Nettoyeurs haute-pression
11. Tondeuses à gazon électriques

Pour chaque catégorie, le module contient la grille des critères conforme aux textes officiels. Si Bercy publie une évolution des critères, une mise à jour du module est fournie dans le cadre de votre licence.

## Affichage sur la boutique

### Choix de la position

Depuis la configuration du module (_Modules → dfreparability → Configurer_), trois positions sont proposées sur la fiche produit :

- **Sous le prix** (recommandé) — utilise le hook `displayProductPriceBlock` avec `type=after_price`. Visible dès l'ouverture de la fiche produit.
- **Dans un onglet d'informations complémentaires** — utilise `displayProductAdditionalInfo`. Cache l'indice sous un onglet dédié.
- **Sous les miniatures** — utilise `displayAfterProductThumbs`. Recommandé si votre thème place les infos produit à droite des miniatures.

Une seule position doit être active à la fois pour éviter les doublons. Le module force l'exclusivité côté configuration.

### Affichage compact dans les listes

Une option distincte active un badge compact sur les fiches produit en liste (page catégorie, recherche, résultats) via le hook `displayProductListReviews`. Le badge reprend le logo coloré et la note sur 10 sans le détail des critères.

### Page de note détaillée

Chaque produit avec un indice renseigné dispose d'une page publique `/module/dfreparability/detail?id_product={id}` qui affiche :

- le logo coloré grand format ;
- la note sur 10 avec la bande de couleur correspondante ;
- la grille complète des critères et leurs notes ;
- le lien vers le PDF officiel si vous l'avez renseigné ;
- un lien vers la page CMS d'information légale.

## Page CMS d'information légale

À l'installation, le module crée une page CMS _Indice de réparabilité et de durabilité_ avec un contenu de référence en français couvrant :

- les fondements juridiques (loi AGEC, arrêté 2020, décret 2022) ;
- la table des 5 bandes de couleurs avec les seuils ;
- la liste des 11 catégories concernées et leur date d'entrée en vigueur ;
- les 5 critères Bercy et leur pondération ;
- les critères supplémentaires pour la durabilité.

Vous pouvez modifier librement cette page depuis _Design → Pages_ et la traduire dans toutes vos langues actives. Les liens depuis les fiches produit pointent automatiquement vers la version dans la langue de navigation.

## Personnalisation du rendu

### Remplacer les logos par les originaux Bercy

Le module fournit 10 logos SVG (2 indices × 5 bandes) inspirés du visuel officiel. Si le fabricant vous a fourni les PNG ou SVG officiels, remplacez les fichiers dans `views/img/logos/` en conservant les noms :

```
reparability-dark-green.svg
reparability-light-green.svg
reparability-yellow.svg
reparability-orange.svg
reparability-red.svg
durability-dark-green.svg
durability-light-green.svg
durability-yellow.svg
durability-orange.svg
durability-red.svg
```

### Ajuster le CSS

Le rendu frontend utilise les classes `.dfrep-badge`, `.dfrep-score`, `.dfrep-band-*`. Le CSS principal est dans `views/css/dfreparability.css`. Pour surcharger sans modifier le module, ajoutez vos règles dans le CSS de votre thème enfant — les sélecteurs restent stables entre les versions.

## Multilingue et multiboutique

Traductions incluses : français, anglais, espagnol, allemand. Ajouter une langue supplémentaire se fait via l'outil standard de traduction PrestaShop (_International → Traductions_).

Les notes des produits sont stockées par `id_product` — donc partagées entre les boutiques d'un réseau multiboutique. Si un produit a des notes différentes par boutique, il faut le décliner. La page CMS d'information légale, elle, peut être différenciée par boutique via l'outil PrestaShop standard.

## Duplication de produit

Le module écoute le hook `actionProductAdd` : quand vous dupliquez un produit ayant un indice renseigné, les notes et la grille des critères sont automatiquement copiées vers le nouveau produit.

## Compatibilité et prérequis

- **PrestaShop** : 8.0 à 9.x (les deux modes fiche produit, legacy et Symfony).
- **PHP** : 7.4 minimum, 8.1+ recommandé.
- **Thèmes** : compatible Classic, Hummingbird et thèmes tiers qui déclenchent les hooks standards de la fiche produit.
- **PrestaShop 1.7** : non supporté.

## Dépannage

### Le badge s'affiche deux fois sur la fiche produit

Vérifiez que vous n'avez pas activé plusieurs positions d'affichage simultanément dans la configuration du module. Depuis la v1.0.1, le hook `displayProductPriceBlock` ne répond qu'au type `after_price`, ce qui évite le doublon interne du bloc prix.

### La page de détail renvoie « Controller not found »

Sur PrestaShop 9, vider le cache Symfony (_Paramètres avancés → Performances → Vider le cache_) après installation. La v1.0.1 corrige la casse du nom de classe du contrôleur pour la forme canonique attendue par le Dispatcher PS 9.

### Le panneau ne s'affiche pas dans la fiche produit Symfony

Vérifiez que le hook `actionProductFormBuilderModifier` est bien associé au module (_Design → Positions_). C'est le hook Symfony natif — si un autre module l'a désactivé globalement, réactivez-le sur dfreparability.

## Historique des versions

### 1.0.1 — 14 mai 2026

- Correction de l'affichage en double du badge dans le bloc prix (`displayProductPriceBlock` restreint à `after_price`).
- Correction de la classe du contrôleur frontend pour la forme canonique attendue par PrestaShop 9.
- Chargement défensif de `dfreparability.php` et `classes/DfReparabilityProduct.php` en tête du contrôleur frontend.
- Bascule de la variable Smarty `$link` vers `$module_dir` dans le template d'admin (contexte ExtraModulesType de PS 9 n'injecte pas `$link`).

### 1.0.0 — 14 mai 2026

- Première version publique.
- Indice de réparabilité et de durabilité par produit.
- 11 catégories préconfigurées, 5 bandes réglementaires, 10 logos SVG.
- Page de note détaillée, page CMS d'information légale.
- Traductions FR, EN, ES, DE. Compatible PrestaShop 8 et 9.
