details:   https://code.tryton.org/tryton/commit/50a8ce176450
branch:    7.8
user:      Cédric Krier <[email protected]>
date:      Wed Jan 14 14:47:25 2026 +0100
description:
        Use only a limited set of tags for PEPPOL Address

        Closes #14494
        (grafted from f447b0216ae74863ddb8e0aa9b8b56f790cd9561)
diffstat:

 modules/edocument_ubl/template/2/base.xml  |  46 ++++++++++++++++++++---------
 modules/edocument_ubl/tests/test_module.py |   2 +
 2 files changed, 33 insertions(+), 15 deletions(-)

diffs (75 lines):

diff -r e7fb84bc9902 -r 50a8ce176450 modules/edocument_ubl/template/2/base.xml
--- a/modules/edocument_ubl/template/2/base.xml Thu Jan 15 18:13:06 2026 +0100
+++ b/modules/edocument_ubl/template/2/base.xml Wed Jan 14 14:47:25 2026 +0100
@@ -41,21 +41,37 @@
         </cac:Party>
     </py:def>
     <py:def function="Address(address, specification='')">
-        <cbc:Postbox py:if="address.post_box">${address.post_box}</cbc:Postbox>
-        <cbc:Floor 
py:if="address.floor_number">${address.floor_number}</cbc:Floor>
-        <cbc:Room py:if="address.room_number">${address.room_number}</cbc:Room>
-        <cbc:StreetName 
py:if="address.street_name">${address.street_name}</cbc:StreetName>
-        <cbc:BuildingName 
py:if="address.building_name">${address.building_name}</cbc:BuildingName>
-        <cbc:BuildingNumber 
py:if="address.building_number">${address.building_number}</cbc:BuildingNumber>
-        <cbc:CityName py:if="address.city">${address.city}</cbc:CityName>
-        <cbc:PostalZone 
py:if="address.postal_code">${address.postal_code}</cbc:PostalZone>
-        <cbc:CountrySubentity 
py:if="address.subdivision">${address.subdivision.name}</cbc:CountrySubentity>
-        <cbc:CountrySubentityCode py:if="address.subdivision and not 
(specification or 
'').startswith('peppol')">${address.subdivision.code}</cbc:CountrySubentityCode>
-        <cac:AddressLine py:if="address.street_unstructured">
-            <cbc:Line py:for="line in 
address.street_unstructured.splitlines()">
-                ${line}
-            </cbc:Line>
-        </cac:AddressLine>
+        <py:choose>
+            <py:when test="(specification or '').startswith('peppol')">
+                <py:with vars="streets = (address.street or '').splitlines()">
+                    <cbc:StreetName py:if="len(streets) >= 
1">${streets[0]}</cbc:StreetName>
+                    <cbc:AdditionalStreetName py:if="len(streets) >= 
2">${street[1]}</cbc:AdditionalStreetName>
+                    <cbc:CityName 
py:if="address.city">${address.city}</cbc:CityName>
+                    <cbc:PostalZone 
py:if="address.postal_code">${address.postal_code}</cbc:PostalZone>
+                    <cbc:CountrySubentity 
py:if="address.subdivision">${address.subdivision.name}</cbc:CountrySubentity>
+                    <cbc:AddressLine py:if="len(streets) >= 
3">${streets[2]}</cbc:AddressLine>
+                </py:with>
+            </py:when>
+            <py:otherwise>
+                <cbc:Postbox 
py:if="address.post_box">${address.post_box}</cbc:Postbox>
+                <cbc:Floor 
py:if="address.floor_number">${address.floor_number}</cbc:Floor>
+                <cbc:Room 
py:if="address.room_number">${address.room_number}</cbc:Room>
+                <cbc:StreetName 
py:if="address.street_name">${address.street_name}</cbc:StreetName>
+                <cbc:BuildingName 
py:if="address.building_name">${address.building_name}</cbc:BuildingName>
+                <cbc:BuildingNumber 
py:if="address.building_number">${address.building_number}</cbc:BuildingNumber>
+                <cbc:CityName 
py:if="address.city">${address.city}</cbc:CityName>
+                <cbc:PostalZone 
py:if="address.postal_code">${address.postal_code}</cbc:PostalZone>
+                <cbc:CountrySubentity 
py:if="address.subdivision">${address.subdivision.name}</cbc:CountrySubentity>
+                <cbc:CountrySubentityCode 
py:if="address.subdivision">${address.subdivision.code}</cbc:CountrySubentityCode>
+                <py:if test="address.street_unstructured">
+                    <cac:AddressLine py:for="line in 
address.street_unstructured.splitlines()">
+                        <cbc:Line>
+                            ${line}
+                        </cbc:Line>
+                    </cac:AddressLine>
+                </py:if>
+            </py:otherwise>
+        </py:choose>
         <cac:Country py:if="address.country">
             
<cbc:IdentificationCode>${address.country.code}</cbc:IdentificationCode>
             <cbc:Name py:if="not (specification or 
'').startswith('peppol')">${address.country.name}</cbc:Name>
diff -r e7fb84bc9902 -r 50a8ce176450 modules/edocument_ubl/tests/test_module.py
--- a/modules/edocument_ubl/tests/test_module.py        Thu Jan 15 18:13:06 
2026 +0100
+++ b/modules/edocument_ubl/tests/test_module.py        Wed Jan 14 14:47:25 
2026 +0100
@@ -31,6 +31,7 @@
 
     address = Mock(spec=Address,
         street_unstructured="St sample, 15",
+        street="St sample, 15",
         city="Scranton",
         postal_code="1000",
         subdivision=None,
@@ -60,6 +61,7 @@
             spec=Party,
             addresses=[Mock(spec=Address,
                     street_unstructured="Main street, 42",
+                    street="Main street, 42",
                     country=Mock(spec=Country,
                         code='US'))],
             identifiers=[Mock(

Reply via email to