* Copyright (C) 2004-2006 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Id$ * $Source$ */ /** \file htdocs/compta/bank/releve.php \ingroup banque \brief Page d'affichage d'un relevé \version $Revision$ */ require("./pre.inc.php"); require_once(DOL_DOCUMENT_ROOT."/lib/bank.lib.php"); $langs->load("companies"); if (!$user->rights->banque->lire) accessforbidden(); if ($_GET["action"] == 'dvnext') { $ac = new Account($db); $ac->datev_next($_GET["dvid"]); } if ($_GET["action"] == 'dvprev') { $ac = new Account($db); $ac->datev_previous($_GET["dvid"]); } $sortfield = isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"]; $sortorder = isset($_GET["sortorder"])?$_GET["sortorder"]:$_POST["sortorder"]; $page=isset($_GET["page"])?$_GET["page"]:$_POST["page"]; if ($page == -1) { $page = 0; } if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="s.nom"; $offset = $conf->liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; llxHeader(); // Récupère info du compte $acct = new Account($db); $acct->fetch($_GET["account"]); if (! isset($_GET["num"])) { /* * Vue liste tous relevés confondus */ $sql = "SELECT distinct(b.num_releve) as numr"; $sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; $sql.= " WHERE fk_account = ".$_GET["account"]; $sql.= " ORDER BY numr DESC"; $sql.= $db->plimit($conf->liste_limit+1,$offset); $result = $db->query($sql); if ($result) { $var=True; $numrows = $db->num_rows($result); $i = 0; // Onglets $head=bank_prepare_head($acct); dolibarr_fiche_head($head,'statement',$langs->trans("FinancialAccount"),0); $titre=$langs->trans("FinancialAccount")." : ".$acct->label; print_barre_liste($titre, $page, $_SERVER["PHP_SELF"], "&account=".$_GET["account"], $sortfield, $sortorder,'',$numrows); print ''; print ""; print ''; //while ($i < min($numrows,$conf->liste_limit)) // retrait de la limite tant qu'il n'y a pas de pagination while ($i < min($numrows,$conf->liste_limit)) { $objp = $db->fetch_object($result); $var=!$var; if (! isset($objp->numr)) { // } else { print "\n"; } $i++; } print "
'.$langs->trans("AccountStatement").'
numr&account=".$_GET["account"]."\">$objp->numr
\n"; print "\n\n"; } else { dolibarr_print_error($db); } } else { /** * Affiche liste ecritures d'un releve */ if ($_GET["rel"] == 'prev') { // Recherche valeur pour num = numéro relevé précédent $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); if ($result) { $var=True; $numrows = $db->num_rows($result); $i = 0; if ($numrows > 0) { $obj = $db->fetch_object($result); $num = $obj->num; } } } elseif ($_GET["rel"] == 'next') { // Recherche valeur pour num = numéro relevé précédent $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); if ($result) { $var=True; $numrows = $db->num_rows($result); $i = 0; if ($numrows > 0) { $obj = $db->fetch_object($result); $num = $obj->num; } } } else { // On veut le relevé num $num=$_GET["num"]; } $ve=$_GET["ve"]; $mesprevnext ="id\">".img_previous()."  "; $mesprevnext.= $langs->trans("AccountStatement")." $num"; $mesprevnext.="   id\">".img_next().""; print_fiche_titre($langs->trans("AccountStatement").' '.$num.', '.$langs->trans("BankAccount").' : '.$acct->getNomUrl(0),$mesprevnext); print '
'; print "
"; print ""; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print "\n"; // Calcul du solde de départ du relev $sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."bank"; $sql.= " WHERE num_releve < ".$num." AND fk_account = ".$acct->id; $resql=$db->query($sql); if ($resql) { $obj=$db->fetch_object($resql); $total = $obj->amount; $db->free($resql); } // Recherche les écritures pour le relev $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 .= " WHERE num_releve='".$num."'"; if (!isset($num)) { $sql .= " or num_releve is null"; } $sql .= " AND fk_account = ".$acct->id; $sql .= " ORDER BY datev ASC"; $result = $db->query($sql); if ($result) { $var=True; $numrows = $db->num_rows($result); $i = 0; // Ligne Solde début releve print ""; print "\n"; while ($i < $numrows) { $objp = $db->fetch_object($result); $total = $total + $objp->amount; $var=!$var; print ""; // Date operation print ''; // Date de valeur print '\n"; // Num chq print ''; // Libelle print '"; if ($objp->amount < 0) { $totald = $totald + abs($objp->amount); print '\n"; } else { $totalc = $totalc + abs($objp->amount); print "\n"; } print "\n"; if ($user->rights->banque->modifier) { print ""; } else { print ""; } print ""; $i++; } $db->free($result); } // Ligne Total print ""; // Ligne Solde print "\n"; print "
'.$langs->trans("DateOperationShort").''.$langs->trans("DateValueShort").''.$langs->trans("Type").''.$langs->trans("Description").''.$langs->trans("Debit").''.$langs->trans("Credit").''.$langs->trans("Balance").' 
id."\"> ".$langs->trans("InitialBankBalance")." :".price($total)." 
'.dolibarr_print_date($objp->do,"%d/%m/%Y").''; print ''; print img_previous().' '; print dolibarr_print_date($objp->dv,"%d/%m/%Y") .' '; print ''; print img_next().''; print "'.$objp->fk_type.' '.($objp->num_chq?$objp->num_chq:'').''; $reg=array(); eregi('\((.+)\)',$objp->label,$reg); // Si texte entouré de parenthèe on tente recherche de traduction if ($reg[1] && $langs->trans($reg[1])!=$reg[1]) print $langs->trans($reg[1]); else print $objp->label; print ''; /* * Ajout les liens (societe, company...) */ $newline=1; $links = $acct->get_url($objp->rowid); foreach($links as $key=>$val) { if (! $newline) print ' - '; else print '
'; if ($links[$key]['type']=='payment') { print ''; print img_object($langs->trans('ShowPayment'),'payment').' '; print $langs->trans("Payment"); print ''; $newline=0; } elseif ($links[$key]['type']=='payment_supplier') { print ''; print img_object($langs->trans('ShowPayment'),'payment').' '; print $langs->trans("Payment"); print ''; $newline=0; } elseif ($links[$key]['type']=='company') { print ''; print img_object($langs->trans('ShowCustomer'),'company').' '; print dolibarr_trunc($links[$key]['label'],24); print ''; $newline=0; } else { print ''; print $links[$key]['label']; print ''; $newline=0; } } // Catégories if ($ve) { $sql = "SELECT label FROM ".MAIN_DB_PREFIX."bank_categ as ct, ".MAIN_DB_PREFIX."bank_class as cl"; $sql.= " WHERE ct.rowid=cl.fk_categ AND cl.lineid=".$objp->rowid; $resc = $db->query($sql); if ($resc) { $numc = $db->num_rows($resc); $ii = 0; if ($numc && ! $newline) print '
'; while ($ii < $numc) { $objc = $db->fetch_object($resc); print "
$objc->label"; $ii++; } } else { dolibarr_print_error($db); } } print "
'.price($objp->amount * -1)."  ".price($objp->amount)."".price($total)."rowid&account=".$acct->id."\">"; print img_edit(); print " 
".$langs->trans("Total")." :".price($totald)."".price($totalc)."  
 ".$langs->trans("EndBankBalance")." :".price($total)." 
\n"; } $db->close(); llxFooter('$Date$ - $Revision$'); ?>