diff --git a/ChangeLog b/ChangeLog
index a8af70d7758bd4b2df1f05efaefe8a0556222905..2aa466a76dd5593ff64bbeb348666d1c859e1dda 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -45,6 +45,7 @@ For users:
 - New: Can filter on status for supplier order.
 - Fix: Project Task numbering customs rule works.
 - Fix: Add actions events not implemented.
+- New: Add filter date in bank writing list page 
 
 TODO
 - New: Predefined product and free product use same form.
diff --git a/htdocs/compta/bank/search.php b/htdocs/compta/bank/search.php
index a94e2fc5cd021e794fd43de6c632c6a8c64c05c2..20b5247ffd79a183b9e8330a644e70780f25a58c 100644
--- a/htdocs/compta/bank/search.php
+++ b/htdocs/compta/bank/search.php
@@ -1,9 +1,10 @@
 <?php
 /* Copyright (C) 2001-2002  Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2004-2008  Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copytight (C) 2005-2010  Regis Houssin        <regis.houssin@capnetworks.com>
- * Copytight (C) 2012       Vinícius Nogueira    <viniciusvgn@gmail.com>
- *
+ * Copyright (C) 2005-2010  Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2012       Vinícius Nogueira    <viniciusvgn@gmail.com>
+ * Copyright (C) 2014       Florian Henry    	 <florian.henry@open-cooncept.pro>
+ * 
  * 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 3 of the License, or
@@ -29,6 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
 require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
 require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
+require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php';
 
 $langs->load("banks");
 $langs->load("categories");
@@ -43,14 +45,20 @@ $credit=GETPOST("credit");
 $type=GETPOST("type");
 $account=GETPOST("account");
 $bid=GETPOST("bid","int");
+$search_dt_start = dol_mktime(0, 0, 0, GETPOST('search_start_dtmonth', 'int'), GETPOST('search_start_dtday', 'int'), GETPOST('search_start_dtyear', 'int'));
+$search_dt_end = dol_mktime(0, 0, 0, GETPOST('search_end_dtmonth', 'int'), GETPOST('search_end_dtday', 'int'), GETPOST('search_end_dtyear', 'int'));
 
 $param='';
-if ($description) $param.='&description='.$description;
-if ($type) $param.='&type='.$type;
-if ($debit) $param.='&debit='.$debit;
-if ($credit) $param.='&credit='.$credit;
-if ($account) $param.='&account='.$account;
-if ($bid)  $param.='&bid='.$bid;
+if (!empty($description)) $param.='&description='.$description;
+if (!empty($type)) $param.='&type='.$type;
+if (!empty($debit)) $param.='&debit='.$debit;
+if (!empty($credit)) $param.='&credit='.$credit;
+if (!empty($account)) $param.='&account='.$account;
+if (!empty($bid))  $param.='&bid='.$bid;
+if (dol_strlen($search_dt_start) > 0)
+	$param .= '&search_start_dtmonth=' . GETPOST('search_start_dtmonth', 'int') . '&search_start_dtday=' . GETPOST('search_start_dtday', 'int') . '&search_start_dtyear=' . GETPOST('search_start_dtyear', 'int');
+if (dol_strlen($search_dt_end) > 0)
+	$param .= '&search_end_dtmonth=' . GETPOST('search_end_dtmonth', 'int') . '&search_end_dtday=' . GETPOST('search_end_dtday', 'int') . '&search_end_dtyear=' . GETPOST('search_end_dtyear', 'int');
 
 $sortfield = GETPOST("sortfield",'alpha');
 $sortorder = GETPOST("sortorder",'alpha');
@@ -74,6 +82,7 @@ $bankaccountstatic=new Account($db);
 llxHeader();
 
 $form = new Form($db);
+$formother = new FormOther($db);
 
 if ($vline) $viewline = $vline;
 else $viewline = 50;
@@ -108,6 +117,13 @@ if (! empty($type))
 {
 	$sql.= " AND b.fk_type = '".$db->escape($type)."' ";
 }
+//Search period criteria
+if (dol_strlen($search_dt_start)>0) {
+	$sql .= " AND b.dateo >= '" . $db->idate($search_dt_start) . "'";
+}
+if (dol_strlen($search_dt_end)>0) {
+	$sql .= " AND b.dateo <= '" . $db->idate($search_dt_end) . "'";
+}
 // Search criteria amount
 $si=0;
 $debit = price2num(str_replace('-','',$debit));
@@ -128,6 +144,7 @@ $sql.= $db->order($sortfield,$sortorder);
 $sql.= $db->plimit($limit+1,$offset);
 //print $sql;
 
+dol_syslog('compta/bank/search.php:: sql='.$sql);
 $resql = $db->query($sql);
 if ($resql)
 {
@@ -147,6 +164,19 @@ if ($resql)
 		print_barre_liste($langs->trans("BankTransactions"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num);
 	}
 
+	print '<form method="post" action="search.php" name="search_form">';
+	
+	$moreforfilter .= $langs->trans('Period') . ' ' . $langs->trans('DateOperationShort') . ': ';
+	$moreforfilter .= $form->select_date($search_dt_start, 'search_start_dt', 0, 0, 1, "search_form", 1, 1, 1);
+	$moreforfilter .= $langs->trans('PeriodEndDate') . ':' . $form->select_date($search_dt_end, 'search_end_dt', 0, 0, 1, "search_form", 1, 1, 1);
+	
+	
+	if ($moreforfilter) {
+		print '<div class="liste_titre">';
+		print $moreforfilter;
+		print '</div>';
+	}
+	
 	print '<table class="liste" width="100%">';
 	print '<tr class="liste_titre">';
 	print_liste_field_titre($langs->trans('Ref'),$_SERVER['PHP_SELF'],'b.rowid','',$param,'',$sortfield,$sortorder);
@@ -161,7 +191,6 @@ if ($resql)
 	print '<td class="liste_titre" align="left"> &nbsp; '.$langs->trans("Account").'</td>';
 	print "</tr>\n";
 
-	print '<form method="post" action="search.php">';
 	print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
 	print '<tr class="liste_titre">';
 	print '<td class="liste_titre">&nbsp;</td>';
@@ -189,6 +218,8 @@ if ($resql)
 	print '</tr>';
 
 	// Loop on each record
+	$total_debit=0;
+	$total_credit=0;
 	while ($i < min($num,$limit))
 	{
 		$objp = $db->fetch_object($resql);
@@ -259,10 +290,12 @@ if ($resql)
 			if ($objp->amount < 0)
 			{
 				print "<td align=\"right\">".price($objp->amount * -1)."</td><td>&nbsp;</td>\n";
+				$total_debit+=$objp->amount;
 			}
 			else
 			{
 				print "<td>&nbsp;</td><td align=\"right\">".price($objp->amount)."</td>\n";
+				$total_credit+=$objp->amount;
 			}
 
 			// Bank account
@@ -275,6 +308,15 @@ if ($resql)
 		}
 		$i++;
 	}
+	if ($num>0) {
+		print '<tr  class="liste_total">';
+		print '<td>' . $langs->trans('Total') . '</td>';
+		print '<td colspan="6"></td>';
+		print '<td  align="right">' . price($total_debit * - 1) . '</td>';
+		print '<td  align="right">' . price($total_credit) . '</td>';
+		print '<td></td>';
+		print '</tr>';
+	}
 
 	print "</table>";
 
@@ -285,7 +327,7 @@ else
 	dol_print_error($db);
 }
 
-// Si acc�s issu d'une recherche et rien de trouv�
+// If no data to display after a search
 if ($_POST["action"] == "search" && ! $num)
 {
 	print $langs->trans("NoRecordFound");
diff --git a/htdocs/core/modules/project/pdf/doc_generic_project_odt.modules.php b/htdocs/core/modules/project/pdf/doc_generic_project_odt.modules.php
index 0e7ec535ac62ce9a4bb272881d9b6ad1e13b25bb..c8cf919742bc8f84ba50af83c6db3b308208df92 100644
--- a/htdocs/core/modules/project/pdf/doc_generic_project_odt.modules.php
+++ b/htdocs/core/modules/project/pdf/doc_generic_project_odt.modules.php
@@ -841,46 +841,56 @@ class doc_generic_project_odt extends ModelePDFProjects
 				'propal'=>array(
 				'title'=>"ListProposalsAssociatedProject",
 				'class'=>'Propal',
-				'test'=>$conf->propal->enabled),
+				'table'=>'propal',
+				'test'=>$conf->propal->enabled  && $user->rights->propale->lire),
 				'order'=>array(
 				'title'=>"ListOrdersAssociatedProject",
 				'class'=>'Commande',
-				'test'=>$conf->commande->enabled),
+				'table'=>'commande',
+				'test'=>$conf->commande->enabled  && $user->rights->commande->lire),
 				'invoice'=>array(
 				'title'=>"ListInvoicesAssociatedProject",
 				'class'=>'Facture',
-				'test'=>$conf->facture->enabled),
+				'table'=>'facture',
+				'test'=>$conf->facture->enabled && $user->rights->facture->lire),
 				'invoice_predefined'=>array(
 				'title'=>"ListPredefinedInvoicesAssociatedProject",
 				'class'=>'FactureRec',
-				'test'=>$conf->facture->enabled),
+				'table'=>'facture_rec',
+				'test'=>$conf->facture->enabled  && $user->rights->facture->lire),
 				'order_supplier'=>array(
 				'title'=>"ListSupplierOrdersAssociatedProject",
+				'table'=>'commande_fournisseur',
 				'class'=>'CommandeFournisseur',
-				'test'=>$conf->fournisseur->enabled),
+				'test'=>$conf->fournisseur->enabled && $user->rights->fournisseur->commande->lire),
 				'invoice_supplier'=>array(
 				'title'=>"ListSupplierInvoicesAssociatedProject",
+				'table'=>'facture_fourn',
 				'class'=>'FactureFournisseur',
-				'test'=>$conf->fournisseur->enabled),
+				'test'=>$conf->fournisseur->enabled  && $user->rights->fournisseur->facture->lire),
 				'contract'=>array(
 				'title'=>"ListContractAssociatedProject",
 				'class'=>'Contrat',
-				'test'=>$conf->contrat->enabled),
+				'table'=>'contrat',
+				'test'=>$conf->contrat->enabled && $user->rights->contrat->lire),
 				'intervention'=>array(
 				'title'=>"ListFichinterAssociatedProject",
 				'class'=>'Fichinter',
+				'table'=>'fichinter',
 				'disableamount'=>1,
-				'test'=>$conf->ficheinter->enabled),
+				'test'=>$conf->ficheinter->enabled && $user->rights->ficheinter->lire),
 				'trip'=>array(
 				'title'=>"ListTripAssociatedProject",
 				'class'=>'Deplacement',
+				'table'=>'deplacement',
 				'disableamount'=>1,
-				'test'=>$conf->deplacement->enabled),
+				'test'=>$conf->deplacement->enabled && $user->rights->deplacement->lire),
 				'agenda'=>array(
 				'title'=>"ListActionsAssociatedProject",
 				'class'=>'ActionComm',
+				'table'=>'actioncomm',
 				'disableamount'=>1,
-				'test'=>$conf->agenda->enabled)
+				'test'=>$conf->agenda->enabled && $user->rights->agenda->allactions->lire)
 				);
 
 				//Insert reference
@@ -891,11 +901,12 @@ class doc_generic_project_odt extends ModelePDFProjects
 					foreach ($listofreferent as $keyref => $valueref)
 					{
 						$title=$valueref['title'];
+						$tablename=$valueref['table'];
 						$classname=$valueref['class'];
 						$qualified=$valueref['test'];
 						if ($qualified)
 						{
-							$elementarray = $object->get_element_list($keyref);
+							$elementarray = $object->get_element_list($keyref, $tablename);
 							if (count($elementarray)>0 && is_array($elementarray))
 							{
 								$var=true;
diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang
index 6b7abb382ba5659b3d3c452734d76b2abd700f8f..fd17000a8e07905fd80da17bb18e45ae62355ce0 100644
--- a/htdocs/langs/en_US/members.lang
+++ b/htdocs/langs/en_US/members.lang
@@ -170,6 +170,8 @@ LastSubscriptionAmount=Last subscription amount
 MembersStatisticsByCountries=Members statistics by country
 MembersStatisticsByState=Members statistics by state/province
 MembersStatisticsByTown=Members statistics by town
+MembersStatisticsByRegion=Members statistics by region
+MemberByRegion=Members by region
 NbOfMembers=Number of members
 NoValidatedMemberYet=No validated members found
 MembersByCountryDesc=This screen show you statistics on members by countries. Graphic depends however on Google online graph service and is available only if an internet connection is is working.
diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php
index 46f70c7ca895a636b6ecd86febbaa7a906d8eee5..719c7c5f0349599a8d0a7600623eb3709204b1a7 100644
--- a/htdocs/projet/class/project.class.php
+++ b/htdocs/projet/class/project.class.php
@@ -389,33 +389,17 @@ class Project extends CommonObject
      * 	Return list of elements for type linked to project
      *
      * 	@param		string		$type		'propal','order','invoice','order_supplier','invoice_supplier'
+     * 	@param		string		$tablename	name of table associated of the type
      * 	@return		array					List of orders linked to project, <0 if error
      */
