From 543630e4876e835122a081dd5f522134e0c6a0fb Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Thu, 8 Jun 2017 12:21:41 +0200
Subject: [PATCH] Fix missing count of nb of columns into lists

---
 htdocs/contact/list.php               |  20 ++++-
 htdocs/core/lib/functions.lib.php     |   2 +-
 htdocs/product/list.php               |  82 +++++++++++++-------
 htdocs/projet/card.php                |  33 +++++---
 htdocs/projet/class/project.class.php |  14 ++++
 htdocs/projet/list.php                |  67 ++++++++--------
 htdocs/resource/list.php              | 105 +++++++++++++-------------
 htdocs/societe/list.php               |  32 +++++++-
 htdocs/theme/eldy/style.css.php       |   2 +-
 htdocs/theme/md/style.css.php         |   2 +-
 htdocs/user/index.php                 |  22 +++++-
 11 files changed, 248 insertions(+), 133 deletions(-)

diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php
index 2d46b91f922..ad71eb3786f 100644
--- a/htdocs/contact/list.php
+++ b/htdocs/contact/list.php
@@ -682,6 +682,7 @@ print "</tr>\n";
 
 
 $i = 0;
+$totalarray=array();
 while ($i < min($num,$limit))
 {
     $obj = $db->fetch_object($result);
@@ -706,56 +707,67 @@ while ($i < min($num,$limit))
         print '<td valign="middle">';
         print $contactstatic->getNomUrl(1,'',0);
         print '</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
 	// Firstname
     if (! empty($arrayfields['p.firstname']['checked']))
     {
         print '<td>'.$obj->firstname.'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
 	// Zip
     if (! empty($arrayfields['p.zip']['checked']))
     {
         print '<td>'.$obj->zip.'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
 	// Town
     if (! empty($arrayfields['p.town']['checked']))
     {
         print '<td>'.$obj->town.'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
     // Function
     if (! empty($arrayfields['p.poste']['checked']))
     {
         print '<td>'.dol_trunc($obj->poste,20).'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
     // Phone
     if (! empty($arrayfields['p.phone']['checked']))
     {
         print '<td>'.dol_print_phone($obj->phone_pro,$obj->country_code,$obj->rowid,$obj->socid,'AC_TEL').'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
     // Phone perso
     if (! empty($arrayfields['p.phone_perso']['checked']))
     {
         print '<td>'.dol_print_phone($obj->phone_perso,$obj->country_code,$obj->rowid,$obj->socid,'AC_TEL').'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
     // Phone mobile
     if (! empty($arrayfields['p.phone_mobile']['checked']))
     {
         print '<td>'.dol_print_phone($obj->phone_mobile,$obj->country_code,$obj->rowid,$obj->socid,'AC_TEL').'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
     // Fax
     if (! empty($arrayfields['p.fax']['checked']))
     {
         print '<td>'.dol_print_phone($obj->fax,$obj->country_code,$obj->rowid,$obj->socid,'AC_TEL').'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
     // EMail
     if (! empty($arrayfields['p.email']['checked']))
     {
         print '<td>'.dol_print_email($obj->email,$obj->rowid,$obj->socid,'AC_EMAIL',18).'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
     // Skype
     if (! empty($arrayfields['p.skype']['checked']))
     {
         if (! empty($conf->skype->enabled)) { print '<td>'.dol_print_skype($obj->skype,$obj->rowid,$obj->socid,'AC_SKYPE',18).'</td>'; }
+	    if (! $i) $totalarray['nbfield']++;
     }
     // Company
     if (! empty($arrayfields['p.thirdparty']['checked']))
@@ -770,12 +782,14 @@ while ($i < min($num,$limit))
         else
             print '&nbsp;';
         print '</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
 
     // Private/Public
     if (! empty($arrayfields['p.priv']['checked']))
     {
 	    print '<td align="center">'.$contactstatic->LibPubPriv($obj->priv).'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
 
 	// Extra fields
@@ -792,6 +806,7 @@ while ($i < min($num,$limit))
 				$tmpkey='options_'.$key;
 				print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1);
 				print '</td>';
+	            if (! $i) $totalarray['nbfield']++;
 			}
 	   }
 	}
@@ -805,6 +820,7 @@ while ($i < min($num,$limit))
         print '<td align="center">';
         print dol_print_date($db->jdate($obj->date_creation), 'dayhour');
         print '</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
     // Date modification
     if (! empty($arrayfields['p.tms']['checked']))
@@ -812,11 +828,13 @@ while ($i < min($num,$limit))
         print '<td align="center">';
         print dol_print_date($db->jdate($obj->date_update), 'dayhour');
         print '</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
     // Status
     if (! empty($arrayfields['p.statut']['checked']))
     {
         print '<td align="center">'.$contactstatic->getLibStatut(3).'</td>';
+	    if (! $i) $totalarray['nbfield']++;
     }
 
    // Action column
@@ -829,7 +847,7 @@ while ($i < min($num,$limit))
     }
     print '</td>';
     if (! $i) $totalarray['nbfield']++;
-    
+
     print "</tr>\n";
     $i++;
 }
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 5113c9f1d96..92cb35e02f5 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -3692,7 +3692,7 @@ function vatrate($rate, $addpercent=false, $info_bits=0, $usestarfornpr=0)
  *		@param	float		$amount			Amount to format
  *		@param	integer		$form			Type of format, HTML or not (not by default)
  *		@param	Translate	$outlangs		Object langs for output
- *		@param	int			$trunc			1=Truncate if there is too much decimals (default), 0=Does not truncate. Deprecated because amount are rounded (to unit or total amount accurancy) before inserted into database or after a computation, so this parameter should be useless.
+ *		@param	int			$trunc			1=Truncate if there is more decimals than MAIN_MAX_DECIMALS_SHOWN (default), 0=Does not truncate. Deprecated because amount are rounded (to unit or total amount accurancy) before inserted into database or after a computation, so this parameter should be useless.
  *		@param	int			$rounding		Minimum number of decimal to show. If 0, no change, if -1, we use min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOTAL)
  *		@param	int			$forcerounding	Force the number of decimal to forcerounding decimal (-1=do not force)
  *		@param	string		$currency_code	To add currency symbol (''=add nothing, 'auto'=Use default currency, 'XXX'=add currency symbols for XXX currency)
diff --git a/htdocs/product/list.php b/htdocs/product/list.php
index 2b3657070e4..2afa8438e73 100644
--- a/htdocs/product/list.php
+++ b/htdocs/product/list.php
@@ -179,7 +179,7 @@ $arrayfields=array(
 // Extra fields
 if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
 {
-   foreach($extrafields->attribute_label as $key => $val) 
+   foreach($extrafields->attribute_label as $key => $val)
    {
        $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>$extrafields->attribute_list[$key], 'position'=>$extrafields->attribute_pos[$key]);
    }
@@ -219,16 +219,16 @@ if (empty($reshook))
     	$search_accountancy_code_buy='';
     	$search_array_options=array();
     }
-    
+
     // Mass actions
     $objectclass='Product';
     if ((string) $search_type == '1') { $objectlabel='Services'; }
     if ((string) $search_type == '0') { $objectlabel='Products'; }
-    
+
     $permtoread = $user->rights->produit->lire;
     $permtodelete = $user->rights->produit->supprimer;
     $uploaddir = $conf->product->dir_output;
-    include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';    
+    include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
 }
 
 
@@ -324,7 +324,7 @@ else
 	    $typ=$extrafields->attribute_type[$tmpkey];
 	    $mode=0;
 	    if (in_array($typ, array('int','double'))) $mode=1;    // Search on a numeric
-	    if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) 
+	    if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit)))
 	    {
 	        $sql .= natural_search('ef.'.$tmpkey, $crit, $mode);
 	    }
