PS PrestaShop Intermédiaire

Prix unitaire et vente au poids : documentation DataFirefly Unit Price

Installation, réglages, contenance des produits, vente au poids choisi, pièces au poids réel et pesée, éditeur en masse, CSV et dépannage.

Mis à jour Version du module 1.2.0

Installation

Installez le module depuis Modules > Gestionnaire de modules > Installer un module avec le fichier ZIP, ou déposez le dossier dfunitprice dans le répertoire /modules/ de la boutique puis cliquez sur Installer.

À l’installation, le module crée trois tables (contenances, modes de vente, pesées de commandes) et enregistre ses hooks. Il n’ajoute pas d’entrée de menu : tout se règle depuis la page de configuration du module, l’onglet Modules de la fiche produit et la page de la commande.

Réglages du module

La page de configuration regroupe, de haut en bas, l’éditeur en masse, les réglages, la liste des pièces à peser, les outils et le rapport de conformité.

Prix unitaire des poids et des volumes

Choisissez l’expression par défaut : pour 1 kg ou pour 100 g, pour 1 litre ou pour 100 ml. Les longueurs sont toujours exprimées au mètre, les surfaces au m², les volumes en vrac au m³. Chaque produit peut modifier ce choix.

Pays imposant 1 kg et 1 litre

Codes ISO séparés par des virgules, DE par défaut. Pour un visiteur de ces pays, le prix unitaire est toujours exprimé pour 1 kg, 1 l, 1 m, 1 m² ou 1 m³, comme l’exige la PAngV allemande, même si vous avez choisi 100 g ailleurs.

Affichage et positions

  • Afficher sur la fiche produit et Position sur la fiche produit : le prix unitaire passe par le hook natif displayProductPriceBlock. La position after_price (sous le prix) convient aux thèmes Classic et dérivés. Changez-la seulement si votre thème n’appelle pas cette position.
  • Afficher dans les listes de produits et Position dans les listes : catégories, recherche, marques, carrousels. Position unit_price par défaut.
  • Afficher dans le panier : sous le prix de chaque ligne.
  • Format : « 12,90 € / kg » ou entre parenthèses.
  • Texte avant le prix unitaire : facultatif et traduisible, par exemple « Prix au kilo ».

Masquer si égal au prix de vente

Un paquet de 1 kg affiché au kilo répète le même montant. Certains pays autorisent à ne pas l’afficher dans ce cas : vérifiez la règle de votre pays avant d’activer l’option.

Masquer le prix unitaire natif du thème

Évite le doublon sur la fiche produit quand le thème affiche aussi le champ natif.

Écrire dans les champs natifs PrestaShop

Le module met à jour le prix unitaire natif, son libellé d’unité (par exemple « / kg ») et l’impact par déclinaison. Les modules de flux Google Shopping ou de marketplaces qui lisent ces champs reçoivent ainsi la bonne valeur.

Remboursement minimum des pièces au poids réel

En dessous de ce montant TTC d’écart sur une commande, aucun avoir n’est créé. Laissez 0 pour rembourser tout écart.

Catégories où le prix unitaire est obligatoire

Sert uniquement au rapport de conformité, qui liste les produits actifs de ces catégories sans contenance.

Renseigner la contenance d’un produit

Ouvrez la fiche produit, onglet Modules, bloc Prix unitaire et mode de vente. Le bloc s’enregistre avec son propre bouton Enregistrer le prix unitaire, indépendamment du formulaire produit.

  • Contenance et Unité : 750 g, 1,5 l, 2,5 m, 12 m² ou une pièce. Laissez vide pour ne montrer aucun prix unitaire.
  • Prix unitaire exprimé pour : pour les poids et les volumes, remplace le réglage du module sur ce produit.

Sous les champs, une ligne verte affiche le prix unitaire calculé avec le prix actuel pendant la saisie. Après l’enregistrement, un aperçu rappelle le prix TTC hors remise, la contenance et le prix unitaire obtenu.

Déclinaisons

Remplissez seulement les déclinaisons dont la contenance diffère du produit, par exemple 250 g, 500 g et 1 kg. Une déclinaison sans valeur reprend celle du produit. L’unité « Comme le produit » reprend l’unité du produit. Les déclinaisons créées après l’ouverture de la page apparaissent après rechargement.

