La risorsa print

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 come suo datastore

Tale risorsa deve essere messa nella directory print all’interno della cartella delle risorse di una table. Questo rende la stampa eseguibile direttamente dal menu che appare dal bottone con l’icona della stampante, nella toolbar della vista griglia.

Se ad esempio parliamo di una stampa di estratto conto, la risorsa batch action andrà creata al path:

resources/tables/cliente/print/batch_estrattoconto.py

I nomi dei moduli di queste risorse sono liberi, abbiamo scelto i prefissi stampa_ e batch_ solo a titolo esemplificativo.

Suggerimento

Se avete scaricato il progetto sandbox, potete trovare un esempio di risorsa di stampa di questo tipo all’interno del package fatt al path: resources/tables/fattura/print/stampa_fatture.py

BaseResourcePrint

Per questo tipo di risorsa di stampa occorre importare la classe BaseResourcePrint e definire l’oggetto stampa come classe che erediti da esso. Questa classe eredita a sua volta da BaseResourceBatch, per quello che abbiamo più volte ribadito che si tratta di una risorsa di tipo batch action.

Ecco qui l’esempio di una risorsa print estremamente semplice ed è quella che viene usata per eseguire la stampa della fattura definita nel package fatt del progetto sandbox.

from gnr.web.batch.btcprint import BaseResourcePrint

caption = 'Stampa Fattura'

class Main(BaseResourcePrint):
    batch_title = 'Stampa Fattura'
    html_res = 'html_res/mia_fattura'
    templates = 'carta_intestata'

Vediamo rapidamente i parametri da impostare e i metodi di hook che si possono implementare.

Metodi hook

Essendo questa una risorsa batch action posso implementare i seguenti metodi hook. In questa sede spiegheremo quelli principali e più utili.

table_script_parameters_pane

Questo metodo permette di definire il contenuto di un dialog di richiesta parametri di esecuzione della batch action e in questo caso saranno parametri relativi alla stampa. Il metodo riceve un elemento padre nel quale è possibile creare una form per richiedere i parametri di stampa.

def table_script_parameters_pane(self,center,**kwargs):
    fb = center.div(margin='10px').formbuilder(cols=1, border_spacing='4px', lbl_widht='7em', fld_widht='100%')
    fb.checkbox(value='^.no_letterhead', lbl='Senza carta intestata')
    fb.checkbox(value='^.no_cache',lbl='No Cache')
    fb.checkbox(value='^.aggiornaDataStampa',lbl='Aggiorna data stampa')

Questi parametri sono accessibili all’interno della stessa risorsa print all’interno dell’oggetto batch_parameters:

no_cache = self.batch_parameters['no_cache']

mentre nella La risorsa html_res saranno disponibili ricodificati come parameter e quindi accessibili con la sintassi:

self.parameter('data_stampa')

Suggerimento

All’interno del table_script_parameters_pane è possibile nominare i parametri a proprio piacimento ovviamente. L’unico parametro con nome predefinito è use_current_selection, che permetterà di far scegliere all’utente se utilizzare o meno la selezione corrente. Si veda a tal proposito l” Esempio: Righe Fattura

onRecordPrinting e onRecordPrinted

Questi metodi di hook ricevono il record che sarà stampato e permettono di fare operazioni su di esso o sul database prima e dopo la stampa.


Parametri:

Nome parametro

Tipo

Descrizione

caption

T

Variabile globale OBBLIGATORIA, serve a fornire il nome con cui questo batch di stampa verrà mostrato dal menu delle stampe disponibili

tags

T

Variabile globale facoltativa, serve a indicare i tag utente che potranno lanciare la stampe

description

T

Variabile globale facoltativa, serve per fornire una descrizione ulteriore del batch

batch_title

T

Attributo facoltativo, indica il titolo che sarà attribuito al batch nel monitor laterale dei batch in esecuzione.

html_res

T

Attributo OBBLIGATORIO (a meno che la risorsa non venga indicata diversamente), indica la risorsa definizione di stampa associata.

templates

T

Attributo facoltativo, permette di specificare il template che deve essere associato alla stampa (id o nome, es: con templates=”carta_intestata” mi riferisco al nome che è stato dato al template)

batch_print_modes

T

Attributo facoltativo, permette di passare in una lista le modalità di stampa ammesse. Di default vengono offerte tutte quelle che è possibile specificare nelle preferenze dell’applicazione (es: batch_print_modes = [«pdf», «server_print», «mail_pdf»,»mail_deliver»])

batch_prefix

T

Attributo facoltativo, permette di assegnare un prefisso al batch

batch_cancellable

B

Attributo facoltativo, di default False, permette di consentire l’interruzione del batch cliccando su «Stop» nella barra laterale durante l’esecuzione

batch_immediate

B

Attributo facoltativo, se impostato uguale a “print” verrà immediatamente aperta la stampa una volta completata, se impostato uguale a “download” verrà automaticamente avviato il download del file, se infine impostato a True verrà invece identificata la modalità tra le due precedenti sulla base dei parametri inseriti all’avvio della stampa.

mail_address

T

Permette di indicare la colonna del record da utilizzare per l’invio mail automatico in modalità mail_deliver (es: mail_address = @anagrafica_id.email”)

Table script parameters pane Parametri

localize_to

T

Permette di indicare una lingua nella quale tradurre tutte le etichette delle griglie (colonne, subtotali, tutti i campi espressi con «!![en]Nome campo»). Es: localize_to=”en”

translate_to

T

Permette di indicare una lingua nella quale tradurre tutti i valori della stampa. Es: translate_to=”en”. Richiede un service di traduzione esterno appositamente configurato

use_current_selection

B

Permette di scegliere se usare o meno la selezione corrente