Remove party name from address name for shipping services

If the party name of the address starts with the name of the party, we do not
need to repeat it as the shipping services have also a field to store the party
name.

Closes #14352
This commit is contained in:
Cédric Krier committed 2025-11-08 09:53:01 +01:00
1 parent 71ac33a2c9
commit 6a05c7597d
6 files changed
+38 -12

No files matched your search

+16
View File
@@ -418,3 +418,19 @@ class PrintShippingLabel(Wizard):
package_ids.append(package.id)
labels.add(package.shipping_label)
return action, {'ids': package_ids}
def address_name(address, party=None):
"Returns the party name of the address with party name removed"
if party is None:
party = address.party
name = address.party_full_name
for prefix in sorted([
f'{party.full_name} / ',
f'{party.name} / ',
party.full_name,
party.name,
], key=len, reverse=True):
if name.startswith(prefix) and name != prefix:
return name[len(prefix):]
return name
+6 -3
View File
@@ -16,6 +16,7 @@ from trytond.model import fields
from trytond.model.exceptions import AccessError
from trytond.modules.stock_package_shipping.exceptions import (
PackingValidationError)
from trytond.modules.stock_package_shipping.stock import address_name
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
from trytond.wizard import StateAction, StateTransition, Wizard
@@ -213,15 +214,17 @@ class CreateDPDShipping(Wizard):
else:
street = address.street_name or ''
house_no = address.numbers
name = address_name(address, party)
contact = party.full_name if party.full_name != name else ''
shipping_party = {
'name1': address.party_full_name[:50],
'name2': '',
'name1': name[:50],
'name2': name[50:85],
'street': street[:50],
'houseNo': house_no[:8],
'country': address.country.code if address.country else '',
'zipCode': address.postal_code[:9],
'city': address.city[:50],
'contact': party.full_name[:35],
'contact': contact[:35],
}
phone = address.contact_mechanism_get({'phone', 'mobile'}, usage=usage)
@@ -10,6 +10,7 @@ from trytond.model import fields
from trytond.model.exceptions import AccessError
from trytond.modules.stock_package_shipping.exceptions import (
PackingValidationError)
from trytond.modules.stock_package_shipping.stock import address_name
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
from trytond.wizard import StateAction, StateTransition, Wizard
@@ -232,15 +233,17 @@ class ShipmentCreateShippingMyGLS(Wizard):
house_number_info = address.building_name or ''
phone = address.contact_mechanism_get({'phone', 'mobile'}, usage=usage)
email = address.contact_mechanism_get('email', usage=usage)
name = address_name(address, party)
contact_name = party.full_name if party.full_name != name else None
return {
'Name': address.party_full_name,
'Name': name,
'Street': street_name,
'HouseNumber': house_number,
'HouseNumberInfo': house_number_info,
'City': address.city,
'ZipCode': address.postal_code,
'CountryIsoCode': address.country.code,
'ContactName': party.full_name,
'ContactName': contact_name,
'ContactPhone': phone.value if phone else None,
'ContactEmail': email.value if email else None,
}
@@ -8,6 +8,7 @@ from math import ceil
from trytond.i18n import gettext
from trytond.model import fields
from trytond.model.exceptions import AccessError
from trytond.modules.stock_package_shipping.stock import address_name
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
from trytond.wizard import StateAction, StateTransition, Wizard
@@ -154,11 +155,11 @@ class CreateShippingSendcloud(Wizard):
{'phone', 'mobile'}, usage=usage)
email = address.contact_mechanism_get('email', usage=usage)
street_lines = (address.street or '').splitlines()
name = address_name(address, party)
company_name = party.full_name if party.full_name != name else None
parcel = {
'name': address.party_full_name,
'company_name': (
party.full_name if party.full_name != address.party_full_name
else None),
'name': name,
'company_name': company_name,
'address': street_lines[0] if street_lines else '',
'address_2': (
' '.join(street_lines[1:]) if len(street_lines) > 1 else ''),
+5 -2
View File
@@ -17,6 +17,7 @@ from trytond.model import fields
from trytond.model.exceptions import AccessError
from trytond.modules.stock_package_shipping.exceptions import (
PackingValidationError)
from trytond.modules.stock_package_shipping.stock import address_name
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
from trytond.wizard import StateAction, StateTransition, Wizard
@@ -234,9 +235,11 @@ class CreateShippingUPS(Wizard):
}
def get_shipping_party(self, party, address, usage=None):
name = address_name(address, party)
attention_name = party.full_name
shipping_party = {
'Name': address.party_full_name[:35],
'AttentionName': party.full_name[:35],
'Name': name[:35],
'AttentionName': attention_name[:35],
'Address': {
'AddressLine': [l[:35]
for l in (address.street or '').splitlines()[:3]],
+1 -1
View File
@@ -97,7 +97,7 @@ class Address(metaclass=PoolMeta):
values['party_name'] = remove_forbidden_chars(address.name or '')
if address.company:
values['party_name'] += (
f'({remove_forbidden_chars(address.company)})')
f'/ {remove_forbidden_chars(address.company)}')
values['street'] = '\n'.join(filter(None, [
address.address1, address.address2]))
values['city'] = remove_forbidden_chars(address.city or '')