Odoo Help

Welcome!

This community 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.

-2

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

By
Drees Far
on 8/25/15, 10:23 AM 525 views

Hello!!

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.

Yenthe
on 8/25/15, 10:28 AM

try to answer !!!

Drees Far
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.

Yenthe
on 8/25/15, 10:37 AM
1

Axel Mendoza

--Axel Mendoza--
10323
| 7 7 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 an 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">
      	<pageGraphics>
      	    <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>
	    </pageGraphics>
      <frame id="first" x1="15.0" y1="20.0" width="560" height="800"/>
    </pageTemplate>
  </template>
<story>
<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 ]]

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

2 follower(s)

Stats

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