Discussion:
[tryton-es] Informes Jasper
Manuel Bailen
2017-11-30 18:42:05 UTC
Permalink
Hola a todos,

Estoy empezando con Jasperreport y me he tropezado a la hora de añadir
informes de factura, después de muchas pruebas siempre llego al mismo
pantallazo.

Por ejemplo:
Instalo el módulo account_invoice_jreport
Me voy a Administración > Interfaz... > Acciones > Informes
Duplico el informe Factura
Edito el informe:
Cambio, nombre, nombre interno
Mantengo todo lo demás (empece probando con informes personalizados y
me lanzaba el mismo error)
Cuando intento mostrar el nuevo informe (en este caso es el mismo) obtengo.

Traceback (most recent call last):
File "/trytond/wsgi.py", line 47, in dispatch_request
return endpoint(request, **request.view_args)
File "/trytond/protocols/dispatcher.py", line 61, in rpc
request, database_name, *request.params)
File "/trytond/wsgi.py", line 39, in auth_required
return wrapped(*args, **kwargs)
File "/trytond/protocols/dispatcher.py", line 42, in wrapper
return func(request, pool, *args, **kwargs)
File "/trytond/protocols/dispatcher.py", line 215, in _dispatch
args, rpc, obj, method, c_args, c_kwargs)
File "/trytond/protocols/apm.py", line 253, in rpc_result
result = call_rpc(rpc, obj, method, c_args, c_kwargs)
File "/trytond/protocols/apm.py", line 192, in call_rpc
result = rpc.result(meth(*c_args, **c_kwargs))
File "/trytond/report/report.py", line 147, in execute
cls.render(action_report, report_context))
File "/trytond/report/report.py", line 232, in render
data = rel_report(**report_context).render()
File "/relatorio/reporting.py", line 121, in __call__
template = self.tmpl_loader.load(self.fpath, self.mimetype)
File "/relatorio/reporting.py", line 81, in load
path, cls=cls, relative_to=relative_to)
File "/dist-packages/genshi/template/loader.py", line 236, in load
filename, encoding=encoding)
File "/dist-packages/genshi/template/loader.py", line 274, in _instantiate
allow_exec=self.allow_exec)
File "/relatorio/templates/opendocument.py", line 237, in __init__
encoding, lookup, allow_exec)
File "/dist-packages/genshi/template/markup.py", line 67, in __init__
allow_exec=allow_exec)
File "/dist-packages/genshi/template/base.py", line 419, in __init__
self._stream = self._parse(source, encoding)
File "/relatorio/templates/opendocument.py", line 258, in _parse
zf = get_zip_file(source)
File "/relatorio/templates/opendocument.py", line 820, in get_zip_file
return zipfile.ZipFile(fod2od(source))
File "/relatorio/templates/opendocument.py", line 829, in fod2od
office_ns = fodt_root.nsmap['office']
KeyError: 'office'


Estos pasos son los que sigo cuando quiero crear un informe odt y funciona.

Gracias de antemano
Sergi Almacellas Abellana
2017-11-30 18:53:22 UTC
Permalink
Post by Manuel Bailen
Hola a todos,
Estoy empezando con Jasperreport y me he tropezado a la hora de añadir
informes de factura, después de muchas pruebas siempre llego al mismo
pantallazo.
Instalo el módulo account_invoice_jreport
Me voy a Administración > Interfaz... > Acciones > Informes
Duplico el informe Factura
Cambio, nombre, nombre interno
Mantengo todo lo demás (empece probando con informes personalizados y
me lanzaba el mismo error)
Cuando intento mostrar el nuevo informe (en este caso es el mismo) obtengo.
File "/trytond/wsgi.py", line 47, in dispatch_request
return endpoint(request, **request.view_args)
File "/trytond/protocols/dispatcher.py", line 61, in rpc
request, database_name, *request.params)
File "/trytond/wsgi.py", line 39, in auth_required
return wrapped(*args, **kwargs)
File "/trytond/protocols/dispatcher.py", line 42, in wrapper
return func(request, pool, *args, **kwargs)
File "/trytond/protocols/dispatcher.py", line 215, in _dispatch
args, rpc, obj, method, c_args, c_kwargs)
File "/trytond/protocols/apm.py", line 253, in rpc_result
result = call_rpc(rpc, obj, method, c_args, c_kwargs)
File "/trytond/protocols/apm.py", line 192, in call_rpc
result = rpc.result(meth(*c_args, **c_kwargs))
File "/trytond/report/report.py", line 147, in execute
cls.render(action_report, report_context))
File "/trytond/report/report.py", line 232, in render
data = rel_report(**report_context).render()
File "/relatorio/reporting.py", line 121, in __call__
template = self.tmpl_loader.load(self.fpath, self.mimetype)
File "/relatorio/reporting.py", line 81, in load
path, cls=cls, relative_to=relative_to)
File "/dist-packages/genshi/template/loader.py", line 236, in load
filename, encoding=encoding)
File "/dist-packages/genshi/template/loader.py", line 274, in
_instantiate
allow_exec=self.allow_exec)
File "/relatorio/templates/opendocument.py", line 237, in __init__
encoding, lookup, allow_exec)
File "/dist-packages/genshi/template/markup.py", line 67, in __init__
allow_exec=allow_exec)
File "/dist-packages/genshi/template/base.py", line 419, in __init__
self._stream = self._parse(source, encoding)
File "/relatorio/templates/opendocument.py", line 258, in _parse
zf = get_zip_file(source)
File "/relatorio/templates/opendocument.py", line 820, in get_zip_file
return zipfile.ZipFile(fod2od(source))
File "/relatorio/templates/opendocument.py", line 829, in fod2od
office_ns = fodt_root.nsmap['office']
KeyError: 'office'
Estos pasos son los que sigo cuando quiero crear un informe odt y funciona.
Es un problema de diseño de los informes jasper reports ya que requieren que exista una classe que herede de JasperReport en el codigo python con el mismo __name__ que el nombre interno de tu informe.

