odoo公​​司可以共享同一个合作伙伴吗?在哪些场景下?

Can odoo companies share the same partner ? In which scenarios?

我看过创建新公司的odoo代码:

def create(self, cr, uid, vals, context=None):
    if not vals.get('name', False) or vals.get('partner_id', False):
        self.cache_restart(cr)
        return super(res_company, self).create(cr, uid, vals, context=context)
    obj_partner = self.pool.get('res.partner')
    partner_id = obj_partner.create(cr, uid, {'name': vals['name'], 'is_company':True, 'image': vals.get('logo', False)}, context=context)
    vals.update({'partner_id': partner_id})
    self.cache_restart(cr)
    company_id = super(res_company, self).create(cr, uid, vals, context=context)
    obj_partner.write(cr, uid, [partner_id], {'company_id': company_id}, context=context)
    return company_id

前三行似乎允许使用指定的合作伙伴创建新公司..

这似乎有意省略了给定合作伙伴与新创建公司的关联(最后 return 之前的行)。

这是一个错误还是他们想让一家公司与另一家公司共享合作伙伴?这在哪些情况下会有用?

据我所知,在 Odoo 8 或更早版本中,无法在公司之间共享联系人。很多客户要求我实现,因为他们想介绍在几个公司工作的联系人(甚至那些联系人是那些公司的主要联系人)。

事实上,您可以查看官方模块base_contact 的行为以在公司之间共享联系人。如果你读过这个模块的代码,你会发现实际上他们为每个公司创建了几个联系人,然后他们隐藏它们以使用户只能看到其中一个。

示例:您在Odoo公司创建了一个名为Yucer的联系人(此联系人将被创建为standalone类型).然后,您想表明此合作伙伴也为公司 StackExchange 工作。当您执行此操作时,另一个联系人(具有与 Yucer 相同的数据)将存储在数据库中,类型为 attached。当你搜索 Yucer 时,你只会看到 standalone 一个,但是如果你检查 OdooStackExchange ,你会在两者中看到鱼策。他们还修改了 res.partner 模型的 ORM 方法,例如 unlink,以在删除主要联系人时删除所有克隆的联系人。