Utiliser les variables de subsitution pour créer des exports dynamiques

Salut !
Comme indiqué dans le titre j’ai essayé sans succès d’utiliser des variables de substitution (notamment celles pour spécifier une date : année, mois précédent, etc.) lors de la création d’un export pour pouvoir par exemple obtenir d’un seul clic l’ensemble des factures du mois précédent, ou l’ensemble des commandes de la semaine dernière… Ce qui me renvoie une erreur à chaque fois :


You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '_ '_YEAR__'' at line 1 - sql=SELECT DISTINCT s.nom as s_nom, f.ref_client as f_ref_client, f.datef as f_datef, f.total_ht as f_total_ht, f.total_ttc as f_total_ttc, f.total_tva as f_total_tva, p.rowid as p_rowid, p.ref as p_ref FROM llx_societe as s LEFT JOIN llx_c_country as c on s.fk_pays = c.rowid LEFT JOIN llx_c_departements as cd on s.fk_departement = cd.rowid, llx_facture as f LEFT JOIN llx_projet as pj ON f.fk_projet = pj.rowid LEFT JOIN llx_user as uc ON f.fk_user_author = uc.rowid LEFT JOIN llx_user as uv ON f.fk_user_valid = uv.rowid LEFT JOIN llx_facture_extrafields as extra ON f.rowid = extra.fk_object LEFT JOIN llx_paiement_facture as pf ON pf.fk_facture = f.rowid LEFT JOIN llx_paiement as p ON pf.fk_paiement = p.rowid LEFT JOIN llx_c_paiement as pt ON pt.id = p.fk_paiement LEFT JOIN llx_bank as b ON b.rowid = p.fk_bank LEFT JOIN llx_bank_account as ba ON ba.rowid = b.fk_account WHERE f.fk_soc = s.rowid AND f.entity IN (1) AND date_format(f.datec,'%Y%m%d') _ '_YEAR__'

De ce que je comprends, le module export envoie des requêtes SQL et les variables de substitution ne fonctionnent que dans les champs de formulaire dolibarr donc c’est normal.

Y a t-il une façon de faire ou c’est impossible ?

Bonjour,
vous pouvez essayer à tout hasard en remplaçant votre variable par une fonction mysql, mais je doute que cela fonctionne.
Pour avoir l’année courante avec mysql

YEAR(CURDATE())

Bonjour, j’ai essayé de remplacer mais le champ ne prend que le format YYYY…

Je me refuse à utiliser des plugins payants donc la solution la plus fiable et simple que j’ai trouvée pour l’instant c’est d’utiliser adminer et des signets pour garder en mêmoire des requêtes sql personnalisées.

Si d’aventure quelqu’un a une idée je suis toujours preneur !

Bonjour

C’est votre droit.

Je n’en doute pas.

1 « J'aime »

Bonjour,

et pourquoi donc ?

vous pensez que les développeurs qui font payer leur travail, proposent des modules non fiables ?

1 « J'aime »
Résumé

La solution la plus fiable et simple dans mon cas de figure, pour obtenir le résultat souhaité dans le cadre de mon utilisation sans à aucun moment parler d’un développeur en particulier, de la communauté des développeurs ou de leur travail. C’est plus clair ?


Allez je me doutais de recevoir de telles réactions.

Pour moi le logiciel libre est : libre, transparent, autogéré, gratuit, participatif, égalitaire. Faire payer pour du logiciel ne me pose pas de problème, dolibarr est sous une licence libre qui n’interdit pas le contenu payant, soit. Pour ma part mélanger logiciel open source et contenu payant est un non sens total car cela va à l’encontre de tous les qualificatifs énumérés ci dessus.

Je choisis de ne pas utiliser de plugins payants parce que politiquement ça ne me correspond pas, big fucking deal. Des développeurs compétents font payer leur travail, tant mieux pour eux, c’est bien normal. Mais un forum de support, d’échange et de discussion n’est pas un marketplace, quand quelqu’un demande publiquement (et poliment) une solution gratuite pour un logiciel libre, afin que chacun puisse monter en compétence et surmonter des problèmes, si la seule réponse est « apprends le php » ou « achète un plugin » ça n’est pas un forum de support, d’échange et de discussion.

Pour revenir à mon problème de requête SQL, la fonction proposée par hop YEAR(CURDATE()) fonctionne dans les requêtes via adminer (mais pas dans l’export dolibarr). Elle y est même manipulable mathématiquement : (YEAR(CURDATE()) - 1) pour filtrer des résultats sur seulement l’année précédente avec par exemple WHERE YEAR(f.datef) = (YEAR(CURDATE()) - 1) permettant de ne montrer que les résultats dont la date de facturation est celle de l’année courante -1. Si jamais ça peut aider quelqu’un :slight_smile:

Petite révision sur ce qu’est le logiciel libre :

1 « J'aime »

C’est beau l’utopie autour du libre.

Sauf qu’à un moment il faut bien que des gens écrivent les lignes de code librement utilisables par tout un chacun, pour que les autres puissent s’en servir.

Et parmi les plus gros contributeurs on trouve (oh ben alors quelle surprise !) les développeurs de modules qu’on trouve sur la marketplace.

2 « J'aime »

Merci, ça n’est pas antinomique avec ce que je projette à titre personnel sur le logiciel libre et je le répète :

Cependant cette injonction systématique au payant plutôt qu’à la diffusion de la compétence technique et cette victimisation des dev pro qui se sentent attaqués chaque fois qu’on cherche une solution dans laquelle ils ne sont pas incontournables me fatigue.

Il n’y a pas de modèle économique parfait, « l’utopie du libre » est irréconciliable avec le loyer à la fin du mois, on a tous des besoins spécifiques qu’un seul logiciel ne peut pas couvrir nativement, pas de problème. Mais être hostile dès que quelqu’un veut apprendre par lui même à trouver ses petites solutions bénignes plutôt qu’acheter une usine à gaz freine au final l’entraide et la transmission. C’est dommage, parce qu’avec de l’entraide et de la transmission j’imagine qu’on doit pouvoir fabriquer des nouveaux contributeurs !

Libre à vous alors de télécharger librement et gratuitement les sources d’un logiciel libre, de les modifier librement et gratuitement, de le redistribuer librement et gratuitement.

Certains ne font que développer sur des logiciels libres pour les améliorer et no font que ça. donc cela devient leur gagne pain. Par contre ils sont conscient que leur travail peut être récupérer pour être modifier et redistribuer.

Je pense sincèrement que vous vous méprenez. Il n’y a eu aucune « injonction » sur ce fil pour vous faire acheter un quelquonce service payant.

Le premier message qui parle de « payer » c’est le votre :roll_eyes:

En matière d’entraide vous avez visiblement été comblé sur ce fil Tutoriel d'utilisation du champs calculé et personne ne vous a rien demandé en retour. J’imagine donc qu’on va bientôt vous voir apparaitre sur la liste des contributeurs github.

C’est un peu ce que j’essaie d’apprendre à faire en intervenant sur le forum…

Dans ce fil d’accord, mais partout ailleurs sur le forum c’est courant et c’est d’ailleurs un peu le sujet de mon précédent message.

Encore heureux qu’on ne demande rien en retour sur un forum de support et d’entraide. Voilà bien une remarque qui traduit cette drôle d’ambiance. Voilà bien une drôle d’ambiance qui décourage les éventuels contributeurs. Et vu qu’aucune solution n’est apparue dans ledit sujet je ne suis pas comblé. J’apprends encore. Cependant, je tiens quand même à vous remercier pour la piste proposée au début du sujet, ça m’a bien aidé.