我想在更改 Ligne时更改订购数量(product_uom_qty
)和 prix unitaire (price_unit
)的值。但是我的onchange
函数仅适用于订购数量,尽管两个函数均已正确调用。
这是我的代码:
from datetime import datetime, timedelta
from odoo import api, fields, models, _
# Contrat model
class Contrat(models.Model):
_name = 'contrat.contrat'
_rec_name = 'contrat_name'
contrat_name = fields.Char(string='Nom')
contrat_number = fields.Integer(string="Numero")
date_start = fields.Date(string='Date Debut')
date_end = fields.Date(string="Date Fin")
date_deadline = fields.Date(string="date echeance")
ligne_id = fields.One2many('contrat.lignes','ligne_ids',"mylignes")
# notebook_ids = fields.Many2one('contrat.lignes','ligne_id',string='Notebook')
client_name = fields.Many2one('res.partner',string="Client")
bons_ligne_ids = fields.One2many('sale.order.line', 'contrat_name_id', String='Contrat bons')
class ContratOrder(models.Model):
_name = 'contrat.lignes'
_rec_name = 'ligne_name'
ligne_ids = fields.Many2one('contrat.contrat',string="Contrat")
ligne_name = fields.Char(string="Nom de Ligne")
unit_price = fields.Float(string='Prix Unitaire')
article_name = fields.Many2one('product.template', string="Article")
quantity = fields.Float(string='Quantite')
# modifier les lignes des bons de commands
class bons_lignes(models.Model):
_inherit="sale.order.line"
bons_po = fields.Integer('PO')
contrat_name_id = fields.Many2one('contrat.contrat', string='Contrat')
contrat_lignes_id = fields.Many2one('contrat.lignes', string='Ligne contrat')
product_uom_qty = fields.Float('qtt', related='contrat_lignes_id.quantity')
price_unit = fields.Float(string='Prix Unitaire')
@api.onchange('contrat_lignes_id')
def onchange_conrat_lignes_id(self):
self.price_unit = self.contrat_lignes_id.unit_price
如何使用一个或多个onchange函数更改两个字段。
编辑:Odoo已经在字段product_uom_qty
上具有onchange触发器,该触发器将在调用我的onchange方法后更改字段price_unit
。怎样才能使我的onchange函数稍后被调用,或者只是禁止Odoo调用其其他函数?
答案 0 :(得分:0)
只需使用一种onchange方法即可更改两个字段。
@api.onchange('contrat_lignes_id')
def onchange_conrat_lignes_id(self):
self.product_uom_qty = self.contrat_lignes_id.quantity
self.price_unit = self.contrat_lignes_id.unit_price