# Module Opticien PrestaShop : installation et configuration

> Présentation Le module dfopticlens permet de vendre des lunettes de vue sur PrestaShop 8 et 9. Sur la fiche d'une monture, le client choisit un type de verre, saisit son…

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

## Présentation

Le module **dfopticlens** permet de vendre des lunettes de vue sur PrestaShop 8 et 9. Sur la fiche d'une monture, le client choisit un type de verre, saisit son ordonnance, choisit un verre parmi les indices proposés, ajoute des traitements et valide un récapitulatif. Le serveur contrôle chaque valeur, calcule le prix et vérifie que la correction est réalisable sur la monture. Le prix des verres s'ajoute à la ligne de la monture grâce à la personnalisation native de PrestaShop, et l'ordonnance suit la commande jusqu'à la facture.

## Installation

1. Dans _Modules > Gestionnaire de modules_, cliquez sur _Installer un module_ et envoyez le fichier `dfopticlens-1.1.0.zip`.
2. L'installation crée le menu _Vendre > Optique_ avec quatre pages : Ordonnances, Montures, Verres et indices, Traitements.
3. Cinq verres (1.50, 1.59 polycarbonate, 1.60, 1.67, 1.74) et sept traitements sont créés avec des prix d'exemple. Adaptez-les avant la mise en ligne.
4. Le dossier `upload/dfopticlens/` est créé et protégé par un fichier `.htaccess` : les fichiers d'ordonnance n'y sont jamais accessibles depuis le web.

Mise à jour depuis la 1.0.0 : envoyez le ZIP 1.1.0 par-dessus. Le script de mise à jour ajoute les nouveaux réglages et hooks, sans perte de données.

## Configuration du module

La page de configuration (bouton _Configurer_ du module) regroupe les réglages en trois blocs.

### Saisie de l'ordonnance

- **Convention de cylindre transmise au laboratoire** : cylindre négatif, positif ou conservé tel que saisi. Le client saisit toujours les valeurs de son ordonnance, la transposition se fait à l'enregistrement.
- **Envoi du fichier d'ordonnance** : désactivé, facultatif ou obligatoire, avec une taille maximale en Mo. Formats acceptés : PDF, JPG, PNG, vérifiés par leur contenu.
- **Avertir quand l'ordonnance date de plus de** X ans (0 désactive).
- **Supprimer les ordonnances des paniers abandonnés après** X jours.
- **Envoi du fichier depuis le compte après la commande** : ajoute la page Mes ordonnances au compte client.
- **Option « Je ne connais pas mon écart pupillaire »** et **écart pupillaire moyen utilisé** (63 mm par défaut). La commande est alors marquée à vérifier.

### Règles de faisabilité

- **Bloquer les verres qui ne peuvent pas être fabriqués** : activé par défaut. Désactivé, la commande est acceptée avec un avertissement.
- **Marge de détourage** et **marge du diamètre effectif** quand l'ED de la monture est inconnu (ED estimé = A + marge).
- **Hauteur minimale pour les progressifs** (28 mm) et **couloir court en dessous de** (32 mm).
- Seuils d'avertissement : écart entre les yeux, décentrement par œil, puissance positive sur nylor.
- **Épaisseur cible** du verre recommandé, **épaisseur au centre** des verres négatifs et **au bord** des verres positifs (percés ou non).

### Tarifs

- **Prix saisis TTC** ou HT. La règle de taxe du produit monture est appliquée aux verres.
- **Suppléments** forte puissance et fort cylindre : seuil en dioptries et montant (0 désactive).

## Verres et indices

Dans _Vendre > Optique > Verres et indices_, chaque verre porte :

- un nom et une description courte affichés au client, dans chaque langue ;
- l'indice de réfraction, utilisé pour l'estimation de l'épaisseur, et le matériau pour la fiche atelier ;
- les types de verre pour lesquels il est proposé et un prix par paire pour chacun : unifocal, progressif, sans correction ;
- la sphère minimale et maximale, le cylindre maximal (en valeur absolue, lus en cylindre négatif comme les plages fabricants) ;
- le plus grand diamètre de palet disponible (0 désactive ce contrôle) et la possibilité de perçage pour les montures percées.

## Traitements

