看一下partner这个表, 客户和供应商,都用这个表,那怎么区分呢:
供应商:
客户
注意这两个里面用domain来进行区分:
<field name="domain">[('s_category_id','!=',False)]</field>
<field name="domain">[('c_category_id','!=',False)]</field>
表相同,出来的结果不同。当然,这两个domain的字段不同,这样就能达到一个partner既是客户又是供应商的目的,当然,也方便其它操作,比如追踪买了多少单,卖了多少产品等等操作
然后,从不同的菜单或button里指定不同的action来调用不同的act_window吧:
<menuitemid='buy_vendor_menu'action='core.vendor_action'name="供应商"parent='menu_buy_master'sequence='10'/>
这样进入了vendor_action 对应的tree里,再点明细,进到form里
<menuitemid='sell_customer_menu'action='core.customer_action'name="客户"parent='menu_sell_master'sequence='10'/>
这样进入了customer_action对应的tree,form里
......
注:
(1)从many2one过来时可能会乱
(2)odoo视图窗口action id加载有优先级的顺序,如果菜单1中的form1和tree1引用了模型test,做了视图绑定,那么菜单2中的form2和tree2也要做相应的视图绑定,否则,启动服务后,前台界面加载的可能不是你需要显示的视图。
(3)这种写法虽然可以实现不同的窗口显示不同的菜单公用一个模型,但是,有一个地方需要注意,如果两个窗口菜单都使用了odoo的消息机制,那么当对其中的某个菜单进行操作的时候,给某位关注者发送了消息提醒,当该关注着用户登陆系统后,首先会受到消息提醒,在消息内容中,有时会携带相应的单号,当你点击单号跳转的时候可能会出现,系统不知道跳转到那个界面视图的情况。(这块需要小伙伴们仔细想一下。。。)
总结:
来自:http://note.youdao.com/share/?id=ed6f7d028c5bd5390796242ff527dd72&type=note#/