Payment file Format for Norway BBAN domestic DNB

<#-- format specific processing -->
<#function getReferenceNote payment>
<#assign paidTransactions = transHash[payment.internalid]>
<#assign referenceNote = "">
<#assign paidTransactionsCount = paidTransactions?size>
<#if (paidTransactionsCount > 1)>
<#list paidTransactions as transaction>
<#if transaction.custbody_2663_reference_num?has_content>
<#if referenceNote?has_content>
<#assign referenceNote = referenceNote+"/"+transaction.custbody_2663_reference_num>
<#else>
<#assign referenceNote = transaction.custbody_2663_reference_num>
</#if>
</#if>
<#if transaction.tranid?has_content && transaction.custbody_2663_reference_num?has_content == false >
<#if referenceNote?has_content>
<#assign referenceNote = referenceNote + "/" + transaction.tranid>
<#else>
<#assign referenceNote = transaction.tranid>
</#if>
</#if>
</#list>

</#if>
<#if (paidTransactionsCount == 1)>
<#list paidTransactions as transaction>
<#if transaction.custbody_2663_reference_num?has_content>
<#assign referenceNote = transaction.custbody_2663_reference_num>
</#if>
<#if transaction.tranid?has_content && transaction.custbody_2663_reference_num?has_content == false >
<#assign referenceNote = transaction.tranid>
</#if>
</#list>
</#if>
<#assign referenceNote = "<Ustrd>"+referenceNote+"</Ustrd>">
<#return referenceNote>
</#function>

<#function convertSEPACharSet text>
<#assign value = text>
<#assign value = value?replace('&','&')>
<#assign value = value?replace('*','.')>
<#assign value = value?replace('$','.')>
<#assign value = value?replace('%','.')>
<#assign value = convertToLatinCharSet(value)>
<#return value>
</#function>

<#function getReferenceAmount payment accountType transaction>
<#assign tranAmount = 0 >
<#if payment.currency?has_content>
<#if accountType == "Bank">
<#assign tranAmount = transaction.appliedtoforeignamount>
<#else>
<#assign tranAmount = transaction.applyingforeignamount>
</#if>
<#else>
<#if accountType == "Bank">
<#assign tranAmount = transaction.appliedtolinkamount>
<#else>
<#assign tranAmount = transaction.applyinglinkamount>
</#if>
</#if>
<#if (tranAmount < 0)>
<#assign tranAmount = tranAmount * -1>
</#if>
<#return tranAmount>
</#function>

<#-- cached values -->
<#assign totalAmount = computeTotalAmount(payments)>
<#-- template building -->

