Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
3 Odpovědi
10403 Zobrazení

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,
}
Avatar
Zrušit

Make sure you have import py file in __init__.py.

Autor

I have import py file in report/__init__.py

Did you add xml file in __openerp__.py?

Nejlepší odpověď

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
Avatar
Zrušit
Autor

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.

Nejlepší odpověď

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.

Avatar
Zrušit
Autor

Don't understan't why it does not work. I removed multi="True". I updated my answer with __openerp__.py file data.

Nejlepší odpověď

Hi,

see this subject Change report in a custom module?

Avatar
Zrušit
Autor

I looked into this this one. But it seems like its code is the same as mine (just for different report)

Related Posts Odpovědi Zobrazení Aktivita
1
kvě 17
8024
2
srp 15
9418
2
bře 15
9103
4
pro 23
14925
1
dub 22
1285