如何更新invoice.line数量?

时间:2018-08-07 15:10:50

标签: odoo-8

我正在尝试在发票中创建按钮,该按钮将更新发票行中的某些字段。我已经找到了如何更新account.invoice中的字段,但是我正在努力寻找正确的方法来更新account.invoice.line中的字段。

class accountinvoiceext(models.Model):
    _inherit = ['account.invoice']
    @api.one
    def my_button(self,uid):
        invoice_id = self.id
        #lines = getinvoicelinesbyid(invoice_id)

我确定有某种适当的方法可以获取与此发票相关的invoice.lines,或者没有? 我已经尝试过_inherit account.invoice.line,但是后来我无法在其中定义按钮。

第二个问题-每次创建发票时调用某些函数的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

如果要添加按钮以更改行。您需要循环处理发票中的one2many字段,并将@ api.one更改为@ api.multi,例如:

@api.multi
def my_button(self):
    for line in self.invoice_line:
         line.write({'your_field': 'your_values'})

如果要在创建每个发票时调用此函数,则需要修改create函数:

@api.multi
def create_project(self,values):
    res = super(SaleOrder, self).create(values)
    res.my_button()
    return res