# Transformer un devis artisan accepté en fiche client en un clic

> Ressaisir les coordonnées d'un client juste après acceptation d'un devis fait perdre du temps à chaque artisan. Un raccourci d'administration crée directement la fiche client à partir des données déjà saisies.

- Auteur : Clément Hadrot
- Publié le : 2026-01-01
- Mis à jour le : 2026-01-01
- Catégorie : Tips
- URL : https://wpmoderne.dev.wordpress-developpement.fr/tips/transformer-devis-accepte-fiche-client-artisan/

## L’essentiel

- Un seul bouton copie les champs du devis vers une nouvelle fiche client
- Aucune ressaisie manuelle des coordonnées déjà connues
- Un lien conservé entre le devis d'origine et la fiche créée

Pourquoi un plombier indépendant retaperait-il deux fois le nom, l'adresse et le téléphone du même client, une première fois dans le devis, une seconde fois dans sa fiche client ? C'est la question que m'a posée un artisan qui gérait ses devis et ses clients dans deux types de contenu séparés sur le même site, sans aucun lien automatique entre les deux une fois un devis accepté.

La réponse tenait en un bouton d'administration, ajouté directement sur la fiche du devis, qui crée une nouvelle fiche client en copiant les champs déjà renseignés, sans jamais toucher au contenu du devis lui-même. Voici comment ce raccourci a été construit, pensé pour rester simple à maintenir dans le temps.

## Ajouter un lien d'action sur la fiche du devis

Le bouton apparaît uniquement lorsque le devis porte le statut `accepte`, et uniquement si aucune fiche client n'a encore été créée à partir de lui, pour éviter les doublons en cas de clic répété.

```
add_action( 'add_meta_boxes', function () {
    add_meta_box( 'ch_creer_fiche_client', 'Créer la fiche client', function ( $post ) {
        $statut = get_post_meta( $post->ID, 'statut_devis', true );
        $client_deja_cree = get_post_meta( $post->ID, 'client_associe_id', true );

        if ( 'accepte' !== $statut ) {
            echo '<p>Disponible une fois le devis accepté.</p>';
            return;
        }

        if ( $client_deja_cree ) {
            printf( '<p>Fiche déjà créée : <a href="%s">voir la fiche client</a></p>', esc_url( get_edit_post_link( $client_deja_cree ) ) );
            return;
        }

        $lien = wp_nonce_url( admin_url( 'admin-post.php?action=ch_creer_client&devis;_id=' . $post->ID ), 'ch_creer_client_' . $post->ID );
        printf( '<a href="%s" class="button button-primary">Créer la fiche client</a>', esc_url( $lien ) );
    }, 'devis', 'side', 'high' );
} );
```

> L'essentiel à retenir : Un seul bouton copie les champs du devis vers une nouvelle fiche client ; Aucune ressaisie manuelle des coordonnées déjà connues ; Un lien conservé entre le devis d'origine et la fiche créée

## Copier les champs pertinents vers la nouvelle fiche

La logique de création reste volontairement explicite plutôt que générique : une correspondance claire entre les champs du devis et ceux attendus sur la fiche client, pour que toute personne relisant ce code des mois plus tard comprenne immédiatement ce qui est copié et pourquoi.

```
add_action( 'admin_post_ch_creer_client', function () {
    $devis_id = absint( $_GET['devis_id'] );

    if ( ! wp_verify_nonce( $_GET['_wpnonce'], 'ch_creer_client_' . $devis_id ) ) {
        wp_die( 'Requête invalide.' );
    }
    if ( ! current_user_can( 'edit_post', $devis_id ) ) {
        wp_die( 'Action non autorisée.' );
    }

    $client_id = wp_insert_post( array(
        'post_type'   => 'client',
        'post_title'  => get_post_meta( $devis_id, 'nom_client', true ),
        'post_status' => 'publish',
    ) );

    $correspondance = array(
        'nom_client'    => 'nom',
        'email_client'  => 'email',
        'telephone_client' => 'telephone',
        'adresse_client'   => 'adresse',
        'code_postal_client' => 'code_postal',
        'ville_client'  => 'ville',
    );

    foreach ( $correspondance as $champ_devis => $champ_client ) {
        update_post_meta( $client_id, $champ_client, get_post_meta( $devis_id, $champ_devis, true ) );
    }

    update_post_meta( $client_id, 'devis_origine_id', $devis_id );
    update_post_meta( $devis_id, 'client_associe_id', $client_id );

    wp_safe_redirect( get_edit_post_link( $client_id, '' ) );
    exit;
} );
```

## Garder la trace du devis d'origine sur la fiche client

Le champ `devis_origine_id`, enregistré sur la nouvelle fiche client, permet ensuite d'afficher un lien de retour vers le devis initial directement depuis la fiche client, utile lorsque l'artisan veut retrouver rapidement le contexte d'un chantier sans naviguer dans une longue liste de devis.

- Un lien affiché en haut de la fiche client, visible dès l'ouverture, plutôt que noyé dans une liste de métadonnées secondaires.
- Un filtre de la liste des devis par client associé, pratique dès qu'un même client revient pour un second chantier.
- Une vérification, avant création, que le nom et l'e-mail du client ne correspondent pas déjà à une fiche existante, pour proposer une association plutôt qu'une nouvelle fiche en doublon.

### Éviter les doublons de clients existants

Cette dernière vérification mérite un développement séparé : avant de créer une nouvelle fiche, une recherche rapide sur l'adresse électronique dans les fiches clients existantes permet de proposer une association à une fiche déjà présente plutôt qu'une création automatique systématique.

```
$client_existant = get_posts( array(
    'post_type'  => 'client',
    'meta_key'   => 'email',
    'meta_value' => get_post_meta( $devis_id, 'email_client', true ),
    'numberposts' => 1,
) );
```

> Un raccourci d'administration ne vaut que s'il évite une tâche réellement répétitive : recopier sept champs à la main sur chaque devis accepté en fait clairement partie.

## Ce que ce raccourci ne couvre pas

Cette fonctionnalité s'arrête volontairement à la création de la fiche client : la facturation qui suit un devis accepté reste un processus distinct, avec ses propres règles de numérotation et de mentions légales, qui mérite un traitement séparé plutôt qu'une intégration hâtive dans ce même mécanisme.

## Notre verdict

Une trentaine de lignes de code, un bouton contextuel et une correspondance de champs explicite : ce raccourci a supprimé une tâche répétitive qui, sur l'année, représentait plusieurs heures de ressaisie pour cet artisan seul aux commandes de son activité administrative.
