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 bookingKeyStart = amountEndIndex + 1
|
||||
val bookingKey = fieldValue.substring(bookingKeyStart, bookingKeyStart + 3) // TODO: parse codes, p. 178
|
||||
val postingKeyStart = amountEndIndex + 1
|
||||
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]
|
||||
|
||||
/**
|
||||
|
@ -282,17 +282,17 @@ open class Mt940Parser(
|
|||
* 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 supplementaryDetails: String? = null
|
||||
var furtherInformation: String? = null
|
||||
|
||||
val bankReferenceAndSupplementaryDetails = bankReference.split("\n")
|
||||
if (bankReferenceAndSupplementaryDetails.size > 1) {
|
||||
bankReference = bankReferenceAndSupplementaryDetails[0].trim()
|
||||
// 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,
|
||||
customerReference, bankReference, supplementaryDetails)
|
||||
return StatementLine(!!!isDebit, isCancellation, valueDate, bookingDate, null, amount, postingKey,
|
||||
customerReference, bankReference, furtherInformation)
|
||||
}
|
||||
|
||||
protected open fun parseNullableInformationToAccountOwner(informationToAccountOwnerString: String): InformationToAccountOwner? {
|
||||
|
|
|
@ -11,7 +11,7 @@ open class AccountStatement(
|
|||
*
|
||||
* Max length = 16
|
||||
*/
|
||||
val transactionReferenceNumber: String,
|
||||
val orderReferenceNumber: String,
|
||||
|
||||
/**
|
||||
* Bezugsreferenz oder „NONREF“.
|
||||
|
@ -20,7 +20,7 @@ open class AccountStatement(
|
|||
*
|
||||
* Max length = 16
|
||||
*/
|
||||
val relatedReferenceNumber: String?,
|
||||
val referenceNumber: String?,
|
||||
|
||||
/**
|
||||
* xxxxxxxxxxx/Konto-Nr. oder yyyyyyyy/Konto-Nr.
|
||||
|
@ -50,7 +50,7 @@ open class AccountStatement(
|
|||
*
|
||||
* Max length = 5
|
||||
*/
|
||||
val sequenceNumber: Int?,
|
||||
val sheetNumber: Int?,
|
||||
|
||||
val openingBalance: Balance,
|
||||
|
||||
|
@ -72,7 +72,7 @@ open class AccountStatement(
|
|||
*
|
||||
* Max length = 65
|
||||
*/
|
||||
val multipurposeField: String? = null
|
||||
val remittanceInformationField: String? = null
|
||||
|
||||
) {
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ open class Balance(
|
|||
val isCredit: Boolean,
|
||||
|
||||
/**
|
||||
* JJMMTT = Buchungsdatum des Saldos oder '0' beim ersten Auszug
|
||||
* JJMMTT = Buchungsdatum des Saldos oder '000000' beim ersten Auszug
|
||||
*
|
||||
* Max length = 6
|
||||
*/
|
||||
|
|
|
@ -1,34 +1,92 @@
|
|||
package net.codinux.banking.fints.transactions.mt940.model
|
||||
|
||||
|
||||
open class InformationToAccountOwner(
|
||||
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?,
|
||||
/**
|
||||
* BLZ Überweisender / Zahlungsempfänger
|
||||
* Bei SEPA-Zahlungen BIC des Überweisenden / Zahlungsempfängers.
|
||||
*/
|
||||
val otherPartyBankCode: String?,
|
||||
/**
|
||||
* AT 01 IBAN des Überweisenden (Zahlungseingang Überweisung)
|
||||
* AT 04 IBAN des Zahlungsempfängers (Eingang Lastschrift)
|
||||
*/
|
||||
val otherPartyAccountId: String?,
|
||||
val bookingText: String?,
|
||||
val primaNotaNumber: String?,
|
||||
val textKeySupplement: String?
|
||||
/**
|
||||
* Buchungstext, z. B. DAUERAUFTRAG, BARGELDAUSZAHLUNG, ONLINE-UEBERWEISUNG, FOLGELASTSCHRIFT, ...
|
||||
*/
|
||||
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 customerReference: String? = null
|
||||
|
||||
/**
|
||||
* (DD-AT01 - Angabe verpflichtend)
|
||||
*/
|
||||
var mandateReference: String? = null
|
||||
|
||||
/**
|
||||
* (DD-AT02 - Angabe verpflichtend bei SEPALastschriften, nicht jedoch bei SEPARücklastschriften)
|
||||
*/
|
||||
var creditorIdentifier: String? = null
|
||||
|
||||
/**
|
||||
* (CT-AT10- Angabe verpflichtend,)
|
||||
* Entweder CRED oder DEBT
|
||||
*/
|
||||
var originatorsIdentificationCode: String? = null
|
||||
|
||||
/**
|
||||
* Summe aus Auslagenersatz und Bearbeitungsprovision bei einer nationalen Rücklastschrift
|
||||
* sowie optionalem Zinsausgleich.
|
||||
*/
|
||||
var compensationAmount: String? = null
|
||||
|
||||
/**
|
||||
* Betrag der ursprünglichen Lastschrift
|
||||
*/
|
||||
var originalAmount: String? = null
|
||||
|
||||
/**
|
||||
* (DD-AT22; CT-AT05 -Angabe verpflichtend, nicht jedoch bei RTransaktionen52)
|
||||
*/
|
||||
var sepaReference: String? = null
|
||||
|
||||
/**
|
||||
* Abweichender Überweisender (CT-AT08) / Abweichender Zahlungsempfänger (DD-AT38)
|
||||
* (optional)53
|
||||
*/
|
||||
var deviantOriginator: String? = null
|
||||
|
||||
/**
|
||||
* Abweichender Zahlungsempfänger (CT-AT28) /
|
||||
* Abweichender Zahlungspflichtiger ((DDAT15)
|
||||
* (optional)53
|
||||
*/
|
||||
var deviantRecipient: String? = null
|
||||
|
||||
var referenceWithNoSpecialType: String? = null
|
||||
|
|
|
@ -42,26 +42,63 @@ open class StatementLine(
|
|||
val currencyType: String?,
|
||||
|
||||
/**
|
||||
* Codes see p. 177 bottom - 179
|
||||
*
|
||||
* After constant „N“
|
||||
* in Kontowährung
|
||||
*
|
||||
* Max length = 15
|
||||
*/
|
||||
val amount: Amount,
|
||||
|
||||
/**
|
||||
* in Kontowährung
|
||||
* Codes see p. 177 bottom - 179
|
||||
*
|
||||
* After constant „N“
|
||||
*
|
||||
* 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