Ajouter Projet et titre projet dans facture

Bonjour,

En bref : sur une facture je souhaite avoir en dessous de la référence du type « FA1907-0001 »={object_ref}, le n° de projet et le titre du projet lié à cette facture.

En détail : j’ai essayé plusieurs solutions, mais là je sèche ! Version dolibarr 3.2.0.

Solution 1 : CustomFields… oui mais cela ne fonctionne pas pour moi « you need a MySQL database with INNODB » "dit le README-CF.txt. Mon Nas Qnap est en MyISAM et je ne toucherai pas au Nas qui est le centre névralgique de mes projets. Et les dernières mises à jour sont < 5.5. De plus, je ne pense pas pouvoir le mettre dans l’entête. Et il faudrait je ne sais quelle instruction (sql ?) … J’ai regardé tous les modules existants, mais je n’ai pas trouvé. S’il y a un module à acheter, je suis preneur…

Solution 2 : les fameuses odt templates. Je pensais devoir y passer mon WE, pour sortir une template decente, mais finalement c’est plus simple que prévu. Les copier-coller fonctionnent, à partir de la template de base, contrairement aux info du wiki. Cool. Mais … la chute arrive… il n’y a pas de champ standard pour le n° de projet et son titre. Il faudrait aller rechercher ces champs en suivant les instructions du paragraphe « Autres tags personnalisés » du wiki Créer un modèle de document ODT - Dolibarr ERP CRM Wiki et créer un module perso ? ? Là je sèche.

Solution 3 : j’ai passé 2 heures à fouiller le forum, je n’ai rien trouvé. Je suis par ailleurs étonné à être le seul à avoir ce problème. J’ai des clients récurrents à qui je facture des prestations récurrentes à de prix identique, mais pour des projets différents. Si je ne met pas une référence en bon français (projet Dupont…) il devient difficile de savoir quelle facture est affectée à quel projet, la facture ne faisant apparaître que des numéros. La solution pour le client est de retrouver ma proposition commerciale à partir du numéro « PR1907-0001 » sur la facture et aller voir l’intitulé sur la propale… qui elle a bien une référence client en français. Trop compliqué pour mes clients.

Voilà ! Là je rend les armes :unhappy:

Toute aide charitable serait grandement appréciée, en espérant ne pas avoir transmis mon mal de tête.
Merci et bonne fin de semaine
Olivier

Bonjour,

Je suis nouvel utilisateur de Dolibarr et j’ai exactement la même problématique.
Je souhaite également faire apparaître l’intitulé du projet dans ma facture.
J’ai créé un modèle odt qui fonctionne et qui reprend plutôt bien le modèle de facture que je faisais auparavant sur Excel et le hic est que, comme vous l’indiquez, il n’y a pas de champ prédéfini pour insérer le nom du projet lié à la facture.
C’est d’ailleurs étonnant que ce champ n’apparaisse pas puisque sur l’onglet de la fiche facture, cette information est présente.
Dans les champs prédéfinis, on retrouve aussi la note publique et la note privée, donc il doit bien être possible de récupérer cette info.
Par contre, je suis comme vous, je ne maîtrise pas le sql pour faire une requête dans un champ « custom-fields » (module que j’ai installé).
Ce module « custom-fields » peut servir en attendant mieux mais c’est dommagde de devoir resaisir une info déjà présente.
Dans le même ordre d’idée, j’aurais également besoin de faire apparaître des noms de contacts liés à la facture dans la facture et là, le pb est identique.
Quelqu’un saurait s’il est possible de récupérer facilement des champs?
Je précise que même en regardant la méthode « Autres tags personnalisés » du wiki, je ne vois pas comment récupérer ces champs, il faudrait pour cela connaître la base sql et savoir le nom de la variable. Bref, c’est pas simple pour moi.
Merci au gentil développeur ou utilisateur avancé qui voudra bien nous aider!!

En tout cas, Dolibarr est un outil vraiment SUPER!
Merci à la communauté.

Bonjour,

Cette évolution est prévue dans la liste des tâche de Doliforge : https://doliforge.org/tracker/?func=detail&aid=955&atid=247&group_id=144

Le but sera d’ajouter les informations du projet dans les PDF automatique et dans les variables disponibles pour les ODT. Il faudra attendre la 3.5 je pense.

En attendant, la solution est d’ajouter une note publique contenant votre référence et titre de projet.

Cordialement,

Bonjour à tous,

Je suis le développeur du module CustomFields, je vais donner quelques éclairages à ce sujet.

C’est une erreur, CustomFields est compatible avec MyISAM sans aucun problème. Dans le passé, CustomFields avait besoin d’InnoDB pour accepter les champs contraints et quelques autres vérifications d’intégrité, mais ce n’est plus le cas depuis un bon moment. Je vais corriger le README prochainement.

Au sujet de l’utilisation pour le titre projet, oui cela ne devrait pas poser de soucis, par contre il faudra CustomFields Pro qui supporte le module Projet (que la version Free ne supporte pas).

