OpenERP 7中通過銷售團隊設置來實現客戶信息的管理權限

核心提示:在實際中一個很簡單普通的需求:公司有多個銷售部門,比如收銷售部門一、銷售部門二;銷售部門中有經理和銷售員,公司有總經理;需求:(1)銷售員可以管理自己的客戶,並可以查看和自己相關的客戶信息;(2)銷
在實際中一個很簡單普通的需求:
公司有多個銷售部門,比如收銷售部門一、銷售部門二;銷售部門中有經理和銷售員,公司有總經理;需求:
(1)銷售員可以管理自己的客戶,並可以查看和自己相關的客戶信息;
(2)銷售部門經理可以管理自己的客戶,可以查看和自己相關的客戶信息,同時可以查看本部門銷售員的客戶信息;
(3)總經理可以管理自己的客戶,查看(管理)本公司所有客戶信息
原本的思路是通過OpenERP 7中人力資源模塊,建立起員工(employee)和系統用戶(user)的關聯後,利用人力資源模塊中部門的功能來完成上述需求。但是,發現在用戶對象 中沒有指向員工的關聯(OpenERP 7中,每個employee可以對多個user),因此以我現在對OpenERP 7的一點點了解來說我還不知道如何通過user得到對應員工的部門信息,因此也不知道怎麼寫相應的domain規則;當然,研究了一下源碼後,發現可以在 user對象中加一個department_id的字段,關聯到hr.department中,但是這樣的解決思路顯然超越我目前的狀況。因此還得另找思 路:

經過一番研究,發現可以通過銷售團隊這個設置來控制客戶信息的查看權限控制,因爲users裏有一個default_section_id字段,可以通過建立銷售團隊的類似部門組織的層級結構,來實現上述需求。

上述需求解決了,但是現在依然有兩個問題:
1、直接使用default_section_id問題
比如查看下級銷售團隊客戶信息domain規則可以寫成如下形式
[('user_id.default_section_id','child_of',user.default_section_id)]
這樣寫,系統會提示說:
Iteration is not allowed on browse_record(crm.case.section, 2)
這說明section的層級關係不能通過child_of來查詢?
同樣,如果查看相同銷售團隊客戶信息的domain規則可以寫成如下形式
[('user_id.default_section_id','=',user.default_section_id)]
也會報錯,但是下成如下形式就沒有問題:
[('user_id.default_section_id.name','=',user.default_section_id.name)]
這樣雖然能解決問題,但是總想不明白爲什麼要多這麼一層呢
2、如果不能用child_of的話,就需要寫很多分解的記錄規則,來進行下屬部門的權限控制,如果child_of的性能不好的話,倒也沒什麼,只是增加了一些設置的工作。
另爲:如果使用child_of的條件時,一定要注意,因爲這是遞歸形式,稍不小心就會導致問題(比如無限遞歸資源耗盡)。如果user.default_section_id爲空的話,使用child_of就悲劇了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章