Système complet de gestion des stocks et de point de vente pour votre site Larapen. Suivez les stocks dans plusieurs entrepôts, traitez les ventes via un POS intégré, gérez les caisses enregistreuses et surveillez l’inventaire avec des alertes en temps réel et des rapports complets.

Inventaire multi-entrepôts

Suivez les stocks dans plusieurs entrepôts/emplacements avec des quantités par entrepôt, des seuils de réapprovisionnement et des emplacements de rangement.

Mouvements de stock

Enregistrez tous les changements de stock : réception, expédition, transfert entre entrepôts et ajustements d’inventaire avec piste d’audit complète.

Terminal de ventes

Caisse enregistreuse plein écran avec recherche de produits, lecture de codes-barres, gestion du panier et traitement des paiements.

Caisses enregistreuses

Suivez les sessions de caissier avec les montants d’ouverture/fermeture, l’écart entre espèces attendues et comptées, et la détection automatique des écarts.

Alertes de stock

Notifications automatiques de stock bas lorsque les quantités passent sous les seuils de réapprovisionnement. Notifications par e-mail et en base de données.

Rapports & Analyses

Tableau de bord avec graphiques de ventes, rapports de valorisation des stocks, analyse des mouvements et classement des produits les plus vendus.

Cas d’utilisation

Gestion de entrepôt de détail

Suivez l’inventaire en boutique et en réserve, traitez les ventes via le POS, surveillez les niveaux de stock. Recevez des alertes lorsque les produits sont en rupture et analysez les tendances de ventes avec les rapports intégrés.

Opérations d’entreposage

Inventaire multi-emplacements avec transferts, ajustements et journalisation complète des mouvements. Suivez chaque changement de stock avec une piste d’audit immuable dans tous vos entrepôts.

Restaurant / Café

Gérez le stock d’ingrédients avec suivi des unités (kg, litres, pièces), réceptionnez les livraisons, suivez la consommation. Utilisez le POS pour les ventes en salle et surveillez les niveaux d’ingrédients.

Prérequis

  • Larapen CMS v1.0.0 ou ultérieur
  • PHP 8.3+
  • MySQL 8.0+
Note : Cet add-on est réservé à l’administration, il ne fournit aucune page front-end. Toutes les fonctionnalités sont accessibles depuis le panneau d’administration.

Installation

Étape 1 : Téléverser l’add-on

Dans le panneau d’administration, allez dans Admin → Extensions → Add-ons et cliquez sur le bouton Télécharger un add-on. Sélectionnez le fichier ZIP de l’add-on : le système le décompresse automatiquement et l’add-on apparaît dans la liste des add-ons installés.

Étape 2 : Activer l’add-on

Repérez POS dans la liste et cliquez sur Activer. Ses migrations, ses seeders (le cas échéant) et ses permissions sont mis en place automatiquement.

Étape 3 : Configurer

Naviguez vers Admin → POS → Paramètres pour configurer les points de vente, les caisses, l’impression des reçus et les modes de paiement. Voir Configuration.

Code d’achat (clé de licence)

POS est vendu comme un produit séparé, il possède donc son propre code d’achat (clé de licence), distinct du code d’achat de l’application principale et de celui de chaque autre add-on. Il vous est demandé lorsque vous activez POS dans Panneau d’administration → Add-ons.

Nos produits sont vendus sur trois plateformes. La façon dont vous recevez un code d’achat dépend de l’endroit où vous avez acheté le produit.

Plateforme / Marketplace Comment obtenir le code d’achat Où le retrouver
Boutique bedigit.com
Achat sur le site (Shop)
Généré automatiquement lorsque la commande est payée, puis envoyé par e-mail, soit dans un e-mail de licence dédié, soit dans l’e-mail de confirmation de commande. Mon compte → Mes licences sur bedigit.com
Gumroad Créé dès que Gumroad nous notifie la vente, puis envoyé dans un e-mail séparé, en plus du reçu Gumroad. L’e-mail de licence, votre Bibliothèque Gumroad et Mon compte → Mes licences sur bedigit.com
Envato Market
CodeCanyon
Délivré par Envato, pas par nous, et jamais envoyé par e-mail : vous le téléchargez vous-même depuis votre compte Envato. Compte Envato → Downloads → License certificate & purchase code
Vérifiez votre dossier de spam. Pour les achats effectués sur la Boutique bedigit.com et sur Gumroad, le code d’achat est envoyé par e-mail. Les e-mails de licence automatiques sont très souvent filtrés : si le message ne se trouve pas dans votre boîte de réception, regardez dans votre dossier spam / courrier indésirable avant de contacter le support, et ajoutez notre adresse d’expédition à vos contacts ou à votre liste d’autorisation.

