Adjusted names according to English Translation of DFÜ-Abkommen Anlage_3_Datenformate_V3.8.pdf (Appendix_3-Data_Formats_V3-8.pdf)
This commit is contained in:
parent
9600e2f11b
commit
f90e280b74
|
@ -0,0 +1,26 @@
|
||||||
|
| | |
|
||||||
|
|--------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| Geschäftsvorfall | Business Transaction / Job |
|
||||||
|
| Verwendungszweck | Remittance information, reference, (payment) purpose |
|
||||||
|
| Überweisung | Remittance (techn.), money transfer, bank transfer, wire transfer (Amerik.), credit transfer |
|
||||||
|
| Buchungsschlüssel | posting key |
|
||||||
|
| Buchungstext | posting text |
|
||||||
|
| | |
|
||||||
|
| Ende-zu-Ende Referenz | End to End Reference |
|
||||||
|
| Kundenreferenz | Reference of the submitting customer |
|
||||||
|
| Mandatsreferenz | mandate reference |
|
||||||
|
| Creditor Identifier | Creditor Identifier |
|
||||||
|
| Originators Identification Code | Originators Identification Code |
|
||||||
|
| Compensation Amount | Compensation Amount |
|
||||||
|
| Original Amount | Original Amount |
|
||||||
|
| Abweichender Überweisender (CT-AT08) / Abweichender Zahlungsempfänger (DD-AT38) | payer’s/debtor’s reference party (for credit transfer / payee’s / creditor’s reference party (for a direct debit) |
|
||||||
|
| Abweichender Zahlungsempfänger (CT-AT28) / Abweichender Zahlungspflichtiger (DDAT15) | payee’s/creditor’s reference party / payer’s/debtor’s reference party |
|
||||||
|
| | |
|
||||||
|
| Überweisender | Payer, debtor |
|
||||||
|
| Zahlungsempfänger | Payee, creditor |
|
||||||
|
| Zahlungseingang | Payment receipt |
|
||||||
|
| Lastschrift | direct debit |
|
||||||
|
| | |
|
||||||
|
| | |
|
||||||
|
| Primanoten-Nr. | Journal no. |
|
||||||
|
| | |
|
|
@ -269,10 +269,10 @@ open class Mt940Parser(
|
||||||
*/
|
*/
|
||||||
val transactionType = fieldValue.substring(amountEndIndex, amountEndIndex + 1) // transaction type is 'N', 'S' or 'F'
|
val transactionType = fieldValue.substring(amountEndIndex, amountEndIndex + 1) // transaction type is 'N', 'S' or 'F'
|
||||||
|
|
||||||
val bookingKeyStart = amountEndIndex + 1
|
val postingKeyStart = amountEndIndex + 1
|
||||||
val bookingKey = fieldValue.substring(bookingKeyStart, bookingKeyStart + 3) // TODO: parse codes, p. 178
|
val postingKey = fieldValue.substring(postingKeyStart, postingKeyStart + 3) // TODO: parse codes, p. 178
|
||||||
|
|
||||||
val customerAndBankReference = fieldValue.substring(bookingKeyStart + 3).split("//")
|
val customerAndBankReference = fieldValue.substring(postingKeyStart + 3).split("//")
|
||||||
val customerReference = customerAndBankReference[0]
|
val customerReference = customerAndBankReference[0]
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -282,17 +282,17 @@ open class Mt940Parser(
|
||||||
* the case, Reference of the Account Servicing Institution, subfield 8 may be omitted.
|
* the case, Reference of the Account Servicing Institution, subfield 8 may be omitted.
|
||||||
*/
|
*/
|
||||||
var bankReference = if (customerAndBankReference.size > 1) customerAndBankReference[1] else customerReference // TODO: or use null?
|
var bankReference = if (customerAndBankReference.size > 1) customerAndBankReference[1] else customerReference // TODO: or use null?
|
||||||
var supplementaryDetails: String? = null
|
var furtherInformation: String? = null
|
||||||
|
|
||||||
val bankReferenceAndSupplementaryDetails = bankReference.split("\n")
|
val bankReferenceAndSupplementaryDetails = bankReference.split("\n")
|
||||||
if (bankReferenceAndSupplementaryDetails.size > 1) {
|
if (bankReferenceAndSupplementaryDetails.size > 1) {
|
||||||
bankReference = bankReferenceAndSupplementaryDetails[0].trim()
|
bankReference = bankReferenceAndSupplementaryDetails[0].trim()
|
||||||
// TODO: parse /OCMT/ and /CHGS/, see page 518
|
// TODO: parse /OCMT/ and /CHGS/, see page 518
|
||||||
supplementaryDetails = bankReferenceAndSupplementaryDetails[1].trim()
|
furtherInformation = bankReferenceAndSupplementaryDetails[1].trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
return StatementLine(!!!isDebit, isCancellation, valueDate, bookingDate, null, amount, bookingKey,
|
return StatementLine(!!!isDebit, isCancellation, valueDate, bookingDate, null, amount, postingKey,
|
||||||
customerReference, bankReference, supplementaryDetails)
|
customerReference, bankReference, furtherInformation)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected open fun parseNullableInformationToAccountOwner(informationToAccountOwnerString: String): InformationToAccountOwner? {
|
protected open fun parseNullableInformationToAccountOwner(informationToAccountOwnerString: String): InformationToAccountOwner? {
|
||||||
|
|
|
@ -11,7 +11,7 @@ open class AccountStatement(
|
||||||
*
|
*
|
||||||
* Max length = 16
|
* Max length = 16
|
||||||
*/
|
*/
|
||||||
val transactionReferenceNumber: String,
|
val orderReferenceNumber: String,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bezugsreferenz oder „NONREF“.
|
* Bezugsreferenz oder „NONREF“.
|
||||||
|
@ -20,7 +20,7 @@ open class AccountStatement(
|
||||||
*
|
*
|
||||||
* Max length = 16
|
* Max length = 16
|
||||||
*/
|
*/
|
||||||
val relatedReferenceNumber: String?,
|
val referenceNumber: String?,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xxxxxxxxxxx/Konto-Nr. oder yyyyyyyy/Konto-Nr.
|
* xxxxxxxxxxx/Konto-Nr. oder yyyyyyyy/Konto-Nr.
|
||||||
|
@ -50,7 +50,7 @@ open class AccountStatement(
|
||||||
*
|
*
|
||||||
* Max length = 5
|
* Max length = 5
|
||||||
*/
|
*/
|
||||||
val sequenceNumber: Int?,
|
val sheetNumber: Int?,
|
||||||
|
|
||||||
val openingBalance: Balance,
|
val openingBalance: Balance,
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ open class AccountStatement(
|
||||||
*
|
*
|
||||||
* Max length = 65
|
* Max length = 65
|
||||||
*/
|
*/
|
||||||
val multipurposeField: String? = null
|
val remittanceInformationField: String? = null
|
||||||
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ open class Balance(
|
||||||
val isCredit: Boolean,
|
val isCredit: Boolean,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JJMMTT = Buchungsdatum des Saldos oder '0' beim ersten Auszug
|
* JJMMTT = Buchungsdatum des Saldos oder '000000' beim ersten Auszug
|
||||||
*
|
*
|
||||||
* Max length = 6
|
* Max length = 6
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,34 +1,92 @@
|
||||||
package net.codinux.banking.fints.transactions.mt940.model
|
package net.codinux.banking.fints.transactions.mt940.model
|
||||||
|
|
||||||
|
|
||||||
open class InformationToAccountOwner(
|
open class InformationToAccountOwner(
|
||||||
val unparsedReference: String,
|
val unparsedReference: String,
|
||||||
|
/**
|
||||||
|
* AT 02 Name des Überweisenden
|
||||||
|
* AT 03 Name des Zahlungsempfängers (bei mehr als 54 Zeichen wird der Name gekürzt)
|
||||||
|
*/
|
||||||
val otherPartyName: String?,
|
val otherPartyName: String?,
|
||||||
|
/**
|
||||||
|
* BLZ Überweisender / Zahlungsempfänger
|
||||||
|
* Bei SEPA-Zahlungen BIC des Überweisenden / Zahlungsempfängers.
|
||||||
|
*/
|
||||||
val otherPartyBankCode: String?,
|
val otherPartyBankCode: String?,
|
||||||
|
/**
|
||||||
|
* AT 01 IBAN des Überweisenden (Zahlungseingang Überweisung)
|
||||||
|
* AT 04 IBAN des Zahlungsempfängers (Eingang Lastschrift)
|
||||||
|
*/
|
||||||
val otherPartyAccountId: String?,
|
val otherPartyAccountId: String?,
|
||||||
val bookingText: String?,
|
/**
|
||||||
val primaNotaNumber: String?,
|
* Buchungstext, z. B. DAUERAUFTRAG, BARGELDAUSZAHLUNG, ONLINE-UEBERWEISUNG, FOLGELASTSCHRIFT, ...
|
||||||
val textKeySupplement: String?
|
*/
|
||||||
|
val postingText: String?,
|
||||||
|
/**
|
||||||
|
* Primanoten-Nr.
|
||||||
|
*/
|
||||||
|
val journalNumber: String?,
|
||||||
|
/**
|
||||||
|
* Bei R-Transaktionen siehe Tabelle der
|
||||||
|
* SEPA-Rückgabecodes, bei SEPALastschriften siehe optionale Belegung
|
||||||
|
* bei GVC 104 und GVC 105 (GVC = Geschäftsvorfallcode)
|
||||||
|
*/
|
||||||
|
val textKeyAddition: String?
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (DDAT10; CT-AT41 - Angabe verpflichtend)
|
||||||
|
* (NOTPROVIDED wird nicht eingestellt.
|
||||||
|
* Im Falle von Schecks wird hinter EREF+ die Konstante „SCHECK-NR. “, gefolgt von der Schecknummer angegeben (erst
|
||||||
|
* nach Migration Scheckvordruck auf ISO 20022; November 2016, entspricht dem Inhalt der EndToEndId des
|
||||||
|
* entsprechenden Scheckumsatzes).
|
||||||
|
*/
|
||||||
var endToEndReference: String? = null
|
var endToEndReference: String? = null
|
||||||
|
|
||||||
var customerReference: String? = null
|
var customerReference: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (DD-AT01 - Angabe verpflichtend)
|
||||||
|
*/
|
||||||
var mandateReference: String? = null
|
var mandateReference: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (DD-AT02 - Angabe verpflichtend bei SEPALastschriften, nicht jedoch bei SEPARücklastschriften)
|
||||||
|
*/
|
||||||
var creditorIdentifier: String? = null
|
var creditorIdentifier: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (CT-AT10- Angabe verpflichtend,)
|
||||||
|
* Entweder CRED oder DEBT
|
||||||
|
*/
|
||||||
var originatorsIdentificationCode: String? = null
|
var originatorsIdentificationCode: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Summe aus Auslagenersatz und Bearbeitungsprovision bei einer nationalen Rücklastschrift
|
||||||
|
* sowie optionalem Zinsausgleich.
|
||||||
|
*/
|
||||||
var compensationAmount: String? = null
|
var compensationAmount: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Betrag der ursprünglichen Lastschrift
|
||||||
|
*/
|
||||||
var originalAmount: String? = null
|
var originalAmount: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (DD-AT22; CT-AT05 -Angabe verpflichtend, nicht jedoch bei RTransaktionen52)
|
||||||
|
*/
|
||||||
var sepaReference: String? = null
|
var sepaReference: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abweichender Überweisender (CT-AT08) / Abweichender Zahlungsempfänger (DD-AT38)
|
||||||
|
* (optional)53
|
||||||
|
*/
|
||||||
var deviantOriginator: String? = null
|
var deviantOriginator: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abweichender Zahlungsempfänger (CT-AT28) /
|
||||||
|
* Abweichender Zahlungspflichtiger ((DDAT15)
|
||||||
|
* (optional)53
|
||||||
|
*/
|
||||||
var deviantRecipient: String? = null
|
var deviantRecipient: String? = null
|
||||||
|
|
||||||
var referenceWithNoSpecialType: String? = null
|
var referenceWithNoSpecialType: String? = null
|
||||||
|
|
|
@ -42,26 +42,63 @@ open class StatementLine(
|
||||||
val currencyType: String?,
|
val currencyType: String?,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Codes see p. 177 bottom - 179
|
* in Kontowährung
|
||||||
*
|
|
||||||
* After constant „N“
|
|
||||||
*
|
*
|
||||||
* Max length = 15
|
* Max length = 15
|
||||||
*/
|
*/
|
||||||
val amount: Amount,
|
val amount: Amount,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* in Kontowährung
|
* Codes see p. 177 bottom - 179
|
||||||
|
*
|
||||||
|
* After constant „N“
|
||||||
*
|
*
|
||||||
* Length = 3
|
* Length = 3
|
||||||
*/
|
*/
|
||||||
val bookingKey: String,
|
val postingKey: String,
|
||||||
|
|
||||||
val referenceForTheAccountOwner: String,
|
/**
|
||||||
|
* Kundenreferenz. Bei
|
||||||
|
* Nichtbelegung wird
|
||||||
|
* „NONREF“ eingestellt,
|
||||||
|
* zum Beispiel bei Schecknummer
|
||||||
|
* Wenn „KREF+“ eingestellt
|
||||||
|
* ist, dann erfolgt die
|
||||||
|
* Angabe der
|
||||||
|
* Referenznummer in Tag
|
||||||
|
* :86: .
|
||||||
|
*/
|
||||||
|
val customerReference: String,
|
||||||
|
|
||||||
val referenceOfTheAccountServicingInstitution: String?,
|
/**
|
||||||
|
* Bankreferenz
|
||||||
|
*/
|
||||||
|
val bankReference: String?,
|
||||||
|
|
||||||
val supplementaryDetails: String? = null
|
/**
|
||||||
|
* Währungsart und Umsatzbetrag in Ursprungswährung (original currency
|
||||||
|
* amount) in folgendem
|
||||||
|
* Format:
|
||||||
|
* /OCMT/3a..15d/
|
||||||
|
* sowie Währungsart und
|
||||||
|
* Gebührenbetrag
|
||||||
|
* (charges) in folgendem
|
||||||
|
* Format:
|
||||||
|
* /CHGS/3a..15d/
|
||||||
|
* 3a = 3-stelliger
|
||||||
|
* Währungscode gemäß
|
||||||
|
* ISO 4217
|
||||||
|
* ..15d = Betrag mit Komma
|
||||||
|
* als Dezimalzeichen (gemäß SWIFT-Konvention).
|
||||||
|
* Im Falle von SEPALastschriftrückgaben ist
|
||||||
|
* das Feld /OCMT/ mit dem
|
||||||
|
* Originalbetrag und das
|
||||||
|
* Feld /CHGS/ mit der
|
||||||
|
* Summe aus Entgelten
|
||||||
|
* sowie Zinsausgleich zu
|
||||||
|
* belegen.
|
||||||
|
*/
|
||||||
|
val furtherInformationOriginalAmountAndCharges: String? = null
|
||||||
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue