.. _le_stampe/stampe_genropy/stampe_risorsa/risorse_stampa: Come definire una risorsa ========================= .. toctree:: :maxdepth: 1 :hidden: :titlesonly: html_res risorsa_print/risorsa_print.rst dati_record 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 :ref:`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. .. raw:: html
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 :ref:`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 :ref:`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 :ref:`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** :ref:`condizioni o criteri nella risorsa di stampa` . Prendendo a titolo di esempio le tabelle del progetto `Sandbox `_: .. list-table:: :widths: 20 20 20 40 :align: center :header-rows: 1 * - Stampa - maintable - rowtable - Tipo stampa * - :ref:`Fatture` - fattura - fattura - righe (solo selezione) * - :ref:`Righe Fattura` - fattura - fattura_riga - griglia (selezione/query) * - :ref:`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.