Как скрыть строку счета в odoo v12, если в ней более 5 строк

#python #cloud #odoo

#python #облако #odoo

Вопрос:

у меня проблема с некоторой оптимизацией odoo studio. Строка накладной не должна отображаться в показе, если в ней не всего 3 строки, для большего количества все содержимое должно отображаться в другой версии. я начал создавать флажок и назвал его «Приложением», а в условии видимости под строками счетов они будут отображаться только в том случае, если флажок установлен. но мне нужно автоматическое действие для проверки приложения, если строк счетов больше 3, или любое другое предложение. (я использую облачную версию)

Комментарии:

1. Добро пожаловать в Stackoverflow. Не могли бы вы обновить свой вопрос с помощью кода попытки, текущего вывода и ожидаемого вывода?

Ответ №1:

Поскольку вы еще не предоставили никакого кода, лучшее, что я могу предложить, — это общий ответ.

Как вы, вероятно, уже сделали, 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.

Затем вам нужно изменить отчет, из которого генерируется счет:

  1. В режиме отладки перейдите в «Настройки / Технические / Отчеты / Отчеты» и найдите «Модель: sale.order «.
  2. Щелкните запись, для которой ее имя шаблона sale.report_saleorder
  3. Нажмите на кнопку «QWeb Views»
  4. Щелкните запись, для которой ее «Внешний идентификатор» равен sale.report_saleorder_document
  5. Посмотрите <table class="table table-sm o_main_table"> , что это таблица со строками заказа. Возможно, вы захотите скопировать код внутри этого тега
  6. Вернитесь к «представлениям QWeb», создайте представление, которое наследует sale.report_saleorder_document , и его arch поле содержит что-то вроде:

    <xpath expr="//table[hasclass('o_main_table')]" позиция="заменить">
     <t t-if="doc.annexe">
     <!-- Code for more than 3 items -->
     </t> <t t-else>
     <класс таблицы="таблица таблицы-sm o_main_table">
     <!-- Code for 3 items or less --> 
     </table>
     </t>
    </xpath>