[FIX] snailmail_account: Fix traceback

When clicking on send&print on an account move without
partner, we are getting a traceback because of the
address verification.
Instead, check if any such move is selected and return
a user error.

Task id #2655365

closes odoo/odoo#77385

X-original-commit: dfba014189c35f9df0140c57effe9ea45637e0ec
Signed-off-by: Florian Gilbert <FlorianGilbert@users.noreply.github.com>
This commit is contained in:
Nicolas (vin)
2021-09-29 09:59:07 +00:00
parent d884fe2965
commit e1fcd85f26
2 changed files with 9 additions and 0 deletions
@@ -167,3 +167,9 @@ msgstr ""
#: model:ir.model.fields,field_description:snailmail_account.field_account_invoice_send__snailmail_cost
msgid "Stamp(s)"
msgstr ""
#. module: snailmail_account
#: code:addons/snailmail_account/wizard/account_invoice_send.py:0
#, python-format
msgid "You cannot send an invoice which has no partner assigned."
msgstr ""
@@ -2,6 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, Command, _
from odoo.exceptions import UserError
class AccountInvoiceSend(models.TransientModel):
@@ -21,6 +22,8 @@ class AccountInvoiceSend(models.TransientModel):
@api.depends('invoice_ids')
def _compute_invalid_addresses(self):
for wizard in self:
if any(not invoice.partner_id for invoice in wizard.invoice_ids):
raise UserError(_('You cannot send an invoice which has no partner assigned.'))
invalid_invoices = wizard.invoice_ids.filtered(lambda i: not self.env['snailmail.letter']._is_valid_address(i.partner_id))
wizard.invalid_invoices = len(invalid_invoices)
invalid_partner_ids = invalid_invoices.partner_id.ids