이전 답변을 살펴보면 모델에 대한 사용자 지정 보고서 정의 방법을 알 수 있습니다. 중요한 부분은 보고서 개체를 찾아서 렌더링 메서드를 호출한다는 것입니다. 다음으로 가장 중요한 부분은 전달하려는 인수를 전달하는 것입니다.
이 작업을 완료하면 qweb 보고서의 키 이름으로 해당 값에 액세스 할 수 있습니다. 새로운 개념의 Odoo 개발자를 위해 많은 컨셉과 컨텍스트가 있고 그보다 더한 부분이 있음을 이해합니다. 나는 그 예를 제시하려고 노력할 것이다. 가능한 한 간단하게 유지하도록 최선을 다하십시오. 기분이 좋아지면 처음으로 맞춤 보고서로이 작업을 시도하면서 오후의 더 좋은 부분을 보냈습니다.
보고서에 대한 AbstractModel 클래스를 정의해야합니다. 이 파일은 __init__.py
에 포함 된 .py
파일입니다. 처음에는 제대로 작동하지 않는 한 어떤 일이 벌어지고 있는지를보기 위해 로깅을 원할 것입니다.
아니예요.
import logging
_logger = logging.getLogger(__name__)
class YourReport(models.AbstractModel):
_name = 'report.your_addon.report_template_id'
@api.multi
def render_html(self, data=None):
_logger.info("RUNNING REPORT")
report_obj = self.env['report']
report = report_obj._get_report_from_name('your_addon.report_template_id')
docs = self.env['your_addon.your_model'].search([('something','=','something')])
docargs = {
'doc_model': report.model,
'docs': docs,
}
return report_obj.render('your_addon.report_template_id', docargs)
위의 클래스에서 우리는 render_html
메서드를 무효화합니다. 보고서 모델 방법 _get_report_from_name
은 명명 된 보고서에 대한 보고서 개체를 반환하는 메서드 일뿐입니다. 보고서의 찾아보기 개체를 반환하는 odoo orm
으로 바꿀 수 있습니다.
그런 다음 보고서의 XML 정의를 만들어야합니다.
<openerp>
<data>
<report
id="report_template_id"
model="your_addon.model"
string="Report Title"
name="your_addon.report_template_view"
file="your_addon.report_template"
report_type="qweb-pdf"/>
<template id="report_template_view">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="doc">
<t>
<div class="page">
<t t-esc="doc.field_name"/>
</div>
</t>
</t>
</t>
</template>
</data>
</openerp>
당신이 당신의 보고서에 대한 render_html 함수가 호출됩니다 보고서 액션을 반환하는 방법을 실행하는 모든 모델의 형태로보기에서 버튼을 생성합니다.
@api.multi
def print_report(self):
return {
'type' : 'ir.actions.report',
'report_name': 'report_template_id'
'datas': {
'ids': [ self.id ],
'model': 'your_addon.your_model'
}
}
내 기존 대답을 살펴보십시오. 필요한 정보가있을 수 있습니다. http://stackoverflow.com/questions/40290627/custom-report-through-python-odoo-9/40291820#40291820 –
@PhillipStack 재생 해 주셔서 감사합니다. 예에서는보기 (필드 있음) 및 통화 방법이 표시되지 않습니다. render_html –
보고서를 올바르게 등록하면 Odoo가 해당 방법을 호출합니다. 더 많은 드롭 다운을 사용하여 보고서를 호출하려고합니까? 나는 지금 너를 위해 대답을 넓히고있다. 잠시만 요. –