{% macro administrative_center(centre_code, role_type_code, person_type, addrs) %}
{{ centre_code }}
{{ role_type_code }}
{% if person_type == 'J' %}{{ addrs.party.name and addrs.party.name[:40] }}{% else %}{{ addrs.party.name and addrs.party.name.split(' ', 2)[0][:40] or addrs.party.code[:40] }}{% endif %}
{% if person_type == 'F' %}
{{ addrs.party.name and addrs.party.name.split(' ', 2)[1][:40] }}
{% endif %}
{% if person_type == 'F' and addrs.party.name.split(' ') | length > 2 %}
{{ addrs.party.name and addrs.party.name.split(' ', 2)[2][:40] }}
{% endif %}
{% if addrs %}{{ address(addrs) }}{% endif %}
{% if addrs.party.contact_mechanisms %}{{ contact(addrs.party) }}{% endif %}
{{ addrs.party.name and addrs.party.name.split(' ', 2)[0][:40] or addrs.party.code[:40] }}
{% endmacro %}
{% macro address(address) %}
{% if address.country and address.country.code == 'ES' %}
{{ address.street[:80] }}
{{ address.postal_code[:5] }}
{{ address.city[:50] }}
{{ address.subdivision.name[:20] }}
{{ address.country.code3 }}
{% else %}
{{ address.street[:80] }}
{{ (', '.join([address.postal_code, address.city]))[:50] }}
{{ address.subdivision.name[:20] }}
{{ address.country.code3 }}
{% endif %}
{% endmacro %}
{% macro contact(party) %}
{% if party.phone or party.mobile %}
{{ (party.phone or party.mobile)[:15] }}
{% endif %}
{% if party.fax %}
{{ party.fax[:15] }}
{% endif %}
{% if party.website %}
{{ party.website[:60] }}
{% endif %}
{% if party.email %}
{{ party.email[:60] }}
{% endif %}
{# Optional: not supported
#}
{% endmacro %}
{% macro registration_data(company) %}
{% if company.registration_data_location %}
{{ company.registration_data_book and company.registration_data_book[:20] or '0' }}
{{ company.registration_data_location[:20] }}
{{ company.registration_data_sheet[:20] }}
{{ company.registration_data_folio[:20] }}
{{ company.registration_data_section[:20] }}
{{ company.registration_data_volume[:20] }}
{{ company.registration_data_additional[:20] }}
{% endif %}
{% endmacro %}