N’hésitez pas si vous avez d’autres questions à me les poser sur le [url=www.dolibarr.fr/forum/t/release-customfields-module-champs-personnalises/11621/1 de discussion dédié à CustomFields[/url].

Bonjour,

J’ai le même problème au sujet du modèle ODT dans lequel je voudrais récupérer les informations du projet lié à la facture. Je m’aperçois que je ne suis pas le seul à avoir cette problématique mais je constate malheureusement qu’il n’existe pas de solution simple.

C’est assez étonnant qu’il faille faire des manipulations de type programmation pour aller récupérer un champ présent dans les informations de la facture.

Je n’ai pas eu le courage de « mettre les mains dans le camboui », car j’ai peur de casser mon installation de dolibarr et je crains d’y passer de longues heures sans résultat.

D’autre part j’ai un autre soucis, j’explique:
Je créé des projets et je les lie à des clients (projets de construction dans le bâtiment).
Je voudrais pouvoir lier à la fois le client (le maître d’ouvrage) et l’architecte. Le but est par la suite de faire soit une recherche par Maître d’ouvrage et d’avoir le total facturé par maître d’ouvrage, soit une recherche par architecte et d’obtenir le total de toutes les affaires liées à un architecte me permettant de connaître le volume total d’honoraires par architecte.

Merci de vos réponses si vous arrivez à comprendre ce que j’essaie de faire.

Bonjour,
Ce que je fais pour mon BE est de créer un projet pour chaque affaire avec un archi. Ensuite, je fais mes propales au MO avec le projet créé en référence. Du coup, je vois depuis la fiche de l’archi tous les projets que j’ai eu avec lui et depuis le projet dans l’onglet « référent » je vois l’archi et le MO. Par contre, pour avoir le total du chiffre fait avec un archi, j’ouvre tous les projets en onglets supplémentaires et fais la somme à la main :unhappy:
Bonne fin de semaine
Olivier

Voici le code que je propose d’insérer juste avant la partie notes publiques de la facture (testé !):

// Show linked project
$sql = "SELECT p.title";
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON f.fk_projet = p.rowid";
$sql.= " WHERE f.rowid = ".$object->id;
$resql=$this->db->query($sql);
if ($resql)
{
$row = $this->db->fetch_object($resql);
$pdf->SetFont('','', $default_font_size - 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, "Projet : ".$row->title, 0, 1);
$tab_top = $tab_top+6;
}
2 « J'aime »

un énorme merci ! La modif fonctionne nickel, cela va faciliter ma vie pour ma factu.

j’ai aussi essayé de modifier ce code pour le faire fonctionner avec la propale « azur » mais là je ne sais pas faire. Quelqu’un sait :wink:
merci
olivier

Bonjour,
Je ne suis que simple utilisateur de Dolibarr et j’aimerais savoir où ce code doit être intégré? Est-ce qu’il s’agit de champs qui vont ressortir lorsqu’on utilise la génération de PDF ou est-ce qu’on peut l’intégrer dans un modèle ODT ?
Personnellement, je me suis créé un modèle ODT pour ma facturation et il me manque les infos liées au projet.
Je ne sais pas comment intégrer ce code dans mon ODT.
Pourriez-vous m’aider SVP ?
D’avance merci.

Bonjour,

Dans le fichier « /www/dolibarr/htdocs/core/modules/facture/doc/pdf_crabe.modules.php » (à adapter selon ton arborescence), il faut insérer le code ci-dessus vers la ligne 255 pour la version 3.6.1, juste avant « // Affiche notes ».

Bien sauvegarder avant modif le fichier original en « pdf_crabe.modules.php.original » par exemple.
@+

autoréponse.
Il suffisait d’adapter le code des « factures » avec un code adapté aux « propales » et ça marche.

Pour le modèle azur, après la ligne 334

// Show linked project
$sql = « SELECT p.title »;
$sql.= " FROM ".MAIN_DB_PREFIX.« propal as pr »;
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX.« projet as p ON pr.fk_projet = p.rowid »;
$sql.= " WHERE pr.rowid = ".$object->id;
$resql=$this->db->query($sql);
if ($resql)
{
$row = $this->db->fetch_object($resql);
$pdf->SetFont(’’,’’, $default_font_size - 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, "Projet : ".$row->title, 0, 1);
$tab_top = $tab_top+6;
}

Bonjour,

Pour ajouter la référrence du projet et le tire, sous la forme « PJ1601-1999 - Mon beau projet » en dessous des adresses, faire :

1)factures
Dans « ./www/dolibarr/htdocs/core/modules/facture/doc/pdf_crabe.modules.php » ajouter au dessus de « //incoterm »
// Show linked project ref and title
$sql = « SELECT p.title,p.ref »;
$sql.= " FROM ".MAIN_DB_PREFIX.« facture as f »;
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX.« projet as p ON f.fk_projet = p.rowid »;
$sql.= " WHERE f.rowid = ".$object->id;
$resql=$this->db->query($sql);
if ($resql)
{
$row = $this->db->fetch_object($resql);
$pdf->SetFont(’’,’’, $default_font_size - 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, "Projet : ".$row->ref, 0, 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc+30, $tab_top, " - " .$row->title, 0, 1);
$tab_top = $tab_top+6;
}
« //incoterm »

