Point de Vente (POS)

L’écran principal de vente. Les caissiers y passent l’essentiel de leur journée : créer des ventes, gérer le panier, encaisser, émettre des documents commerciaux — que vous teniez une boutique, une épicerie, un restaurant, une parfumerie ou un magasin d’électronique.

Accessible parAdministrateurGérantCaissierServeurBarista

Démo interactive

Essayez le vrai écran de vente ci-dessous : sélectionnez une table (mode restaurant), ajoutez des produits au panier, ajustez les quantités, appliquez une remise, liez un client puis encaissez (essayez « Espèces » pour voir le rendu). Verrouillez la caisse avec le PIN 1122. Tout est simulé.

🍽️
Session POS
💵 200.000 DT🕐 18:39
● Active
TousCafésBoissonsPâtisseriesPlatsDesserts
Produits18
🔍
Sélectionnez une table
☕
Espresso
3.500 DT
☕
Cappuccino
5.000 DT
🥛
Latte
5.500 DT
☕
Americano
4.000 DT
🍵
Thé à la menthe
3.000 DT
🧃
Jus d'orange
6.000 DT
💧
Eau minérale
2.000 DT
🥤
Coca-Cola
3.500 DT
🥐
Croissant
2.500 DT
🥐
Pain au chocolat
3.000 DT
🧁
Muffin
4.000 DT
🍩
Donut
3.500 DT
🥪
Sandwich Club
9.500 DT
🥗
Salade César
11.000 DT
🥧
Quiche
7.500 DT
🍰
Tiramisu
6.500 DT
🍰
Cheesecake
7.000 DT
🍨
Glace 2 boules
5.000 DT
🪑 Tables8
Libre Occupé Réservé
1
2
3
4
5
6
7
8
🛒 Commande
👤Aucun client
🛒
Sélectionnez une table

Disposition de l’écran POS

La disposition est fixe : elle ne se réorganise pas. À gauche le catalogue (et la barre des tables si le mode métier les active), à droite une colonne avec le panier et le pavé d’actions.

🧭 En-tête

« Session POS » avec le statut « ● Active », le bouton « Documents », la pastille du type de document et la pastille client.

📂 Catalogue de produits

Onglets de catégories (« Tous » + vos catégories), grille de produits avec photo et prix, et barre « Rechercher… » qui trouve un produit par nom ou par code-barres.

🪑 Barre des tables

(Si le mode métier active les tables, ex. Café/Bar, Restaurant) Bande horizontale défilante avec le numéro de chaque table et sa couleur : Libre, Occupé, Réservé.

🛒 Panier / Ticket

Lignes, quantités, prix unitaires, remises, promotions, client lié, totaux et bouton « PAYER » (ou « Émettre le … » pour un document sans encaissement).

⚡ Pavé d’actions

Grille fixe de 6 cases : 5 actions + « Plus (n) » qui ouvre les autres actions.

L’en-tête du POS

  • 📁 « Documents » — ouvre l’espace Documents commerciaux sans quitter la vente (visible seulement avec la permission view_commercial_docs).
  • 🧾 Pastille « Type de document » — affiche le type actif (Ticket de caisse, Facture, Devis…) ; un cadenas apparaît quand le document est finalisé (« Document finalisé : le type ne peut plus changer »).
  • 👤 Pastille « Client » — nom du client lié, avec un × pour le retirer. Si le type choisi exige un client, elle affiche « Client requis » en avertissement.

Le pavé d’actions

Le pavé a une taille fixe (2 rangées de 3). Les actions les plus utilisées en cours de vente sont visibles ; les autres sont rangées derrière « Plus (n) » (« Autres actions »). L’ordre ne change pas.

💰

Tiroir-caisse

Ouvre le tiroir. Demande le PIN si l’utilisateur a l’option « Exiger le code PIN pour ouvrir le tiroir ».

🖨️

Imprimer

Imprime le panier selon son type : ticket thermique pour un ticket de caisse, modèle A4 pour un document commercial.

🏷️

Remise

Remise sur le ticket entier (pourcentage ou montant fixe).

✖️

Annuler

