This question has been flagged
2 Replies
13173 Views

Hi, I need to show and save the report in same form page, how to do that.

Avatar
Discard
Best Answer

You could do it like this example for sale.order report generated as preview when pressing the preview button:

from openerp import models, fields, api

class report_sale_preview(models.Model):

_inherit = 'sale.order'

preview = fields.Html('Report Preview')

@api.multi

def generate_preview(self):

html = self.env['report'].get_html(self, 'sale.report_saleorder')

self.write({'preview': html})

return True

And in the view

<?xml version="1.0" encoding="UTF-8"?>

<openerp>

<data>

<record model="ir.ui.view" id="solt_report_preview_form_view">

<field name="name">sale.order.report.preview.form</field>

<field name="model">sale.order</field>

<field name="inherit_id" ref="sale.view_order_form"/>

<field name="arch" type="xml">

<xpath expr="//page[1]" position="after">

<page string="Report Preview">

<header>

<button name="generate_preview" type="object" string="Preview"/>

</header>

<sheet>

<field name="preview"/>

</sheet>

</page>

</xpath>

</field>

</record>

</data>

</openerp>

The result is something like this:

Avatar
Discard

how do i do this on odoo 12?

I tried to do the same thing and the result is:

{'context': {'lang': 'en_US', 'tz': 'Europe / Brussels',' uid ': 2,' active_ids': [57]}, 'data': None, 'type': ' ir.actions.report ',' report_name ':' ipc_eoffice.selain_surat_dinas_report ',' report_type ':' qweb-html ',' report_file ':' ipc_eoffice.selain_surat_dinas_report ',' report 'type': 'qweb-html', 'report_file': 'ipc_eoffice.selain_surat_dinas_report', 'report' type: 'qweb-html Report'}

This is my method:

@ api.multi

def print_report (self):

if self.jenis_name in ['Official Letter', 'DINAS LETTER']:

# html = self.env ['web']. get_html (self, 'ipc_eoffice.surat_dinas_report_template')

html = self.env.ref ('ipc_eoffice.surat_dinas_report'). report_action (self)

self.update ({'preview': html})

self.preview = html

# return self.env.ref ('ipc_eoffice.surat_dinas_report'). report_action (self)

html return

When I added that code to my Odoo project when I try to access the report preview I get this error (I have Odoo 15):

RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/home/odoo/src/odoo/odoo/http.py", line 698, in dispatch
result = self._call_function(**self.params)
File "/home/odoo/src/odoo/odoo/http.py", line 368, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/odoo/src/odoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/home/odoo/src/odoo/odoo/http.py", line 357, in checked_call
result = self.endpoint(*a, **kw)
File "/home/odoo/src/odoo/odoo/http.py", line 921, in __call__
return self.method(*args, **kw)
File "/home/odoo/src/odoo/odoo/http.py", line 546, in response_wrap
response = f(*args, **kw)
File "/home/odoo/src/odoo/addons/web/controllers/main.py", line 1328, in call_button
action = self._call_kw(model, method, args, kwargs)
File "/home/odoo/src/odoo/addons/web/controllers/main.py", line 1316, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 471, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 456, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/odoo/src/user/camposmc/models/models.py", line 36, in generate_preview
html = self.env['report'].get_html(self, 'sale.report_saleorder')
File "/home/odoo/src/odoo/odoo/api.py", line 552, in __getitem__
return self.registry[model_name]._browse(self, (), ())
File "/home/odoo/src/odoo/odoo/modules/registry.py", line 182, in __getitem__
return self.models[model_name]
Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/http.py", line 654, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/odoo/src/odoo/odoo/http.py", line 301, in _handle_exception
raise exception.with_traceback(None) from new_cause
KeyError: 'report'

Best Answer

Hi Axel,

    Please help do it on ver13

Thanks

Avatar
Discard

Hello,

Try to inherit the form view of the sale.order model and add the following lines:

<xpath expr="//div[hasclass('oe_chatter')]" position="before">

<div class="o_attachment_preview" options="{ 'order': 'desc' }"/>

</xpath>

Regards,

Hello,
    Thanks for your reply.
    BTW, do you know how to increase the column width in form/tree view please?
Thanks,


On Tuesday, May 25, 2021, 10:00:28 PM GMT+7, Hanane Barrah <hananbarah@gmail.com> wrote:


Hello,

Try to inherit the form view of the sale.order model and add the following lines:

<xpath expr="//div[hasclass('oe_chatter')]" position="before">

<div class="o_attachment_preview" options="{ 'order': 'desc' }"/>

</xpath>

Regards,

Envoyé par Odoo S.A. utilisant Odoo.