
Salut. Depuis 1.1.3, mes exports paramétrés ne marchent plus. "Une erreur est survenu pendant l'exécution de l'export paramétré ..." Seul l'export standard "Cotrisations" fonctionne. Mes exports sont un peu complexes, mais fonctionnaient jusque là. Je suis toujours en ".xml", car la conversion ne paraît pas triviale. D'ailleurs, un exemple commenté serait utile à la migration, au moins pour moi ;-) Voici un des moins compliqué : <export id="cumulCotis" name="CotisationsCumulées" description="Export du total des cotisations par mode de paiement pour l'ensemble des adhérent-es" filename="adherents_cumulcotis_2023.csv"> <!-- The Query to execute - mandatory --> <query>SELECT adherents_groups_members.id_group, nom_adh, prenom_adh, email_adh, date_enreg, SUM(montant_cotis) as montant_total,count(*) as nb_versements, type_paiement_cotis FROM `adherents_cotisations` INNER JOIN adherents_adherents ON (adherents_cotisations.id_adh=adherents_adherents.id_adh) LEFT OUTER JOIN adherents_groups_members ON (adherents_groups_members.id_adh=adherents_adherents.id_adh AND adherents_groups_members.id_group IN (select n.id_group FROM `adherents_groups`as `n` where (n.group_name LIKE "4 Section%" )) ) WHERE `date_enreg` BETWEEN '2023-01-01' AND '2023-12-31' Group by adherents_cotisations.id_adh,adherents_cotisations.type_paiement_cotis ORDER BY adherents_groups_members.id_group, nom_adh; </query> <!-- CSV Headers - optionnal. If not set, fields name will be exported. If set to none (eg. <headers><none/></headers>, no headers will be outpoutted. You can alternatively use named columns in you query instead of header tags. --> <headers> <!--<none/>--> <header>Section</header> <header>Nom</header> <header>Prénom</header> <header>Courriel</header> <header>Date</header> <header>Total</header> <header>Nombre de versements</header> <header>Type de paiement</header> </headers> <!-- CSV separator to use - optionnal. If this tag is not present, it will defaults to ',' (see Csv::DEFAULT_SEPARATOR from classes/csv.class.php) Accepted values are also defined in Csv class. --> <separator>;</separator> <!-- How to quote values - optionnal. If this tag is not present, it will defaults to '"' (see Csv::DEFAULT_QUOTE from classes/csv.class.php) Accepted values are also defined in Csv class. --> <quote><![CDATA["]]></quote> </export> le log indique : 10.3.20.26 - 2025-03-01 08:03:51 - ERROR - An error occurred while exporting | Undefined array key "query" Je sèche un peu : y-a-t-il un changement à faire qui m'aurait échappé ? Merci d'avance, et pardon pour le bruit si c'est moi qui ai raté quelque chose. Et, on ne le dira jamais assez : Merci Johan pour ce super outil! Et merci à tous ceux et toutes celles qui aident à le maintenir. Alain

Salut, Tu dois passer en YAML et de plus déplacer le fichier dans \includes\sys_config La transcription n'est pas difficile à faire. Cordialement, Alain Castera a écrit :
Salut.
Depuis 1.1.3, mes exports paramétrés ne marchent plus. "Une erreur est survenu pendant l'exécution de l'export paramétré ..." Seul l'export standard "Cotrisations" fonctionne.
Mes exports sont un peu complexes, mais fonctionnaient jusque là. Je suis toujours en ".xml", car la conversion ne paraît pas triviale. D'ailleurs, un exemple commenté serait utile à la migration, au moins pour moi ;-)
Voici un des moins compliqué :
<export id="cumulCotis" name="CotisationsCumulées" description="Export du total des cotisations par mode de paiement pour l'ensemble des adhérent-es" filename="adherents_cumulcotis_2023.csv"> <!-- The Query to execute - mandatory --> <query>SELECT adherents_groups_members.id_group, nom_adh, prenom_adh, email_adh, date_enreg, SUM(montant_cotis) as montant_total,count(*) as nb_versements, type_paiement_cotis FROM `adherents_cotisations` INNER JOIN adherents_adherents ON (adherents_cotisations.id_adh=adherents_adherents.id_adh) LEFT OUTER JOIN adherents_groups_members ON (adherents_groups_members.id_adh=adherents_adherents.id_adh AND adherents_groups_members.id_group IN (select n.id_group FROM `adherents_groups`as `n` where (n.group_name LIKE "4 Section%" )) ) WHERE `date_enreg` BETWEEN '2023-01-01' AND '2023-12-31' Group by adherents_cotisations.id_adh,adherents_cotisations.type_paiement_cotis ORDER BY adherents_groups_members.id_group, nom_adh; </query> <!-- CSV Headers - optionnal. If not set, fields name will be exported. If set to none (eg. <headers><none/></headers>, no headers will be outpoutted. You can alternatively use named columns in you query instead of header tags. --> <headers> <!--<none/>--> <header>Section</header> <header>Nom</header> <header>Prénom</header> <header>Courriel</header> <header>Date</header> <header>Total</header> <header>Nombre de versements</header> <header>Type de paiement</header> </headers> <!-- CSV separator to use - optionnal. If this tag is not present, it will defaults to ',' (see Csv::DEFAULT_SEPARATOR from classes/csv.class.php) Accepted values are also defined in Csv class. --> <separator>;</separator> <!-- How to quote values - optionnal. If this tag is not present, it will defaults to '"' (see Csv::DEFAULT_QUOTE from classes/csv.class.php) Accepted values are also defined in Csv class. --> <quote><![CDATA["]]></quote> </export>
le log indique : 10.3.20.26 - 2025-03-01 08:03:51 - ERROR - An error occurred while exporting | Undefined array key "query"
Je sèche un peu : y-a-t-il un changement à faire qui m'aurait échappé ?
Merci d'avance, et pardon pour le bruit si c'est moi qui ai raté quelque chose.
Et, on ne le dira jamais assez : Merci Johan pour ce super outil! Et merci à tous ceux et toutes celles qui aident à le maintenir.
Alain
_______________________________________________ Galette-users mailing list -- galette-users@mailman3.com To unsubscribe send an email to galette-users-leave@mailman3.com

Salut, Le 01/03/2025 à 09:49, Contact CID Auditeur a écrit :
Salut,
Tu dois passer en YAML et de plus déplacer le fichier dans \includes\sys_config La transcription n'est pas difficile à faire.
Effectivement ce n'est pas très compliqué, l'exemple commenté existe dans la doc. Cela dit, les fichiers XML existants sont censés fonctionner, le correctif est là : https://github.com/galette/galette/commit/48a277e91df52b54298edf6149bf862b8a... ++ -- Johan

Un grand merci à tous les deux. Je vais essayer les deux solutions dans pas trop longtemps j'espère, pour pouvoir vous assurer un retour. Avec l'exemple de https://github.com/galette/galette/blob/develop/galette/includes/sys_config/... que je n'avais pas trouvé, c'est en effet assez clair. MAis comme j'ai beaucoup d'exports paramétrés (une cinquantaine, avec des query plus lourds que l'exemple donné), c'est très long et sujet à erreur. Je vais essayer de trouver un moyen d'automatiser ça. En attendant, je vais tester la solution de Johan, qui me demande beaucoup moins de travail :-) Alain On Sat, 1 Mar 2025, Johan Cwiklinski wrote:
Salut,
Le 01/03/2025 à 09:49, Contact CID Auditeur a écrit :
Salut,
Tu dois passer en YAML et de plus déplacer le fichier dans \includes\sys_config La transcription n'est pas difficile à faire.
Effectivement ce n'est pas très compliqué, l'exemple commenté existe dans la doc.
Cela dit, les fichiers XML existants sont censés fonctionner, le correctif est là : https://github.com/galette/galette/commit/48a277e91df52b54298edf6149bf862b8a...
++ -- Johan _______________________________________________ Galette-users mailing list -- galette-users@mailman3.com To unsubscribe send an email to galette-users-leave@mailman3.com

Salut, Le 01/03/2025 à 10:40, Alain Castera a écrit :
Avec l'exemple de https://github.com/galette/galette/blob/develop/ galette/includes/sys_config/exports.yaml que je n'avais pas trouvé, c'est en effet assez clair. MAis comme j'ai beaucoup d'exports paramétrés (une cinquantaine, avec des query plus lourds que l'exemple donné), c'est très long et sujet à erreur. Je vais essayer de trouver un moyen d'automatiser ça.
Pour le moment, la "méthode XML" reste supportée, je n'ai pas prévu de la supprimer. S'il devait y avoir des nouveautés, ce serait uniquement dans le nouveau format - mais il n'y a absolument rien de prévu. Les deux formats cohabitent parfaitement. Pour chaque export demandé, Galette regarde d'abord s'il existe dans le fichier YAML, puis ensuite dans le XML. Il est tout à fait possible de migrer les exports un par un par exemple. Un convertisseur XML=>YAML serait possible, mais comme toujours, c'est une histoire de temps/motivation :-) ++ -- Johan

Ça donne : 10.3.20.26 - 2025-03-01 09:46:56 - ERROR - An error occurred while exporting | Galette\IO\CsvOut::export(): Argument #2 ($separator) must be of type string, SimpleXMLElement given, called in /home/sudreche/bdd/adherents-1.1.5.2/lib/Galette/IO/CsvOut.php on line 302 #0 /home/sudreche/bdd/adherents-1.1.5.2/lib/Galette/IO/CsvOut.php(302): Galette\IO\CsvOut->export(Object(Laminas\Db\ResultSet\ResultSet), Object(SimpleXMLElement), Object(SimpleXMLElement), true, Resource id #409) #1 /home/sudreche/bdd/adherents-1.1.5.2/lib/Galette/IO/CsvOut.php(408): Galette\IO\CsvOut->runXmlParametedExport('cotisationsComp') #2 /home/sudreche/bdd/adherents-1.1.5.2/lib/Galette/Controllers/CsvController.php(171): Galette\IO\CsvOut->runParametedExport('cotisationsComp') #3 [internal function]: Galette\Controllers\CsvController->doExport(Object(Slim\Psr7\Request), Object(Slim\Psr7\Response)) #4 /home/sudreche/bdd/adherents-1.1.5.2/vendor/php-di/invoker/src/Invoker.php(74): call_user_func_array(Array, Array) #5 /home/sudreche/bdd/adherents-1.1.5.2/vendor/php-di/slim-bridge/src/ControllerInvoker.php(45): Invoker\Invoker->call(Array, Array) #6 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/Routing/Route.php(363): DI\Bridge\Slim\ControllerInvoker->__invoke(Array, Object(Slim\Psr7\Request), Object(Slim\Psr7\Response), Array) #7 /home/sudreche/bdd/adherents-1.1.5.2/lib/Galette/Middleware/Authenticate.php(166): Slim\Routing\Route->handle(Object(Slim\Psr7\Request)) #8 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(280): Galette\Middleware\Authenticate->__invoke(Object(Slim\Psr7\Request), Object(Slim\Routing\Route)) #9 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(73): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #10 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(73): Slim\MiddlewareDispatcher->handle(Object(Slim\Psr7\Request)) #11 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/Routing/Route.php(321): Slim\MiddlewareDispatcher->handle(Object(Slim\Psr7\Request)) #12 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/Routing/RouteRunner.php(74): Slim\Routing\Route->run(Object(Slim\Psr7\Request)) #13 /home/sudreche/bdd/adherents-1.1.5.2/vendor/akrabat/rka-slim-session-middleware/RKA/SessionMiddleware.php(66): Slim\Routing\RouteRunner->handle(Object(Slim\Psr7\Request)) #14 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): RKA\SessionMiddleware->process(Object(Slim\Psr7\Request), Object(Slim\Routing\RouteRunner)) #15 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/csrf/src/Guard.php(482): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #16 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): Slim\Csrf\Guard->process(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #17 /home/sudreche/bdd/adherents-1.1.5.2/lib/Galette/Middleware/Language.php(68): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #18 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(177): Galette\Middleware\Language->__invoke(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #19 /home/sudreche/bdd/adherents-1.1.5.2/lib/Galette/Middleware/Telemetry.php(69): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #20 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(177): Galette\Middleware\Telemetry->__invoke(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #21 /home/sudreche/bdd/adherents-1.1.5.2/includes/main.inc.php(177): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #22 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(280): Closure->{closure}(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #23 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php(45): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #24 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): Slim\Middleware\RoutingMiddleware->process(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #25 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/Middleware/ErrorMiddleware.php(77): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #26 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): Slim\Middleware\ErrorMiddleware->process(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #27 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/twig-view/src/TwigMiddleware.php(117): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #28 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): Slim\Views\TwigMiddleware->process(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #29 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/MiddlewareDispatcher.php(73): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #30 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/App.php(209): Slim\MiddlewareDispatcher->handle(Object(Slim\Psr7\Request)) #31 /home/sudreche/bdd/adherents-1.1.5.2/vendor/slim/slim/Slim/App.php(193): Slim\App->handle(Object(Slim\Psr7\Request)) #32 /home/sudreche/bdd/adherents-1.1.5.2/includes/main.inc.php(209): Slim\App->run() #33 /home/sudreche/bdd/adherents-1.1.5.2/webroot/index.php(50): require_once('/home/sudreche/...') #34 {main} Si ça t'inspire, tant mieux. Sinon, ne te prends pas trop la tête, je vais convertir en yaml petit à petit. Alain On Sat, 1 Mar 2025, Johan Cwiklinski wrote:
Salut,
Le 01/03/2025 à 09:49, Contact CID Auditeur a écrit :
Salut,
Tu dois passer en YAML et de plus déplacer le fichier dans \includes\sys_config La transcription n'est pas difficile à faire.
Effectivement ce n'est pas très compliqué, l'exemple commenté existe dans la doc.
Cela dit, les fichiers XML existants sont censés fonctionner, le correctif est là : https://github.com/galette/galette/commit/48a277e91df52b54298edf6149bf862b8a...
++ -- Johan _______________________________________________ Galette-users mailing list -- galette-users@mailman3.com To unsubscribe send an email to galette-users-leave@mailman3.com

Salut, Le 01/03/2025 à 10:49, Alain Castera a écrit :
10.3.20.26 - 2025-03-01 09:46:56 - ERROR - An error occurred while exporting | Galette\IO\CsvOut::export(): Argument #2 ($separator) must be of type string, SimpleXMLElement given, called in /home/sudreche/bdd/ adherents-1.1.5.2/lib/Galette/IO/CsvOut.php on line 302
Voilà qui devrait corriger : https://github.com/galette/galette/commit/1da504c3b536472e8a8adffd0414e08798... ++ -- Johan

Comme toujours, service (ultra) rapide et (parfaitement) efficace. C'est stressant : comment être à la hauteur ;-) Merci Johan, À un de ces jours. Alain On Sat, 1 Mar 2025, Johan Cwiklinski wrote:
Salut,
Le 01/03/2025 à 10:49, Alain Castera a écrit :
10.3.20.26 - 2025-03-01 09:46:56 - ERROR - An error occurred while exporting | Galette\IO\CsvOut::export(): Argument #2 ($separator) must be of type string, SimpleXMLElement given, called in /home/sudreche/bdd/ adherents-1.1.5.2/lib/Galette/IO/CsvOut.php on line 302
Voilà qui devrait corriger : https://github.com/galette/galette/commit/1da504c3b536472e8a8adffd0414e08798...
++ -- Johan _______________________________________________ Galette-users mailing list -- galette-users@mailman3.com To unsubscribe send an email to galette-users-leave@mailman3.com
participants (3)
-
Alain Castera
-
Contact CID Auditeur
-
Johan Cwiklinski