Come definire una risorsa

Genropy mette a disposizione dello sviluppatore una tecnica per definire documenti di stampa complessi che possano articolarsi su più pagine e permettano l’uso di carte intestate.

In questa sezione parleremo dalla stampa di dati provenienti da table del database, ottenute definendo la stampa in un file risorsa html_res riferito ad una table del package. Il concetto forte di questo tipo di stampa è che riceve sempre, come sorgente dati, un record primario che viene messo nei dati della stampa.


Per ogni stampa che vogliamo definire si dovranno definire due file risorsa di tipo diverso.

Infatti in aggiunta al modulo di risorsa di stampa (html_res) che contiene la descrizione di come dovrà essere la stampa, occorre definire anche una risorsa batch action di stampa (print) da associare alla prima.

Questa risorsa (print) ha le seguenti funzioni:

  • rendere la stampa eseguibile

  • richiedere all’utente eventuali parametri al momento dell’esecuzione e passarli alla risorsa di stampa

  • leggere dal database i dati del record primario e passarli alla risorsa di stampa

Maintable e Rowtable

Una risorsa di stampa definita in una table ha come attributo maintable la table stessa. La maintable rappresenta la tabella il cui record viene caricato in self.record nella stampa stessa, quindi in una stampa testata/righe rappresenta la testata. La row_table invece rappresenta la tabella delle righe che vediamo rappresentate nella griglia.

Non è detto che le due tabelle coincidano. Nel caso in cui le due tabelle coincidano il risultato sarà sempre la stampa dei record della selezione, eventualmente filtrato da altri condizioni o criteri stabiliti nella risorsa di stampa .

Se invece le due tabelle non coincidono, verrà applicata la stampa alla selezione dei record se e solo se non sono stati specificati altri condizioni o criteri nella risorsa di stampa .

Prendendo a titolo di esempio le tabelle del progetto Sandbox:

Stampa

maintable

rowtable

Tipo stampa

Fatture

fattura

fattura

righe (solo selezione)

Righe Fattura

fattura

fattura_riga

griglia (selezione/query)

Vendite cliente

cliente

cliente

righe (solo query)

Vendite prodotti

prodotto

fattura_riga

griglia (selezione/query)

La maintable fa sì che dalla rispettiva pagina Tablehandler posso richiamarla su una qualunque selezione di record (risultato di una query), ottenendo un unico pdf su più pagine in cui per ogni record della selezione avrò la testata e la griglia delle rispettive righe.