Skip to Content
Menu
This question has been flagged

I have a report in account.invoice which have a wizard of model invoice.details.

While the report is printed I need to automatically attach the file to the attachment drop down of corresponding invoice.

How is this possible? Anyone have idea?

Avatar
Discard
Best Answer

Hi,

For the reports  to save in the attachments button in the top of the form view, add a attachments in the report tag you have given for the report.

<report     
string="Request for Quotation"
id="report_purchase_quotation"
model="purchase.order"
report_type="qweb-pdf"
name="purchase.report_purchasequotation"
file="purchase.report_purchasequotation"
attachment="(object.name + '_test_report.pdf')"/>/>

Normally this will save the downloaded reports to  the attachments button, see Quotation /Order in sales.

For attachments button to visible in all view, install the module document(technical name)

Check whether it will work in your case.

This is a sample code for creating an attachment and it will show in attachment button in top of the form too

attachment_model = request.env['ir.attachment']
byte_str = kw['attachments[4]'].read()
uploaded_file = base64.encodestring(byte_str)
vals = {
'name': kw['attachments[4]'].filename,
'res_model': model_name,
'res_id': new_record.id,
'datas': uploaded_file}
attachments_record = attachment_model.sudo().create(vals)

Thanks

Avatar
Discard
Author

I have tried this and didn't worked. I have to do it from the code

just updated the answer, check it can help you or not

Author

I have tried the code below. I get error showing 'my.model' object has no attribute 'custom_name'.

I am calling this function from print function in my wizard and my wizard have field 'custom_name'. Wizard is called from 'my.model' form view.

def attach_report(self):

attachment_obj = self.env['ir.attachment']

for record in self:

ir_actions_report = self.env['ir.actions.report.xml']

matching_reports = ir_actions_report.search([('report_name','=','module_name.report_template')])

if matching_reports:

report = matching_reports[0]

report_service = report.report_name

result, format = odoo_report.render_report(self._cr, self._uid, [record.id], report_service, {'model': self._name}, self._context)

eval_context = {'time': time, 'object': record}

if not report.attachment or not eval(report.attachment, eval_context):

# no auto-saving of report as attachment, need to do it manually

result = base64.b64encode(result)

file_name = re.sub(r'[^a-zA-Z0-9_-]', '_', "Report Name Here")

file_name += ".pdf"

attachment_id = attachment_obj.create({

'name': file_name,

'datas': result,

'datas_fname': file_name,

'res_model': 'my.model',

'res_id': self._context.get('active_id', False),

'type': 'binary'

})

return True

Author

I know how to use this. But it is attaching to the model of wizard. I want it to attach to the corresponding record from which the report is called.

<report

string="Request for Quotation"

id="report_purchase_quotation"

model="purchase.order"

report_type="qweb-pdf"

name="purchase.report_purchasequotation"

file="purchase.report_purchasequotation"

attachment="(object.name + '_test_report.pdf')"/>/>

how to attach a pdf file to a report?

i just want to add spec sheet of a product to the product report

Related Posts Replies Views Activity
0
Jan 19
1899
0
Nov 18
2166
4
Aug 18
7315
1
Nov 17
8508
6
Dec 23
18632