向 Odoo 12 中的特定组显示共享按钮

Show the share button to a specific group in Odoo 12

如果用户有一个特定的组,我正在尝试显示一个共享按钮,该按钮似乎是一个启动 ir.actions.act_window[=13 的操作=]

我尝试使用名称通过 XPath 找到它,但似乎由于按钮的性质,名称会根据环境而变化(在其他环境中名称可能会有所不同,例如 123 或 124 等等)

该按钮使用以下操作外部 ID portal.portal_share_action

启动一个 window 操作

我尝试在 XML 文件中使用引用操作 ID 的组属性,该文件是我构建的自定义项目模块的一部分,代码如下:

<record model="ir.actions.act_window" id="portal.portal_share_action">
    <field name="groups" eval="[(6,0,[ref('rw_project.group_project_rw_base_user')])]"/>
</record>

即使用户没有分配组,该按钮仍会显示

编辑:

按钮位于项目表单中,xml如下:

<header>
    <button name="132" string="Share" type="action" class="oe_highlight oe_read_only"/>
</header>

因为你说:

names can vary to be like 123 or 124 and so on

我想您尝试覆盖客户发票中的 Add credit note 这样的按钮:

<button name="%(action_account_invoice_refund)d" type='action' string='Add Credit Note' groups="account.group_account_invoice" attrs="{'invisible': ['|',('type', '=', 'out_refund'), ('state', 'not in', ('open','in_payment','paid'))]}"/>

这是一个动作类型的按钮,要覆盖它,您可以使用它的名称,但使用外部 ID(添加模块名称)。

示例:

<record id="invoice_form" model="ir.ui.view">
    <field name="name">account.invoice.form</field>
    <field name="model">account.invoice</field>
    <field name="inherit_id" ref="account.invoice_form"/>
    <field name="arch" type="xml">
        <button name='%(account.action_account_invoice_refund)d' position="attributes">
            <attribute name="groups"></attribute>
        </button>
    </field>
</record>  

如果您尝试设置允许 view/use 共享文档操作的群组,您需要使用 groups_id 字段。他们使用购买模块中的 groups_id 字段来限制对购买用户的访问,如下所示:

<field name="groups_id" eval="[(4, ref('purchase.group_purchase_user'))]"/>

如果您尝试覆盖的共享按钮是 drop-down 按钮,例如销售订单、采购订单或发票中的所有服务器操作,则没有可用的选项来限制对组的访问,但是您可以在 ir.actions.server 模型中添加 groups_id 字段,然后将其用于 XML 定义。

要实现你可以查看我之前的回答,How to give user groups(XML) in the model ir.actions.server Odoo 12?

编辑:覆盖项目表单中的共享按钮操作 header

<record id="edit_project" model="ir.ui.view">
    <field name="name">project.project.form</field>
    <field name="model">project.project</field>
    <field name="inherit_id" ref="project.edit_project"/>
    <field name="arch" type="xml">
        <button name="%(portal.portal_share_action)d" position="attributes">
            <attribute name="groups">[Group external identifier]</attribute>
        </button>
    </field>
</record>