details:   https://code.tryton.org/tryton/commit/b2767eab48e5
branch:    default
user:      Cédric Krier <[email protected]>
date:      Sat Nov 08 09:53:01 2025 +0100
description:
        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
diffstat:

 modules/stock_package_shipping/stock.py           |  16 ++++++++++++++++
 modules/stock_package_shipping_dpd/stock.py       |   9 ++++++---
 modules/stock_package_shipping_mygls/stock.py     |   7 +++++--
 modules/stock_package_shipping_sendcloud/stock.py |   9 +++++----
 modules/stock_package_shipping_ups/stock.py       |   7 +++++--
 modules/web_shop_shopify/party.py                 |   2 +-
 6 files changed, 38 insertions(+), 12 deletions(-)

diffs (150 lines):

diff -r d9169aaeb05d -r b2767eab48e5 modules/stock_package_shipping/stock.py
--- a/modules/stock_package_shipping/stock.py   Thu Nov 20 22:07:43 2025 +0100
+++ b/modules/stock_package_shipping/stock.py   Sat Nov 08 09:53:01 2025 +0100
@@ -418,3 +418,19 @@
                     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 -r d9169aaeb05d -r b2767eab48e5 modules/stock_package_shipping_dpd/stock.py
--- a/modules/stock_package_shipping_dpd/stock.py       Thu Nov 20 22:07:43 
2025 +0100
+++ b/modules/stock_package_shipping_dpd/stock.py       Sat Nov 08 09:53:01 
2025 +0100
@@ -16,6 +16,7 @@
 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 @@
         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 -r d9169aaeb05d -r b2767eab48e5 
modules/stock_package_shipping_mygls/stock.py
--- a/modules/stock_package_shipping_mygls/stock.py     Thu Nov 20 22:07:43 
2025 +0100
+++ b/modules/stock_package_shipping_mygls/stock.py     Sat Nov 08 09:53:01 
2025 +0100
@@ -10,6 +10,7 @@
 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 @@
             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 -r d9169aaeb05d -r b2767eab48e5 
modules/stock_package_shipping_sendcloud/stock.py
--- a/modules/stock_package_shipping_sendcloud/stock.py Thu Nov 20 22:07:43 
2025 +0100
+++ b/modules/stock_package_shipping_sendcloud/stock.py Sat Nov 08 09:53:01 
2025 +0100
@@ -8,6 +8,7 @@
 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 @@
             {'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 -r d9169aaeb05d -r b2767eab48e5 modules/stock_package_shipping_ups/stock.py
--- a/modules/stock_package_shipping_ups/stock.py       Thu Nov 20 22:07:43 
2025 +0100
+++ b/modules/stock_package_shipping_ups/stock.py       Sat Nov 08 09:53:01 
2025 +0100
@@ -17,6 +17,7 @@
 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 @@
             }
 
     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 -r d9169aaeb05d -r b2767eab48e5 modules/web_shop_shopify/party.py
--- a/modules/web_shop_shopify/party.py Thu Nov 20 22:07:43 2025 +0100
+++ b/modules/web_shop_shopify/party.py Sat Nov 08 09:53:01 2025 +0100
@@ -97,7 +97,7 @@
         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 '')

Reply via email to