Nouveau module d'export avec filtres mémorisables

Bonjour A tous,
Je suis heureux de proposer à la communauté dolibarr un nouveau module. Il s’agit d’une évolution du module d’export natif incluant une fonction de filtrage simple.

Par rapport au module d’exportation natif, une étape supplémentaire permet de sélectionner des champs de filtrage puis de les saisir.

Le filtrage s’effectue sur une seule zone avec une codification simple, permettant de réaliser un peu tous ce que l’on souhaite

Un récapitulatif du filtrage est présenté en haut du module.

Il est enfin possible d’accéder directement à partir de la page d’accueil de l’export au modèle pré-enregistré d’exportation

Ce module est dès à présent disponible sur le dolistore pour 15€, http://www.dolistore.com/lang-fr/outils-systemes/184-Export-V2.html

Il fonctionne uniquement pour la version 3.2.x (si certaines on besoin d’une version 3.1.x, merci de me le faire savoir).
J’espère pouvoir le porter nativement dans la prochaine version de dolibarr.

Voici un lien vers mon site ou je présente un peu mieux le module…
http://www.benke.fr/index.php?option=com_content&view=article&id=36:evolution-module-exportation-de-dolibarr&catid=18:dolibarr&Itemid=4

Parfois il faut pas grand chose pour faire d’un petit outil devienne une fonction incontournable…

Je viens de rajouter à mon module d’export V2 la possibilité d’accéder sous forme de liste aux exports pré-enregistrés…
cela apparaît de cette manière sur la page d’accueil de mon module d’export :