« Annuler le panier ? » → « Oui, annuler ». Nécessite la permission cancel_order.

🔒

Verrouiller

Affiche l’écran PIN : la caisse reste bloquée jusqu’à la saisie d’un PIN valide.

Dans « Plus (n) »

⛶

Plein écran / Réduire

Bascule l’affichage plein écran.

🔄

Actualiser

Recharge produits, catégories, tables et session.

🏦

Gestion caisse

Montant de départ, retrait / apport d’espèces, clôture de session.

👥

Sélect. client

Ouvre la recherche client (le bouton affiche le prénom du client lié).

Tables (restaurants & cafés)

  • La barre des tables n’apparaît que si le mode métier active les tables (Configuration application → Mode métier).
  • Sélectionnez d’abord une table : sans table, ajouter un produit, scanner ou lier un client est refusé (« Sélectionnez d’abord une table. »).
  • Chaque table garde son propre panier : touchez une autre table pour passer à sa commande, puis revenez.
  • Une table libre devient « Occupé » seulement quand le premier article est ajouté.
  • Après l’encaissement complet, la table est libérée.

Créer une vente — Pas à pas

  1. 1(Mode avec tables) Touchez une table dans la barre des tables.
  2. 2Filtrez avec les onglets de catégories, ou tapez dans « Rechercher… » (nom ou code-barres), ou scannez directement.
  3. 3Touchez un produit → 1 unité est ajoutée. Un produit à variantes ouvre « Choisir une variante » ; un produit au poids ouvre la fenêtre de pesée.
  4. 4Ajustez avec + et − (minimum 1), ou touchez la quantité pour la saisir au pavé numérique.
  5. 5Touchez le prix unitaire souligné pour le modifier sur cette ligne seulement (« Modifier le prix unitaire de cette ligne » — permission apply_discount ; le prix catalogue ne change pas).
  6. 6Supprimez une ligne avec l’icône corbeille.
  7. 7Vérifiez le total, puis touchez « PAYER ».

Variantes et produits au poids

Variantes (modes avec variantes, ex. Boutique) : la fenêtre « Choisir une variante » liste les variantes actives avec leur libellé couleur / taille, le « SKU » et une puce « Stock ». Scanner le code-barres d’une variante l’ajoute directement.

Produits vendus au poids : la fenêtre « Pesée — produit » affiche le « Prix : … / kg » et le panneau Balance avec son état (Connectée, Déconnectée, Simulateur). Utilisez « Lire le poids », « Tare » pour déduire le contenant, ou « Saisie manuelle » ; puis « Confirmer » le poids net. La ligne affiche poids × prix au kilo.

Scanner de code-barres

Branchez un scanner USB (type clavier). Il fonctionne partout sur l’écran POS, sans cliquer dans la recherche. SwiftUP cherche d’abord un code-barres de variante, puis un code-barres produit. Un message confirme « ✓ produit ajouté » ou « Code-barres non reconnu ».

Le scan est suspendu tant qu’une fenêtre (variantes, Documents commerciaux…) est ouverte : cela évite d’ajouter des articles au panier caché derrière.

Lier un client

  1. 1Touchez la pastille client dans l’en-tête (ou « Sélect. client » dans « Plus »).
  2. 2Recherchez par nom, prénom ou téléphone : chaque résultat montre ses points et son nombre d’achats.
  3. 3Aucun résultat ? Utilisez « Créer « … » » pour créer le client sur place.
  4. 4Pour retirer le client : × sur la pastille, ou « Retirer » dans la fenêtre.
Le panier affiche alors le nom du client, une puce de points et le nom de son programme de fidélité.

Remises et promotions

  • 🏷️ Remise ticket — bouton « Remise » : choisissez « Pourcentage » ou « Montant fixe », saisissez la valeur, « Appliquer la remise ». Une nouvelle remise remplace la précédente.
  • ❌ Retirer la remise ticket — le × de la puce « Remise manuelle » dans les totaux.
  • 🔖 Remise sur un article — icône étiquette sur la ligne (« Remise sur l’article ») ; retirez-la avec « Supprimer la remise de l’article ».
  • 🎉 Promotions automatiques — affichées en vert sous la ligne (nom + montant) et dans le total « Promotions ». Le caissier ne les ajoute ni ne les retire.
