Поскольку вы еще не предоставили ни одного кода, лучшее, что я могу предложить, - это широкий ответ.
Как вы, вероятно, и сделали, поле annexe
имеет следующие атрибуты: computed=_compute_count_order_lines, store=True, readonly=True
, и у вас естьТакже объявлена функция типа:
@api.depends('order_line')
def _compute_count_order_lines(self):
for order in self:
order.annexe = len(order.order_line.filtered(lambda x: x.state != 'cancel')) > 3
Таким образом, annexe
будет сигнализировать, если количество строк заказа больше 3.
Затем вам нужно изменить отчет, из которого выставлен счетсгенерировано:
- В режиме отладки перейдите в «Настройки / Техника / Отчеты / Отчеты» и найдите «Модель:
sale.order
». - Нажмите на запись, для которой ее имя шаблона
sale.report_saleorder
- Нажмите на кнопку «QWeb Views»
- Нажмите на запись, для которой ее «Внешний ID»это
sale.report_saleorder_document
- Ищите
<table class="table table-sm o_main_table">
это таблица со строками заказа.Возможно, вы захотите скопировать код внутри этого тега Вернитесь в «QWeb Views», создайте представление, которое наследует sale.report_saleorder_document
, а его поле arch
содержит что-то вроде:
<xpath expr="//table[hasclass('o_main_table')]" position="replace">
<t t-if="doc.annexe">
<!-- Code for more than 3 items -->
</t> <t t-else>
<table class="table table-sm o_main_table">
<!-- Code for 3 items or less -->
</table>
</t>
</xpath>