Come fare a modificare un tracciato stampa

In questo post vedremo come è possibile personalizzare il tracciato di una stampa; come esempio abbiamo scelto la stampa di un preventivo per un cliente o dell’ordine che da esso nasce.

Per prima cosa quindi inseriamo un preventivo: scegliamo il menu vendite, clienti e clicchiamo sul nostro cliente di prova. Clicchiamo sul bottone preventivi e vendite, e creiamo un nuovo preventivo. Ci basta, per il nostro esempio, inserire una sola riga con un singolo prodotto, che supponiamo di avere già nel nostro database.

prev1

Il nostro preventivo si presenta così, dopo aver cliccato sul link “ricalcola”:

prev2

Scegliendo “stampa” viene generato un pdf come il seguente:

prev3

che potremo inviare al nostro cliente. Supponiamo però che questo tracciato di stampa non sia conforme alle nostre aspettative: come possiamo modificarlo? Ad esempio, supponiamo di voler spostare le informazioni riferimento, data, venditore e termini di pagamento mettendole una sotto l’altra. OpenERP pemette di effettuare questi cambiamenti senza bisogno di intervenire nel codice.

Occorre soltanto avere OpenOffice Writer (l’analogo di MsWord) installato sul proprio pc di lavoro. Inoltre dovremo installare un modulo di OpenERP che ci aiuterà in questo compito: dal menu di configurazione di OpenERP installiamo il modulo OpenOffice Report Designer.

prev4

Compare questo pannello, che invita a scaricare il plugin “base_report_designer_installer.zip” salvarlo in una cartella del nostro pc e aggiungerlo alle estensioni del nostro OpenOffice Write. Per quanto questa sia la strada “maestra”, può essere inutile installare il plugin, soprattutto se le modifiche che vogliamo fare sono poche, anche perché richiede l’installazione di python e può avere qualche piccola incompatibilità di versioni di sistema ecc.

Quindi procediamo in modo più “artigianale”. Prima di tutto scarichiamo sul nostro pc il “template” del report, sale_order.sxw, dalla cartella addons/sale/report. Aprendolo con Write vediamo che è costituito da una serie di intestazioni e di campi del database di OpenERP; non è difficile riconoscere nella parte cerchiata l’insieme di informazioni che desideriamo modificare:

prev6

Possiamo spostare i campi come ci sembra meglio, ad esempio nel modo seguente, modificando il documento come un qualsiasi documento di testo:

prev7

Ora ricarichiamo il file modificato nella cartella da cui lo abbiamo preso, addons/sale/report. Per poter vedere il risultato dobbiamo però fare ancora un’operazione. Infatti OpenERP non usa direttamente il documento sxw come template, ma il formato .rml, per cui bisogna trasformare il nostro documento usando uno script di openerp stesso.

Posizioniamoci nella cartella addons/base_report_designer/openerp_sxw2rml e digitiamo il comando

python openerp_sxw2rml.py <cartella di openerp>/addons/sale/report/sale_order.sxw ><cartella di openerp>/addons/sale/report/sale_order.rml

Ovviamente al posto di <cartella di openerp> dovrete scrivere la cartella in cui avete posizionato il vostro software. In questo modo ricostruiamo il file di cui OpenERP ha bisogno e rilanciando la stampa del preventivo vediamo l’effetto delle nostre modifiche:

prev8

Ci si potrebbe chiedere perché non abbiamo modificato direttamente il formato rml: si sarebbe potuto fare, tuttavia si tratta di un file xml assai poco leggibile, che quindi rende molto più difficile “azzeccare” l’effetto grafico che si vuole raggiungere.

Con lo stesso sistema è possibile modificare anche altre stampe di OpeERP, ad esempio le fatture, e così via.

Stefano Siccardi

facebooktwittergoogle plus

Ho svolto attività diversificate, a partire dalla laurea in matematica e dall'esperienza di programmatore di software di base, per arrivare alla consulenza organizzativa


Comments are closed.