Forum

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.

0

Aggiungere campi personalizzati ad un report [RISOLTO]

Avatar
Walter Bates

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:  

  1. models.py

  2.  views.xml

  3. 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>


Avatar
Abbandona
2 Risposte
1
Avatar
Alessandro Fiorino
Migliore risposta

Aggiungo che nella riga <xpath expr="//table[@class='table table-sm']" position="after"> l'operatore @class è sconsigliato (genera dei warning se usato), si può sostituire con hasclass('table','table-sm')  (senza la chiocciola)

Avatar
Abbandona
1
Avatar
Alex Comba
Migliore risposta

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">
                    <field name='primo_field'/>
                    <field name='secondo_field'/>
                    <field name='terzo_field'/>
                </xpath>
in stock_report_delivery_inherit è preferibile usare expr="//table[hasclass('table-sm')]" piuttosto che expr="//table[@class='table table-sm']"

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

Avatar
Abbandona