Benvenuto!
Questo è il forum ufficiale dell'Associazione Odoo Italia. Dopo esserti registrato potrai partecipare ponendo domande o rispondendo a quelle esistenti. Non scordarti di compilare il tuo profilo e consultare le linee guida prima di iniziare a scrivere.
Aggiungere campi personalizzati ad un report [RISOLTO]
Salve a tutti, sto utilizzando Odoo12 per la prima volta e sono alle prese con un modulo molto semplice.
Ho creato un modulo personalizzato che permette di aggiungere nuovi campi ad una vista (stock.picking) senza particolari difficoltà, adesso vorrei che questi campi venissero riportati nella stampa del relativo report (stock.report_deliveryslip). Purtroppo ci ho provato in diverse maniere senza successo, qualcuno può darmi una mano?
Il mio modulo è composto essenzialmente da:
models.py
views.xml
stock_report_deliveryslip_inherit.xml (penso di avere problemi qui)
Non mi sembra avere problemi con models e views infatti riesco a salvare le informazioni dei campi, ma non riesco ad effettuarne la stampa sul pdf del report.
In particolare mi sapreste indicare come riuscire ad effettuare la stampa dei valori dei campi corrispondenti? Credo che bisogna lavorare sull'xml stock_report_delivery_inherit, ma sono riuscito solo a "stampare" il testo senza l'effettivo valore dei campi.
Vi ringrazio anticipatamente.
models.py
from odoo import models, fields, api class StockPickingInherit(models.Model): _inherit = 'stock.picking' primo_field = fields.Char(string='testo uno', store=True) secondo_field = fields.Char(string='testo due', store=True) terzo_field = fields.Char(string='testo tre', store=True)
views.xml
<odoo>
<data> <record id="stok_picking_inherit" model="ir.ui.view"> <field name="name">stock.picking.inherit</field> <field name="model">stock.picking</field> <field name="inherit_id" ref="stock.view_picking_form"/> <field name="arch" type="xml"> <xpath expr="//field[@name='carrier_id']" position="after"> <field name='primo_field'/> </xpath> <xpath expr="//field[@name='carrier_id']" position="after"> <field name='secondo_field'/> </xpath> <xpath expr="//field[@name='carrier_id']" position="after"> <field name='terzo_field'/> </xpath> </field> </record> </data> </odoo>
stock_report_delivery_inherit.xml
<odoo> <template id="stock_report_delivery_inherit" inherit_id="stock.report_delivery_document"> <xpath expr="//table[@class='table table-sm']" position="after"> <div class="row mt32 m32" id="test_inherit"> <div class="col-auto mw-100 mb-2"> <h3>TITOLO: </h3> <strong>Primo: </strong> <!-- Qui vorrei il valore di primo_field--> <strong>Secondo </strong> <!-- Qui vorrei il valore di secondo_field--> <strong>Terzo: </strong><!-- Qui vorrei il valore di terzo_field-->
</div> </div> </xpath> </template> </odoo>
Buongiorno,
per visualizzare i campi nel report puoi modificare il report template come segue:
<strong>Primo: </strong> <span t-field="o.primo_field"/>
<strong>Secondo: </strong> <span t-field="o.secondo_field"/>
<strong>Terzo: </strong> <span t-field="o.terzo_field"/>
Inoltre:
i fields aggiunti sul model non serve definirli come stored, lo sono già di default, puoi togliere pertanto store=True
puoi semplificare la vista stock_picking_inherit apportando queste modifiche:
<xpath expr="//field[@name='carrier_id']" position="after">in stock_report_delivery_inherit è preferibile usare expr="//table[hasclass('table-sm')]" piuttosto che expr="//table[@class='table table-sm']"
<field name='primo_field'/>
<field name='secondo_field'/>
<field name='terzo_field'/>
</xpath>
Altrimenti in fase di aggiornamento del modulo, nel log di Odoo ottieni:
2021-04-24 08:33:23,628 208275 WARNING test-forum odoo.addons.base.models.ir_ui_view: Error-prone use of @class in view stock_report_delivery_inherit (): use the hasclass(*classes) function to filter elements by their classes
Resta informato
Informazioni sulla comunità
Strumenti di richiesta
Statistiche
Richiesta del: 23/04/21, 17:34 |
Vista: 549 volte |
Ultimo aggiornamento: 24/04/21, 11:37 |