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 risorsa print che chiamiamo analisi_fatturato.py all’interno della cartella resources/tables/fattura_riga/print, esattamente come abbiamo fatto nella 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 risorsa html_res che chiamiamo stampa_analisi_fatturato.py all’interno della cartella resources/tables/fattura_riga/html_res.

Rimandiamo alla 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.


Puoi provare la stampa direttamente su Sandbox, oppure scaricare i file di stampa qui di seguito.


Attachments: