odoo 14 multi company - 在 account.move 上更改 company_id

问题描述

我的 odoo 环境中有一个多公司设置,我正在尝试制作一个模块,该模块允许将草稿发票移至其他可用公司,但是在设置新 company_id 时出现错误。 我的代码

self.company_id = company_ids.filtered(lambda x: x.id != self.id)[0].id

错误

 Incompatible companies on records:
- 'S00007' belongs to company 'Sale Comp 1' and 'Fiscal Position' (fiscal_position_id: 'Some position') belongs to another company.
- 'S00007' belongs to company 'Sale Comp 1' and 'Warehouse' (warehouse_id: 'Sale Company 2') belongs to another company.

有关如何实现这一目标的任何帮助或想法都会很棒。 谢谢

解决方法

account.move 与其他模型通过财政位置 ID 和仓库 ID 字段关联。

可能的解决方案: 为财务头寸和仓库创建新记录,对于这些记录,您必须设置要放入帐户的公司。移动。 之后,在 account.move 模型中,您必须重新定义 write 方法:

def write(self,vals):
    if 'company_id' in vals:
        company = self.env['res.company].search([('id','=',int(vals.get('company_id'))])
        vals['fiscal_position_id'] = YOUR_NEW_FISCAL_POSITION_ID
        vals['warehouse_id'] = YOUR_NEW_WAREHOUSE_ID
    res = super(AccountMove,self).write(vals)
    return res