[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
This commit is contained in:
committed by
Rémi Rahir
parent
182b4d86f4
commit
2dfa7cd597
@@ -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.<br>Error: %s"
|
||||
msgid "An error occured when sending the document by post.<br>Error: %s <br>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.<br>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
|
||||
|
||||
@@ -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.<br>Error: %s' % \
|
||||
note = _('An error occured when sending the document by post.<br>Error: %s <br>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):
|
||||
"""
|
||||
|
||||
@@ -5,11 +5,10 @@
|
||||
<field name="model">snailmail.letter</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree decoration-danger="state=='error'" decoration-muted="state=='sent'" string="Letters">
|
||||
<field name="attachment_id"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
<field name="company_id"/>
|
||||
<field name="state"/>
|
||||
<field name="attachment_id" string="Document"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="info_msg" widget="html"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -26,16 +25,22 @@
|
||||
<field name="state" widget="statusbar" statusbar_visible="pending,sent,cancel"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<h1><field name="display_name" readonly="1"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<field name="attachment_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
<field name="color"/>
|
||||
<field name="duplex"/>
|
||||
<field name="reference" widget="reference" readonly="1"/>
|
||||
<field name="attachment_datas" filename="attachment_fname" readonly="1" />
|
||||
<field name="attachment_fname" invisible="1"/>
|
||||
<field name="partner_id" readonly="1"/>
|
||||
<field name="user_id" readonly="1"/>
|
||||
<field name="info_msg" widget="html" readonly="1"/>
|
||||
<field name="company_id"/>
|
||||
</group>
|
||||
<group groups="base.group_no_one">
|
||||
<field name="model" readonly="1"/>
|
||||
<field name="res_id" readonly="1"/>
|
||||
<field name="color" readonly="1"/>
|
||||
<field name="duplex" readonly="1"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -43,7 +48,7 @@
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_mail_letters">
|
||||
<field name="name">Letters</field>
|
||||
<field name="name">Snailmail Letters</field>
|
||||
<field name="res_model">snailmail.letter</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form,tree</field>
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_mail_invoice_letters">
|
||||
<field name="name">Snailmail Letters</field>
|
||||
<field name="res_model">snailmail.letter</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form,tree</field>
|
||||
<field name="domain">[('state', '!=', 'draft'), ('model','=','account.invoice')]</field>
|
||||
<field name="view_id" ref="snailmail.snailmail_letter_list" />
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_snailmail_invoice_letters" parent="account.account_management_menu" action="action_mail_invoice_letters"
|
||||
sequence="10"/>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user