#OUTPUT START#
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>${pfa.id}</MsgId>
<CreDtTm>${pfa.custrecord_2663_file_creation_timestamp?date?string("yyyy-MM-dd")}T${pfa.custrecord_2663_file_creation_timestamp?time?string("HH:mm:ss")}</CreDtTm>
<NbOfTxs>${payments?size?c}</NbOfTxs>
<CtrlSum>${formatAmount(totalAmount,"dec")}</CtrlSum>
<InitgPty>
<Nm>${setMaxLength(convertSEPACharSet(cbank.custpage_eft_custrecord_2663_statement_name),70)}</Nm>
<Id>
<OrgId>
<Othr>
<Id>${cbank.custpage_eft_custrecord_2663_bank_comp_id}</Id>
<SchmeNm>
<Cd>CUST</Cd>
</SchmeNm>
</Othr>
<#if cbank.custpage_eft_custrecord_2663_bank_code?has_content==true >
<Othr>
<Id>${cbank.custrecord_bank_details_code}</Id>
<SchmeNm>
<Cd>BANK</Cd>
</SchmeNm>
</Othr>
</#if>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>${pfa.id}-1</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<BtchBookg>true</BtchBookg>
<NbOfTxs>${payments?size?c}</NbOfTxs>
<CtrlSum>${formatAmount(totalAmount,"dec")}</CtrlSum>
<ReqdExctnDt>${pfa.custrecord_2663_process_date?string("yyyy-MM-dd")}</ReqdExctnDt>
<Dbtr>
<Nm>${setMaxLength(convertSEPACharSet(cbank.custpage_eft_custrecord_2663_statement_name),70)}</Nm>
<PstlAdr>
<Ctry>${getCountryCode(cbank.custpage_eft_custrecord_2663_bank_country)}</Ctry>
<AdrLine>${convertSEPACharSet(cbank.custpage_eft_custrecord_2663_bank_address1)}</AdrLine>
<AdrLine>${convertSEPACharSet(cbank.custpage_eft_custrecord_2663_bank_address2)}</AdrLine>
</PstlAdr>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>${cbank.custpage_eft_custrecord_2663_iban}</IBAN>
</Id>
<Ccy>${getCurrencySymbol(cbank.custrecord_2663_currency)}</Ccy>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>${cbank.custpage_eft_custrecord_2663_bic}</BIC>
</FinInstnId>
</DbtrAgt>
<UltmtDbtr>
<Nm>${setMaxLength(convertToLatinCharSet(cbank.custpage_eft_custrecord_2663_statement_name),70)}</Nm>
<Id>
<OrgId>
<Othr>
<PrtryId>
<Id>${cbank.custpage_eft_custrecord_2663_bank_comp_id}</Id>
</PrtryId>
</Othr>
</OrgId>
</Id>
</UltmtDbtr>
<ChrgBr>SHAR</ChrgBr>
<#list payments as payment>
<#assign ebank = ebanks[payment_index]>
<#assign entity = entities[payment_index]>
<CdtTrfTxInf>
<PmtId>
<InstrId>${pfa.id}-${payment.tranid}</InstrId>
<EndToEndId>${pfa.id}-${payment.tranid}</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="${getCurrencySymbol(payment.currency)}">${formatAmount(getAmount(payment),"dec")}</InstdAmt>
</Amt>
<Cdtr>
<Nm>${setMaxLength(convertSEPACharSet(buildEntityName(entity)),70)}</Nm>
<PstlAdr>
<Ctry>${convertToLatinCharSet(entity.billcountrycode)}</Ctry>
<AdrLine>${setMaxLength(convertSEPACharSet(entity.address1),70)} ${setMaxLength(convertSEPACharSet(convertToLatinCharSet(entity.address2)),70)}</AdrLine>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<Othr>
<Id>${ebank.custrecord_2663_entity_bban}</Id>
<SchmeNm>
<Cd>BBAN</Cd>
</SchmeNm>
</Othr>
</Id>
</CdtrAcct>
<RmtInf>
${getReferenceNote(payment)}
<#assign paidTransactions = transHash[payment.internalid]>
<#assign paidTransactionsCount = paidTransactions?size>
<#list transHash[payment.internalid] as transaction>
<#if transaction.custbody_eff_nsp2p_paymentref?has_content>
<Strd>
<#if (paidTransactionsCount>1) >
<RfrdDocInf>
<Tp>
<CdOrPrtry>
<Cd>CINV</Cd>
</CdOrPrtry>
</Tp>
</RfrdDocInf>
<RfrdDocAmt>
<RmtdAmt Ccy="${getCurrencySymbol(payment.currency)}">${formatAmount(getReferenceAmount(payment, pfa.custrecord_2663_account.type, transaction),"dec")}</RmtdAmt>
</RfrdDocAmt>
</#if>
<CdtrRefInf>
<Tp>
<CdOrPrtry>
<Cd>SCOR</Cd>
</CdOrPrtry>
</Tp>
<Ref>${convertSEPACharSet(transaction.custbody_eff_nsp2p_paymentref)}</Ref>
</CdtrRefInf>
</Strd>
</#if>
</#list>
</RmtInf>
</CdtTrfTxInf>
</#list>
</PmtInf>
</CstmrCdtTrfInitn>
</Document><#rt>
#OUTPUT END#

Leave a comment

Your email address will not be published. Required fields are marked *