1. Boutique bedigit.com (achat sur le site)

  • Dès que le statut de paiement de la commande devient Payée, une clé de licence est générée automatiquement pour chaque article sous licence de la commande (une clé par unité achetée : acheter 3 unités donne 3 clés distinctes).
  • Elle est envoyée par e-mail à l’adresse utilisée pour la commande, soit dans un e-mail de licence dédié, soit dans l’e-mail de confirmation de commande. Vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
  • La clé reste disponible dans votre compte sous Mon compte → Mes licences. Les clés sont masquées dans la liste ; ouvrez la page de détail de la licence pour afficher et copier la clé complète, voir les domaines sur lesquels elle est activée, et désactiver un domaine pour libérer un emplacement d’activation.
  • La facture correspondante se trouve sous Mon compte → Mes commandes.

2. Gumroad

  • Un achat sur Gumroad produit deux e-mails distincts : le reçu Gumroad (envoyé par Gumroad, donnant accès aux fichiers) et un e-mail de clé de licence (envoyé par bedigit.com) qui contient votre code d’achat.
  • L’e-mail de clé de licence est généré dès que Gumroad nous notifie la vente, il arrive donc normalement quelques secondes après le paiement. Ici aussi, vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
  • Lorsque le produit Gumroad utilise la fonctionnalité de clés de licence propre à Gumroad, la même clé apparaît aussi dans votre reçu Gumroad et sous Bibliothèque → votre achat sur gumroad.com.
  • Utilisez la même adresse e-mail sur bedigit.com que sur Gumroad : vos clés sont alors liées automatiquement à votre compte et listées sous Mon compte → Mes licences, même si vous vous inscrivez après l’achat. Vous pouvez aussi ajouter une clé Gumroad manuellement depuis Mon compte → Mes licences Gumroad.

3. Envato Market (CodeCanyon)

  • Les codes d’achat Envato sont délivrés et fournis par Envato Market, jamais envoyés par e-mail par nous, il n’y a donc rien à chercher dans votre dossier de spam : vous récupérez le code depuis votre compte Envato.
  • Connectez-vous à votre compte Envato / CodeCanyon, ouvrez la page Downloads, trouvez l’article et choisissez License certificate & purchase code dans le menu déroulant Download. Le code est inscrit dans ce certificat.
  • Un code d’achat Envato ressemble à 12345678-90ab-cdef-1234-567890abcdef (8-4-4-4-12 caractères). Il ne change jamais, et le renouvellement du support de l’article n’en délivre pas de nouveau.
  • Article officiel Envato : Where Is My Purchase Code?
Vous avez perdu votre code d’achat ? Recherchez dans votre messagerie (dossier de spam inclus) “licence” ou “code d’achat”, puis consultez Mon compte → Mes licences sur bedigit.com pour les achats Boutique et Gumroad, ou Downloads → License certificate sur Envato. S’il est toujours introuvable, ouvrez un ticket sur notre Centre d’aide avec votre numéro de commande (Boutique), l’ID de vente Gumroad ou l’e-mail de l’acheteur (Gumroad), ou votre nom d’utilisateur Envato et le nom de l’article (Envato).

Configuration

Tous les paramètres sont gérés dans Admin → POS → Paramètres (stockés dans la table settings, groupe pos). Les valeurs par défaut sont définies dans config/pos.php.

Général

Paramètre Description Défaut
pos_default_tax_rate Pourcentage de taxe appliqué aux ventes POS. 0
pos_currency_symbol Symbole monétaire affiché sur les prix et les reçus. $

SKU & Code-barres

Paramètre Description Défaut
pos_auto_generate_sku Créer automatiquement un SKU pour les nouveaux produits. true
pos_sku_prefix Préfixe pour les SKU générés automatiquement (ex. STK-000001). STK
pos_barcode_enabled Activer le champ code-barres sur les produits et la lecture de codes-barres dans le POS. true

Alertes

Paramètre Description Défaut
pos_low_pos_alerts_enabled Activer la création automatique d’alertes de stock bas lorsque les quantités passent sous les seuils de réapprovisionnement. true
pos_large_adjustment_threshold Seuil de quantité pour déclencher les notifications d’ajustement important. 50

