如果多于5行,如何在odoo v12中隐藏发票行

时间:2019-04-13 08:57:33

标签: python cloud odoo

我对一些odoo工作室的个性化有疑问。除非发票行只有3行,否则发票行不应出现在印象中,否则,整个内容应显示在另一个报告中。 我开始创建一个复选框,并将其称为“附件”,并且在发票行下的可见性条件下,它们仅在选中该复选框时才会显示。但是一旦发票行超过3个或其他建议,我需要自动采取措施检查附件。 (我正在使用云版本)

1 个答案:

答案 0 :(得分:0)

由于您尚未提供任何代码,因此我能提供的最好的答案是广泛的答案。

您可能已经做过,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

如果订单行数大于3,则annexe将发出信号。

然后,您需要修改生成发票的报告:

  1. 在调试模式下,转到“设置/技术/报告/报告” 并搜索“型号:sale.order”。
  2. 单击其模板名称为sale.report_saleorder的记录
  3. 单击“ QWeb视图”按钮
  4. 单击其“外部ID”为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')]" 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>