Odoo11 - No puedo generar un reporte desde un wizard

850 views
Skip to first unread message

Andrés Pedro Gonzales Rojas

unread,
Aug 4, 2018, 12:05:22 AM8/4/18
to Usuarios Odoo / OpenERP en España
Hola estoy intentando generar un reporte desde un wizard pero obtengo el siguiente error:

Traceback (most recent call last):
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_qweb\qweb.py", line 342, in _compiled_fn
   
return compiled(self, append, new, options, log)
 
File "<template>", line 1, in template_857_61
 
File "<template>", line 2, in body_call_content_60
 
File "<template>", line 3, in body_call_content_59
TypeError: 'NoneType' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\web\controllers\main.py", line 1621, in report_download
    response
= self.report_routes(reportname, converter='pdf', **dict(data))
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 515, in response_wrap
    response
= f(*args, **kw)
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\web\controllers\main.py", line 1566, in report_routes
    pdf
= report.with_context(context).render_qweb_pdf(docids, data=data)[0]
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_actions_report.py", line 628, in render_qweb_pdf
    html
= self.with_context(context).render_qweb_html(res_ids, data=data)[0]
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_actions_report.py", line 666, in render_qweb_html
   
return self.render_template(self.report_name, data), 'html'
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_actions_report.py", line 470, in render_template
   
return view_obj.render_template(template, values)
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 1195, in render_template
   
return self.browse(self.get_view_id(template)).render(values, engine)
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\web_editor\models\ir_ui_view.py", line 27, in render
   
return super(IrUiView, self).render(values=values, engine=engine)
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 1204, in render
   
return self.env[engine].render(self.id, qcontext)
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_qweb\ir_qweb.py", line 57, in render
   
return super(IrQWeb, self).render(id_or_xml_id, values=values, **context)
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_qweb\qweb.py", line 271, in render
   
self.compile(template, options)(self, body.append, values or {})
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_qweb\qweb.py", line 349, in _compiled_fn
   
raise QWebException("Error to render compiling AST", e, path, node and etree.tostring(node[0], encoding='unicode'), name)
odoo
.addons.base.ir.ir_qweb.qweb.QWebException: 'NoneType' object is not subscriptable
Traceback (most recent call last):
 
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_qweb\qweb.py", line 342, in _compiled_fn
   
return compiled(self, append, new, options, log)
 
File "<template>", line 1, in template_857_61
 
File "<template>", line 2, in body_call_content_60
 
File "<template>", line 3, in body_call_content_59
TypeError: 'NoneType' object is not subscriptable

Error to render compiling AST
TypeError: 'NoneType' object is not subscriptable
Template: 857
Path: /templates/t/t/t/div/p
Node: <p t-esc="data['titulo']"/>

Este es mi modelo con el reporte:

class hr_generate_boleta_general_wizard(models.TransientModel):

_name = 'hr.generate.boleta.general.wizard'

month = fields.Selection([(1,'Enero'),
(2,'Febrero'),
(3,'Marzo'),
(4,'Abril'),
(5,'Mayo'),
(6,'Junio'),
(7,'Julio'),
(8,'Agosto'),
(9,'Septiembre'),
(10,'Octubre'),
(11,'Noviembre'),
(12,'Diciembre')], u'Mes', required=True)
employee_id = fields.Many2one('hr.employee', u'Empleado')
company_id = fields.Many2one('res.company', u'Company', default=lambda self: self.env.user.company_id.id)


@api.multi
def check_report(self):
data = {'form': {}}
data['ids'] = self.env.context.get('active_ids', [])
data['model'] = self.env.context.get('active_model', 'ir.ui.menu')
return self._print_report(data)

def _print_report(self, data):
sales_records = []
payslips = self.env['hr.payslip'].search([])

#data['form']['payslips'] = payslips
data['titulo'] = 'HOLAAAAAAAAAAAAAAAAAA'
data['form']['titulo'] = 'HOLAAAAAAAAAAAAAAAAAA'

log.info('Form Reporte %s', data)
return self.env.ref('modulo_prueba.action_report_boleta_general_dos').report_action(self, data=data)