Ventes & Reçus

Paramètre Description Défaut
pos_sale_number_prefix Préfixe pour les numéros de vente générés (ex. SALE-000001). SALE
pos_receipt_header Texte personnalisé affiché en haut des reçus imprimés. (vide)
pos_receipt_footer Texte personnalisé affiché en bas des reçus imprimés. (vide)

Variables d’environnement

POS_DEFAULT_TAX_RATE=0
POS_CURRENCY_SYMBOL=$
POS_AUTO_GENERATE_SKU=true
POS_SKU_PREFIX=STK
POS_BARCODE_ENABLED=true
POS_LOW_POS_ALERTS=true
POS_LARGE_ADJUSTMENT_THRESHOLD=50
POS_SALE_PREFIX=SALE
Note : Les variables d’environnement sont utilisées comme valeurs par défaut. Les paramètres enregistrés dans le panneau d’administration les remplacent.

Admin : Tableau de bord

Le tableau de bord POS (POS → Tableau de bord) est la page d’accueil des opérations POS quotidiennes. Il fournit un aperçu rapide des indicateurs clés et un accès rapide aux tâches courantes.

Cartes KPI

Six cartes récapitulatives en haut de la page :

  • Total produits : nombre de produits POS actifs.
  • Valeur totale du stock : valeur totale de tout l’inventaire (prix de revient × quantité).
  • Alertes stock bas : nombre d’alertes de stock bas actives.
  • Ventes du jour : nombre de ventes réalisées aujourd’hui.
  • Chiffre d’affaires du jour : chiffre d’affaires total des ventes du jour.
  • Caisses ouvertes : nombre de caisses enregistreuses actuellement ouvertes.

Actions rapides

Boutons en un clic pour les opérations les plus courantes :

  • Ouvrir le terminal : accéder au terminal de ventes.
  • Ouvrir une caisse : démarrer une nouvelle session de caisse.
  • Nouveau mouvement : accéder à la page des mouvements de stock.
  • Nouveau produit : créer un produit.
  • Voir les rapports : accéder à la page des rapports.

Activité récente

  • Ventes récentes : les 5 dernières ventes avec numéro de vente, montant, statut et date.
  • Mouvements récents : les 5 derniers mouvements de stock avec produit, type, quantité et date.

Admin : Produits

La page Produits (POS → Produits) gère votre catalogue d’inventaire.

Liste des produits

Un tableau paginé affichant :

  • Nom
  • SKU
  • Code-barres
  • Unité (pièce, kg, g, litre, mètre, boîte, lot)
  • Prix de revient
  • Prix de vente
  • Stock total (somme sur tous les entrepôts)
  • Statut (actif / inactif)

Actions par élément : Modifier, Supprimer. Suppression en masse avec sélection par case à cocher. Les produits supprimés de manière réversible peuvent être restaurés.

Création & Modification de produits

Le formulaire de produit comprend les champs suivants :

  • Nom (traduisible) : titre du produit affiché dans toute l’administration.
  • Slug (traduisible) : identifiant compatible URL. Généré automatiquement à partir du nom s’il est vide.
  • Description (traduisible) : description détaillée du produit.
  • SKU : unité de gestion des stocks. Généré automatiquement si pos_auto_generate_sku est activé.
  • Code-barres : valeur de code-barres optionnelle pour la lecture en POS.
  • Unité : unité de mesure : pièce, kg, g, litre, mètre, boîte ou lot.
  • Prix de revient : coût d’achat/fabrication (utilisé pour les rapports de valorisation).
  • Prix de vente : prix de détail utilisé dans les ventes POS.
  • Catégorie : à sélectionner parmi les catégories de produits POS.
  • Image principale : image du produit via la médiathèque.
  • Bascule Actif : les produits inactifs sont masqués du POS et des rapports.

Niveaux de stock par entrepôt

Sur la page de modification du produit, un tableau Niveaux de stock par entrepôt est affiché pour les utilisateurs disposant de la permission pos.warehouses.access_all. Ce tableau montre chaque entrepôt auquel le produit est affecté avec sa quantité en stock actuelle (sous forme de badge coloré en lecture seule), le seuil de réapprovisionnement, la quantité de réapprovisionnement et l’emplacement.

La quantité est en lecture seule : les modifications de stock doivent passer par le système de Mouvements de stock pour maintenir une piste d’audit complète. Seuls le seuil de réapprovisionnement, la quantité de réapprovisionnement et l’emplacement peuvent être modifiés depuis ce tableau.

