Added FinTsClientCallback to ask user to select a tan procedure; renamed AllowedJob to SupportedJob

This commit is contained in:
dankl 2019-10-15 18:23:03 +02:00 committed by dankito
parent 7fcc8db798
commit 742343b139
16 changed files with 1056 additions and 40 deletions

View File

@ -25,6 +25,7 @@ import java.util.*
open class FinTsClient @JvmOverloads constructor( open class FinTsClient @JvmOverloads constructor(
protected val callback: FinTsClientCallback,
protected val base64Service: IBase64Service, protected val base64Service: IBase64Service,
protected val webClient: IWebClient = OkHttpWebClient(), protected val webClient: IWebClient = OkHttpWebClient(),
protected val messageBuilder: MessageBuilder = MessageBuilder(), protected val messageBuilder: MessageBuilder = MessageBuilder(),
@ -91,7 +92,9 @@ open class FinTsClient @JvmOverloads constructor(
open fun tryGetTransactionsOfLast90DaysWithoutTanAsync(bank: BankData, customer: CustomerData, open fun tryGetTransactionsOfLast90DaysWithoutTanAsync(bank: BankData, customer: CustomerData,
callback: (GetTransactionsResponse) -> Unit) { callback: (GetTransactionsResponse) -> Unit) {
callback(tryGetTransactionsOfLast90DaysWithoutTan(bank, customer, false)) threadPool.runAsync {
callback(tryGetTransactionsOfLast90DaysWithoutTan(bank, customer, false))
}
} }
/** /**
@ -159,6 +162,7 @@ open class FinTsClient @JvmOverloads constructor(
val balanceResponse = getBalanceAfterDialogInit(bank, customer, dialogData) val balanceResponse = getBalanceAfterDialogInit(bank, customer, dialogData)
if (balanceResponse.successful == false && balanceResponse.couldCreateMessage == true) { // don't break here if required HKSAL message is not implemented if (balanceResponse.successful == false && balanceResponse.couldCreateMessage == true) { // don't break here if required HKSAL message is not implemented
closeDialog(bank, customer, dialogData)
return GetTransactionsResponse(balanceResponse) return GetTransactionsResponse(balanceResponse)
} }
@ -239,13 +243,19 @@ open class FinTsClient @JvmOverloads constructor(
protected open fun initDialog(bank: BankData, customer: CustomerData, dialogData: DialogData): Response { protected open fun initDialog(bank: BankData, customer: CustomerData, dialogData: DialogData): Response {
val tanProcedureSelectedResponse = ensureTanProcedureIsSelected(bank, customer)
if (tanProcedureSelectedResponse.successful == false) {
return tanProcedureSelectedResponse
}
val requestBody = messageBuilder.createInitDialogMessage(bank, customer, product, dialogData) val requestBody = messageBuilder.createInitDialogMessage(bank, customer, product, dialogData)
val response = getAndHandleResponseForMessage(requestBody, bank) val response = getAndHandleResponseForMessage(requestBody, bank)
if (response.successful) { if (response.successful) {
updateBankData(bank, response) updateBankData(bank, response)
updateCustomerData(customer, response) updateCustomerData(customer, bank, response)
response.messageHeader?.let { header -> dialogData.dialogId = header.dialogId } response.messageHeader?.let { header -> dialogData.dialogId = header.dialogId }
} }
@ -269,7 +279,7 @@ open class FinTsClient @JvmOverloads constructor(
return synchronizeCustomerSystemId(bank, customer) return synchronizeCustomerSystemId(bank, customer)
} }
return FinTsClientResponse(true, false) return FinTsClientResponse(true, true, false)
} }
/** /**
@ -292,7 +302,7 @@ open class FinTsClient @JvmOverloads constructor(
if (response.successful) { if (response.successful) {
updateBankData(bank, response) updateBankData(bank, response)
updateCustomerData(customer, response) updateCustomerData(customer, bank, response)
response.messageHeader?.let { header -> dialogData.dialogId = header.dialogId } response.messageHeader?.let { header -> dialogData.dialogId = header.dialogId }
@ -303,6 +313,40 @@ open class FinTsClient @JvmOverloads constructor(
} }
// TODO: glatt ziehen
protected open fun ensureTanProcedureIsSelected(bank: BankData, customer: CustomerData): Response {
var askWithProceduresSupportedByBank = false
if (bank.supportedTanProcedures.isEmpty() && customer.selectedTanProcedure == null) { // no tan procedures ever received
getAnonymousBankInfo(bank)
if (bank.supportedTanProcedures.isNotEmpty()) { // TODO: what if we didn't receive any? find a workaround for this
customer.selectedTanProcedure =
callback.askUserForTanProcedure(bank.supportedTanProcedures) // a bit problematic as user is not necessarily allowed to use all procedures bank supports
askWithProceduresSupportedByBank = true
}
}
if (customer.selectedTanProcedure == null) {
if (customer.supportedTanProcedures.isNotEmpty()) {
customer.selectedTanProcedure =
callback.askUserForTanProcedure(customer.supportedTanProcedures)
}
else if (askWithProceduresSupportedByBank == false && bank.supportedTanProcedures.isNotEmpty()) {
customer.selectedTanProcedure =
callback.askUserForTanProcedure(bank.supportedTanProcedures)
}
}
val noTanProcedureSelected = customer.selectedTanProcedure == null
return Response(!!!noTanProcedureSelected, noTanProcedureSelected = noTanProcedureSelected)
}
protected open fun getAndHandleResponseForMessage(message: MessageBuilderResult, bank: BankData): Response { protected open fun getAndHandleResponseForMessage(message: MessageBuilderResult, bank: BankData): Response {
message.createdMessage?.let { requestBody -> message.createdMessage?.let { requestBody ->
return getAndHandleResponseForMessage(requestBody, bank) return getAndHandleResponseForMessage(requestBody, bank)
@ -363,9 +407,17 @@ open class FinTsClient @JvmOverloads constructor(
// bank.bic = bankParameters. // TODO: where's the BIC? // bank.bic = bankParameters. // TODO: where's the BIC?
// bank.finTs3ServerAddress = // TODO: parse HIKOM // bank.finTs3ServerAddress = // TODO: parse HIKOM
} }
response.getFirstSegmentById<TanInfo>(InstituteSegmentId.TanInfo)?.let { tanInfo ->
bank.supportedTanProcedures = mapToTanProcedures(tanInfo)
}
if (response.supportedJobs.isNotEmpty()) {
bank.supportedJobs = response.supportedJobs
}
} }
protected open fun updateCustomerData(customer: CustomerData, response: Response) { protected open fun updateCustomerData(customer: CustomerData, bank: BankData, response: Response) {
response.getFirstSegmentById<BankParameters>(InstituteSegmentId.BankParameters)?.let { bankParameters -> response.getFirstSegmentById<BankParameters>(InstituteSegmentId.BankParameters)?.let { bankParameters ->
// TODO: ask user if there is more than one supported language? But it seems that almost all banks only support German. // TODO: ask user if there is more than one supported language? But it seems that almost all banks only support German.
if (customer.selectedLanguage == Dialogsprache.Default && bankParameters.supportedLanguages.isNotEmpty()) { if (customer.selectedLanguage == Dialogsprache.Default && bankParameters.supportedLanguages.isNotEmpty()) {
@ -419,23 +471,76 @@ open class FinTsClient @JvmOverloads constructor(
// TODO: may also make use of other info // TODO: may also make use of other info
} }
val allowedJobsForBank = response.allowedJobs val supportedJobs = response.supportedJobs
if (allowedJobsForBank.isNotEmpty()) { // if allowedJobsForBank is empty than bank didn't send any allowed job if (supportedJobs.isNotEmpty()) { // if allowedJobsForBank is empty than bank didn't send any allowed job
for (account in customer.accounts) { for (account in customer.accounts) {
val allowedJobsForAccount = mutableListOf<AllowedJob>() setAllowedJobsForAccount(account, supportedJobs)
}
for (job in allowedJobsForBank) { }
if (isJobSupported(account, job)) { else if (bank.supportedJobs.isNotEmpty()) {
allowedJobsForAccount.add(job) for (account in customer.accounts) {
} if (account.allowedJobs.isEmpty()) {
setAllowedJobsForAccount(account, bank.supportedJobs)
} }
}
}
account.allowedJobs = allowedJobsForAccount response.getFirstSegmentById<TanInfo>(InstituteSegmentId.TanInfo)?.let { tanInfo ->
customer.supportedTanProcedures = mapToTanProcedures(tanInfo)
customer.selectedTanProcedure?.let { selectedProcedure ->
if (customer.supportedTanProcedures.isNotEmpty() &&
customer.supportedTanProcedures.contains(selectedProcedure) == false) {
// currently selected tan procedure is not in list of supported procedures -> ask user the next time when needed
customer.selectedTanProcedure = null
}
} }
} }
} }
protected open fun isJobSupported(account: AccountData, job: AllowedJob): Boolean { private fun setAllowedJobsForAccount(account: AccountData, supportedJobs: List<SupportedJob>) {
val allowedJobsForAccount = mutableListOf<SupportedJob>()
for (job in supportedJobs) {
if (isJobSupported(account, job)) {
allowedJobsForAccount.add(job)
}
}
account.allowedJobs = allowedJobsForAccount
}
protected open fun mapToTanProcedures(tanInfo: TanInfo): List<TanProcedure> {
return tanInfo.tanProcedureParameters.procedureParameters.mapNotNull {
mapToTanProcedure(it)
}
}
protected open fun mapToTanProcedure(parameters: TanProcedureParameters): TanProcedure? {
val function = parameters.securityFunction
val procedureName = parameters.procedureName
val nameLowerCase = procedureName.toLowerCase()
return when {
nameLowerCase.contains("chiptan") -> {
if (nameLowerCase.contains("qr")) {
TanProcedure(procedureName, function, TanProcedureType.ChipTanQrCode)
}
else {
TanProcedure(procedureName, function, TanProcedureType.ChipTan)
}
}
nameLowerCase.contains("sms") -> TanProcedure(procedureName, function, TanProcedureType.SmsTan)
nameLowerCase.contains("push") -> TanProcedure(procedureName, function, TanProcedureType.PushTan)
// TODO: what about other tan procedures we're not aware of?
// we filter out iTAN and Einschritt-Verfahren as they are not permitted anymore according to PSD2
else -> null
}
}
protected open fun isJobSupported(account: AccountData, job: SupportedJob): Boolean {
for (allowedJobName in account.allowedJobNames) { for (allowedJobName in account.allowedJobNames) {
if (allowedJobName == job.jobName) { if (allowedJobName == job.jobName) {
return true return true

View File

@ -0,0 +1,10 @@
package net.dankito.fints
import net.dankito.fints.model.TanProcedure
interface FinTsClientCallback {
fun askUserForTanProcedure(supportedTanProcedures: List<TanProcedure>): TanProcedure?
}

View File

@ -1,7 +1,7 @@
package net.dankito.fints.model package net.dankito.fints.model
import net.dankito.fints.response.segments.AccountType import net.dankito.fints.response.segments.AccountType
import net.dankito.fints.response.segments.AllowedJob import net.dankito.fints.response.segments.SupportedJob
open class AccountData( open class AccountData(
@ -17,7 +17,7 @@ open class AccountData(
val productName: String?, val productName: String?,
val accountLimit: String?, val accountLimit: String?,
val allowedJobNames: List<String>, val allowedJobNames: List<String>,
var allowedJobs: List<AllowedJob> = listOf() var allowedJobs: List<SupportedJob> = listOf()
) { ) {
override fun toString(): String { override fun toString(): String {

View File

@ -3,6 +3,7 @@ package net.dankito.fints.model
import net.dankito.fints.messages.datenelemente.implementierte.BPDVersion import net.dankito.fints.messages.datenelemente.implementierte.BPDVersion
import net.dankito.fints.messages.datenelemente.implementierte.Dialogsprache import net.dankito.fints.messages.datenelemente.implementierte.Dialogsprache
import net.dankito.fints.messages.datenelemente.implementierte.HbciVersion import net.dankito.fints.messages.datenelemente.implementierte.HbciVersion
import net.dankito.fints.response.segments.SupportedJob
open class BankData( open class BankData(
@ -20,7 +21,9 @@ open class BankData(
var countMaxJobsPerMessage: Int = 0, var countMaxJobsPerMessage: Int = 0,
var supportedHbciVersions: List<HbciVersion> = listOf(), var supportedHbciVersions: List<HbciVersion> = listOf(),
var supportedLanguages: List<Dialogsprache> = listOf() var supportedTanProcedures: List<TanProcedure> = listOf(),
var supportedLanguages: List<Dialogsprache> = listOf(),
var supportedJobs: List<SupportedJob> = listOf()
) { ) {

View File

@ -13,7 +13,7 @@ open class CustomerData(
var iban: String? = null, var iban: String? = null,
var accounts: List<AccountData> = listOf(), var accounts: List<AccountData> = listOf(),
var updVersion: Int = UPDVersion.VersionNotReceivedYet, var updVersion: Int = UPDVersion.VersionNotReceivedYet,
var availableTanProcedures: List<TanProcedure> = listOf(), var supportedTanProcedures: List<TanProcedure> = listOf(),
var selectedTanProcedure: TanProcedure? = null, var selectedTanProcedure: TanProcedure? = null,
var securityMethod: Sicherheitsverfahren = Sicherheitsverfahren.PIN_TAN_Verfahren, var securityMethod: Sicherheitsverfahren = Sicherheitsverfahren.PIN_TAN_Verfahren,
var version: VersionDesSicherheitsverfahrens = VersionDesSicherheitsverfahrens.PIN_Zwei_Schritt, var version: VersionDesSicherheitsverfahrens = VersionDesSicherheitsverfahrens.PIN_Zwei_Schritt,

View File

@ -10,7 +10,7 @@ open class TanProcedure(
) { ) {
override fun toString(): String { override fun toString(): String {
return "$displayName ($type, ${securityFunction.code}" return "$displayName ($type, ${securityFunction.code})"
} }
} }

View File

@ -16,6 +16,7 @@ open class Response constructor(
* When a serious error occurred during web request or response parsing. * When a serious error occurred during web request or response parsing.
*/ */
val exception: Exception? = null, val exception: Exception? = null,
val noTanProcedureSelected: Boolean = false,
val messageCreationError: MessageBuilderResult? = null val messageCreationError: MessageBuilderResult? = null
) { ) {
@ -26,7 +27,8 @@ open class Response constructor(
get() = exception == null && messageFeedback?.isError == true get() = exception == null && messageFeedback?.isError == true
open val successful: Boolean open val successful: Boolean
get() = couldCreateMessage && didReceiveResponse && responseContainsErrors == false get() = noTanProcedureSelected == false &&couldCreateMessage && didReceiveResponse
&& responseContainsErrors == false
open val isStrongAuthenticationRequired: Boolean open val isStrongAuthenticationRequired: Boolean
get() = tanResponse?.isStrongAuthenticationRequired == true get() = tanResponse?.isStrongAuthenticationRequired == true
@ -67,8 +69,8 @@ open class Response constructor(
* Returns all jobs bank supports otherwise. This does not necessarily mean that they are also allowed for * Returns all jobs bank supports otherwise. This does not necessarily mean that they are also allowed for
* customer / account, see [net.dankito.fints.model.AccountData.allowedJobNames]. * customer / account, see [net.dankito.fints.model.AccountData.allowedJobNames].
*/ */
open val allowedJobs: List<AllowedJob> open val supportedJobs: List<SupportedJob>
get() = receivedSegments.mapNotNull { it as? AllowedJob } get() = receivedSegments.mapNotNull { it as? SupportedJob }
open fun <T : ReceivedSegment> getFirstSegmentById(id: ISegmentId): T? { open fun <T : ReceivedSegment> getFirstSegmentById(id: ISegmentId): T? {

View File

@ -220,7 +220,7 @@ open class ResponseParser @JvmOverloads constructor(
} }
protected open fun parseAllowedJob(segment: String, segmentId: String, dataElementGroups: List<String>): AllowedJob { protected open fun parseAllowedJob(segment: String, segmentId: String, dataElementGroups: List<String>): SupportedJob {
var jobName = segmentId.substring(0, 5) // cut off last 'S' (which stands for 'parameter') var jobName = segmentId.substring(0, 5) // cut off last 'S' (which stands for 'parameter')
jobName = jobName.replaceFirst("HI", "HK") jobName = jobName.replaceFirst("HI", "HK")
@ -230,7 +230,7 @@ open class ResponseParser @JvmOverloads constructor(
// Bei aelteren Version fehlt das Datenelement 'Sicherheitsklasse'. Ist fuer PIN/TAN eh zu ignorieren // Bei aelteren Version fehlt das Datenelement 'Sicherheitsklasse'. Ist fuer PIN/TAN eh zu ignorieren
val securityClass = if (dataElementGroups.size > 3) parseNullableInt(dataElementGroups[3]) else null val securityClass = if (dataElementGroups.size > 3) parseNullableInt(dataElementGroups[3]) else null
return AllowedJob(jobName, maxCountJobs, minimumCountSignatures, securityClass, segment) return SupportedJob(jobName, maxCountJobs, minimumCountSignatures, securityClass, segment)
} }
@ -254,6 +254,8 @@ open class ResponseParser @JvmOverloads constructor(
} }
protected open fun mapToTanProcedureParameters(proceduresDataElements: List<String>): List<TanProcedureParameters> { protected open fun mapToTanProcedureParameters(proceduresDataElements: List<String>): List<TanProcedureParameters> {
// TODO: this throws an error for HITANS in version 4, but PSD2 needs HKTAN at least in version 6 anyway
val parsedProceduresParameters = mutableListOf<TanProcedureParameters>() val parsedProceduresParameters = mutableListOf<TanProcedureParameters>()
var remainingDataElements = proceduresDataElements var remainingDataElements = proceduresDataElements

View File

@ -8,6 +8,8 @@ open class FinTsClientResponse(
val isSuccessful: Boolean, val isSuccessful: Boolean,
val noTanProcedureSelected: Boolean,
val isStrongAuthenticationRequired: Boolean, val isStrongAuthenticationRequired: Boolean,
val tanRequired: TanResponse? = null, val tanRequired: TanResponse? = null,
@ -25,9 +27,9 @@ open class FinTsClientResponse(
) { ) {
constructor(response: Response) : this(response.successful, response.isStrongAuthenticationRequired, constructor(response: Response) : this(response.successful, response.noTanProcedureSelected,
response.tanResponse, response.errorsToShowToUser, response.exception, response.isStrongAuthenticationRequired, response.tanResponse, response.errorsToShowToUser,
response.messageCreationError?.isJobAllowed ?: true, response.exception, response.messageCreationError?.isJobAllowed ?: true,
response.messageCreationError?.isJobVersionSupported ?: true, response.messageCreationError?.isJobVersionSupported ?: true,
response.messageCreationError?.allowedVersions ?: listOf(), response.messageCreationError?.allowedVersions ?: listOf(),
response.messageCreationError?.supportedVersions ?: listOf()) response.messageCreationError?.supportedVersions ?: listOf())

View File

@ -1,7 +1,7 @@
package net.dankito.fints.response.segments package net.dankito.fints.response.segments
open class AllowedJob( open class SupportedJob(
val jobName: String, val jobName: String,
val maxCountJobs: Int, val maxCountJobs: Int,
val minimumCountSignatures: Int, val minimumCountSignatures: Int,

View File

@ -10,10 +10,10 @@ open class TanInfo(
segmentString: String segmentString: String
) )
: AllowedJob(jobName, maxCountJobs, minimumCountSignatures, securityClass, segmentString) { : SupportedJob(jobName, maxCountJobs, minimumCountSignatures, securityClass, segmentString) {
constructor(allowedJob: AllowedJob, tanProcedureParameters: TwoStepTanProcedureParameters) constructor(supportedJob: SupportedJob, tanProcedureParameters: TwoStepTanProcedureParameters)
: this(allowedJob.jobName, allowedJob.maxCountJobs, allowedJob.minimumCountSignatures, : this(supportedJob.jobName, supportedJob.maxCountJobs, supportedJob.minimumCountSignatures,
allowedJob.securityClass, tanProcedureParameters, allowedJob.segmentString) supportedJob.securityClass, tanProcedureParameters, supportedJob.segmentString)
} }

View File

@ -1,6 +1,7 @@
package net.dankito.fints.java; package net.dankito.fints.java;
import net.dankito.fints.FinTsClient; import net.dankito.fints.FinTsClient;
import net.dankito.fints.FinTsClientCallback;
import net.dankito.fints.banks.BankFinder; import net.dankito.fints.banks.BankFinder;
import net.dankito.fints.messages.datenelemente.implementierte.signatur.Sicherheitsfunktion; import net.dankito.fints.messages.datenelemente.implementierte.signatur.Sicherheitsfunktion;
import net.dankito.fints.model.*; import net.dankito.fints.model.*;
@ -8,6 +9,9 @@ import net.dankito.fints.model.mapper.BankDataMapper;
import net.dankito.fints.response.client.GetTransactionsResponse; import net.dankito.fints.response.client.GetTransactionsResponse;
import net.dankito.fints.util.Java8Base64Service; import net.dankito.fints.util.Java8Base64Service;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -27,7 +31,16 @@ public class JavaShowcase {
CustomerData customer = new CustomerData("<customer_id>", "<pin>"); CustomerData customer = new CustomerData("<customer_id>", "<pin>");
customer.setSelectedTanProcedure(new TanProcedure("", Sicherheitsfunktion.PIN_TAN_911, TanProcedureType.ChipTan)); customer.setSelectedTanProcedure(new TanProcedure("", Sicherheitsfunktion.PIN_TAN_911, TanProcedureType.ChipTan));
FinTsClient finTsClient = new FinTsClient(new Java8Base64Service()); FinTsClientCallback callback = new FinTsClientCallback() {
@Nullable
@Override
public TanProcedure askUserForTanProcedure(@NotNull List<? extends TanProcedure> supportedTanProcedures) {
// TODO: if entering TAN is required select your tan procedure here
return supportedTanProcedures.get(0);
}
};
FinTsClient finTsClient = new FinTsClient(callback, new Java8Base64Service());
// some banks support retrieving account transactions of last 90 days without TAN // some banks support retrieving account transactions of last 90 days without TAN
long ninetyDaysAgoMilliseconds = 90 * 24 * 60 * 60 * 1000L; long ninetyDaysAgoMilliseconds = 90 * 24 * 60 * 60 * 1000L;

View File

@ -4,21 +4,31 @@ import net.dankito.fints.messages.datenelemente.abgeleiteteformate.Laenderkennze
import net.dankito.fints.messages.datenelemente.implementierte.Dialogsprache import net.dankito.fints.messages.datenelemente.implementierte.Dialogsprache
import net.dankito.fints.messages.datenelemente.implementierte.KundensystemStatus import net.dankito.fints.messages.datenelemente.implementierte.KundensystemStatus
import net.dankito.fints.messages.datenelemente.implementierte.KundensystemStatusWerte import net.dankito.fints.messages.datenelemente.implementierte.KundensystemStatusWerte
import net.dankito.fints.messages.datenelemente.implementierte.signatur.Sicherheitsfunktion
import net.dankito.fints.model.* import net.dankito.fints.model.*
import net.dankito.fints.response.client.FinTsClientResponse import net.dankito.fints.response.client.FinTsClientResponse
import net.dankito.fints.util.Java8Base64Service import net.dankito.fints.util.Java8Base64Service
import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.assertThat
import org.junit.Ignore import org.junit.Ignore
import org.junit.Test import org.junit.Test
import java.util.*
@Ignore // not an automatic test, supply your settings below @Ignore // not an automatic test, supply your settings below
class FinTsClientTest { class FinTsClientTest {
private val underTest = object : FinTsClient(Java8Base64Service()) { private val callback = object : FinTsClientCallback {
fun synchronizeCustomerSystemId(customer: CustomerData, bank: BankData): FinTsClientResponse { override fun askUserForTanProcedure(supportedTanProcedures: List<TanProcedure>): TanProcedure? {
// TODO: if entering TAN is required select your tan procedure here
return supportedTanProcedures.first()
}
}
private val underTest = object : FinTsClient(callback, Java8Base64Service()) {
fun testSynchronizeCustomerSystemId(bank: BankData, customer: CustomerData): FinTsClientResponse {
return synchronizeCustomerSystemId(bank, customer) return synchronizeCustomerSystemId(bank, customer)
} }
@ -52,7 +62,7 @@ class FinTsClientTest {
fun synchronizeCustomerSystemId() { fun synchronizeCustomerSystemId() {
// when // when
val result = underTest.synchronizeCustomerSystemId(Customer, Bank) val result = underTest.testSynchronizeCustomerSystemId(Bank, Customer)
// then // then
assertThat(result.isSuccessful).isTrue() assertThat(result.isSuccessful).isTrue()

View File

@ -351,7 +351,7 @@ class ResponseParserTest : FinTsTestBase() {
} }
@Test @Test
fun parseAllowedJobs() { fun parseSupportedJobs() {
// when // when
val result = underTest.parse( val result = underTest.parse(
@ -455,7 +455,7 @@ class ResponseParserTest : FinTsTestBase() {
assertThat(result.receivedSegments).hasSize(92) assertThat(result.receivedSegments).hasSize(92)
for (segment in result.receivedSegments) { for (segment in result.receivedSegments) {
assertThat(segment is AllowedJob).describedAs("$segment should be of type AllowedJob").isTrue() assertThat(segment is SupportedJob).describedAs("$segment should be of type AllowedJob").isTrue()
} }
} }

View File

@ -0,0 +1,434 @@
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190718EUR106728,17
:61:1907200722DR273,10N033NONREF
:86:118?00ECHTZEIT-UEBERWEISUNG?109310?20SVWZ+Bahnfahrten DATUM 2
0.0?217.2019, 19.24 UHR 1.TAN 592?22935?30BELADEBEXXX?31DE3210050
0006016708591?32Marieke Schmidt?34997
:62F:C190722EUR106455,07
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190722EUR106455,07
:61:1907240724DR100,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-07-23T15.33 Debit?
21k.3 2019-12?22ABWA+FL 232//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:62F:C190724EUR106355,07
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190724EUR106355,07
:61:1907260726DR6,99NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+005061423265?21MREF+0200
013221814?22CRED+DE77ZZZ00000569719?23SVWZ+KD-Nr. K511159080/ RG-
?24Nr. 150555947887?30COBADEFFXXX?31DE97500400000589011600?321u1
Telecom GmbH?34992
:62F:C190726EUR106348,08
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190726EUR106348,08
:61:1907290729DR420,51NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+1325292693302220190729?2
125292693?22MREF+000001065754?23CRED+DE56LKK00000143200?24SVWZ+Be
itrag 07/19 00141651?2529 faellig 29.07.19 KRANKEN?26VERSICHERUNG
?27ABWA+Sozialversicherung fur?28 Landwirtschaft, Forsten un?29d?
30HELADEFFXXX?31DE61500500000040100059?32SVLFG Krankenkasse?34992
:61:1907290729DR100,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-07-27T15.46 Debit?
21k.3 2019-12?22ABWA+FL 159//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:62F:C190729EUR105827,57
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190729EUR105827,57
:61:1908010731DR3,99N024NONREF
:86:809?00ENTGELTABSCHLUSS?106666?20Entgeltabrechnung?21siehe Anl
age?3072051210
:62F:C190731EUR105823,58
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190731EUR105823,58
:61:1908010801DR580,00N012NONREF
:86:117?00DAUERAUFTRAG?107000?20SVWZ+Miete?30HYVEDEMMXXX?31DE8770
0202701640043438?32Karin M<>ller?34997
:62F:C190801EUR105243,58
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190801EUR105243,58
:61:1908020802DR100,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-02T13.25 Debit?
21k.3 2019-12?22ABWA+FL 159//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:62F:C190802EUR105143,58
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190802EUR105143,58
:61:1908070807DR19395,68NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109200?20EREF+144/187/81344-----L020?2
18201900001251?22MREF+BY689135399618?23CRED+DE13ZZZ00000076365?24
SVWZ+STEUERNR 144/187/81344?25 EINK.ST 2018 19.395,68EUR?26ABWA+F
inanzamt Muenchen?30BYLADEMMXXX?31DE37700500000000024962?32Finanz
amt M<>nchen - Erhebun?33g Finanzkasse?34992
:61:1908070807DR300,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-06T18.12 Debit?
21k.3 2019-12?22ABWA+FL 232//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:62F:C190807EUR85447,90
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190807EUR85447,90
:61:1908080808DR150,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-07T18.38 Debit?
21k.3 2019-12?22ABWA+MUENCHEN//KREISSPK. MU?23ENCHEN STARNBERG EB
ERSBERG/?24DE?30BYLADEM1KMS?31DE02702501509000481409?32KREISSPK.
MUENCHEN STARNBER?33G EBERSBERG?34003
:62F:C190808EUR85297,90
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190808EUR85297,90
:61:1908090809DR50,00N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20SVWZ+AUFLADUNG PAYPAL GUTH
A?21BEN GIROPAY0014400457SJZ34?22W66U2?23DATUM 08.08.2019, 22.30
UHR?241.TAN 936060?30GENODE61OG1?31DE76664900000009116702?32GIRO
SOLUTION FUER PAYPAL?34997
:61:1908090809CR36,06N062NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109249?20EREF+YYW1006309018143 PA
YPA?21L?30DEUTDEFFXXX?31DE88500700100175526303?32PayPal (Europe)
S.a.r.l. et?33 Cie., S.C.A.
:62F:C190809EUR85283,96
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190809EUR85283,96
:61:1908130813DR90,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-12T17.28 Debit?
21k.3 2019-12?22ABWA+FL 232//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:62F:C190813EUR85193,96
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190813EUR85193,96
:61:1908140814DR24,00NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+3932191157543 -VK- 002?2
1106915289?22MREF+M00210691528900001?23CRED+DE3711000000030246?24
SVWZ+Kuernbergstr. 36 .3.MR?25, Abschlag Strom 08/2019 Be?26trag
24,00 Eur?30PBNKDEFFXXX?31DE50700100800014060800?32SWM Versorgung
s GmbH?34992
:61:1908140814DR300,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-13T19.59 Debit?
21k.3 2019-12?22ABWA+FL 159//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE41701500009000481409?32STADTSPARKASSE MUENCHEN?34003
:62F:C190814EUR84869,96
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190814EUR84869,96
:61:1908160816DR289,70NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+0033-BY-21190882D018-1?2
16082019?22MREF+RG63A20161109180225753?23017490?24CRED+DE14ZZZ000
00026683?25SVWZ+FW01 21190882D018 0819?30HYVEDEMMXXX?31DE33700202
700000081124?32DRV BAYERN SUeD?34992
:61:1908160816DR2002,90NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109200?20EREF+144/187/81344-----L120?2
18201900033611?22MREF+BY689135399618?23CRED+DE13ZZZ00000076365?24
SVWZ+STEUERNR 144/187/81344?25 UMS.ST JUL.19 2.002,90EUR?26ABWA+F
inanzamt Muenchen?30BYLADEMMXXX?31DE37700500000000024962?32Finanz
amt M<>nchen - Erhebun?33g Finanzkasse?34992
:62F:C190816EUR82577,36
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190816EUR82577,36
:61:1908190819DR1000,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-18T23.48 Debit?
21k.3 2019-12?22ABWA+FL 159//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE41701500009000481409?32STADTSPARKASSE MUENCHEN?34003
:62F:C190819EUR81577,36
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190819EUR81577,36
:61:1908200820DR21,38NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109200?20EREF+13027964922019?21MREF+M5
005132260002?22CRED+DE3505800000015150?23SVWZ+D-Nr M500513226, /I
NV/?24201907051420 vom 13.08.2019?25, TELEFONIE Juli 2019, Zahl?2
6B 1302796492?27ABWA+M-net Telek. GmbH?30BYLADEMMXXX?31DE74700500
000000028273?32M-net Telekommunikations Gm?33bH?34992
:62F:C190820EUR81555,98
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190820EUR81555,98
:61:1908210821CR15154,89N062NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109249?20EREF+211?21SVWZ+1907311/
31.07.2019/EUR?22 15154.89/2019-08-12/...?30DRESDEFF700?31DE85700
800000757304200?32Device Insight GmbH
:62F:C190821EUR96710,87
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190821EUR96710,87
:61:1908260826DR54,90NDDTNONREF
:86:105?00ERSTLASTSCHRIFT?109248?20EREF+1-11/366-3147882-178?21MR
EF+201042277?22CRED+DE97ZZZ00000169525?23SVWZ+RNR 90654410 V. 15.
08.?2419 BRU 54,90 Vielen Dank fu?25er Ihren Einkauf. shop.heis?2
6e.de?30PBNKDEFFXXX?31DE22250100300540160303?32Heise Medien GmbH
+ Co. KG?34991
:62F:C190826EUR96655,97
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190826EUR96655,97
:61:1908270827DR6,99NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+003809515790?21MREF+0200
013221814?22CRED+DE77ZZZ00000569719?23SVWZ+KD-Nr. K511159080/ RG-
?24Nr. 150563678193?30COBADEFFXXX?31DE97500400000589011600?321u1
Telecom GmbH?34992
:62F:C190827EUR96648,98
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190827EUR96648,98
:61:1908280828DR420,51NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+1325292693302220190828?2
125292693?22MREF+000001065754?23CRED+DE56LKK00000143200?24SVWZ+Be
itrag 08/19 00141651?2529 faellig 28.08.19 KRANKEN?26VERSICHERUNG
?27ABWA+Sozialversicherung fur?28 Landwirtschaft, Forsten un?29d?
30HELADEFFXXX?31DE61500500000040100059?32SVLFG Krankenkasse?34992
:61:1908280828DR70,43N033NONREF
:86:118?00ECHTZEIT-UEBERWEISUNG?109310?20SVWZ+Bestellung Nummer.
344?21253 DATUM 28.08.2019, 08.30?22 UHR 1.TAN 073873?30DEUTDEDB5
95?31DE06590700700017905101?32EXP GmbH?34997
:62F:C190828EUR96158,04
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190828EUR96158,04
:61:1908280829DR10,00N033NONREF
:86:118?00ECHTZEIT-UEBERWEISUNG?109310?20SVWZ+Fu<46>ball DATUM 28.08
.20?2119, 23.44 UHR 1.TAN 726220?30GENODEF1AUB?31DE61720900000005
610036?32Michael Port?34997
:62F:C190829EUR96148,04
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190829EUR96148,04
:61:1909010830DR3,99N024NONREF
:86:809?00ENTGELTABSCHLUSS?106666?20Entgeltabrechnung?21siehe Anl
age?3072051210
:62F:C190830EUR96144,05
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190830EUR96144,05
:61:1909020902DR580,00N012NONREF
:86:117?00DAUERAUFTRAG?107000?20SVWZ+Miete?30HYVEDEMMXXX?31DE8770
0202701640043438?32Karin M<>ller?34997
:62F:C190902EUR95564,05
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190902EUR95564,05
:61:1909130913DR289,70NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+0034-BY-21190882D018-1?2
13092019?22MREF+RG63A20161109180225753?23017490?24CRED+DE14ZZZ000
00026683?25SVWZ+FW01 21190882D018 0919?30HYVEDEMMXXX?31DE33700202
700000081124?32DRV BAYERN SUeD?34992
:62F:C190913EUR95274,35
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190913EUR95274,35
:61:1909160916DR24,00NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+3938148326034 -VK- 002?2
1106915289?22MREF+M00210691528900001?23CRED+DE3711000000030246?24
SVWZ+Kuernbergstr. 36 .3.MR?25, Abschlag Strom 09/2019 Be?26trag
24,00 Eur?30PBNKDEFFXXX?31DE50700100800014060800?32SWM Versorgung
s GmbH?34992
:61:1909160916DR13001,62NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109200?20EREF+144/187/81344-----L110?2
19201900117661?22MREF+BY689135399618?23CRED+DE13ZZZ00000076365?24
SVWZ+STEUERNR 144/187/81344?25 EINK.ST 3VJ.19 10.627,00EU?26R UMS
.ST AUG.19 2.374,62EUR?27ABWA+Finanzamt Muenchen?30BYLADEMMXXX?31
DE37700500000000024962?32Finanzamt M<>nchen - Erhebun?33g Finanzka
sse?34992
:62F:C190916EUR82248,73
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190916EUR82248,73
:61:1909180918DR100,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-09-17T14.20 Debit?
21k.3 2019-12?22ABWA+FL 061//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:61:1909180918CR0,01N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Test cash transfer?
30BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl
:61:1909180918DR0,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-18T14.59.01.0
2?2175?22SVWZ+Test cash transfer?23DATUM 18.09.2019, 14.59 UHR?30
BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl?34997
:61:1909180918CR0,01N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Test cash transfer
2?30BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl
:61:1909180918DR0,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-18T17.41.08.0
7?2154?22SVWZ+Test cash transfer 2?23DATUM 18.09.2019, 17.41 UHR?
30BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl?34997
:62F:C190918EUR82148,73
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190918EUR82148,73
:61:1909190919CR51,00N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Let
s go big test?3
0BYLADEM1AIC?31DE11720512100560165557?32CHRISTIAN DANKL
:61:1909190919DR51,00N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-18T20.35.38.0
6?2130?22SVWZ+Let
s go big test?23DATUM 18.09.2019, 20.35 UHR?30B
YLADEM1AIC?31DE11720512100560165557?32Christian Dankl?34997
:61:1909190919CR101,00N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Let
s go big test 2
?30BYLADEM1AIC?31DE11720512100560165557?32CHRISTIAN DANKL
:61:1909190919DR101,00N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-18T20.36.07.0
4?2135?22SVWZ+Let
s go big test 2?23DATUM 18.09.2019, 20.36 UHR?3
0BYLADEM1AIC?31DE11720512100560165557?32CHRISTIAN DANKL?34997
:61:1909190919DR0,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-18T20.39.01.0
0?2101?22SVWZ+Testueberweisung?23DATUM 18.09.2019, 20.39 UHR?30BE
LADEBEXXX?31DE32100500006016708591?32Marieke Schmidt?34997
:61:1909190919DR30,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-19T00.20.19.0
8?2137?22SVWZ+Fussball?23DATUM 19.09.2019, 00.20 UHR?241.TAN 3795
05?30GENODEF1AUB?31DE61720900000005610036?32Michael Port?34997
:61:1909190919DR9,07NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109200?20EREF+13030203282019?21MREF+M5
005132260002?22CRED+DE3505800000015150?23SVWZ+D-Nr M500513226, /I
NV/?24201908051258 vom 12.09.2019?25, TELEFONIE August 2019, Za?2
6hlB 1303020328?27ABWA+M-net Telek. GmbH?30BYLADEMMXXX?31DE747005
00000000028273?32M-net Telekommunikations Gm?33bH?34992
:62F:C190919EUR82109,64
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190919EUR82109,64
:61:1909230923DR32,00N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-22T12.52.39.0
4?2135?22SVWZ+Bayernticket n<>chste W?23oche?24DATUM 22.09.2019, 1
2.52 UHR?251.TAN 293047?30BELADEBEXXX?31DE32100500006016708591?32
Marieke Schmidt?34997
:62F:C190923EUR82077,64
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190923EUR82077,64
:61:1909260926DR6,99NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+005181496989?21MREF+0200
013221814?22CRED+DE77ZZZ00000569719?23SVWZ+KD-Nr. K511159080/ RG-
?24Nr. 150571431714?30COBADEFFXXX?31DE97500400000589011600?321u1
Telecom GmbH?34992
:61:1909260926DR420,51NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+1325292693302220190926?2
125292693?22MREF+000001065754?23CRED+DE56LKK00000143200?24SVWZ+Be
itrag 09/19 00141651?2529 faellig 26.09.19 KRANKEN?26VERSICHERUNG
?27ABWA+Sozialversicherung fur?28 Landwirtschaft, Forsten un?29d?
30HELADEFFXXX?31DE61500500000040100059?32SVLFG Krankenkasse?34992
:61:1909260926CR220,00N062NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109249?20EREF+Cashback - 9660114?
21SVWZ+Cashback.CHECK24 sagt?22danke.?30COBADEFFXXX?31DE187004004
10275663301?32CHECK24.de
:62F:C190926EUR81870,14
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190926EUR81870,14
:61:1909300930DR100,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-09-27T19.44 Debit?
21k.3 2019-12?22ABWA+FL 159//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:61:1910010930DR3,99N024NONREF
:86:809?00ENTGELTABSCHLUSS?106666?20Entgeltabrechnung?21siehe Anl
age?3072051210
:61:1910010930CR0,00N066NONREF
:86:805?00ABSCHLUSS?106666?20Abrechnung 30.09.2019?21siehe Anlage
?3072051210
:62F:C190930EUR81766,15
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190930EUR81766,15
:61:1910011001DR540,07N012NONREF
:86:117?00DAUERAUFTRAG?107000?20SVWZ+RS-V-11-0055-1498-0523?21 P8
013011?30HYVEDEMM414?31DE54302201900323535205?32ARAG SE?34997
:61:1910011001DR580,00N012NONREF
:86:117?00DAUERAUFTRAG?107000?20SVWZ+Miete?30HYVEDEMMXXX?31DE8770
0202701640043438?32Karin M<>ller?34997
:62F:C191001EUR80646,08
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C191001EUR80646,08
:61:1910021002CR0,01N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Test cash transfer?
30BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl
:61:1910021002DR0,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-10-02T12.21.31.0
1?2194?22SVWZ+Test cash transfer?23DATUM 02.10.2019, 12.21 UHR?30
BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl?34997
:62F:C191002EUR80646,08
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C191002EUR80646,08
:61:1910031004CR8144,36N062NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109249?20EREF+674?21SVWZ+1908301/
EUR 8144.36/20?2219-10-02/...?30DRESDEFF700?31DE85700800000757304
200?32Device Insight GmbH
:62F:C191004EUR88790,44
-

View File

@ -0,0 +1,435 @@
HIKAZ:7:5:3+@16075@
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190731EUR105823,58
:61:1908010801DR580,00N012NONREF
:86:117?00DAUERAUFTRAG?107000?20SVWZ+Miete?30HYVEDEMMXXX?31DE8770
0202701640043438?32Karin Müller?34997
:62F:C190801EUR105243,58
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190801EUR105243,58
:61:1908020802DR100,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-02T13.25 Debit?
21k.3 2019-12?22ABWA+FL 159//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:62F:C190802EUR105143,58
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190802EUR105143,58
:61:1908070807DR19395,68NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109200?20EREF+144/187/81344-----L020?2
18201900001251?22MREF+BY689135399618?23CRED+DE13ZZZ00000076365?24
SVWZ+STEUERNR 144/187/81344?25 EINK.ST 2018 19.395,68EUR?26ABWA+F
inanzamt Muenchen?30BYLADEMMXXX?31DE37700500000000024962?32Finanz
amt München - Erhebun?33g Finanzkasse?34992
:61:1908070807DR300,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-06T18.12 Debit?
21k.3 2019-12?22ABWA+FL 232//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:62F:C190807EUR85447,90
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190807EUR85447,90
:61:1908080808DR150,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-07T18.38 Debit?
21k.3 2019-12?22ABWA+MUENCHEN//KREISSPK. MU?23ENCHEN STARNBERG EB
ERSBERG/?24DE?30BYLADEM1KMS?31DE02702501509000481409?32KREISSPK.
MUENCHEN STARNBER?33G EBERSBERG?34003
:62F:C190808EUR85297,90
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190808EUR85297,90
:61:1908090809DR50,00N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20SVWZ+AUFLADUNG PAYPAL GUTH
A?21BEN GIROPAY0014400457SJZ34?22W66U2?23DATUM 08.08.2019, 22.30
UHR?241.TAN 936060?30GENODE61OG1?31DE76664900000009116702?32GIRO
SOLUTION FUER PAYPAL?34997
:61:1908090809CR36,06N062NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109249?20EREF+YYW1006309018143 PA
YPA?21L?30DEUTDEFFXXX?31DE88500700100175526303?32PayPal (Europe)
S.a.r.l. et?33 Cie., S.C.A.
:62F:C190809EUR85283,96
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190809EUR85283,96
:61:1908130813DR90,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-12T17.28 Debit?
21k.3 2019-12?22ABWA+FL 232//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:62F:C190813EUR85193,96
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190813EUR85193,96
:61:1908140814DR24,00NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+3932191157543 -VK- 002?2
1106915289?22MREF+M00210691528900001?23CRED+DE3711000000030246?24
SVWZ+Kuernbergstr. 36 .3.MR?25, Abschlag Strom 08/2019 Be?26trag
24,00 Eur?30PBNKDEFFXXX?31DE50700100800014060800?32SWM Versorgung
s GmbH?34992
:61:1908140814DR300,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-13T19.59 Debit?
21k.3 2019-12?22ABWA+FL 159//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE41701500009000481409?32STADTSPARKASSE MUENCHEN?34003
:62F:C190814EUR84869,96
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190814EUR84869,96
:61:1908160816DR289,70NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+0033-BY-21190882D018-1?2
16082019?22MREF+RG63A20161109180225753?23017490?24CRED+DE14ZZZ000
00026683?25SVWZ+FW01 21190882D018 0819?30HYVEDEMMXXX?31DE33700202
700000081124?32DRV BAYERN SUeD?34992
:61:1908160816DR2002,90NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109200?20EREF+144/187/81344-----L120?2
18201900033611?22MREF+BY689135399618?23CRED+DE13ZZZ00000076365?24
SVWZ+STEUERNR 144/187/81344?25 UMS.ST JUL.19 2.002,90EUR?26ABWA+F
inanzamt Muenchen?30BYLADEMMXXX?31DE37700500000000024962?32Finanz
amt München - Erhebun?33g Finanzkasse?34992
:62F:C190816EUR82577,36
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190816EUR82577,36
:61:1908190819DR1000,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-08-18T23.48 Debit?
21k.3 2019-12?22ABWA+FL 159//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE41701500009000481409?32STADTSPARKASSE MUENCHEN?34003
:62F:C190819EUR81577,36
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190819EUR81577,36
:61:1908200820DR21,38NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109200?20EREF+13027964922019?21MREF+M5
005132260002?22CRED+DE3505800000015150?23SVWZ+D-Nr M500513226, /I
NV/?24201907051420 vom 13.08.2019?25, TELEFONIE Juli 2019, Zahl?2
6B 1302796492?27ABWA+M-net Telek. GmbH?30BYLADEMMXXX?31DE74700500
000000028273?32M-net Telekommunikations Gm?33bH?34992
:62F:C190820EUR81555,98
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190820EUR81555,98
:61:1908210821CR15154,89N062NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109249?20EREF+211?21SVWZ+1907311/
31.07.2019/EUR?22 15154.89/2019-08-12/...?30DRESDEFF700?31DE85700
800000757304200?32Device Insight GmbH
:62F:C190821EUR96710,87
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190821EUR96710,87
:61:1908260826DR54,90NDDTNONREF
:86:105?00ERSTLASTSCHRIFT?109248?20EREF+1-11/366-3147882-178?21MR
EF+201042277?22CRED+DE97ZZZ00000169525?23SVWZ+RNR 90654410 V. 15.
08.?2419 BRU 54,90 Vielen Dank fu?25er Ihren Einkauf. shop.heis?2
6e.de?30PBNKDEFFXXX?31DE22250100300540160303?32Heise Medien GmbH
+ Co. KG?34991
:62F:C190826EUR96655,97
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190826EUR96655,97
:61:1908270827DR6,99NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+003809515790?21MREF+0200
013221814?22CRED+DE77ZZZ00000569719?23SVWZ+KD-Nr. K511159080/ RG-
?24Nr. 150563678193?30COBADEFFXXX?31DE97500400000589011600?321u1
Telecom GmbH?34992
:62F:C190827EUR96648,98
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190827EUR96648,98
:61:1908280828DR420,51NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+1325292693302220190828?2
125292693?22MREF+000001065754?23CRED+DE56LKK00000143200?24SVWZ+Be
itrag 08/19 00141651?2529 faellig 28.08.19 KRANKEN?26VERSICHERUNG
?27ABWA+Sozialversicherung fur?28 Landwirtschaft, Forsten un?29d?
30HELADEFFXXX?31DE61500500000040100059?32SVLFG Krankenkasse?34992
:61:1908280828DR70,43N033NONREF
:86:118?00ECHTZEIT-UEBERWEISUNG?109310?20SVWZ+Bestellung Nummer.
344?21253 DATUM 28.08.2019, 08.30?22 UHR 1.TAN 073873?30DEUTDEDB5
95?31DE06590700700017905101?32EXP GmbH?34997
:62F:C190828EUR96158,04
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190828EUR96158,04
:61:1908280829DR10,00N033NONREF
:86:118?00ECHTZEIT-UEBERWEISUNG?109310?20SVWZ+Fußball DATUM 28.08
.20?2119, 23.44 UHR 1.TAN 726220?30GENODEF1AUB?31DE61720900000005
610036?32Michael Port?34997
:62F:C190829EUR96148,04
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190829EUR96148,04
:61:1909010830DR3,99N024NONREF
:86:809?00ENTGELTABSCHLUSS?106666?20Entgeltabrechnung?21siehe Anl
age?3072051210
:62F:C190830EUR96144,05
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190830EUR96144,05
:61:1909020902DR580,00N012NONREF
:86:117?00DAUERAUFTRAG?107000?20SVWZ+Miete?30HYVEDEMMXXX?31DE8770
0202701640043438?32Karin Müller?34997
:62F:C190902EUR95564,05
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190902EUR95564,05
:61:1909130913DR289,70NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+0034-BY-21190882D018-1?2
13092019?22MREF+RG63A20161109180225753?23017490?24CRED+DE14ZZZ000
00026683?25SVWZ+FW01 21190882D018 0919?30HYVEDEMMXXX?31DE33700202
700000081124?32DRV BAYERN SUeD?34992
:62F:C190913EUR95274,35
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190913EUR95274,35
:61:1909160916DR24,00NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+3938148326034 -VK- 002?2
1106915289?22MREF+M00210691528900001?23CRED+DE3711000000030246?24
SVWZ+Kuernbergstr. 36 .3.MR?25, Abschlag Strom 09/2019 Be?26trag
24,00 Eur?30PBNKDEFFXXX?31DE50700100800014060800?32SWM Versorgung
s GmbH?34992
:61:1909160916DR13001,62NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109200?20EREF+144/187/81344-----L110?2
19201900117661?22MREF+BY689135399618?23CRED+DE13ZZZ00000076365?24
SVWZ+STEUERNR 144/187/81344?25 EINK.ST 3VJ.19 10.627,00EU?26R UMS
.ST AUG.19 2.374,62EUR?27ABWA+Finanzamt Muenchen?30BYLADEMMXXX?31
DE37700500000000024962?32Finanzamt München - Erhebun?33g Finanzka
sse?34992
:62F:C190916EUR82248,73
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190916EUR82248,73
:61:1909180918DR100,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-09-17T14.20 Debit?
21k.3 2019-12?22ABWA+FL 061//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:61:1909180918CR0,01N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Test cash transfer?
30BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl
:61:1909180918DR0,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-18T14.59.01.0
2?2175?22SVWZ+Test cash transfer?23DATUM 18.09.2019, 14.59 UHR?30
BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl?34997
:61:1909180918CR0,01N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Test cash transfer
2?30BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl
:61:1909180918DR0,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-18T17.41.08.0
7?2154?22SVWZ+Test cash transfer 2?23DATUM 18.09.2019, 17.41 UHR?
30BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl?34997
:62F:C190918EUR82148,73
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190918EUR82148,73
:61:1909190919CR51,00N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Let's go big test?3
0BYLADEM1AIC?31DE11720512100560165557?32CHRISTIAN DANKL
:61:1909190919DR51,00N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-18T20.35.38.0
6?2130?22SVWZ+Let's go big test?23DATUM 18.09.2019, 20.35 UHR?30B
YLADEM1AIC?31DE11720512100560165557?32Christian Dankl?34997
:61:1909190919CR101,00N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Let's go big test 2
?30BYLADEM1AIC?31DE11720512100560165557?32CHRISTIAN DANKL
:61:1909190919DR101,00N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-18T20.36.07.0
4?2135?22SVWZ+Let's go big test 2?23DATUM 18.09.2019, 20.36 UHR?3
0BYLADEM1AIC?31DE11720512100560165557?32CHRISTIAN DANKL?34997
:61:1909190919DR0,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-18T20.39.01.0
0?2101?22SVWZ+Testueberweisung?23DATUM 18.09.2019, 20.39 UHR?30BE
LADEBEXXX?31DE32100500006016708591?32Marieke Schmidt?34997
:61:1909190919DR30,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-19T00.20.19.0
8?2137?22SVWZ+Fussball?23DATUM 19.09.2019, 00.20 UHR?241.TAN 3795
05?30GENODEF1AUB?31DE61720900000005610036?32Michael Port?34997
:61:1909190919DR9,07NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109200?20EREF+13030203282019?21MREF+M5
005132260002?22CRED+DE3505800000015150?23SVWZ+D-Nr M500513226, /I
NV/?24201908051258 vom 12.09.2019?25, TELEFONIE August 2019, Za?2
6hlB 1303020328?27ABWA+M-net Telek. GmbH?30BYLADEMMXXX?31DE747005
00000000028273?32M-net Telekommunikations Gm?33bH?34992
:62F:C190919EUR82109,64
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190919EUR82109,64
:61:1909230923DR32,00N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-09-22T12.52.39.0
4?2135?22SVWZ+Bayernticket nächste W?23oche?24DATUM 22.09.2019, 1
2.52 UHR?251.TAN 293047?30BELADEBEXXX?31DE32100500006016708591?32
Marieke Schmidt?34997
:62F:C190923EUR82077,64
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190923EUR82077,64
:61:1909260926DR6,99NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+005181496989?21MREF+0200
013221814?22CRED+DE77ZZZ00000569719?23SVWZ+KD-Nr. K511159080/ RG-
?24Nr. 150571431714?30COBADEFFXXX?31DE97500400000589011600?321u1
Telecom GmbH?34992
:61:1909260926DR420,51NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+1325292693302220190926?2
125292693?22MREF+000001065754?23CRED+DE56LKK00000143200?24SVWZ+Be
itrag 09/19 00141651?2529 faellig 26.09.19 KRANKEN?26VERSICHERUNG
?27ABWA+Sozialversicherung fur?28 Landwirtschaft, Forsten un?29d?
30HELADEFFXXX?31DE61500500000040100059?32SVLFG Krankenkasse?34992
:61:1909260926CR220,00N062NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109249?20EREF+Cashback - 9660114?
21SVWZ+Cashback.CHECK24 sagt?22danke.?30COBADEFFXXX?31DE187004004
10275663301?32CHECK24.de
:62F:C190926EUR81870,14
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190926EUR81870,14
:61:1909300930DR100,00N032NONREF
:86:106?00BARGELDAUSZAHLUNG?109200?20SVWZ+2019-09-27T19.44 Debit?
21k.3 2019-12?22ABWA+FL 159//STADTSPARKASSE?23 MUENCHEN/DE?30SSKM
DEMMXXX?31DE19701500009000481417?32STADTSPARKASSE MUENCHEN?34003
:61:1910010930DR3,99N024NONREF
:86:809?00ENTGELTABSCHLUSS?106666?20Entgeltabrechnung?21siehe Anl
age?3072051210
:61:1910010930CR0,00N066NONREF
:86:805?00ABSCHLUSS?106666?20Abrechnung 30.09.2019?21siehe Anlage
?3072051210
:62F:C190930EUR81766,15
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C190930EUR81766,15
:61:1910011001DR540,07N012NONREF
:86:117?00DAUERAUFTRAG?107000?20SVWZ+RS-V-11-0055-1498-0523?21 P8
013011?30HYVEDEMM414?31DE54302201900323535205?32ARAG SE?34997
:61:1910011001DR580,00N012NONREF
:86:117?00DAUERAUFTRAG?107000?20SVWZ+Miete?30HYVEDEMMXXX?31DE8770
0202701640043438?32Karin Müller?34997
:62F:C191001EUR80646,08
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C191001EUR80646,08
:61:1910021002CR0,01N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Test cash transfer?
30BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl
:61:1910021002DR0,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-10-02T12.21.31.0
1?2194?22SVWZ+Test cash transfer?23DATUM 02.10.2019, 12.21 UHR?30
BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl?34997
:62F:C191002EUR80646,08
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C191002EUR80646,08
:61:1910031004CR8144,36N062NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109249?20EREF+674?21SVWZ+1908301/
EUR 8144.36/20?2219-10-02/...?30DRESDEFF700?31DE85700800000757304
200?32Device Insight GmbH
:62F:C191004EUR88790,44
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C191004EUR88790,44
:61:1910071007CR0,01N061NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20SVWZ+Give it to me baby?
30BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl
:61:1910071007DR0,01N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20KREF+2019-10-07T11.58.24.0
3?2128?22SVWZ+Give it to me baby?23DATUM 07.10.2019, 15.38 UHR?30
BYLADEM1AIC?31DE11720512100560165557?32Christian Dankl?34997
:62F:C191007EUR88790,44
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C191007EUR88790,44
:61:1910081008CR2,56N062NONREF
:86:166?00GUTSCHR. UEBERWEISUNG?109201?20EREF+144/187/81344 UMS.G
041?210201907570045?22SVWZ+ERSTATT.144/187/81344?23UMS.ST SEP.19
2,56 EUR?24ABWA+FINANZAMT MUENCHEN?30BYLADEMMXXX?31DE377005000000
00024962?32Finanzamt München - Erhebun?33g Finanzkasse
:62F:C191008EUR88793,00
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C191008EUR88793,00
:61:1910101010DR70,00N033NONREF
:86:177?00ONLINE-UEBERWEISUNG?109310?20SVWZ+AUFLADUNG PAYPAL GUTH
A?21BEN GIROPAY0014400457SK1JL?220Y472?23DATUM 09.10.2019, 20.06
UHR?241.TAN 680663?30GENODE61OG1?31DE76664900000009116702?32GIRO
SOLUTION FUER PAYPAL?34997
:62F:C191010EUR88723,00
-
:20:STARTUMSE
:25:72051210/0560165557
:28C:00000/001
:60F:C191010EUR88723,00
:61:1910111011DR289,70NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+0035-BY-21190882D018-1?2
11102019?22MREF+RG63A20161109180225753?23017490?24CRED+DE14ZZZ000
00026683?25SVWZ+FW01 21190882D018 1019?30HYVEDEMMXXX?31DE33700202
700000081124?32DRV BAYERN SUeD?34992
:62F:C191011EUR88433,30
-+@438@
:20:STARTDISPE
:25:72051210/0560165557
:28C:00000/001
:34F:EURD24,00
:13:1910121425
:61:1910141010DR24,00NDDTNONREF
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+3931191467398 -VK- 002?2
1106915289?22MREF+M00210691528900001?23CRED+DE3711000000030246?24
SVWZ+Kuernbergstr. 36 .3.MR?25, Abschlag Strom 10/2019 Be?26trag
24,00 Eur?30PBNKDEFFXXX?31DE50700100800014060800?32SWM Versorgung
s GmbH?34992
:90D:1EUR24,00
:90C:0EUR0,00
-'