Odoo If заявление с категорией - PullRequest
0 голосов
/ 01 октября 2018

Привет! Я использую Odoo10, и у меня есть некоторые продукты, отнесенные к категориям.На моем экране заказа на продажу у меня есть 2 поля выбора, одна из которых - Carpet, а другая - Flooring.Ниже приведен мой код для отображения определенных полей

@api.onchange('squarebox')
    def _onchange_default_code(self):
      if self.flooring2:
        self.boxes = (self.squaremtr) / (self.squarebox or 1)
        self.squaremtrsold = (self.squarebox or 1) * (self.suggestbox)

Вместо использования поля выбора мне было интересно, можно ли сделать оператор IF на основе категории, в которой находится продукт. Поэтому вместо if self.flooring2: что-токак

, если self.productid находится в категории Ковер:

Ответы [ 2 ]

0 голосов
/ 02 октября 2018
  • Сначала добавьте эти две категории в мастер категорий, затем выберите эту внутреннюю категорию в требуемом продукте.

Ваш XML-файл:

<record id="category_flooring" model="product.category">
    <field name="name">Flooring</field>
    <field name="type">normal</field>
    <field name="property_cost_method">standard</field>
    <field name="property_valuation">manual_periodic</field>
</record>
<record id="category_carpet" model="product.category">
    <field name="name">Carpet</field>
    <field name="type">normal</field>
    <field name="property_cost_method">standard</field>
    <field name="property_valuation">manual_periodic</field>
</record>
  • Теперь ваш код Python выглядит так: -
@api.onchange('product_id')
    def _onchange_default_code(self):
        if self.product_id.categ_id.id == self.env.ref('your_module_name.category_flooring').id:
            #  Your code belongs to flooring category
        elif self.product_id.categ_id.id == self.env.ref('your_module_name.category_carpet').id:
            #  Your code belongs to carpet category
0 голосов
/ 02 октября 2018

Если я правильно понимаю, вы хотите показать или скрыть некоторые поля в зависимости от значений из других полей той же записи.

Для этого используйте атрибут invisible в определении представления формы, а не функцию python.Я бы использовал функцию python, украшенную @api.onchange, чтобы вычислить другие значения, которые зависят от squarebox.

. См., Например, addons / sale / views / sale_views.xml вокруг строки 227:

<field name="validity_date" attrs="{'invisible': [('state', 'in', ['sale', 'done'])]}"/>

Строка выше переводит на простой английский язык как: Показать поле validity_date, кроме случаев, когда поле state либо распродано, либо готово.

...