diff --git a/modules/stock_package_shipping/stock.py b/modules/stock_package_shipping/stock.py index accd66b1e7..f9bc1a4e64 100644 --- a/modules/stock_package_shipping/stock.py +++ b/modules/stock_package_shipping/stock.py @@ -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 diff --git a/modules/stock_package_shipping_dpd/stock.py b/modules/stock_package_shipping_dpd/stock.py index f7032ea38a..d7e4c432e0 100644 --- a/modules/stock_package_shipping_dpd/stock.py +++ b/modules/stock_package_shipping_dpd/stock.py @@ -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) diff --git a/modules/stock_package_shipping_mygls/stock.py b/modules/stock_package_shipping_mygls/stock.py index f78aec3527..5b55325f5e 100644 --- a/modules/stock_package_shipping_mygls/stock.py +++ b/modules/stock_package_shipping_mygls/stock.py @@ -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, } diff --git a/modules/stock_package_shipping_sendcloud/stock.py b/modules/stock_package_shipping_sendcloud/stock.py index fe604d0afc..f5a579beaa 100644 --- a/modules/stock_package_shipping_sendcloud/stock.py +++ b/modules/stock_package_shipping_sendcloud/stock.py @@ -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 ''), diff --git a/modules/stock_package_shipping_ups/stock.py b/modules/stock_package_shipping_ups/stock.py index 95c94d6217..61a5d8a9a4 100644 --- a/modules/stock_package_shipping_ups/stock.py +++ b/modules/stock_package_shipping_ups/stock.py @@ -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]], diff --git a/modules/web_shop_shopify/party.py b/modules/web_shop_shopify/party.py index 7f61be5e21..966537182b 100644 --- a/modules/web_shop_shopify/party.py +++ b/modules/web_shop_shopify/party.py @@ -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 '')