SKU & Code-barres

Lorsque pos_auto_generate_sku est activé, les nouveaux produits reçoivent automatiquement un SKU au format {prefix}-{zero-padded ID} (ex. STK-000042). Vous pouvez remplacer le SKU généré automatiquement à tout moment.

Lorsque pos_barcode_enabled est activé, un champ code-barres apparaît sur le formulaire produit. Les codes-barres servent à retrouver rapidement un produit dans le POS à l’aide d’un lecteur de codes-barres.

Admin : Catégories

Les catégories de produits utilisent la table unifiée categories avec categorizable_type = 'pos_product'. Les catégories sont gérées via POS → Catégories.

  • Nom (traduisible) et Slug (traduisible, généré automatiquement).
  • Description (traduisible).
  • Catégorie parente : prend en charge l’imbrication hiérarchique.
  • Position : valeur d’ordonnancement.
  • Bascule Active.

Admin : Entrepôts

La page Entrepôts (POS → Entrepôts) gère vos emplacements de stockage.

Champs d’un entrepôt

  • Nom (traduisible) : nom d’affichage de l’entrepôt.
  • Code : code d’identification unique (ex. WH-MAIN, WH-EAST).
  • Adresse, Ville, Pays : emplacement physique.
  • Téléphone et E-mail : informations de contact.
  • Bascule Par défaut : marque cet entrepôt comme entrepôt par défaut pour les nouveaux mouvements de stock et les ventes POS.
  • Bascule Actif : les entrepôts inactifs sont exclus des formulaires de mouvement et du POS.
  • Utilisateurs assignés : sélectionnez les utilisateurs administrateurs autorisés à accéder à cet entrepôt. Les utilisateurs assignés à aucun entrepôt peuvent accéder à tous les entrepôts par défaut.

Les entrepôts sont supprimés de manière réversible et peuvent être restaurés.

Page de détail de l’entrepôt

La page de détail de l’entrepôt affiche les statistiques récapitulatives, les informations de l’entrepôt, les utilisateurs assignés et le tableau Produits dans l’entrepôt.

Le tableau des produits liste tous les produits affectés à l’entrepôt avec leur quantité en stock (badge en lecture seule), le seuil de réapprovisionnement, la quantité de réapprovisionnement, l’emplacement et le statut du stock. Un bouton de modification permet de mettre à jour les champs de configuration (seuil de réapprovisionnement, quantité de réapprovisionnement, emplacement), mais la quantité en stock ne peut pas être modifiée depuis cette page, toutes les modifications de quantité doivent passer par les Mouvements de stock.

Un bouton Mouvements renvoie vers la page des mouvements de stock pour enregistrer les entrées/sorties de stock.

Entrepôt par défaut

Exactement un entrepôt doit être marqué comme entrepôt par défaut. Le entrepôt par défaut est présélectionné dans les formulaires de mouvement de stock et utilisé comme entrepôt source pour les ventes POS. Si aucun entrepôt par défaut n’est défini, le premier entrepôt actif est utilisé.

Contrôle d’accès aux entrepôts

Vous pouvez restreindre les entrepôts auxquels un utilisateur peut accéder en l’assignant à des entrepôts spécifiques sur la page de modification de l’entrepôt. Cela contrôle les données qu’il voit dans l’ensemble du module POS :

  • Les utilisateurs assignés ne peuvent voir et manipuler que les données (caisses, ventes, mouvements, alertes, rapports) de leurs entrepôts assignés.
  • Les utilisateurs sans assignation (c’est-à-dire assignés à aucun entrepôt) peuvent accéder à tous les entrepôts par défaut.
  • Les utilisateurs disposant de la permission pos.warehouses.access_all contournent tout filtrage par entrepôt et peuvent accéder à tout, indépendamment des assignations.

Le filtrage est appliqué automatiquement à toutes les pages POS : liste des entrepôts, caisses, ventes, mouvements de stock, alertes, rapports et terminal de ventes.

Astuce : Pour restreindre un utilisateur à un seul entrepôt, assignez-le uniquement à cet entrepôt. Pour donner à un responsable l’accès à tous les entrepôts, laissez-le sans assignation ou accordez-lui la permission pos.warehouses.access_all.

Admin : Mouvements de stock

La page Mouvements de stock (POS → Mouvements) affiche une piste d’audit immuable de tous les changements d’inventaire.

Types de mouvements