@@ -361,7 +361,7 @@ else
     	$num = $db->num_rows($resql);
 
     	$arrayofselected=is_array($toselect)?$toselect:array();
-    	 
+
     	if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $sall)
     	{
     	    $obj = $db->fetch_object($resql);
@@ -415,8 +415,8 @@ else
 	        $crit=$val;
 	        $tmpkey=preg_replace('/search_options_/','',$key);
 	        if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val);
-	    } 	
-		
+	    }
+
 	    // List of mass actions available
 	    $arrayofmassactions =  array(
 	        //'presend'=>$langs->trans("SendByMail"),
@@ -425,7 +425,7 @@ else
 	    if ($user->rights->produit->supprimer) $arrayofmassactions['delete']=$langs->trans("Delete");
 	    if ($massaction == 'presend' || $massaction == 'createbills') $arrayofmassactions=array();
 	    $massactionbutton=$form->selectMassAction('', $arrayofmassactions);
-	     
+
 		print '<form action="'.$_SERVER["PHP_SELF"].'" method="post" name="formulaire">';
         if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
 		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@@ -473,7 +473,7 @@ else
                 foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val);
                 print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall);
             }
-            
+
     		// Filter on categories
     	 	$moreforfilter='';
     		if (! empty($conf->categorie->enabled))
@@ -505,10 +505,10 @@ else
 			$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
             $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
             if ($massactionbutton) $selectedfields.=$form->showCheckAddButtons('checkforselect', 1);
-            
+
             print '<div class="div-table-responsive">';
             print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
-    		
+
     		// Lines with input filters
     		print '<tr class="liste_titre_filter">';
     		if (! empty($arrayfields['p.ref']['checked']))
@@ -591,7 +591,7 @@ else
     		// Extra fields
 			if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
 			{
-			   foreach($extrafields->attribute_label as $key => $val) 
+			   foreach($extrafields->attribute_label as $key => $val)
 			   {
 					if (! empty($arrayfields["ef.".$key]['checked'])) print '<td class="liste_titre"></td>';
 			   }
@@ -668,12 +668,13 @@ else
     		if (! empty($arrayfields['p.tobuy']['checked']))  print_liste_field_titre($langs->trans("Status").' ('.$langs->trans("Buy").')',$_SERVER["PHP_SELF"],"p.tobuy","",$param,'align="right"',$sortfield,$sortorder);
     		print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ');
     		print "</tr>\n";
-    		
-    		
+
+
     		$product_static=new Product($db);
     		$product_fourn =new ProductFournisseur($db);
 
     	    $i = 0;
+    	    $totalarray=array();
     		while ($i < min($num,$limit))
     		{
     			$obj = $db->fetch_object($resql);
@@ -721,6 +722,7 @@ else
 	    			print '<td class="nowrap">';
 	    			print $product_static->getNomUrl(1,'',24);
 	    			print "</td>\n";
+		            if (! $i) $totalarray['nbfield']++;
 			    }
        			// Ref supplier
 			    if (! empty($arrayfields['pfp.ref_fourn']['checked']))
@@ -728,24 +730,28 @@ else
 	    			print '<td class="nowrap">';
 	    			print $product_static->getNomUrl(1,'',24);
 	    			print "</td>\n";
+		            if (! $i) $totalarray['nbfield']++;
 			    }
     			// Label
 			    if (! empty($arrayfields['p.label']['checked']))
 			    {
 			    	print '<td>'.dol_trunc($obj->label,40).'</td>';
+		            if (! $i) $totalarray['nbfield']++;
 			    }
-			    
+
     		    // Type
 			    if (! empty($arrayfields['p.fk_product_type']['checked']))
 			    {
 			    	print '<td>'.$obj->fk_product_type.'</td>';
+		            if (! $i) $totalarray['nbfield']++;
 			    }
-			    
+
 			    // Barcode
 			    if (! empty($arrayfields['p.barcode']['checked']))
 			    {
     				print '<td>'.$obj->barcode.'</td>';
-    			}
+		            if (! $i) $totalarray['nbfield']++;
+			    }
 
     			// Duration
  			    if (! empty($arrayfields['p.duration']['checked']))
@@ -761,6 +767,7 @@ else
 	    				else print $obj->duration;
     				}
     				print '</td>';
+		            if (! $i) $totalarray['nbfield']++;
     			}
 
     			// Sell price
@@ -773,6 +780,7 @@ else
         				else print price($obj->price).' '.$langs->trans("HT");
     			    }
         			print '</td>';
+		            if (! $i) $totalarray['nbfield']++;
     			}
 
     			// Better buy price
