Как использовать t-if для создания условия в номере строки - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь изменить строку в счете-фактуре отчета в odoo 11, мне нужно условие о количестве строк, сгенерированных отчетом после нажатия на кнопку «Печать», чтобы сделать

<t-if="number_line_in_table== 1">
   <!--DO something..-->
</t>

1 Ответ

0 голосов
/ 24 января 2019

Я не думаю, что вы можете сделать Python-стиль enumerate, но вы можете просто использовать старомодный счетчик, такой как ниже.

<t t-set="counter" t-value="0"/>
<t t-foreach="records" t-as="record">
    <t t-set="counter" t-value="counter + 1"/>
    <t t-if="counter == 1">
        <!-- Do Something. -->
    </t>
</t>

Вот пример , где они делают это в ядре.

Вот документация QWeb для Odoo 12 с дополнительной информацией.


Что касается вашего конкретного примера, вы хотите унаследовать существующее представление, чтобы включить counter внутри существующего элемента t-foreach этого представления.

Соответствующая часть существующего представления

<tr t-foreach="o.order_line" t-as="line">
    <td>
        <span t-field="line.name"/>
    </td>
    <td>
        <span t-esc="', '.join(map(lambda x: x.name, line.taxes_id))"/>
    </td>
    <td class="text-center">
        <span t-field="line.date_planned"/>
    </td>
    <td class="text-right">
        <span t-field="line.product_qty"/>
        <span t-field="line.product_uom.name" groups="product.group_uom"/>
    </td>
    <td class="text-right">
        <span t-field="line.price_unit"/>
    </td>
    <td class="text-right">
        <span t-field="line.price_subtotal"
            t-options='{"widget": "monetary", "display_currency": o.currency_id}'/>
    </td>
</tr>

Как использовать счетчик

Отказ от ответственности: я не делал ничего подобным образом раньше. Это может или не может работать именно так. Если вы не можете заставить его работать через наследование, тогда вы можете replace весь цикл foreach через xpath, если необходимо.

<xpath expr="//tr[@t-foreach='o.order_line']" position="before">
    <t-set="counter" t-value="0"/>
</xpath>
<xpath expr="//tr[@t-foreach='o.order_line']/td[1]" position="before">
    <t-set="counter" t-value="counter + 1"/>
    <t t-if="counter == 1">
        <!-- Do Something. -->
    </t>
</xpath>
...