BIRT customizing report


#1

Les templates .rptdesign utilisés pour les impressions et la génération des pdf sont-ils hard-codés en fonction du module et de l’action ?
Je ne vois pas où configurer le nom du template en fonction de l’action ou du module ou de l’écran…il faut donc regarder le code source pour savoir lequel est à modifier ?
Et cela veut dire qu’on ne peut créer une variante du report zinvoice par exemple pour remplacer invoice, à nous en lieu et place du report standard Axelor, sans l’écraser ? Et que potentiellement, à chaque mise à jour, il faut bien repenser à ré-écraser ces reports avec nos reports modifiés avant de recompiler l’application ?

Je pensais pouvoir créer des nouveaux reports (nouveaux modules ou modifications de reports de base) dans un répertoire spécial et simplement pouvoir faire un lien entre un module/impression et le nom du .rptdesign…

Dans l’ancienne Documentation Action Report

on parlait d’action report
Or quand je regarde dans le customizing il n’y a rien…

J’en déduis donc que tout est hardcodé…d’où ma surprise et mon interrogation…
Cela a t’il été modifié dans la v5 ?
Ou faut-il justement ajouter une nouvelle entrée Action-Report si on veut customizer avec notre propre report ?


#2

Bonsoir,

Les action-reports fonctionnent uniquement avec le Birt embarqué.

Les rapports peuvent également être appelés depuis une méthode java (groovy, …) et ainsi utilisé le Birt embarqué ou distant sur un autre serveur (config : application.properties).

Il vous est possible de personnaliser vos rapports en utilisant l’éditeur Birt (disponible sur Eclipse). Vous pouvez tout à fait utiliser une action-report pour appeler votre nouveau report.

Il est également possible de réaliser une tache gradle pour remplacer les rapports que vous souhaitez.

Le lien dont vous parlez peut être établi pour les modèles Birt déclenchés lors de l’envoi d’un email (voir les “modèles PDF” dans l’appli).

Cordialement


#3

Bonjour,

désolé de rouvrir ce fil, mais je ne comprends pas la réponse…
Si je veux utiliser un rapport personnalisé en lieu et place de celui par défaut (par exemple sur les notes de frais :wink:), dois-je :

  1. modifier le rptdesign dans le code et rebuilder puis redéployer l’application (et gérer par une tâche gradle perso les mises à jour du code !?..)
    ou
  2. créer un action-report dans Administrations / Gestion des vues / Les Actions ? (sachant qu’il n’en existe pas par défaut, un exemple serait le bienvenu). Et si oui, faut-il aussi modifier la vue pour utiliser cette action ?
    ou
  3. placer mon rptdesign dans un repertoire dédié qui surchage les design par défaut comme suggéré dans http://docs.axelor.com/adk/latest/dev_guide/modules/reports.html (mais le paramètre reports.design.dir semble avoir disparu de application.properties) ?

Merci d’avance,
Cordialement,
Franck


#4

Bonjour,

  1. modifier le rptdesign dans le code et rebuilder puis redéployer l’application (et gérer par une tâche gradle perso les mises à jour du code !?..)

Non. Le plus simple si il s’agit de modifier un report existant est de le dupliquer dans un module spécifique, le modifier, et ajouter une tache gradle pour remplacer le rapport d’ABS lors de la compilation. Ainsi, il sera pris en compte dans les traitements existant d’ABS.

2 . créer un action-report dans Administrations / Gestion des vues / Les Actions ? (sachant qu’il n’en existe pas par défaut, un exemple serait le bienvenu). Et si oui, faut-il aussi modifier la vue pour utiliser cette action ?

Il y a un exemple dans la documentation : http://docs.axelor.com/adk/latest/dev_guide/modules/reports.html

3 . placer mon rptdesign dans un repertoire dédié qui surchage les design par défaut comme suggéré dans http://docs.axelor.com/adk/latest/dev_guide/modules/reports.html1 (mais le paramètre reports.design.dir semble avoir disparu de application.properties) ?

La paramètre fonctionne toujours, si il n’est pas présent dans le fichier application.properties il faut simplement l’ajouter. Il sera pris en compte uniquement dans le cas du Birt embarqué.

Nous travaillons sur une amélioration du système de report sur la prochaine version, pour permettre de facilement ajouter de nouveau report directement depuis l’application, et les rendre accessibles par un assistant sur n’importe quelle fiche (à l’instar des emails).

Cordialement


#5

Bonjour,

Dans la version 5.1.2 le paramètre n’est plus “reports.design.dir” mais “axelor.report.dir”
Source axelor-development-kit/axelor-core/src/main/java/com/axelor/report/ReportResourceLocator.java ligne 41

  public static final String CONFIG_REPORT_DIR = "axelor.report.dir";
  public static final String DEFAULT_REPORT_DIR = "{user.home}/axelor/reports";

  private static final Pattern URL_PATTERN = Pattern.compile("^(file|jar|http|https|ftp):/.*");

  private Path searchPath;

  public ReportResourceLocator() {
    final String dir = AppSettings.get().getPath(CONFIG_REPORT_DIR, DEFAULT_REPORT_DIR);
    this.searchPath = Paths.get(dir);
  }