-    function get_element_list($type)
+    function get_element_list($type, $tablename)
     {
         $elements = array();
 
-        $sql = '';
-        if ($type == 'propal')
-            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "propal WHERE fk_projet=" . $this->id;
-        if ($type == 'order')
-            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "commande WHERE fk_projet=" . $this->id;
-        if ($type == 'invoice')
-            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "facture WHERE fk_projet=" . $this->id;
-        if ($type == 'invoice_predefined')
-            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "facture_rec WHERE fk_projet=" . $this->id;
-        if ($type == 'order_supplier')
-            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "commande_fournisseur WHERE fk_projet=" . $this->id;
-        if ($type == 'invoice_supplier')
-            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "facture_fourn WHERE fk_projet=" . $this->id;
-        if ($type == 'contract')
-            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "contrat WHERE fk_projet=" . $this->id;
-        if ($type == 'intervention')
-            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "fichinter WHERE fk_projet=" . $this->id;
-        if ($type == 'trip')
-            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "deplacement WHERE fk_projet=" . $this->id;
         if ($type == 'agenda')
             $sql = "SELECT id as rowid FROM " . MAIN_DB_PREFIX . "actioncomm WHERE fk_project=" . $this->id;
+        else
+            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . $tablename." WHERE fk_projet=" . $this->id;
         if (! $sql) return -1;
 
         //print $sql;
diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php
index 4266d0f745ee80a2050852ced80d583a80348238..fd36808ccdd4335cebefdc44d1682e6fe955f709 100644
--- a/htdocs/projet/element.php
+++ b/htdocs/projet/element.php
@@ -151,6 +151,7 @@ $listofreferent=array(
 'invoice'=>array(
 	'title'=>"ListInvoicesAssociatedProject",
 	'class'=>'Facture',
+	'margin'=>'add',
 	'table'=>'facture',
 	'test'=>$conf->facture->enabled && $user->rights->facture->lire),
 'invoice_predefined'=>array(
@@ -166,6 +167,7 @@ $listofreferent=array(
 'invoice_supplier'=>array(
 	'title'=>"ListSupplierInvoicesAssociatedProject",
 	'class'=>'FactureFournisseur',
+	'margin'=>'minus',
 	'table'=>'facture_fourn',
 	'test'=>$conf->fournisseur->enabled && $user->rights->fournisseur->facture->lire),
 'contract'=>array(
@@ -183,6 +185,7 @@ $listofreferent=array(
 	'title'=>"ListTripAssociatedProject",
 	'class'=>'Deplacement',
 	'table'=>'deplacement',
+	'margin'=>'minus',
 	'disableamount'=>1,
 	'test'=>$conf->deplacement->enabled && $user->rights->deplacement->lire),
 'agenda'=>array(
@@ -237,7 +240,7 @@ foreach ($listofreferent as $key => $value)
 		if (empty($value['disableamount'])) print '<td align="right" width="120">'.$langs->trans("AmountTTC").'</td>';
 		print '<td align="right" width="200">'.$langs->trans("Status").'</td>';
 		print '</tr>';
-		$elementarray = $project->get_element_list($key);
+		$elementarray = $project->get_element_list($key, $tablename);
 		if (count($elementarray)>0 && is_array($elementarray))
 		{
 			$var=true;
@@ -334,6 +337,74 @@ foreach ($listofreferent as $key => $value)
 	}
 }
 
+// Margin display of the project
+print_titre("Margin");
+print '<table class="noborder">';
+print '<tr class="liste_titre">';
+print '<td align="left" width="200">'.$langs->trans("Element").'</td>';
+print '<td align="right" width="100">'.$langs->trans("Number").'</td>';
+print '<td align="right" width="100">'.$langs->trans("AmountHT").'</td>';
+print '<td align="right" width="100">'.$langs->trans("AmountTTC").'</td>';
+print '</tr>';
+
+
+foreach ($listofreferent as $key => $value)
+{
+	$title=$value['title'];
+	$classname=$value['class'];
+	$tablename=$value['table'];
+	$qualified=$value['test'];
+	$margin = $value['margin'];
+	if (isset($margin))
+	{
+		$elementarray = $project->get_element_list($key, $tablename);
+		if (count($elementarray)>0 && is_array($elementarray))
+		{
+			$var=true;
+			$total_ht = 0;
+			$total_ttc = 0;
+			$num=count($elementarray);
+			for ($i = 0; $i < $num; $i++)
+			{
+				$element = new $classname($db);
+				$element->fetch($elementarray[$i]);
+				$element->fetch_thirdparty();
+				//print $classname;
+
+				$total_ht = $total_ht + $element->total_ht;
+				$total_ttc = $total_ttc + $element->total_ttc;
+			}
+
+			print '<tr >';
+			print '<td align="left" >'.$classname.'</td>';
+			print '<td align="right">'.$i.'</td>';
+			print '<td align="right">'.price($total_ht).'</td>';
+			print '<td align="right">'.price($total_ttc).'</td>';
+			print '</tr>';
+			if ($margin=="add")
+			{
+				$margin_ht+= $total_ht;
+				$margin_ttc+= $total_ttc;
+			}
+			else
+			{
+				$margin_ht-= $total_ht;
+				$margin_ttc-= $total_ttc;
+			}
+		}
+
+	}
+}
+// and the margin amount total
+print '<tr class="liste_total">';
+print '<td align="right" colspan=2 >'.$langs->trans("Total").'</td>';
+print '<td align="right" >'.price($margin_ht).'</td>';
+print '<td align="right" >'.price($margin_ttc).'</td>';
+print '</tr>';
+
+print "</table>";
+
+
 llxFooter();
 
 $db->close();
diff --git a/htdocs/webservices/server_thirdparty.php b/htdocs/webservices/server_thirdparty.php
index ccc05902dcac279a86d04542676de9d99e87028a..6010306a98a9d60e00605418ff3a517be338b21c 100644
--- a/htdocs/webservices/server_thirdparty.php
+++ b/htdocs/webservices/server_thirdparty.php
@@ -290,7 +290,7 @@ function getThirdParty($authentication,$id='',$ref='',$ref_ext='')
 			$result=$thirdparty->fetch($id,$ref,$ref_ext);
 			if ($result > 0)
 			{
-				
+
 				$thirdparty_result_fields=array(
 				    	'id' => $thirdparty->id,
 			   			'ref' => $thirdparty->name,
@@ -328,16 +328,16 @@ function getThirdParty($authentication,$id='',$ref='',$ref_ext='')
 				        'vat_number' => $thirdparty->tva_intra,
 						'note_private' => $thirdparty->note_private,
 						'note_public' => $thirdparty->note_public);
-				
+
 				//Retreive all extrafield for thirdsparty
 				// fetch optionals attributes and labels
 				$extrafields=new ExtraFields($db);
 				$extralabels=$extrafields->fetch_name_optionals_label('societe',true);
 				//Get extrafield values
 				$thirdparty->fetch_optionals($thirdparty->id,$extralabels);
-				
+
 				foreach($extrafields->attribute_label as $key=>$label)
-				{				
+				{
 					$thirdparty_result_fields=array_merge($thirdparty_result_fields,array('options_'.$key => $thirdparty->array_options['options_'.$key]));
 				}
 
@@ -444,7 +444,7 @@ function createThirdParty($authentication,$thirdparty)
 
         $newobject->canvas=$thirdparty['canvas'];
         $newobject->particulier=$thirdparty['individual'];
-        
+
         //Retreive all extrafield for thirdsparty
         // fetch optionals attributes and labels
         $extrafields=new ExtraFields($db);
@@ -520,16 +520,16 @@ function updateThirdParty($authentication,$thirdparty)
 	if (! $error)
 	{
 		$objectfound=false;
-		
+
 		include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
 
 		$object=new Societe($db);
 		$result=$object->fetch($thirdparty['id']);
-		
+
 		if (!empty($object->id)) {
-			 
+
 			$objectfound=true;
-			
+
 			$object->ref=$thirdparty['ref'];
 			$object->name=$thirdparty['ref'];
 			$object->ref_ext=$thirdparty['ref_ext'];
@@ -546,12 +546,12 @@ function updateThirdParty($authentication,$thirdparty)
 			$object->address=$thirdparty['address'];
 			$object->zip=$thirdparty['zip'];
 			$object->town=$thirdparty['town'];
-	
+
 			$object->country_id=$thirdparty['country_id'];
 			if ($thirdparty['country_code']) $object->country_id=getCountry($thirdparty['country_code'],3);
 			$object->province_id=$thirdparty['province_id'];
 			//if ($thirdparty['province_code']) $newobject->province_code=getCountry($thirdparty['province_code'],3);
-	
+
 			$object->phone=$thirdparty['phone'];
 			$object->fax=$thirdparty['fax'];
 			$object->email=$thirdparty['email'];
@@ -562,15 +562,15 @@ function updateThirdParty($authentication,$thirdparty)
 			$object->idprof4=$thirdparty['profid4'];
 			$object->idprof5=$thirdparty['profid5'];
 			$object->idprof6=$thirdparty['profid6'];
-	
+
 			$object->capital=$thirdparty['capital'];
-	
+
 			$object->barcode=$thirdparty['barcode'];
 			$object->tva_assuj=$thirdparty['vat_used'];
 			$object->tva_intra=$thirdparty['vat_number'];
-	
+
 			$object->canvas=$thirdparty['canvas'];
-	
+
 			//Retreive all extrafield for thirdsparty
 			// fetch optionals attributes and labels
 			$extrafields=new ExtraFields($db);
@@ -580,9 +580,9 @@ function updateThirdParty($authentication,$thirdparty)
 				$key='options_'.$key;
 				$object->array_options[$key]=$thirdparty[$key];
 			}
-	
+
 			$db->begin();
-	
+
 			$result=$object->update($thirdparty['id'],$fuser);
 			if ($result <= 0) {
 				$error++;
@@ -640,6 +640,7 @@ function getListOfThirdParties($authentication,$filterthirdparty)
     // Init and check authentication
     $objectresp=array();
     $arraythirdparties=array();
+
     $errorcode='';$errorlabel='';
     $error=0;
     $fuser=check_authentication($authentication,$error,$errorcode,$errorlabel);
@@ -647,9 +648,11 @@ function getListOfThirdParties($authentication,$filterthirdparty)
 
     if (! $error)
     {
-        $sql ="SELECT s.rowid, s.nom as ref, s.ref_ext, s.address, s.zip, s.town, p.libelle as country, s.phone, s.fax, s.url";
+        $sql ="SELECT s.rowid as socRowid, s.nom as ref, s.ref_ext, s.address, s.zip, s.town, p.libelle as country, s.phone, s.fax, s.url, extra.*";
         $sql.=" FROM ".MAIN_DB_PREFIX."societe as s";
         $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_pays as p ON s.fk_pays = p.rowid';
+        $sql.=" LEFT JOIN ".MAIN_DB_PREFIX."societe_extrafields as extra ON s.rowid=fk_object";
+
         $sql.=" WHERE entity=".$conf->entity;
         foreach($filterthirdparty as $key => $val)
         {
@@ -658,6 +661,11 @@ function getListOfThirdParties($authentication,$filterthirdparty)
             if ($key == 'category'   && $val != '')  $sql.=" AND s.rowid IN (SELECT fk_societe FROM ".MAIN_DB_PREFIX."categorie_societe WHERE fk_categorie=".$db->escape($val).") ";
         }
         dol_syslog("Function: getListOfThirdParties sql=".$sql);
+
+        $extrafields=new ExtraFields($db);
+        $extralabels=$extrafields->fetch_name_optionals_label('societe',true);
+
+
         $resql=$db->query($sql);
         if ($resql)
         {
@@ -666,18 +674,25 @@ function getListOfThirdParties($authentication,$filterthirdparty)
             $i=0;
             while ($i < $num)
             {
+                $extrafieldsOptions=array();
                 $obj=$db->fetch_object($resql);
-                $arraythirdparties[]=array('id'=>$obj->rowid,
-                			'ref'=>$obj->ref,
-                			'ref_ext'=>$obj->ref_ext,
-                			'adress'=>$obj->adress,
-			                'zip'=>$obj->zip,
-			                'town'=>$obj->town,
-			                'country'=>$obj->country,
-			                'phone'=>$obj->phone,
-			                'fax'=>$obj->fax,
-			                'url'=>$obj->url
+                foreach($extrafields->attribute_label as $key=>$label)
+                {
+                    $extrafieldsOptions['options_'.$key] = $obj->{$key};
+                }
+                $arraythirdparties[]=array('id'=>$obj->socRowid,
+                    'ref'=>$obj->ref,
+                    'ref_ext'=>$obj->ref_ext,
+                    'adress'=>$obj->adress,
+                    'zip'=>$obj->zip,
+                    'town'=>$obj->town,
+                    'country'=>$obj->country,
+                    'phone'=>$obj->phone,
+                    'fax'=>$obj->fax,
+                    'url'=>$obj->url
                 );
+                $arraythirdparties[$i] = array_merge($arraythirdparties[$i],$extrafieldsOptions);
+
                 $i++;
             }
         }