camtts
Version:
CAMT parser for Typescript
127 lines (100 loc) • 3.77 kB
text/typescript
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;
});
}
}