Modèle Birt - Modification rptdesign et report spécifique par enseigne commerciale

Bonjour,
J’aimerais pouvoir personnaliser les report de devis (SaleOrder.rptdesign) en fonction de l’enseigne commerciale et je ne trouve pas la méthode pour y parvenir.
J’ai tenté de créer des paramètres d’impressions spécifiques pour l’enseigne commercial, depuis l’écran de modification de la société mère, en précisant un modèle Birt spécifique que je cible ensuite à partire des paramètres d’impression du devis en question (voir copies d’écran ci-dessous) :

Mais depuis le devis client ainsi configuré en cliquant sur Rapport/Imprimer, seulement les entêtes et pied de page configurés dans les paramètres d’impressions sont prises en compte. Le design du pdf est toujours celui du du fichier SaleOrder.rptdesign par défaut du système.

Pour le moment la seule manière que j’ai trouvée pour modifier le template est donc de modifier le fichier rptdesign de base (ici, SaleOrder.rptdesign) qui se trouve dans l’archive /WEB-INF/lib/axelor-sale-5.0.0-rc3.jar

Quelle est donc la méthode à suivre pour prendre en compte un autre fichier .rptdesign spécifiquement pour ce devis lors de l’impression ?

Autre question annexe, dans le modèle SaleOrder.rptdesign par défaut, c’est toujours le logo de la société qui s’affiche, comment faire pour que ce soit le logo de l’enseigne commerciale spécifiée dans le devis qui soit pris en compte ?

Merci d’avance pour votre aide précieuse et vos conseils avisés :wink:

Adrien

Bonjour,

Les fichiers utilisés sont codés en dur. Je pense qu’il serait effectivement intéressant de pouvoir les écraser au cas par cas mais cela nécessite pas mal de modifications qui doivent être faites en concertation avec Axelor. Cela permettrait également d’utiliser un autre système de templates que BIRT.

Pour l’instant, le plus « simple » est de modifier le design dans les sources et de reconstruire, ou de monter une instance de BIRT parallèle puisqu’il est possible de la configurer dans l’application.properties

Cordialement

Merci pour votre réponse,

Modifier le fichier rptdesign dans les sources est effectivement la solution que j’ai trouvée pour le moment, mais elle ne me permet pas de changer de design en fonction de l’enseigne commerciale du devis. Je peux customiser mon report mais pas le changer en fonction de paramètres d’impression spécifiques.

J’imagine qu’il doit bien y avoir une possibilité d’ajouter des conditions sur le fichier rptdesign à utiliser quand on clique sur imprimer.

Effectivement pour en avoir un par enseigne ça va être compliqué, sauf si les modifications sont relativement mineures. Il faudrait que vous donniez plus de détails sur l’étendue des variations. Vous pouvez vous en sortir en utilisant un rapport maître et des sous reports que vous afficherez de manière conditionnelle (possible sous BIRT mais jamais fait)

Alors, les variations d’une enseigne à l’autre serait mineure :

  • modification du logo en prenant celui de l’enseigne
  • modification du header et pied de page, qu’on peut modifier déjà depuis les paramètres d’impressions
  • modification d’une couleur (pareil, il ya un champ couleur hex dans les paramètres d’impressions, mais je ne sais pas comment récupérer cette variable dans Birt)

Au final, si le fichier SaleOrder.rptdesign (je ferai la même chose pour les factures ensuite par exemple) peut prendre en compte le logo de l’enseigne plutôt que le logo de la société ce serait déjà une belle avancée :wink:
Si vous savez comment faire dans Birt (je sais ouvrir les rptdesign dans birt et faire des modifs mineures mais pas celle là), je suis preneur.

Normalement pour le logo c’est déjà opérationnel s’il est configuré dans les propriétés de l’enseigne (coalesce(MetaFileTN.file_path, MetaFile.file_path) as logo_path), le header/pdp a priori vous avez réussi en jouant avec les paramètres d’impression.
Pour accéder au code couleur, il faut modifier la requête InvoiceDB (autour des lignes 900 du rapport) pour récupérer PrintingSettings.color_code. Attention, je vous conseille de l’ajouter via l’outline et pas directement dans le XML parce qu’il faut déclarer le champ à 36 endroits différents pour que BIRT daigne voir qu’il existe (utiliser les metadata ça devait rendre les rapports trops simples), donc il vaut mieux laisser l’outil se débrouiller (s’il ne crashe pas). Je vous conseille également de l’ajouter à la fin de la clause SELECT sinon ça va renuméroter tous les champs et bonjour pour merger l’upstream.
Ensuite vous pouvez y accéder via row['color_code'] pour les champs liés à InvoiceDB

Merci,
Je suis sur la version 5.0.0-rc3 et sauf erreur, je ne vois pas “coalesce(MetaFileTN.file_path, MetaFile.file_path) as logo_path” dans le fichier SaleOrder.rptdesign. J’ai dans la requete SQL uniquement “MetaFile.file_path as logo_path”.
Dois-je remplacer par votre code ?

Il semble que vous me parlez de InvoiceDB, j’imagine que c’est concernant le modèle de facture plutôt et pas le modèle de devis. J’imagine que le fonctionnement est similaire.

Merci du tuyau pour la prise en compte du code couleur, je vais essayer.

Bonjour,

Il y a eu des modifications sur les modèles de devis, au minimum le commit https://github.com/axelor/axelor-business-suite/commit/0c24e100f8766b575446fae0153f7621eed14e16 qui améliore la prise en charge des enseigne (avec notamment le coalesce).
Je pense que vous pouvez switcher sur la branche dev sans que cela ne prête à conséquence plutôt que d’avoir la RC. Le rythme des corrections est assez soutenu en ce moment

Cordialement,

En effet, je viens de voir les modifications qui ont été faites dans ce sens sur plusieurs report, je vais donc mettre à jour vers la version 5.0.1 pour mon outil Axelor en production et utiliser la branche dev pour les tests.

Merci beaucoup pour votre réactivité en tout cas, je vois enfin le bout du tunnel sur ce dossier :wink:

Bien Cordialement,

Adrien

Bonjour, je ne parviens pas à faire cela malgré de nombreuses tentatives, le problème se trouve probablement lors du remplacement dans l’archive.

Si quelqu’un a une idée ? :smiley:

Si le topic est toujours vivant, faites moi signe et j’expliquerai en détail ma situation, merci d’avance.