为了账号安全,请及时绑定邮箱和手机立即绑定

如何隐藏按钮“创建发票”但基于条件?(Odoo 11)

如何隐藏按钮“创建发票”但基于条件?(Odoo 11)

翻阅古今 2022-01-05 13:16:28
我真的被阻止了,我想隐藏“创建发票”按钮,但根据条件,我的条件是,如果订单行有服务,则隐藏按钮。我创建了一个字段和一个函数,但最后总是出现模型中不存在该字段的错误,这是我的代码:错误 :属性中使用的字段“hide_invoice”必须存在于视图中但缺失我的领域和功能(Python):from odoo import api, fields, models,_class SaleOrder(models.Model):    _inherit = 'sale.order'    hide_invoice = fields.Boolean(compute="_hide_button_invoice", string="",)    @api.multi    @api.depends('tasks_count')    def _hide_button_invoice(self):        for order in self:            if order.tasks_count > 0:                order.hide_invoice = True            elif order.tasks_count == 0:                order.hide_invoice = False 我的 XML(我在表单上看到它有效):<odoo><record id="button_invoice_view_form" model="ir.ui.view">        <field name="name">sale.order.button.create.form</field>        <field name="model">sale.order</field>        <field name="inherit_id" ref="sale.view_order_form"/>        <field name="arch" type="xml">            <xpath expr="//field[@name='partner_id']" position="before">                <field name ="hide_invoice"/>            </xpath>        </field></record></odoo>然后我想隐藏按钮:<record id="sale_order_view_form" model="ir.ui.view">    <field name="name">sale.order.form</field>    <field name="model">sale.order</field>    <field name="inherit_id" ref="sale.view_order_form"/>    <field name="arch" type="xml">        <xpath expr="//group[@name='sale_pay']/field[@name='invoice_status']" position="attributes">            <attribute name="invisible" eval="False"/>        </xpath>        </xpath>    </field></record>
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

您必须在标题级别显示字段来处理这些。


就像在声明按钮之前执行以下代码一样。


<field name='hide_invoice' invisible='1'/>

并将其删除在 partner_id 字段之前。


编辑


您可以尝试使用以下 xml 代码:


<record id="sale_order_view_form" model="ir.ui.view">

    <field name="name">sale.order.form</field>

    <field name="model">sale.order</field>

    <field name="inherit_id" ref="sale.view_order_form"/>

    <field name="arch" type="xml">

        <xpath expr="//group[@name='sale_pay']/field[@name='invoice_status']" position="attributes">

            <attribute name="invisible" eval="False"/>

        </xpath>

        <xpath expr="//button[@name='action_quotation_send']" position="before">

            <button name="%(sale.action_view_sale_advance_payment_inv)d" string="Create Invoice"

                type="action" class="btn-primary"

                attrs="{'invisible': [('invoice_status', '!=', 'to invoice')]}"/>

            <field name="hide_invoice" invisible="1"/>

            <button name="%(sale.action_view_sale_advance_payment_inv)d" string="Create Invoice"

                type="action" context="{'default_advance_payment_method': 'percentage'}"

                attrs="{'invisible': ['|','|',('hide_invoice', '=', True),('invoice_status', '!=', 'no'), ('state', '!=', 'sale')]}"/>

        </xpath>

    </field>

</record>


查看完整回答
反对 回复 2022-01-05
  • 1 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信