odoo如何使用wizard限定日期范围写出account多科目递归查询的报表请写出一个代码示例
在Odoo中,您可以使用Wizard来限定日期范围,并编写Account多科目递归查询的报表。下面是一个示例代码,演示如何使用Wizard创建报表:
- 创建一个新的Odoo模块,并定义一个新的Wizard模型(例如,
account.wizard.report)。
from odoo import models, fields, api
class AccountWizardReport(models.TransientModel):
_name = 'account.wizard.report'
date_from = fields.Date(string='Start Date', required=True)
date_to = fields.Date(string='End Date', required=True)
def print_report(self):
data = {
'ids': self.ids,
'model': 'account.wizard.report',
'form': {
'date_from': self.date_from,
'date_to': self.date_to,
},
}
return self.env.ref('your_module.report_id').report_action(self, data=data)
- 创建一个报表模型(例如,
account.report)。
from odoo import models, fields
class AccountReport(models.AbstractModel):
_name = 'account.report'
name = fields.Char(string='Name')
def _get_report_values(self, docids, data=None):
date_from = data['form']['date_from']
date_to = data['form']['date_to']
accounts = self.env['account.account'].search([])
report_lines = []
for account in accounts:
lines = self._get_account_lines(account, date_from, date_to)
report_lines.extend(lines)
return {
'doc_ids': docids,
'doc_model': 'account.wizard.report',
'date_from': date_from,
'date_to': date_to,
'lines': report_lines,
}
def _get_account_lines(self, account, date_from, date_to):
# Perform your recursive account query here and return the lines
# Example:
# lines = []
# for child_account in account.child_ids:
# lines.extend(self._get_account_lines(child_account, date_from, date_to))
# return lines
pass
- 创建一个报表视图,并将其与报表模型关联。
<odoo>
<data>
<record id="report_id" model="ir.actions.report">
<field name="name">Account Report</field>
<field name="model">account.wizard.report</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">your_module.report_template</field>
</record>
</data>
</odoo>
- 创建报表模板(
report_template.xml),并在其中使用传递的数据生成报表。
<template id="report_template">
<t t-call="web.html_container">
<t t-foreach="doc.lines" t-as="line">
<div>
<!-- Display the report lines here -->
</div>
</t>
</t>
</template>
这是一个基本的示例,您可以根据需要修改和扩展代码。您可以使用适当的查询语句和逻辑来实现您的递归科目查询,并在报表模板中使用传递的数据来生成报表
原文地址: https://www.cveoy.top/t/topic/hK8Q 著作权归作者所有。请勿转载和采集!