La vista:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <record id="hr_generate_boleta_general_wizard_form" model="ir.ui.view">
            <field name="name">hr.generate.boleta.general.wizard.form</field>
            <field name="model">hr.generate.boleta.general.wizard</field>
            <field name="arch" type="xml">
                <form string="Generar Boleta de Pago" version="7.0">
                <group>
                        <group>
                            <field name="company_id" invisible="1"/>
                            <field name="employee_id" options="{'no_open': True}"/>
                        </group>
                        <group>
                            <field name="month"/>
                        </group>
                </group>
                    <footer>
                        <button name="check_report" string="Generar Boletas" context="{'company_id': company_id}" type="object" class="oe_highlight" />
                        or
                        <button class="oe_link" special="cancel" string="Cancelar"/>
                    </footer>
                </form>
            </field>
        </record>

        <record id="action_hr_generate_boleta_general_wizard" model="ir.actions.act_window">
            <field name="name">Reporte de Boleta General de Pago </field>
            <field name="res_model">hr.generate.boleta.general.wizard</field>
            <field name="src_model">hr.generate.boleta.general.wizard</field>
            <field name="view_type">form</field>
            <field name="view_mode">form</field>
            <field name="target">new</field>
        </record>


        <menuitem name="Generar Boletas de Pago General" id="id_op_generate_boleta_general_wizard" parent="menu_hr_payroll_reportes" action="action_hr_generate_boleta_general_wizard" />
    </data>
</odoo>

El codigo del reporte:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <!-- QWeb Reports -->


        <report
            id="action_report_boleta_general_dos"
            model="res.partner"
            string="Reporte de Boleta General"
            menu="False"
            report_type="qweb-pdf"
            name="modulo_prueba.report_boleta_general"
            file="modulo_prueba.report_boleta_general"
        />

    </data>
</odoo>



<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="report_boleta_general">
    <t t-call="web.html_container">
        <t t-call="web.internal_layout">
            <div class="page">
            <h2>Titulo</h2>
                <p t-esc="data['titulo']"/>
            </div>
        </t>
    </t>
</template>
</odoo>

Por favor alguien puede ayudarme, llevo dias intentando esto, he revisado los reportes del modulo account y al final tengo la misma estructura en el return pero aun asi nada
muchas gracias!!

cubells

unread,
Aug 4, 2018, 3:35:24 AM8/4/18
to openerp-s...@googlegroups.com
El 4/8/18 a les 06:05, Andrés Pedro Gonzales Rojas ha escrit:
> Hola estoy intentando generar un reporte desde un wizard pero obtengo el
> siguiente error:

...

> |
> <?xml version="1.0" encoding="utf-8"?>
> <odoo>
> <template id="report_boleta_general">
>     <t t-call="web.html_container">
>         <t t-call="web.internal_layout">
>             <div class="page">
>             <h2>Titulo</h2>
>                 <p t-esc="data['titulo']"/>
>             </div>
>         </t>
>     </t>
> </template>
> </odoo>


Si es un informe nuevo necesitarás también algo así:

https://github.com/OCA/OCB/blob/8.0/addons/account/views/report_invoice.xml#L150

Otra cosa es que sea un informe heredado. Entonces lo anterior funcionaría.

Como no tienes algo así, no le estás pasando nada al informe, por eso
ese error.

https://sindominio.net/ayuda/preguntas-inteligentes.html

--
Atentament, cubells.
--

Andrés Pedro Gonzales Rojas

unread,
Aug 4, 2018, 6:15:58 PM8/4/18
to Usuarios Odoo / OpenERP en España
Realice lo que indicaste pero no hay ningun cambio, incluso intente extendido en modelo 'account.common.partner.report' como hacen los reportes del modulo account pero aun asi no puedo generar los reportes

cubells

unread,
Aug 5, 2018, 7:38:50 AM8/5/18
to openerp-s...@googlegroups.com
El 5/8/18 a les 00:15, Andrés Pedro Gonzales Rojas ha escrit:
> Realice lo que indicaste pero no hay ningun cambio, incluso intente
> extendido en modelo 'account.common.partner.report' como hacen los
> reportes del modulo account pero aun asi no puedo generar los reportes


No sé qué ha hecho.

Pero es fácil hacer un debug linea a linea a ver dónde está el problema.



--
Atentament, cubells.
--

Jose Suarez

unread,
Aug 5, 2018, 11:20:50 AM8/5/18
to openerp-s...@googlegroups.com


--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages