Implemented parsing HICAZS

This commit is contained in:
dankito 2024-10-14 16:56:29 +02:00
parent 2410504ede
commit 66801a1c7a
4 changed files with 45 additions and 1 deletions

View File

@ -41,6 +41,10 @@ enum class InstituteSegmentId(override val id: String) : ISegmentId {
AccountTransactionsMt940Parameters(AccountTransactionsMt940.id + "S"), AccountTransactionsMt940Parameters(AccountTransactionsMt940.id + "S"),
AccountTransactionsCamt("HICAZ"),
AccountTransactionsCamtParameters(AccountTransactionsCamt.id + "S"),
CreditCardTransactions("DIKKU"), CreditCardTransactions("DIKKU"),
CreditCardTransactionsParameters(CreditCardTransactions.id + "S"), CreditCardTransactionsParameters(CreditCardTransactions.id + "S"),

View File

@ -124,6 +124,9 @@ open class ResponseParser(
InstituteSegmentId.AccountTransactionsMt940.id -> parseMt940AccountTransactions(segment, dataElementGroups) InstituteSegmentId.AccountTransactionsMt940.id -> parseMt940AccountTransactions(segment, dataElementGroups)
InstituteSegmentId.AccountTransactionsMt940Parameters.id -> parseMt940AccountTransactionsParameters(segment, segmentId, dataElementGroups) InstituteSegmentId.AccountTransactionsMt940Parameters.id -> parseMt940AccountTransactionsParameters(segment, segmentId, dataElementGroups)
// InstituteSegmentId.AccountTransactionsCamt.id -> parseCamtAccountTransactions(segment, dataElementGroups)
InstituteSegmentId.AccountTransactionsCamtParameters.id -> parseCamtAccountTransactionsParameters(segment, segmentId, dataElementGroups)
InstituteSegmentId.CreditCardTransactions.id -> parseCreditCardTransactions(segment, dataElementGroups) InstituteSegmentId.CreditCardTransactions.id -> parseCreditCardTransactions(segment, dataElementGroups)
InstituteSegmentId.CreditCardTransactionsParameters.id -> parseCreditCardTransactionsParameters(segment, segmentId, dataElementGroups) InstituteSegmentId.CreditCardTransactionsParameters.id -> parseCreditCardTransactionsParameters(segment, segmentId, dataElementGroups)
@ -766,6 +769,20 @@ open class ResponseParser(
return RetrieveAccountTransactionsParameters(jobParameters, serverTransactionsRetentionDays, settingCountEntriesAllowed, settingAllAccountAllowed) return RetrieveAccountTransactionsParameters(jobParameters, serverTransactionsRetentionDays, settingCountEntriesAllowed, settingAllAccountAllowed)
} }
protected open fun parseCamtAccountTransactionsParameters(segment: String, segmentId: String, dataElementGroups: List<String>): RetrieveAccountTransactionsParameters {
val jobParameters = parseJobParameters(segment, segmentId, dataElementGroups)
val dataElements = getDataElements(dataElementGroups[4])
val serverTransactionsRetentionDays = parseInt(dataElements[0])
val settingCountEntriesAllowed = parseBoolean(dataElements[1])
val settingAllAccountAllowed = parseBoolean(dataElements[2])
val supportedCamtDataFormats = dataElements.subList(3, dataElements.size)
return RetrieveAccountTransactionsParameters(jobParameters, serverTransactionsRetentionDays, settingCountEntriesAllowed, settingAllAccountAllowed, supportedCamtDataFormats)
}
protected open fun parseCreditCardTransactions(segment: String, dataElementGroups: List<String>): ReceivedCreditCardTransactionsAndBalance { protected open fun parseCreditCardTransactions(segment: String, dataElementGroups: List<String>): ReceivedCreditCardTransactionsAndBalance {
val balance = parseBalance(dataElementGroups[3]) val balance = parseBalance(dataElementGroups[3])

View File

@ -5,9 +5,14 @@ open class RetrieveAccountTransactionsParameters(
parameters: JobParameters, parameters: JobParameters,
open val serverTransactionsRetentionDays: Int, open val serverTransactionsRetentionDays: Int,
open val settingCountEntriesAllowed: Boolean, open val settingCountEntriesAllowed: Boolean,
open val settingAllAccountAllowed: Boolean open val settingAllAccountAllowed: Boolean,
open val supportedCamtDataFormats: List<String> = emptyList()
) : JobParameters(parameters) { ) : JobParameters(parameters) {
internal constructor() : this(JobParameters(), -1, false, false) // for object deserializers internal constructor() : this(JobParameters(), -1, false, false) // for object deserializers
// for languages not supporting default parameters
constructor(parameters: JobParameters, serverTransactionsRetentionDays: Int, settingCountEntriesAllowed: Boolean, settingAllAccountAllowed: Boolean) :
this(parameters, serverTransactionsRetentionDays, settingCountEntriesAllowed, settingAllAccountAllowed, emptyList())
} }

View File

@ -1226,6 +1226,24 @@ class ResponseParserTest : FinTsTestBase() {
} }
@Test
fun parseAccountTransactionsCamtParameters() {
val result = underTest.parse("HICAZS:56:1:3+1+1+1+740:N:N:urn?:iso?:std?:iso?:20022?:tech?:xsd?:camt.052.001.02:urn?:iso?:std?:iso?:20022?:tech?:xsd?:camt.052.001.08'")
// then
assertSuccessfullyParsedSegment(result, InstituteSegmentId.AccountTransactionsCamtParameters, 56, 1, 3)
result.getFirstSegmentById<RetrieveAccountTransactionsParameters>(InstituteSegmentId.AccountTransactionsCamtParameters)?.let { segment ->
assertEquals(740, segment.serverTransactionsRetentionDays)
assertFalse(segment.settingCountEntriesAllowed)
assertFalse(segment.settingAllAccountAllowed)
assertContainsExactly(segment.supportedCamtDataFormats, "urn:iso:std:iso:20022:tech:xsd:camt.052.001.02", "urn:iso:std:iso:20022:tech:xsd:camt.052.001.08")
}
?: run { fail("No segment of type AccountTransactionsCamtParameters found in ${result.receivedSegments}") }
}
@Test @Test
fun parseCreditCardAccountTransactions() { fun parseCreditCardAccountTransactions() {