Site icon Tosolini.info

Odoo: timezone nei report / pdf

Odoo ha un raffinato sistema che permette in base all’utenza, di mostrare gli orari, anzi qualunque orario espresso nelle app, nel fuso di riferimento. Questa scelta può essere fatta dall’utente nelle sue preferenze personali.

Tecnicamente lato DataBase l’orario viene sempre registrato nel formato UTC, o tempo coordinato universale. C’è però un punto dove questo non avviene, ovvero nelle stampe report che solitamente producono i file PDF per la stampa.

In questo caso Odoo utilizza QWEB per renderizzare il formato XML in quello che poi vediamo come stampa. Nel caso di un campo data si mutua la funzione strftime() che permette a Python di mostrare in formato stringa quello che dietro è di fatto un datetime.

Un esempio base potrebbe essere:

<span t-esc="doc.nome_field.strftime('%Y-%m-%d')"/>

Come anticipato questo produce effettivamente una data, ma è quella in UTC. Per ovviare al problema si deve scrivere in questo modo:

<span t-esc="context_timestamp(doc.nome_field).strftime('%Y-%m-%d')"/>

Infatti antepondo “context_timestamp()” e avendo cura di inserire il selettore del foreach (doc nel caso dell’esempio) e il nome del campo che stiamo iterando, otterremo la data nel fuso orario richiesto dall’utente.

Exit mobile version