Disponible pour missions & renforts d’agence · Réponse rapide, par la personne qui intervient

Développement e-commerce pour la restauration et la vente à emporter

La commande en ligne de repas ne ressemble à aucun autre e-commerce : un plat se vend par service, sort de la carte quand la matière première manque, revient le lendemain, et doit finir imprimé en cuisine. C’est le type de mission que je traite sur ce secteur.

Décrire mon problème Discuter sur WhatsApp

Un menu n’est pas un catalogue

Sur une boutique classique, un produit existe ou n’existe pas, et son stock décroît jusqu’à zéro. Sur une carte, la disponibilité est une fonction du créneau : le plat du jour n’existe que le midi, la formule du soir n’ouvre qu’à partir d’une certaine heure, et une rupture de matière première retire un plat en plein service avant qu’il ne réapparaisse le lendemain. Modéliser cela comme une quantité en stock produit des états faux et des commandes que la cuisine ne peut pas honorer.

Les options aggravent le malentendu. Cuisson, accompagnement, sauce, suppléments : ce sont des groupes de choix à contraintes — un choix obligatoire ici, trois au maximum là — dont chacun peut modifier le prix affiché. Traités comme des déclinaisons au sens du CMS, ils provoquent une explosion combinatoire de références dès la deuxième catégorie de la carte. Il faut un modèle d’options rattaché au plat, avec ses propres règles de minimum et de maximum, et non un produit distinct par combinaison.

Ce qui casse quand on part d’un module de vente générique

  • La disponibilité est enregistrée comme une quantité, alors qu’elle dépend du service et du jour de la semaine.
  • Le tunnel accepte un créneau déjà saturé et ne le refuse qu’après l’encaissement, quand la cuisine découvre la commande.
  • Le temps de préparation est fixe, alors qu’il varie selon le contenu du panier.
  • La zone de livraison est saisie comme une liste de communes, alors qu’elle se dessine géographiquement autour du point de vente.
  • Les frais de livraison partent en totalité sur un taux de TVA unique, ce qui fausse l’addition dès qu’une bouteille entre dans le panier.
  • Les allergènes vivent dans une note en bas de carte au lieu d’être une donnée rattachée à chaque plat.
  • La commande arrive par e-mail : personne ne la voit passer quand le service bat son plein.

Trois taux dans la même addition, et une donnée allergène par plat

Une addition mélange couramment de la vente à consommer immédiatement, des produits destinés à une consommation différée et des boissons alcoolisées, qui ne relèvent pas du même taux. Aucun des trois CMS que je pratique ne ventile spontanément les frais de livraison entre ces taux : par défaut, la ligne de port porte un taux unique et le document remis au client devient inexact. Il faut donc une ventilation proportionnelle au contenu réel du panier, appliquée au calcul du total, et un modèle de document qui affiche le détail taux par taux.

Les allergènes relèvent d’une logique voisine. L’information est obligatoire, elle se porte plat par plat, et elle change à chaque évolution de recette ou de changement de fournisseur. Écrite au fil de la description, elle est introuvable et impossible à corriger en masse. Structurée comme un attribut du plat, avec une liste de valeurs fermée, elle se filtre, s’affiche au moment du choix et se met à jour en un seul endroit.

Comment j’interviens sur un projet de commande en ligne

  1. Reprendre la carte réelle

    Je pars du support existant, papier ou logiciel de caisse : plats, groupes d’options, règles de disponibilité par service. C’est ce document qui détermine le modèle de données, pas l’inverse.

  2. Poser le moteur de créneaux

    Capacité maximale par tranche horaire, jours de fermeture, temps de préparation calculé à partir du panier, zone de livraison tracée sur une carte plutôt que listée. Le créneau se réserve avant le paiement et se libère si le paiement échoue.

  3. Fiabiliser la sortie en cuisine

    Impression automatique ou écran de production, accusé de prise en compte, file d’attente qui rejoue les tickets après une coupure d’imprimante. Une commande payée qui n’atteint pas la cuisine est perdue deux fois.

  4. Désigner la source de vérité de la carte

    Le même plat vit sur le site, sur la caisse et sur les plateformes de livraison, chacune avec son référentiel d’articles et ses identifiants. Je choisis un référentiel maître et je construis les synchronisations autour, plutôt que de laisser trois saisies manuelles diverger.

Sujets voisins

Questions fréquentes

Peut-on gérer les options de plats avec les déclinaisons du CMS ?
Techniquement oui, jusqu’à ce que le nombre de combinaisons devienne ingérable : deux groupes de trois choix suffisent à multiplier les références et à ralentir l’administration. Je préfère un modèle d’options rattaché au plat, avec règle de minimum, règle de maximum et impact tarifaire par choix.
Comment empêcher la vente d’un créneau déjà complet ?
En réservant la capacité au moment où le client sélectionne son créneau, et en libérant cette réservation si le paiement n’aboutit pas. Le contrôle doit intervenir avant l’encaissement : refuser après coup oblige à rembourser et à rappeler le client en plein service.
Faut-il synchroniser le site avec les plateformes de livraison ?
Dès qu’une même carte vit à plusieurs endroits, oui. Chaque plateforme garde son propre référentiel d’articles et ses identifiants ; il faut une table de correspondance et une synchronisation régulière, sinon les prix et les indisponibilités divergent en quelques jours.
Comment sont gérés les allergènes sur la fiche d’un plat ?
Comme une donnée produit à valeurs fermées, rattachée au plat et reprise sur la fiche, dans le panier et sur le ticket de préparation. Une mention générale en bas de carte ne remplit pas l’obligation d’information et se périme dès le premier changement de recette.
Et si l’imprimante de cuisine tombe en panne pendant le service ?
Il faut une file d’attente persistante et un écran de production de secours : les tickets non imprimés restent en attente et se rejouent dès le retour de l’imprimante. Sans cela, la panne fait disparaître des commandes déjà payées sans que personne ne s’en aperçoive.
La livraison peut-elle être limitée à un périmètre autour du restaurant ?
Oui, et c’est préférable à une liste de communes, qui laisse toujours passer des adresses trop éloignées. Un périmètre dessiné, associé à un montant minimum de commande et à des frais variables selon la distance, colle mieux à la réalité d’une tournée.

Décrivez votre besoin en 1 minute

Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.

De quel type de développement s’agit-il ?
Partez-vous de zéro ou faut-il faire évoluer un existant ?

Reprendre un code existant non maîtrisé demande souvent un audit avant même de commencer à développer.

Une stack technique est-elle imposée ? (facultatif)
Combien de personnes utiliseront l’outil ? (facultatif)
Quelle est votre échéance ? (facultatif)
Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.