¡Bienvenido!

Esta comunidad es para profesionales y principiantes en nuestros productos y servicios.
Comparte y discute el mejor contenido y nuevas ideas de marketing, construye tu perfil profesional y conviértete en un mejor comercializador.

0

1
Avatar

Darío Lodeiros Vázquez

--Darío Lodeiros Vázquez--

1089
| 2 0 1
Santiago de Compostela, España
--Darío Lodeiros Vázquez--

Analista, implantador, formador y desarrollador sobre Odoo en más de 60 proyectos. Actualmente especializado en el área de Property Management System (PMS) sobre Odoo.

Cotutor de proyectos fin de grado en la Universidad de Santiago de Compostela y más de 14 años de experiencia en formación de base tecnológica. 

Darío Lodeiros Vázquez
En 7/4/20 11:57

Hay un pequeño lío de templates y herencias ;P

En Odoo tenemos un action, que llama a un report, que a su vez esta ligado con una vista (report_invoice) la cual finalmente carga otra vista mediante t-call con el contenido contextualizado por el idioma (document_report_invoice).

En ese código por un lado estas heredando el "document_", con lo que modificarás la vista en todos sus casos... si haces esto, modificas la vista de contenidos y punto. Pero tu report_invoice_card_document no es una vista base, es una heredada, por lo que no tiene sentido que intentes llamarla desde un action o desde el t-call de report_invoice... si heredas la vista, la heredas, para todo, no debes hacer una llamada al id de tu vista heredada, debes mantener la de base.

Y por otra parte estas generando un report nuevo... intentando ligarlo con tu vista.... the same problem, un report te va a exigir una vista base, no una herencia...

En resumen, ¿Quieres un informe nuevo que sea compatible con el existente? (osea, que puedas imprimir uno u otro indistintamente...?), hay una opción mala que ni voy a explicar...  otra que es la buena:

Hereda la vista base, tal y como estas haciendo en account.report_invoice_document, pero añadele un condicional al código según quieras o no que sea vea la modificación (fijate en el módulo de albaranes valorados de la oca, en donde dependiendo de una variable 'valued' del albarán se muestra o no el contenido...). ¿Y que variable puedes usar?, pues ya depende del propósito del desarrollo, pero podría ser un campo de algún objeto, o, si solamente quieres tener dos botones diferenciados, tendrías que crear el botón, el action, y en el action pasarle por contexto el valor que usarías en el t-if del informe.

Si el informe fuese completamente independiente, entonces crearías el menú, el action, y enlazarías tu action con el report creado por ti, pero en tu caso tu report es un inherit, por lo que no debes modificar ni el report, ni el action, ni el t-call del informe base (account.report_invoice).





  • Marcar

El problema es que tengo que crear una factura que aparezca sin cabecera y que se llame desde otra opcion de menu.

Cramosh
de 7/4/20 14:22

Darío Lodeiros

14:50 (hace 2 minutos)

para Cramosh

La vista que mete la cabecera es web.external_layout_standard, y se le llama desde web.external_layout, en donde encontrarás:

<t t-if="company.external_report_layout_id" t-call="{{company.external_report_layout_id.key}}"><t t-raw="0"/></t>

<t t-else="else" t-call="web.external_layout_standard"><t t-raw="0"/></t>

Osea, si en la configuración tienes el layout definido (configuración general en modo tecnico -> edit Layout), cargará la vista definida ahí, si no, la standar (que probablemente sea la que tienes)

Tu podrías crear una nueva vista, llamada "external_layout_X", y meterla en la configuración para la compañía... esta nueva vista, sería una copia de external_layout_standard, pero con un t-if justo antes del header...

un t-if en el que miras si se ha pasado por el contexto una variable (hidden_header por ejemplo... la que tu quieras) para imprimir o no la cabecera. Después creas el botón, el action, y en el action llamas al informe normal pasándole por contexto la variable hidden_header... o como le hayas llamado.

Osea:

1.- menú nuevo,

2.- action nuevo asociado al menú y con una variable de contexto para ocultar el header,

3.- nueva vista external_layout_X copia de external_layout_standar con el añadido de meter el header en un t-if que comprueba si debe o no ocultarlo por la variable del contexto.

Darío Lodeiros, Darío Lodeiros Vázquez
de 7/4/20 14:53

Mantener informado

Acerca de esta comunidad

Esta comunidad es para profesionales y entusiastas de nuestros productos y servicios, compartir los mejores contenidos y nuevas ideas de marketing, construir su perfil profesional y mejorar el mercado para todos. Read Guidelines

Herramientas de las preguntas

0 seguidor(es)

Estadísticas

Preguntado: 6/4/20 22:06
Visto: 225 veces
Última actualización: 7/4/20 15:00