Les promotions sont revérifiées au paiement. Si l’une n’est plus valable, SwiftUP l’indique (« … n’est plus valable — le total a été mis à jour. ») et le montant encaissé suit le nouveau total.

Encaisser un paiement

  1. 1Touchez « PAYER » : la fenêtre de paiement affiche le total commande et le « Reste à payer ».
  2. 2Choisissez le mode de paiement (tuiles).
  3. 3Saisissez le montant ou utilisez les montants rapides (« Exact » et billets ronds pour les moyens qui rendent la monnaie). La « Monnaie à rendre » est calculée.
  4. 4Renseignez la référence si le moyen l’exige (ex. numéro de chèque).
  5. 5« Confirmer ». Un montant partiel est accepté : rouvrez « PAYER » pour régler le reste avec un autre moyen (« Règlements effectués » les liste).
  6. 6Selon le réglage du moyen de paiement, le tiroir s’ouvre et le ticket s’imprime automatiquement.

Modes de paiement

Les tuiles viennent de Configuration application → Paiements → Moyens de paiement : seuls les moyens actifs et affichés en caisse apparaissent, dans l’ordre choisi. Par défaut :

  • 💵 Espèces — rendu monnaie, ouvre le tiroir
  • 💳 Carte de crédit / Carte de débit — passent par le TPE (voir Paiement électronique). En mode manuel : « Le paiement a-t-il été accepté sur le terminal (TPE) ? » → Accepté / Refusé
  • 🧾 Chèque — numéro de chèque obligatoire (3 à 30 caractères), banque facultative
  • 🏦 Virement bancaire — référence du virement obligatoire, banque facultative
  • 🎫 Ticket restaurant
  • 🎁 Carte cadeau — numéro de la carte cadeau obligatoire (simple référence, pas de solde suivi)
  • 📋 Crédit client — vente à crédit pour un client lié
  • ➕ Autre
Chaque moyen a ses réglages : Ouvrir le tiroir, Impression auto, Rendu monnaie, Passer par le TPE, Client obligatoire, Référence obligatoire (et son libellé).

Vente à crédit

Choisissez « Crédit client » avec un client lié. SwiftUP vérifie son crédit avant de valider : solde actuel, limite et crédit disponible. Il bloque si le crédit n’est pas activé pour ce client ou si la limite est dépassée, avertit « Proche de la limite », et affiche le nouveau solde. Le bouton devient « Vente à crédit ».

Points fidélité

  • Dans le panier : une puce de points et le nom du programme du client lié.
  • Dans la fenêtre de paiement : « … pts disponibles » et l’interrupteur « Utiliser pts ».
  • Les points sont utilisés par multiples du seuil du programme du client (ou au taux de conversion configuré s’il n’a pas de programme) ; la remise s’affiche (« -… de remise »).
  • Après paiement, les points gagnés sont crédités automatiquement.
Les points ne sont pas une tuile de paiement : ils réduisent le total avant l’encaissement.

Partager l’addition (Café/Bar et Restaurant)

Disponible uniquement en modes Café/Bar et Restaurant, pour un ticket ou une facture. Touchez l’icône « Partager l’addition » à côté de « PAYER ».

  1. 1« 1 · Comment partager ? » : « Par consommation » (attribuez chaque article à une ou plusieurs personnes), « Parts égales », ou « Montant libre » (la somme des parts doit égaler le total).
  2. 2Réglez le nombre de « Personnes » et donnez-leur un nom (facultatif). « Créer la répartition ».
  3. 3« 2 · Parts et encaissement » : touchez « Encaisser » sur une personne. Choisissez le moyen de paiement, la référence si besoin, un « Pourboire », « Appoint » ou « Moitié de la part ». La monnaie à rendre et le reste de la table sont affichés ; un paiement partiel laisse un reste dû à cette personne.
  4. 4Répétez pour chaque personne. Quand la table est réglée : « Terminer » ou « Terminer et imprimer ».
  • 🔒 Une part déjà payée est protégée, et le mode de répartition ne peut plus changer après un premier paiement.
  • 🔁 Si le ticket change après la répartition, « Recalculer » les parts : les paiements confirmés sont conservés.
  • 🗑️ « Supprimer la répartition » pour recommencer.
  • 💳 Les cartes passent par le TPE comme pour un paiement normal.