ExportDetail.png
et le résultat est le suivant (désolé pour le filtrage des données affichés :

PreviewExport.png

Ai-je besoin de préciser qu’il est naturellement possible de faire un raccourci sur la page ainsi défini?

Pièces jointes :

Y aurait il la possibilité de faire des exports sur les expéditions. L’idée est de pouvoir faire des selections sur le mode d’expé (colissimo, tnt…)

NB : Je suis en train de travailler sur une « révision » de ce module car une expédition= un numéro de suivi unique. J’ai intégré différent tracking transporteur il me reste à intégrer le multi-colis (plusieurs n° de suivi pour 1 expé).

Hello philippe
je suis justement en train de terminer des évolutions sur le module d’export… il y en a que 2 qui bossent en fait :laugh:
Pour ajouter un nouvel export sur les expéditions ou d’autre éléments de dolibarr ce n’est pas compliqué, je peu te guider si t’es dispo cet après-midi (disons vers 16h) on peut s’appeler.

Mise à jour évolutive du module export (version 1.0.2).
Au programme :
Changement de la cinématique de création d’un export sur l’écran de filtrage
Tous les filtres sont sélectionnées proposé par défaut, ce qui enlève l’étape de sélection des champs à filtrer qui ne servait à rien.
Ce fonctionnement permet de saisir directement les valeurs des filtres que l’on souhaite utiliser.

Amélioration de la fonction de filtrage sur les champs de type date selon la date du jour
la saisie de NOW permet de récupérer la date du jour dans les filtres préenregistrés
la saisie de SNOW[xxxx] permet de soustraire un intervalle à la date du jour
la saisie de ANOW[xxxx] permet d’ajouter un intervalle à la date du jour
la syntaxe utilisée l’ajout et la suppression est celle de la fonction DateInterval de php (http://php.net/manual/fr/dateinterval.construct.php).
Cette fonctionnalité permettra de définir des listes d’exportations avec des dates glissantes, exemple :
pour filtrer un champ sur la date du jour il faudra saisir : NOW
pour filtrer un champ sur les deux derniers mois il faudra saisir : >SNOW[P2M]
pour filtrer un champ sur une plage comprise entre la semaine prochaine et la suivante : ANOW[P1W]+ANOW[P2W]

Amélioration de l’écran d’affichage en mode liste des exportations préenregistrés
Alignement des colonnes sur le tableau en fonction du type de donnée
Possibilité de cliquer sur les références id pour accéder aux éléments.
Tous les champs exportable sont à présent filtrables à partir de cette liste (pas seulement ceux préenregistré).

bonjour,

je viens de charger le module d’export, je n’ai pas réussi a faire un tri sur la valeur ‹ A contacter › Apparemment le lien entre la valeur 1 dans la table pour s.fk.stcomm’ et ST_TODO ne marcherai pas ?
Le tri sort bien avec la requete dans phpmyadmin, mais en mettant s.fk_stcomm=1

ci dessous la requete generée par le module, qui ne me donne pas satisfaction

SELECT DISTINCT s.nom as s_nom, s.fk_stcomm as s_fk_stcomm FROM llx_societe as s LEFT JOIN llx_societe_extrafields as extra ON s.rowid = extra.fk_object LEFT JOIN llx_c_typent as t ON s.fk_typent = t.id LEFT JOIN llx_c_pays as p ON s.fk_pays = p.rowid LEFT JOIN llx_c_effectif as ce ON s.fk_effectif = ce.id LEFT JOIN llx_c_forme_juridique as cfj ON s.fk_forme_juridique = cfj.code LEFT JOIN llx_c_departements as d ON s.fk_departement = d.rowid WHERE s.entity IN (1) and s.fk_stcomm=‹ ST_TODO ›

Ou corriger ? (si necessaire )

Cordialement

Phil

C’est une erreur dans la définition du champ de l’export du module société…
je pensais que la donnée conservé dans la table était le code, en fait c’est l’id.
Il faut modifier le fichier /core/modules/modSociete.class.php ligne 210
remplacer
‹ s.fk_stcomm ›=>‹ List:c_stcomm:libelle:code ›
par
‹ s.fk_stcomm ›=>‹ List:c_stcomm:libelle:id ›

1 « J'aime »

comme ce n’est pas la première fois que l’on me le demande, voici un petit tutorial pour ajouter un champ dans l’export.

Tout d’abord il faut repérer dans la table mysql la table et le champ que vous souhaitez ajouter dans la liste
Ensuite il faut déterminer le fichier de paramétrage du module associé à l’exportation que l’on souhaite modifier. Ses fichiers se trouvent dans le dossier /core/module
par exemple, l’export du module banque est : /core/module/modBanque.class.php

Je vous conseille fortement avant de modifier ce fichier d’en faire une copie quelquepart.

pour trouver l’endroit dans le fichier correspondant à l’exportation, le plus simple est de rechercher dans le fichier la chaine « $this->export »

Il y a 3 tableaux de champs à modifier pour ajouter un champs :

  • Le tableau export_fields_array ajouter le tuple pour définir le champs avec la syntaxe suivante : ‹ nomAliasTable.nomChamp ›=>‹ LibelledeTraduction ›,
  • Le tableau export_TypeFields_array ajouter un tuple pour définir le type du champ avec la syntaxe suivante : ‹ nomAliasTable.nomChamp ›=>‹ TypeDeChamp ›,
  • Le tableau export_entities_array ajouter un tuple pour définir l’entité associé au champ avec la syntaxe suivante : ‹ nomAliasTable.nomChamp ›=>‹ Entite ›,

Les type de champs disponible sont : Text, Date, Number, Boolean et la Liste.
Le type List a besoin d’informations supplémentaire pour fonctionner : List:c_stcomm:libelle:code

  1. Le nom de la table (ici c_stcomm)
  2. Le libelle affiché dans la liste de sélection
  3. La clé conservée dans le champ

Le positionnement dans le tableau conditionne l’emplacement sur l’écran d’export
Il est important de positionner au même endroit les tubles dans les tableau

1 « J'aime »

Bonjour Un petit message pour annoncer que la fonctionnalité des filtres mémorisées a été ajouté à la version 3.3.0 de dolibarr.
La fonctionnalité d’accéder sous forme de liste n’est par contre pas présente dans cette version de dolibarr. je vais très rapidement réaliser un package dédié à spécifiquement à cette fonctionnalité.
Le prix de ce module dédié à la 3.2 est dès à présent baissé, je transmettrai naturellement la mise à jour pour la 3.3 aux personnes ayant acheté la version actuelle dès quelle sera disponible .

1 « J'aime »

Salut Defrance !

Je n’avais pas eu l’occasion de tester le module, mais en allant dans outils>exports, je vois qu’on a quelque chose de fort utile, ci ce n’est indispensable ou qui le deviendra… Bravo !

Question :

Etape 1 je selection à exporte rles commandes clients
Etape 2 je selectionne quelques champs dont :
Raison sociale, refé client, Facturé, ETAT, Réf produit, Libellé produit
Etape 3 : mise en place du filtre… impossible d’éditer un filtre sur le champ ETAT…
Etape 4 : Recherches, pleurs, trépignements, puis résignation à poster le problème ici…

Merci de ta réponse et encore chapeau !

EDIT : pas les droits pour exporter les expeditions alors que je suis connecté en Admin ? bizarre…
RE EDIT : Désolé je n’avais effectivement pas les droits, c’est réglé :wink:

Ce que tu appelles le champ ETAT c’est le STATUT
Ce champs dans dolibarr est batard dans le sens ou il correspond à une liste en dur spécifique à chaque type d’éléments et pas une table propre dans un dictionnaire par exemple
J’avais commencé à réfléchir comment traiter la chose mais j’ai finalement abandonné… il faudrait que je m’y replonge maintenant
L’idée serai d’ajouter un tableau dans le fichier de description du module listant les états possible et le libellé associé)

Si tu as besoin d’utiliser ce filtrage, il faut procéder ainsi :

Ouvrir en modification le fichier de description du module le tableau export_TypeFields_array
Repérer le tuple ‹ c.fk_statut ›=>‹ Status › et remplacer ‹ Status › par ‹ Number ›

De cette manière il te sera présenté un champ numérique saisissable, à toi de trouver la bonne valeur à trier (0=brouillon, les autres valeurs sont variables).

1 « J'aime »

Il y a un soucis de filtrage sur la version 3.3.0 au niveau de l’export bancaire :
Le tri sur la requete par défaut de l’export bancaire désactive les fonctions de filtrage, il faut aller dans le fichier /core/modules/modBanque.class.php
et mettre en commentaire la ligne suivante :
$this->export_sql_end[$r] .=’ ORDER BY b.datev, b.num_releve’;

Un « push » de mise en commentaire de cette ligne pour les prochaines versions a été réalisé

Je suis en train de préparer la version 3.3 de ce module
au programme les listes d’exports au format datatables

J’ai réalisé une chtit démo sur mon site perso, vous pouvez y accéder directement par là : dlbdemo.benke.fr/htdocs/exports/liste.ph...tatoexport=facture_1
login : admindemo / admindemo

cela fonctionne pour le moment en 3.2 et en 3.3, je vais faire 2 version, la version 3.2 sera disponible sur demande

Sinon, il y a un autre bug dans le module d’export 3.3, la valeur des champs filtrés n’est pas enregistré, je ferai le correctif dans la soirée.

oui la valeur >200 ne change pas :wink:

Le tri des listes a l’air OK, faut juste capter que ce sont les flèches à droite du nom de colonne qui trient (un peu cosmétique cette remarque…)

Sinon, on pourra choisir les « tables » à afficher et/ou des champs supplémentaires, etc… ?
ou alors ce sera codé en dur comme dans liste.txt (sur l’autre sujet ?)

Merci et bon café !

Effectivement, tout ne peu pas marcher du premier coup, après une soirée de code…

En fait tu crées un export comme tu le souhaites avec les champs que tu souhaites (en terme d’affichage et de filtrage), puis tu l’enregistres et ensuite tu peux accéder à la liste soit par l’écran d’export (en cliquant sur l’icone devant le nom de l’export), soir en créant un marque-page…

Bon j’ai mes petits à poser à leur centre aéré et pas mal de taff aujourd’hui, on terminera cela ce soir
Je pense que je vais packager un module datatables qui remplacera les listes natives de dolbarr, je le mettrais au même prix de mon ancien module d’export V2 (15€) qui n’a plus d’utilité avec la 3.3

1 « J'aime »

si tu veux voir du datatables en action :wink:

http://demo.speedealing.com
login: demo
pwd: demo

Un petit UP pour annoncer que je prépare la version 3.3 de ce module.

La Principale nouveauté sera l’utilisation de datatable non seulement sur l’écran d’export mais aussi sur toute les listes de dolibarr (pour info, j’en ai référencé 31).
Là où je coince pour le moment c’est pour définir la liste des colonnes disponoble pour chaque liste et comment mémoriser le choix des colonnes, leur ordre et surtout si elle sont filtrable ou pas.
Idéalement il faudrait que je me base sur les tables (dans le sens base de données) pour lister les champs disponibles
La deuxième nouveauté sera un nouveau format d’export pris en charge : le XML
Enfin il sera possible d’accéder aux exports enregistrées par une requete xml-rpc

Oui, se baser sur les tables de la BDD pour afficher en liste les champs dispos « affichables » serait très pratique et permettrait d’afficher des champs/colonnes non disponibles sur un écran précis sur une même table et aussi, de supprimer des champs/colonnes inutiles sur certains écrans.
Il faudrait récupérer les noms des colonnes comme affichés sur l’onglet « structure » dans phpmyadmin, mais je ne m’y connais pas assez pour savoir où sont stockés les noms des colonnes…
Sur dolibarr le souci, c’est que ces requêtes pour l’affichange sont faites en « dur » pour chaque écran et pas dynamiquement… ça chamboule tout le process ! quel chantier !

A mon avis, il faudrait pour cela créer une sorte de module, permettant d’afficher des tableaux « sur-mesure » comme avec votre extension ;), plutôt que d’aller changer le code d’affichage et le rendre dynamique sur les 31 tableaux que vous avez référencés, non ?
à moins que ce soit très simple…

