Skip to Content
Menu
This question has been flagged
2 Replies
3229 Views

Working on odoo12

I am trying to extend an existing report (report_payment_receipt_document) by creating a Qweb for printing payments in the form of a table.

When trying to install the extension I get the error:AssertionError: Element odoo has extra content: report, line 9

Here is my code.

reports/payment_voucher.xml

<?xml version="1.0"?>

 <odoo>

 <!-- string="payment voucher" -->

 <report id="account.report_payment_receipt_document" model="account.payment" report_type="qweb-html" name="account.report_payment_document_extend" ></report> 

 <template id="report_payment_document_extend">

 <!-- inherit_id="account.report_payment_receipt" -->

 <!-- <t t-name="account.report_payment_receipt_document" --> 

 <t t-name="report_payment_receipt_document" t-extend="report_payment_receipt_document">

 <t t-call="web.external_layout">

 <!-- <t t-debug="pdb"/> -->

 <t t-set="o" t-value="o.with_context({'lang': lang})"/>

 <div class="page">

 <table class="table table-bordered">

 <tr> 

 <th colspan="5">PAYMENT VOUCHER <span t-field="o.name"/></th>

 <!-- t-field="res.company.logo" --> 

 <td colspan="3"><span t-field="res.company.logo"></span></td>

 </tr> 

 <tr>

 <th>PAYEE NAME</th>

 <!-- name goes here --> 

 <td colspan="7"><span t-field="o.partner_id"/></td>

 </tr> 

 <tr> 

 <th>AMOUNT</th>

 <!-- amount goes here --> 

 <td colspan="7"><span t-field="o.amount" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/>

</td> 

 </tr> 

 <tr>

 <th>AMOUNT IN WORDS</th> 

 <td colspan="7"></td>

 </tr> 

 <tr> 

 <th rowspan="2">PAID IN</th>

 <td>cash</td> 

 <td>to be added</td>

 <td>cheque</td> 

 <!-- <span><t-field="account.journal.Bank"></span> --> 

 <td><span t-field="o.journal.Bank"></span></td> 

 <td>checkbox x</td> 

 <td>mpesa</td>

 <td>to be added</td>

 <tr>

 <td colspan="2"></td> 

 <td colspan="2">some amount</td> 

 <td colspan="3"></td> 

 </tr> 

 </tr> 

 <tr>

 <th>BEING PAYMENT FOR</th> 

 <td colspan="7">to be added</td> 

 </tr> 

</table> 

 <table class="table table-bordered">

 <tbody> 

 <tr t-foreach="o.invoice_ids" t-as="inv">

 <th><span>Invoice Number</span></th> 

 <td><span t-field="inv.number"></span></td>

 <th><span>Amount</span></th> 

 <td><span t-field="inv.amount_total"></span></td> 

 </tr> 

 </tbody>

 </table> 

 <br/> 

 <table class="table table-bordered">

 <tr>

 <th>PREPARED BY</th>

 <td colspan="3">to be added</td> 

 <th>DATE</th>

 <td colspan="2" t-if="o.payment_date"></td>

 <th>SIGN</th> 

 <td colspan="3">space</td> 

 </tr> 

 <tr> 

 <th>APPROVED BY</th>

 <td colspan="3">to be added</td>

 <th>DATE</th>

 <td colspan="2">to be added</td> 

 <th>SIGN</th> 

 <td colspan="3">space</td>

 </tr> 

 <tr>

 <th>RECEIVED BY</th>

 <td colspan="2">to be added</td>

 <th>ID no</th>

 <td colspan="2">to be added</td> 

 <th>DATE</th> 

 <td colspan="2">to be added</td> 

 <th>SIGN</th>

 <td colspan="2">space</td> 

 </tr> 

 </table> 

</div>

 </t>

 </t> 

 </template> 

 </odoo> 



Avatar
Discard
Author Best Answer

@ Waleed Mohsen, I  have enforced the suggested changes and I am still getting the same error.

Avatar
Discard

You have many issues in your code.

The below link an artical for how to Inheriting and modifying QWeb reports:

https://www.odoo.yenthevg.com/inheriting-and-modifying-qweb-reports/

Here you are the Qweb Tutorial:

https://www.odoo.com/documentation/12.0/reference/qweb.html#id3

Author

Thank you for the links. I have made a few changes:

I am getting this error: AssertionError: Element odoo has extra content: template, line 3

This is how my code looks like now:

<?xml version="1.0"?>

<odoo>

<template id="report_payment_document_extend" inherit_id="account.report_payment_receipt_document"></template>

<!-- xpath to where I want the change -->

<xpath expr="//div[class='page']" position="inside">

<table class="table table-bordered">

<tr>

<th colspan="5">

<h1>PAYMENT VOUCHER</h1>

<span t-field="o.name"/></th>

<!-- t-field="res.company.logo" -->

<td colspan="3"><span t-field="res.company.logo"></span></td>

</tr>

<tr>

<th>

<h2>PAYEE NAME</h2>

</th>

<!-- name goes here -->

<td colspan="7"><span t-field="o.partner_id"/></td>

</tr>

<tr>

<th>

<h2>AMOUNT</h2>

</th>

<!-- amount goes here -->

<td colspan="7"><span t-field="o.amount" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/></td>

</tr>

<tr>

<th>

<h2>AMOUNT IN WORDS</h2>

</th>

<td colspan="7"></td>

</tr>

<tr>

<th rowspan="2"><h2>PAID IN</h2></th>

<th><h2>cash</h2></th>

<td><h2>to be added</h2></td>

<th><h2>cheque</h2></th>

<!-- <span><t-field="account.journal.Bank"></span> -->

