Hi, I need to show and save the report in same form page, how to do that.
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
This question has been flagged
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:
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'
Hi Axel,
Please help do it on ver13
Thanks
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,
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,