Python 在Odoo8中,我的代码有什么问题?

Python 在Odoo8中,我的代码有什么问题?,python,python-2.7,openerp,odoo-8,Python,Python 2.7,Openerp,Odoo 8,我在account.invoice.line _inherit = "account.invoice.line" discount = fields.Float(string='Discount (%)', digits=(16, 10), # digits= dp.get_precision('Discount'), default=0.0) 现在

我在
account.invoice.line

_inherit = "account.invoice.line"

discount = fields.Float(string='Discount (%)',
                        digits=(16, 10),
                        # digits= dp.get_precision('Discount'),
                        default=0.0)
现在每行的逻辑
price\u subtotal=price\u unit*qty*(1-折扣)
。 在另一个类
account.invoice
中,我指定了计算
amount\u total
amount\u tax

_inherit = "account.invoice"

@api.one
@api.depends('invoice_line.price_subtotal' ,'tax_line.amount')
def _compute_amount(self):
    disc = 0.0
    for inv in self:
        for line in inv.invoice_line:
            disc += (line.quantity * line.price_unit) * (line.discount) / 100
    self.amount_untaxed = sum(line.price_subtotal for line in self.invoice_line)
    self.amount_tax = sum(line.amount*self.change_rate for line in self.tax_line)
    self.amount_discount = disc
    self.amount_total = self.amount_untaxed + self.amount_tax
问题是,如果我在某行中更改折扣值,发票的金额税不会更改


提前感谢

将折扣字段添加到@api.dependens中,因此当您更新折扣字段时,您的方法将被执行,并根据您的逻辑计算金额

请尝试使用以下代码:

@api.one
@api.depends('invoice_line.price_subtotal' ,'tax_line.amount', 'invoice_line.discount')
def _compute_amount(self):
    disc = 0.0
    for inv in self:
        for line in inv.invoice_line:
            disc += (line.quantity * line.price_unit) * (line.discount) / 100
    self.amount_untaxed = sum(line.price_subtotal for line in self.invoice_line)
    self.amount_tax = sum(line.amount*self.change_rate for line in self.tax_line)
    self.amount_discount = disc
    self.amount_total = self.amount_untaxed + self.amount_tax

将折扣字段添加到@api.depends中,这样当您更新折扣字段时,您的方法将被执行,并根据您的逻辑计算金额

请尝试使用以下代码:

@api.one
@api.depends('invoice_line.price_subtotal' ,'tax_line.amount', 'invoice_line.discount')
def _compute_amount(self):
    disc = 0.0
    for inv in self:
        for line in inv.invoice_line:
            disc += (line.quantity * line.price_unit) * (line.discount) / 100
    self.amount_untaxed = sum(line.price_subtotal for line in self.invoice_line)
    self.amount_tax = sum(line.amount*self.change_rate for line in self.tax_line)
    self.amount_discount = disc
    self.amount_total = self.amount_untaxed + self.amount_tax

经过艰苦的搜索和尝试,我找到了为什么
金额\u税
计算不正确的原因,并且我只编辑了一行,它在
帐户.发票
类的同一函数
\u计算金额
中计算税收

@api.one
@api.depends('invoice_line.price_subtotal',  'invoice_line.discount', 'tax_line.amount')
def _compute_amount(self):
    disc = 0.0
    for inv in self:
        for line in inv.invoice_line:
            disc += (line.quantity * line.price_unit) * (line.discount) / 100
    self.amount_untaxed = sum(line.price_subtotal for line in self.invoice_line)
    self.amount_tax = sum(line.price_subtotal*(sum(tax.amount for tax in line.invoice_line_tax_id)) for line in self.invoice_line)
    self.amount_discount = disc
    self.amount_total = self.amount_untaxed + self.amount_tax

经过艰苦的搜索和尝试,我找到了为什么
金额\u税
计算不正确的原因,并且我只编辑了一行,它在
帐户.发票
类的同一函数
\u计算金额
中计算税收

@api.one
@api.depends('invoice_line.price_subtotal',  'invoice_line.discount', 'tax_line.amount')
def _compute_amount(self):
    disc = 0.0
    for inv in self:
        for line in inv.invoice_line:
            disc += (line.quantity * line.price_unit) * (line.discount) / 100
    self.amount_untaxed = sum(line.price_subtotal for line in self.invoice_line)
    self.amount_tax = sum(line.price_subtotal*(sum(tax.amount for tax in line.invoice_line_tax_id)) for line in self.invoice_line)
    self.amount_discount = disc
    self.amount_total = self.amount_untaxed + self.amount_tax

将折扣字段添加到@api.depends,而不是working@Anonymousmiliana你比较过代码吗?你的应答码和我的应答码有什么不同?我看两者都一样d您的答案与我的答案在如何计算
税额方面的差异不取决于@api.dependsworking@Anonymousmiliana你比较过代码吗?你的应答码和我的应答码有什么不同?我看两者都一样d您的答案与我的答案在如何计算
税额方面存在差异
帐户.invoice.line
上应该已经有一个折扣字段,该字段具有此功能。为什么要再添加一次?@CZoellner我使用两种折扣,总额折扣和每行折扣第一个已经存在的折扣,我的标题这里应该已经有一个折扣字段,在带有此功能的
account.invoice.line
。你为什么要再加一次?@CZoellner我使用两种折扣,总金额折扣和每行折扣。第一种已经存在的折扣,我说