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:
1 parent
71ac33a2c9
commit
6a05c7597d
6 files changed
+38
-12
No files matched your search
@@ -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
|
||||
@@ -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 ''),
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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 '')
|
||||
|
||||
Reference in new issue
Block a user