0

I am trying to do my own custom report in odoo 8 after migrating from openErp 7. I have followed this tutorial but I am stuck to step 3 at the very beginnig getting an error from the server with the following trace

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 177, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 165, in execute
    application_iter = app(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/openerp/service/server.py", line 281, in app
    return self.app(e, s)
  File "/usr/lib/python2.7/dist-packages/openerp/service/wsgi_server.py", line 216, in application
    return application_unproxied(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/openerp/service/wsgi_server.py", line 202, in application_unproxied
    result = handler(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1280, in __call__
    return self.dispatch(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1254, in __call__
    return self.app(environ, start_wrapped)
  File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 588, in __call__
    return self.app(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1421, in dispatch
    result = ir_http._dispatch()
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 168, in _dispatch
    return self._handle_exception(e)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 138, in _handle_exception
    return request._handle_exception(exception)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 659, in _handle_exception
    return super(HttpRequest, self)._handle_exception(exception)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 164, in _dispatch
    result = request.dispatch()
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 677, in dispatch
    r = self._call_function(**self.params)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 303, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 300, in checked_call
    return self.endpoint(*a, **kw)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 796, in __call__
    return self.method(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 396, in response_wrap
    response = f(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/report/controllers/main.py", line 62, in report_routes
    html = report_obj.get_html(cr, uid, docids, reportname, data=options_data, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/report/models/report.py", line 175, in get_html
    return self.render(cr, uid, [], report.report_name, docargs, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/report/models/report.py", line 151, in render
    return view_obj.render(cr, uid, template, values, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 1029, in render
    return self.pool[engine].render(cr, uid, id_or_xml_id, qcontext, loader=loader, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 259, in render
    return self.render_node(self.get_template(id_or_xml_id, qwebcontext), qwebcontext)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 188, in get_template
    xml_doc = qwebcontext.loader(name)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 1027, in loader
    return self.read_template(cr, uid, name, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "<string>", line 2, in read_template

  File "/usr/lib/python2.7/dist-packages/openerp/tools/cache.py", line 121, in lookup
    value = d[key] = self.method(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 859, in read_template
    arch = self.read_combined(cr, uid, view_id, fields=['arch'], context=context)['arch']
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 524, in read_combined
    while v.mode != 'primary':
  File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 823, in __get__
    return record._cache[self]
  File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 5906, in __getitem__
    return value.get() if isinstance(value, SpecialValue) else value
  File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 55, in get
    raise self.exception
MissingError: ('MissingError', u'One of the documents you are trying to access has been deleted, please try again after refreshing.')

This looks similar to this SO question which answer so far is not very helpful for a not very python oriented coder...

Community
  • 1
  • 1
Yves Nicolas
  • 6,901
  • 7
  • 25
  • 40

2 Answers2

2

I think This Will help you.

Step: 1 Create menu for Report menu :

       <report
        id="action_report_id"
        model="model name"
        string="Report Name"
        report_type="qweb-pdf"
        name="module name.report_template_id"
        file="module name.report_template_id"
        />

Step 2 : Create .py file for call report template and method like this :

class custom_class_name(report_sxw.rml_parse):


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



class test_report_class_name(osv.AbstractModel):
    _name = 'report.module_name.report_template_id'
    _inherit = 'report.abstract_report'
    _template = 'module_name.report_template_id'
    _wrapped_report_class = custom_class_name

Step: 3 Create template in xml file for report view like this :

 <?xml version="1.0" encoding="utf-8"?>
 <openerp>
    <data>
        <template id="report_template_id">
            <t t-foreach="docs" t-as="o">
                <div class="page">
                    <div class="row">
                        <div class="col-xs-6">
                             <span> Your Report View</span>
                        </div>
                    </div>              
                </div>
            </t>
        </template>
     </data>
  </openerp>
  • Thanks for the hint. I think I am looking in the totally wrong direction here. Even the basic non modified invoices report doesnt print the header correctly. Actually doesnt print the header at all. As I am using a Docker image here, I was wondering whether Qweb had possibly a problem finding the static css stylesheets. I will be posting the question on the docker hub official image site.... – Yves Nicolas Sep 02 '15 at 10:40
  • For Header Footer you have to do like this : – Parikshit Vaghasiya Sep 03 '15 at 05:30
  • Now, Code for Custom Header and Footer : – Parikshit Vaghasiya Sep 03 '15 at 05:31
0

Did you read the Odoo Documentation for QWeb Reports?

<!-- Report "Human readable name" document template -->
<record id="view_model_document_qweb" model="ir.ui.view">
    <field name="name">Human readable name</field>
    <field name="model">model</field>
    <field name="type">qweb</field>
    <field name="mode">primary</field>
    <field name="priority" eval="16" />
    <field name="active" eval="True" />
    <field name="arch" type="xml">
        <t t-name="module.view_model_document_qweb">
            <t t-call="report.external_layout">
                <div class="page">
                    <h2>Report title</h2>
                    <p>This object's name is <span t-field="o.name"/></p>
                </div>
            </t>
        </t>
    </field>
</record>

<!-- Report "Human readable name" translate_doc template -->
<record id="view_model_qweb" model="ir.ui.view">
    <field name="name">Human readable name</field>
    <field name="model">model</field>
    <field name="type">qweb</field>
    <field name="mode">primary</field>
    <field name="priority" eval="16" />
    <field name="active" eval="True" />
    <field name="arch" type="xml">
        <t t-name="module.view_model_qweb">
            <t t-call="report.html_container">
                <t t-foreach="doc_ids" t-as="doc_id">
                    <t t-raw="translate_doc(doc_id, doc_model, 'lang', 'module.view_model_document_qweb')"/>
                </t>
            </t>
        </t>
    </field>
</record>

<!-- Report action to show: "Human readable name" -->
<record id="action_report_human_readable_name" model="ir.actions.report.xml">
    <field name="name">Human readable name</field>
    <field name="model">model</field>
    <field name="report_type">qweb-pdf</field>
    <field name="report_name">module.view_model_qweb</field>
    <field name="attachment_use" eval="True" />
    <field name="attachment">(object.name+'.pdf')</field>
    <field name="paperformat_id" ref="report.paperformat_euro" />
    <field name="help">Something about Human readable name</field>
</record>

<!-- Button to print the report: "Human readable name" -->
<record id="human_readable_name_values" model="ir.values">
    <field name="name">Human readable name</field>
    <field name="model_id" ref="module.model_model" />
    <field name="model">model</field>
    <field name="value" eval="'ir.actions.report.xml,' +str(ref('action_report_human_readable_name'))" />
    <field name="key">action</field>
    <field name="key2">client_print_multi</field>
</record>

I brought the snippet from here

ChesuCR
  • 9,352
  • 5
  • 51
  • 114
  • 1
    While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. – Natali Aug 19 '15 at 08:02
  • OK, I will add the main parts to the answer – ChesuCR Aug 19 '15 at 08:08