@@ -796,6 +804,7 @@ else
     					}
         			}
         			print '</td>';
+		            if (! $i) $totalarray['nbfield']++;
     			}
 
     		    // Limit alert
@@ -807,6 +816,7 @@ else
                         print $obj->seuil_stock_alerte;
     				}
     				print '</td>';
+		            if (! $i) $totalarray['nbfield']++;
         		}
     			// Desired stock
 		        if (! empty($arrayfields['p.desiredstock']['checked']))
@@ -817,6 +827,7 @@ else
                         print $obj->desiredstock;
     				}
     				print '</td>';
+		            if (! $i) $totalarray['nbfield']++;
         		}
 				// Stock
 		        if (! empty($arrayfields['p.stock']['checked']))
@@ -828,7 +839,8 @@ else
       					print $product_static->stock_reel;
     				}
     				print '</td>';
-    			}
+		            if (! $i) $totalarray['nbfield']++;
+        		}
     			// Stock
 		        if (! empty($arrayfields['stock_virtual']['checked']))
         		{
@@ -839,24 +851,34 @@ else
       					print $product_static->stock_theorique;
     				}
     				print '</td>';
-    			}
+		            if (! $i) $totalarray['nbfield']++;
+        		}
     			// Lot/Serial
 		        if (! empty($arrayfields['p.tobatch']['checked']))
         		{
                     print '<td align="center">';
     				print yn($obj->tobatch);
     				print '</td>';
+		            if (! $i) $totalarray['nbfield']++;
         		}
     			// Accountancy code sell
-		        if (! empty($arrayfields['p.accountancy_code_sell']['checked'])) print '<td>'.$obj->accountancy_code_sell.'</td>';
+		        if (! empty($arrayfields['p.accountancy_code_sell']['checked']))
+		        {
+		            print '<td>'.$obj->accountancy_code_sell.'</td>';
+		            if (! $i) $totalarray['nbfield']++;
+		        }
     			// Accountancy code sell
-		        if (! empty($arrayfields['p.accountancy_code_buy']['checked'])) print '<td>'.$obj->accountancy_code_buy.'</td>';
+		        if (! empty($arrayfields['p.accountancy_code_buy']['checked']))
+		        {
+		            print '<td>'.$obj->accountancy_code_buy.'</td>';
+		            if (! $i) $totalarray['nbfield']++;
+		        }
 		        // Extra fields
 				if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
 				{
-				   foreach($extrafields->attribute_label as $key => $val) 
+				   foreach($extrafields->attribute_label as $key => $val)
 				   {
-						if (! empty($arrayfields["ef.".$key]['checked'])) 
+						if (! empty($arrayfields["ef.".$key]['checked']))
 						{
 							print '<td';
 							$align=$extrafields->getAlignFlag($key);
@@ -865,6 +887,7 @@ else
 							$tmpkey='options_'.$key;
 							print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1);
 							print '</td>';
+		                    if (! $i) $totalarray['nbfield']++;
 						}
 				   }
 				}
@@ -878,6 +901,7 @@ else
 		            print '<td align="center">';
 		            print dol_print_date($obj->date_creation, 'dayhour');
 		            print '</td>';
+		            if (! $i) $totalarray['nbfield']++;
 		        }
 		        // Date modification
 		        if (! empty($arrayfields['p.tms']['checked']))
@@ -885,8 +909,9 @@ else
 		            print '<td align="center">';
 		            print dol_print_date($obj->date_update, 'dayhour');
 		            print '</td>';
-		        }    			
-    			
+		            if (! $i) $totalarray['nbfield']++;
+		        }
+
                 // Status (to sell)
 		        if (! empty($arrayfields['p.tosell']['checked']))
         		{
@@ -897,6 +922,7 @@ else
 	                    print $product_static->LibStatut($obj->tosell,5,0);
 	                }
 	                print '</td>';
+		            if (! $i) $totalarray['nbfield']++;
         		}
                 // Status (to buy)
 		        if (! empty($arrayfields['p.tobuy']['checked']))
@@ -908,6 +934,7 @@ else
 	                    print $product_static->LibStatut($obj->tobuy,5,1);
 	                }
 	                print '</td>';
+		            if (! $i) $totalarray['nbfield']++;
         		}
         		// Action
         		print '<td class="nowrap" align="center">';
@@ -918,11 +945,12 @@ else
         		    print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected?' checked="checked"':'').'>';
         		}
         		print '</td>';
+        		if (! $i) $totalarray['nbfield']++;
 
                 print "</tr>\n";
     			$i++;
     		}
-    		
+
     		$db->free($resql);
 
     		print "</table>";
diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php
index 0b45a0d0696..174d93f4aef 100644
--- a/htdocs/projet/card.php
+++ b/htdocs/projet/card.php
@@ -41,6 +41,7 @@ $ref=GETPOST('ref','alpha');
 $action=GETPOST('action','alpha');
 $backtopage=GETPOST('backtopage','alpha');
 $cancel=GETPOST('cancel','alpha');
+$confirm=GETPOST('confirm','aZ09');
 $status=GETPOST('status','int');
 $opp_status=GETPOST('opp_status','int');
 $opp_percent=price2num(GETPOST('opp_percent','alpha'));
@@ -68,7 +69,7 @@ if ($id > 0 || ! empty($ref))
 }
 
 // Security check
-$socid=GETPOST('socid');
+$socid=GETPOST('socid','int');
 //if ($user->societe_id > 0) $socid = $user->societe_id;    // For external user, no check is done on company because readability is managed by public status of project and assignement.
 $result = restrictedArea($user, 'projet', $object->id,'projet&project');
 
@@ -135,6 +136,12 @@ if (empty($reshook))
 	        setEventMessages($langs->trans("ErrorOppStatusRequiredIfAmount"), null, 'errors');
 	    }
 