Type Description Effet
Entrée Stock reçu (achat, livraison). +quantité dans l’entrepôt de destination
Sortie Stock retiré (perte, dommage, mise au rebut). −quantité dans l’entrepôt source
Transfert Stock déplacé entre entrepôts. −source, +destination
Ajustement Corriger la quantité après un comptage physique. Définit la nouvelle valeur
Vente Vente POS (créée automatiquement). −quantité
Retour Annulation de vente (créée automatiquement). +quantité

Création de mouvements

Cliquez sur le bouton Enregistrer un mouvement pour ouvrir la fenêtre modale de création directement sur la page des mouvements. Le formulaire de la fenêtre modale comprend :

  1. Sélectionnez le type de mouvement (In, Out, Transfer ou Adjustment).
  2. Sélectionnez le produit (recherche par nom ou SKU).
  3. Sélectionnez le ou les entrepôts : source et/ou destination selon le type.
  4. Saisissez la quantité.
  5. Ajoutez éventuellement une référence (ex. numéro de bon de commande) et des notes.

Le formulaire s’ajuste dynamiquement en fonction du type de mouvement sélectionné (ex. Transfer affiche les champs entrepôt source et destination). Après soumission, le tableau se rafraîchit automatiquement via AJAX, aucun rechargement de page nécessaire.

Important : Les mouvements sont des enregistrements d’audit immuables. Une fois créés, ils ne peuvent être ni modifiés ni supprimés. Pour corriger une erreur, créez un nouveau mouvement de type Adjustment.

Tableau AJAX & Filtres

La liste des mouvements utilise l’AJAX pour la pagination et le filtrage : la page ne se recharge pas. Les filtres incluent : type, entrepôt et plage de dates (du/au). Les filtres sont appliqués instantanément lors du changement.

Admin : Terminal de ventes

Le Terminal de ventes (POS → Terminal) fournit une interface de caisse enregistreuse plein écran pour traiter les ventes directement depuis le panneau d’administration.

Prérequis : Vous devez avoir une caisse ouverte avant d’accéder au POS. Si aucune caisse n’est ouverte, vous serez invité à en ouvrir une.

Utilisation du POS

Le POS utilise une disposition à deux panneaux :

  • Panneau gauche : recherche de produits et panier. Recherchez par nom de produit, SKU ou code-barres. Cliquez sur un produit pour l’ajouter au panier. Ajustez les quantités ou supprimez des articles directement dans le panier.
  • Panneau droit : traitement de l’encaissement. Sélectionnez le mode de paiement (Espèces, Carte ou Autre). Pour les paiements en espèces, saisissez le montant reçu pour voir le calcul de la monnaie à rendre.

Finalisation de la vente

Après avoir finalisé une vente :

  • Un numéro de vente est généré avec le préfixe configuré (ex. SALE-000001).
  • Les quantités en stock sont automatiquement diminuées dans l’entrepôt de la caisse.
  • Des mouvements de stock de type Sale sont créés pour chaque article.
  • Les totaux courants de la caisse sont mis à jour.
  • Un reçu est affiché et peut être imprimé.

Lecture de codes-barres

Lorsque pos_barcode_enabled est activé, le champ de recherche du POS détecte automatiquement la saisie d’un lecteur de codes-barres. Les lecteurs de codes-barres envoient généralement des caractères suivis d’une touche Entrée, ce qui déclenche une recherche automatique du produit. Si un produit correspondant est trouvé, il est immédiatement ajouté au panier.

Reçus

Après chaque vente, un reçu est généré, contenant :

  • Le texte d’en-tête personnalisé (depuis le paramètre pos_receipt_header).
  • Le numéro de vente et la date/heure.
  • La liste détaillée des articles avec quantités, prix unitaires et totaux par ligne.
  • Le sous-total, la taxe et le total.
  • Le mode de paiement et le montant.
  • La monnaie à rendre (pour les paiements en espèces).
  • Le texte de pied de page personnalisé (depuis le paramètre pos_receipt_footer).

Admin : Caisses

La page Caisses (POS → Caisses) gère les sessions de caisse enregistreuse. Chaque session de caisse suit le poste d’un caissier, de l’ouverture à la fermeture.

Ouverture d’une caisse

  • Sélectionnez un entrepôt, toutes les ventes POS de cette session sont liées à cet entrepôt.
  • Saisissez le montant d’ouverture : les espèces de départ dans la caisse.

Un seul utilisateur peut avoir une caisse ouverte à la fois.

Fermeture d’une caisse

