Files
gzth/reportbro/models/datasource.py
T
2024-05-28 20:05:16 +08:00

62 lines
2.3 KiB
Python

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