Choisir le résultat du panier (type de document)

Touchez la pastille « Type de document » dans l’en-tête. Le type est enregistré avec le panier et se verrouille après paiement, fiscalisation ou conversion.

  • Ticket de caisse — vente au comptoir, encaissement immédiat
  • Facture — vente encaissée puis facture fiscale au nom du client (client requis)
  • Devis — offre de prix, sans encaissement ni mouvement de stock (client requis)
  • Commande client — livraison et facturation ultérieures ; champ « Livraison prévue » (client requis)
  • Bon de livraison — déduit le stock sans encaissement ; options « Avec prix / Sans prix » et « Colis » ; avertit si « Adresse de livraison manquante » (client requis)
  • Avoir — correction d’une facture d’origine ; indisponible sans facture chargée
  • Un type que vous n’avez pas le droit de créer ou d’émettre est grisé avec la raison.
  • Pour un devis, une commande ou un bon de livraison, le bouton devient « Émettre le … » : aucun paiement au POS.
  • Si le client manque, la recherche client s’ouvre automatiquement.
Première facture sur un poste dont l’identité fiscale est incomplète : la fenêtre « Identité fiscale de l’établissement » demande « Raison sociale », « Matricule fiscal » et « Adresse ». « Enregistrer et continuer » reprend la finalisation là où elle s’était arrêtée.
Un devis, une commande ou un bon de livraison ne s’encaisse pas dans le POS. Émettez-le, puis réglez-le via la facture ou un acompte dans Documents commerciaux.

Timbre fiscal d'une vente

Nouveau — v2.0.9

Quand le type de document du panier porte un timbre fiscal (réglé dans Configuration application), le panier affiche une ligne « Timbre fiscal » sous le total TTC, et le total devient « Montant dû ». Un utilisateur autorisé peut ajuster ce timbre pour cette seule vente — par exemple pour un client exonéré — sans toucher au réglage général.

Permission requise : « Modifier le timbre fiscal d'une vente » (override_fiscal_stamp). Par défaut : Administrateur et Gérant. Le Caissier ne l'a pas ; sans elle, le montant s'affiche en lecture seule.
  1. 1Dans le panier, cliquez sur le montant du timbre : le pavé numérique s'ouvre. Saisissez le nouveau montant et validez.
  2. 2Ou cliquez sur ✖ « Retirer le timbre fiscal » pour le mettre à 0.
  3. 3La fenêtre « Motif de la modification du timbre » s'ouvre : choisissez « Client exonéré », « Timbre déjà acquitté sur un autre document », « Erreur de saisie » ou « Autre motif » (dans ce cas, « Précisez le motif » est obligatoire), puis « Valider ».
  4. 4La puce « modifié » signale le timbre ajusté. Cliquez sur ↺ « Rétablir le timbre par défaut » pour revenir au réglage.
  5. 5Encaissez normalement : le timbre ajusté est inclus dans le montant dû.
  • 🔒 Si la législation fixe le timbre de ce document, la puce « Fixé par la loi » s'affiche et le timbre ne peut pas être modifié (ex. : Facture en Tunisie, 1,000 TND).
  • ⬆️ Si la loi impose un minimum, un montant inférieur est refusé.
  • 💳 Dès qu'un règlement a été reçu (même partiel), le timbre de la vente ne peut plus changer.
  • 🔁 Changer le type de document du panier annule l'ajustement : le timbre par défaut du nouveau type s'applique.
Chaque modification ou rétablissement est enregistré dans le journal d'audit avec l'utilisateur, l'ancien et le nouveau montant et le motif. Choisissez le motif exact : il sert de justificatif en cas de contrôle.

Voir aussi : Configuration application (timbre fiscal & législation), Rôles (attribuer la permission).

Documents commerciaux depuis le POS