Dans _Traitements_, chaque traitement a un prix par paire (0 l'affiche comme inclus). Le **groupe exclusif** empêche de combiner deux traitements : les traitements portant le même code, par exemple `tint` pour photochromique, teinte solaire et polarisant, s'excluent entre eux. Vous pouvez aussi limiter un traitement à certains verres, par exemple le polarisant aux indices 1.50 et 1.60.

## Montures

Une monture relie un produit, ou l'une de ses déclinaisons, à ses mesures. Le bloc des verres n'apparaît que sur les produits ayant une monture activée.

### Créer une monture

1. Dans _Montures_, cliquez sur _Ajouter une monture_, ou depuis la fiche produit, onglet _Modules_, sur _Ajouter les mesures de la monture_.
2. Recherchez le produit par nom, référence ou ID, puis choisissez _Toutes les déclinaisons_ ou une déclinaison précise. Une monture définie pour une déclinaison est prioritaire.
3. Indiquez le type (cerclée, nylor, percée), la largeur du verre A, le pont DBL et la hauteur du verre B, obligatoires. Ce sont les nombres imprimés sur la branche : 52□18 donne A = 52 et DBL = 18.
4. Facultatif : le diamètre effectif ED (sinon estimé) et la puissance maximale acceptée par la monture.
5. Cochez les types de verres proposés et, si besoin, **Vendre uniquement avec des verres**.

Avec « Vendre uniquement avec des verres », le bouton panier natif ouvre le choix des verres. Si un appel direct au panier ajoute quand même la monture seule, le module la retire du panier.

### Import et export CSV

Le bouton _Exporter en CSV_ fournit un fichier au bon format. L'import accepte le point-virgule ou la virgule et les colonnes :

```
product;combination;frame_type;lens_width;lens_height;bridge;ed;max_power;vision_types;lens_required;active
```

- `product` : ID ou référence du produit ; `combination` : ID ou référence de la déclinaison, vide ou 0 pour toutes.
- `frame_type` : full, semi ou rimless ; `vision_types` : single|progressive|plano.
- Une monture existante (même produit et déclinaison) est mise à jour. Les lignes rejetées sont listées avec leur numéro.

Le bouton _Resynchroniser les produits_ reconstruit les champs de personnalisation des produits, utile si un employé sans droit sur le module a modifié des produits.

## Parcours client

1. **Type** : unifocal, progressif ou sans correction, selon ce que la monture propose. Sans correction, l'étape ordonnance est sautée.
2. **Ordonnance** : grille OD / OG, écart pupillaire en une ou deux valeurs, date, fichier et note pour l'opticien. Un client connecté peut reprendre l'ordonnance d'une commande précédente.
3. **Verre** : cartes avec prix par paire, coupe du verre à l'échelle, épaisseur estimée et verre recommandé. Les verres impossibles sont grisés avec la raison.
4. **Traitements** : les traitements indisponibles pour le verre choisi sont grisés.
5. **Récapitulatif** : statut de faisabilité, remarques, détail du prix et total monture et verres.

La saisie est conservée si le client recharge la page. Elle est effacée après l'ajout au panier.

## Règles de faisabilité

| Contrôle | Effet |
| --- | --- |
| Sphère ou cylindre hors plage du verre | Verre indisponible |
| Diamètre de palet nécessaire (ED + 2 × décentrement + marge) supérieur au palet du verre | Verre indisponible si le blocage est actif |
| Monture percée et matériau non perçable | Verre indisponible si le blocage est actif |
| Hauteur B inférieure au minimum pour un progressif | Bloquant (ou avertissement) |
| Hauteur B sous le seuil de couloir court | Information |
| Puissance supérieure au maximum de la monture | Bloquant (ou avertissement) |
| Écart entre les yeux, fort décentrement, forte puissance positive sur nylor, ordonnance ancienne, écart pupillaire inconnu | Avertissement, commande marquée à vérifier |

Les calculs se font sur la forme en cylindre négatif. L'épaisseur est estimée par la formule de la flèche : c'est un repère pour comparer les indices, pas le calcul du laboratoire.

## Prix, promotions et facture

Le prix des verres est enregistré HT dans la personnalisation de la ligne de panier. PrestaShop l'ajoute au prix de la monture et applique la TVA du produit. Si la monture a une réduction en pourcentage (prix spécifique ou groupe client), PrestaShop l'applique aussi aux verres : le panneau affiche le prix barré et une ligne « Promotion de la monture appliquée aussi aux verres », pour que le total annoncé corresponde au panier.

## Commandes et fiche atelier

- La page commande du back-office affiche un bloc par ordonnance : valeurs transposées, verre, traitements, mesures de la monture, décentrement et palet minimal par œil, remarques de faisabilité et détail du prix.
- **Imprimer la fiche atelier** ouvre une page A4 prête à imprimer.
- **Télécharger le fichier d'ordonnance** récupère le scan envoyé par le client.
- _Vendre > Optique > Ordonnances_ liste toutes les ordonnances avec leur statut : OK, à vérifier, non réalisable.

## Compte client : Mes ordonnances

Un client ayant commandé des verres voit le lien _Mes ordonnances_ dans son compte. La page affiche chaque ordonnance avec la commande liée. Si l'envoi du fichier est facultatif et que le client ne l'a pas joint, il peut l'envoyer depuis cette page ; l'opticien le retrouve ensuite dans la commande.

## Données de santé et RGPD

- Les fichiers d'ordonnance sont stockés hors du dossier public et ne se téléchargent que depuis le back-office.
- Les ordonnances des paniers jamais commandés sont supprimées après le délai réglé, avec la ligne de panier correspondante.
- Avec le module officiel psgdpr, l'export et la suppression des données d'un client incluent ses ordonnances.

## Dépannage

### Le bloc des verres n'apparaît pas sur la fiche produit

Vérifiez que le produit a une monture activée et que le thème affiche le hook `displayProductAdditionalInfo`. Videz le cache de PrestaShop.

### Le bouton panier natif n'ouvre pas le panneau sur une monture « verres obligatoires »

Le module intercepte les boutons portant `data-button-action="add-to-cart"`. Si votre thème utilise un autre attribut, le blocage côté serveur reste actif : la monture seule est retirée du panier.

### Le total du panneau diffère du panier

Une réduction en montant fixe ne s'applique qu'à la monture et une règle panier (bon de réduction) s'applique au panier entier : elles n'apparaissent pas dans le panneau des verres.
