.. _le_stampe/stampe_genropy/stampe_risorsa/esempi_stampa/stampa_griglia_4: Stampa griglia 4: Righe Fattura =============================== Supponiamo di voler stampare una serie di record, lasciando però la scelta all'utente se stampare i **record derivanti da una selezione** o alternativamente ignorarli e stampare i dati risultanti da una query. In quest'esempio vedremo come definire la risorsa di stampa relativa alle **Statistiche di fatturato**, eventualmente filtrabili per periodo. La stampa verrà lanciata dalla tabella *Righe Fattura* del progetto `Sandbox `_. In particolare, questo esempio ci permetterà di vedere come stampare la *selezione dei dati* (``use_current_selection``) e come invece ignorarla. Definizione della print action ------------------------------ Per prima cosa andiamo a definire la :ref:`risorsa print` che chiamiamo *analisi_fatturato.py* all'interno della cartella ``resources/tables/fattura_riga/print``, esattamente come abbiamo fatto nella :ref:`Stampa con griglia 1: Fatturato per esercizio` . Inseriamo qui tra i parametri anche una checkbox che indicherà se utilizzare la selezione corrente o meno. Il parametro che andremo a impostare sarà ``use_current_selection``, che se impostato a True utilizzerà la selezione, se impostato a False la ignorerà e considererà solo la *query*:: def table_script_parameters_pane(self, pane, **kwargs): fb = pane.formbuilder(cols=1,border_spacing='3px') fb.checkbox(value='^.use_current_selection', label='Selezione corrente', default=True) fb.dateTextBox(value='^.dal',lbl='Dal', period_to='.al', hidden='^.use_current_selection?=#v') fb.dateTextBox(value='^.al',lbl='Al', hidden='^.use_current_selection?=#v') Si noti l'utilizzo del parametro ``period_to='.al'``, che consente il compilamento automatico della data di fine sulla base del periodo considerato (mese o anno). Definizione della risorsa html_res ---------------------------------- Passiamo a questo punto alla definizione della :ref:`risorsa html_res` che chiamiamo *stampa_analisi_fatturato.py* all'interno della cartella ``resources/tables/fattura_riga/html_res``. Rimandiamo alla :ref:`Stampa con griglia 1: Fatturato per esercizio` per la trattazione della definizione dei parametri della classe *Main*, dei metodi ``defineCustomStyles``, ``docHeader``, ``docFooter`` e ``outputDocName``, che non variano in questo caso in modo significativo. Nel metodo ``gridQueryParameters`` impostiamo qui la sola condizione relativa alle date eventualmente inserite:: def gridQueryParameters(self): return dict(table='fatt.fattura_riga', condition='@fattura_id.data BETWEEN :dal AND :al', condition_dal= self.parameter('dal'), condition_al = self.parameter('al')) Il sistema verificherà automaticamente la presenza o meno di ``self.parameter('use_current_selection')``: se sarà *True* verrà utilizzata la selezione corrente, se invece sarà *False* verrà utilizzata la query. .. raw:: html
Puoi provare la stampa direttamente su `Sandbox `_, oppure scaricare i file di stampa qui di seguito. .. raw:: html
**Allegati:** - `stampa_analisi_fatturato `_ - `analisi_fatturato `_