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.
Mostrare un campo appartenente ad un altro modulo
Salve a tutti,
Vorrei che nella vista sale.view_order_form sia visibile un campo da me creato con le informazioni riguardanti il cliente scelto, similmente a quanto accade con il campo già esistente Termini di Pagamento (payment_term_id).
Ho creato il campo fido_field e l'ho reso visibile nella vista base.view_partner_form
partner.py
class ResPartner(models.Model):
_inherit = 'res.partner'
fido_field = fields.Integer(string='Fido associato')
partner_view.xml
<odoo>
<record id="view_category_property_form" model="ir.ui.view">
<field name="name">partner.fido.limit.form.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='vat']" position="after">
<field name='fido_field'/>
</xpath>
</field>
</record>
</odoo>
Ho quindi creato il campo relazionale fido_sale_field e l'ho reso disponibile nella vista sale.view_order_form
sale.py
class SaleOrder(models.Model):
_inherit = "sale.order"
fido_sale_field = fields.Many2one('res.partner', 'fido_field')
sale_view.xml
<odoo>
<data>
<record id="view_order_form_inherit" model="ir.ui.view">
<field name="name">view.order.form.inherit</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="after">
<field name='fido_sale_field'/>
</xpath>
</field>
</record>
</data>
</odoo>
Quello che vorrei dunque accadesse è che nella vista di creazione del preventivo, dopo aver selezionato un cliente dalla lista dei clienti, si caricasse in automatico il valore di fido_field in fido_sale_field.
Dopo aver visionato il codice sale.py del modulo base 'sale' penso sia necessario utilizzare le seguenti api:
@api.onchange('partner_id')
def onchange_partner_id(self):
e
@api.multi
def _prepare_invoice(self):
Purtroppo seguendo il codice già presente e la documentazione non sono riuscito in nessun modo. Qualcuno ha un suggerimento da darmi?
Sapreste inoltre dirmi se è necessario indicare la relazione in entrambi i campi fido_field e fido_sale_field
Vi ringrazio anticipatamente.
Buongiorno,
il campo related sul Sale Order deve essere definito come segue:
fido_sale_field = fields.Many2one(related="partner_id.fido_field")Di default non è storato, per renderlo tale devi aggiungere store=True. Per ulteriori info puoi fare riferimento a https://www.odoo.com/documentation/14.0/reference/orm.html#related-fields.
Salve, grazie per la risposta.
Ho seguito il tuo consiglio modificando come segue sale.py e partner.py:
partner.py
from odoo import models, fields, api
class ResPartner(models.Model):
_inherit = 'res.partner'
fido_field = fields.Integer(string = 'Fido Accordato')
sale.py
from odoo import models, fields, api
class SaleOrder(models.Model):
_inherit = 'sale.order'
fido_sale_field = fields.Many2one(related="partner_id.fido_field", store = True)
Purtroppo all'installazione del modulo ottengo il seguente errore.
Traceback (most recent call last): File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 656, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 314, in _handle_exception raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\pycompat.py", line 87, in reraise raise value File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 698, in dispatch result = self._call_function(**self.params) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 346, in _call_function return checked_call(self.db, *args, **kwargs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\service\model.py", line 98, in wrapper return f(dbname, *args, **kwargs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 339, in checked_call result = self.endpoint(*a, **kw) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 941, in __call__ return self.method(*args, **kw) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 519, in response_wrap response = f(*args, **kw) File "c:\program files (x86)\odoo 12.0\server\odoo\addons\web\controllers\main.py", line 967, in call_button action = self._call_kw(model, method, args, {}) File "c:\program files (x86)\odoo 12.0\server\odoo\addons\web\controllers\main.py", line 955, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py", line 759, in call_kw return _call_kw_multi(method, model, args, kwargs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py", line 746, in _call_kw_multi result = method(recs, *args, **kwargs) File "<decorator-gen-61>", line 2, in button_immediate_install File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\ir_module.py", line 74, in check_and_log return method(self, *args, **kwargs) File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\ir_module.py", line 445, in button_immediate_install return self._button_immediate_function(type(self).button_install) File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\ir_module.py", line 561, in _button_immediate_function modules.registry.Registry.new(self._cr.dbname, update_module=True) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\registry.py", line 86, in new odoo.modules.load_modules(registry._db, force_demo, status, update_module) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\loading.py", line 421, in load_modules loaded_modules, update_module, models_to_check) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\loading.py", line 313, in load_marked_modules perform_checks=perform_checks, models_to_check=models_to_check File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\loading.py", line 179, in load_module_graph load_openerp_module(package.name) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\module.py", line 368, in load_openerp_module __import__('odoo.addons.' + module_name) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\module.py", line 82, in load_module exec(open(modfile, 'rb').read(), new_mod.__dict__) File "<string>", line 4, in <module> File "c:\program files (x86)\odoo 12.0\server\odoo\addons\my_module\models\__init__.py", line 3, in <module> from . import modelsImportError: cannot import name 'models'
Resta informato
Informazioni sulla comunità
Strumenti di richiesta
Statistiche
Richiesta del: 26/04/21, 11:55 |
Vista: 544 volte |
Ultimo aggiornamento: 27/04/21, 09:07 |