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

[ODOO 12] Cambiare il dominio di un field in un modello tramite una var. booleana di un altro modello

Avatar
Davide Ercole

Salve, sto provando a cambiare il dominio del campo "product_id", esso è un campo Many2one del modello di base di odoo "product.template"

Questo è il codice:

class AccountInvoice(models.Model):
    _inherit='account.invoice'
    x_plurianno_check_invoicing = fields.Boolean(string="Corso di Laurea pluriennale")

@api.onchange('invoice_line_ids','x_plurianno_check_invoicing')
    def action_plurianno_create(self):
        listaid=[]

if self.x_plurianno_check_invoicing == True:   #When I click on the "Corso di Laurea pluriennale" checkbox, find the ids with the x_rata_pluriennale == True
            wt = self.env['product.template']
            trovato=wt.search([('x_rata_pluriennale','=','True')])
            for prodotti in trovato:
                listaid.append(prodotti.id)
                print("la lista id è")
                print(listaid)
            
#here, I try to override the product_id field defined in anagraf_prodotto model
self.env['product.template'].product_id=fields.Many2one(comodel_name='account.invoice.line', domain=listaid)

product template inherited class:

class anagraf_prodotto(models.Model):
    _inherit = "product.template"
    
    x_rata_pluriennale = fields.Boolean(string="Prodotto Pluriennale")

Ma il dominio non cambia quando provo a creare una fattura, infatti riesco a vedere tutti i prodotti, mentre vorrei far mostrare solo quelli che hanno x_rata_pluriennale VERA

How can I change the domain of a field of a model from another model?

Avatar
Abbandona
1 risposta
0
Avatar
Alex Comba
Migliore risposta

Ciao,

ti suggerisco di:

  • fare l'override di _onchange_product_id

  • modificare il domain restituito da super: domain = super(AccountInvoice, self)._onchange_product_id()

Avatar
Abbandona