import decimal, json, requests, os, uuid from odoo import models,fields from odoo.exceptions import UserError from PyPDF2 import PdfFileWriter, PdfFileReader class report_designer(models.Model): _name = 'report.designer' _description = 'report id' name=fields.Char('name') class wms_datasource(models.TransientModel): _name = 'wms.datasource' _description = '报表数据源' ''' 各个报表的数据源,集中写在这里 ''' def get_data(self,report_id,data_id,d_main,d_details,m_key): ''' 自动获取数据源 :param report_id: :param data_id: :param d_main: :param d_details: :param m_key: :return: ''' report_report=self.env['report.report'].sudo().browse(report_id) report_report_main=self.env['report.report.main'].sudo().search([('report_main_id','=',report_report.id),('is_report','=',True)]) #order_id = 0 res_detail = [] # 行序号 可以单独控制生成样式 index = 1 if d_details: report_report_detail = self.env['report.report.detail'].sudo().search([('report_detail_id', '=', report_report.id), ('is_report', '=', True)]) data_line = self.env[d_details].sudo().search([(m_key, 'in', data_id)]) for s in data_line: s_detail = {} s_detail['index'] = str(index) for report_detail in report_report_detail: if report_detail.is_report: s_detail[report_detail.field_params] = str(eval(report_detail.field_value)) res_detail.append(s_detail) index += 1 order_id = int(eval('s.' + m_key + '.id')) else: order_id = int(data_id[0]) # 主表 p_main = self.env[d_main].sudo().browse(order_id) data={} for s in p_main: for report_main in report_report_main: if report_main.is_report: data[report_main.field_params]=str(eval(report_main.field_value)) data['res_detail'] = res_detail return data