<td><span t-field="o.journal.Bank"></span></td>

<th><h2>checkbox</h2></th>

<td><h2>x</h2></td>

<th><h2>mpesa</h2></th>

<td><h2>to</h2></td>

<tr>

<td colspan="2"></td>

<td colspan="2"><h2>Some amount</h2></td>

<td colspan="3"></td>

</tr>

</tr>

<tr>

<th><h2>BEING PAYMENT FOR</h2></th>

<td colspan="8"></td>

</tr>

</table>

<table class="table table-bordered">

<tbody>

<tr t-foreach="o.invoice_ids" t-as="inv">

<th><span><h2>Invoice Number</h2></span></th>

<td><span t-field="inv.number"></span></td>

<th><span><h2>Amount</h2></span></th>

<td><span t-field="inv.amount_total"></span></td>

</tr>

</tbody>

</table>

<br/>

<table class="table table-bordered">

<tr>

<th><h2>PREPARED BY</h2></th>

<td colspan="3">to be added</td>

<th><h2>DATE</h2></th>

<td colspan="2" t-if="o.payment_date"></td>

<th><h2>SIGN</h2></th>

<td colspan="3">space</td>

</tr>

<tr>

<th><h2>APPROVED BY</h2></th>

<td colspan="3">to be added</td>

<th><h2>DATE</h2></th>

<td colspan="2">to be added</td>

<th><h2>SIGN</h2></th>

<td colspan="3">space</td>

</tr>

<tr>

<th><h2>RECEIVED BY</h2></th>

<td colspan="2">to be added</td>

<th><h2>ID no</h2></th>

<td colspan="2">to be added</td>

<th><h2>DATE</h2></th>

<td colspan="2">to be added</td>

<th><h2>SIGN</h2></th>

<td colspan="2">space</td>

</tr>

</table>

</xpath>

</odoo>

As I can see, you closed the template tag

<template id="report_payment_document_extend" inherit_id="account.report_payment_receipt_document"></template>

You should move the </template> to the end of the report as below:

<?xml version="1.0"?>

<odoo>

<template id="report_payment_document_extend" inherit_id="account.report_payment_receipt_document">

<!-- xpath to where I want the change -->

<xpath expr="//div[class='page']" position="inside">

<table class="table table-bordered">

<tr>

<th colspan="5">

<h1>PAYMENT VOUCHER</h1>

<span t-field="o.name"/></th>

<!-- t-field="res.company.logo" -->

<td colspan="3"><span t-field="res.company.logo"></span></td>

</tr>

<tr>

<th>

<h2>PAYEE NAME</h2>

</th>

<!-- name goes here -->

<td colspan="7"><span t-field="o.partner_id"/></td>

</tr>

<tr>

<th>

<h2>AMOUNT</h2>

</th>

<!-- amount goes here -->

<td colspan="7"><span t-field="o.amount" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/></td>

</tr>

<tr>

<th>

<h2>AMOUNT IN WORDS</h2>

</th>

<td colspan="7"></td>

</tr>

<tr>

<th rowspan="2"><h2>PAID IN</h2></th>

<th><h2>cash</h2></th>

<td><h2>to be added</h2></td>

<th><h2>cheque</h2></th>

<!-- <span><t-field="account.journal.Bank"></span> -->

<td><span t-field="o.journal.Bank"></span></td>

<th><h2>checkbox</h2></th>

<td><h2>x</h2></td>

<th><h2>mpesa</h2></th>

<td><h2>to</h2></td>

<tr>

<td colspan="2"></td>

<td colspan="2"><h2>Some amount</h2></td>

<td colspan="3"></td>

</tr>

</tr>

<tr>

<th><h2>BEING PAYMENT FOR</h2></th>

<td colspan="8"></td>

</tr>

</table>

<table class="table table-bordered">

<tbody>

<tr t-foreach="o.invoice_ids" t-as="inv">

<th><span><h2>Invoice Number</h2></span></th>

<td><span t-field="inv.number"></span></td>

<th><span><h2>Amount</h2></span></th>

<td><span t-field="inv.amount_total"></span></td>

</tr>

</tbody>

</table>

<br/>

<table class="table table-bordered">

<tr>

<th><h2>PREPARED BY</h2></th>

<td colspan="3">to be added</td>

<th><h2>DATE</h2></th>

<td colspan="2" t-if="o.payment_date"></td>

<th><h2>SIGN</h2></th>

<td colspan="3">space</td>

</tr>

<tr>

<th><h2>APPROVED BY</h2></th>

<td colspan="3">to be added</td>

<th><h2>DATE</h2></th>

<td colspan="2">to be added</td>

<th><h2>SIGN</h2></th>

<td colspan="3">space</td>

</tr>

<tr>

<th><h2>RECEIVED BY</h2></th>

<td colspan="2">to be added</td>

<th><h2>ID no</h2></th>

<td colspan="2">to be added</td>

<th><h2>DATE</h2></th>

<td colspan="2">to be added</td>

<th><h2>SIGN</h2></th>

<td colspan="2">space</td>

</tr>

</table>

</xpath>

</template>

</odoo>

Best Answer

Hi, I think your code is not working due to the below line as you have to put the module name

 <t t-name="report_payment_receipt_document" t-extend="report_payment_receipt_document">

it should be:

 <t  t-extend="account.report_payment_receipt_document">
 Here you will extend the report, but you have to use t-jquery sub-directives to determine where you will add your additions. 
</t>

example:

<t t-extend="base.template">
    <t t-jquery="ul" t-operation="append">
        <li>new element</li>
    </t>
</t>

Here you are the Qweb Tutorial:

https://www.odoo.com/documentation/12.0/reference/qweb.html#id3

Avatar
Discard