+	    // Create with status validated immediatly
+	    if (! empty($conf->global->PROJECT_CREATE_NO_DRAFT))
+	    {
+	        $status=Project::STATUS_VALIDATED;
+	    }
+
 	    if (! $error)
 	    {
 	        $error=0;
@@ -148,10 +155,10 @@ if (empty($reshook))
 	        $object->public          = GETPOST('public','alpha');
 	        $object->opp_amount      = price2num(GETPOST('opp_amount'));
 	        $object->budget_amount   = price2num(GETPOST('budget_amount'));
-	        $object->datec=dol_now();
-	        $object->date_start=$date_start;
-	        $object->date_end=$date_end;
-	        $object->statuts         = $status;
+	        $object->datec           = dol_now();
+	        $object->date_start      = $date_start;
+	        $object->date_end        = $date_end;
+	        $object->statut          = $status;
 	        $object->opp_status      = $opp_status;
 	        $object->opp_percent     = $opp_percent;
 
@@ -365,7 +372,7 @@ if (empty($reshook))
 	}
 
 
-	if ($action == 'confirm_validate' && GETPOST('confirm') == 'yes')
+	if ($action == 'confirm_validate' && $confirm == 'yes')
 	{
 	    $result = $object->setValid($user);
 	    if ($result <= 0)
@@ -374,7 +381,7 @@ if (empty($reshook))
 	    }
 	}
 
-	if ($action == 'confirm_close' && GETPOST('confirm') == 'yes')
+	if ($action == 'confirm_close' && $confirm == 'yes')
 	{
 	    $result = $object->setClose($user);
 	    if ($result <= 0)
@@ -383,7 +390,7 @@ if (empty($reshook))
 	    }
 	}
 
-	if ($action == 'confirm_reopen' && GETPOST('confirm') == 'yes')
+	if ($action == 'confirm_reopen' && $confirm == 'yes')
 	{
 	    $result = $object->setValid($user);
 	    if ($result <= 0)
@@ -409,7 +416,7 @@ if (empty($reshook))
 	    }
 	}
 
-	if ($action == 'confirm_clone' && $user->rights->projet->creer && GETPOST('confirm') == 'yes')
+	if ($action == 'confirm_clone' && $user->rights->projet->creer && $confirm == 'yes')
 	{
 	    $clone_contacts=GETPOST('clone_contacts')?1:0;
 	    $clone_tasks=GETPOST('clone_tasks')?1:0;
@@ -885,12 +892,16 @@ elseif ($object->id > 0)
 
 	        // Opportunity percent
 	        print '<tr><td>'.$langs->trans("OpportunityProbability").'</td><td>';
-	        if (strcmp($object->opp_percent,'')) print price($object->opp_percent,0,$langs,1,0).' %';
+	        if (strcmp($object->opp_percent,'')) print price($object->opp_percent, 0, $langs, 1, 0).' %';
 	        print '</td></tr>';
 
 	        // Opportunity Amount
 	        print '<tr><td>'.$langs->trans("OpportunityAmount").'</td><td>';
-	        if (strcmp($object->opp_amount,'')) print price($object->opp_amount,0,$langs,1,0,0,$conf->currency);
+	        /*if ($object->opp_status)
+	        {
+	           print price($obj->opp_amount, 1, $langs, 1, 0, -1, $conf->currency);
+	        }*/
+	        if (strcmp($object->opp_amount,'')) print price($object->opp_amount, 0, $langs, 1, 0, -1, $conf->currency);
 	        print '</td></tr>';
 	    }
 
diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php
index 6a53be25c54..b22ea32f646 100644
--- a/htdocs/projet/class/project.class.php
+++ b/htdocs/projet/class/project.class.php
@@ -103,6 +103,20 @@ class Project extends CommonObject
 	 */
 	public $lines;
 
