El lunes, 17 de marzo de 2014 19:10:25 UTC+1, Guillem Barba escribió:
>
>
> El 17/03/2014 18:16, "Manuel Bailen" <[email protected] <javascript:>> 
> va escriure:
> >
> > Hola a todos,
>
> Hola Manuel,
>
> > Me gustaría poder hacer listados de facturas seleccionadas, hasta ahora 
> lo he intentado creado una copia del informe factura para modificarlo, 
> pretendo tener dos posibilidades cuando pincho el botón imprimir, pero me 
> encuentro con dos problemas.
> > Por un lado la factura no es un informe al uso y según lo que he podido 
> leer para sustituirlo hay que modificar la clase "Printinvoice(Wizard)",
> > ¿hay alguna forma de modificar esta clase para que permita que se puedan 
> ejecutar varios informes?
>
> Entiendo que lo que quieres es un informe nuevo sin sustituir el informe 
> de factura. Así que no te tienes que preocupar para nada del PrintInvoice.
>
> Aprovecho para hacer un poco de resumen del tema informes.
> Un modelo/objeto (en este caso Invoice) puede tener los informes que sea 
> (de 0 a infinito). Los diferentes informes disponibles aparecerán listados 
> al hacer click en cualquiera de los tres iconos de informe.
>
> Un informe requiere 4 cosas:
> - Una clase que herede de Report y que debe registrarse en el __init__.py 
> en el pool de reports (hay pool de modelos, wizards y reports). Esta clase 
> dará de alta un nombre de informe QUE DEBE SER ÚNICO
> - la plantilla del informe. En el estándar un ODT y si es un informe 
> Jasper (requiere el módulo) el jrxml
> - Una entrada <record model='ir.report'> donde se especifica el nombre del 
> informe (esto lo liga con la clase) y la ruta al informe (odt/jrxml)
> - Una entrada <record model=ir.action.keyword"> donde se especifica el XML 
> Id del informe (la entrada anterior) y un modelo. Esto añade el informe a 
> los iconos de imprimir del modelo.
>
> Si quieres añadir un informe tendras que crear los 4 elementos.
>
> Si quieres SUSTITUIR un informe existente tendras ue:
> 1. Crear la clase con un nombre nuevo
> 2. Crear el informe (odt) y guardarlo en tu módulo
> 3. Ceear una entrada nueva (con ID nuevo) para el informe, haciendo uso 
> del nombre y ruta nuevo
> 4. REDEFINIR el keyword para llamae al XML Id nuevo de tu informe. Al 
> redefinir estarás sustituyendo.
>
> Redefinir una entrada XML se hace forzando el XML Id completo de la 
> entrada por uno existente.
>
> Imaginemos que exiate el módulo modulo_a con la ntrada:
> <record model="ir.action.keyword" id="inf1">
>
> Este elemento tiene el XML Id "modulo_a.inf1".
>
> Si en el módulo modulo_b se define un keyword asi:
> <record model="ir.action.keyword" id="inf1">
> Su XML Id será "modulo_b.inf1" y, por tanto, será una entrada nueva.
> Si se define así:
> <record model="ir.action.keyword" id="modulo_a.inf1"> 
>
> Se estará redefiniendo la keyword "inf1" del modulo_a.
>
> Porqué redefinir la keyword y no directamente la entrada "ir.report"?
> Por las traducciones: el sistema de traducciones asocia los strings del 
> informe al modulo a través del XML Id. Si este tiene un XML de orro módulo 
> los strings quedarán mal asociados.
>
> Si estás sustituyendo un informe conviene asegurarse que nadie llama al 
> antiguo. Para ello hay que buscar en el código referencias al name del 
> informe.
>
> El informe estardar de factura se lanza desde un pequeño wizard: 
> PrintInvoice. La keyword llama al wizard y este acaba llamando al informe, 
> por eso si se quiere sustituir este informe hay que sobrecargar el 
> PrintInvoice
>
> > Por otro lado como quiero un listado, no me sirve que separe cada 
> factura en una página y un archivo,
> > ¿que habría que modificar para que no hiciese esto?
>
> La separación por fichero se debe al asistente. Esto es porque la factura 
> si ya esta abierta se genera el informe la prinera vez y luego se muestra 
> siempre el original (no se genera cada vez).
> Simplemente añade un informe con los 4 elementos normales que te comento y 
> te generara un archivo con todos los registros seleccionados.
>
> Que te saque cada factura en una página nueva es simplemente porque el 
> repeatIn sobre el listado de objetoa esta envolviendo todo el informe.
>
> Salut!
> Guillem
>
Muchas gracias, la explicación es sobresaliente, mañana me pondré con ello 
. 

Un saludo

Responder a