diff options
Diffstat (limited to 'addons/account/wizard/multi_compose_message.py')
| -rw-r--r-- | addons/account/wizard/multi_compose_message.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/addons/account/wizard/multi_compose_message.py b/addons/account/wizard/multi_compose_message.py new file mode 100644 index 00000000000..cdbae7610f2 --- /dev/null +++ b/addons/account/wizard/multi_compose_message.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +class MultiComposer(models.TransientModel): + + _name = 'multi.compose.message' + _inherit = 'mail.compose.message' + + company_id = fields.Many2one('res.company', string='Company', required=True, readonly=True, + default=lambda self: self.env.user.company_id.id) + is_email = fields.Boolean('Email', default=lambda self: self.env.user.company_id.is_email) + is_print = fields.Boolean('Print', default=lambda self: self.env.user.company_id.is_print) + printed = fields.Boolean('Is Printed', default=False) + partner_ids = fields.Many2many( + 'res.partner', 'account_compose_message_res_partner_rel', + 'wizard_id', 'partner_id', 'Additional Contacts') + attachment_ids = fields.Many2many( + 'ir.attachment', 'account_compose_message_ir_attachments_rel', + 'wizard_id', 'attachment_id', 'Attachments') + print_attachment_id = fields.Many2one('ir.attachment', string='Print Attachment') + + @api.multi + def _update_company(self): + for rec in self: + values = {} + for field in ['is_print', 'is_email']: + if rec.company_id[field] != rec[field]: + values.update({field: rec[field]}) + if values: + rec.company_id.write(values) + + @api.multi + def write(self, vals): + res = super(MultiComposer, self).write(vals) + self._update_company() + return res + + @api.multi + @api.onchange('template_id') + def onchange_template_id_wrapper(self): + self.ensure_one() + super(MultiComposer,self).onchange_template_id_wrapper() + self.print_attachment_id = self.attachment_ids[:1] + + def _send_email(self): + if self.is_email: + self.send_mail() + + @api.multi + def _print_document(self): + """ to override for each type of models that will use this composer.""" + self.ensure_one() + action = { + 'type': 'ir.actions.act_url', + 'url': '/web/content/%s?download=true' % (self.print_attachment_id.id), + 'target': 'new', + } + self.printed = True + return action + + @api.multi + def send_and_print_action(self): + self.ensure_one() + self._send_email() + return self._print_document() + + @api.multi + def send_action(self): + for wizard in self: + wizard._send_email() + return {'type': 'ir.actions.act_window_close'} + + @api.multi + def print_action(self): + self.ensure_one() + return self._print_document() |
