Propal, commande et facture : ajout filtre note publique

Bonjour à tous,

J’ai essayé de trouver une réponse mais je n’ai rien trouvé de clair (ou bien j’ai mal cherché et veuillez m’en excuser).
Je souhaiterai pouvoir filtrer par « note publique » les propals, bons de commande et factures car cela revient à pouvoir chercher par titre des documents.
Je comprends que je vais devoir toucher aux fichiers .php et que ce n’est pas conseillé.
S’il y a un moyen plus simple qui m’échappe, je suis preneur sinon, est ce que quelqu’un peut me guider sur comment effectuer cette modification sur une des pages « list » ?
Je suis un développeur amateur.

Merci d’avance et en espérant que cela puisse aider d’autres utilisateurs/admins.

Bonjour,
Dans le menu déroulant des colonnes (en fin de ligne des en-tête des colonnes et en dessous de la loupe) il est possible d’ajouter les notes aux colonnes.

Bonsoir @manunord,

Merci pour la réponse. Je suis tout à fait d’accord, on peut afficher les notes dans la colonne mais aucun filtre ne s’affiche :


donc on ne pas faire de recherche dans le champ.
Comment puis-je l’afficher ?

Bonjour,
Je ne suis pas sûr de comprendre ce que vous sous entendez par titre des documents ? Pour le coup il y a un champ ref client ou ref commande client qui est disponible. Il sert à ça non à préciser de quoi parle le devis ou la commande ?

Bonjour @akene ,

Ma compréhension des modèles PDF dolibarr (exemple Azur) est que la « note publique » est le titre/objet du devis/bon de commande/facture commercial.

Voir image ci-dessous - zone jaune :

Je souhaiterai donc avoir la possibilité de faire une recherche /filtre par « note publique ».

Pour moi, la « ref commande client » = numéro de bon de commande du client.
D’ailleurs, on voit le placement des champs « références » dans les modèles PDF qui, vu leurs positions, indiquent un élément court. Non un titre/objet.

J’espère avoir éclairci mon besoin et répondu à tes questions.

Bonne journée

Bonjour,

De mon côté j’utilise le champ ref client, que je complète avec le numero de bon de commande.
Cela a l’avantage dans les listes et dans la recherche dolibarr de voir facilement de quoi parle ce document.

A mon avis vous faites fausse route avec les notes publiques qui ont plutôt vocation à accueillir une précision générale ou une information au client.

Enfin si la taille du champ référence ne vous convient pas, il sera plus facile d’adapter votre modèle de document que d’ajouter un filtre sur les notes.

Bonne journée,

@akene ,
Merci pour la suggestion, je vais regarder de plus près l’impact.

Au cas où, vous ne savez pas comment je peux ajouter un filtre « input » pour les notes publiques comme pour le champ auteur par exemple dans les pages liste ?

Bonjour,

C’est vraiment pas facile à faire.

Et bien pour ce faire, il vous faut créer un module, et de là, appeler plusieurs hooks
notamment :
printFieldListSelect => pour ajouter des colonnes en SQL
printFieldListWhere => pour ajouter des filtres SQL
printFieldPreListTitle => pour ajouter des filtres à afficher
printFieldListOption => pour afficher les filtre sur les colonnes dans les listes
printFieldListTitle= > pour ajouter des titres de colonnes à afficher
printFieldListValue => pour afficher les valeur des colonnes ajouté via les hook précédant

Y à plus qu’à comme dirait l’autre…

Bonjour @ksar et @akene ,

Toutes mes excuses pour la réponse tardive. Merci pour vos réponses. Je vais étudier la faisabilité.

Très bonne fin de journée.

Bonjour,

Désolé de déterrer ce sujet mais je viens de découvrir la fonction printFieldListWhere.

J’ai créé déclaré mon hook dans le descripteur de mon module, j’ai créé mon hook dans le fichier action*** dans le dossier class, créé la fonction, j’arrive à faire afficher du texte donc mon hook est opérationnel mais je n’arrive pas à trouver la syntaxe pour compléter la requêtes SQL.

J’ai essayé de trouver un module qui utilisait cette fonction pour voir la syntaxe mais pas trouvé. Si qqn peu montrer un exemple de code pour ajouter une condition dans le where, je suis preneur.

Merci

Salut,
Je pense que le plus facile c’est de faire un

echo '<pre>';
 print_r($sql);
echo '</pre>';

dans le fichier natif où ton module intervient.
Tu verras alors la requête sql et tu pourras comprendre quelle syntaxe est attendue.
Bon courage

Bonjour,

Merci. Désolé si je n’ai pas été clair mais en fait ce n’est pas la syntaxe de la requête qui me pose question mais la syntaxe pour faire que le hook modifie la requête.

Par exemple le code suivant est supposé afficher un texte
$this->resprint = 'A text to show';

et du coup pour modifier ma requête est-ce:
$sql .= " AND ef.fk_device = 574";
Mais pas certain que la variable $sql soit modifiable depuis le hook mais alors je ne sais pas quel doit être la variable utilisée pour que la page puisse l’interpréter et compléter la variable $sql

J’ai trouvé une solution de contournement depuis mais j’essaie de faire du code de plus en plus propre, à chaque fois que j’épluche le code et la doc je suis épaté par toutes les possibilités mais je ne maitrise pas toujours…

Encore merci

Bonjour @cdeboudt

Pouvez-vous essayer :

$this->resprint = natural_search(« e.fk_device », 574,2)

Pas sur sur le 574 comme cela, vous l’avez peut-être dans une variable. Regardez la fonction natural_search dans functions.lib.php pour mieux comprendre son fonctionnement et tenez-vous au courant :wink:

@+

Oui merci. Evidemment ça sera via une variable. Mais quand ça marche pas j’écris en dur juste pour le test :wink:

Je regarde ça dans les prochains jours.

oui je n’avais pas bien compris.
et bien du coup, il faut modifier la requete dans le $this->resprints

Par exemple :

function printFieldListLeft($parameters, &$object, &$action, $hookmanager)
	{
        $error = 0;

        if (in_array('orderlist', explode(':', $parameters['context'])))
        {
          $this->resprints = " LEFT JOIN ".MAIN_DB_PREFIX."gestionproduction as gp on gp.fk_commande = c.rowid";
         }
1 « J'aime »

Merci pour ce retour. Je teste dès que j’ai un moment

Merci à tous pour votre aide. Pour l’instant ça ne marche pas sur mon module qui ajoute un hook sur le module ticket mais ça n’est pas un pb de syntaxe.

Je fais refaire des tests mais avec un module plus central (devis, facture ou tiers) pour essayer de maitriser mieux les hooks mais je garde vos précieux messages et j’espère qu’ils pourront servir aussi à d’autres développeurs en herbe.