Hallo zusammen,

nachdem ich jetzt ein wenig ueber diesen Patch geschlafen habe bin ich doch ein klein wenig verunsichert.

Hintergrund:
In der Beschreibung der Bundesbank heisst es:
"Ergibt die erste Berechnung der Prüfziffer nach dem
Verfahren 00 einen Prüfzifferfehler, so ist eine weitere
Berechnung vorzunehmen. Hierbei ist die Summe der
Produkte auf die nächste Halbdekade hochzurechnen. Die
Differenz ist die Prüfziffer."
D.h. (laut dem Beispiel der Bundesbank) bei einer Quersumme von 21 muss die Prueffziffer (als Differenz zur Halbdekade 25) 4 sein (25-21).
Was aber ist im Beispiel der Kontonummer von Hr. Papke?
Bei der Kontonummer 819727 ist die Quersumme 28.
Die nächste Halbdekade (die gleichzeitig auch (Voll)Dekade ist) lautet 30. Die Differenz wäre damit 2 und die Kontonummer falsch ( 7 != 2) Man kann den Algo aber auch so verstehen das die nächste "echte/alleinige" Halbdekade gemeint ist, das waere die 35 und die Diff damit 7 womit die Kontonummer richtig wäre. Mein Patch geht von der zweiten Annahme aus (echte Halbdekaden), ich bin aber unsicher ob der Algo so gemeint ist.

Ich habe zur Klärung versucht jemand kompetentes bei der Sparkasse Kiel-Förde zu erreichen die diesen Algo verwendet, bisher warte ich aber immer noch auf den Rückruf und wie ich Banken aus der Vergangenheit kennen werde ich dort auch niemanden vor Montag erreichen.

Hat jemand gesicherte Informationen über Kontonummern die Anhaltspunkte über die Interpretation der "Halbdekade" Definition geben können?

Ein Blick wie andere es machen hat leider auch nichts gebracht, die meisten Validierungen die man auf Webseiten so findet akzeptieren scheinbar
beide Varianten, d.h. z.B. sowohl Kontonummer  819727 als auch 819722

Ich habe darauf die Methode auch noch einmal dahingehend angepasst (und einen kleinen Bug entfernt) und dahingehend angepasst das beide Varianten akzeptiert werden bis Klärung in Sicht ist.

Neue Methode 74 haengt an.


Beste Grüße,

Jochen Schrör
Hi Christian,
[...]Wenn mir jemand eine Code-Korrektur schickt, nehme ich die gerne ins Programm und bringe eine neue Version raus.

Gruß

Christian Stimming

anbei ein Patch fuer die Methode 74.
Den Part mit "if (accountId.length() < 7)" habe ich auskommentiert da ich in der aktuellen Methodenbeschreibung der Bundesbank keinen Anhaltspunkt fuer diese Variante finde.

Ansonsten scheint sich bei den Berechnungsmethoden nichts geaendert zu haben, die Berechnungen sollten damit wieder aktuell sein.

Beste Grüße,

Jochen

------------------------------------------------------------------------

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
------------------------------------------------------------------------

_______________________________________________
Aqbanking-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/aqbanking-devel


--
ECS-Solution GmbH   Handelsregister   Geschäftsführer   Prokurist
Raiffeisenstr. 26   Kaiserslautern    Jochen Schrör     RA Felix Kuntz
67817 Imsbach       HRB 12047         ebenda
Germany
Tel.: +49 (6302) 60971-0    Vom Präsidenten des Landgerichtes Kaisers-
Fax : +49 (6302) 60971-1    lautern zugelassenes Inkassounternehmen

AccountNumberCheck::Result method_74(int *account, int *weight,
                                     const std::string& accountId, const 
std::string& bankId) {
    number2Array("2121212120", weight);
    if (AccountNumberCheck::OK == algo01(10, weight, true, 10, account))
        return AccountNumberCheck::OK;
// --> Modify by Jochen Schroer, 2007-06-22
// deactivate this variant because don't find it in documentation of 
Pruefmethode 74
//    if (accountId.length() < 7) {
//        if (account[9] == (5 - (algo03a(weight, true, account, 0, 9) % 5)))
//            return AccountNumberCheck::OK;
//    }
    if (accountId.length() == 6) {
        // not shure what halfdecade means in the documentation, so I make the 
implementation
        // a little bit ambiguous and accept the diff to the next halfdecade 
and decade as
        // possible checksum
        int tmp = 5 - (algo03a(weight, true, account, 0, 9) % 5); // calc diff 
to next halfdecade
        if (account[9] == tmp )                                   // check to 
halfdecade
            return AccountNumberCheck::OK;
        if (account[9] == ((tmp + 5) % 10))                       // additional 
check to next decade
            return AccountNumberCheck::OK;
    }
// <-- end modifaction by Jochen Schroer
    return AccountNumberCheck::ERROR;
}
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Aqbanking-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/aqbanking-devel

Reply via email to