* Copyright (C) 2003 Xavier DUTOIT * Copyright (C) 2004-2007 Laurent Destailleur * Copyright (C) 2004 Christophe Combelles * * 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. */ /** \file htdocs/compta/bank/ligne.php \ingroup compta \brief Page edition d'une ecriture bancaire \version $Id$ */ require("./pre.inc.php"); if (! $user->rights->banque->lire && ! $user->rights->banque->consolidate) accessforbidden(); $langs->load("banks"); $langs->load("bills"); $langs->load("categories"); if ($conf->adherent->enabled) $langs->load("members"); $rowid=isset($_GET["rowid"])?$_GET["rowid"]:$_POST["rowid"]; $orig_account=isset($_GET["orig_account"])?$_GET["orig_account"]:$_POST["orig_account"]; $html = new Form($db); /* * Actions */ if ($user->rights->banque->consolidate && $_GET["action"] == 'dvnext') { $ac = new Account($db); $ac->datev_next($_GET["rowid"]); } if ($user->rights->banque->consolidate && $_GET["action"] == 'dvprev') { $ac = new Account($db); $ac->datev_previous($_GET["rowid"]); } if ($_POST["action"] == 'confirm_delete_categ' && $_POST["confirm"] == "yes") { $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid = $rowid AND fk_categ = ".$_GET["cat1"]; if (! $db->query($sql)) { dolibarr_print_error($db); } } if ($_POST["action"] == 'class') { $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid = $rowid AND fk_categ = ".$_POST["cat1"]; if (! $db->query($sql)) { dolibarr_print_error($db); } $sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_class (lineid, fk_categ) VALUES (".$_GET["rowid"].", ".$_POST["cat1"].")"; if (! $db->query($sql)) { dolibarr_print_error($db); } } if ($_POST["action"] == "update") { // Avant de modifier la date ou le montant, on controle si ce n'est pas encore rapproche $sql = "SELECT b.rappro FROM ".MAIN_DB_PREFIX."bank as b WHERE rowid=".$rowid; $result = $db->query($sql); if ($result) { $objp = $db->fetch_object($result); if ($objp->rappro) die ("Vous ne pouvez pas modifier une �criture d�j� rapproch�e"); } $db->begin(); $amount = price2num($_POST['amount']); $dateop = $_POST["dateoyear"].'-'.$_POST["dateomonth"].'-'.$_POST["dateoday"]; $dateval= $_POST["datevyear"].'-'.$_POST["datevmonth"].'-'.$_POST["datevday"]; $sql = "UPDATE ".MAIN_DB_PREFIX."bank"; $sql.= " SET label='".addslashes($_POST["label"])."',"; // Todo: cr�er une classe pour s�parer les requ�tes sql if (isset($_POST['amount'])) $sql.=" amount='$amount',"; $sql.= " dateo = '".$dateop."', datev = '".$dateval."',"; $sql.= " fk_account = ".$_POST['accountid']; $sql.= " WHERE rowid = ".$rowid; $result = $db->query($sql); if ($result) { $db->commit(); } else { $db->rollback(); dolibarr_print_error($db); } } if ($_POST["action"] == 'type') { $sql = "UPDATE ".MAIN_DB_PREFIX."bank set fk_type='".$_POST["value"]."', num_chq='".$_POST["num_chq"]."' WHERE rowid = $rowid;"; $result = $db->query($sql); } if ($_POST["action"] == 'banque') { $sql = "UPDATE ".MAIN_DB_PREFIX."bank set banque='".addslashes($_POST["banque"])."' WHERE rowid = $rowid;"; $result = $db->query($sql); } if ($_POST["action"] == 'emetteur') { $sql = "UPDATE ".MAIN_DB_PREFIX."bank set emetteur='".addslashes($_POST["emetteur"])."' WHERE rowid = $rowid;"; $result = $db->query($sql); } if ($_POST["action"] == 'num_releve') { $db->begin(); $num_rel=trim($_POST["num_rel"]); $sql = "UPDATE ".MAIN_DB_PREFIX."bank"; $sql.= " SET num_releve=".($num_rel?"'".$num_rel."'":"null"); if (! $num_rel) $sql.= ", rappro = 0"; $sql.= " WHERE rowid = ".$rowid; $result = $db->query($sql); if ($result) { $db->commit(); } else { $db->rollback(); dolibarr_print_error($db); } } /* * Affichage fiche ligne ecriture en mode edition */ llxHeader(); // On initialise la liste des categories $sql = "SELECT rowid, label"; $sql.= " FROM ".MAIN_DB_PREFIX."bank_categ"; $sql.= " ORDER BY label"; $result = $db->query($sql); if ($result) { $var=True; $num = $db->num_rows($result); $i = 0; $options = ""; while ($i < $num) { $obj = $db->fetch_object($result); $options .= "\n"; $i++; } $db->free($result); } $var=False; $h=0; $head[$h][0] = DOL_URL_ROOT.'/compta/bank/ligne.php?rowid='.$_GET["rowid"]; $head[$h][1] = $langs->trans('Card'); $hselected=$h; $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/bank/info.php?rowid='.$_GET["rowid"]; $head[$h][1] = $langs->trans("Info"); $h++; dolibarr_fiche_head($head, $hselected, $langs->trans('LineRecord').': '.$_GET["rowid"]); $sql = "SELECT b.rowid,".$db->pdate("b.dateo")." as do,".$db->pdate("b.datev")." as dv, b.amount, b.label, b.rappro,"; $sql.= " b.num_releve, b.fk_user_author, b.num_chq, b.fk_type, b.fk_account"; $sql.= ",b.emetteur,b.banque"; $sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; $sql.= " WHERE rowid=".$rowid; $sql.= " ORDER BY dateo ASC"; $result = $db->query($sql); if ($result) { $i = 0; $total = 0; if ($db->num_rows($result)) { // Confirmations if ($_GET["action"] == 'delete_categ') { $html->form_confirm("ligne.php?rowid=".$_GET["rowid"]."&cat1=".$_GET["fk_categ"]."&orig_account=".$orig_account,$langs->trans("RemoveFromCategory"),$langs->trans("RemoveFromCategoryConfirm"),"confirm_delete_categ"); print '
'; } print ''; $objp = $db->fetch_object($result); $total = $total + $objp->amount; $acct=new Account($db,$objp->fk_account); $acct->fetch($objp->fk_account); $account = $acct->id; $links=$acct->get_url($rowid); // Tableau sur 4 colonne si deja rapproche, sinon sur 5 colonnes // Author print '"; if ($objp->fk_user_author) { $author=new User($db,$objp->fk_user_author); $author->fetch(); print ''; } else { print ''; } print ""; $i++; print "rowid\">"; print ""; print ""; // Account print ""; print ''; print ''; // Date ope print ''; if (! $objp->rappro && ($user->rights->banque->modifier || $user->rights->banque->consolidate)) { print ''; } else { print ''; // Value date print ""; if (! $objp->rappro && ($user->rights->banque->modifier || $user->rights->banque->consolidate)) { print ''; print ''; } else { print ''; } print ""; // Description print ""; if (! $objp->rappro && ($user->rights->banque->modifier || $user->rights->banque->consolidate)) { print ''; print ''; // Affiche liens if (sizeof($links)) { print ""; print ''; } // Amount print ""; if (! $objp->rappro && $user->rights->banque->modifier) { print '"; print ""; // Type paiement print "'; } print ""; // Banque print "'; } print ""; // Emetteur print "'; } print ""; // Releve rappro if ($acct->rappro) // Si compte rapprochable { print ""; if ($user->rights->banque->consolidate) { print "rowid\">"; print ''; print ""; print ''; print ''; } else { print ''; } print ''; } print "
'.$langs->trans("Author")."'; print img_object($langs->trans("ShowUser"),'user').' '.$author->fullname.' 
".$langs->trans("Account")."'; print ''.img_object($langs->trans("ShowAccount"),'account').' '.$acct->label.''; print ''; print '
'.$langs->trans("DateOperation").''; $html->select_date($objp->do,'dateo','','','','update'); print ''; print dolibarr_print_date($objp->do); } print '
".$langs->trans("DateValue")."'; $html->select_date($objp->dv,'datev','','','','update'); print '   '; print ''; print img_edit_remove() . " "; print ''; print img_edit_add() .""; print ''; print dolibarr_print_date($objp->dv,"day"); print '
".$langs->trans("Label")."'; print ''; print ''; } else { print ''; if (eregi('^\((.*)\)$',$objp->label,$reg)) { // Label g�n�rique car entre parenth�ses. On l'affiche en le traduisant print $langs->trans($reg[1]); } else { print $objp->label; } } print '
".$langs->trans("Links")."'; foreach($links as $key=>$val) { if ($key) print '
'; if ($links[$key]['type']=='payment') { print ''; print img_object($langs->trans('ShowPayment'),'payment').' '; print $langs->trans("Payment"); print ''; } else if ($links[$key]['type']=='payment_supplier') { print ''; print img_object($langs->trans('ShowPayment'),'payment').' '; print $langs->trans("Payment"); print ''; } else if ($links[$key]['type']=='company') { print ''; print img_object($langs->trans('ShowCustomer'),'company').' '; print $links[$key]['label']; print ''; } else if ($links[$key]['type']=='sc') { print ''; print img_object($langs->trans('ShowBill'),'bill').' '; print $langs->trans("SocialContribution"); print ''; } else if ($links[$key]['type']=='payment_sc') { print ''; print img_object($langs->trans('ShowPayment'),'payment').' '; print $langs->trans("SocialContributionPayment"); print ''; } else if ($links[$key]['type']=='member') { print ''; print img_object($langs->trans('ShowMember'),'user').' '; print $links[$key]['label']; print ''; } else if ($links[$key]['type']=='banktransfert') { print ''; print img_object($langs->trans('ShowTransaction'),'payment').' '; print $langs->trans("TransactionOnTheOtherAccount"); print ''; } else { print ''; print $links[$key]['label']; print ''; } } print '
 
