1 答案
Hi,
Suppose you have the fields date1, date2, date3, date4, and date5. As you mentioned, you have 5 pages in the report template. So, you can add conditions based on the date fields.
For example, if you have already placed the contents of each pages in a block like a division:
<div t-if="date1">
<!-- Page 1 code -->
</div>
<div t-if="date2">
<!-- Page 2 code -->
</div>
<div t-if="date3">
<!-- Page 3 code -->
</div>
<div t-if="date4">
<!-- Page 4 code -->
</div>
<div t-if="date5">
<!-- Page 5 code -->
</div>
If you don't have any such blocks, you can add one. Since it is a template, you can also use the t tag:
<t t-if="date1">
<!-- Page 1 code -->
</t>
<t t-if="date2">
<!-- Page 2 code -->
</t>
<t t-if="date3">
<!-- Page 3 code -->
</t>
<t t-if="date4">
<!-- Page 4 code -->
</t>
<t t-if="date5">
<!-- Page 5 code -->
</t>
Regards
So, you have a report with 2 columns. Are the numbers in the second column unique for each date? (You just mentioned that the numbers are different for all pages.) If yes, then you can add a variable in the report where you can set the value there based on the dates and use that variable within the for loop to add only matching rows. For example,
<!-- Set the number corresponding for the date in col_val. 1 to 5 is used here for example and 0 as default value -->
<t t-set="col_val" t-value="0" />
<t t-if="date1">
<t t-set="col_val" t-value="1" />
</t>
<t t-if="date2">
<t t-set="col_val" t-value="2" />
</t>
<t t-if="date3">
<t t-set="col_val" t-value="3" />
</t>
<t t-if="date4">
<t t-set="col_val" t-value="4" />
</t>
<t t-if="date5">
<t t-set="col_val" t-value="5" />
</t>
If you have used the for loop in <tr>, move it into another block and add the condition in <tr> for the table body.
<t t-foreach="rows" t-as="row">
<tr t-if="col_val == row.number">
<td><span t-esc="row.content" /></td>
<td><span t-esc="row.number" /></td>
</tr>
<t>