UNPKG

camtts

Version:
127 lines (100 loc) 3.77 kB
import { CAMTElement } from "./Base"; export class Entry extends CAMTElement { get reference() { return this.element?.getElementsByTagName('NtryRef')[0]?.textContent; } get amount() { const value = this.element?.getElementsByTagName('Amt')[0]?.textContent; const currency = this.element?.getElementsByTagName('Amt')[0]?.getAttribute('Ccy'); return {value, currency}; } get creditdebitIndicator() { return this.element?.getElementsByTagName('CdtDbtInd')[0]?.textContent; } get bookindDate() { const bookingDate = this.element?.getElementsByTagName('BookgDt')[0] return {date: bookingDate?.getElementsByTagName('Dt')[0]?.textContent}; } get accountServiceRef() { return this.element?.getElementsByTagName('AcctSvcrRef')[0]?.textContent; } get additionalEntryInfo() { return this.element?.getElementsByTagName('AddtlNtryInf')[0]?.textContent; } get entryDetails(): EntryDetails { return new EntryDetails(this.element?.getElementsByTagName('NtryDtls')[0]); } } export class EntryDetails extends CAMTElement { get transactionDetails(): TransactionDetails { return new TransactionDetails(this.element?.getElementsByTagName('TxDtls')[0]); } /** * Subject / Verwendungszweck */ get remittanceInformation(): RemittanceInformation { return new RemittanceInformation(this.element?.getElementsByTagName('RmtInf')[0]); } } export class TransactionDetails extends CAMTElement { get relatedParties(): RelatedParties { return new RelatedParties(this.element?.getElementsByTagName('RltdPties')[0]); } } export class RelatedParties extends CAMTElement { /** * Financial institution for the creditor/ Zahlungsdienstleister des Debtors */ get debtorAccount() { const acc = this.element?.getElementsByTagName('DbtrAcct')[0]; const iban = acc?.getElementsByTagName('Id')[0]?.getElementsByTagName('IBAN')[0]?.textContent; return {id: {iban}}; } /** * Debtor / Zahler */ get debtor() { const acc = this.element?.getElementsByTagName('Dbtr')[0]; const name = acc?.getElementsByTagName('Nm')[0]?.textContent; return { name }; } /** * Ultimate debtor different from creditor / Abweichender Zahler */ get ultimateDebtor() { const acc = this.element?.getElementsByTagName('UltmtDbtr')[0]; const name = acc?.getElementsByTagName('Nm')[0]?.textContent; return { name }; } /** * ID of creditor account / Zahlungsdienstleister des Creditors */ get creditorAccount() { const acc = this.element?.getElementsByTagName('CdtrAcct')[0]; const iban = acc?.getElementsByTagName('Id')[0]?.getElementsByTagName('IBAN')[0]?.textContent; return { id: { iban } }; } /** * Party to which amount of money is due / Einreicher der Lastschrift */ get creditor() { const acc = this.element?.getElementsByTagName('Cdtr')[0]; const name = acc?.getElementsByTagName('Nm')[0]?.textContent; return { name }; } /** * Ultimate party to which an amount of money is due. / Konto des Lastschrifteinreichers */ get ultimateCreditor() { const acc = this.element?.getElementsByTagName('UltmtCdtr')[0]; const name = acc?.getElementsByTagName('Nm')[0]?.textContent; return { name }; } } export class RemittanceInformation extends CAMTElement { get unstructured() { return Array.prototype.map.call(this.element?.getElementsByTagName('Ustrd'), (elem: Element) => { return elem.textContent; }); } }