Lors de la fermeture d’une caisse :

  • Saisissez les espèces comptées : le montant réel d’espèces dans la caisse.
  • Le système affiche le montant attendu (montant d’ouverture + ventes en espèces).
  • La différence entre le montant attendu et le montant compté est affichée, mettant en évidence tout écart.

Une notification Caisse fermée est envoyée aux administrateurs lorsqu’une caisse est fermée.

Admin : Ventes

La page Ventes (POS → Historique des ventes) affiche toutes les transactions POS.

Liste des ventes

Un tableau paginé et filtrable affichant le numéro de vente, le client, les articles, le total, le mode de paiement, le statut, l’entrepôt et la date. Filtrez par statut, mode de paiement, entrepôt et plage de dates.

Détail de la vente

La page de détail de la vente affiche :

  • Le numéro de vente et la date/heure.
  • Les informations client (si elles sont fournies).
  • Le tableau des articles : nom du produit, SKU, quantité, prix unitaire et total par ligne.
  • Le résumé financier : sous-total, taxe et total.

Annulation de ventes

Pour annuler une vente :

  • Une raison est requise (minimum 10 caractères).
  • Le stock est automatiquement rétabli : les quantités sont restituées à l’entrepôt.
  • Des mouvements de stock de type Return sont créés pour chaque article.
Important : Les ventes ne sont jamais supprimées du système. Les ventes annulées restent dans les enregistrements avec leur raison d’annulation à des fins d’audit.

Admin : Alertes

La page Alertes (POS → Alertes) affiche les alertes d’inventaire.

Les alertes sont créées automatiquement lorsque la quantité d’un produit dans un entrepôt atteint ou passe sous son seuil de réapprovisionnement. Les alertes ont trois statuts :

  • Active : le stock est sous le seuil de réapprovisionnement.
  • Résolue : le stock a été réapprovisionné au-dessus du seuil de réapprovisionnement.
  • Ignorée : ignorée manuellement par un administrateur.

Utilisez le bouton Vérifier le stock pour effectuer un balayage global de tous les produits et créer/résoudre les alertes en fonction des niveaux de stock actuels.

État vide

Lorsqu’aucune alerte active n’existe, la page affiche un message contextuel :

  • Surveillance configurée : affiche un message vert “Tout est en ordre” avec le nombre de produits surveillés (produits en entrepôt ayant un seuil de réapprovisionnement supérieur à 0).
  • Aucune surveillance configurée : affiche un avertissement jaune expliquant qu’aucun produit n’a de seuil de réapprovisionnement défini, et que des seuils doivent être configurés sur les produits en entrepôt pour activer les alertes de stock bas.

Admin : Rapports

La page Rapports (POS → Rapports) fournit des graphiques analytiques, des tableaux et trois types de rapports détaillés. Utilisez le filtre de période pour ajuster la plage de dates.

Graphiques & Tableaux d’ensemble

La page principale des rapports affiche :

  • Ventes dans le temps : graphique en courbes montrant les tendances de ventes quotidiennes.
  • Mouvements par type : graphique en anneau décomposant les mouvements de stock.
  • Produits les plus vendus : classés par quantité vendue sur la période sélectionnée.
  • Stock par entrepôt : total de produits et quantité par entrepôt.

Valorisation du stock

Affiche la valeur totale de votre inventaire :

  • Décomposition de la valeur par produit et par entrepôt (prix de revient × quantité).
  • Total général pour tous les produits et tous les entrepôts.

Analyse des mouvements

Analysez les mouvements de stock sur une période sélectionnée :

  • Filtre de période : sélectionnez la plage de dates.
  • Graphique en anneau : décomposition visuelle par type de mouvement.
  • Tableau de répartition : nombre et quantité totale par type de mouvement.

Analyse des ventes

Analysez les performances de vente sur une période sélectionnée :

  • Filtre de période : sélectionnez la plage de dates.
  • Graphique en courbes : tendances de ventes dans le temps.
  • Graphique circulaire des modes de paiement : répartition du chiffre d’affaires par mode de paiement (Espèces, Carte, Autre).
  • Produits phares : classés par quantité vendue.

Admin : Paramètres

La page des paramètres (POS → Paramètres) est organisée en sections :

  • Général : taux de taxe par défaut, symbole monétaire.
  • SKU & Code-barres : génération automatique de SKU, préfixe SKU, bascule de lecture de codes-barres.
  • Alertes : bascule des alertes de stock bas, seuil d’ajustement important.
  • Ventes & Reçus : préfixe du numéro de vente, texte d’en-tête/pied de page du reçu.

