91 lines
4.5 KiB
XML
91 lines
4.5 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
this repository contains the full copyright notices and license terms. -->
|
|
<py:strip xmlns:py="http://genshi.edgewall.org/">
|
|
<py:def function="PartyIdentification(party, id=None)">
|
|
<!-- EPC limits to 70 instead of 140 -->
|
|
<Nm>${party.name[:70]}</Nm>
|
|
<py:with vars="address = party.address_get()">
|
|
<PstlAdr py:if="address">
|
|
${PostalAddress(address)}
|
|
</PstlAdr>
|
|
</py:with>
|
|
<Id py:if="id">
|
|
<py:with vars="identifier = party.get_sepa_identifier(id)">
|
|
<OrgId py:if="identifier['Type'] == 'OrgId'">
|
|
<BICOrBEI py:if="identifier.get('BICOrBEI')">${identifier['BICOrBEI']}</BICOrBEI>
|
|
<Othr py:if="identifier.get('Id')">
|
|
<Id>${identifier['Id']}</Id>
|
|
<SchmeNm py:if="identifier.get('SchmeNm')">
|
|
<Cd py:if="identifier['SchmeNm'].get('Cd')">${identifier['SchmeNm']['Cd']}</Cd>
|
|
<Prtry py:if="identifier['SchmeNm'].get('Prtry')">${identifier['SchmeNm']['Cd']}</Prtry>
|
|
</SchmeNm>
|
|
<Issr py:if="identifier.get('Issr')">${identifier['Issr']}</Issr>
|
|
</Othr>
|
|
</OrgId>
|
|
<PrvtId py:if="identifier['Type'] == 'PrvtId'">
|
|
<DtAndPlcOfBirth py:if="identifier.get('DtAndPlcOfBirth')">
|
|
<BirthDt>${identifier['DtAndPlcOfBirth']['BirthDt'].isoformat()}</BirthDt>
|
|
<PrvcOfBirth py:if="identifier['DtAndPlcOfBirth'].get('PrvcOfBirth')">${identifier['DtAndPlcOfBirth']['PrvcOfBirth']}</PrvcOfBirth>
|
|
<CityOfBirth>${identifier['DtAndPlcOfBirth']['CityOfBirth']}</CityOfBirth>
|
|
<CtryOfBirth>${identifier['DtAndPlcOfBirth']['CtryOfBirth']}</CtryOfBirth>
|
|
</DtAndPlcOfBirth>
|
|
<Othr py:if="identifier.get('Id')">
|
|
<Id>${identifier['Id']}</Id>
|
|
<SchmeNm py:if="identifier.get('SchmeNm')">
|
|
<Cd py:if="identifier['SchmeNm'].get('Cd')">${identifier['SchmeNm']['Cd']}</Cd>
|
|
<Prtry py:if="identifier['SchmeNm'].get('Prtry')">${identifier['SchmeNm']['Prtry']}</Prtry>
|
|
</SchmeNm>
|
|
<Issr py:if="identifier.get('Issr')">${identifier['Issr']}</Issr>
|
|
</Othr>
|
|
</PrvtId>
|
|
</py:with>
|
|
</Id>
|
|
<!-- CtryOfRes -->
|
|
<!-- CtctDtls -->
|
|
</py:def>
|
|
<py:def function="PostalAddress(address)">
|
|
<!-- AdrTp -->
|
|
<!-- Dept -->
|
|
<!-- SubDept -->
|
|
<StrtNm py:if="address.street_name">${address.street_name[:70]}</StrtNm>
|
|
<BldgNb py:if="address.building_number">${address.building_number[:16]}</BldgNb>
|
|
<PstCd py:if="address.postal_code">${address.postal_code[:16]}</PstCd>
|
|
<TwnNm py:if="address.city">${address.city[:35]}</TwnNm>
|
|
<CtrySubDvsn py:if="address.subdivision">${address.subdivision.rec_name[:35]}</CtrySubDvsn>
|
|
<Ctry py:if="address.country">${address.country.code}</Ctry>
|
|
<py:if test="address.street_unstructured">
|
|
<py:for each="line in address.street_unstructured.splitlines()[1:8]">
|
|
<AdrLine py:if="line">${line[:70]}</AdrLine>
|
|
</py:for>
|
|
</py:if>
|
|
</py:def>
|
|
<py:def function="Account(account_number, currency=True)">
|
|
<Id>
|
|
<!-- EPC only IBAN is allowed -->
|
|
<IBAN>${account_number.compact_iban}</IBAN>
|
|
</Id>
|
|
<!-- Tp -->
|
|
<Ccy py:if="currency and account_number.account.currency">${account_number.account.currency.code}</Ccy>
|
|
<!-- Nm -->
|
|
</py:def>
|
|
<py:def function="FinancialInstitution(bank, only_bic=False)">
|
|
<FinInstnId>
|
|
<BICFI py:if="bank.bic">${bank.bic}</BICFI>
|
|
<py:if test="not only_bic">
|
|
<!-- ClrSysMmbId -->
|
|
<Nm>${bank.party.name[:140]}</Nm>
|
|
<py:with vars="address = bank.party.address_get()">
|
|
<PstlAdr py:if="address">
|
|
${PostalAddress(address)}
|
|
</PstlAdr>
|
|
</py:with>
|
|
</py:if>
|
|
<Othr py:if="not bank.bic">
|
|
<Id>NOTPROVIDED</Id>
|
|
</Othr>
|
|
</FinInstnId>
|
|
<!-- BrnchId -->
|
|
</py:def>
|
|
</py:strip>
|