Gestion des comptes "caisses"

This commit is contained in:
Laurent Destailleur 2005-06-11 11:56:51 +00:00
parent 70e230cd4a
commit 6b9a6059df
7 changed files with 499 additions and 459 deletions

View File

@ -30,7 +30,8 @@
*/ */
/** \class Account /**
\class Account
\brief Classe permettant la gestion des comptes bancaires \brief Classe permettant la gestion des comptes bancaires
*/ */
@ -192,8 +193,8 @@ class Account
} }
/* /*
* Creation du compte bancaire * \brief Creation du compte bancaire en base
* * \return int < 0 si erreur, > 0 si ok
*/ */
function create() function create()
{ {
@ -227,8 +228,14 @@ class Account
} }
else else
{ {
dolibarr_print_error($this->db); if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
return 0; $this->error=$langs->trans("ErrorBankLabelAlreadyExists");
return -1;
}
else {
$this->error=$this->db->error();
return -2;
}
} }
} }
@ -282,7 +289,6 @@ class Account
/* /*
* \brief Charge en memoire depuis la base le compte * \brief Charge en memoire depuis la base le compte
*
*/ */
function fetch($id) function fetch($id)
{ {
@ -324,7 +330,6 @@ class Account
/* /*
* \brief Efface le compte * \brief Efface le compte
*
*/ */
function delete() function delete()
{ {
@ -365,7 +370,6 @@ class Account
/* /*
*
* *
*/ */
function error() function error()
@ -374,7 +378,6 @@ class Account
} }
/* /*
*
* *
*/ */
function solde() function solde()
@ -394,8 +397,8 @@ class Account
$this->db->free(); $this->db->free();
} }
} }
/* /*
*
* *
*/ */
function datev_next($rowid) function datev_next($rowid)
@ -417,13 +420,12 @@ class Account
} }
else else
{ {
print $this->db->error(); dolibarr_print_error($this->db);
print "<p>$sql</p>";
return 0; return 0;
} }
} }
/* /*
*
* *
*/ */
function datev_previous($rowid) function datev_previous($rowid)
@ -445,8 +447,7 @@ class Account
} }
else else
{ {
print $this->db->error(); dolibarr_print_error($this->db);
print "<p>$sql</p>";
return 0; return 0;
} }
} }

View File

@ -205,7 +205,10 @@ if ($account > 0)
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Date").'</td><td>'.$langs->trans("Value").'</td><td>'.$langs->trans("Type").'</td><td>'.$langs->trans("Description").'</td>'; print '<td>'.$langs->trans("Date").'</td><td>'.$langs->trans("Value").'</td><td>'.$langs->trans("Type").'</td><td>'.$langs->trans("Description").'</td>';
print '<td align="right">'.$langs->trans("Debit").'</td><td align="right">'.$langs->trans("Credit").'</td><td align="right">'.$langs->trans("BankBalance").'</td>'; print '<td align="right">'.$langs->trans("Debit").'</td><td align="right">'.$langs->trans("Credit").'</td><td align="right">'.$langs->trans("BankBalance").'</td>';
print '<td align="center">'.$langs->trans("AccountStatement").'</td></tr>'; print '<td align="center">';
if ($acct->type != 2) print $langs->trans("AccountStatement");
else print '&nbsp;';
print '</td></tr>';
print '<form method="post" action="account.php">'; print '<form method="post" action="account.php">';
print '<input type="hidden" name="action" value="search">'; print '<input type="hidden" name="action" value="search">';
@ -217,7 +220,7 @@ if ($account > 0)
print '<td align="right"><input type="text" class="flat" name="req_credit" value="'.$_POST["req_credit"].'" size="6"></td>'; print '<td align="right"><input type="text" class="flat" name="req_credit" value="'.$_POST["req_credit"].'" size="6"></td>';
print '<td align="center"><input type="image" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" alt="'.$langs->trans("Search").'"></td>'; print '<td align="center"><input type="image" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" alt="'.$langs->trans("Search").'"></td>';
print '<td align="center">'; print '<td align="center">';
if ($user->rights->banque->modifier) if ($user->rights->banque->modifier && $acct->type != 2) // Si non compte cash
{ {
print '<a class="tabAction" href="rappro.php?account='.$acct->id.'">'.$langs->trans("Rappro").'</a>'; print '<a class="tabAction" href="rappro.php?account='.$acct->id.'">'.$langs->trans("Rappro").'</a>';
} }
@ -392,7 +395,7 @@ function _print_lines($db,$result,$sql,$acct)
print '<td align="right">-</td>'; print '<td align="right">-</td>';
} }
if ($objp->rappro) if ($objp->rappro && $acct->type != 2) // Si non compte cash)
{ {
print "<td align=\"center\"><a href=\"releve.php?num=$objp->num_releve&amp;account=$acct->id\">$objp->num_releve</a></td>"; print "<td align=\"center\"><a href=\"releve.php?num=$objp->num_releve&amp;account=$acct->id\">$objp->num_releve</a></td>";
} }

