summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/snailmail/__manifest__.py1
-rw-r--r--addons/snailmail/wizard/__init__.py1
-rw-r--r--addons/snailmail/wizard/snailmail_confirm.py50
-rw-r--r--addons/snailmail/wizard/snailmail_confirm_views.xml16
-rw-r--r--addons/snailmail_account/__manifest__.py1
-rw-r--r--addons/snailmail_account/security/ir.model.access.csv2
-rw-r--r--addons/snailmail_account/wizard/__init__.py1
-rw-r--r--addons/snailmail_account/wizard/account_invoice_send.py18
-rw-r--r--addons/snailmail_account/wizard/snailmail_confirm_invoice_send.py20
9 files changed, 107 insertions, 3 deletions
diff --git a/addons/snailmail/__manifest__.py b/addons/snailmail/__manifest__.py
index 5f2e98a6e78..00d597708fd 100644
--- a/addons/snailmail/__manifest__.py
+++ b/addons/snailmail/__manifest__.py
@@ -13,6 +13,7 @@ Allows users to send documents by post
'views/report_assets.xml',
'views/snailmail_views.xml',
'views/assets.xml',
+ 'wizard/snailmail_confirm_views.xml',
'wizard/snailmail_letter_cancel_views.xml',
'wizard/snailmail_letter_format_error_views.xml',
'wizard/snailmail_letter_missing_required_fields_views.xml',
diff --git a/addons/snailmail/wizard/__init__.py b/addons/snailmail/wizard/__init__.py
index 86a507b287b..de2f4be2c8c 100644
--- a/addons/snailmail/wizard/__init__.py
+++ b/addons/snailmail/wizard/__init__.py
@@ -1,3 +1,4 @@
+from . import snailmail_confirm
from . import snailmail_letter_cancel
from . import snailmail_letter_format_error
from . import snailmail_letter_missing_required_fields
diff --git a/addons/snailmail/wizard/snailmail_confirm.py b/addons/snailmail/wizard/snailmail_confirm.py
new file mode 100644
index 00000000000..42fe4e0c832
--- /dev/null
+++ b/addons/snailmail/wizard/snailmail_confirm.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+
+
+class SnailmailConfirm(models.AbstractModel):
+ _name = 'snailmail.confirm'
+ _description = 'Snailmail Confirm'
+
+ model_name = fields.Char()
+
+ @api.model
+ def show_warning(self):
+ return not self.env['ir.config_parameter'].sudo().get_param('%s.warning_shown' % self._name, False)
+
+ def action_open(self):
+ view = self.env.ref('snailmail.snailmail_confirm_view')
+ return {
+ 'name': _('Snailmail'),
+ 'type': 'ir.actions.act_window',
+ 'view_mode': 'form',
+ 'res_model': self._name,
+ 'views': [(view.id, 'form')],
+ 'view_id': view.id,
+ 'target': 'new',
+ 'res_id': self.id,
+ 'context': self.env.context
+ }
+
+ def action_confirm(self):
+ self.env['ir.config_parameter'].sudo().set_param('%s.warning_shown' % self._name, True)
+ self._confirm()
+ return self._continue()
+
+ def action_cancel(self):
+ self.env['ir.config_parameter'].sudo().set_param('%s.warning_shown' % self._name, True)
+ return self._continue()
+
+ """
+ Called whether the user confirms or cancels posting the letter, e.g. to continue the action
+ """
+ def _continue(self):
+ pass
+
+ """
+ Called only when the user confirms sending the letter
+ """
+ def _confirm(self):
+ pass
diff --git a/addons/snailmail/wizard/snailmail_confirm_views.xml b/addons/snailmail/wizard/snailmail_confirm_views.xml
new file mode 100644
index 00000000000..4df4d9de72f
--- /dev/null
+++ b/addons/snailmail/wizard/snailmail_confirm_views.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <record id="snailmail_confirm_view" model="ir.ui.view">
+ <field name="name">snailmail.confirm.view</field>
+ <field name="model">snailmail.confirm</field>
+ <field name="arch" type="xml">
+ <form string="Snailmail Confirmation">
+ <p>You are about to send this <field name="model_name" readonly="1" class="oe_inline" /> by post. Are you sure you want to continue?</p>
+ <footer>
+ <button string="Confirm" name="action_confirm" type="object" class="btn-primary" />
+ <button string="Cancel" name="action_cancel" type="object" class="btn-secondary" />
+ </footer>
+ </form>
+ </field>
+ </record>
+</odoo>
diff --git a/addons/snailmail_account/__manifest__.py b/addons/snailmail_account/__manifest__.py
index bf71da11897..758f2f15cf3 100644
--- a/addons/snailmail_account/__manifest__.py
+++ b/addons/snailmail_account/__manifest__.py
@@ -12,6 +12,7 @@ Allows users to send invoices by post
'views/res_config_settings_views.xml',
'views/assets.xml',
'wizard/account_invoice_send_views.xml',
+ 'security/ir.model.access.csv',
],
'auto_install': True,
}
diff --git a/addons/snailmail_account/security/ir.model.access.csv b/addons/snailmail_account/security/ir.model.access.csv
new file mode 100644
index 00000000000..02ff3cfefa3
--- /dev/null
+++ b/addons/snailmail_account/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_snailmail_confirm_invoice,access_snailmail_confirm_invoice,model_snailmail_confirm_invoice,account.group_account_invoice,1,1,1,0
diff --git a/addons/snailmail_account/wizard/__init__.py b/addons/snailmail_account/wizard/__init__.py
index 1a67eb15ca1..c720dbcf19c 100644
--- a/addons/snailmail_account/wizard/__init__.py
+++ b/addons/snailmail_account/wizard/__init__.py
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from . import account_invoice_send
+from . import snailmail_confirm_invoice_send
diff --git a/addons/snailmail_account/wizard/account_invoice_send.py b/addons/snailmail_account/wizard/account_invoice_send.py
index 28f1a28bdf2..c4c74f9b9df 100644
--- a/addons/snailmail_account/wizard/account_invoice_send.py
+++ b/addons/snailmail_account/wizard/account_invoice_send.py
@@ -57,9 +57,21 @@ class AccountInvoiceSend(models.TransientModel):
def send_and_print_action(self):
if self.snailmail_is_letter:
- if self.invalid_addresses and self.composition_mode == "mass_mail":
- self.notify_invalid_addresses()
- self.snailmail_print_action()
+ if self.env['snailmail.confirm.invoice'].show_warning():
+ wizard = self.env['snailmail.confirm.invoice'].create({'model_name': _('Invoice'), 'invoice_send_id': self.id})
+ return wizard.action_open()
+ self._print_action()
+ return self.send_and_print()
+
+ def _print_action(self):
+ if not self.snailmail_is_letter:
+ return
+
+ if self.invalid_addresses and self.composition_mode == "mass_mail":
+ self.notify_invalid_addresses()
+ self.snailmail_print_action()
+
+ def send_and_print(self):
res = super(AccountInvoiceSend, self).send_and_print_action()
return res
diff --git a/addons/snailmail_account/wizard/snailmail_confirm_invoice_send.py b/addons/snailmail_account/wizard/snailmail_confirm_invoice_send.py
new file mode 100644
index 00000000000..a3c3da40e8c
--- /dev/null
+++ b/addons/snailmail_account/wizard/snailmail_confirm_invoice_send.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models
+
+
+class SnailmailConfirmInvoiceSend(models.TransientModel):
+ _name = 'snailmail.confirm.invoice'
+ _inherit = ['snailmail.confirm']
+ _description = 'Snailmail Confirm Invoice'
+
+ invoice_send_id = fields.Many2one('account.invoice.send')
+
+ def _confirm(self):
+ self.ensure_one()
+ self.invoice_send_id._print_action()
+
+ def _continue(self):
+ self.ensure_one()
+ return self.invoice_send_id.send_and_print()