Réinitialisation des données

La page des paramètres inclut une carte Zone de danger qui permet de réinitialiser toutes les données transactionnelles POS. Cette option est prévue pour supprimer les données de test avant la mise en production.

Données supprimées

  • Toutes les ventes, articles de vente et paiements
  • Toutes les sessions de caisse (historique ouverture/fermeture)
  • Tous les mouvements de stock (ajustements, transferts)
  • Toutes les alertes de stock

Données conservées

  • Produits et catégories
  • Entrepôts
  • Liens entrepôt-produit (les quantités en stock sont remises à zéro)
  • Affectations d’utilisateurs aux entrepôts

Comment ça marche

  1. Naviguez vers POS → Paramètres et faites défiler jusqu’à la carte Zone de danger.
  2. Cliquez sur Réinitialiser les données de test.
  3. Dans la fenêtre de confirmation, tapez RESET et confirmez.
  4. Toutes les données transactionnelles sont définitivement supprimées et un fichier de verrouillage est créé à l’emplacement storage/app/pos-data-reset.lock.

Fichier de verrouillage

Après une réinitialisation, un fichier de verrouillage (storage/app/pos-data-reset.lock) est créé sur le serveur. Cela empêche les réinitialisations accidentelles des données de production. La carte Zone de danger est masquée tant que le fichier de verrouillage existe.

Le fichier de verrouillage contient des métadonnées d’audit : qui a effectué la réinitialisation, quand et depuis quelle adresse IP.

Pour réactiver la fonctionnalité de réinitialisation, un administrateur serveur doit supprimer manuellement le fichier de verrouillage :

rm storage/app/pos-data-reset.lock
Important : L’action de réinitialisation est enregistrée dans le journal d’activité à des fins d’audit. Nécessite la permission pos.settings.edit.

Permissions

L’add-on enregistre 27 permissions :

Permission Description
pos.dashboard.view Voir le tableau de bord POS
pos.products.view Voir la liste des produits POS
pos.products.create Créer de nouveaux produits POS
pos.products.edit Modifier les produits POS existants
pos.products.delete Supprimer des produits POS
pos.categories.view Voir les catégories POS
pos.categories.create Créer des catégories POS
pos.categories.edit Modifier les catégories POS
pos.categories.delete Supprimer des catégories POS
pos.warehouses.view Voir les entrepôts
pos.warehouses.create Créer de nouveaux entrepôts
pos.warehouses.edit Modifier les entrepôts existants
pos.warehouses.delete Supprimer des entrepôts
pos.warehouses.access_all Accéder à tous les entrepôts indépendamment des assignations
pos.movements.view Voir les mouvements POS
pos.movements.create Créer des mouvements POS manuels
pos.registers.view Voir les caisses enregistreuses
pos.registers.open Ouvrir une session de caisse
pos.registers.close Fermer une session de caisse
pos.sales.view Voir les ventes POS
pos.sales.create Créer des ventes via le POS
pos.sales.void Annuler des ventes finalisées
pos.alerts.view Voir les alertes POS
pos.alerts.dismiss Ignorer les alertes POS
pos.reports.view Accéder aux rapports POS
pos.settings.view Voir les paramètres POS
pos.settings.edit Modifier les paramètres POS
Note : Les 27 permissions sont listées ci-dessus.

Notifications

L’add-on envoie 3 types de notifications (gérés via le système centralisé de notifications dans Admin → Paramètres → Notifications) :

Notification Déclencheur Canaux
Alerte stock bas La quantité d’un produit passe sous son seuil de réapprovisionnement dans un entrepôt. E-mail, Base de données
Caisse fermée Une session de caisse enregistreuse est fermée par un caissier. E-mail, Base de données
Ajustement de stock important Un mouvement d’ajustement de stock dépasse le seuil configuré. E-mail, Base de données

Commandes Artisan

Commande Description
php artisan pos:check-levels Analyse tous les niveaux de stock des entrepôts et crée/résout les alertes en conséquence. Il est recommandé de la planifier toutes les heures via le planificateur de tâches de Laravel.

Pour planifier la commande, ajoutez-la à votre routes/console.php :

Schedule::command('pos:check-levels')->hourly();

Désinstallation

