取消链接 Odoo 日记条目

Unlink Odoo Journal Entries

我正在继承 account.move 模块,以便我可以删除日记条目。 问题是,当我重写原始代码时,出现最大递归深度错误: 原始代码如下所示:

 def unlink(self):
        for move in self:
            if move.name != '/' and not self._context.get('force_delete'):
                raise UserError(_("You cannot delete an entry which has been posted once."))
            move.line_ids.unlink()
        return super(AccountMove, self).unlink()

虽然这是我的分机

 def unlink(self):
        for move in self:
            move.line_ids.unlink()
        return super(AccountMove, self).unlink()

谢谢!

 def unlink(self):
        for move in self:
            move.line_ids.unlink()
        return models.Model.unlink(self)

如果你想绕过安全检查,那么你必须直接调用基础模型。

snippetbucket 团队的 Odoo 14 版本代码解决方案。通过 RPC 调用以及内部传递的相同上下文以删除 account.move 相关记录

    move2 = odoo2.env['account.move']
    _moves = move2.search_read([  ('state', '=', 'cancel'), ], ['id'], limit=1000)
    print( len(_moves), "total moves" )
    move2.with_context({'force_delete': True}).unlink([ x['id'] for x in _moves ])

使用 .with_context({'force_delete': True}) 上下文,您可以从 ODOO 14.x 版本和未来版本中删除日记帐分录和发票。

注意:account.invoice 在 odoo 14 版本中替换为 account.move。