View File

@ -53,7 +53,7 @@ if ($user->societe_id > 0)
{ {
$socidp = $user->societe_id; $socidp = $user->societe_id;
} }
$title=$langs->trans("IOMonthlyReporting").", ".$langs->trans("BankAccount")." : <a href=\"account.php?account=".$acct->id."\">".$acct->label."</a>"; $title=$langs->trans("IOMonthlyReporting").", ".$langs->trans("FinancialAccount")." : <a href=\"account.php?account=".$acct->id."\">".$acct->label."</a>";
$lien=($year_start?"<a href='annuel.php?account=".$acct->id."&year_start=".($year_start-1)."'>".img_previous()."</a> <a href='annuel.php?account=".$acct->id."&year_start=".($year_start+1)."'>".img_next()."</a>":""); $lien=($year_start?"<a href='annuel.php?account=".$acct->id."&year_start=".($year_start-1)."'>".img_previous()."</a> <a href='annuel.php?account=".$acct->id."&year_start=".($year_start+1)."'>".img_next()."</a>":"");
print_fiche_titre($title,$lien); print_fiche_titre($title,$lien);
print '<br>'; print '<br>';
@ -67,13 +67,14 @@ $sql .= " WHERE f.amount >= 0";
if ($_GET["account"]) { $sql .= " AND fk_account = ".$_GET["account"]; } if ($_GET["account"]) { $sql .= " AND fk_account = ".$_GET["account"]; }
$sql .= " GROUP BY dm"; $sql .= " GROUP BY dm";
if ($db->query($sql)) $resql=$db->query($sql);
if ($resql)
{ {
$num = $db->num_rows(); $num = $db->num_rows($resql);
$i = 0; $i = 0;
while ($i < $num) while ($i < $num)
{ {
$row = $db->fetch_row($i); $row = $db->fetch_row($resql);
$encaiss[$row[1]] = $row[0]; $encaiss[$row[1]] = $row[0];
$i++; $i++;
} }
@ -86,14 +87,14 @@ $sql .= " FROM llx_bank as f";
$sql .= " WHERE f.amount <= 0"; $sql .= " WHERE f.amount <= 0";
if ($_GET["account"]) { $sql .= " AND fk_account = ".$_GET["account"]; } if ($_GET["account"]) { $sql .= " AND fk_account = ".$_GET["account"]; }
$sql .= " GROUP BY dm"; $sql .= " GROUP BY dm";
$resql=$db->query($sql);
if ($db->query($sql)) if ($resql)
{ {
$num = $db->num_rows(); $num = $db->num_rows($resql);
$i = 0; $i = 0;
while ($i < $num) while ($i < $num)
{ {
$row = $db->fetch_row($i); $row = $db->fetch_row($resql);
$decaiss[$row[1]] = -$row[0]; $decaiss[$row[1]] = -$row[0];
$i++; $i++;
} }
@ -102,10 +103,10 @@ if ($db->query($sql))
} }
// Affiche tableau
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td rowspan=2>'.$langs->trans("Month").'</td>'; print '<tr class="liste_titre"><td rowspan=2>'.$langs->trans("Month").'</td>';
for ($annee = $year_start ; $annee <= $year_end ; $annee++) for ($annee = $year_start ; $annee <= $year_end ; $annee++)
{ {
print '<td align="center" width="20%" colspan="2">'.$annee.'</td>'; print '<td align="center" width="20%" colspan="2">'.$annee.'</td>';
@ -118,7 +119,7 @@ for ($annee = $year_start ; $annee <= $year_end ; $annee++)
} }
print '</tr>'; print '</tr>';
$var=True; $var=true;
for ($mois = 1 ; $mois < 13 ; $mois++) for ($mois = 1 ; $mois < 13 ; $mois++)
{ {
$var=!$var; $var=!$var;
@ -144,22 +145,50 @@ for ($mois = 1 ; $mois < 13 ; $mois++)
} }
print "</td>"; print "</td>";
} }
print '</tr>'; print '</tr>';
} }
$var=!$var; // Total debit-credit
print "<tr ".$bc[$var]."><td><b>".$langs->trans("Total")."</b></td>"; print '<tr class="liste_total"><td><b>'.$langs->trans("Total")."</b></td>";
for ($annee = $year_start ; $annee <= $year_end ; $annee++) for ($annee = $year_start ; $annee <= $year_end ; $annee++)
{ {
print '<td align="right"><b>'.price($totsorties[$annee]).'</b></td><td align="right"><b>'.price($totentrees[$annee]).'</b></td>'; print '<td align="right"><b>'.price($totsorties[$annee]).'</b></td><td align="right"><b>'.price($totentrees[$annee]).'</b></td>';
} }
print "</tr>\n"; print "</tr>\n";
// Ligne vierge
print '<tr><td>&nbsp;</td>';
$nbcol=0;
for ($annee = $year_start ; $annee <= $year_end ; $annee++)
{
$nbcol+=2;
}
print "</tr>\n";
print '<td colspan="'.$nbcol.'">&nbsp;</td>';
// Solde actuel
$balance=0;
$sql = "SELECT sum(f.amount) as total";
$sql .= " FROM llx_bank as f";
if ($_GET["account"]) { $sql .= " WHERE fk_account = ".$_GET["account"]; }
$resql=$db->query($sql);
if ($resql)
{
$obj = $db->fetch_object($resql);
if ($obj) $balance=$obj->total;
}
else {
dolibarr_print_error($db);
}
print '<tr class="liste_total"><td><b>'.$langs->trans("CurrentBalance")."</b></td>";
print '<td colspan="'.($nbcol).'" align="right">'.price($balance).'</td>';
print "</tr>\n";
print "</table>"; print "</table>";
$db->close(); $db->close();
llxFooter("<em>Derni&egrave;re modification $Date$ r&eacute;vision $Revision$</em>"); llxFooter('$Date$ - $Revision$');
?> ?>

