2016-10-31 111 views
1

我试图在发票行上实现这种情况。发票行总和 - Odoo v8

比方说,我的发票行中有50种产品,40种产品受税影响,​​10种产品不受影响。

所以,在我的发票的结果,我有两个字段来计算此

exe = fields.Float(string='Monto Exento', digits=dp.get_precision('Account'), 
    store=True, readonly=True, compute='extras', track_visibility='always') 

应返回总的40级税受影响的产品,而本场

impo = fields.Float(string='Base Imponible', digits=dp.get_precision('Account'), 
    store=True, readonly=True, compute='extras', track_visibility='always') 

应该返回10个其他产品的总和,这些产品不受税务影响。

现在,我从一个函数调用该方法,并计算结果:

@api.one 
@api.depends('invoice_line.price_subtotal', 'tax_line.amount') 
def extras(self): 
    self.exe = self.amount_untaxed + self.amount_tax 
    self.impo = self.amount_untaxed + self.amount_tax 

rec=0 

但预期它不工作,我不知道什么可能是错在这里,也许这是因为我如何处理这个extras函数?

它只是总和所有行的总数。

编辑

继@phillipstack答案,我已经更新了我这样的代码:

@api.one 
@api.depends('invoice_line.price_subtotal', 'tax_line.amount') 
def extras(self): 
    self.exe = self.amount_untaxed + self.amount_tax if self.amount_tax and self.amount_tax > 0 else 0 
    self.impo = self.amount_untaxed + self.amount_tax if not self.amount_tax or self.amount_tax == 0 else 0 

但在impo领域它只是总结这一切,征税与否,我想一种是未经处理的产品,一种是征税。

exe权利它没有显示任何金额。

exe它应该显示未税产品的总量,并且在impo它应该显示征税总额。

如果您需要更多信息,请让我知道。

+0

你能告诉我们你在试什么模型吗?似乎是account.invoice而不是sale.order?所以你试图总结发票行的价值? – CZoellner

+0

是的,它是account.invoice,但这是因为税款来自那里,sale.order也需要从帐户.invoice – NeoVe

+0

我很抱歉,这是account.invoice,得编辑我的问题,你知道,当你这么多工作这个事情发生,大声笑 – NeoVe

回答

1

如果符合特定条件,您需要提供一个if语句来告诉您的脚本不能总和。我不太了解您的要求,但这可能会起作用。或者类似的东西。

@api.one 
@api.depends('invoice_line.price_subtotal', 'tax_line.amount') 
def extras(self): 
    self.exe = self.amount_untaxed + self.amount_tax if self.amount_tax and self.amount_tax > 0 else 0 
    self.impo = self.amount_untaxed + self.amount_tax if not self.amount_tax or self.amount_tax == 0 else 0 
+0

你好,非常感谢你,好吧,它需要一切和总结它在未来领域,我的意思是它应该只从IMPO税收产品中获得结果,并在EXE上免税,我试图修改它以实现该目标 – NeoVe

+1

如果您取得一些进展但您需要更多帮助,则您可以随时更新您的问题。 –

+0

很酷,会这样做,非常感谢你 – NeoVe