2015-10-05 49 views
3

我已經看到了建立一個新公司的odoo代碼:可以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 

前三行似乎讓新公司使用指定的合作伙伴創建..

這似乎有意省略給定的合作伙伴與新創建的公司(上次退貨前的行)的關聯。

這是一個錯誤還是他們想讓一家公司與另一家公司分享合作伙伴?在哪種情況下這會有用?

回答

4

據我所知,在Odoo 8或更高版本中,不可能在公司之間共享聯繫。許多客戶要求我實施,因爲他們想介紹在幾家公司工作的聯繫人(甚至那些聯繫人是這些公司的主要聯繫人)。

事實上,你可以檢查官方模塊base_contact的行爲來分享公司之間的聯繫。如果你閱讀這個模塊的代碼,你會意識到,他們實際上是爲每個公司創建了幾個聯繫人,然後他們將它們隱藏起來,以便讓用戶只能看到其中的一個。

例如:你創建的公司Odoo命名聯繫人Yucer(此觸點爲standalone類型創建)。然後,您要表明此合作伙伴也適用於公司StackExchange。當您這樣做時,另一個聯繫人(具有相同數據Yucer)存儲在數據庫中,類型爲attached。當您搜索Yucer,你只會看到一個standalone,但如果你檢查OdooStackExchange,你會看到Yucer在兩人面前。他們還修改了res.partner模型(如unlink)的ORM方法,以在刪除主要聯繫人時刪除所有克隆的聯繫人。

相關問題