Le controle de la cl n'est fait que si le pays du compte bancaire (dtect sur l'iban) est la France,
en attedant de m'assurer que la rgle fonctionne aussi pour d'autres pays.
This commit is contained in:
parent
af955527dd
commit
791ea970b7
@ -186,7 +186,7 @@ class Account
|
||||
// Chargement librairie pour acces fonction controle RIB
|
||||
require_once DOL_DOCUMENT_ROOT . '/compta/bank/bank.lib.php';
|
||||
|
||||
if (! verif_rib($this->code_banque,$this->code_guichet,$this->number,$this->cle_rib)) {
|
||||
if (! verif_rib($this->code_banque,$this->code_guichet,$this->number,$this->cle_rib,$this->iban_prefix)) {
|
||||
$this->error="Le contrôle de la clé indique que les informations de votre compte bancaire sont incorrectes.";
|
||||
return 0;
|
||||
}
|
||||
@ -229,7 +229,7 @@ class Account
|
||||
// Chargement librairie pour acces fonction controle RIB
|
||||
require_once DOL_DOCUMENT_ROOT . '/compta/bank/bank.lib.php';
|
||||
|
||||
if (! verif_rib($this->code_banque,$this->code_guichet,$this->number,$this->cle_rib)) {
|
||||
if (! verif_rib($this->code_banque,$this->code_guichet,$this->number,$this->cle_rib,$this->iban_prefix)) {
|
||||
$this->error="Le contrôle de la clé indique que les informations de votre compte bancaire sont incorrectes.";
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -38,27 +38,33 @@
|
||||
\param code_guichet
|
||||
\param numero_compte
|
||||
\param cle
|
||||
\param iban Ne sert pas pour le calcul de cle mais sert pour
|
||||
determiner le pays
|
||||
\return true si les infos sont bonnes, false si la clé ne correspond pas
|
||||
*/
|
||||
|
||||
function verif_rib($code_banque , $code_guichet , $num_compte , $cle) {
|
||||
$coef = array(62, 34, 3) ;
|
||||
// Concatenation des differents codes.
|
||||
$rib = strtolower($code_banque.$code_guichet.$num_compte.$cle);
|
||||
// On remplca les eventuelles lettres par des chiffres.
|
||||
$rib = strtr($rib, "abcdefghijklmnopqrstuvwxyz","12345678912345678912345678");
|
||||
|
||||
// Separation du rib en 3 groupes de 7 + 1 groupe de 2.
|
||||
// Multiplication de chaque groupe par les coef du tableau
|
||||
for ($i=0, $s=0; $i<3; $i++) {
|
||||
$code = substr($rib, 7 * $i, 7) ;
|
||||
$s += (0 + $code) * $coef[$i] ;
|
||||
}
|
||||
|
||||
// Soustraction du modulo 97 de $s à 97 pour obtenir la clé RIB
|
||||
$cle_rib = 97 - ($s % 97) ;
|
||||
if ($cle_rib == $cle) { return true; }
|
||||
return false;
|
||||
function verif_rib($code_banque , $code_guichet , $num_compte , $cle, $iban) {
|
||||
if (eregi("^FR",$iban)) { // Cas de la France
|
||||
$coef = array(62, 34, 3) ;
|
||||
// Concatenation des differents codes.
|
||||
$rib = strtolower($code_banque.$code_guichet.$num_compte.$cle);
|
||||
// On remplca les eventuelles lettres par des chiffres.
|
||||
$rib = strtr($rib, "abcdefghijklmnopqrstuvwxyz","12345678912345678912345678");
|
||||
|
||||
// Separation du rib en 3 groupes de 7 + 1 groupe de 2.
|
||||
// Multiplication de chaque groupe par les coef du tableau
|
||||
for ($i=0, $s=0; $i<3; $i++) {
|
||||
$code = substr($rib, 7 * $i, 7) ;
|
||||
$s += (0 + $code) * $coef[$i] ;
|
||||
}
|
||||
|
||||
// Soustraction du modulo 97 de $s à 97 pour obtenir la clé RIB
|
||||
$cle_rib = 97 - ($s % 97) ;
|
||||
if ($cle_rib == $cle) { return true; }
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user