Odoo Help
Odoo is the world's easiest all-in-one management software. It includes hundreds of business apps:
CRM
|
e-Commerce
|
Accounting
|
Inventory
|
PoS
|
Project management
|
MRP
|
etc.
Can't override rml report
I created module that overrides default invoice and it should use different rml file making it easy to change without changing anything in original account module. But somehow it still used old rml file even though in settings/actions/reports, it shows that report is using my custom rml which is located in my module. When I edit my rml file, nothing changes. When I edit original rml file (that should be overriden and shouldn't affect what will be printed in invoice) it changes my printed invoice, when I edit my rml file nothing changes. Is something went wrong?
My module: print_invoice.py
import time
from openerp.report import report_sxw
class account_invoice(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(account_invoice, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
})
report_sxw.report_sxw(
'report.custom.account.invoice',
'account.invoice',
'addons/report_custom_invoice/report/account_print_invoice_custom.rml',
parser=account_invoice
)
xml file:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<report
auto="False"
id="account.account_invoices"
model="account.invoice"
name="custom.account.invoice"
rml="report_custom_invoice/report/account_print_invoice_custom.rml"
string="Invoices"
attachment="(object.state in ('open','paid')) and ('INV'+(object.number or '').replace('/','')+'.pdf')"
usage="default"
multi="True"
/>
</data>
</openerp>
__openerp__.py:
{
'name': 'Custom Invoice template',
'version': '1.0',
'depends': ['base_registry_code'],
'author': 'OERP',
'description': """
Account Print Invoice
==========================================
This module customizes default invoice. It adds company registry code in invoice template.
""",
'website': '',
'category': 'report',
'demo': [],
'test': [],
'data': ['account_invoice_report.xml'
],
'auto_install': False,
'installable': True,
}
Did you use OpenERP Version 7 ?
In V7 there are different solutions to print. (A top print button with pulldown list, B below print button eg red) Print Button A maybe disappear if multi="True". The report id is hard coded in the method called if you click on print button B.
I have overwritten the invoice_print method and changed the return value to my report. It works for me, maybe there are better solutions.
invoice.py
from osv import osv, fields
from tools.translate import _
class account_invoice(osv.osv):
_inherit='account.invoice'
_name='account.invoice'
def invoice_print(self, cr, uid, ids, context=None):
res = super(account_invoice, self).invoice_print( cr, uid, ids,context) #self, cr, uid, ids, context)
res["report_name"] = "custom.account.invoice"
return res
account_invoice()
__init__.py
import invoice
Yes I did use OpenERP 7. I used your code and it worked. Just needed a bit of modifications, because newer openerp revisions changed where osv and tools are located. Now it should be:
from openerp.osv import osv, fields
from openerp.tools.translate import _
.Thanks.
I tried your code and I have doubt that you didn't add your xml file in __openerp__.py
.
There is one more thing you need to change in xml that is you need to remove multi="True"
. Else everything is ok.
multi="True"
is used when you want to remove your report from Print option in form view.
Make this changes, restart server and update your module.
Inherit Custom RML Report this may be help you.
Don't understan't why it does not work. I removed multi="True"
. I updated my answer with __openerp__.py file data.
Hi,
see this subject Change report in a custom module?
I looked into this this one. But it seems like its code is the same as mine (just for different report)
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.
RegisterOdoo Training Center
Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.
Test it nowQuestion tools
Stats
Asked: 6/7/13, 6:15 AM |
Seen: 6290 times |
Last updated: 3/16/15, 8:10 AM |
Make sure you have import py file in
__init__.py
.I have import py file in report/__init__.py
Did you add xml file in
__openerp__.py
?