2)pour les propales
Dans « ./www/dolibarr/htdocs/core/modules/propale/doc/pdf_azur.modules.php » ajouter au dessus de « //incoterm »
// Show linked project ref and title
$sql = « SELECT p.title,p.ref »;
$sql.= " FROM ".MAIN_DB_PREFIX.« propal as pr »;
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX.« projet as p ON pr.fk_projet = p.rowid »;
$sql.= " WHERE pr.rowid = ".$object->id;
$resql=$this->db->query($sql);
if ($resql)
{
$row = $this->db->fetch_object($resql);
$pdf->SetFont(’’,’’, $default_font_size - 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, "Projet : " .$row->ref, 0, 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc+30, $tab_top, " - " .$row->title, 0, 1);
$tab_top = $tab_top+6;
}
ajouter au dessus de « //incoterm »

Fait sur dolibarr 3.9.3.
Bonne journée
Olivier

2 « J'aime »

pour les factures fournisseurs, dans « /var/www/dolibarr/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php » ajouter au dessus de « //incoterm »

// Show linked project ref and title
$sql = « SELECT p.title,p.ref »;
$sql.= " FROM ".MAIN_DB_PREFIX.« facture_fourn as fo »;
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX.« projet as p ON fo.fk_projet = p.rowid »;
$sql.= " WHERE fo.rowid = ".$object->id;
$resql=$this->db->query($sql);
if ($resql)
{
$row = $this->db->fetch_object($resql);
$pdf->SetFont(’’,’’, $default_font_size - 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, "Projet : ".$row->ref, 0, 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc+30, $tab_top, " - " .$row->title, 0, 1);
$tab_top = $tab_top+6;
}
ajouter au dessus de « //incoterm »

1 « J'aime »

A noter que j’en ai déduit le code pour les commandes client (pdf_einstein.module.php):

// Show linked project ref and title
$sql = "SELECT p.title,p.ref";
$sql.= " FROM ".MAIN_DB_PREFIX."commande as c";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON c.fk_projet = p.rowid";
$sql.= " WHERE c.rowid = ".$object->id;
$resql=$this->db->query($sql);
if ($resql)
{					
$row = $this->db->fetch_object($resql);
$pdf->SetFont('','', $default_font_size - 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, "Projet : ".$row->ref, 0, 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc+30, $tab_top, " - " .$row->title, 0, 1);
$tab_top = $tab_top+6;
}

Par contre il faut pour chaque masque plutôt placer le code après celui qui génère les commentaires, avant les lignes suivantes:

 
				$iniY = $tab_top + 7;
				$curY = $tab_top + 7;
				$nexY = $tab_top + 7;

Sinon les notes publiques s’inscrivent sur la ligne N° de projet / titre :wink:

Par contre quel est le code pour les commandes fournisseur? j’ai essayé co mais ça marche pas sur muscadet dans Dolibarr 7.03

1 « J'aime »

Bonjour,
Personne ne connais le code pour les commandes fournisseur? J’ai essayé co mais ça marche pas :unhappy:

Toujours a la recherche du code qui va bien pour les commandes fournisseurs, j’ai par contre trouvé celui pour les fiches d’expédition modèle rouget, que j’ai renommé en bon de livraison:

// Show linked project ref and title
$sql = "SELECT p.title,p.ref";
$sql.= " FROM ".MAIN_DB_PREFIX."expedition as sh";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON sh.fk_projet = p.rowid";
$sql.= " WHERE sh.rowid = ".$object->id;
$resql=$this->db->query($sql);
if ($resql)
{
$row = $this->db->fetch_object($resql);
$pdf->SetFont('','', $default_font_size - 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, "Affaire : ".$row->ref, 0, 1);
$pdf->writeHTMLCell(190, 3, $this->posxdesc+30, $tab_top, " - " .$row->title, 0, 1);
$tab_top = $tab_top+6;
}						

Si quelqu’un a la solution pour les commandes fournisseur modèle muscadet :dry:

Moi aussi je suis nouveau, mais je trouve que l’outil n’est pas mal du tout. Un peu d’aide ne sera pas de refus.

Bonjour,
A noter que, sans vouloir lui faire de pub, le module infraS pack plus permet facilement ces fonctionnalités.
Le module est très suivi par son créateur et du coup marche très bien avec toutes les versions de dolibarr pour un prix plus que raisonnable. J’ai abandonné la modification des modèles pour ce pack qui permet l’affichage du commercial dans les notes et la référence + désignation de projet sur tous les documents de dolibarr.

Bonjour,
Si la facture est liée à un projet, alors vous pouvez utiliser les tags {object_project_ref} et {object_project_title}, qui vous afficheront respectivement la référence et l’intitulé du projet.
Il y a même le tag {object_project_description} si une information que vous voulez faire apparaître se trouve dans la description du projet.