API / SQL : Récupérer la liste des factures pour chaque client

Bonjour,

Je suis en train de mettre en place un espace client pour chacun de mes clients, afin qu’ils puissent avoir accès à un nombres d’informations en utilisant plusieurs API.

Aujourd’hui, c’est au tour de Dolibarr et des factures. J’ai fais quelques recherches, mais je n’est trouvé aucune information.

J’aimerais qu’avec l’API ou une requête SQL, que chaque clients aient accès à ces factures directement depuis cet espace client.

Par exemple (Identifiant client A = CU2009-0123), quand le client va sur la partie facturation de son espace client, celui-ci lui affiche toutes les factures appartenant au client A, donc les factures au nom du client CU2009-0123. Avec les informations sur la prix TTC, le statut de la facture, la date, … et la possibilité de télécharger la facture.

Je m’occupe de la création des comptes de mes clients donc je peux manuellement attribuer le numéro client CUXXXX-XXX ou une référence dolibarr à chaque client, ce qui facilite le manœuvre.

Sur l’API, j’ai vu la partie « contact », « invoices » et « documents » mais je n’arrive pas à trouver de GET correspondant à cet usage avec ces filtres.

En vous remerciant pour vos aides !

Jordan C

Bonjour,
Je n’ai pas vérifié en vrai, mais il me semble que les sélections de facture ne peuvent se faire que sur les identifiants du ou des clients.
Donc dans un premier temps, il faut récupérer cet identifiant, par exemple avec le filtre t.code_client='CUXXXX-XXX' sur les thirdparties, puis interroger les factures avec le rowid que tu récupères ainsi.
J’ai l’impression qu’il y a un écart entre les indications de la page explorer et la syntaxe admise. Il est dit :

sqlfilters Other criteria to filter answers separated by a comma. Syntax example « (t.nom:like:‹ TheCompany% ›) and (t.date_creation:<:‹ 20160101 ›) »

Mais les : génèrent une erreur de syntaxe SQL, ils sont conservés dans la requête, s’il n’y a pas de parenthèses. Ça marche avec ou sans : s’il y a des parenthèses.

Bonsoir,

Merci pour ta réponse ! C’est la première fois que j’utilise l’API dolibarr, donc j’ai un peu de mal à comprendre tes explications :confused:

Tu peux me donner plus d’information sur l’utilisation de l’API dans cet usage ?

Merci beaucoup !

Voici un exemple de code qui récupère l’identifiant du client dans Dolibarr :


function cherche_client($client, $apikey) {
    // retrouve la correspondance de société
    $curl = curl_init();
    $httpheader = ['DOLAPIKEY: '.$apikey];
    $data = ['sqlfilters' =>'(t.nom like "'.$client .'%")'];
    $url = "http://localhost/dolibarr/htdocs/api/index.php/thirdparties?".http_build_query($data);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $httpheader);
    $result = curl_exec($curl);
    curl_close($curl);
    return json_decode($result, true);
}

Puis

$apikey = "xxxxxxxxxxxxxxxxx";
$client = "Mon client adoré";
                $result = cherche_client($client, $apikey);
                if (isset($result["error"]) && $result["error"]["code"] >= "404") {
                    echo $client." n'a pas été trouvé dans Dolibarr.\n";
                    break;
                }
                foreach ($result as $soc_res) {
                    echo "Trouvé ".$soc_res['id']." pour ".$client."\n";
                }

et tu adaptes sqlfilters à ton besoin. Dans ce code, l’identifiant est dans $soc_res['id'], mais tu as aussi les autres informations.

1 « J'aime »

Bonjour,

Je te remercie, je commence à comprendre le fonctionnement de cette API.

Avec le code ci-dessus, j’arrive à récupérer les informations :slight_smile:

Maintenant, comment ça ce passe pour récupérer toutes les factures par rapport à l’ID ou le code_client ?

Pour le moment, j’arrive à récupérer les informations sur une facture avec le GET /invoices/ref/{ref} mais comment récupérer toutes les ref de facture d’un client, si un client à plusieurs factures.

Et deuxième question, toujours avec le même call, quand on récupère le ‹ last_main_doc › pour générer un lien de téléchargement de la facture, celui-ci sort en 404 ou en accès refusé, est-ce que vous avez une idée de comment contourner ce problème, de façon sécurisé, sans donner l’accès aux factures à n’importe qui ?

Merci pour toutes les réponses, ça m’aide énormement !

Et bien, tu adoptes la même méthode, en construisant un sqlfilter mais pour les factures.

    $data = ['sqlfilters' =>'(t.fk_soc = "'.$id.'")'];
    $url = "http://localhost/dolibarr/htdocs/api/index.php/invoices?".http_build_query($data)
1 « J'aime »

Bonjour, je souhaiterais obtenir la syntaxe du « filtre » afin d’obtenir que les noms de tous mes clients.
Est-ce que c’est envisageable ?
merci de votre retour