我正在 account.invoice 模型中创建一个报告(qweb View ),并希望对每个发票行的一些字段进行求和,如下图所示:
问题是没有按照我想要的方式对字段求和。我该怎么办?
cantidad_producto = fields.Integer(string='Cantidad Producto', store=True, readonly=True, compute='cantidad_consolidado')
total_precio_unitario = fields.Monetary(string='Total precio unitario', store=True, readonly=True, compute='cantidad_consolidado')
total_precio_neto = fields.Monetary(string='Total Cantidad Producto', store=True, readonly=True, compute='cantidad_consolidado')
这是我在文件 account.invoice.py 中的计算函数:
@api.one
@api.depends('invoice_line_ids.quantity', 'invoice_line_ids.price_unit', 'invoice_line_ids.price_subtotal')
def cantidad_consolidado(self):
self.cantidad_producto = sum(line.quantity for line in self.invoice_line_ids)
self.total_precio_unitario = sum(line.price_unit for line in self.invoice_line_ids)
self.total_precio_neto = sum(line.price_subtotal for line in self.invoice_line_ids
最后,这是我的 View 代码:
<p>Resumen</p>
<table class="table table-bordered">
<thead>
<tr>
<th class="text-center">Total Cantidad</th>
<th class="text-center">Total Precio Unitario</th>
<th class="text-center">Total Precio(Neto)</th>
</tr>
</thead>
<tbody class="invoice_tbody">
<td class="text-center">
<span t-esc="cantidad_producto" />
</td>
<td class="text-center">
<span t-esc="total_precio_unitario" />
</td>
<td class="text-center">
<span t-esc="total_precio_neto" />
</td>
</tbody>
</table>
为什么不对报告中的字段求和?有人可以告诉我,请帮助我。
您需要定义一个从 report_sxw.rml_parse 类继承的类,在该类中您需要定义 init 方法,您需要在其中添加 方法名称作为localcontext字典的KEY。
class sale_quotation_report(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(sale_quotation_report, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
‘get_total’: self._get_total,
})
def _get_total(self, lines, field):
total = 0.0
for line in lines :
total += line.product_uom_qty or 0.0
return total
还需要定义一个继承自osv.AbstractModel的类
class report_saleorderqweb(osv.AbstractModel):
_name = ‘module_name.report_sale_order_qweb’
_inherit = ‘report.abstract_report’
_template = ‘module_name.report_sale_order_qweb’
_wrapped_report_class = sale_quotation_report
Here,
_name = ‘report.<module_name>.<report_name>’
_inherit = ‘report.abstract_report’
_template = ‘<module_name>.<report_name>’
_wrapped_report_class = <parser_class_name>
最后从模板调用该方法
<t t-foreach=”docs” t-as=”o”>
<span t-esc=”get_total(o.order_line)”/>
</t>
您可以引用Steps to create Qweb report
我是一名优秀的程序员,十分优秀!