Le WordPress d'aujourd'hui, décodé pour les développeurs

E-commerce

Facturer un forfait d’artisan avec WooCommerce et un devis en type de contenu

Passer d'un devis interne à une commande facturable sans ressaisie : une méthode simple pour un artisan seul, avec un type de contenu dédié et WooCommerce en toile de fond.

Par WordPress Développement • 8 avril 2020 • 4 min de lecture • Aucun commentaire
Facturer un forfait d'artisan avec WooCommerce et un devis en type de contenu

Un artisan qui travaille seul n’a pas le temps de saisir deux fois la même information : une fois dans son devis, une fois dans son outil de facturation. Pourtant, c’est exactement ce qui se produit quand un devis WordPress classique et une boutique WooCommerce vivent chacun de leur côté, sans lien entre eux. Voici comment relier les deux avec un type de contenu personnalisé et une poignée de fonctions de l’API WooCommerce.

L’objectif du jour : un artisan plombier qui envoie ses devis depuis une page dédiée du site, et qui veut qu’un devis accepté par le client se transforme automatiquement en commande facturable, sans ressaisir les lignes de prestations dans l’administration WooCommerce.

Étape 1 — Créer un type de contenu « devis »

Le premier bloc du dispositif est un type de contenu personnalisé enregistré avec register_post_type(), nommé devis. Chaque devis regroupe un client, une liste de prestations avec leur prix, et un statut propre (« brouillon », « envoyé », « accepté », « refusé »). Ce statut est distinct des statuts de commande WooCommerce : le devis vit sa vie avant même qu’une commande n’existe.

register_post_type( 'devis', array(
    'label'        => 'Devis',
    'public'       => false,
    'show_ui'      => true,
    'supports'     => array( 'title', 'custom-fields' ),
    'menu_icon'    => 'dashicons-media-spreadsheet',
) );

Étape 2 — Saisir les prestations une seule fois

Les lignes du devis (intervention, quantité, prix unitaire) se stockent dans un champ de métadonnées structuré, sous forme de tableau sérialisé associé au devis. C’est cette même structure de données qui servira ensuite à construire la commande WooCommerce, sans repasser par une saisie manuelle. L’artisan remplit son devis une fois ; le reste est automatique.

L'essentiel à retenir : Un type de contenu « devis » distinct du produit WooCommerce ; Conversion du devis validé en commande via wc_create_order() ; Aucune double saisie entre l'estimation et la facturation

Étape 3 — Générer la commande à l’acceptation du devis

Quand le client accepte le devis (via un bouton sur une page dédiée, ou une validation manuelle par l’artisan dans l’administration), une fonction déclenchée au changement de statut appelle wc_create_order() pour créer la commande, puis $order->add_product() pour chaque ligne du devis. La commande reprend l’identité du client si un compte existe, ou crée une commande « invité » avec les coordonnées saisies dans le devis.

function creer_commande_depuis_devis( $devis_id ) {
    $lignes = get_post_meta( $devis_id, 'lignes_prestations', true );
    $order  = wc_create_order();

    foreach ( $lignes as $ligne ) {
        $produit = wc_get_product( $ligne['produit_id'] );
        $order->add_product( $produit, $ligne['quantite'] );
    }

    $order->calculate_totals();
    $order->update_status( 'pending' );
    update_post_meta( $devis_id, 'commande_id', $order->get_id() );
}

Étape 4 — Envoyer le lien de paiement

Une fois la commande créée en statut pending, WooCommerce sait générer un lien de paiement vers la page de paiement associée à cette commande précise, via $order->get_checkout_payment_url(). L’artisan transmet ce lien par e-mail ou SMS à son client, qui règle directement le forfait sans repasser par un panier classique ni resaisir les prestations.

  • Un devis rédigé une seule fois, dans un espace dédié hors du tunnel de commande
  • Une commande générée automatiquement à partir des lignes du devis accepté
  • Un lien de paiement direct, sans panier à reconstituer côté client

Produits génériques plutôt que fiches détaillées

Pour que add_product() fonctionne, chaque prestation facturable doit correspondre à un produit WooCommerce existant, même générique : « main-d’œuvre », « déplacement », « fourniture ». L’artisan n’a donc pas besoin de créer une fiche produit par intervention réelle : quelques produits génériques suffisent, le prix précis de chaque ligne étant ajusté au niveau de l’article de commande plutôt qu’au niveau du produit.

Le produit WooCommerce sert de gabarit comptable ; le prix réel de la ligne se règle au niveau de la commande, pas de la fiche produit.

Ce que cette méthode ne couvre pas

Cette organisation ne remplace pas un outil de comptabilité déclarative : elle produit des commandes WooCommerce, avec leurs factures associées si une extension de facturation est active, mais la déclaration de TVA ou le lien avec un logiciel comptable externe reste un sujet distinct, à traiter par ailleurs.

En pratique dans vos projets

Ce montage tient en quelques heures de développement pour un artisan seul, sans extension premium supplémentaire. Le vrai gain n’est pas technique mais organisationnel : plus aucune information à retaper entre le moment où le devis part et celui où la facture doit être réglée, ce qui réduit d’autant le risque d’erreur de prix entre les deux documents.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi