.. _le_stampe/stampe_genropy/stampe_risorsa/risorse_stampa/risorsa_print: La risorsa print ================ .. toctree:: :maxdepth: 1 :hidden: :titlesonly: print_options 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. .. hint :: 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 :ref:`La risorsa html_res` saranno disponibili ricodificati come ``parameter`` e quindi accessibili con la sintassi:: self.parameter('data_stampa') .. hint:: 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' :ref:`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. .. raw:: html
**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 | +------------------------+------+--------------------------------------------------+