diff --git a/htdocs/compta/tva/reglement.php b/htdocs/compta/tva/reglement.php
index a35c03076cb2f744215a6bf84e6da40c393a8bd7..6183207e11516e625c24a38ddc3df7561dbfc634 100644
--- a/htdocs/compta/tva/reglement.php
+++ b/htdocs/compta/tva/reglement.php
@@ -35,7 +35,33 @@ $socid = isset($_GET["socid"])?$_GET["socid"]:'';
 if ($user->societe_id) $socid=$user->societe_id;
 $result = restrictedArea($user, 'tax', '', '', 'charges');
 
-
+$sortfield = GETPOST("sortfield",'alpha');
+$sortorder = GETPOST("sortorder",'alpha');
+$page = GETPOST("page",'int');
+if ($page == -1) { $page = 0; }
+$offset = $conf->liste_limit * $page;
+$pageprev = $page - 1;
+$pagenext = $page + 1;
+$limit = $conf->liste_limit;
+if (! $sortfield) $sortfield="t.datev";
+if (! $sortorder) $sortorder="DESC";
+
+$filtre=$_GET["filtre"];
+
+if (empty($_REQUEST['typeid']))
+{
+	$newfiltre=str_replace('filtre=','',$filtre);
+	$filterarray=explode('-',$newfiltre);
+	foreach($filterarray as $val)
+	{
+		$part=explode(':',$val);
+		if ($part[0] == 't.fk_typepayment') $typeid=$part[1];
+	}
+}
+else
+{
+	$typeid=$_REQUEST['typeid'];
+}
 
 /*
  * View
@@ -43,15 +69,25 @@ $result = restrictedArea($user, 'tax', '', '', 'charges');
 
 llxHeader();
 
+$form = new Form($db);
 $tva_static = new Tva($db);
 
-print_fiche_titre($langs->trans("VATPayments"));
-
-$sql = "SELECT t.rowid, t.amount, t.label, t.datev as dm, t.num_payment, pst.code as payment_code";
+$sql = "SELECT t.rowid, t.amount, t.label, t.datev as dm, t.fk_typepayment as type, t.num_payment, pst.code as payment_code";
 $sql.= " FROM ".MAIN_DB_PREFIX."tva as t";
 $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as pst ON t.fk_typepayment = pst.id";
 $sql.= " WHERE t.entity = ".$conf->entity;
-$sql.= " ORDER BY dm DESC";
+if (GETPOST("search_label")) $sql.=" AND t.label LIKE '%".$db->escape(GETPOST("search_label"))."%'";
+if (GETPOST("search_amount")) $sql.=" AND t.amount = ".price2num(GETPOST("search_amount"));
+if ($filtre) {
+    $filtre=str_replace(":","=",$filtre);
+    $sql .= " AND ".$filtre;
+}
+if ($typeid) {
+    $sql .= " AND t.fk_typepayment=".$typeid;
+}
+$sql.= " GROUP BY t.rowid, t.fk_typepayment, t.amount, t.datev, t.label";
+$sql.= $db->order($sortfield,$sortorder);
+$sql.= $db->plimit($limit+1,$offset);
 
 $result = $db->query($sql);
 if ($result)
@@ -59,20 +95,55 @@ if ($result)
     $num = $db->num_rows($result);
     $i = 0;
     $total = 0 ;
+	$var=true;
+
+	$param='';
+	if ($typeid) $param.='&typeid='.$typeid;
+	
+	print_barre_liste($langs->trans("VATPayments"),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$totalnboflines);
+
+	dol_htmloutput_mesg($mesg);
+	
+	print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">';
 
     print '<table class="noborder" width="100%">';
     print '<tr class="liste_titre">';
-    print '<td class="nowrap" align="left">'.$langs->trans("Ref").'</td>';
-    print "<td>".$langs->trans("Label")."</td>";
-    print '<td class="nowrap" align="left">'.$langs->trans("DatePayment").'</td>';
-	print '<td class="nowrap" align="left">'.$langs->trans("Type").'</td>';
-	print "<td align=\"right\">".$langs->trans("PayedByThisPayment")."</td>";
-    print "</tr>\n";
-    $var=1;
-    while ($i < $num)
+		print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"t.rowid","",$param,"",$sortfield,$sortorder);
+		print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"t.label","",$param,'align="left"',$sortfield,$sortorder);
+		print_liste_field_titre($langs->trans("DatePayment"),$_SERVER["PHP_SELF"],"dm","",$param,'align="left"',$sortfield,$sortorder);
+		print_liste_field_titre($langs->trans("Type"),$_SERVER["PHP_SELF"],"type","",$param,'align="left"',$sortfield,$sortorder);
+		print_liste_field_titre($langs->trans("PayedByThisPayment"),$_SERVER["PHP_SELF"],"t.amount","",$param,'align="right"',$sortfield,$sortorder);
+		print_liste_field_titre("");
+	print "</tr>\n";
+	
+	print '<tr class="liste_titre">';
+	print '<td class="liste_titre">&nbsp;</td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="14" name="search_label" value="'.GETPOST("search_label").'"></td>';
+	print '<td class="liste_titre">&nbsp;</td>';
+	// Type
+	print '<td class="liste_titre" align="left">';
+	$form->select_types_paiements($typeid,'typeid','',0,0,1,16);
+	print '</td>';
+	print '<td class="liste_titre" align="right"><input name="search_amount" class="flat" type="text" size="8" value="'.GETPOST("search_amount").'"></td>';
+	print '<td class="liste_titre" align="right">';
+	print '<input type="image" class="liste_titre" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" name="button_search" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
+	print '</td>';
+	print "</tr>\n";
+    
+	while ($i < min($num,$limit))
     {
         $obj = $db->fetch_object($result);
         $var=!$var;
+		
+		if ($obj->payment_code <> '')
+		{
+			$type = '<td>'.$langs->trans("PaymentTypeShort".$obj->payment_code).' '.$obj->num_payment.'</td>';  
+		}
+		else
+		{
+			$type = '<td>&nbsp;</td>';
+		}
+		
         print "<tr ".$bc[$var].">";
 
 		$tva_static->id=$obj->rowid;
@@ -81,18 +152,23 @@ if ($result)
         print "<td>".dol_trunc($obj->label,40)."</td>\n";
         print '<td align="left">'.dol_print_date($db->jdate($obj->dm),'day')."</td>\n";
 		// Type
-		print '<td>'.$langs->trans("PaymentTypeShort".$obj->payment_code).' '.$obj->num_payment.'</td>';
+		print $type;
 		// Amount
         $total = $total + $obj->amount;
 		print "<td align=\"right\">".price($obj->amount)."</td>";
+		print "<td>&nbsp;</td>";
         print "</tr>\n";
 
         $i++;
     }
     print '<tr class="liste_total"><td colspan="4">'.$langs->trans("Total").'</td>';
-    print "<td align=\"right\"><b>".price($total)."</b></td></tr>";
+    print "<td align=\"right\"><b>".price($total)."</b></td>";
+	print "<td>&nbsp;</td></tr>"; 
 
     print "</table>";
+	
+	print '</form>';
+	
     $db->free($result);
 }
 else