From 4f72cfcc940c5d843d44b286f7af7989bc3b2097 Mon Sep 17 00:00:00 2001 From: "Solan Delvenne (sode)" Date: Wed, 11 Jan 2023 15:31:56 +0000 Subject: [PATCH] [FIX] snailmail: Fix an error with invoice address If an user tries sending a invoice using an invoice address and a delivery address through snailmail, it would result in a traceback. This is due to the invoice address record not having a name. closes odoo/odoo#114227 X-original-commit: eceb23b1835b3d039759eb7431950f221ac1fb6e Signed-off-by: Florian Daloze (fda) Signed-off-by: Thibault Delavallee (tde) --- addons/snailmail/models/snailmail_letter.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/addons/snailmail/models/snailmail_letter.py b/addons/snailmail/models/snailmail_letter.py index 95d1d28b4c0..408b0ef0c15 100644 --- a/addons/snailmail/models/snailmail_letter.py +++ b/addons/snailmail/models/snailmail_letter.py @@ -217,6 +217,14 @@ class SnailmailLetter(models.Model): batch = len(self) > 1 for letter in self: + recipient_name = letter.partner_id.name or letter.partner_id.parent_id and letter.partner_id.parent_id.name + if not recipient_name: + letter.write({ + 'info_msg': _('Invalid recipient name.'), + 'state': 'error', + 'error_code': 'MISSING_REQUIRED_FIELDS' + }) + continue document = { # generic informations to send 'letter_id': letter.id, @@ -224,7 +232,7 @@ class SnailmailLetter(models.Model): 'res_id': letter.res_id, 'contact_address': letter.partner_id.with_context(snailmail_layout=True, show_address=True).name_get()[0][1], 'address': { - 'name': letter.partner_id.name, + 'name': recipient_name, 'street': letter.partner_id.street, 'street2': letter.partner_id.street2, 'zip': letter.partner_id.zip, @@ -444,7 +452,9 @@ class SnailmailLetter(models.Model): return all(record[key] for key in required_keys) def _append_cover_page(self, invoice_bin: bytes): - address = self.partner_id.with_context(show_address=True, lang='en_US')._get_name().replace('\n', '
') + address_split = self.partner_id.with_context(show_address=True, lang='en_US')._get_name().split('\n') + address_split[0] = self.partner_id.name or self.partner_id.parent_id and self.partner_id.parent_id.name or address_split[0] + address = '
'.join(address_split) address_x = 118 * mm address_y = 60 * mm frame_width = 85.5 * mm