我想在点击“验证”按钮时添加其他日记帐输入行

时间:2018-02-09 20:09:23

标签: odoo odoo-10

我想在点击“验证”按钮时添加其他日记帐输入行(方法:action_invoice_open()) 我这样试试:

class Account_Invoice(models.Model):
    _inherit = "account.invoice"

    od_rcm_account_id = fields.Many2one('account.account',string = "Account")
    od_rcm_amount = fields.Float(string = "Amount")
    od_rcm_ref= fields.Text(string = "Reference")   

    @api.multi
    def action_invoice_open(self):
        res = super(Account_Invoice, self).action_invoice_open()
        data_lines = []
        rcm_dr = (0,0,{
                'account_id':self.od_rcm_account_id and self.od_rcm_account_id.id or False,
                'debit':self.od_rcm_amount or False,
                'credit':0,
                'name':self.od_rcm_ref or False,
            })

        rcm_cr = (0,0,{
                'account_id':self.od_rcm_account_id and self.od_rcm_account_id.id or False,
                'debit':0,
                'credit':self.od_rcm_amount or False,
                'name':self.od_rcm_ref or False,
        })
        data_lines.append(rcm_dr)
        data_lines.append(rcm_cr)
        data = {
            'line_ids':data_lines
        }

        if data['line_ids'] and self.move_id:
            self.move_id.update(data)

        return res

我遇到的问题是,在单击“验证”按钮时,日志的状态变为posted,因此显示错误消息: “您不能对已发布的日记帐分录进行此修改,您只需更改一些非法律字段。您必须还原日记帐分录才能取消它。 移动名称(id):BILL / 2018/0041(355751)。“ 请帮忙。

1 个答案:

答案 0 :(得分:2)

解决了,

class Account_Invoice(models.Model):
_inherit = "account.invoice"

od_rcm_account_id = fields.Many2one('account.account',string = "Account")
od_rcm_amount = fields.Float(string = "Amount")
od_rcm_ref= fields.Text(string = "Reference")   

@api.multi
def invoice_line_move_line_get(self):
    res = super(Account_Invoice, self).invoice_line_move_line_get()
    rcm_line_dict1 = {
        'name': self.od_rcm_ref or False,
        'price_unit': self.od_rcm_amount or False,
        'quantity': "1",
        'price': self.od_rcm_amount or False,
        'account_id': self.od_rcm_account_id and self.od_rcm_account_id.id or False,
        'invoice_id': self.id,
    }   

    rcm_line_dict2 = {
        'name': self.od_rcm_ref or False,
        'price_unit': -self.od_rcm_amount or False,
        'quantity': "1",
        'price': -self.od_rcm_amount or False,
        'account_id': self.od_rcm_account_id and self.od_rcm_account_id.id or False,
        'invoice_id': self.id,
    }               

    if rcm_line_dict1:
        res.append(rcm_line_dict1)
        res.append(rcm_line_dict2)

    return res