Opened 7 years ago

Last modified 7 years ago

#1602 closed Bug/Fehler

Bankdaten-Prüfmethode 16 unvollständig — at Version 2

Reported by: Volker Rehn Owned by: somebody
Priority: hoch Milestone: modified-shop-2.0.5.0
Component: Shop Version: 2.0.4.2
Keywords: Cc:
Blocked By: Blocking:

Description (last modified by Volker Rehn)

Aufgefallen, weil eine korrekte Kontonr der Fidor-Bank in der Bankdatenprüfung hängenblieb. Ursache war Prüfmethode 16, hier definiert:
https://www.bundesbank.de/resource/blob/603320/16a80c739bbbae592ca575905975c2d0/mL/pruefzifferberechnungsmethoden-data.pdf und in /includes/classes/banktransfer_validation.php implementiert.

Der Sonderfall, dass die Kontonr auch dann ok ist, wenn zwar die Prüfsumme 1 ist, aber die beiden letzten Ziffern der Kontonr gleich sind, wird im Code bisher nicht berücksichtigt. Es wird dann zwar die Prüfsumme mit der vorletzten Ziffer verglichen, aber nicht die beiden letzten Ziffern untereinander, und das ist hier die Ergänzung.

Neue Version der Methode16:

private function Method16($AccountNo, $Significance, $Checkpoint) {
    $Help = 0;
    $Method16 = 1;
    $AccountNo = $this->ExpandAccount($AccountNo);
    for ($Run = 0; $Run < strlen($Significance); $Run++) {
      $Help += (substr($AccountNo, $Run, 1) * substr($Significance, $Run, 1));
    }
    $Help = $Help % 11;
    $Checksum = 11 - $Help;
    if ($Help == 0) {
      $Checksum = 0;
    }
    if ($Checksum == substr($AccountNo, $Checkpoint - 1, 1)) {
       $Method16 = 0;
    }
    if ($Help == 1) {
      if ($Checksum == substr($AccountNo, $Checkpoint - 2, 1)) {
        $Method16 = 0;
      }
      
      // BOF Sonderfall fehlte: Vergleich der letzten beiden Stellen (9. und 10. bei Mark16 bzw 6. und 7. bei Mark23) 7.3.2019 vr
      $Checksum = substr($AccountNo, $Checkpoint - 1, 1);
      if ($Checksum == substr($AccountNo, $Checkpoint - 2, 1)) {
        $Method16 = 0;
      }
      // EOF
      
    }
    return $Method16;
  }  /* End of Method16 */

Change History (2)

comment:1 by Volker Rehn, 7 years ago

Component: AdminShop

comment:2 by Volker Rehn, 7 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.