From a2ac04f42403cb7b3e68873bf921711db72a6997 Mon Sep 17 00:00:00 2001 From: dankito Date: Sat, 24 Aug 2024 18:25:56 +0200 Subject: [PATCH] Added clarification about Dialogsprache --- .../datenelemente/implementierte/Dialogsprache.kt | 7 +++++++ .../banking/fints/model/mapper/ModelMapper.kt | 13 +++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/messages/datenelemente/implementierte/Dialogsprache.kt b/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/messages/datenelemente/implementierte/Dialogsprache.kt index 3254f17e..0cf1349f 100644 --- a/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/messages/datenelemente/implementierte/Dialogsprache.kt +++ b/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/messages/datenelemente/implementierte/Dialogsprache.kt @@ -3,6 +3,13 @@ package net.codinux.banking.fints.messages.datenelemente.implementierte enum class Dialogsprache(override val code: String) : ICodeEnum { + /** + * Der Kunde darf lediglich ein Sprachkennzeichen einstellen, das im Rahmen + * der BPD vom Kreditinstitut an das Kundensystem übermittelt wurde. + * Wenn noch keine BPD vorliegen, sollte das Kundenprodukt mit Hilfe eines + * anonymen Dialogs die aktuelle BPD des Instituts ermitteln und die Standardsprache des Instituts einstellen, die in den Bankparameterdaten mitgeteilt + * wird. Falls die BPD nicht abgerufen werden kann, ist der Wert „0“ einzustellen. Das Kreditinstitut antwortet in diesem Fall in seiner Standardsprache. + */ Default("0"), German("1"), diff --git a/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/model/mapper/ModelMapper.kt b/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/model/mapper/ModelMapper.kt index db8b35b1..cc6d218b 100644 --- a/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/model/mapper/ModelMapper.kt +++ b/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/model/mapper/ModelMapper.kt @@ -72,6 +72,13 @@ open class ModelMapper( } } + response.getFirstSegmentById(InstituteSegmentId.CommunicationInfo)?.let { communicationInfo -> + // actually it's the default language, not the selected one, but we don't offer a way to select language + // and expect in first message, where language is set to 0 = signal that we don't know bank server's supported + // languages, we simply use bank's default language, which is returned in BPD (and is always except one bank German anyway) + bank.selectedLanguage = communicationInfo.defaultLanguage + } + response.getFirstSegmentById(InstituteSegmentId.Synchronization)?.let { synchronization -> synchronization.customerSystemId?.let { bank.customerSystemId = it @@ -124,12 +131,6 @@ open class ModelMapper( // TODO: may also make use of other info } - response.getFirstSegmentById(InstituteSegmentId.CommunicationInfo)?.let { communicationInfo -> - if (bank.selectedLanguage != communicationInfo.defaultLanguage) { - bank.selectedLanguage = communicationInfo.defaultLanguage - } - } - val supportedJobs = response.supportedJobs if (supportedJobs.isNotEmpty()) { // if allowedJobsForBank is empty than bank didn't send any allowed job for (account in bank.accounts) {