diff --git a/htdocs/adherents/adherent.class.php b/htdocs/adherents/adherent.class.php index 30f8090eb01..2906b1d905b 100644 --- a/htdocs/adherents/adherent.class.php +++ b/htdocs/adherents/adherent.class.php @@ -1621,9 +1621,10 @@ class Adherent /** * \brief Renvoie nom clicable (avec eventuellement le picto) * \param withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * \param maxlen Longueur max libelle * \return string Chaine avec URL */ - function getNomUrl($withpicto=0) + function getNomUrl($withpicto=0,$maxlen=0) { global $langs; @@ -1637,7 +1638,7 @@ class Adherent if ($withpicto) $result.=($lien.img_object($label,$picto).$lienfin); if ($withpicto && $withpicto != 2) $result.=' '; - $result.=$lien.$this->ref.$lienfin; + $result.=$lien.($maxlen?dolibarr_trunc($this->ref,$maxlen):$this->ref).$lienfin; return $result; } diff --git a/htdocs/chargesociales.class.php b/htdocs/chargesociales.class.php index c05689ecf53..0cddc16798e 100644 --- a/htdocs/chargesociales.class.php +++ b/htdocs/chargesociales.class.php @@ -244,9 +244,10 @@ class ChargeSociales /** * \brief Renvoie nom clicable (avec eventuellement le picto) * \param withpicto Inclut le picto dans le lien + * \param maxlen Longueur max libelle * \return string Chaine avec URL */ - function getNomUrl($withpicto=0) + function getNomUrl($withpicto=0,$maxlen=0) { global $langs; @@ -256,7 +257,7 @@ class ChargeSociales $lienfin=''; if ($withpicto) $result.=($lien.img_object($langs->trans("ShowBill"),'bill').$lienfin.' '); - $result.=$lien.$this->lib.$lienfin; + $result.=$lien.($maxlen?dolibarr_trunc($this->lib,$maxlen):$this->lib).$lienfin; return $result; } diff --git a/htdocs/compta/bank/account.php b/htdocs/compta/bank/account.php index 0b144fdbd48..3c80d159ad9 100644 --- a/htdocs/compta/bank/account.php +++ b/htdocs/compta/bank/account.php @@ -32,6 +32,9 @@ require("./pre.inc.php"); require_once(DOL_DOCUMENT_ROOT."/lib/bank.lib.php"); +require_once(DOL_DOCUMENT_ROOT."/societe.class.php"); +require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php"); +require_once(DOL_DOCUMENT_ROOT."/chargesociales.class.php"); if (!$user->rights->banque->lire) accessforbidden(); @@ -105,6 +108,9 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"]=='yes' && $user->r */ llxHeader(); +$societestatic=new Societe($db); +$chargestatic=new ChargeSociales($db); +$memberstatic=new Adherent($db); $html = new Form($db); @@ -119,7 +125,7 @@ if ($account > 0) $viewline = 20; } $acct = new Account($db); - $acct->fetch($account); + $result=$acct->fetch($account); // Chargement des categories bancaires dans $options $nbcategories=0; @@ -148,22 +154,40 @@ if ($account > 0) * * */ - $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."bank as b"; - $sql .= " WHERE b.fk_account=".$acct->id; + + // Definition de sql_rech $sql_rech=""; + $mode_search = 0; if ($_POST["req_desc"]) { $sql_rech .= " AND b.label like '%".strtolower($_POST["req_desc"])."%'"; $mode_search = 1; } - else + if ($_POST["req_debit"]) { - $mode_search = 0; + $sql_rech.=" AND amount = -".$_POST["req_debit"]; + $mode_search = 1; + } + if ($_POST["req_credit"]) + { + $sql_rech.=" AND amount = ".$_POST["req_credit"]; + $mode_search = 1; + } + if ($_POST["thirdparty"]) + { + $sql_rech.=" AND (IFNULL(s.nom,'bidon') like '%".$_POST["thirdparty"]."%')"; + $mode_search = 1; } - if ($_POST["req_debit"]) $sql_rech.=" AND amount = -".$_POST["req_debit"]; - if ($_POST["req_credit"]) $sql_rech.=" AND amount = ".$_POST["req_credit"]; - $sql .= $sql_rech; + $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."bank as b"; + if ($mode_search) + { + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu ON bu.fk_bank = b.rowid AND bu.type='company'"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON bu.url_id = s.idp"; + } + $sql.= " WHERE b.fk_account=".$acct->id; + $sql.= $sql_rech; + dolibarr_syslog("account.php count transactions - sql=".$sql); $result=$db->query($sql); if ($result) { @@ -201,7 +225,6 @@ if ($account > 0) $limitsql = $nbline; } - // Onglets $head=bank_prepare_head($acct); dolibarr_fiche_head($head,'journal',$langs->trans("FinancialAccount"),0); @@ -245,22 +268,20 @@ if ($account > 0) // Formulaire de saisie d'une opération hors factures if ($user->rights->banque->modifier && $_GET["action"]=='addline') { - $html=new Form($db); - print '
'; print ''; print ''; print ''; print ''; - print ''.$langs->trans("AddBankRecordLong").''; + print ''.$langs->trans("AddBankRecordLong").''; print ''; print ''; print ''.$langs->trans("Date").''; print ' '; print ''.$langs->trans("Type").''; - print ''.$langs->trans("Description").''; + print ''.$langs->trans("Description").''; print ''.$langs->trans("Debit").''; print ''.$langs->trans("Credit").''; print ' '; @@ -273,15 +294,15 @@ if ($account > 0) print ''; $html->select_types_paiements('','operation','1,2',1,1); print ''; - print ''; - print ''; + print ''; + print ''; if ($nbcategories) { print '
'.$langs->trans("Category").': '; } print ''; - print ''; - print ''; + print ''; + print ''; print ''; print '
'; print ''; @@ -296,10 +317,15 @@ if ($account > 0) * */ - // Ligne de titre tableau des acritures + // Ligne de titre tableau des ecritures print ''; - print ''.$langs->trans("Date").''.$langs->trans("Value").''.$langs->trans("Type").''.$langs->trans("Description").''; - print ''.$langs->trans("Debit").''.$langs->trans("Credit").''; + print ''.$langs->trans("Date").''; + print ''.$langs->trans("Value").''; + print ''.$langs->trans("Type").''; + print ''.$langs->trans("Description").''; + print ''.$langs->trans("ThirdParty").''; + print ''.$langs->trans("Debit").''; + print ''.$langs->trans("Credit").''; print ''.$langs->trans("BankBalance").''; print ''; if ($acct->type != 2 && $acct->rappro) print $langs->trans("AccountStatementShort"); @@ -312,9 +338,10 @@ if ($account > 0) print ''; print ' '; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; + print ''; print ' '; print ''; print "\n"; @@ -326,38 +353,249 @@ if ($account > 0) */ $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 fk_account=".$acct->id; - if ($req_debit) $sql .= " AND b.amount = -".$req_debit; - if ($req_credit) $sql .= " AND b.amount = ".$req_credit; - $sql.= $sql_rech; - if ($vue) + if ($mode_search) { - if ($vue == 'credit') - { - $sql .= " AND b.amount >= 0 "; - } - else - { - $sql .= " AND b.amount < 0 "; - } + $sql.= " ,s.idp as socid, s.nom as thirdparty"; } + if ($mode_search && $conf->adherent->enabled) + { + + } + if ($mode_search && $conf->tax->enabled) + { + + } + $sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; + if ($mode_search) + { + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu ON bu.fk_bank = b.rowid AND bu.type='company'"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON bu.url_id = s.idp"; + } + if ($mode_search && $conf->adherent->enabled) + { + // \TODO Mettre jointure sur adherent + //$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu ON bu.fk_bank = b.rowid AND bu.type='company'"; + //$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON bu.url_id = s.idp"; + } + if ($mode_search && $conf->tax->enabled) + { + // \TODO Mettre jointure sur charges sociales + //$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu ON bu.fk_bank = b.rowid AND bu.type='company'"; + //$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON bu.url_id = s.idp"; + } + $sql.= " WHERE fk_account=".$acct->id; + $sql.= $sql_rech; $sql.= " ORDER BY b.datev ASC"; $sql.= $db->plimit($limitsql, 0); + dolibarr_syslog("account.php get transactions - sql=".$sql); $result = $db->query($sql); if ($result) { - $total = _print_lines($db, $result, $sql, $acct); - if ($page == 0) + $total = 0; + $time = time(); + + $var=true; + + $num = $db->num_rows($result); + $i = 0; $total = 0; $sep = 0; + + while ($i < $num) + { + $objp = $db->fetch_object($result); + $total = $total + $objp->amount; + if ($i >= ($nbline - $viewline)) + { + $var=!$var; + + if ($objp->do > $time && !$sep) + { + $sep = 1 ; + print " "; + print "".price($total - $objp->amount).""; + print " "; + print ''; + } + + print ""; + print "".dolibarr_print_date($objp->do,"%d/%m/%y")."\n"; + print " ".dolibarr_print_date($objp->dv,"%d/%m/%y")."\n"; + print " ".$objp->fk_type." ".($objp->num_chq?$objp->num_chq:"")."\n"; + 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 ''; + + /* + * Ajout les liens autres que tiers + */ + $links = $acct->get_url($objp->rowid); + foreach($links as $key=>$val) + { + if ($links[$key]['type']=='payment') { + print ' - '; + print ''; + if (eregi('^\((.*)\)$',$links[$key]['label'],$reg)) + { + // Label générique car entre parenthèses. On l'affiche en le traduisant + if ($reg[1]=='paiement') $reg[1]='Payment'; + print $langs->trans($reg[1]); + } + else + { + print $links[$key]['label']; + } + print ''; + } + else if ($links[$key]['type']=='payment_supplier') { + print ' - '; + print ''; + if (eregi('^\((.*)\)$',$links[$key]['label'],$reg)) + { + // Label générique car entre parenthèses. On l'affiche en le traduisant + if ($reg[1]=='paiement') $reg[1]='Payment'; + print $langs->trans($reg[1]); + } + else + { + print $links[$key]['label']; + } + print ''; + } + else if ($links[$key]['type']=='company') { + } + else if ($links[$key]['type']=='sc') { + } + else if ($links[$key]['type']=='payment_sc') { + print ' - '; + print ''; + //print img_object($langs->trans('ShowPayment'),'payment').' '; + print $langs->trans("SocialContributionPayment"); + print ''; + } + else if ($links[$key]['type']=='member') { + } + else { + print ' - '; + print ''; + if (eregi('^\((.*)\)$',$links[$key]['label'],$reg)) + { + // Label générique car entre parenthèses. On l'affiche en le traduisant + if ($reg[1]=='paiement') $reg[1]='Payment'; + print $langs->trans($reg[1]); + } + else + { + print $links[$key]['label']; + } + print ''; + } + } + print ''; + + + /* + * Ajout les liens tiers + */ + print ''; + foreach($links as $key=>$val) + { + if ($links[$key]['type']=='company') { + $societestatic->id=$links[$key]['url_id']; + $societestatic->nom=$links[$key]['label']; + print $societestatic->getNomUrl(0,'',16); + } + else if ($links[$key]['type']=='sc') { + $chargestatic->id=$links[$key]['url_id']; + $chargestatic->nom=$links[$key]['label']; + print $chargestatic->getNomUrl(0,'',16); + } + else if ($links[$key]['type']=='member') { + $memberstatic->id=$links[$key]['url_id']; + $memberstatic->ref=$links[$key]['label']; + print $memberstatic->getNomUrl(0,'',16); + } + } + print ''; + + if ($objp->amount < 0) + { + print "".price($objp->amount * -1)." \n"; + } + else + { + print "  ".price($objp->amount)."\n"; + } + + if ($action != 'search') + { + if ($total >= 0) + { + print ' '.price($total).''; + } + else + { + print ' '.price($total).''; + } + } + else + { + print '-'; + } + + // Relevé rappro ou lien edition + if ($objp->rappro && $acct->type != 2) // Si non compte cash + { + print "  "; + print "num_releve&account=$acct->id\">$objp->num_releve"; + print ""; + } + else + { + if ($user->rights->banque->modifier) + { + print ''; + print ''; + print img_edit(); + print '  '; + print ''; + print img_delete(); + print ''; + } + else + { + print " "; + } + } + + print ""; + + } + + $i++; + } + + // Affichage total + if ($page == 0 && $action != 'search') { - print ''.$langs->trans("CurrentBalance").''; + print ''.$langs->trans("CurrentBalance").''; print ''.price($total).''; print ' '; print ''; } $db->free($result); } + else + { + dolibarr_print_error($db); + } print ""; @@ -395,162 +633,4 @@ else $db->close(); llxFooter('$Date$ - $Revision$'); - - -/** - * \brief Affiche ligne ecriture - * \param db Handler d'accès base - * \param result Resultset du select - * \param sql Requete sql - * \param acct Compte - * \return Renvoi total solde - */ -function _print_lines($db,$result,$sql,$acct) -{ - global $langs, $bc, $nbline, $viewline, $user, $page; - - $var=true; - $total=0; - - $num = $db->num_rows($result); - $i = 0; $total = 0; $sep = 0; - - while ($i < $num) - { - $objp = $db->fetch_object($result); - $total = $total + $objp->amount; - $time = time(); - if ($i >= ($nbline - $viewline)) - { - $var=!$var; - - if ($objp->do > $time && !$sep) - { - $sep = 1 ; - print " "; - print "".price($total - $objp->amount).""; - print " "; - print ''; - } - - print ""; - print "".dolibarr_print_date($objp->do,"%d/%m/%y")."\n"; - print " ".dolibarr_print_date($objp->dv,"%d/%m/%y")."\n"; - print " ".$objp->fk_type." ".($objp->num_chq?$objp->num_chq:"")."\n"; - 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 ''; - - /* - * Ajout les liens - */ - $links = $acct->get_url($objp->rowid); - foreach($links as $key=>$val) - { - 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 { - print ''; - print $links[$key]['label']; - print ''; - } - } - print ''; - - if ($objp->amount < 0) - { - print "".price($objp->amount * -1)." \n"; - } - else - { - print "  ".price($objp->amount)."\n"; - } - - if ($action !='search') - { - if ($total >= 0) - { - print ' '.price($total).''; - } - else - { - print ' '.price($total).''; - } - } - else - { - print '-'; - } - - // Relevé rappro ou lien edition - if ($objp->rappro && $acct->type != 2) // Si non compte cash - { - print "  "; - print "num_releve&account=$acct->id\">$objp->num_releve"; - print ""; - } - else - { - if ($user->rights->banque->modifier) - { - print ''; - print ''; - print img_edit(); - print '  '; - print ''; - print img_delete(); - print ''; - } - else - { - print " "; - } - } - - print ""; - - } - - $i++; - } - - return $total; -} ?> diff --git a/htdocs/societe.class.php b/htdocs/societe.class.php index 4fa063ef07f..81bc4c8fdb4 100644 --- a/htdocs/societe.class.php +++ b/htdocs/societe.class.php @@ -1128,6 +1128,7 @@ class Societe * \brief Renvoie nom clicable (avec eventuellement le picto) * \param withpicto Inclut le picto dans le lien * \param option Sur quoi pointe le lien + * \param maxlen Longueur max libelle * \return string Chaine avec URL */ function getNomUrl($withpicto=0,$option='',$maxlen=0) diff --git a/mysql/migration/2.0.0-2.1.0.sql b/mysql/migration/2.0.0-2.1.0.sql index f00ed7f656c..814d934b2d2 100644 --- a/mysql/migration/2.0.0-2.1.0.sql +++ b/mysql/migration/2.0.0-2.1.0.sql @@ -242,7 +242,7 @@ alter table llx_bank_url drop index fk_bank_8; alter table llx_bank_url drop index fk_bank_9; ALTER TABLE llx_bank_url DROP INDEX uk_bank_url; -ALTER TABLE llx_bank_url ADD UNIQUE INDEX uk_bank_url (fk_bank,url_id,type); +ALTER TABLE llx_bank_url ADD UNIQUE INDEX uk_bank_url (fk_bank,type); create table llx_societe_adresse_livraison ( diff --git a/mysql/tables/llx_bank_url.key.sql b/mysql/tables/llx_bank_url.key.sql index 108ac6e86d8..1f0b7706ca2 100644 --- a/mysql/tables/llx_bank_url.key.sql +++ b/mysql/tables/llx_bank_url.key.sql @@ -1,5 +1,5 @@ -- =================================================================== --- Copyright (C) 2005-2006 Laurent Destailleur +-- Copyright (C) 2005-2007 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 @@ -21,6 +21,6 @@ -- =================================================================== -ALTER TABLE llx_bank_url ADD UNIQUE uk_bank_url (fk_bank,url_id,type); +ALTER TABLE llx_bank_url ADD UNIQUE INDEX uk_bank_url (fk_bank,type); --ALTER TABLE llx_bank_url ADD INDEX idx_bank_url_fk_bank (fk_bank); \ No newline at end of file