Le bouton « Documents » de l’en-tête ouvre « Documents commerciaux » : « Rechercher, consulter, encaisser — sans quitter la vente en cours. » Le panier à l’écran n’est pas touché. Permission : view_commercial_docs.

Filtres : numéro, type (dont « Ticket »), statut, client, dates, « impayés uniquement ». La puce « Client du panier » limite la liste au client lié, sur demande.

  • 👁️ Voir le détail · Copier le numéro · Historique
  • ▶️ Continuer dans le POS — une commande ou un devis : le reste à livrer est chargé dans le panier, puis vous validez le bon de livraison. Si une vente est en cours, « Abandonner la vente et charger » la supprime définitivement.
  • ↩️ Reprendre une vente restée ouverte (ticket) — la vente actuelle reste ouverte sur sa table.
  • 🧾 Facturer ce ticket — crée la facture d’un ticket payé (jamais deux fois).
  • ✅ Devis : Marquer accepté / Marquer refusé ; Convertir en … (crée un brouillon à émettre depuis le module Documents).
  • 💶 Facture : Enregistrer un règlement · Commande client : Enregistrer un acompte · Avoir émis : Rembourser.
  • 🖨️ Aperçu PDF · Imprimer · Imprimer sans prix (bon de livraison) · Enregistrer le PDF.
  • 🚫 Annuler le document (avec motif).
Le scanner est en pause tant que cette fenêtre est ouverte.

Tiroir-caisse et verrouillage

  • 💰 PIN du tiroir : réglage par utilisateur dans sa fiche (Utilisateurs → « Exiger le code PIN pour ouvrir le tiroir »). L’utilisateur saisit alors son PIN à 4 chiffres avant l’ouverture.
  • 🔒 « Verrouiller » affiche l’écran PIN immédiatement. L’écran reste affiché même après une actualisation de la page.
  • ⏱️ Verrouillage automatique après inactivité : « Délai de verrouillage automatique » dans Configuration application (1 à 60 minutes, 1 par défaut).

Gestion de caisse depuis le POS

  • « Modifier le montant de départ » — corrige le fond de caisse de la session.
  • « Effectuer un retrait / apport d’espèces » — montant et « Motif » obligatoire.
  • « Clôturer la session de caisse » — saisissez le « Montant de clôture (espèces en caisse) ». Opération irréversible.
Si des paniers sont encore ouverts, la fenêtre « Clôture bloquée » les liste : « Libérer » ou « Annuler le panier » pour chacun, puis « Relancer la clôture ».

Messages à l’écran

  • 📱 « Nouvelle commande mobile — Table … » et « 🍳 Commande en cuisine — Table … » quand un serveur commande depuis l’application mobile.
  • 🔎 Retour de scan (ajouté / non reconnu).
  • 🧾 Numéro du document émis, ou raison d’un échec.
  • 📡 Bandeau « Vous êtes hors ligne. Certaines fonctionnalités peuvent être indisponibles. »

Qui peut faire quoi (rôles par défaut)

ActionAdminGérantCaissierServeur / Barista
Prendre et modifier une commande✓✓✓✓
Encaisser (process_payment)✓✓✓—
Remise, prix unitaire de ligne (apply_discount)✓✓✓—
Annuler le panier (cancel_order)✓✓——
Modifier le timbre fiscal✓✓——
Documents commerciaux depuis le POS✓✓✓—
Devis, commande client, bon de livraison✓✓✓—
Facture (créer + finaliser)✓✓——
Avoir✓✓——
Rembourser un ticket (refund_order)✓✓——
Les permissions se modifient dans Rôles. Serveurs et baristas prennent les commandes, un caissier les encaisse.

Rembourser un ticket payé

Un ticket clôturé ne se modifie pas depuis le POS. Le remboursement se fait dans le module Documents commerciaux → onglet Tickets → « Rembourser » : choisissez le « Paiement à rembourser », le montant (partiel possible, jusqu’au maximum remboursable), le « Motif du remboursement » et le type : « Espèces » (sortie caisse) ou « Avoir client » (crédit). Permission refund_order (Admin, Gérant).

FAQ