80 lines
2.6 KiB
Python
80 lines
2.6 KiB
Python
# -*- 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()
|