New: Ajout du controle de la cl RIB lors de la saisie d'un compte bancaire.
This commit is contained in:
parent
3ff54bb8e8
commit
1ad15d681d
@ -174,13 +174,28 @@ class Account
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
* Creation du compte bancaire
|
||||
*
|
||||
*/
|
||||
Function create()
|
||||
{
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_account (datec, label) values (now(),'$this->label');";
|
||||
// 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)) {
|
||||
$this->error="Le contrôle de la clé indique que les informations de votre compte bancaire sont incorrectes.";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (! $pcgnumber) {
|
||||
// TODO
|
||||
// Prendre comme de numero compte comptable pour le compte bancaire, le numero par defaut pour plan de compte actif
|
||||
$pcgnumber="51";
|
||||
}
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_account (datec, label, account_number) values (now(),'$this->label','$pcgnumber');";
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
if ($this->db->affected_rows())
|
||||
@ -201,6 +216,16 @@ class Account
|
||||
print $this->db->error();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*
|
||||
*/
|
||||
Function error()
|
||||
{
|
||||
return $this->error;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*
|
||||
@ -281,7 +306,7 @@ class Account
|
||||
}
|
||||
else
|
||||
{
|
||||
print $this->db->error();
|
||||
print $this->db->error();
|
||||
}
|
||||
}
|
||||
/*
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<?PHP
|
||||
/* Copyright (C) 2000,2001 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||
* Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* $Id$
|
||||
* $Source$
|
||||
@ -21,13 +22,44 @@
|
||||
* or see http://www.gnu.org/
|
||||
*/
|
||||
|
||||
Function bank_delete_line($db, $rowid) {
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank WHERE rowid=$rowid";
|
||||
$result = $db->query($sql);
|
||||
if ($result) {
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid=$rowid";
|
||||
$result = $db->query($sql);
|
||||
}
|
||||
/*! \file bank.lib.php
|
||||
\brief librairie contenant les fonctions bancaires.
|
||||
\author Laurent Destailleur
|
||||
\version $Revision$
|
||||
|
||||
Ensemble des fonctions en rappor avec les modules bancaires
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
\brief Verifie le RIB d'un compte bancaire grace à sa clé
|
||||
\param code banque
|
||||
\param code_guichet
|
||||
\param numero_compte
|
||||
\param cle
|
||||
\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;
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
||||
@ -43,6 +43,7 @@ print "</tr>\n";
|
||||
$sql = "SELECT rowid, label,number,bank,clos from ".MAIN_DB_PREFIX."bank_account";
|
||||
|
||||
$result = $db->query($sql);
|
||||
$var=false;
|
||||
if ($result)
|
||||
{
|
||||
$var=True;
|
||||
@ -54,8 +55,8 @@ if ($result)
|
||||
while ($i < $num) {
|
||||
$objp = $db->fetch_object( $i);
|
||||
|
||||
print "<tr $bc[1]><td>$objp->rowid</td><td><a href=\"fiche.php?id=$objp->rowid\">$objp->label</a></td><td>$objp->bank </td><td>$objp->number </td><td align=\"center\">".$yn[$objp->clos]."</td></tr>";
|
||||
|
||||
$var=!$var;
|
||||
print "<tr $bc[$var]><td>$objp->rowid</td><td><a href=\"fiche.php?id=$objp->rowid\">$objp->label</a></td><td>$objp->bank </td><td>$objp->number </td><td align=\"center\">".$yn[$objp->clos]."</td></tr>";
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ if (!$user->admin && !$user->rights->compta->bank)
|
||||
|
||||
llxHeader();
|
||||
|
||||
|
||||
if ($_POST["action"] == 'add')
|
||||
{
|
||||
$account = new Account($db,0);
|
||||
@ -36,7 +37,7 @@ if ($_POST["action"] == 'add')
|
||||
$account->bank = $_POST["bank"];
|
||||
$account->label = $_POST["label"];
|
||||
|
||||
$account->courant = $_POST["courant"];
|
||||
$account->courant = $_POST["courant"]=='yes'?1:0;
|
||||
$account->clos = $_POST["clos"];
|
||||
|
||||
$account->code_banque = $_POST["code_banque"];
|
||||
@ -54,6 +55,13 @@ if ($_POST["action"] == 'add')
|
||||
$account->date_solde = mktime(12,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]);
|
||||
|
||||
$id = $account->create($user->id);
|
||||
if (! $id) {
|
||||
$message=$account->error();
|
||||
$_GET["action"]='create'; // Force chargement page creation
|
||||
}
|
||||
else {
|
||||
$_GET["id"]=$id; // Force chargement page en mode edition
|
||||
}
|
||||
}
|
||||
|
||||
if ($_POST["action"] == 'update')
|
||||
@ -90,6 +98,8 @@ if ($_GET["action"] == 'create')
|
||||
{
|
||||
print_titre("Nouveau compte bancaire");
|
||||
|
||||
if ($message) { print "<br>$message<br><br>\n"; }
|
||||
|
||||
print '<form action="fiche.php" method="post">';
|
||||
print '<input type="hidden" name="action" value="add">';
|
||||
print '<input type="hidden" name="clos" value="0">';
|
||||
@ -97,36 +107,38 @@ if ($_GET["action"] == 'create')
|
||||
print '<table class="border" cellpadding="3" cellspacing="0">';
|
||||
|
||||
print '<tr><td valign="top">Banque</td>';
|
||||
print '<td colspan="3"><input size="30" type="text" name="bank" value=""></td></tr>';
|
||||
print '<td colspan="3"><input size="30" type="text" name="bank" value="'.$_POST["bank"].'"></td></tr>';
|
||||
|
||||
print '<tr><td valign="top">Libellé</td>';
|
||||
print '<td colspan="3"><input size="30" type="text" name="label" value=""></td></tr>';
|
||||
print '<td colspan="3"><input size="30" type="text" name="label" value="'.$_POST["label"].'"></td></tr>';
|
||||
|
||||
print '<tr><td>Code Banque</td><td>Code Guichet</td><td>Numéro</td><td>Clé RIB</td></tr>';
|
||||
print '<tr><td><input size="8" type="text" name="code_banque"></td>';
|
||||
print '<td><input size="8" type="text" name="code_guichet"></td>';
|
||||
print '<td><input size="15" type="text" name="number"></td>';
|
||||
print '<td><input size="3" type="text" name="cle_rib"></td></tr>';
|
||||
print '<tr><td><input size="8" type="text" name="code_banque" value="'.$_POST["code_banque"].'"></td>';
|
||||
print '<td><input size="8" type="text" name="code_guichet" value="'.$_POST["code_guichet"].'"></td>';
|
||||
print '<td><input size="15" type="text" name="number" value="'.$_POST["number"].'"></td>';
|
||||
print '<td><input size="3" type="text" name="cle_rib" value="'.$_POST["cle_rib"].'"></td></tr>';
|
||||
|
||||
print '<tr><td valign="top">Clé IBAN</td>';
|
||||
print '<td colspan="3"><input size="5" type="text" name="iban_prefix" value=""></td></tr>';
|
||||
print '<td colspan="3"><input size="5" type="text" name="iban_prefix" value="'.$_POST["iban_prefix"].'"></td></tr>';
|
||||
|
||||
print '<tr><td valign="top">Identifiant BIC</td>';
|
||||
print '<td colspan="3"><input size="12" type="text" name="bic" value=""></td></tr>';
|
||||
print '<td colspan="3"><input size="12" type="text" name="bic" value="'.$_POST["bic"].'"></td></tr>';
|
||||
|
||||
print '<tr><td valign="top">Compte Courant</td>';
|
||||
print '<td colspan="3"><select name="courant">';
|
||||
print '<option value="0">non<option value="1">oui</select></td></tr>';
|
||||
print '<td colspan="3">';
|
||||
$form=new Form($db);
|
||||
print $form->selectyesno("courant",isset($_POST["courant"])?$_POST["courant"]:1);
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr><td valign="top">Domiciliation</td><td colspan="3">';
|
||||
print "<textarea name=\"domiciliation\" rows=\"4\" cols=\"40\">";
|
||||
print "<textarea name=\"domiciliation\" rows=\"4\" cols=\"40\">".$_POST["domiciliation"];
|
||||
print "</textarea></td></tr>";
|
||||
|
||||
print '<tr><td valign="top">Nom propriétaire du compte</td>';
|
||||
print '<td colspan="3"><input size="12" type="text" name="proprio" value=""></td></tr>';
|
||||
print '<td colspan="3"><input size="12" type="text" name="proprio" value="'.$_POST["proprio"].'"></td></tr>';
|
||||
|
||||
print '<tr><td valign="top">Adresse propriétaire du compte</td><td colspan="3">';
|
||||
print "<textarea name=\"adresse_proprio\" rows=\"4\" cols=\"40\">";
|
||||
print "<textarea name=\"adresse_proprio\" rows=\"4\" cols=\"40\">".$_POST["adresse_proprio"];
|
||||
print "</textarea></td></tr>";
|
||||
|
||||
print '<tr><td valign="top">Solde</td>';
|
||||
@ -139,7 +151,7 @@ if ($_GET["action"] == 'create')
|
||||
print '<input type="text" size="4" maxlength="4" name="reyear" value="'.strftime("%Y",$now).'">';
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr><td align="center" colspan="4"><input value="Enregistrer" type="submit"></td></tr>';
|
||||
print '<tr><td align="center" colspan="4"><input value="'.$langs->trans("Add").'" type="submit"></td></tr>';
|
||||
print '</form>';
|
||||
print '</table>';
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user