QWEB - acceder a campos de otros modelos en el propio informe

1,114 views
Skip to first unread message

Saul Cejudo

unread,
Apr 7, 2015, 1:55:54 PM4/7/15
to openerp-s...@googlegroups.com
Buenas a tod@s,

He creado un nuevo informe de factura, mediante su fichero xml correspondiente añadiendolo al account_report.xml y bueno, todo bien, he hecho algunas modificaciones
pero mi pregunta es que si es posible, aunque este utilizando el modelo account.invoice, acceder en ese propio reporte a un campo de otro modelo, de por ejemplo partner.bank.
Me gustaría poder imprimir el número de cuenta de banco por defecto de la compañia si utilizar el external_layout_footer.

Claro, la historia es si desde un report qweb basado en un modelo, podríamos acceder a campos de otro modelo de alguna manera ?

Como siempre, muchas gracias por adelantado,

Un saludo, Saúl.

cubells

unread,
Apr 7, 2015, 1:59:24 PM4/7/15
to openerp-s...@googlegroups.com
El 07/04/15 a les 19:55, Saul Cejudo ha escrit:
Puedes acceder mediante los campos que relacionan los modelos: many2one,
one2many o many2many

O bien deberás de crear una función que te los calcule (en una clase
heredada de la función que sirve los datos al informe).

--
Atentament, cubells.
--

Ana Juaristi

unread,
Apr 7, 2015, 2:02:31 PM4/7/15
to openerp-s...@googlegroups.com

La respuesta es que si.
Siempre y cuando tengas acceso desde un modelo al otro directamente o pasando por un objeto intermedio
El ejemplo que dices seria algo asi como
Account.invoice.partner_id.bank.....
Aqui la complejidad seria que de partner a bancos la relacion es uno a varios por lo que tendrias que coger uno de ellos. Algo asi:
Account.invoice.partner_id.bank_ids[0].name
(Sin verificar sintaxis ni nombres de campos. Solo te doy las pautas y ruta aprox para llegar a un modelo desde otro)

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

Saul Cejudo

unread,
Apr 7, 2015, 2:06:45 PM4/7/15
to openerp-s...@googlegroups.com
Muchisimas gracias a los dos !!

Un saludo, Saúl.

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/d8shpNoA9CM/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a openerp-spain-u...@googlegroups.com.

Saul Cejudo

unread,
Apr 15, 2015, 10:26:23 AM4/15/15
to openerp-s...@googlegroups.com
Hola Ana y Vicente !

Os acordáis de la pregunta que os hice de acceder a un campo de otro modelo con qweb ? Lo consegui resolver bien gracias a vuestras indicaciones pero ahora tengo un problema con la evaluación de un t-if. Sólamente me evalua una condición y siempre despues de evaluar la primera condición correctamente me imprime la segunda.
La idea es que si el tipo de pago del cliente es recibo domiciliado me imprima su cuenta bancaria y si es transferencia pues la cuenta bancaria de la compañía. Este el código:

          <p>

            <span t-if="o.payment_type.note == 'Tranferencia'" t-field="o.company_id.bank_ids[0].acc_number"></span>
                  
           </p>

Pues bien, si en la factura tengo como forma de pago recibo domicialiado pues me imprime la cuenta bancaria que haya en la factura del cliente, pero también y es lo que no se porque siempre me imprime también la cuenta bancaria de la empresa... (o.company_id.bank_ids[0].acc_number).

Se os ocurre a que puede ser debido ? (en configuración de la compañia no tengo marcado imprimir la cuenta bancaria)

Gracias y un saludo,

El 7 de abril de 2015, 20:02, Ana Juaristi <ajuar...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/d8shpNoA9CM/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a openerp-spain-u...@googlegroups.com.

Saul Cejudo

unread,
Apr 15, 2015, 10:27:16 AM4/15/15
to openerp-s...@googlegroups.com
Perdon, el codigo completo es:

<span t-if="o.payment_type.note == 'Recibo domiciliado'" t-field="o.partner_bank_id"></span>

<span t-if="o.payment_type.note == 'Tranferencia'" t-field="o.company_id.bank_ids[0].acc_number"></span>

cubells

