Как скрыть кнопку «Создать счет», но исходя из условия? (Оду 11)

1

там действительно я заблокирован, я хочу скрыть кнопку "Создать счет", но, исходя из условия, мое условие: если в строке заказа есть услуги, кнопка скрыта. Я создал поле и функцию, но в конце всегда возникает ошибка, что поле не существует в модели, вот мой код:

Ошибка :

Поле '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>

Кнопка затем я хочу скрыть это:

<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')]}"/>
  • 0
    Прочитайте документацию или просмотрите учебные сайты, прежде чем задавать простые вопросы.
Теги:
odoo

1 ответ

0

Вы должны отобразить поле на уровне заголовка, чтобы справиться с этим.

Как сделать следующий код, прежде чем ваша кнопка объявлена.

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

И удалите его перед полем partner_id.

  • 0
    Вы уверены, что должны различать верхний и нижний колонтитулы в представлениях формы?
  • 0
    @CZoellner Это будет зависеть от того, где мы используем это поле. Коротко поле должно быть объявлено перед использованием, как в attrs. Не имеет значения между верхним и нижним колонтитулом. У меня есть один модуль, который будет скрывать кнопку в первый раз, а потом она будет видна. Пожалуйста, поправьте меня.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню