Abbiamo già visto come creare qualsiasi report utilizzando un motore interno di Adempiere. In realtà è possibile creare report più complessi e personalizzati utilizzando uno strumento indipendente chiamato jasperReport. In questo articolo faremo vedere come è possibile integrare un report creato in jasper all’interno di Adempiere.
Come esempio prenderemo un report già creato con IReport all’interno di questo articolo.
Accediamo al sistema Adempiere come ruolo SystemAdministrator e utente SuperUser psw System.
Nella figura successiva ricordiamo i passi da eseguire per creare un nuovo report (o processo) all’interno di Adempiere.
Dal menù selezionare “report e processi” e fare click su “nuovo”.
Scriveremo nel campo “nome” e “search key” newReportOrdine.
Con Adempiere ci sono diversi modi per integrare un report fatto in jasper. In questo esempio ne vedremo solo due: il primo è allegare il report, creato in quest’articolo, all’interno della maschera utilizzando il bottone “allega” (come evidenziato in figura in alto). Il secondo è posizionare il report in un percorso specifico del server e richiamarlo successivamente all’interno di un campo dedicato (jasper report) che vedremo fra poco. In realtà ci sono altri metodi di integrazione che prevedono ad esempio l’utilizzo del percorso con protocollo http.
Se si utilizza il primo metodo di integrazione di report jasper (ovvero l’utilizzo del report allegato) allora all’interno nel campo “Jasper Report” dovremo inserire un percorso come visualizzato in figura soprastante: attachment:nomeReport.jasper.
In questo esempio utilizzeremo il report newOrder creato in un altro tutorial.
Se, invece, utilizziamo il secondo metodo, ovvero, l’utilizzo del report attraverso un percorso del server nello stesso campo “Jasper Report” dovremo inserire una dicitura come visualizzato nella figura soprastante. /C:\percorsofile\nomeReport.jasper
Nei nostri esempi abbiamo utilizzato il nome del report con estensione .jasper. Questa estensione rappresenta il “compilato” del report. In realtà possiamo inserire anche l’estensione .jrxml che rappresenta il file salvato con iReport. (quindi nel campo “jasper report” possiamo inserire ../nomeReport.jrxml). In questo caso il sistema, quando verrà chiamato questo report, creerà automaticamente il compilato e lo utilizzerà per esporre i risultati.
Una volta salvata la nostra configurazione all’interno del tab report e processi possiamo accedere al tab parametro per creare la lista dei parametri che andranno in ingresso al nostro report. Nel nostro esempio ci sarà un solo parametro (isActive) con tipo dati booleano (vero o falso).
Nel tab parametro fare click su nuovo ed inserire il nome del parametro. il nome del parametro deve essere lo stesso che viene utilizzato durante la creazione dei parametri in iReport. Nel nostro esempio lo chiameremo quindi “isActive” e, come è possibile vedere nella figura soprastante, lo associamo ad una colonna dell’application dictionary (poichè è una delle colonne di default di Adempiere e presente in ogni tabella) che avrà come reference YesNo. E’ comunque possibile creare parametri completamente scollegati dall’application dictionary.
Dopo aver impostato correttamente anche i parametri aggiungiamo il report all’interno del menù in modo da renderlo disponibile da tutti i client.
Come si può vedere in figura soprastante accediamo alla voce menù, facciamo click su “nuovo” e creiamo una nuova voce di menù chiamata newOrder. Impostiamo action “processo” e process “newReportOrdine” (ovvero il nome del processo creato su report e processi). Dopo aver salvato la configurazione, il processo dovrà apparire nel menu in anteprima a sinistra.
A questo punto non ci manca che provare il report. Facciamo logout da SystemAdministrator ed accediamo al sistema come utente SuperUser psw System e ruolo utente di prova (GardenAdmin).
Come si può vedere dalla figura soprastante, il processo “newOrder” è stato inserito all’interno del menù. Facendo click su di esso apparirà una maschera in cui inserire il valore del parametro (in formato checkbox) che abbiamo impostato (isActive).
Il risultato è il seguente: