Odoo Help


How to add all the employees in an rml report??

Vale Trood
on 8/25/15, 10:23 AM 899 views


I work with a class named test_example:

class test_example(osv.osv):

_name = 'test.example'

_columns = {

'date_start': fields.date('Date Start ',size=256),

'date_end': fields.date('Date End ',size=256),

'company_id': fields.many2one('res.company', string ="Company Name",size=256),


I want to create a report which will contains all the employees of the selected company.

Please help

I really need an answer please

Please don't create double posts for exactly the same.. You could have easily modified your initial topic and added this code.

on 8/25/15, 10:28 AM

try to answer !!!

Vale Trood
on 8/25/15, 10:34 AM

Sorry but I never work with RML reports. They're from V7 and will soon be deprecated so I never use them.. Can't answer this one for you.

on 8/25/15, 10:37 AM

Axel Mendoza

--Axel Mendoza--
| 7 8 8
Camaguey, Cuba
--Axel Mendoza--

DevOps - Full stack - Software Architect - Developer - Technology Integrator

I could help you to develop anything and solve complex problems based on technologies, integrations and tricky stuffs mostly in Python with OpenERP/Odoo, Zato, Django and many others frameworks programming languages and technologies.

I offers consulting services to anyone with an unanswered questions or needs for customizations. Think about it, maybe it's better to have an expert to solve your issues and projects than having a full-time employee trying to understand what to do and how

Reach me at aekroft@gmail.com

Axel Mendoza
On 8/25/15, 11:59 AM

First for every report you need a source for the report, because you need all the employees of an specific company first you need to select the company in a wizard like form that have the print button or you could use the company form itself. You need to define what will be the model of the report, could be res.company or hr.employee. More direct solution is to define the report on the hr.employee (that not means that the print button need to be in the employee form, just the type of records that you iterate on the report). Next in your case you need to filter the employees by the selected company. That's better in a wizard like form, you select the company, clic on the print button that call a method in your wizard and search the employees ids filtering by the selected company and pass it to the report by the context, something like this:

    def print_btn(self, cr, uid, ids, context=None):
company_id = self.browse(cr, uid, ids, context=context)[0].company_id
employee_ids = self.pool.get('hr.employee').search(cr, uid, [('company_id','=',company_id)])
context = dict(context or {}, active_ids=employee_ids)
return { 'type': 'ir.actions.report.xml', 'report_name': 'employee.report', 'context': context, }

next you just need to define your rml report in xml and the report itself. For iterate on the employees:

<?xml version="1.0"?>
<document filename="test.pdf">
  <template title="Employees" author="Soltein" allowSplitting="20">
    <pageTemplate id="first">
      	    <image x="20" y="760" height="70.0">[[company.logo]]</image>
      	    <rect x="15" y="750" width="410" height="3" fill="yes" stroke="yes"/>
      	    <rect x="425" y="746" width="155" height="12" fill="yes" stroke="yes"/>
      	    <setFont name="Helvetica" size="8"/>
      	    <drawRightString x="550" y="15">Pág.: <pageNumber/> / <pageCount/></drawRightString>
      	    <fill color="white"/>
      	    <setFont name="Helvetica-Bold" size="9"/>
      	    <drawString x="440" y="750">[[company.website]]</drawString>
      <frame id="first" x1="15.0" y1="20.0" width="560" height="800"/>
<blockTable colWidths="534.0"> <tr> <td> <para>Name</para> </td> </tr> </blockTable>
<blockTable colWidths="534.0"> <tr>[[ repeatIn(objects,'o') ]] <td> <para>[[ o.name ]]</para> </td> </tr> </blockTable> 
</story> </document>

That is a very simple report template, you could add more columns to the blocktable and don't forget to change colwidths with a value for every column that you put in the blocktable. You will be iterating for every employee as 'o' and to output any field of the employee you use this syntax [[ o.field ]]

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

2 follower(s)


Asked: 8/25/15, 10:23 AM
Seen: 899 times
Last updated: 8/26/15, 3:41 AM