Éteindre un add-on sans rien perdre, c’est le désactiver : allez dans Panneau d’administration → Add-ons, trouvez Point of Sale et cliquez sur Désactiver.

  • Ses routes, ses vues, ses entrées de menu d’administration et ses permissions cessent d’être enregistrées, et ses pages publiques ne répondent plus.
  • Ses tables de base de données et toutes les données qu’elles contiennent sont conservées, et ses fichiers restent dans extensions/addons/pos/. Rien n’est supprimé.
  • Le code d’achat enregistré lors de l’activation est conservé lui aussi : réactiver l’add-on ne le redemande pas.
  • La désactivation est refusée tant qu’un autre add-on actif dépend de celui-ci : désactivez d’abord cet add-on.

Cliquez sur Activer sur la même carte pour le rallumer. Les migrations en attente sont rejouées, les assets republiés, et l’add-on reprend exactement là où il s’était arrêté.

Suppression

La suppression est définitive et détruit les données de l’add-on. Le bouton Supprimer n’apparaît que sur un add-on désactivé : la suppression se fait donc toujours en deux temps :

  1. Désactivez Point of Sale (voir Désinstallation).
  2. Cliquez sur Supprimer sur sa carte et confirmez la demande.

Le panneau d’administration, en une seule passe :

  • exécute le hook de désinstallation de l’add-on, s’il en fournit un, tant que son code est encore sur le disque ;
  • révoque les permissions déclarées dans son addon.json ;
  • annule ses migrations, ce qui supprime ses tables de base de données et toutes les lignes qu’elles contiennent, et purge ses entrées de la table migrations, afin qu’une réinstallation ultérieure reparte de zéro ;
  • supprime ses assets publiés : public/addons/pos/, public/vendor/pos/ et storage/app/public/addons/pos/ ;
  • supprime le dossier de l’add-on extensions/addons/pos/ ;
  • supprime sa ligne dans la table addons (le code d’achat enregistré disparaît avec elle) et vide le cache de l’application.
Cette action est irréversible. Sauvegardez votre base de données avant de supprimer un add-on dont les données peuvent encore vous servir : le réinstaller plus tard crée des tables vides, pas votre ancien contenu.

La suppression est refusée, avec un message explicatif et avant toute destruction, lorsque l’add-on est encore actif, lorsqu’un autre add-on actif en dépend, ou lorsque l’utilisateur du serveur web (PHP) ne peut pas supprimer extensions/addons/pos/. Dans ce dernier cas, donnez à cet utilisateur le droit d’écriture sur le dossier et sur son parent, puis réessayez.

Supprimer le dossier en FTP ou en SSH n’est pas équivalent : les tables de l’add-on, ses entrées dans la table migrations et sa ligne addons restent en place, et sa carte reste dans la liste. Utilisez plutôt Supprimer dans le panneau d’administration.

Dépannage

Le POS ne fonctionne pas

  • Assurez-vous d’avoir une caisse ouverte. Le POS nécessite une session de caisse active avant de pouvoir traiter des ventes.
  • Un seul utilisateur peut avoir une caisse ouverte à la fois. Fermez la caisse existante avant d’en ouvrir une nouvelle.

Stock manquant

  • Les mouvements sont immuables, ils ne peuvent être ni modifiés ni supprimés une fois créés.
  • Pour corriger les quantités en stock, créez un nouveau mouvement de type Adjustment.
  • Consultez l’historique des mouvements du produit pour retracer où le stock a été affecté.

Les alertes ne se déclenchent pas

  • Vérifiez que pos_low_pos_alerts_enabled est défini sur true dans les paramètres.
  • Assurez-vous que le produit a un reorder_level supérieur à 0 défini dans la table pivot entrepôt-produit. Les produits sans seuil de réapprovisionnement ne sont pas surveillés.
  • Si la page des alertes affiche “Aucune surveillance configurée”, cela signifie qu’aucun produit en entrepôt n’a de seuil de réapprovisionnement défini. Modifiez les produits depuis la page de détail de l’entrepôt pour définir les seuils.
  • Exécutez php artisan pos:check-levels pour déclencher manuellement une analyse des alertes.

Les numéros de vente ne sont pas séquentiels

  • Changer le paramètre pos_sale_number_prefix réinitialise le compteur de séquence.
  • Les ventes annulées consomment quand même un numéro de vente, ils ne sont pas recyclés.

POS v1.0.0 : composant de la plateforme CMS Larapen.

© BeDigit. Tous droits réservés.

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Besoin d'aide ? Créez un ticket de support

Créer un Ticket

Guides des Modules

avr. 07, 2026