unread,
Apr 15, 2015, 11:11:42 AM4/15/15
to openerp-s...@googlegroups.com
El 15/04/15 a les 16:27, Saul Cejudo ha escrit:
> Perdon, el codigo completo es:
>
> <span t-if="o.payment_type.note == 'Recibo domiciliado'"
> t-field="o.partner_bank_id"></span>
> <span t-if="o.payment_type.note == 'Tranferencia'"
> t-field="o.company_id.bank_ids[0].acc_number"></span>
>


Yo haría un cambio fàcil para ver qué es lo que llega al if y por qué se
imprimien las dos cosas:

<span t-if="o.payment_type.note == 'Recibo domiciliado'"
t-field="o.payment_type.note"></span>
<span t-if="o.payment_type.note == 'Tranferencia'"
t-field="o.payment_type.note"></span>


Una vez sepas lo que llega, modificas.

--
Atentament, cubells.
--

Saul Cejudo

unread,
Apr 15, 2015, 12:02:00 PM4/15/15
to openerp-s...@googlegroups.com
Hola !

Buen consejo, esto es lo que me imprime:

Forma de pago: Recibo domiciliado

Recibo domiciliado Recibo domiciliado


Es decir, ejecuta cada t-if e imprime dos veces, cuando sólamente debería imprimir una vez ...


Puff menudo día llevo hoy con los informes, porque otra cosa que me pasa es que con el editor html visualizo perfectamente el pie de página pero cuando lo paso a pdf ..no aparece el pie de pagina .. porque ?¿?


Gracias por todo de veras !





--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/d8shpNoA9CM/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, 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.

cubells

unread,
Apr 15, 2015, 12:07:06 PM4/15/15
to openerp-s...@googlegroups.com
El 15/04/15 a les 18:01, Saul Cejudo ha escrit:
> Hola !
>
> Buen consejo, esto es lo que me imprime:
>
> *Forma de pago:* Recibo domiciliado
>
> Recibo domiciliado Recibo domiciliado
>
>
> Es decir, ejecuta cada t-if e imprime dos veces, cuando sólamente
> debería imprimir una vez ...
>

No será que duplicaste la forma de pago y en el campo note tiene el
mismo nombre en las 2 formas de pago distintas (o en su traducción)?


--
Atentament, cubells.
--

Saul Cejudo

unread,
Apr 15, 2015, 12:27:22 PM4/15/15
to openerp-s...@googlegroups.com
Hola,

No creo, ademas he probado con payment_type.code, payment_type.name y nada.. es que no evalua el t-if, imprime el t-field y listo..

Pienso que debe ser la construcción del t-if pero no se, creo que es correcta no ?

Ahh, perdona, y lo del pie de pagina que no aparece en pdf y si con el editor os ha pasado alguna vez ?

Gracias de nuevo, un saludo, Saúl.



--
Atentament, cubells.
--

Saul Cejudo

unread,
Apr 15, 2015, 12:50:22 PM4/15/15
to openerp-s...@googlegroups.com
Hola, lo voy a postear como una entrada nueva por si estas muy liado, a ver si a alguien me puede ayudar, muchas gracias !!


cubells

unread,
Apr 15, 2015, 12:51:35 PM4/15/15
to openerp-s...@googlegroups.com
El 15/04/15 a les 18:27, Saul Cejudo ha escrit:
> Hola,
>
> No creo, ademas he probado con payment_type.code, payment_type.name
> <http://payment_type.name> y nada.. es que no evalua el t-if, imprime el
> t-field y listo..
>
> Pienso que debe ser la construcción del t-if pero no se, creo que es
> correcta no ?
>

Hay ejemplos similares en el código:

<div t-if="o.picking_type_id.code=='incoming' and o.partner_id">

por ejemplo en ./stock/views/report_stockpicking.xml

Lo que puede ser es que realmente en la comparación llegue el inglés no
la traducción española y tú te crees que llega 'REcibo domiciliado'

> Ahh, perdona, y lo del pie de pagina que no aparece en pdf y si con el
> editor os ha pasado alguna vez ?
>


Normalmente ese problema se debe al parámetro url del report. Hay un
hilo al respecto.


--
Atentament, cubells.
--

Saul Cejudo

