62 lines
2.3 KiB
Python
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
|
|
|