+	/**
+	 * Draft status
+	 */
+	const STATUS_DRAFT = 0;
+	/**
+	 * Open/Validated status
+	 */
+	const STATUS_VALIDATED = 1;
+	/**
+	 * Closed status
+	 */
+	const STATUS_CLOSED = 2;
+
+
 
     /**
      *  Constructor
diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index 851956f816b..b9da5379655 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -135,7 +135,7 @@ $arrayfields=array(
 // Extra fields
 if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
 {
-   foreach($extrafields->attribute_label as $key => $val) 
+   foreach($extrafields->attribute_label as $key => $val)
    {
        $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>$extrafields->attribute_list[$key], 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>$extrafields->attribute_perms[$key]);
    }
@@ -186,7 +186,7 @@ if (empty($reshook))
     	$toselect='';
     	$search_array_options=array();
     }
-    
+
 
     // Mass actions
     $objectclass='Project';
@@ -297,12 +297,12 @@ else if ($search_eyear > 0)
     $sql.= " AND p.datee BETWEEN '".$db->idate(dol_get_first_day($search_eyear,1,false))."' AND '".$db->idate(dol_get_last_day($search_eyear,12,false))."'";
 }
 if ($search_all) $sql .= natural_search(array_keys($fieldstosearchall), $search_all);
-if ($search_status >= 0) 
+if ($search_status >= 0)
 {
     if ($search_status == 99) $sql .= " AND p.fk_statut <> 2";
     else $sql .= " AND p.fk_statut = ".$db->escape($search_status);
 }
-if ($search_opp_status) 
+if ($search_opp_status)
 {
     if (is_numeric($search_opp_status) && $search_opp_status > 0) $sql .= " AND p.fk_opp_status = ".$db->escape($search_opp_status);
     if ($search_opp_status == 'all') $sql .= " AND p.fk_opp_status IS NOT NULL";
@@ -313,7 +313,7 @@ if ($search_public!='') $sql .= " AND p.public = ".$db->escape($search_public);
 if ($search_sale > 0) $sql.= " AND sc.fk_user = " .$search_sale;
 // For external user, no check is done on company permission because readability is managed by public status of project and assignement.
 //if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND ((s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id.") OR (s.rowid IS NULL))";
-if ($search_project_user > 0) $sql.= " AND ecp.fk_c_type_contact IN (".join(',',array_keys($listofprojectcontacttype)).") AND ecp.element_id = p.rowid AND ecp.fk_socpeople = ".$search_project_user; 
+if ($search_project_user > 0) $sql.= " AND ecp.fk_c_type_contact IN (".join(',',array_keys($listofprojectcontacttype)).") AND ecp.element_id = p.rowid AND ecp.fk_socpeople = ".$search_project_user;
 if ($search_opp_amount != '') $sql .= natural_search('p.opp_amount', $search_opp_amount, 1);
 if ($search_budget_amount != '') $sql .= natural_search('p.budget_amount', $search_budget_amount, 1);
 // Add where from extra fields
@@ -324,7 +324,7 @@ foreach ($search_array_options as $key => $val)
     $typ=$extrafields->attribute_type[$tmpkey];
     $mode=0;
     if (in_array($typ, array('int','double'))) $mode=1;    // Search on a numeric
-    if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) 
+    if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit)))
     {
         $sql .= natural_search('ef.'.$tmpkey, $crit, $mode);
     }
@@ -383,8 +383,8 @@ if ($search_ref != '') 			$param.='&search_ref='.$search_ref;
 if ($search_label != '') 		$param.='&search_label='.$search_label;
 if ($search_societe != '') 		$param.='&search_societe='.$search_societe;
 if ($search_status >= 0) 		$param.='&search_status='.$search_status;
-if ((is_numeric($search_opp_status) && $search_opp_status >= 0) || in_array($search_opp_status, array('all','openedopp','none'))) 	$param.='&search_opp_status='.urlencode($search_opp_status);
-if ((is_numeric($search_opp_percent) && $search_opp_percent >= 0) || in_array($search_opp_percent, array('all','openedopp','none'))) 	$param.='&search_opp_percent='.urlencode($search_opp_percent);
+if ((is_numeric($search_opp_status) && $search_opp_status >= 0) || in_array($search_opp_status, array('all','openedopp','none'))) 	    $param.='&search_opp_status='.urlencode($search_opp_status);
+if ($search_opp_percent != '') 	$param.='&search_opp_percent='.urlencode($search_opp_percent);
 if ($search_public != '') 		$param.='&search_public='.$search_public;
 if ($search_project_user != '')   $param.='&search_project_user='.$search_project_user;
 if ($search_sale > 0)    		$param.='&search_sale='.$search_sale;
@@ -532,18 +532,18 @@ if (! empty($arrayfields['p.public']['checked']))
     print $form->selectarray('search_public',$array,$search_public);
     print '</td>';
 }
-if (! empty($arrayfields['p.opp_amount']['checked']))
-{
-	print '<td class="liste_titre nowrap right">';
-	print '<input type="text" class="flat" name="search_opp_amount" size="3" value="'.$search_opp_amount.'">';
-	print '</td>';
-}
 if (! empty($arrayfields['p.fk_opp_status']['checked']))
 {
 	print '<td class="liste_titre nowrap center">';
 	print $formproject->selectOpportunityStatus('search_opp_status', $search_opp_status, 1, 1, 1, 0, 'maxwidth100');
     print '</td>';
 }
+if (! empty($arrayfields['p.opp_amount']['checked']))
+{
+	print '<td class="liste_titre nowrap right">';
+	print '<input type="text" class="flat" name="search_opp_amount" size="3" value="'.$search_opp_amount.'">';
+	print '</td>';
+}
 if (! empty($arrayfields['p.opp_percent']['checked']))
 {
 	print '<td class="liste_titre nowrap right">';
@@ -620,8 +620,8 @@ if (! empty($arrayfields['commercial']['checked']))      print_liste_field_titre
 if (! empty($arrayfields['p.dateo']['checked']))         print_liste_field_titre($arrayfields['p.dateo']['label'],$_SERVER["PHP_SELF"],"p.dateo","",$param,'align="center"',$sortfield,$sortorder);
 if (! empty($arrayfields['p.datee']['checked']))         print_liste_field_titre($arrayfields['p.datee']['label'],$_SERVER["PHP_SELF"],"p.datee","",$param,'align="center"',$sortfield,$sortorder);
 if (! empty($arrayfields['p.public']['checked']))        print_liste_field_titre($arrayfields['p.public']['label'],$_SERVER["PHP_SELF"],"p.public","",$param,"",$sortfield,$sortorder);
-if (! empty($arrayfields['p.opp_amount']['checked']))    print_liste_field_titre($arrayfields['p.opp_amount']['label'],$_SERVER["PHP_SELF"],'p.opp_amount',"",$param,'align="right"',$sortfield,$sortorder);
 if (! empty($arrayfields['p.fk_opp_status']['checked'])) print_liste_field_titre($arrayfields['p.fk_opp_status']['label'],$_SERVER["PHP_SELF"],'p.fk_opp_status',"",$param,'align="center"',$sortfield,$sortorder);
+if (! empty($arrayfields['p.opp_amount']['checked']))    print_liste_field_titre($arrayfields['p.opp_amount']['label'],$_SERVER["PHP_SELF"],'p.opp_amount',"",$param,'align="right"',$sortfield,$sortorder);
 if (! empty($arrayfields['p.opp_percent']['checked']))   print_liste_field_titre($arrayfields['p.opp_percent']['label'],$_SERVER["PHP_SELF"],'p.opp_percent',"",$param,'align="right"',$sortfield,$sortorder);
 if (! empty($arrayfields['p.budget_amount']['checked'])) print_liste_field_titre($arrayfields['p.budget_amount']['label'],$_SERVER["PHP_SELF"],'p.budget_amount',"",$param,'align="right"',$sortfield,$sortorder);
 // Extra fields
@@ -661,7 +661,7 @@ while ($i < min($num,$limit))
 	$object->datee = $db->jdate($obj->date_end);
 	$object->statut = $obj->fk_statut;
 	$object->opp_status = $obj->fk_opp_status;
-	
+
 	$userAccess = $object->restrictedProjectArea($user);    // why this ?
 	if ($userAccess >= 0)
 	{
@@ -769,33 +769,34 @@ while ($i < min($num,$limit))
     		else print $langs->trans('PrivateProject');
     		print '</td>';
 		    if (! $i) $totalarray['nbfield']++;
+    	}
+	    // Opp Status
+    	if (! empty($arrayfields['p.fk_opp_status']['checked']))
+    	{
+            print '<td class="center">';
+			if ($obj->opp_status_code) print $langs->trans("OppStatusShort".$obj->opp_status_code);
+			print '</td>';
+		    if (! $i) $totalarray['nbfield']++;
     	}
     	// Opp Amount
     	if (! empty($arrayfields['p.opp_amount']['checked']))
     	{
 			print '<td align="right">';
-			if ($obj->opp_status_code) 
+			//if ($obj->opp_status_code)
+			if (strcmp($obj->opp_amount,''))
 			{
-			    print price($obj->opp_amount, 1, '', 1, -1, -1, '');
+			    print price($obj->opp_amount, 1, $langs, 1, -1, -1, '');
 			    $totalarray['totalopp'] += $obj->opp_amount;
 			}
 			print '</td>';
 			if (! $i) $totalarray['nbfield']++;
 			if (! $i) $totalarray['totaloppfield']=$totalarray['nbfield'];
     	}
-    	// Opp Status
-    	if (! empty($arrayfields['p.fk_opp_status']['checked']))
-    	{
-            print '<td class="center">';
-			if ($obj->opp_status_code) print $langs->trans("OppStatusShort".$obj->opp_status_code);
-			print '</td>';
-		    if (! $i) $totalarray['nbfield']++;
-    	}
     	// Opp percent
 	    if (! empty($arrayfields['p.opp_percent']['checked']))
     	{
 			print '<td align="right">';
-			if ($obj->opp_percent) print price($obj->opp_percent, 1, '', 1, 0).'%';
+			if ($obj->opp_percent) print price($obj->opp_percent, 1, $langs, 1, 0).'%';
 			print '</td>';
 		    if (! $i) $totalarray['nbfield']++;
     	}
@@ -803,9 +804,9 @@ while ($i < min($num,$limit))
 	    if (! empty($arrayfields['p.budget_amount']['checked']))
     	{
 			print '<td align="right">';
-			if ($obj->budget_amount != '') 
+			if ($obj->budget_amount != '')
 			{
-			    print price($obj->budget_amount, 1, '', 1, -1, -1);
+			    print price($obj->budget_amount, 1, $langs, 1, -1, -1);
 			    $totalarray['totalbudget'] += $obj->budget_amount;
 			}
 			print '</td>';
@@ -826,9 +827,9 @@ while ($i < min($num,$limit))
 		            $tmpkey='options_'.$key;
 		            print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1);
 		            print '</td>';
+		            if (! $i) $totalarray['nbfield']++;
 		        }
 		    }
-		    if (! $i) $totalarray['nbfield']++;
 		}
 		// Fields from hook
 		$parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj);
@@ -866,7 +867,7 @@ while ($i < min($num,$limit))
         }
         print '</td>';
 		if (! $i) $totalarray['nbfield']++;
-		
+
 		print "</tr>\n";
 
 	}
@@ -887,8 +888,8 @@ if (isset($totalarray['totaloppfield']) || isset($totalarray['totalbudgetfield']
             if ($num < $limit && empty($offset)) print '<td align="left">'.$langs->trans("Total").'</td>';
             else print '<td align="left">'.$langs->trans("Totalforthispage").'</td>';
         }
-        elseif ($totalarray['totaloppfield'] == $i) print '<td align="right">'.price($totalarray['totalopp']).'</td>';
-        elseif ($totalarray['totalbudgetfield'] == $i) print '<td align="right">'.price($totalarray['totalbudget']).'</td>';
+        elseif ($totalarray['totaloppfield'] == $i) print '<td align="right">'.price($totalarray['totalopp'], 1, $langs, 1, -1, -1).'</td>';
+        elseif ($totalarray['totalbudgetfield'] == $i) print '<td align="right">'.price($totalarray['totalbudget'], 1, $langs, 1, -1, -1).'</td>';
         else print '<td></td>';
     }
     print '</tr>';
diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php
index 44524cd7acd..d157cfc99d2 100644
--- a/htdocs/resource/list.php
+++ b/htdocs/resource/list.php
@@ -257,66 +257,63 @@ if ($ret)
 {
     foreach ($object->lines as $resource)
     {
-            
-
-            $style='';
-            if ($resource->id == GETPOST('lineid')) $style='style="background: orange;"';
-
-            print '<tr '.$bc[$var].' '.$style.'>';
-
-            if (! empty($arrayfields['t.ref']['checked']))
-            {
-            	print '<td>';
-            	print $resource->getNomUrl(5);
-            	print '</td>';
-            }
-
-            if (! empty($arrayfields['ty.label']['checked']))
-            {
-            	print '<td>';
-            	print $resource->type_label;
-            	print '</td>';
-            }
-            // Extra fields
-            if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
-            {
-            	foreach($extrafields->attribute_label as $key => $val)
-            	{
-            		if (! empty($arrayfields["ef.".$key]['checked']))
-            		{
-            			print '<td';
-            			$align=$extrafields->getAlignFlag($key);
-            			if ($align) print ' align="'.$align.'"';
-            			print '>';
-            			$tmpkey='options_'.$key;
-            			print $extrafields->showOutputField($key, $resource->array_options[$tmpkey], '', 1);
-            			print '</td>';
-            		}
-            	}
-            	if (! $i) $totalarray['nbfield']++;
-            }
-
-            print '<td align="center">';
-            print '<a href="./card.php?action=edit&id='.$resource->id.'">';
-            print img_edit();
-            print '</a>';
-            print '&nbsp;';
-            print '<a href="./card.php?action=delete&id='.$resource->id.'">';
-            print img_delete();
-            print '</a>';
-            print '</td>';
-
-            print '</tr>';
-    }
+        print '<tr class="oddeven">';
+
+        if (! empty($arrayfields['t.ref']['checked']))
+        {
+        	print '<td>';
+        	print $resource->getNomUrl(5);
+        	print '</td>';
+	        if (! $i) $totalarray['nbfield']++;
+        }
+
+        if (! empty($arrayfields['ty.label']['checked']))
+        {
+        	print '<td>';
+        	print $resource->type_label;
+        	print '</td>';
+	        if (! $i) $totalarray['nbfield']++;
+        }
+        // Extra fields
+        if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
+        {
+        	foreach($extrafields->attribute_label as $key => $val)
+        	{
+        		if (! empty($arrayfields["ef.".$key]['checked']))
+        		{
+        			print '<td';
+        			$align=$extrafields->getAlignFlag($key);
+        			if ($align) print ' align="'.$align.'"';
+        			print '>';
+        			$tmpkey='options_'.$key;
+        			print $extrafields->showOutputField($key, $resource->array_options[$tmpkey], '', 1);
+        			print '</td>';
+	                if (! $i) $totalarray['nbfield']++;
+        		}
+        	}
+        }
 
-    print '</table>';
-    print "</form>\n";
+        print '<td align="center">';
+        print '<a href="./card.php?action=edit&id='.$resource->id.'">';
+        print img_edit();
+        print '</a>';
+        print '&nbsp;';
+        print '<a href="./card.php?action=delete&id='.$resource->id.'">';
+        print img_delete();
+        print '</a>';
+        print '</td>';
+        if (! $i) $totalarray['nbfield']++;
+
+        print '</tr>';
+    }
 }
 else
 {
     print '<tr><td class="opacitymedium">'.$langs->trans('NoResourceInDatabase').'</td></tr>';
 }
 
-llxFooter();
+print '</table>';
+print "</form>\n";
 
+llxFooter();
 $db->close();
diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php
index 28d6ec27368..3cbd8768e92 100644
--- a/htdocs/societe/list.php
+++ b/htdocs/societe/list.php
@@ -247,7 +247,7 @@ if (empty($reshook))
     $permtodelete = $user->rights->societe->supprimer;
     $uploaddir = $conf->societe->dir_output;
     include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
-    
+
     if ($action == 'setstcomm')
     {
         $object = new Client($db);
@@ -930,6 +930,7 @@ print "</tr>\n";
 
 
 $i = 0;
+$totalarray=array();
 while ($i < min($num, $limit))
 {
 	$obj = $db->fetch_object($resql);
@@ -955,46 +956,55 @@ while ($i < min($num, $limit))
 		print '<td class="tdoverflowmax200">';
 		print $companystatic->getNomUrl(1,'',100);
 		print "</td>\n";
+        if (! $i) $totalarray['nbfield']++;
 	}
 	// Barcode
     if (! empty($arrayfields['s.barcode']['checked']))
 	{
 		print '<td>'.$obj->barcode.'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
 	// Customer code
     if (! empty($arrayfields['s.code_client']['checked']))
 	{
 		print '<td>'.$obj->code_client.'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
     // Supplier code
     if (! empty($arrayfields['s.code_fournisseur']['checked']))
 	{
 		print '<td>'.$obj->code_fournisseur.'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
 	// Account customer code
     if (! empty($arrayfields['s.code_compta']['checked']))
 	{
 		print '<td>'.$obj->code_compta.'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
     // Account supplier code
     if (! empty($arrayfields['s.code_compta_fournisseur']['checked']))
 	{
 		print '<td>'.$obj->code_compta_fournisseur.'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
 	// Town
     if (! empty($arrayfields['s.town']['checked']))
     {
         print "<td>".$obj->town."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     // Zip
     if (! empty($arrayfields['s.zip']['checked']))
     {
         print "<td>".$obj->zip."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     // State
     if (! empty($arrayfields['state.nom']['checked']))
     {
         print "<td>".$obj->state_name."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     // Country
     if (! empty($arrayfields['country.code_iso']['checked']))
@@ -1003,6 +1013,7 @@ while ($i < min($num, $limit))
 		$tmparray=getCountry($obj->fk_pays,'all');
 		print $tmparray['label'];
 		print '</td>';
+        if (! $i) $totalarray['nbfield']++;
     }
 	// Type ent
     if (! empty($arrayfields['typent.code']['checked']))
@@ -1011,42 +1022,52 @@ while ($i < min($num, $limit))
 		if (count($typenArray)==0) $typenArray = $formcompany->typent_array(1);
 		print $typenArray[$obj->typent_code];
 		print '</td>';
+        if (! $i) $totalarray['nbfield']++;
     }
     if (! empty($arrayfields['s.email']['checked']))
     {
         print "<td>".$obj->email."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     if (! empty($arrayfields['s.phone']['checked']))
     {
         print "<td>".$obj->phone."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     if (! empty($arrayfields['s.url']['checked']))
     {
         print "<td>".$obj->url."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     if (! empty($arrayfields['s.siren']['checked']))
     {
         print "<td>".$obj->idprof1."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     if (! empty($arrayfields['s.siret']['checked']))
     {
         print "<td>".$obj->idprof2."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     if (! empty($arrayfields['s.ape']['checked']))
     {
         print "<td>".$obj->idprof3."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     if (! empty($arrayfields['s.idprof4']['checked']))
     {
         print "<td>".$obj->idprof4."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     if (! empty($arrayfields['s.idprof5']['checked']))
     {
         print "<td>".$obj->idprof5."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     if (! empty($arrayfields['s.idprof6']['checked']))
     {
         print "<td>".$obj->idprof6."</td>\n";
+        if (! $i) $totalarray['nbfield']++;
     }
     // Type
     if (! empty($arrayfields['customerorsupplier']['checked']))
@@ -1075,6 +1096,7 @@ while ($i < min($num, $limit))
     	}
     	print $s;
     	print '</td>';
+        if (! $i) $totalarray['nbfield']++;
     }
 
     if (! empty($arrayfields['s.fk_prospectlevel']['checked']))
@@ -1083,6 +1105,7 @@ while ($i < min($num, $limit))
 		print '<td align="center">';
 		print $companystatic->getLibProspLevel();
 		print "</td>";
+        if (! $i) $totalarray['nbfield']++;
     }
 
     if (! empty($arrayfields['s.fk_stcomm']['checked']))
@@ -1098,6 +1121,7 @@ while ($i < min($num, $limit))
 			if ($obj->stcomm_id != $val['id']) print '<a class="pictosubstatus" href="'.$_SERVER["PHP_SELF"].'?stcommsocid='.$obj->rowid.'&stcomm='.$val['code'].'&action=setstcomm'.$param.($page?'&page='.urlencode($page):'').'">'.img_action($titlealt,$val['code']).'</a>';
 		}
 		print '</div></div></td>';
+        if (! $i) $totalarray['nbfield']++;
     }
 	// Extra fields
 	if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
@@ -1113,6 +1137,7 @@ while ($i < min($num, $limit))
 				$tmpkey='options_'.$key;
 				print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1);
 				print '</td>';
+                if (! $i) $totalarray['nbfield']++;
 			}
 	   }
 	}
@@ -1126,6 +1151,7 @@ while ($i < min($num, $limit))
         print '<td align="center" class="nowrap">';
         print dol_print_date($db->jdate($obj->date_creation), 'dayhour');
         print '</td>';
+        if (! $i) $totalarray['nbfield']++;
     }
     // Date modification
     if (! empty($arrayfields['s.tms']['checked']))
@@ -1133,11 +1159,13 @@ while ($i < min($num, $limit))
         print '<td align="center" class="nowrap">';
         print dol_print_date($db->jdate($obj->date_update), 'dayhour');
         print '</td>';
+        if (! $i) $totalarray['nbfield']++;
     }
     // Status
     if (! empty($arrayfields['s.status']['checked']))
     {
         print '<td align="center" class="nowrap">'.$companystatic->getLibStatut(3).'</td>';
+        if (! $i) $totalarray['nbfield']++;
     }
 
     // Action column
@@ -1150,7 +1178,7 @@ while ($i < min($num, $limit))
     }
     print '</td>';
     if (! $i) $totalarray['nbfield']++;
-    
+
 	print '</tr>'."\n";
 	$i++;
 }
diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php
index c0738f004bc..f3e7df31609 100644
--- a/htdocs/theme/eldy/style.css.php
+++ b/htdocs/theme/eldy/style.css.php
@@ -4179,7 +4179,7 @@ dl.dropdown {
     position:absolute;
     top:2px;
     list-style:none;
-    max-height: 300px;
+    max-height: 280px;
     overflow: auto;
 }
 .dropdown span.value {
diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php
index 4557c6856fb..49a8745f61e 100644
--- a/htdocs/theme/md/style.css.php
+++ b/htdocs/theme/md/style.css.php
@@ -4266,7 +4266,7 @@ dl.dropdown {
     position:absolute;
     top:2px;
     list-style:none;
-    max-height: 300px;
+    max-height: 280px;
     overflow: auto;
 }
 .dropdown span.value {
diff --git a/htdocs/user/index.php b/htdocs/user/index.php
index 415665bc5fc..6aaa3274b9d 100644
--- a/htdocs/user/index.php
+++ b/htdocs/user/index.php
@@ -465,6 +465,7 @@ print "</tr>\n";
 
 
 $i = 0;
+$totalarray=array();
 while ($i < min($num,$limit))
 {
     $obj = $db->fetch_object($result);
@@ -497,32 +498,39 @@ while ($i < min($num,$limit))
         	print img_picto($langs->trans("Administrator"), 'star', 'class="valignmiddle paddingleft"');
         }
         print '</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
     if (! empty($arrayfields['u.lastname']['checked']))
 	{
 	      print '<td>'.$obj->lastname.'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
     if (! empty($arrayfields['u.firstname']['checked']))
 	{
 	  print '<td>'.$obj->firstname.'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
     if (! empty($arrayfields['u.gender']['checked']))
 	{
 	  print '<td>';
 	  if ($obj->gender) print $langs->trans("Gender".$obj->gender);
 	  print '</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
     if (! empty($arrayfields['u.employee']['checked']))
 	{
 	  print '<td>'.yn($obj->employee).'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
 	if (! empty($arrayfields['u.accountancy_code']['checked']))
 	{
 	  print '<td>'.$obj->accountancy_code.'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
     if (! empty($arrayfields['u.email']['checked']))
 	{
 	  print '<td>'.$obj->email.'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
 	if (! empty($arrayfields['u.fk_soc']['checked']))
 	{
@@ -543,6 +551,7 @@ while ($i < min($num,$limit))
         	print $langs->trans("InternalUser");
         }
         print '</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
     // Multicompany enabled
 	if (! empty($conf->multicompany->enabled) && is_object($mc) && empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE))
@@ -560,6 +569,7 @@ while ($i < min($num,$limit))
         		print $mc->label;
         	}
         	print '</td>';
+            if (! $i) $totalarray['nbfield']++;
 		}
     }
     // Supervisor
@@ -589,17 +599,20 @@ while ($i < min($num,$limit))
             }
         }
         print '</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
 
     // Date last login
     if (! empty($arrayfields['u.datelastlogin']['checked']))
 	{
         print '<td class="nowrap" align="center">'.dol_print_date($db->jdate($obj->datelastlogin),"dayhour").'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
     // Date previous login
     if (! empty($arrayfields['u.datepreviouslogin']['checked']))
 	{
         print '<td class="nowrap" align="center">'.dol_print_date($db->jdate($obj->datepreviouslogin),"dayhour").'</td>';
+        if (! $i) $totalarray['nbfield']++;
 	}
 
 	// Extra fields
@@ -616,6 +629,7 @@ while ($i < min($num,$limit))
 				$tmpkey='options_'.$key;
 				print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1);
 				print '</td>';
+                if (! $i) $totalarray['nbfield']++;
 			}
 	   }
 	}
@@ -629,6 +643,7 @@ while ($i < min($num,$limit))
         print '<td align="center">';
         print dol_print_date($db->jdate($obj->date_creation), 'dayhour');
         print '</td>';
+        if (! $i) $totalarray['nbfield']++;
     }
     // Date modification
     if (! empty($arrayfields['u.tms']['checked']))
@@ -636,15 +651,18 @@ while ($i < min($num,$limit))
         print '<td align="center">';
         print dol_print_date($db->jdate($obj->date_update), 'dayhour');
         print '</td>';
+        if (! $i) $totalarray['nbfield']++;
     }
     // Status
     if (! empty($arrayfields['u.statut']['checked']))
     {
-	  $userstatic->statut=$obj->statut;
-      print '<td align="center">'.$userstatic->getLibStatut(3).'</td>';
+	   $userstatic->statut=$obj->statut;
+       print '<td align="center">'.$userstatic->getLibStatut(3).'</td>';
+       if (! $i) $totalarray['nbfield']++;
     }
     // Action column
     print '<td></td>';
+    if (! $i) $totalarray['nbfield']++;
 
     print "</tr>\n";
     $i++;
-- 
GitLab