This question has been flagged
2 Replies
19380 Views

I want to put my report in a module to migrate it, please help me.

Avatar
Discard
Best Answer

To be able to successfully install your custom reports into any openERP database you need the following:

  1. You need to have the openERP Report Designer installed into your current database(module name:OpenOffice Report Designer - base_report_designer)

  2. Install the plugin provided by the module into LibreOffice/OpenOffice from Tools->Extension Manager, restart the office suit.

  3. A new menu should appear 'OpenERP Report Designer', Connect to the current database by clicking on 'Server Parameters'.

  4. After that you can create a new report or modify existing one.

You should create three files in order to create a new report, see the following example.

Part 1: Creating the report

.sxw file: this file will help you createing the report layout and to generate the .rml file later on.(e.g new_report.sxw)

.rml file: this file can be generated from .sxw file by clicking on OpenERP Report Designer->Export to RML.(e.g new_report.rml)

.py file: (e.g new_report.py) Example

# -*- coding: utf-8 -*-

import time
from openerp.report import report_sxw

class new_report(report_sxw.rml_parse):
    def __init__(self, cr, uid, name, context):
        super(new_report, self).__init__(cr, uid, name, context=context)
        self.localcontext.update( {'time': time,})

report_sxw.report_sxw('report.new_report', 'account.move',
                      'addons/my_reports/new_report.rml',
                      parser=new_report)

Part 2: Defining the report

You need to create a new python package under addons directory.(e.g my_reports), example:

my_reports.__init__.py : this file must import the python file we previously created.

import new_report

my_reports.__openerp__.py : this file contains informations about our new module.

{
    'name' : 'Zakaria Custom Reports',
    'version' : '1.0',
    'category' : 'Extra Reports',
    'author'  : 'Zakaria',
    'license' : 'AGPL-3',
    'depends' : ['base',],
    'update_xml' : ['my_reports_reports.xml',],
    'installable': True,
    'application': True,
    'auto_install': False,
    'description': '''
This module adds new reports.
============================================================
    '''
}

my_reports.my_reports_reports.xml : this file will define the new report in the database by adding a new record to ir_act_report_xml table.

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <report 
        auto="False" 
        id="new_report_id" 
        model="account.move" 
        name="new_report" 
        rml="my_reports/new_report.rml" 
        string="New Report"/>
    </data>
</openerp>

Now go to settings->Update Module List then go to settings->installed modules and remove the filter 'Installed' then find your module (Zakaria Custom Reports - my_reports) and install it.

Its good idea to take a look at my module as example, it has two reports one for printing the 'Journal Entries' and the other for printing product moves, DOWNLOAD

Hope this will help you..%

UPDATE You need the RML file for the modified report "invoice.invoice", then you need to create a new module that contains the RML file and an XML. but the XML must follow the following form.

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data noupdate="0">
        <report
        auto="False"
        id="account.account_invoices"
        model="account.invoice"
        name="account.invoice"
        rml="extra_reports/reports/account_print_invoice.rml"
        string="Invoices"/>
    <data>
<openerp>

Notice the following:

  • noupdate="0" : this will search for the report id first, if found then update, else create new record.
  • id="account.account_invoices" : the original report id is "account_invoices", but as we are out side the original module we need to add the original module name to the id.

Now go to database, ir_act_window_report_xml and make sure that your report overwrite the original one and not add to the list. Final Note: make sure to set attachment_use column to FALSE.

Avatar
Discard
Author

Thank you Anas for the reply, but I do not want to create a new report, what I did was is : changed the report invoice.invoice with openoffice on my database ,and added some fields on my page Customers invoice in openerp, and Now I want to deliver this to another database on another openerp server. Can you help to do this?

I feel stupid even for asking this, but after following all the steps where I am suppose to see the "link" to actually generate the report? Thanks and sorry.

Hi Anas,,Can i get a report to show daily reports for payments,refunds and to show the total cash expected daily

Best Answer

What we did was export the invoice to a .csv. - go to Settings > Technical > Actions > Reports. - search for 'Invoice' in the search bar to insure thats the only one you export - click the tick box next to the report (while still viewing as a list) - Under the 'More' option, choose 'Export' - Export all the required fields, (including the rml and sxw)

You can then chuck it in a module for importing with your data OR manually import by going back to Settings > Technical > Actions > Report with 'base.import' installed and click the 'Import' button

Avatar
Discard

Please Suggest me solution for this query..When I make changes for the customer and supplier invoice reporting it automatically sometimes changes for refunds also as both uses the invoice same object.. I want the refunds and invoices reports to be different . please let me know how to fix it asap??

Depends how different you want them to look. If its just small changes, try using the Report designer and adding in statements checking the type before displaying different parts. For example, the headings are currently changed depending on whether the report is for refunds or invoice, using statements like [[ (o.type=='in_refund' or removeParentNode('para')) ]]

I need to change the headings for invoice and refunds but when I make changes in invoice report it also reflects in refund..I need help that how to make them same.Please give the statements required to do it and where in .sxw or .rml..response awaited..

If you have the report designer working, using that is a lot easier. Our company has had some difficulty with it, so have ended up finding changing the rml directly easier. Have a look at /addons/account/report/account_print_invoice.rml, lines 172-178 are doing what you describe. Just copy that into the place you want to change, and adapt it to your needs. Save the file, and the invoice/refund should show the changes immediately.

thank you for this response and please if u can tell about this issue-Inventory Report Print in PDF and Excel in OpenERP..As we Click on the print command for inventory it doesn't show any progress because i think this functionaity is not included in it.How to do this pleasee suggest??

Based on this example i created report module for my own module...i just want to print my report but not to fetch any data.....when i try to install module i get xml architecture https://www.dropbox.com/sh/x90ykrocworffkz/rusLpiXGVE.....please some one help me