".$langs->trans("Amount")."'; print ' '.$langs->trans("Currency".$conf->monnaie); print ''; } else { print ''; print price($objp->amount); } print "
".$langs->trans("Type")." / ".$langs->trans("Numero").""; if ($user->rights->banque->modifier || $user->rights->banque->consolidate) { print "
rowid\">"; print ''; print ""; print $html->select_types_paiements($objp->fk_type,"value",'',2); print ''; print '
'; print ""; } else { print $objp->fk_type.' '.$objp->num_chq.' 
".$langs->trans("Bank").""; if ($user->rights->banque->modifier) { print "
rowid\">"; print ''; print ""; print ''; print '
'; print ""; } else { print $objp->banque.'  
".$langs->trans("CheckTransmitter").""; if ($user->rights->banque->modifier || $user->rights->banque->consolidate) { print "
rowid\">"; print ''; print ""; print ''; print '
'; print ""; } else { print $objp->emetteur.'  
".$langs->trans("Conciliation")."
'; print $langs->trans("AccountStatement").' '; print ''.$objp->num_releve.' 
"; } $db->free($result); } print ''; /* * Boutons actions */ /* print '
'; if ($orig_account) { $acct=new Account($db,$orig_account); $acct->fetch($orig_account); print ''.$langs->trans("BackToConciliate",$acct->label).''; } print '
'; */ // Liste les categories print '
'; print ''; print ""; print ""; print ""; print "'; print ""; print ""; $sql = "SELECT c.label, c.rowid"; $sql.= " FROM ".MAIN_DB_PREFIX."bank_class as a, ".MAIN_DB_PREFIX."bank_categ as c"; $sql.= " WHERE a.lineid=".$rowid." AND a.fk_categ = c.rowid"; $sql.= " ORDER BY c.label"; $result = $db->query($sql); if ($result) { $var=True; $num = $db->num_rows($result); $i = 0; $total = 0; while ($i < $num) { $objp = $db->fetch_object($result); $var=!$var; print ""; print ""; print ""; print ""; print ""; $i++; } $db->free($result); } print "
".$langs->trans("Categories").""; print " "; print '
$objp->labelrowid\">".$langs->trans("List")."rowid\">".img_delete($langs->trans("Remove"))."
"; $db->close(); llxFooter('$Date$ - $Revision$'); ?>