在Odoo中,您可以使用Wizard来限定日期范围,并编写Account多科目递归查询的报表。下面是一个示例代码,演示如何使用Wizard创建报表:

  1. 创建一个新的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)
  1. 创建一个报表模型(例如,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
  1. 创建一个报表视图,并将其与报表模型关联。
<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>
  1. 创建报表模板(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>

这是一个基本的示例,您可以根据需要修改和扩展代码。您可以使用适当的查询语句和逻辑来实现您的递归科目查询,并在报表模板中使用传递的数据来生成报表

odoo如何使用wizard限定日期范围写出account多科目递归查询的报表请写出一个代码示例

原文地址: https://www.cveoy.top/t/topic/hK8Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录