Skip to content

Commit a4a8cb6

Browse files
committed
[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#114205 X-original-commit: eceb23b Signed-off-by: Florian Daloze (fda) <fda@odoo.com> Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
1 parent c9371d0 commit a4a8cb6

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

addons/snailmail/models/snailmail_letter.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,14 +217,22 @@ def _snailmail_create(self, route):
217217

218218
batch = len(self) > 1
219219
for letter in self:
220+
recipient_name = letter.partner_id.name or letter.partner_id.parent_id and letter.partner_id.parent_id.name
221+
if not recipient_name:
222+
letter.write({
223+
'info_msg': _('Invalid recipient name.'),
224+
'state': 'error',
225+
'error_code': 'MISSING_REQUIRED_FIELDS'
226+
})
227+
continue
220228
document = {
221229
# generic informations to send
222230
'letter_id': letter.id,
223231
'res_model': letter.model,
224232
'res_id': letter.res_id,
225233
'contact_address': letter.partner_id.with_context(snailmail_layout=True, show_address=True).name_get()[0][1],
226234
'address': {
227-
'name': letter.partner_id.name,
235+
'name': recipient_name,
228236
'street': letter.partner_id.street,
229237
'street2': letter.partner_id.street2,
230238
'zip': letter.partner_id.zip,
@@ -444,7 +452,9 @@ def _is_valid_address(self, record):
444452
return all(record[key] for key in required_keys)
445453

446454
def _append_cover_page(self, invoice_bin: bytes):
447-
address = self.partner_id.with_context(show_address=True, lang='en_US')._get_name().replace('\n', '<br/>')
455+
address_split = self.partner_id.with_context(show_address=True, lang='en_US')._get_name().split('\n')
456+
address_split[0] = self.partner_id.name or self.partner_id.parent_id and self.partner_id.parent_id.name or address_split[0]
457+
address = '<br/>'.join(address_split)
448458
address_x = 118 * mm
449459
address_y = 60 * mm
450460
frame_width = 85.5 * mm

0 commit comments

Comments
 (0)