diff --git a/addons/snailmail/i18n/snailmail.pot b/addons/snailmail/i18n/snailmail.pot
index abe2e48530c..9fe6b510e64 100644
--- a/addons/snailmail/i18n/snailmail.pot
+++ b/addons/snailmail/i18n/snailmail.pot
@@ -18,7 +18,7 @@ msgstr ""
#. module: snailmail
#: code:addons/snailmail/models/snailmail_letter.py:249
#, python-format
-msgid "An error occured when sending the document by post.
Error: %s"
+msgid "An error occured when sending the document by post.
Error: %s
Go to 'Configuration > Management > Snailmail Letters' to see all letters awaiting dispatch to Snailmail."
msgstr ""
#. module: snailmail
@@ -28,7 +28,9 @@ msgid "An unknown error happened. Please contact the support."
msgstr ""
#. module: snailmail
+#: code:addons/snailmail/models/snailmail_letter.py:343
#: model:ir.model.fields,field_description:snailmail.field_snailmail_letter__attachment_id
+#, python-format
msgid "Attachment"
msgstr ""
@@ -103,6 +105,12 @@ msgstr ""
msgid "Display Name"
msgstr ""
+#. module: snailmail
+#: model_terms:ir.ui.view,arch_db:snailmail.snailmail_letter_form
+#: model_terms:ir.ui.view,arch_db:snailmail.snailmail_letter_list
+msgid "Document"
+msgstr ""
+
#. module: snailmail
#: model:ir.model.fields,field_description:snailmail.field_snailmail_letter__res_id
msgid "Document ID"
@@ -149,8 +157,6 @@ msgid "Last Updated on"
msgstr ""
#. module: snailmail
-#: model:ir.actions.act_window,name:snailmail.action_mail_letters
-#: model:ir.ui.menu,name:snailmail.menu_snailmail_letters
#: model_terms:ir.ui.view,arch_db:snailmail.snailmail_letter_list
msgid "Letters"
msgstr ""
@@ -217,11 +223,22 @@ msgstr ""
msgid "Sent"
msgstr ""
+#. module: snailmail
+#: model:ir.model.fields,field_description:snailmail.field_snailmail_letter__user_id
+msgid "Sent by"
+msgstr ""
+
#. module: snailmail
#: model:ir.model,name:snailmail.model_snailmail_letter
msgid "Snailmail Letter"
msgstr ""
+#. module: snailmail
+#: model:ir.actions.act_window,name:snailmail.action_mail_letters
+#: model:ir.ui.menu,name:snailmail.menu_snailmail_letters
+msgid "Snailmail Letters"
+msgstr ""
+
#. module: snailmail
#: model:ir.actions.server,name:snailmail.snailmail_print_ir_actions_server
#: model:ir.cron,cron_name:snailmail.snailmail_print
@@ -253,8 +270,8 @@ msgid "The document was correctly sent by post.
The tracking id is %ssend_id"
msgstr ""
#. module: snailmail
-#: model:ir.model.fields,field_description:snailmail.field_snailmail_letter__user_id
-msgid "User sending the letter"
+#: model:ir.model.fields,field_description:snailmail.field_snailmail_letter__title
+msgid "Title"
msgstr ""
#. module: snailmail
diff --git a/addons/snailmail/models/snailmail_letter.py b/addons/snailmail/models/snailmail_letter.py
index 2b57ff70a5a..1524b26ab1e 100644
--- a/addons/snailmail/models/snailmail_letter.py
+++ b/addons/snailmail/models/snailmail_letter.py
@@ -18,7 +18,7 @@ class SnailmailLetter(models.Model):
_name = 'snailmail.letter'
_description = 'Snailmail Letter'
- user_id = fields.Many2one('res.users', 'User sending the letter')
+ user_id = fields.Many2one('res.users', 'Sent by')
model = fields.Char('Model', required=True)
res_id = fields.Integer('Document ID', required=True)
partner_id = fields.Many2one('res.partner', string='Recipient', required=True)
@@ -27,6 +27,9 @@ class SnailmailLetter(models.Model):
report_template = fields.Many2one('ir.actions.report', 'Optional report to print and attach')
attachment_id = fields.Many2one('ir.attachment', string='Attachment', ondelete='cascade')
+ attachment_datas = fields.Binary('Document', related='attachment_id.datas')
+ attachment_fname = fields.Char('Attachment Filename', related='attachment_id.datas_fname')
+ activity_id = fields.Many2one('mail.activity', string='Activity')
color = fields.Boolean(string='Color', default=lambda self: self.env.user.company_id.snailmail_color)
duplex = fields.Boolean(string='Both side', default=lambda self: self.env.user.company_id.snailmail_duplex)
state = fields.Selection([
@@ -40,7 +43,23 @@ class SnailmailLetter(models.Model):
"If the letter is correctly sent, the status goes in 'Sent',\n"
"If not, it will got in state 'Error' and the error message will be displayed in the field 'Error Message'.")
info_msg = fields.Char('Information')
+ display_name = fields.Char('Display Name', compute="_compute_display_name")
+ reference = fields.Char(string='Related Record', compute='_compute_reference', readonly=True, store=False)
+
+ @api.depends('reference', 'partner_id')
+ def _compute_display_name(self):
+ for letter in self:
+ if letter.attachment_id:
+ letter.display_name = "%s - %s" % (letter.attachment_id.name, letter.partner_id.name)
+ else:
+ letter.display_name = letter.partner_id.name
+
+ @api.depends('model', 'res_id')
+ def _compute_reference(self):
+ for res in self:
+ res.reference = "%s,%s" % (res.model, res.res_id)
+
@api.multi
def _fetch_attachment(self):
"""
@@ -245,7 +264,7 @@ class SnailmailLetter(models.Model):
else:
# look for existing activities related to snailmail to update or create a new one.
# TODO: in following versions, Add a link to a specifc activity on the letter
- note = _('An error occured when sending the document by post.
Error: %s' % \
+ note = _('An error occured when sending the document by post.
Error: %s
Go to \'Configuration > Management > Snailmail Letters\' to see all letters awaiting dispatch to Snailmail.' % \
self._get_error_message(doc['error'] if response['request_code'] == 200 else response['reason']))
domain = [
@@ -254,8 +273,7 @@ class SnailmailLetter(models.Model):
('res_model_id', '=', self.env['ir.model']._get(letter.model).id),
('activity_type_id', '=', self.env.ref('mail.mail_activity_data_warning').id),
]
- MailActivity = self.env['mail.activity']
- activity = MailActivity.search(domain, limit=1)
+ activity = letter.activity_id
activity_data = {
'activity_type_id': self.env.ref('mail.mail_activity_data_warning').id,
@@ -271,7 +289,8 @@ class SnailmailLetter(models.Model):
'res_id': letter.res_id,
'res_model_id': self.env['ir.model']._get(letter.model).id,
})
- MailActivity.create(activity_data)
+ activity = self.env['mail.activity'].create(activity_data)
+ letter.write({'activity_id': activity.id})
letter.write({'info_msg': note, 'state': 'error'})
@@ -285,6 +304,11 @@ class SnailmailLetter(models.Model):
def cancel(self):
self.write({'state': 'canceled'})
+ @api.multi
+ def unlink(self):
+ self.mapped('activity_id').unlink()
+ super(SnailmailLetter, self).unlink()
+
@api.multi
def _snailmail_estimate(self):
"""
diff --git a/addons/snailmail/views/snailmail_views.xml b/addons/snailmail/views/snailmail_views.xml
index 7a230c2f706..0462b1b70ee 100644
--- a/addons/snailmail/views/snailmail_views.xml
+++ b/addons/snailmail/views/snailmail_views.xml
@@ -5,11 +5,10 @@
snailmail.letter
-
-
-
-
-
+
+
+
+
@@ -26,16 +25,22 @@
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
-
+
+
+
+
+
+
@@ -43,7 +48,7 @@
- Letters
+ Snailmail Letters
snailmail.letter
form
form,tree
diff --git a/addons/snailmail_account/__manifest__.py b/addons/snailmail_account/__manifest__.py
index 5f71dd9eacf..685cdbbb427 100644
--- a/addons/snailmail_account/__manifest__.py
+++ b/addons/snailmail_account/__manifest__.py
@@ -10,6 +10,7 @@ Allows users to send invoices by post
'depends': ['account', 'snailmail'],
'data': [
'views/res_config_settings_views.xml',
+ 'views/snailmail_views.xml',
'wizard/account_invoice_send_views.xml',
],
'auto_install': True,
diff --git a/addons/snailmail_account/views/snailmail_views.xml b/addons/snailmail_account/views/snailmail_views.xml
new file mode 100644
index 00000000000..21880755771
--- /dev/null
+++ b/addons/snailmail_account/views/snailmail_views.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Snailmail Letters
+ snailmail.letter
+ form
+ form,tree
+ [('state', '!=', 'draft'), ('model','=','account.invoice')]
+
+
+
+
+
+
\ No newline at end of file