From 2dfa7cd597980338fa5db4809d7b4bda07a2417c Mon Sep 17 00:00:00 2001 From: "Antoine Prieels (ANP)" Date: Tue, 23 Oct 2018 07:32:20 +0000 Subject: [PATCH] [IMP] snailmail: Add form and tree views for snailmail.letter Add new form and tree views for snailmail.letter available in Accounting > Configuration > Management > Snailmail Letters Add a many2one field to snailmail.letter to link to a mail.activity in case of an error with snailmail Task #1892473 --- addons/snailmail/i18n/snailmail.pot | 27 ++++++++++++--- addons/snailmail/models/snailmail_letter.py | 34 ++++++++++++++++--- addons/snailmail/views/snailmail_views.xml | 33 ++++++++++-------- addons/snailmail_account/__manifest__.py | 1 + .../views/snailmail_views.xml | 16 +++++++++ 5 files changed, 87 insertions(+), 24 deletions(-) create mode 100644 addons/snailmail_account/views/snailmail_views.xml 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