unread,
Apr 15, 2015, 1:16:17 PM4/15/15
to openerp-s...@googlegroups.com
Muchas gracias, seguire investigando !!

Saul Cejudo

unread,
Apr 15, 2015, 1:43:20 PM4/15/15
to openerp-s...@googlegroups.com
Conseguido !!  era problema de etiquetas: la manera correcta es :

            <div t-if="o.payment_type.code == 'TRANSFERENCIA_CSB'">
                <span t-field = "o.company_id.bank_ids[0].acc_number"></span>
            </div>
            <div t-if="o.payment_type.code == 'RECIBO_CSB'">
                <span t-field = "o.partner_bank_id"></span>
            </div>

De esta manera si evalua correctamente el t-if. De nuevo muchas gracias Vicente.

Me queda lo del pie de informe que no me aparece en pdf...ya queda menos.


--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/d8shpNoA9CM/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a openerp-spain-u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Saul Cejudo

unread,
Apr 15, 2015, 2:10:29 PM4/15/15
to openerp-s...@googlegroups.com
Hola de nuevo ! (que pesado..)

Lo del pie de pagina.. he estado buscando pero no encuentro nada, me comentaste que había un hilo por ahi de esto, a que url del informe te refieres ?.

Gracias y un saludo, Saúl.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.

cubells

unread,
Apr 15, 2015, 2:16:28 PM4/15/15
to openerp-s...@googlegroups.com
El 15/04/15 a les 20:10, Saul Cejudo ha escrit:
> Hola de nuevo ! (que pesado..)
>
> Lo del pie de pagina.. he estado buscando pero no encuentro nada, me
> comentaste que había un hilo por ahi de esto, a que url del informe te
> refieres ?.
>
>

Creo que está en el hilo que tiene este asunto:
wkhtmltopdf 0.12.1.1

En todo caso, busca una respuesta de Nacho de Domatix.

--
Atentament, cubells.
--

Saul Cejudo

unread,
Apr 15, 2015, 2:19:54 PM4/15/15
to openerp-s...@googlegroups.com
Muchas gracias !! y buenas noches -:)


--
Atentament, cubells.
--

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/d8shpNoA9CM/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, 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.

José Darío Ardila V.

unread,
Sep 9, 2015, 10:27:10 AM9/9/15
to Usuarios Odoo / OpenERP en España
Gracias a todos, esta información resultó muy importante, buscaba los mismo.

marilyn millan

unread,
Apr 16, 2018, 4:20:18 PM4/16/18
to Usuarios Odoo / OpenERP en España

Buena yo quisiera por favor una ayuda es que estoy haciendo un reporte con filtros de fecha hacia el objeto account.invoice el problema que presento es cuando quiero acceder a los atributos de otro objeto en el template como por ejemplo: res.partner

este es mi metodo para el boton de imprimir

 def action_report(self):
        """Metodo que llama la lógica que genera el reporte"""
       
        datas={'ids': self.env.context.get('active_ids', [])}
        res = self.read([ 'date_init','date_final'])
        res = res and res[0] or {}
        datas['form'] = res
        domain=[]
        if self.date_init:
            domain=[('date_invoice','>=',self.date_init),('date_invoice', '<=',self.date_final)]
        fields=['partner_id','reference','origin','date_invoice','bulto','amount_total']
        communals_data = self.env['account.invoice'].search_read(domain,fields)
        datas['communals_data','sale_order_obj'] = communals_data
        return self.env['report'].get_action([], 'modificacion_reporte.relacion_despacho_totales', data=datas)

y asi lo llamo en el template:

             <tbody>
                        <t t-foreach="data['communals_data']" t-as="communal">
                            <tr>
                                 <td  style="padding-left: 0px;text-align: left;" >
                                    <small t-esc="communal['partner_id'][1]"/>
                                </td>
                           </tr>
            </tbody>

   pero cuando quiero acceder a la direccion del cliente o numero telefonico no se como hacerlo
   habia pensado algo asi     <small t-esc="communal['partner_id'][1].street"/>   o  asi <small t-esc="communal['partner_id'][1]['street']"/>
  pero no me funciona y no se como hacerlo. 
  Agradeceria su ayuda por favor

Reply all
Reply to author
Forward
0 new messages