Le calcul

Le prix unitaire est le prix affiché au client divisé par la contenance, ramené à la référence choisie. Il suit l’affichage TTC ou HT du groupe du client, les prix spécifiques et les promotions. Dans le panier, il reprend le prix de la ligne.

Vente au poids choisi par le client

Choisissez le mode Le client choisit la quantité. La contenance devient la taille d’un pas et le prix du produit devient le prix d’un pas. Exemple : pas de 100 g à 2,50 €, un client qui choisit 700 g ajoute 7 pas au panier pour 17,50 €.

  • Minimum et Maximum, exprimés dans l’unité de base (g, ml, cm, m², m³) : chaque valeur doit être un multiple du pas. Le maximum est facultatif.
  • Boutons de quantité : valeurs séparées par des points-virgules, par exemple 250; 500; 1000, chacune multiple du pas et comprise entre le minimum et le maximum.
  • Autoriser une quantité libre : affiche le sélecteur +/- avec saisie directe. Sans boutons de quantité, la saisie libre reste toujours affichée.

Sur la fiche produit, le champ quantité du thème est remplacé par ce sélecteur, avec les bornes et le total en direct. Le sélecteur fonctionne aussi dans l’aperçu rapide des listes et conserve le poids choisi quand le client change de déclinaison.

Ce que le module règle pour vous

  • La quantité minimale native du produit et de ses déclinaisons est synchronisée en nombre de pas.
  • Le maximum est appliqué côté serveur : une quantité supérieure ajoutée au panier est ramenée au maximum.
  • La ligne de commande devient « Café (700 g) » en back-office, sur la facture et dans l’e-mail de confirmation.

Le stock reste compté en pas, car PrestaShop ne gère pas les quantités décimales. Avec un pas de 100 g, saisissez 50 pour 5 kg en stock. Le bloc de la fiche produit rappelle cette conversion.

Pièce au poids réel

Choisissez le mode Pièce au poids réel pour les produits dont le poids exact n’est connu qu’à la préparation : viande, fromage à la coupe, poisson.

  • Poids moyen d’une pièce : c’est la contenance, par exemple 1,2 kg. Le prix du produit est celui d’une pièce de ce poids.
  • Pièce la plus légère et Pièce la plus lourde : facultatifs, affichés au client comme fourchette. La fourchette doit inclure le poids moyen.

Sur la fiche produit, un encadré « Vendu au poids réel » explique la règle au client : une pièce plus légère est remboursée de la différence, une pièce plus lourde ne coûte rien de plus. La ligne de commande devient « Côte de bœuf (environ 1,2 kg) » ou « (2 × environ 1,2 kg) ».

Peser une commande

Sur la page de la commande, le panneau Poids réels liste chaque ligne concernée avec le poids estimé et le montant payé.

  1. Saisissez le poids réel total de chaque ligne, toutes pièces comprises, en kg (en l pour un volume, en m pour une longueur).
  2. Le remboursement de chaque ligne et le total se calculent pendant la saisie. Un poids éloigné de plus de 50 % de l’estimation affiche une alerte, souvent une erreur d’unité (1200 au lieu de 1,2).
  3. Cochez ou non l’envoi de l’e-mail au client et le bon d’achat, puis cliquez sur Valider les poids et confirmez.

Le remboursement d’une ligne plus légère est proportionnel : montant payé × (1 − poids réel / poids estimé). Une ligne plus lourde ne donne aucun remboursement et n’est jamais facturée en plus.

Ce qui est créé

  • Un avoir PrestaShop du total des écarts, visible dans les documents de la commande. Son PDF liste les lignes et un tableau « Régularisation au poids réel ».
  • Un bon d’achat du même montant si la case est cochée, réservé au client et valable un an.
  • Un e-mail au client dans sa langue avec les poids estimés, les poids réels et le montant remboursé.

La facture de la commande porte une mention qui explique la vente au poids estimé et la régularisation par avoir. Le client voit aussi les poids réels dans le détail de sa commande, dans son compte.

