odoo qweb报表能不能调用js函数,写个样例
时间: 2024-01-26 07:02:24 浏览: 153
当然可以,以下是一个Odoo QWeb报表示例,其中调用了一个JavaScript函数:
```xml
<template id="report_invoice">
<t t-call="web.report_layout">
<div class="page">
<h1>发票报表</h1>
<table>
<thead>
<tr>
<th>产品名称</th>
<th>数量</th>
<th>单价</th>
<th>总价</th>
</tr>
</thead>
<tbody>
<t t-foreach="docs" t-as="doc">
<tr>
<td><t t-esc="doc.product_name"/></td>
<td><t t-esc="doc.quantity"/></td>
<td><t t-esc="doc.unit_price"/></td>
<td><t t-esc="doc.total_price"/></td>
</tr>
</t>
</tbody>
<tfoot>
<tr>
<td colspan="3">总计:</td>
<td><span id="total"></span></td>
</tr>
</tfoot>
</table>
</div>
</t>
<script type="text/javascript">
function calculateTotal() {
var total = 0;
$('tbody tr').each(function() {
var price = parseFloat($(this).find('td:nth-child(3)').text());
var quantity = parseFloat($(this).find('td:nth-child(2)').text());
var subtotal = price * quantity;
$(this).find('td:nth-child(4)').text(subtotal.toFixed(2));
total += subtotal;
});
$('#total').text(total.toFixed(2));
}
$(document).ready(function() {
calculateTotal();
});
</script>
</template>
```
在这个例子中,我们定义了一个名为`calculateTotal()`的JavaScript函数,它的作用和之前的例子一样,用于计算每个产品的总价和总计金额。我们在QWeb模板中使用`$(document).ready()`函数来确保页面加载完成后调用`calculateTotal()`函数,从而实现对JavaScript函数的调用。
阅读全文