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