L’avoir enregistre le remboursement mais ne rembourse pas l’argent. Sauf si vous donnez un bon d’achat, reversez le montant avec votre prestataire de paiement. Une pesée validée est définitive. L’avoir reprend la quantité de la ligne pour que le PDF natif affiche le bon montant : PrestaShop considère donc ces pièces comme déjà remboursées, et un remboursement ultérieur de ces lignes se fait par montant chez votre prestataire.

Commandes à peser

La page de configuration liste les commandes qui contiennent encore des pièces à peser, des plus anciennes aux plus récentes, avec un lien direct vers chaque commande. Les commandes annulées, en erreur ou remboursées n’y figurent pas.

Éditeur en masse

En haut de la page de configuration, l’éditeur en masse affiche vos produits par pages de 50, filtrables par catégorie, par nom, référence ou ID, et par défaut limités à ceux qui n’ont pas encore de contenance.

  • Les contenances écrites dans le nom ou la référence sont détectées et pré-remplies, avec la mention « Détecté ». Les packs sont multipliés (« 6 x 33 cl » donne 198 cl), les dimensions comme « 40×60 cm » sont ignorées.
  • Modifier une valeur coche la ligne. Le prix unitaire se calcule en direct.
  • Sélectionner les contenances détectées coche d’un coup toutes les lignes pré-remplies de la page.
  • Remplir aussi les déclinaisons dont le nom contient une contenance : une déclinaison « Poids – 500 g » reçoit 500 g, sans écraser une valeur déjà saisie.

Vider la contenance d’une ligne cochée supprime la contenance du produit. Les produits en vente au poids ou au poids réel sont en lecture seule dans la grille : modifiez-les depuis leur fiche.

Import et export CSV

Le bloc Export CSV produit une ligne par produit et par déclinaison, pour tout le catalogue ou une catégorie. Colonnes : id_product, id_product_attribute, reference, name, net_quantity, unit, reference_unit.

L’import accepte le séparateur ; ou ,. Les colonnes net_quantity et unit sont obligatoires, avec id_product ou reference (référence produit ou de déclinaison). Unités : g, kg, ml, cl, l, mm, cm, m, m2, m3, unit. reference_unit accepte 1kg, 100g, 1l ou 100ml. Une net_quantity vide supprime la ligne. Les erreurs sont listées avec leur numéro de ligne sans bloquer les autres.

Outils et rapport de conformité

Resynchroniser maintenant recalcule les champs natifs et les quantités minimales de tous les produits paramétrés. Utilisez-le après un import de prix en masse, ou si des employés sans droit d’accès au module modifient des produits : PrestaShop n’exécute pas les hooks d’un module pour un profil qui n’a pas le droit de le voir.

Le rapport de conformité indique le nombre de produits paramétrés et liste jusqu’à 300 produits actifs sans contenance dans les catégories obligatoires, avec un lien vers leur fiche.

Dépannage

Le prix unitaire n’apparaît pas sur la fiche produit

Vérifiez que le produit a une contenance et que l’affichage fiche produit est activé. Si le thème n’appelle pas la position after_price, choisissez price ou weight dans les réglages.

Le prix unitaire apparaît deux fois

Activez Masquer le prix unitaire natif du thème. Si le doublon persiste, votre thème utilise une autre classe CSS pour ce bloc : contactez-nous avec le nom du thème.

Le champ quantité reste visible sur un produit vendu au poids

Le thème utilise un balisage de quantité non standard. Le poids choisi est tout de même respecté côté serveur (minimum et maximum). Contactez-nous avec le nom du thème pour une adaptation.

Le prix natif n’est pas à jour après un import de prix

Cliquez sur Resynchroniser maintenant.

Compatibilité

  • PrestaShop 8.0 à 9.x, le même ZIP couvre les deux branches.
  • Affichage par le hook natif displayProductPriceBlock, testé sur le thème Classic.
  • Architecture ModuleAdminController, sans dépendance Composer, PHP 7.2 et plus.
  • Interface et e-mails en français, anglais, espagnol, allemand, italien, néerlandais, polonais et portugais.
Cette page vous a-t-elle été utile ?

Toujours bloqué ? Contactez le support