Odoo Help


Qweb if-else condition?

Gavin Yap
on 7/30/15, 12:08 AM 9,784 views


Currently I am doing this

<t t-foreach="get_payslip_lines(o.line_ids)" t-as="p">
<t t-if="p.code == 'BASIC' or p.code == 'GROSS' or p.code == 'NET' or p.code == 'TOTAL' ">
<td><b><span t-field="p.code"/></b></td>
<td><b><span t-field="p.name"/></b></td>
<!-- <td><span t-field="p.quantity"/></td> -->
<td><b><span t-esc="formatLang(p.amount, currency_obj=o.company_id.currency_id)"/></b></td>
<td><b><span t-esc="formatLang(p.total, currency_obj=o.company_id.currency_id)"/></b></td>
<t t-if="p.code != 'BASIC' and p.code != 'GROSS' and p.code != 'NET' and p.code != 'TOTAL' ">
<td><span t-field="p.code"/></td>
<td><span t-field="p.name"/></td>
<!-- <td><span t-field="p.quantity"/></td> -->
<td><span t-esc="formatLang(p.amount, currency_obj=o.company_id.currency_id)"/></td>
<td><span t-esc="formatLang(p.total, currency_obj=o.company_id.currency_id)"/></td>

I tried to search there isn't an example on Qweb's if else example.

Rucha Dave (rda)
On 7/30/15, 1:08 AM


Generally we use ,

<t t-if="p.code == 'BASIC'">

    executable statement..


for false condition,

<t t-if="not p.code == 'BASIC'">

    executable statement..



Thanks. How, this solution doesn't seem much difference to my except you use "not" to negate the condition. I still have to specify the list of conditions to do that.

Gavin Yap
on 8/4/15, 5:00 AM
On 7/30/15, 1:08 AM


this is my invoice Report.In this Report if condition available if amount to text filed is yes then it's print  amount to text in report and if no then condition false so, it's not print.

<?xml version="1.0" encoding="utf-8"?>



<template id="report_invoice_document_inherit" inherit_id="account.report_invoice_document">

<xpath expr="//p[@t-if='o.fiscal_position']" position="after">


<span t-if="o.amount_text_need == 'yes'">

<!--<span t-if="o.currency_id == '21'">-->

<strong>Amount in Word:</strong>

<span t-esc="o.amount_to_text(o.amount_total, 'USD')"/></span>






and in your code

if condition is

<t t-if="p.code == 'BASIC' or p.code == 'GROSS' or p.code == 'NET' or p.code == 'TOTAL' "> 

Thanks. if you read my code, what I am trying to achieve is to bold Basic,Gross,Net and Total, and leave the rest unbold.

Gavin Yap
on 8/4/15, 5:04 AM

first you have to check p.code value is coming from print p.code value in report and see what actually values are come.

on 8/4/15, 5:34 AM

that is what my code is doing and works, but that I need a more elegant way for doing conditions.

Gavin Yap
on 8/5/15, 2:21 AM
On 2/19/18, 1:49 AM

how to create custom reports in odoo using qweb reporting engine. In this post we will learn how to create simple custom reports and its template.

  1. http://learnopenerp.blogspot.com/2016/09/how-to-create-custom-reports-in-odoo.html

  2. http://learnopenerp.blogspot.com/2016/11/how-to-create-qweb-reports-in-openerp.html

Samer Al-Sarhan
On 2/25/16, 7:49 AM

Dear it is the same conndition test of python 

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)


Asked: 7/30/15, 12:08 AM
Seen: 9784 times
Last updated: 2/19/18, 1:49 AM