Esto se podria mejorar para que esto no sea necesario. Simplemente utilizando el motor jasper cuando la extension de la plantilla es jrxml.

Espero que te sea de ayuda.

Un saludo,
--
Enviado desde mi dispositivo Android con K-9 Mail. Por favor, disculpa mi brevedad.
Manuel Bailen
2017-12-01 16:02:47 UTC
Permalink
Muchas gracias Sergi, al final lo conseguí creando un nuevo modulo a partir
de otro y siguiendo tu pista.

Un saludo

El jueves, 30 de noviembre de 2017, 19:53:32 (UTC+1), Sergi Almacellas
On 30 de novembre de 2017 19.42.05 CET, Manuel Bailen <
Post by Manuel Bailen
Hola a todos,
Estoy empezando con Jasperreport y me he tropezado a la hora de añadir
informes de factura, después de muchas pruebas siempre llego al mismo
pantallazo.
Instalo el módulo account_invoice_jreport
Me voy a Administración > Interfaz... > Acciones > Informes
Duplico el informe Factura
Cambio, nombre, nombre interno
Mantengo todo lo demás (empece probando con informes personalizados y
me lanzaba el mismo error)
Cuando intento mostrar el nuevo informe (en este caso es el mismo) obtengo.
File "/trytond/wsgi.py", line 47, in dispatch_request
return endpoint(request, **request.view_args)
File "/trytond/protocols/dispatcher.py", line 61, in rpc
request, database_name, *request.params)
File "/trytond/wsgi.py", line 39, in auth_required
return wrapped(*args, **kwargs)
File "/trytond/protocols/dispatcher.py", line 42, in wrapper
return func(request, pool, *args, **kwargs)
File "/trytond/protocols/dispatcher.py", line 215, in _dispatch
args, rpc, obj, method, c_args, c_kwargs)
File "/trytond/protocols/apm.py", line 253, in rpc_result
result = call_rpc(rpc, obj, method, c_args, c_kwargs)
File "/trytond/protocols/apm.py", line 192, in call_rpc
result = rpc.result(meth(*c_args, **c_kwargs))
File "/trytond/report/report.py", line 147, in execute
cls.render(action_report, report_context))
File "/trytond/report/report.py", line 232, in render
data = rel_report(**report_context).render()
File "/relatorio/reporting.py", line 121, in __call__
template = self.tmpl_loader.load(self.fpath, self.mimetype)
File "/relatorio/reporting.py", line 81, in load
path, cls=cls, relative_to=relative_to)
File "/dist-packages/genshi/template/loader.py", line 236, in load
filename, encoding=encoding)
File "/dist-packages/genshi/template/loader.py", line 274, in
_instantiate
allow_exec=self.allow_exec)
File "/relatorio/templates/opendocument.py", line 237, in __init__
encoding, lookup, allow_exec)
File "/dist-packages/genshi/template/markup.py", line 67, in __init__
allow_exec=allow_exec)
File "/dist-packages/genshi/template/base.py", line 419, in __init__
self._stream = self._parse(source, encoding)
File "/relatorio/templates/opendocument.py", line 258, in _parse
zf = get_zip_file(source)
File "/relatorio/templates/opendocument.py", line 820, in get_zip_file
return zipfile.ZipFile(fod2od(source))
File "/relatorio/templates/opendocument.py", line 829, in fod2od
office_ns = fodt_root.nsmap['office']
KeyError: 'office'
Estos pasos son los que sigo cuando quiero crear un informe odt y funciona.
Es un problema de diseño de los informes jasper reports ya que requieren
que exista una classe que herede de JasperReport en el codigo python con el
mismo __name__ que el nombre interno de tu informe.
Esto se podria mejorar para que esto no sea necesario. Simplemente
utilizando el motor jasper cuando la extension de la plantilla es jrxml.
Espero que te sea de ayuda.
Un saludo,
--
Enviado desde mi dispositivo Android con K-9 Mail. Por favor, disculpa mi brevedad.
Manuel Bailen
2017-12-01 16:05:11 UTC
Permalink
Muchas gracias Sergi, al final consegui crear un nuevo módulo a partir de
otro existente y gracias a tu pista funciona perfecto.

Un saludo

Loading...