问题描述
我创建了一个表来存储一些产品信息
我需要在树形视图、表单视图中显示产品视图。但问题是向所有公司用户展示的产品。我只想向公司用户展示产品。但它也会向其他公司用户显示。
模型
class RiceProcurement(models.Model):
_name = 'rice.procurement'
_description = 'Rice procurement quantity manage table'
product_select = fields.Many2one('product.template',String='Subsidised Rice',required=True,domain="[('item_type','=','rice'),"
"('subsidy_type_purchase','subsidised'),('uom_id',3)]")
product_qty = fields.Float(string='Quantity (in Kg)',digits='Product Unit of Measure',required=True)
company_id = fields.Many2one('res.company',string='Company',default=lambda self: self.env.user.company_id.id)
supplier_id = fields.Many2one('res.partner',string='supplier',required=True)
date_approve = fields.Datetime('Confirmation Date',default=lambda self: fields.Datetime.Now(),index=True,copy=False)
树状视图
<record id="rice_procurement_tree_view" model="ir.ui.view">
<field name="name">rice.procurement.tree.view</field>
<field name="model">rice.procurement</field>
<field name="arch" type="xml">
<tree string="Rice Procurement" import="0">
<field name="product_select" domain="[('company_id',company_id)]"/>
<field name="date_approve" string="Date"/>
<field name="product_qty" sum="Total Quantity"/>
<field name="company_id" invisible="1"/>
</tree>
</field>
</record>
ir.act.Window
<record id="rice_procurement_action" model="ir.actions.act_window">
<field name="name">Rice procurement</field>
<field name="res_model">rice.procurement</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list</field>
<field name="domain">[('company_id',company_id)]</field>
</record>
解决方法
Odoo 添加的记录规则已经存在。进入设置 -> 常规设置,然后在多公司中向下滚动可以看到两个选项,一个是通用通讯录,另一个是通用产品目录。
默认情况下,这两个布尔字段将被勾选,在您的情况下,您可以取消勾选通用产品目录。
取消选中此项后,将在设置 -> 技术 -> 安全 -> 记录规则中看到名为 Product multi-company 的记录规则,该规则最初设置为 False。
查看此文件中的 rule:
,最后我在我的模块中创建了一个角色,现在它可以工作了
在安全文件夹内创建了一个自定义角色文件来解决问题
<record id="rice_procurement_company_rule" model="ir.rule">
<field name="name">Rice Procurement</field>
<field ref="model_rice_procurement" name="model_id"/>
<field name="domain_force">[('company_id','in',company_ids)]</field>
<field name="global" eval="True"/>
</record>