Browse Source

[IMP] mis_builder: pdf export embryo (working but not styled yet)

pull/86/head
Stéphane Bidoul 9 years ago
parent
commit
cf975bd822
  1. 1
      mis_builder/__openerp__.py
  2. 2
      mis_builder/models/mis_builder.py
  3. 1
      mis_builder/report/__init__.py
  4. 50
      mis_builder/report/report_mis_report_instance.py
  5. 55
      mis_builder/report/report_mis_report_instance.xml
  6. 13
      mis_builder/views/mis_builder.xml

1
mis_builder/__openerp__.py

@ -39,6 +39,7 @@
'views/mis_builder.xml',
'security/ir.model.access.csv',
'security/mis_builder_security.xml',
'report/report_mis_report_instance.xml',
],
'test': [
],

2
mis_builder/models/mis_builder.py

@ -28,6 +28,7 @@ import re
import traceback
import pytz
from openerp import api
from openerp.api import Environment
from openerp.osv import orm, fields
from openerp import tools
@ -711,6 +712,7 @@ class mis_report_instance(orm.Model):
'target': 'new',
}
@api.cr_uid_id_context
def compute(self, cr, uid, _id, context=None):
assert isinstance(_id, (int, long))
if context is None:

1
mis_builder/report/__init__.py

@ -23,3 +23,4 @@
##############################################################################
from . import mis_builder_xls
from . import report_mis_report_instance

50
mis_builder/report/report_mis_report_instance.py

@ -0,0 +1,50 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# mis_builder module for Odoo, Management Information System Builder
# Copyright (C) 2014-2015 ACSONE SA/NV (<http://acsone.eu>)
#
# This file is a part of mis_builder
#
# mis_builder is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License v3 or later
# as published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# mis_builder is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License v3 or later for more details.
#
# You should have received a copy of the GNU Affero General Public License
# v3 or later along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import logging
from openerp import api, models
_logger = logging.getLogger(__name__)
class ReportMisReportInstance(models.AbstractModel):
_name = 'report.mis_builder.report_mis_report_instance'
@api.multi
def render_html(self, data=None):
docs = self.env['mis.report.instance'].browse(self._ids)
docs_computed = {}
for doc in docs:
docs_computed[doc.id] = doc.compute()[0]
_logger.info("%s", docs_computed)
docargs = {
'doc_ids': self._ids,
'doc_model': 'mis.report.instance',
'docs': docs,
'docs_computed': docs_computed,
}
return self.env['report'].\
render('mis_builder.report_mis_report_instance', docargs)

55
mis_builder/report/report_mis_report_instance.xml

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<template id="report_mis_report_instance">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="report.external_layout">
<div class="page">
<h2 t-field="o.name"></h2>
<table>
<thead>
<tr>
<t t-foreach="docs_computed[o.id]['header']" t-as="h">
<th>
<div>
<t t-esc="h_value['kpi_name']"/>
</div>
</th>
<th t-foreach="h_value['cols']" t-as="col">
<div>
<t t-esc="col['name']"/>
</div>
<div>
<t t-esc="col['date']"/>
</div>
</th>
</t>
</tr>
</thead>
<tbody>
<tr t-foreach="docs_computed[o.id]['content']" t-as="c">
<td t-att-style="c_value['default_style']">
<div>
<t t-esc="c_value['kpi_name']"/>
</div>
</td>
<t t-foreach="c_value['cols']" t-as="value">
<td t-att-style="c_value['default_style']">
<div t-att-style="value_value.get('style')">
<t t-esc="value_value['val_r']"/>
</div>
</td>
</t>
</tr>
</tbody>
</table>
</div>
</t>
</t>
</t>
</template>
</data>
</openerp>

13
mis_builder/views/mis_builder.xml

@ -100,7 +100,7 @@
<menuitem id="mis_report_view_menu" parent="account.menu_account_reports" name="MIS Report Templates" action="mis_report_view_action" sequence="21"/>
<record id="xls_export" model="ir.actions.report.xml">
<field name="name">Export report instance result</field>
<field name="name">MIS report instance XLS report</field>
<field name="model">mis.report.instance</field>
<field name="type">ir.actions.report.xml</field>
<field name="report_name">mis.report.instance.xls</field>
@ -108,6 +108,15 @@
<field name="auto" eval="False"/>
</record>
<record id="qweb_pdf_export" model="ir.actions.report.xml">
<field name="name">MIS report instance QWEB PDF report</field>
<field name="model">mis.report.instance</field>
<field name="type">ir.actions.report.xml</field>
<field name="report_name">mis_builder.report_mis_report_instance</field>
<field name="report_type">qweb-pdf</field>
<field name="auto" eval="False"/>
</record>
<record model="ir.ui.view" id="mis_report_instance_result_view_form">
<field name="name">mis.report.instance.result.view.form</field>
<field name="model">mis.report.instance</field>
@ -115,6 +124,7 @@
<field name="arch" type="xml">
<form string="MIS Report Result" version="7.0">
<widget type="mis_report"></widget>
<button icon="gtk-print" name="%(qweb_pdf_export)d" string="Print" type="action" colspan="2"/>
<button icon="gtk-execute" name="%(xls_export)d" string="XLS Export" type="action" colspan="2"/>
</form>
</field>
@ -152,6 +162,7 @@
</div>
<div class="oe_right oe_button_box" name="buttons">
<button type="object" name="preview" string="Preview" icon="gtk-print-preview" />
<button type="action" name="%(qweb_pdf_export)d" string="Print" icon="gtk-print" />
<button type="action" name="%(xls_export)d" string="XLS Export" icon="gtk-execute" />
<button type="action" name="%(mis_report_instance_add_to_dashboard_action)d" string="Add to dashboard" icon="gtk-add" />
</div>

Loading…
Cancel
Save