View File

@ -67,12 +67,12 @@ if ($_POST["action"] == 'add')
if ($account->label) { if ($account->label) {
$id = $account->create($user->id); $id = $account->create($user->id);
if (! $id) { if ($id > 0) {
$message=$account->error(); $_GET["id"]=$id; // Force chargement page en mode visu
$_GET["action"]='create'; // Force chargement page en mode creation
} }
else { else {
$_GET["id"]=$id; // Force chargement page en mode visu $message='<div class="error">'.$account->error().'</div>';
$_GET["action"]='create'; // Force chargement page en mode creation
} }
} else { } else {
$message='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->trans("LabelBankCashAccount")).'</div>'; $message='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->trans("LabelBankCashAccount")).'</div>';
@ -162,7 +162,7 @@ if ($_GET["action"] == 'create')
print $form->select_type_comptes_financiers(isset($_POST["type"])?$_POST["type"]:1,"type"); print $form->select_type_comptes_financiers(isset($_POST["type"])?$_POST["type"]:1,"type");
print '</td></tr>'; print '</td></tr>';
print '<tr><td valign="top">'.$langs->trans("BankBalance").'</td>'; print '<tr><td valign="top">'.$langs->trans("InitialBankBalance").'</td>';
print '<td colspan="3"><input size="12" type="text" name="solde" value="0.00"></td></tr>'; print '<td colspan="3"><input size="12" type="text" name="solde" value="0.00"></td></tr>';
print '<tr><td valign="top">'.$langs->trans("Date").'</td>'; print '<tr><td valign="top">'.$langs->trans("Date").'</td>';
@ -225,7 +225,7 @@ else
$head[$h][1] = $langs->trans("AccountCard"); $head[$h][1] = $langs->trans("AccountCard");
$h++; $h++;
dolibarr_fiche_head($head, $hselected, $langs->trans("FinancialAccount")." ".$account->number); dolibarr_fiche_head($head, $hselected, $langs->trans("FinancialAccount")." ".($account->number?$account->number:$account->label));
/* /*
* Confirmation de la suppression * Confirmation de la suppression

View File

@ -45,8 +45,10 @@ function llxHeader($head = "")
$menu = new Menu(); $menu = new Menu();
$sql = "SELECT rowid, label, courant";
$sql = "SELECT rowid, label FROM ".MAIN_DB_PREFIX."bank_account where clos = 0 AND courant = 1"; $sql.= " FROM ".MAIN_DB_PREFIX."bank_account";
$sql.= " WHERE clos = 0";
$sql.= " AND courant in (1,2)";
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) if ($resql)
{ {
@ -57,7 +59,7 @@ function llxHeader($head = "")
{ {
$objp = $db->fetch_object($resql); $objp = $db->fetch_object($resql);
$menu->add(DOL_URL_ROOT."/compta/bank/account.php?account=" . $objp->rowid, $objp->label); $menu->add(DOL_URL_ROOT."/compta/bank/account.php?account=" . $objp->rowid, $objp->label);
$menu->add_submenu(DOL_URL_ROOT."/compta/bank/releve.php?account=" . $objp->rowid ,$langs->trans("AccountStatements")); if ($objp->courant != 2) $menu->add_submenu(DOL_URL_ROOT."/compta/bank/releve.php?account=" . $objp->rowid ,$langs->trans("AccountStatements"));
$menu->add_submenu(DOL_URL_ROOT."/compta/bank/annuel.php?account=" . $objp->rowid ,$langs->trans("IOMonthlyReporting")); $menu->add_submenu(DOL_URL_ROOT."/compta/bank/annuel.php?account=" . $objp->rowid ,$langs->trans("IOMonthlyReporting"));
$i++; $i++;
} }

View File

@ -210,11 +210,11 @@ if ($result)
if ($objp->amount < 0) if ($objp->amount < 0)
{ {
print "<td align=\"right\">".price($objp->amount * -1)."</td><td>&nbsp;</td>\n"; print "<td align=\"right\" nowrap>".price($objp->amount * -1)."</td><td>&nbsp;</td>\n";
} }
else else
{ {
print "<td>&nbsp;</td><td align=\"right\">".price($objp->amount)."</td>\n"; print "<td>&nbsp;</td><td align=\"right\" nowrap>".price($objp->amount)."</td>\n";
} }
if ($objp->rappro) if ($objp->rappro)

View File

@ -76,11 +76,10 @@ if (! isset($_GET["num"]))
$sql .= $db->plimit($limit,$offset); $sql .= $db->plimit($limit,$offset);
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$var=True; $var=True;
$numrows = $db->num_rows(); $numrows = $db->num_rows($result);
$i = 0; $i = 0;
print_barre_liste($langs->trans("AccountStatements").", ".$langs->trans("BankAccount")." : <a href=\"account.php?account=".$acct->id."\">".$acct->label."</a>", $page, "releve.php","&amp;account=".$_GET["account"],$sortfield,$sortorder,'',$numrows); print_barre_liste($langs->trans("AccountStatements").", ".$langs->trans("BankAccount")." : <a href=\"account.php?account=".$acct->id."\">".$acct->label."</a>", $page, "releve.php","&amp;account=".$_GET["account"],$sortfield,$sortorder,'',$numrows);
@ -111,41 +110,47 @@ if (! isset($_GET["num"]))
} }
else else
{ {
/* /**
* Vue d'un releve * Vue d'un releve
* *
*/ */
if ($_GET["rel"] == 'prev') if ($_GET["rel"] == 'prev')
{ {
// Recherche valeur pour num = numéro relevé précédent // Recherche valeur pour num = numéro relevé précédent
$sql = "SELECT distinct(num_releve) FROM ".MAIN_DB_PREFIX."bank WHERE num_releve < ".$_GET["num"]." AND fk_account = ".$_GET["account"]." ORDER BY num_releve DESC"; $sql = "SELECT distinct(num_releve) as num";
$sql.= " FROM ".MAIN_DB_PREFIX."bank";
$sql.= " WHERE num_releve < ".$_GET["num"]." AND fk_account = ".$_GET["account"];
$sql.= " ORDER BY num_releve DESC";
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$var=True; $var=True;
$numrows = $db->num_rows(); $numrows = $db->num_rows($result);
$i = 0; $i = 0;
if ($numrows > 0) if ($numrows > 0)
{ {
$row = $db->fetch_row(0); $obj = $db->fetch_object($result);
$num = $row[0]; $num = $obj->num;
} }
} }
} }
elseif ($_GET["rel"] == 'next') elseif ($_GET["rel"] == 'next')
{ {
// Recherche valeur pour num = numéro relevé précédent // Recherche valeur pour num = numéro relevé précédent
$sql = "SELECT distinct(num_releve) FROM ".MAIN_DB_PREFIX."bank WHERE num_releve > ".$_GET["num"]." AND fk_account = ".$_GET["account"]." ORDER BY num_releve ASC"; $sql = "SELECT distinct(num_releve) as num";
$sql.= " FROM ".MAIN_DB_PREFIX."bank";
$sql.= " WHERE num_releve > ".$_GET["num"]." AND fk_account = ".$_GET["account"];
$sql.= " ORDER BY num_releve ASC";
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$var=True; $var=True;
$numrows = $db->num_rows(); $numrows = $db->num_rows($result);
$i = 0; $i = 0;
if ($numrows > 0) if ($numrows > 0)
{ {
$row = $db->fetch_row(0); $obj = $db->fetch_object($result);
$num = $row[0]; $num = $obj->num;
} }
} }
} }
@ -168,19 +173,19 @@ else
print '<td>'.$langs->trans("Date").'</td><td>'.$langs->trans("DateValue").'</td><td>'.$langs->trans("Type").'</td><td width="30%">'.$langs->trans("Description").'</td>'; print '<td>'.$langs->trans("Date").'</td><td>'.$langs->trans("DateValue").'</td><td>'.$langs->trans("Type").'</td><td width="30%">'.$langs->trans("Description").'</td>';
print '<td align="right">'.$langs->trans("Debit").'</td>'; print '<td align="right">'.$langs->trans("Debit").'</td>';
print '<td align="right">'.$langs->trans("Credit").'</td>'; print '<td align="right">'.$langs->trans("Credit").'</td>';
print '<td align="right">'.$langs->trans("Solde").'</td>'; print '<td align="right">'.$langs->trans("Balance").'</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print "</tr>\n"; print "</tr>\n";
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank WHERE num_releve < $num AND fk_account = ".$acct->id; $sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank WHERE num_releve < $num AND fk_account = ".$acct->id;
if ( $db->query($sql) ) $resql=$db->query($sql);
if ($resql)
{ {
$total = $db->result(0, 0); $total = $db->result(0, 0);
$db->free(); $db->free($resql);
} }
$sql = "SELECT b.rowid,".$db->pdate("b.dateo")." as do,".$db->pdate("b.datev")." as dv, b.amount, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type"; $sql = "SELECT b.rowid,".$db->pdate("b.dateo")." as do,".$db->pdate("b.datev")." as dv, b.amount, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type";
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b"; $sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
$sql .= " WHERE num_releve='".$num."'"; $sql .= " WHERE num_releve='".$num."'";
@ -193,7 +198,7 @@ else
if ($result) if ($result)
{ {
$var=True; $var=True;
$numrows = $db->num_rows(); $numrows = $db->num_rows($result);
$i = 0; $i = 0;
// Ligne Solde début releve // Ligne Solde début releve
@ -228,7 +233,7 @@ else
$resc = $db->query($sql); $resc = $db->query($sql);
if ($resc) if ($resc)
{ {
$numc = $db->num_rows(); $numc = $db->num_rows($resc);
$ii = 0; $ii = 0;
while ($ii < $numc) while ($ii < $numc)
{ {
@ -271,7 +276,7 @@ else
print "</tr>"; print "</tr>";
$i++; $i++;
} }
$db->free(); $db->free($result);
} }
// Ligne Total // Ligne Total
print "<tr><td align=\"right\" colspan=\"4\">".$langs->trans("Total")." :</td><td align=\"right\">".price($totald)."</td><td align=\"right\">".price($totalc)."</td><td>&nbsp;</td><td>&nbsp;</td></tr>"; print "<tr><td align=\"right\" colspan=\"4\">".$langs->trans("Total")." :</td><td align=\"right\">".price($totald)."</td><td align=\"right\">".price($totalc)."</td><td>&nbsp;</td><td>&nbsp;</td></tr>";
@ -282,5 +287,5 @@ else
} }
$db->close(); $db->close();
llxFooter("<em>Derni&egrave;re modification $Date$ r&eacute;vision $Revision$</em>"); llxFooter('$Date$ - $Revision$');
?> ?>