Et aussi, est-ce qu’il serait possible sur certains écrans, de faire apparaître des champs d’autres tables, comme c’est déjà le cas actuellement grâce au foreign key etc… question bête peut-être ?

Bon courage,

C’est un peu plus simple que cela, enfin simple ne veux pas dire facile :whistle:
Les fonctions de création de la requête SQL à partir de tableaux de champs et de filtres sont existantes dans le nouveau module d’export de dolibarr 3.3.
Il faut donc juste les utiliser dans les listes en conservant les spécificités de celle-ci et la possibilité de rendre paramétrable l’affichage par défaut…
Idéalement, il faudrait aussi pouvoir faire fonctionner ces listes dynamiques sans activer datatables, on garderait une compatibilité avec de vieux navigateurs…
Au final, je vais m’orienter vers une table proche du format utilisée pour mémoriser les exports, il suffira de faire un appel pour récupérer les infos et ‹ construire › le tableau. Dans le cas d’un nouveau module avec une liste, celle-ci pourra être ajouté dans la table ou les tableaux codé en dure dans la page…
Du peu que j’ai déjà analysé, chaque liste sera nécessairement différente, ne serait-ce que par la présence ou non des états différents, ou d’actions en bout de ligne…

Pour ce qui est des liens par les clés vers d’autres tables, c’est déjà possible dans la liste que je construit dynamiquement avec les requetes d’export

Je vais finalement créer un nouveau module qui s’appellera « listtables », le module d’export n’ayant plus raison d’être avec la 3.3

Ce nouveau module permettra d’accéder comme avec l’ancien au liste d’export pré-enregistrés sous la forme d’un tableau mais donnera accès au fonctionnalité datatables sur la majorité des listes de dolibarr
Un écran d’administration permettra d’accéder aux définition des listes et de sélectionner les colonnes que l’on souhaite afficher par défaut, ainsi que celle qui seront filtrable.
Il sera possible d’accéder aux champs supplémentaires directement sur les listes si on en a l’habilitation.

A vue de nez j’en ai pour une bonne semaine de codage. Le module sera mis en vente au même prix que l’ancien module d’export soit 15€

voici à quoi cela va ressembler

Listcommande.png