diff --git a/ChangeLog b/ChangeLog
index 7f210c6fab1afaffb967ce7054ff8b2ce8275f75..0f2ed877a1360fb2df84a3214feec45c2a293433 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -26,19 +26,19 @@ Dolibarr better:
 - The old driver of "mysql" has been removed. Dolibarr use the new one (mysqli) by default.
 - Remove not used function calculate_byte(). Use dol_print_size() instead.
 - Function pdf_getTotalQty is now deprecated. Not used by Dolibarr core.
+- Method commande->deleteline($lineid) has been replaced with commande->deleteline($user, $lineid).
 - Method expensereport->delete(id, user) has been replaced with ->delete(user)
   Method warehouse->delete(id) has been replace with ->delete(user)
   This is to follow good practice to make a fetch on object before deleting it.
-- The form to add a product to a draft proposal/order/invoice from the product card is hidden by default.
+- The form to add a product to a draft proposal/order/invoice, from the product card, is hidden by default.
   It was not commonly used and usage generates some problems (cost price for margin calculation not entered, vat setting).  
   Set constant PRODUCT_ADD_FORM_ADD_TO to retrieve it.
-- The javascript "datatables" library was used to be provided into Dolibarr sources, but it was not used by application.
+- The javascript "datatables" library was previously provided into Dolibarr sources, but it was not used by application.
   So there is no reason to maintain its compatibility with other dolibarr components. If an external module need this 
-  library, this external module must embed hte library in his own sources/packages.
-- Trigger name SUPPLIER_PROPOSAL_CREATE has been renamed into PROPOSAL_SUPPLIER_CREATE
-- A new paramater sqlfilters was introduced to allow filter on any fields int the REST API. Few old parameters
-  no more required were also removed. Use this new one if you ware using one of them.
-- Method commande->deleteline($lindeid) has been replaced with commande->deleteline($user, $lineid).
+  library, this external module must embed the library in his own sources/packages.
+- Trigger name SUPPLIER_PROPOSAL_CREATE has been renamed into PROPOSAL_SUPPLIER_CREATE.
+- A new paramater sqlfilters was introduced to allow filter on any fields int the REST API. Few old parameters,
+  no more required, were also removed. Use this new one if you were using one of them.
 
 
 
diff --git a/build/debian/README.howto b/build/debian/README.howto
index cd7cd93c24e44580faabe638bffb3c4c89f1ebe5..696ea9a2bef1df9c0b471aab3ef2bd7ccc17be19 100644
--- a/build/debian/README.howto
+++ b/build/debian/README.howto
@@ -295,12 +295,16 @@ If script fails with error Bad certificate, you can set "export PERL_LWP_SSL_VER
 * Edit orig.tar.gz file to remove 
 - debian
 - htdocs/includes/ckeditor
-- htdocs/includes/jszip
+- htdocs/includes/jquery/css
+- htdocs/includes/jquery/js
+- htdocs/includes/jquery/plugins/flot
+- htdocs/includes/jquery/plugins/multiselect
 - htdocs/includes/jquery/plugins/datatables
+- htdocs/includes/jszip
 - htdocs/includes/mike42
 - htdocs/includes/phpexcel or htdocs/includes/phpoffice
-- htdocs/includes/swiftmailer
 - htdocs/includes/restler/framework/Luracast/Restler/explorer
+- htdocs/includes/swiftmailer
 - htdocs/includes/tcpdf or htdocs/includes/tecnickcom
 And rename file into 
 dolibarr-x.y.z+dfsgw.tgz
diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php
index c47a87a803375700b5811c5c5ed60d51febef457..0eac0c761c7bab96ef3fd59311f40045d877d1eb 100644
--- a/dev/skeletons/skeleton_list.php
+++ b/dev/skeletons/skeleton_list.php
@@ -1,5 +1,5 @@
 <?php
-/* Copyright (C) 2007-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
+/* Copyright (C) 2007-2016 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2014-2016  Juanjo Menent       <jmenent@2byte.es>
  *
  * This program is free software; you can redistribute it and/or modify
diff --git a/htdocs/.gitignore b/htdocs/.gitignore
index 608ef55d1066e0d29e68a187cc420eee1d539f59..1650ea7e5ae8246f02ae4c17377a7f7ff9991b9d 100644
--- a/htdocs/.gitignore
+++ b/htdocs/.gitignore
@@ -22,3 +22,4 @@
 /cabinetmed*
 /webmail*
 /conf/conf.php
+/subtotal/
diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php
index 95ba62de0c576f4d1fbdf63b26658396a5b5632e..cb3255f981d603045261e6e6e882d69a05509226 100644
--- a/htdocs/accountancy/admin/account.php
+++ b/htdocs/accountancy/admin/account.php
@@ -256,10 +256,8 @@ if ($resql) {
 	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_pcgsubtype" value="' . $search_pcgsubtype . '"></td>';
 	print '<td class="liste_titre">&nbsp;</td>';
 	print '<td align="right" colspan="2" class="liste_titre">';
-	
-	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 '&nbsp;';
-	print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" name="button_removefilter" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">';
+	$searchpitco=$form->showFilterAndCheckAddButtons($massactionbutton?1:0, 'checkforselect', 1);
+	print $searchpitco;
 	print '</td>';
 	print '</tr>';
 	
diff --git a/htdocs/accountancy/admin/defaultaccounts.php b/htdocs/accountancy/admin/defaultaccounts.php
index a66217ebbee11183801e88f394f6628634cd5a34..6854c8a45ffe7bb15b6e3ec3a6726061bb0c6032 100644
--- a/htdocs/accountancy/admin/defaultaccounts.php
+++ b/htdocs/accountancy/admin/defaultaccounts.php
@@ -138,7 +138,7 @@ foreach ( $list_account as $key ) {
 	$label = $langs->trans($key);
 	print '<td>' . $label . '</td>';
 	// Value
-	print '<td align="right">';
+	print '<td>';  // Do not force align=right, or it align also the content of the select box 
 	print $formaccountancy->select_account($conf->global->$key, $key, 1, '', 1, 1);
 	print '</td>';
 	print '</tr>';
diff --git a/htdocs/accountancy/admin/importaccounts.php b/htdocs/accountancy/admin/importaccounts.php
index 720f3a4f0124c3dc61e2d03713ae1ace230769f9..99b491688cbc2d74f96025cda6752e39c8967e67 100644
--- a/htdocs/accountancy/admin/importaccounts.php
+++ b/htdocs/accountancy/admin/importaccounts.php
@@ -40,6 +40,22 @@ $langs->load("accountancy");
 if (! $user->admin)
 	accessforbidden();
 
+$limit = GETPOST("limit")?GETPOST("limit","int"):(empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)?$conf->liste_limit:$conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
+$sortfield = GETPOST("sortfield",'alpha');
+$sortorder = GETPOST("sortorder",'alpha');
+$page = GETPOST("page",'int');
+if ($page == -1) { $page = 0; }
+$offset = $limit * $page;
+$pageprev = $page - 1;
+$pagenext = $page + 1;
+
+
+
+
+/*
+ * View
+ */
+
 llxHeader('', $langs->trans("ImportAccount"));
 
 $to_import = GETPOST("mesCasesCochees");
@@ -90,15 +106,7 @@ if ($_POST["action"] == 'import') {
 	print '<div><font color="red">' . $langs->trans("EndProcessing") . '</font></div>';
 }
 
-/*
- * list accounting account from product 
- *
- */
-$page = GETPOST("page");
-if ($page < 0)
-	$page = 0;
-$limit = $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION;
-$offset = $limit * $page;
+// list accounting account from product 
 
 $sql = "(SELECT p.rowid as product_id, p.accountancy_code_sell as accounting ";
 $sql .= " FROM  " . MAIN_DB_PREFIX . "product as p ";
diff --git a/htdocs/accountancy/admin/index.php b/htdocs/accountancy/admin/index.php
index 4eb95d298c55c9e26f48c633eac088fb342a8ccc..8f023432727d97b15af59169bc9a1bd19438ab0d 100644
--- a/htdocs/accountancy/admin/index.php
+++ b/htdocs/accountancy/admin/index.php
@@ -50,8 +50,6 @@ $action = GETPOST('action', 'alpha');
 
 // Parameters ACCOUNTING_* and others
 $list = array (
-    //'ACCOUNTING_LIMIT_LIST_VENTILATION',  Useless, we can change value dynamically, so we use default global setup
-    'ACCOUNTING_MANAGE_ZERO',
     'ACCOUNTING_LENGTH_GACCOUNT',
     'ACCOUNTING_LENGTH_AACCOUNT' ,
     'ACCOUNTING_LENGTH_DESCRIPTION', // adjust size displayed for lines description for dol_trunc
@@ -85,13 +83,11 @@ if ($action == 'update') {
 		$error ++;
 	}
 	
-	if (! $error) {
-		setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
-	} else {
+	if ($error) {
 		setEventMessages($langs->trans("Error"), null, 'errors');
 	}
 
-    foreach ( $list as $constname ) {
+    foreach ($list as $constname) {
         $constvalue = GETPOST($constname, 'alpha');
 
         if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
@@ -259,41 +255,37 @@ if (! empty($user->admin))
         print '</a></td>';
     }
     print '</tr>';
+    
+    $var = ! $var;
+    print "<tr " . $bc[$var] . ">";
+    print '<td>' . $langs->trans("ACCOUNTING_MANAGE_ZERO") . '</td>';
+    if (! empty($conf->global->ACCOUNTING_MANAGE_ZERO)) {
+        print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=0">';
+        print img_picto($langs->trans("Activated"), 'switch_on');
+        print '</a></td>';
+    } else {
+        print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=1">';
+        print img_picto($langs->trans("Disabled"), 'switch_off');
+        print '</a></td>';
+    }
+    print '</tr>';
 }
 
 
 // Param a user $user->rights->accountancy->chartofaccount can access
-foreach ( $list as $key ) {
+foreach ($list as $key) 
+{
     $var = ! $var;
 
-    if ($key != 'ACCOUNTING_MANAGE_ZERO')
-    {
-        print '<tr ' . $bc[$var] . ' class="value">';
-        // Param
-        $label = $langs->trans($key);
-        print '<td>'.$label.'</td>';
-        // Value
-        print '<td align="right">';
-        print '<input type="text" size="20" id="' . $key . '" name="' . $key . '" value="' . $conf->global->$key . '">';
-        print '</td>';
-        print '</tr>';
-    }
-    if ($key == 'ACCOUNTING_MANAGE_ZERO')
-    {
-        $var = ! $var;
-        print "<tr " . $bc[$var] . ">";
-        print '<td>' . $langs->trans("ACCOUNTING_MANAGE_ZERO") . '</td>';
-        if (! empty($conf->global->ACCOUNTING_MANAGE_ZERO)) {
-            print '<td align="right""><a href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=0">';
-            print img_picto($langs->trans("Activated"), 'switch_on');
-            print '</a></td>';
-        } else {
-            print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=setmanagezero&value=1">';
-            print img_picto($langs->trans("Disabled"), 'switch_off');
-            print '</a></td>';
-        }
-        print '</tr>';
-    }
+    print '<tr ' . $bc[$var] . ' class="value">';
+    // Param
+    $label = $langs->trans($key);
+    print '<td>'.$label.'</td>';
+    // Value
+    print '<td align="right">';
+    print '<input type="text" size="20" id="' . $key . '" name="' . $key . '" value="' . $conf->global->$key . '">';
+    print '</td>';
+    print '</tr>';
 }
 
 
@@ -302,10 +294,6 @@ print '</table>';
 
 
 
-
-
-
-
 dol_fiche_end();
 
 print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('Modify') . '" name="button"></div>';
diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php
index 495fb2a1304c4ac743b22ff537821b4e769ca949..1cb37e92baa29c5dca25e08f5310634078ce6e40 100644
--- a/htdocs/accountancy/admin/productaccount.php
+++ b/htdocs/accountancy/admin/productaccount.php
@@ -40,6 +40,7 @@ $langs->load("companies");
 $langs->load("compta");
 $langs->load("main");
 $langs->load("accountancy");
+$langs->load("products");
 
 // Security check
 if (empty($conf->accounting->enabled)) {
@@ -61,6 +62,10 @@ $changeaccount_sell = GETPOST('changeaccount_sell', 'array');
 $search_ref = GETPOST('search_ref', 'alpha');
 $search_label = GETPOST('search_label', 'alpha');
 $search_desc = GETPOST('search_desc', 'alpha');
+$search_current_account = GETPOST('search_current_account', 'alpha');
+$search_current_account_valid = GETPOST('search_current_account_valid', 'alpha');
+if ($search_current_account_valid == '') $search_current_account_valid='withoutvalidaccount';
+
 $accounting_product_mode = GETPOST('accounting_product_mode', 'alpha');
 $btn_changeaccount = GETPOST('changeaccount');
 $btn_changetype = GETPOST('changetype');
@@ -85,12 +90,21 @@ $arrayfields=array();
  * Actions
  */
 
+if (GETPOST('cancel')) { $action='list'; $massaction=''; }
+if (! GETPOST('confirmmassaction') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
+
+$parameters=array();
+$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action);    // Note that $action and $object may have been modified by some hooks
+if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
+
 // Purge search criteria
 if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // All test are required to be compatible with all browsers
 {
     $search_ref = '';
     $search_label = '';
     $search_desc = '';
+    $search_current_account = '';
+    $search_current_account_valid = '-1';
 }
 
 // Sales or Purchase mode ?
@@ -189,23 +203,38 @@ $aacompta_prodsell = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ?
 
 llxHeader('', $langs->trans("ProductsBinding"));
 
-$pcgver = $conf->global->CHARTOFACCOUNTS;
+$pcgverid = $conf->global->CHARTOFACCOUNTS;
+$pcgvercode = dol_getIdFromCode($db, $pcgverid, 'accounting_system', 'rowid', 'pcg_version');
+if (empty($pcgvercode)) $pcgvercode=$pcgverid;
 
-$sql = "SELECT p.rowid, p.ref, p.label, p.description , p.accountancy_code_sell, p.accountancy_code_buy, p.tms, p.fk_product_type as product_type";
-$sql .= " FROM " . MAIN_DB_PREFIX . "product as p";
-$sql .= " WHERE (";
-if ($accounting_product_mode == 'ACCOUNTANCY_BUY' ? ' checked' : '') {
-	$sql .= " p.accountancy_code_buy ='' OR p.accountancy_code_buy IS NULL";
-	$sql .= " OR (p.accountancy_code_buy  IS NOT NULL AND p.accountancy_code_buy  != '' AND p.accountancy_code_buy  NOT IN
-	(SELECT aa.account_number FROM " . MAIN_DB_PREFIX . "accounting_account as aa , " . MAIN_DB_PREFIX . "accounting_system as asy  WHERE fk_pcg_version = asy.pcg_version AND asy.rowid = " . $pcgver . "))";
+$sql = "SELECT p.rowid, p.ref, p.label, p.description, p.tosell, p.tobuy, p.accountancy_code_sell, p.accountancy_code_buy, p.tms, p.fk_product_type as product_type,";
+$sql.= " aa.rowid as aaid";
+$sql.= " FROM " . MAIN_DB_PREFIX . "product as p";
+$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON";
+if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
+    $sql.=" p.accountancy_code_buy = aa.account_number AND aa.fk_pcg_version = '" . $pcgvercode . "'";
+}
+else
+{
+    $sql.=" p.accountancy_code_sell = aa.account_number AND aa.fk_pcg_version = '" . $pcgvercode . "'";
+}
+$sql.= ' WHERE p.entity IN ('.getEntity('product', 1).')';
+if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
+    if (strlen(trim($search_current_account))) {
+        $sql .= natural_search("p.accountancy_code_buy",$search_current_account);
+    }
 } else {
-	$sql .= " p.accountancy_code_sell ='' OR p.accountancy_code_sell IS NULL ";
-	$sql .= " OR (p.accountancy_code_sell IS NOT NULL AND p.accountancy_code_sell != '' AND p.accountancy_code_sell NOT IN
-	(SELECT aa.account_number FROM " . MAIN_DB_PREFIX . "accounting_account as aa , " . MAIN_DB_PREFIX . "accounting_system as asy  WHERE fk_pcg_version = asy.pcg_version AND asy.rowid = " . $pcgver . "))";
+    if (strlen(trim($search_current_account))) {
+        $sql .= natural_search("p.accountancy_code_sell",$search_current_account);
+    }
 }
-$sql .= ")";
-if (! empty($conf->multicompany->enabled)) {
-    $sql.= ' AND p.entity IN ('.getEntity('product', 1).')';
+if ($search_current_account_valid == 'withoutvalidaccount')
+{
+	$sql .= " AND aa.account_number IS NULL";
+}
+if ($search_current_account_valid == 'withvalidaccount')
+{
+    $sql .= " AND aa.account_number IS NOT NULL";
 }
 // Add search filter like
 if (strlen(trim($search_ref))) {
@@ -218,6 +247,7 @@ if (strlen(trim($search_desc))) {
 	$sql .= natural_search("p.description",$search_desc);
 }
 $sql .= $db->order($sortfield, $sortorder);
+
 $nbtotalofrecords = 0;
 if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
 {
@@ -236,9 +266,11 @@ if ($result)
     $param='';
     if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage;
     if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit;
-    if ($search_ref > 0) $param.="&amp;search_desc=".urlencode($search_ref);
-    if ($search_label > 0) $param.="&amp;search_desc=".urlencode($search_label);
-    if ($search_desc > 0) $param.="&amp;search_desc=".urlencode($search_desc);
+    if ($search_ref > 0) $param.="&search_desc=".urlencode($search_ref);
+    if ($search_label > 0) $param.="&search_desc=".urlencode($search_label);
+    if ($search_desc > 0) $param.="&search_desc=".urlencode($search_desc);
+    if ($search_current_account > 0) $param.="&search_current_account=".urlencode($search_current_account);
+    if ($search_current_account_valid && $search_current_account_valid != '-1') $param.="&search_current_account_valid=".urlencode($search_current_account_valid);
     
     print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
     if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
@@ -260,11 +292,10 @@ if ($result)
 	print '<td>' . $langs->trans('Options') . '</td><td>' . $langs->trans('Description') . '</td>';
 	print "</tr>\n";
 	print '<tr ' . $bc[false] . '><td class="titlefield"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_SELL"' . ($accounting_product_mode != 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductSell') . '</td>';
-	print '<td colspan="2">' . nl2br($langs->trans('OptionModeProductSellDesc'));
+	print '<td>'.$langs->trans('OptionModeProductSellDesc');
 	print "</td></tr>\n";
 	print '<tr ' . $bc[true] . '><td class="titlefield"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_BUY"' . ($accounting_product_mode == 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductBuy') . '</td>';
-	print '<td colspan="2">' . nl2br($langs->trans('OptionModeProductBuyDesc')) . "</td></tr>\n";
-	
+	print '<td>'.$langs->trans('OptionModeProductBuyDesc')."</td></tr>\n";
 	print "</table>\n";
 	
 	print '<div align="center"><input type="submit" class="button" value="' . $langs->trans('Refresh') . '" name="changetype"></div>';
@@ -277,7 +308,7 @@ if ($result)
 	$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
 	$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
 	
-	$texte=$langs->trans("ListOfProductsWithoutAccountingAccount");
+	$texte=$langs->trans("ListOfProductsServices");
 	print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, '', 0, '', '', $limit);
 	
 	print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
@@ -285,37 +316,54 @@ if ($result)
 	print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
     if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) print_liste_field_titre($langs->trans("Description"), $_SERVER["PHP_SELF"], "p.description", "", $param, '', $sortfield, $sortorder);
-	/*
-	 if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
-	 print_liste_field_titre($langs->trans("Accountancy_code_buy"));
-	 } else {
-	 print_liste_field_titre($langs->trans("Accountancy_code_sell"));
-	 }
-	 */
-	print_liste_field_titre($langs->trans("AccountAccounting"));
-	//print_liste_field_titre($langs->trans("Modify") . '<br><label id="select-all">' . $langs->trans('All') . '</label> / <label id="unselect-all">' . $langs->trans('None') . '</label>', '', '', '', '', 'align="center"');
+	print_liste_field_titre($langs->trans("OnSell"), $_SERVER["PHP_SELF"], "p.tosell", "", $param, 'align="center"', $sortfield, $sortorder);
+   	print_liste_field_titre($langs->trans("OnBuy"), $_SERVER["PHP_SELF"], "p.tobuy", "", $param, 'align="center"', $sortfield, $sortorder);
+   	if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
+   	    $fieldtosortaccount="p.accountancy_code_buy";
+   	}
+   	else $fieldtosortaccount="p.accountancy_code_sell";
+   	print_liste_field_titre($langs->trans("CurrentDedicatedAccountingAccount"), $_SERVER["PHP_SELF"], $fieldtosortaccount, "", $param, '', $sortfield, $sortorder);
+	print_liste_field_titre($langs->trans("AssignDedicatedAccountingAccount"));
 	print_liste_field_titre('', '', '', '', '', 'align="center"');
 	print '</tr>';
 	
 	print '<tr class="liste_titre">';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . dol_escape_htmltag($search_ref) . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>';
-	if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) print '<td class="liste_titre">&nbsp;</td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="8" name="search_ref" value="' . dol_escape_htmltag($search_ref) . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
+	if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_desc" value="' . dol_escape_htmltag($search_desc) . '"></td>';
+	// On sell
+	print '<td class="liste_titre"></td>';
+	// On buy
+	print '<td class="liste_titre"></td>';
+	// Current account
+	print '<td class="liste_titre">';
+	print '<input type="text" class="flat" size="6" name="search_current_account" value="' . dol_escape_htmltag($search_current_account) . '">';
+	$listofvals=array('withoutvalidaccount'=>$langs->trans("WithoutValidAccount"), 'withvalidaccount'=>$langs->trans("WithValidAccount"));
+	print ' '.$langs->trans("or").' '.$form->selectarray('search_current_account_valid', $listofvals, $search_current_account_valid, 1);
+	print '</td>';
+	print '<td class="liste_titre">&nbsp;</td>';
 	print '<td align="right" class="liste_titre">';
 	$searchpitco=$form->showFilterAndCheckAddButtons(1, 'checkforselect', 1);
 	print $searchpitco;
 	print '</td>';
 	print '</tr>';
 	
-	$var = true;
+	$product_static = new Product($db);
 	
+	$var = true;
+	$i=0;
     while ($i < min($num,$limit))
     {
 		$obj = $db->fetch_object($result);
-		$var = ! $var;
-		
-		$compta_prodsell = $obj->accountancy_code_sell;
+
+		// Ref produit as link
+		$product_static->ref = $obj->ref;
+		$product_static->id = $obj->rowid;
+		$product_static->type = $obj->product_type;
+		$product_static->label = $obj->label;
+		$product_static->description = $obj->description;
+		$product_static->status = $obj->tosell;
+		$product_static->status_buy = $obj->tobuy;
 		
 		if ($obj->product_type == 0) {
 			$compta_prodsell = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
@@ -325,8 +373,6 @@ if ($result)
 			$compta_prodsell_id = $aarowid_servsell;
 		}
 		
-		$compta_prodbuy = $obj->accountancy_code_buy;
-		
 		if ($obj->product_type == 0) {
 			$compta_prodbuy = (! empty($conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT : $langs->trans("CodeNotDef"));
 			$compta_prodbuy_id = $aarowid_prodbuy;
@@ -335,30 +381,15 @@ if ($result)
 			$compta_prodbuy_id = $aarowid_servbuy;
 		}
 		
-		$product_static = new Product($db);
-		
-		print '<tr'. $bc[$var].'>';
-		
-		print "</tr>";
-		
+		$var = ! $var;
 		print '<tr '. $bc[$var].'>';
 		
-		// Ref produit as link
-		$product_static->ref = $obj->ref;
-		$product_static->id = $obj->rowid;
-		$product_static->type = $obj->type;
-		$product_static->label = $obj->label;
-		$product_static->description = $obj->description;
-		
 		print '<td>';
-		if ($product_static->id)
-			print $product_static->getNomUrl(1);
-		else
-			print '-&nbsp;';
+		print $product_static->getNomUrl(1);
 		print '</td>';
 		
 		print '<td align="left">'.$obj->label.'</td>';
-
+		
 		if (! empty($conf->global->ACCOUNTANCY_SHOW_PROD_DESC)) 
 		{
 		    // TODO ADJUST DESCRIPTION SIZE
@@ -368,24 +399,43 @@ if ($result)
     		print '<td style="' . $code_sell_p_l_differ . '">' . nl2br(dol_trunc($obj->description, $trunclengh)) . '</td>';
 		}
 		
-		// Accounting account buy
+		print '<td align="center">'.$product_static->getLibStatut(3, 0).'</td>';
+		
+		print '<td align="center">'.$product_static->getLibStatut(3, 1).'</td>';
+		
+		// Current accounting account
+		print '<td align="left">';
+		if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
+		    print length_accountg($obj->accountancy_code_buy);
+		    if ($obj->accountancy_code_buy && empty($obj->aaid)) print ' '.img_warning($langs->trans("ValueNotIntoChartOfAccount")); 
+		}
+		else
+		{
+		    print length_accountg($obj->accountancy_code_sell);
+		    if ($obj->accountancy_code_sell && empty($obj->aaid)) print ' '.img_warning($langs->trans("ValueNotIntoChartOfAccount")); 
+		}
+		print '</td>';
+		
+		// Dedicated account
+		$defaultvalue='';
 		if ($accounting_product_mode == 'ACCOUNTANCY_BUY') {
-			// print '<td align="left">' . $obj->accountancy_code_buy . '</td>';
-			// TODO: replace by select
-			// print '<td align="left">' . $compta_prodbuy . '</td>';
-			// TODO: we shoul set a user defined value to adjust user square / wide screen size
-			// $trunclenghform = defined('ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT') ? ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT : 50;
+    		// Accounting account buy
 			print '<td align="left">';
-			print $form->select_account($compta_prodbuy_id, 'codeventil_' . $product_static->id, 1);
+			//$defaultvalue=GETPOST('codeventil_' . $product_static->id,'alpha');        This is id and we need a code
+			if (empty($defaultvalue)) $defaultvalue=$compta_prodbuy;
+			$codesell=length_accountg($obj->accountancy_code_buy);
+			if (! empty($obj->aaid)) $defaultvalue = '';     // Do not suggest default new value is code is already valid
+			print $form->select_account($defaultvalue, 'codeventil_' . $product_static->id, 1, array(), 1);
 			print '</td>';
 		} else {
 			// Accounting account sell
-			// print '<td align="left">' . $obj->accountancy_code_sell . '</td>';
-			// TODO: replace by select
-			// TODO: we shoul set a user defined value to adjust user square / wide screen size
-			// $trunclenghform = defined('ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT') ? ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT : 50;
 			print '<td align="left">';
-			print $form->select_account($compta_prodsell_id, 'codeventil_' . $product_static->id, 1);
+			//$defaultvalue=GETPOST('codeventil_' . $product_static->id,'alpha');        This is id and we need a code
+			if (empty($defaultvalue)) $defaultvalue=$compta_prodsell;
+			$codesell=length_accountg($obj->accountancy_code_sell);
+			//var_dump($defaultvalue.' - '.$codesell.' - '.$compta_prodsell);
+			if (! empty($obj->aaid)) $defaultvalue = '';     // Do not suggest default new value is code is already valid
+			print $form->select_account($defaultvalue, 'codeventil_' . $product_static->id, 1, array(), 1);
 			print '</td>';
 		}
 		
@@ -397,7 +447,34 @@ if ($result)
 	}
 	print '</table>';
 	
-	print '<br><div align="center"><input type="submit" class="butAction" name="changeaccount" value="' . $langs->trans("Save") . '"></div>';
+	// Example : Adding jquery code
+	print '<script type="text/javascript" language="javascript">
+        jQuery(document).ready(function() {
+        	function init_savebutton()
+        	{
+	            console.log("We check if at least one line is checked")
+
+    			atleastoneselected=0;
+	    		jQuery(".checkforselect").each(function( index ) {
+	  				/* console.log( index + ": " + $( this ).text() ); */
+	  				if ($(this).is(\':checked\')) atleastoneselected++;
+	  			});
+	    
+	            if (atleastoneselected) jQuery("#changeaccount").removeAttr(\'disabled\');
+	            else jQuery("#changeaccount").attr(\'disabled\',\'disabled\');
+	            if (atleastoneselected) jQuery("#changeaccount").attr(\'class\',\'butAction\');
+	            else jQuery("#changeaccount").attr(\'class\',\'butActionRefused\');
+        	}
+        	jQuery(".checkforselect, #checkallactions").click(function() {
+        		init_savebutton();
+        	});
+
+        	init_savebutton();
+        });
+        </script>';
+	
+	
+	print '<br><div align="center"><input type="submit" class="butAction" id="changeaccount" name="changeaccount" value="' . $langs->trans("Save") . '"></div>';
 	
 	print '</form>';
 	
diff --git a/htdocs/accountancy/class/html.formventilation.class.php b/htdocs/accountancy/class/html.formventilation.class.php
index ac72df44e21e016851ff01f75db3dfd396a2e264..fab9e81031dfab3398b17b02445aabcb7efb17be 100644
--- a/htdocs/accountancy/class/html.formventilation.class.php
+++ b/htdocs/accountancy/class/html.formventilation.class.php
@@ -65,7 +65,7 @@ class FormVentilation extends Form
 	/**
 	 * Return list of accounts with label by chart of accounts
 	 *
-	 * @param string   $selectid           Preselected chart of accounts
+	 * @param string   $selectid           Preselected id or code of accounting accounts (depends on $select_in)
 	 * @param string   $htmlname           Name of field in html form
 	 * @param int      $showempty          Add an empty field
 	 * @param array    $event              Event options
@@ -99,26 +99,28 @@ class FormVentilation extends Form
 
 		$out = ajax_combobox($htmlname, $event);
 
+		// TODO Add $options in cache so next call will not execute the request
+		$selected = 0;
 		$options = array();
-		$selected = null;
-
-		while ($obj = $this->db->fetch_object($resql)) {
+		while ($obj = $this->db->fetch_object($resql)) 
+		{
 			$label = length_accountg($obj->account_number) . ' - ' . $obj->label;
 			$label = dol_trunc($label, $trunclength);
 
 			$select_value_in = $obj->rowid;
 			$select_value_out = $obj->rowid;
 
+			// Try to guess if we have found default value
 			if ($select_in == 1) {
 				$select_value_in = $obj->account_number;
 			}
 			if ($select_out == 1) {
 				$select_value_out = $obj->account_number;
 			}
-
 			// Remember guy's we store in database llx_facturedet the rowid of accounting_account and not the account_number
 			// Because same account_number can be share between different accounting_system and do have the same meaning
-			if (($selectid != '') && $selectid == $select_value_in) {
+			if ($selectid != '' && $selectid == $select_value_in) {
+			    //var_dump("Found ".$selectid." ".$select_value_in);
 				$selected = $select_value_out;
 			}
 
@@ -127,6 +129,7 @@ class FormVentilation extends Form
 
 		$out .= Form::selectarray($htmlname, $options, $selected, $showempty, 0, 0, '', 0, 0, 0, '', $morecss, 1);
 		$this->db->free($resql);
+		
 		return $out;
 	}
 
diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php
index d33fc82f3bc9ca663a4915891937e08267c40fad..b18923a1e1d57be91d27d0170b1936d8061cbe94 100644
--- a/htdocs/accountancy/customer/lines.php
+++ b/htdocs/accountancy/customer/lines.php
@@ -83,7 +83,7 @@ $formventilation = new FormVentilation($db);
  */
 
 // Purge search criteria
-if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers
+if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // All tests are required to be compatible with all browsers
 {
 	$search_ref = '';
 	$search_invoice = '';
@@ -254,6 +254,7 @@ if ($result) {
 	print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
 	
 	print '<tr class="liste_titre">';
+	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "fd.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Invoice"), $_SERVER["PHP_SELF"], "f.facnumber", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
@@ -263,21 +264,20 @@ if ($result) {
 	print_liste_field_titre($langs->trans("Account"), $_SERVER["PHP_SELF"], "aa.account_number", "", $param, 'align="center"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Country"), $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("VATIntra"), $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder);
-	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "fd.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre('', '', '', '', '', 'align="center"');
 	print "</tr>\n";
 
 	print '<tr class="liste_titre">';
-	print '<td class="liste_titre"><input type="text" class="flat" name="search_invoice" size="10" value="' . $search_invoice . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . $search_ref . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_desc" value="' . $search_desc . '"></td>';
+	print '<td class="liste_titre"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" name="search_invoice" size="6" value="' . $search_invoice . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_ref" value="' . $search_ref . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>';
 	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>';
 	print '<td class="liste_titre" align="center"><input type="text" class="flat" size="3" name="search_vat" value="' . $search_vat . '"></td>';
-	print '<td class="liste_titre" align="center"><input type="text" class="flat" size="10" name="search_account" value="' . $search_account . '"></td>';
+	print '<td class="liste_titre" align="center"><input type="text" class="flat" size="6" name="search_account" value="' . $search_account . '"></td>';
 	print '<td class="liste_titre"><input type="text" class="flat" name="search_country" size="5" value="' . $search_country . '"></td>';
 	print '<td class="liste_titre"><input type="text" class="flat" name="search_tavintra" size="5" value="' . $search_tavintra . '"></td>';
-	print '<td class="liste_titre" align="right"></td>';
 	print '<td class="liste_titre" align="right">';
 	$searchpitco=$form->showFilterAndCheckAddButtons(1);
 	print $searchpitco;
@@ -293,6 +293,8 @@ if ($result) {
 
 		print '<tr '. $bc[$var].'>';
 
+		print '<td align="right">' . $objp->rowid . '</td>';
+		
 		// Ref Invoice
 		$facture_static->ref = $objp->facnumber;
 		$facture_static->id = $objp->rowid;
@@ -319,7 +321,6 @@ if ($result) {
 		print '</a></td>';
 		print '<td>' . $objp->country .'</td>';
 		print '<td>' . $objp->tva_intra . '</td>';
-		print '<td align="right">' . $objp->rowid . '</td>';
 		print '<td align="right"><input type="checkbox" class="checkforaction" name="changeaccount[]" value="' . $objp->fdid . '"/></td>';
 
 		print "</tr>";
diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php
index 7c718c54bfb4913af3b313c70b60dcbf31381eef..84d5e3ffdeee67c482502c2053419ac1adac0ec9 100644
--- a/htdocs/accountancy/customer/list.php
+++ b/htdocs/accountancy/customer/list.php
@@ -158,9 +158,10 @@ if ($action == 'ventil' && ! empty($btn_ventil)) {
 llxHeader('', $langs->trans("Ventilation"));
 
 // Customer Invoice lines
-$sql = "SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype, l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line,";
+$sql = "SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype,";
+$sql .= " l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line,";
 $sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod,";
-$sql .= "  aa.rowid as aarowid";
+$sql .= " aa.rowid as aarowid";
 $sql .= " FROM " . MAIN_DB_PREFIX . "facture as f";
 $sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facturedet as l ON f.rowid = l.fk_facture";
 $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
@@ -237,6 +238,7 @@ if ($result) {
 	
 	print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
 	print '<tr class="liste_titre">';
+	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Invoice"), $_SERVER["PHP_SELF"], "f.facnumber", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
@@ -245,19 +247,18 @@ if ($result) {
 	print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("AccountAccountingSuggest"), '', '', '', '', 'align="center"');
 	print_liste_field_titre($langs->trans("IntoAccount"), '', '', '', '', 'align="center"');
-	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre('', '', '', '', '', 'align="center"');
 	print '</tr>';
 
 	// We add search filter
 	print '<tr class="liste_titre">';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_invoice" value="' . $search_invoice . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . $search_ref . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_desc" value="' . $search_desc . '"></td>';
-	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="10" name="search_amount" value="' . $search_amount . '"></td>';
-	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="3" name="search_vat" value="' . $search_vat . '">%</td>';
 	print '<td class="liste_titre"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_invoice" value="' . $search_invoice . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_ref" value="' . $search_ref . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>';
+	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>';
+	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="3" name="search_vat" value="' . $search_vat . '">%</td>';
 	print '<td class="liste_titre"></td>';
 	print '<td class="liste_titre"></td>';
 	print '<td align="right" class="liste_titre">';
@@ -278,42 +279,44 @@ if ($result) {
 		$objp->code_sell_l = '';
 		$objp->code_sell_p = '';
 		$objp->aarowid_suggest = '';
-		$code_sell_p_l_differ = '';
 
 		$code_sell_p_notset = '';
 		$objp->aarowid_suggest = $objp->aarowid;
 
-		if (! empty($objp->code_sell)) {
-			$objp->code_sell_p = $objp->code_sell;
-		} else {
-			$code_sell_p_notset = 'color:red';
-			if ($objp->type == 1) {
-				$objp->code_sell_p = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
-			} elseif ($objp->type == 0) {
-				$objp->code_sell_p = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
-			}
-		}
 		if ($objp->type_l == 1) {
-			$objp->code_sell_l = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
+			$objp->code_sell_l = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : '');
 			if ($objp->aarowid == '') {
 				$objp->aarowid_suggest = $aarowid_s;
 			}
 		} elseif ($objp->type_l == 0) {
-			$objp->code_sell_l = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef"));
+			$objp->code_sell_l = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : '');
 			if ($objp->aarowid == '') {
 				$objp->aarowid_suggest = $aarowid_p;
 			}
 		}
-		if ($objp->code_sell_l != $objp->code_sell_p)
-			$code_sell_p_l_differ = 'color:red';
+		if ($objp->code_sell_l == -1) $objp->code_sell_l='';
 
+		if (! empty($objp->code_sell)) {
+			$objp->code_sell_p = $objp->code_sell;       // Code on product
+		} else {
+    	    $code_sell_p_notset = 'color:orange';
+		}
+		if (empty($objp->code_sell_l) && empty($objp->code_sell_p)) $code_sell_p_notset = 'color:red';
+		
+		// $objp->code_sell_p is now code of product/service
+		// $objp->code_sell_l is now default code of product/service
+					
 		print '<tr '. $bc[$var].'>';
 
+		// Line id
+		print '<td align="center">' . $objp->rowid . '</td>';
+		
 		// Ref Invoice
 		$facture_static->ref = $objp->facnumber;
 		$facture_static->id = $objp->facid;
 		$facture_static->type = $objp->ftype;
 		print '<td>' . $facture_static->getNomUrl(1) . '</td>';
+
 		// Ref Product
 		$product_static->ref = $objp->product_ref;
 		$product_static->id = $objp->product_id;
@@ -327,9 +330,9 @@ if ($result) {
 
 		print '</td>';
 
-		print '<td style="' . $code_sell_p_l_differ . '">' . dol_trunc($objp->product_label, 24) . '</td>';
+		print '<td>' . dol_trunc($objp->product_label, 24) . '</td>';
 		$trunclength = defined('ACCOUNTING_LENGTH_DESCRIPTION') ? ACCOUNTING_LENGTH_DESCRIPTION : 32;
-		print '<td style="' . $code_sell_p_l_differ . '">' . nl2br(dol_trunc($objp->description, $trunclength)) . '</td>';
+		print '<td>' . nl2br(dol_trunc($objp->description, $trunclength)) . '</td>';
 		
 		print '<td align="right">';
 		print price($objp->total_ht);
@@ -342,15 +345,13 @@ if ($result) {
 		print price($objp->tva_tx_line);
 		print '</td>';
 		
-		// Accounting account suggested
+		// Suggested accounting account
 		print '<td align="center" style="' . $code_sell_p_notset . '">';
-		if ($objp->code_sell_l == $objp->code_sell_p) {               // Test if there is a difference between code by default and code on product
-		    if ($objp->code_sell_l > 0) print $objp->code_sell_l;
-		    else print $langs->trans("Unknown");
-		} else {
-			print $langs->trans("Default") . ' = ' . ($objp->code_sell_l > 0 ? $objp->code_sell_l : $langs->trans("Unknown"));
-			print '<br>';
-			print $langs->trans("Product") . ' = ' . ($objp->code_sell_p > 0 ? $objp->code_sell_p : $langs->trans("Unknown"));
+	    print (($objp->type_l == 1)?$langs->trans("DefaultForService"):$langs->trans("DefaultForProduct")) . ' = ' . ($objp->code_sell_l > 0 ? length_accountg($objp->code_sell_l) : $langs->trans("Unknown"));
+		if ($objp->product_id > 0)
+		{
+		    print '<br>';
+		    print (($objp->type_l == 1)?$langs->trans("ThisService"):$langs->trans("ThisProduct")) . ' = ' . (empty($objp->code_sell_p) ? $langs->trans("Unknown") : length_accountg($objp->code_sell_p));
 		}
 		print '</td>';
 
@@ -358,9 +359,6 @@ if ($result) {
 		print $formventilation->select_account($objp->aarowid_suggest, 'codeventil'.$objp->rowid, 1);
 		print '</td>';
 		
-		// Line id
-		print '<td align="center">' . $objp->rowid . '</td>';
-		
 		print '<td align="right">';
 		print '<input type="checkbox" class="checkforaction" name="mesCasesCochees[]" value="' . $objp->rowid . "_" . $i . '"' . ($objp->aarowid ? "checked" : "") . '/>';
 		print '</td>';
diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php
index 9720aba485dbba9de5687cf602d9139a785e45d9..14a3d69a4ea88e22ddeaa5305d4016c82f833b73 100644
--- a/htdocs/accountancy/expensereport/lines.php
+++ b/htdocs/accountancy/expensereport/lines.php
@@ -230,24 +230,25 @@ if ($result) {
 	print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
 
 	print '<tr class="liste_titre">';
+	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "erd.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("ExpenseReport"), $_SERVER["PHP_SELF"], "er.ref", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("TypeFees"), $_SERVER["PHP_SELF"], "f.label", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Description"), $_SERVER["PHP_SELF"], "erd.comments", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Amount"), $_SERVER["PHP_SELF"], "erd.total_ht", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "erd.tva_tx", "", $param, 'align="center"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Account"), $_SERVER["PHP_SELF"], "aa.account_number", "", $param, 'align="center"', $sortfield, $sortorder);
-	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "erd.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre('');
 	print_liste_field_titre('', '', '', '', '', 'align="center"');
 	print "</tr>\n";
 
-	print '<tr class="liste_titre"><td><input type="text" class="flat" name="search_expensereport" size="10" value="' . $search_expensereport . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_desc" value="' . $search_desc . '"></td>';
+	print '<tr class="liste_titre">';
+	print '<td class="liste_titre" align="right"></td>';
+	print '<td><input type="text" class="flat" name="search_expensereport" size="6" value="' . $search_expensereport . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>';
 	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>';
 	print '<td class="liste_titre" align="center"><input type="text" class="flat" size="3" name="search_vat" value="' . $search_vat . '"></td>';
-	print '<td class="liste_titre" align="center"><input type="text" class="flat" size="10" name="search_account" value="' . $search_account . '"></td>';
-	print '<td class="liste_titre" align="right"></td>';
+	print '<td class="liste_titre" align="center"><input type="text" class="flat" size="6" name="search_account" value="' . $search_account . '"></td>';
     print '<td class="liste_titre" align="right"></td>';
     print '<td class="liste_titre" align="right">';
     $searchpicto=$form->showFilterAndCheckAddButtons(1);
@@ -265,6 +266,8 @@ if ($result) {
 
 		print '<tr '. $bc[$var].'>';
 
+		print '<td align="right">' . $objp->rowid . '</td>';
+
 		// Ref Invoice
 		$expensereport_static->ref = $objp->ref;
 		$expensereport_static->id = $objp->erid;
@@ -281,8 +284,6 @@ if ($result) {
 
 		print '<td>' . $codeCompta . '</td>';
 
-		print '<td align="right">' . $objp->rowid . '</td>';
-
 		print '<td align="left"><a href="./card.php?id=' . $objp->rowid . '">';
 		print img_edit();
 		print '</a></td>';
diff --git a/htdocs/accountancy/expensereport/list.php b/htdocs/accountancy/expensereport/list.php
index 943105a00faebb4feb6bf2ec860e8e429e079082..b9e929cab0438233eee13fa52e3f7aa13f5ce3c4 100644
--- a/htdocs/accountancy/expensereport/list.php
+++ b/htdocs/accountancy/expensereport/list.php
@@ -233,6 +233,7 @@ if ($result) {
 
 	print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
 	print '<tr class="liste_titre">';
+	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "erd.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("ExpenseReport"), $_SERVER["PHP_SELF"], "er.ref", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("TypeFees"), $_SERVER["PHP_SELF"], "f.label", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Description"), $_SERVER["PHP_SELF"], "erd.comments", "", $param, '', $sortfield, $sortorder);
@@ -240,19 +241,18 @@ if ($result) {
 	print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "erd.tva_tx", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("AccountAccountingSuggest"), '', '', '', '', 'align="center"');
 	print_liste_field_titre($langs->trans("IntoAccount"), '', '', '', '', 'align="center"');
-	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "erd.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre('', '', '', '', '', 'align="center"');
 	print "</tr>\n";
 
 	print '<tr class="liste_titre">';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_expensereport" value="' . $search_expensereport . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_desc" value="' . $search_desc . '"></td>';
+	print '<td class="liste_titre"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_expensereport" value="' . $search_expensereport . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>';
 	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>';
 	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="5" name="search_vat" value="' . $search_vat . '"></td>';
 	print '<td class="liste_titre"></td>';
 	print '<td class="liste_titre"></td>';
-	print '<td class="liste_titre"></td>';
 	print '<td align="right" class="liste_titre">';
 	$searchpicto=$form->showFilterAndCheckAddButtons(1);
 	print $searchpicto;
@@ -272,6 +272,9 @@ if ($result) {
 
 		print '<tr '. $bc[$var].'>';
 
+		// Line id
+		print '<td align="center">' . $objp->rowid . '</td>';
+
 		// Ref Expense report
 		$expensereport_static->ref = $objp->ref;
 		$expensereport_static->id = $objp->erid;
@@ -306,9 +309,6 @@ if ($result) {
 		print $formventilation->select_account($objp->aarowid_suggest, 'codeventil'.$objp->rowid, 1);
 		print '</td>';
 
-		// Line id
-		print '<td align="center">' . $objp->rowid . '</td>';
-
 		// Colonne choix ligne a ventiler
 		print '<td align="right">';
 		print '<input type="checkbox" class="checkforaction" name="mesCasesCochees[]" value="' . $objp->rowid . "_" . $i . '"' . ($objp->aarowid ? "checked" : "") . '/>';
diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php
index 94af5c82dba99807ff286cc11897840b72c1ecab..09422eb5b9311b22cd2785fe4753c305b2402cfb 100644
--- a/htdocs/accountancy/supplier/lines.php
+++ b/htdocs/accountancy/supplier/lines.php
@@ -82,7 +82,7 @@ $formventilation = new FormVentilation($db);
  */
 
 // Purge search criteria
-if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers
+if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // All tests are required to be compatible with all browsers
 {
 	$search_ref = '';
 	$search_invoice = '';
@@ -237,6 +237,7 @@ if ($result) {
 	print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
 	
 	print '<tr class="liste_titre">';
+	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Invoice"), $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
@@ -244,20 +245,20 @@ if ($result) {
 	print_liste_field_titre($langs->trans("Amount"), $_SERVER["PHP_SELF"], "l.total_ht", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, 'align="center"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Account"), $_SERVER["PHP_SELF"], "aa.account_number", "", $param, 'align="center"', $sortfield, $sortorder);
-	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre('');
 	print_liste_field_titre('', '', '', '', '', 'align="center"');
 	print "</tr>\n";
 	
-	print '<tr class="liste_titre"><td><input type="text" class="flat" name="search_invoice" size="10" value="' . $search_invoice . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . $search_ref . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_desc" value="' . $search_desc . '"></td>';
+	print '<tr class="liste_titre">';
+    print '<td class="liste_titre"></td>';
+	print '<td><input type="text" class="flat" name="search_invoice" size="6" value="' . $search_invoice . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_ref" value="' . $search_ref . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>';
 	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>';
 	print '<td class="liste_titre" align="center"><input type="text" class="flat" size="3" name="search_vat" value="' . $search_vat . '"></td>';
-	print '<td class="liste_titre" align="center"><input type="text" class="flat" size="10" name="search_account" value="' . $search_account . '"></td>';
+	print '<td class="liste_titre" align="center"><input type="text" class="flat" size="6" name="search_account" value="' . $search_account . '"></td>';
 	print '<td class="liste_titre" align="right"></td>';
-    print '<td class="liste_titre" align="right"></td>';
     print '<td class="liste_titre" align="right">';
     $searchpitco=$form->showFilterAndCheckAddButtons(1);
     print $searchpitco;
@@ -275,6 +276,8 @@ if ($result) {
 		
 		print '<tr '. $bc[$var].'>';
 		
+		print '<td align="right">' . $objp->rowid . '</td>';
+		
 		// Ref Invoice
 		$facturefournisseur_static->ref = $objp->facnumber;
 		$facturefournisseur_static->id = $objp->facid;
@@ -297,7 +300,6 @@ if ($result) {
 		print '<td align="right">' . price($objp->total_ht) . '</td>';
 		print '<td align="center">' . price($objp->tva_tx) . '</td>';
 		print '<td>' . $codeCompta . '</td>';
-		print '<td align="right">' . $objp->rowid . '</td>';
 		print '<td align="left"><a href="./card.php?id=' . $objp->rowid . '">';
 		print img_edit();
 		print '</a></td>';
diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php
index bd0dac490960d96734299a49ab1ab9a345ac663e..e103c35810a7336c7afbb05799e1671c27fa9232 100644
--- a/htdocs/accountancy/supplier/list.php
+++ b/htdocs/accountancy/supplier/list.php
@@ -164,9 +164,10 @@ if ($action == 'ventil' && ! empty($btn_ventil)) {
 llxHeader('', $langs->trans("SuppliersVentilation"));
 
 // Supplier Invoice Lines
-$sql = "SELECT f.ref, f.rowid as facid, f.ref_supplier, f.datef, l.fk_product, l.description, l.total_ht as price, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, ";
-$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_buy as code_buy, p.tva_tx as tva_tx_prod";
-$sql .= " , aa.rowid as aarowid";
+$sql = "SELECT f.ref, f.rowid as facid, f.ref_supplier, f.datef,";
+$sql .= " l.fk_product, l.description, l.total_ht as price, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, ";
+$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_buy as code_buy, p.tva_tx as tva_tx_prod,";
+$sql .= " aa.rowid as aarowid";
 $sql .= " FROM " . MAIN_DB_PREFIX . "facture_fourn as f";
 $sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture_fourn_det as l ON f.rowid = l.fk_facture_fourn";
 $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
@@ -243,6 +244,7 @@ if ($result) {
 	
     print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
 	print '<tr class="liste_titre">';
+	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Invoice"), $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
@@ -251,20 +253,19 @@ if ($result) {
 	print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre($langs->trans("AccountAccountingSuggest"), '', '', '', '', 'align="center"');
 	print_liste_field_titre($langs->trans("IntoAccount"), '', '', '', '', 'align="center"');
-	print_liste_field_titre($langs->trans("LineId"), $_SERVER["PHP_SELF"], "l.rowid", "", $param, 'align="right"', $sortfield, $sortorder);
 	print_liste_field_titre('', '', '', '', '', 'align="center"');
 	print "</tr>\n";
 
 	print '<tr class="liste_titre">';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_invoice" value="' . $search_invoice . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . $search_ref . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_label" value="' . $search_label . '"></td>';
-	print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_desc" value="' . $search_desc . '"></td>';
+	print '<td class="liste_titre"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_invoice" value="' . $search_invoice . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_ref" value="' . $search_ref . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_label" value="' . $search_label . '"></td>';
+	print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_desc" value="' . $search_desc . '"></td>';
 	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="6" name="search_amount" value="' . $search_amount . '"></td>';
 	print '<td class="liste_titre" align="right"><input type="text" class="flat" size="5" name="search_vat" value="' . $search_vat . '"></td>';
 	print '<td class="liste_titre"></td>';
 	print '<td class="liste_titre"></td>';
-	print '<td class="liste_titre"></td>';
 	print '<td align="right" class="liste_titre">';
 	$searchpitco=$form->showFilterAndCheckAddButtons(1);
 	print $searchpitco;
@@ -286,39 +287,36 @@ if ($result) {
 		$objp->code_buy_l = '';
 		$objp->code_buy_p = '';
 		$objp->aarowid_suggest = '';
-		$code_buy_p_l_differ = '';
 
 		$code_buy_p_notset = '';
-
 		$objp->aarowid_suggest = $objp->aarowid;
-		if (! empty($objp->code_buy)) {
-			$objp->code_buy_p = $objp->code_buy;
-		} else {
-			$code_buy_p_notset = 'color:red';
-			if ($objp->type == 1) {
-				$objp->code_buy_p = (! empty($conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT : $langs->trans("CodeNotDef"));
-			} 
-
-			elseif ($objp->type == 0) {
-				$objp->code_buy_p = (! empty($conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT : $langs->trans("CodeNotDef"));
-			}
-		}
 
 		if ($objp->type_l == 1) {
-			$objp->code_buy_l = (! empty($conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT : $langs->trans("CodeNotDef"));
+			$objp->code_buy_l = (! empty($conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT : '');
 			if ($objp->aarowid == '')
 				$objp->aarowid_suggest = $aarowid_s;
 		} elseif ($objp->type_l == 0) {
-			$objp->code_buy_l = (! empty($conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT : $langs->trans("CodeNotDef"));
+			$objp->code_buy_l = (! empty($conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT : '');
 			if ($objp->aarowid == '')
 				$objp->aarowid_suggest = $aarowid_p;
 		}
-
-		if ($objp->code_buy_l != $objp->code_buy_p)
-			$code_buy_p_l_differ = 'color:red';
+		if ($objp->code_buy_l == -1) $objp->code_buy_l='';
+		
+		if (! empty($objp->code_buy)) {
+			$objp->code_buy_p = $objp->code_buy;
+		} else {
+			$code_buy_p_notset = 'color:orange';
+		}
+		if (empty($objp->code_buy_l) && empty($objp->code_buy_p)) $code_buy_p_notset = 'color:red';
 		
+		// $objp->code_buy_p is now code of product/service
+		// $objp->code_buy_l is now default code of product/service
+					
 		print '<tr '. $bc[$var].'>';
 
+		// Line id
+		print '<td align="center">' . $objp->rowid . '</td>';
+		
 		// Ref Invoice
 		$facturefourn_static->ref = $objp->ref;
 		$facturefourn_static->id = $objp->facid;
@@ -335,11 +333,11 @@ if ($result) {
 			print '&nbsp;';
 		print '</td>';
 
-		print '<td style="' . $code_buy_p_l_differ . '">' . dol_trunc($objp->product_label, 24) . '</td>';
+		print '<td>' . dol_trunc($objp->product_label, 24) . '</td>';
 
 		// TODO: we should set a user defined value to adjust user square / wide screen size
 		$trunclength = defined('ACCOUNTING_LENGTH_DESCRIPTION') ? ACCOUNTING_LENGTH_DESCRIPTION : 32;
-		print '<td style="' . $code_buy_p_l_differ . '">' . nl2br(dol_trunc($objp->description, $trunclength)) . '</td>';
+		print '<td>' . nl2br(dol_trunc($objp->description, $trunclength)) . '</td>';
 
 		print '<td align="right">';
 		print price($objp->price);
@@ -354,24 +352,19 @@ if ($result) {
 
 		// Accounting account suggested
 		print '<td align="center" style="' . $code_buy_p_notset . '">';
-		if ($objp->code_buy_l == $objp->code_buy_p) {               // Test if there is a difference between code by default and code on product
-		    if ($objp->code_buy_l > 0) print $objp->code_buy_l;
-		    else print $langs->trans("Unknown");
-		} else {
-		    print $langs->trans("Default") . ' = ' . ($objp->code_buy_l > 0 ? $objp->code_buy_l : $langs->trans("Unknown"));
+		print (($objp->type_l == 1)?$langs->trans("DefaultForService"):$langs->trans("DefaultForProduct")) . ' = ' . ($objp->code_buy_l > 0 ? length_accountg($objp->code_buy_l) : $langs->trans("Unknown"));
+		if ($objp->product_id > 0)
+		{
 		    print '<br>';
-		    print $langs->trans("Product") . ' = ' . ($objp->code_buy_p > 0 ? $objp->code_buy_p : $langs->trans("Unknown"));
+		    print (($objp->type_l == 1)?$langs->trans("ThisService"):$langs->trans("ThisProduct")) . ' = ' . (empty($objp->code_buy_p) ? $langs->trans("Unknown") : length_accountg($objp->code_buy_p));
 		}
 		print '</td>';
 
-		// Colonne choix du compte
+		// Suggested accounting account
 		print '<td align="center">';
 		print $formventilation->select_account($objp->aarowid_suggest, 'codeventil'.$objp->rowid, 1);
 		print '</td>';
 		
-		// Line id
-		print '<td align="center">' . $objp->rowid . '</td>';
-		
 		// Colonne choix ligne a ventiler
 		print '<td align="right">';
 		print '<input type="checkbox" class="checkforaction" name="mesCasesCochees[]" value="' . $objp->rowid . "_" . $i . '"' . ($objp->aarowid ? "checked" : "") . '/>';
diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php
index 191b23bea323e92ec490cdf6b4fa9e6943f0d051..79aa64fb1abaaaf7932f768e4a25d551b9b83666 100644
--- a/htdocs/adherents/class/adherent.class.php
+++ b/htdocs/adherents/class/adherent.class.php
@@ -1146,12 +1146,12 @@ class Adherent extends CommonObject
                 $this->birth			= $this->db->jdate($obj->birthday);
 
                 $this->note_private		= $obj->note_private;
-                $this->note_public      = $obj->note_public;
+                $this->note_public      	= $obj->note_public;
                 $this->morphy			= $obj->morphy;
 
                 $this->typeid			= $obj->fk_adherent_type;
-                $this->type				= $obj->type;
-                $this->need_subscription = ($obj->subscription=='yes'?1:0);
+                $this->type			= $obj->type;
+                $this->need_subscription 	= $obj->subscription;
 
                 $this->user_id			= $obj->user_id;
                 $this->user_login		= $obj->user_login;
@@ -1682,6 +1682,17 @@ class Adherent extends CommonObject
             if ($statut == 0)  return img_picto($langs->trans('MemberStatusResiliated'),'statut5').' '.$langs->trans("MemberStatusResiliated");
         }
         if ($mode == 5)
+        {
+            if ($statut == -1) return $langs->trans("MemberStatusDraft").' '.img_picto($langs->trans('MemberStatusDraft'),'statut0');
+            if ($statut >= 1)
+            {
+                if (! $date_end_subscription)            return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusActiveShort").' </span>'.img_picto($langs->trans('MemberStatusActive'),'statut1');
+                elseif ($date_end_subscription < time()) return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusActiveLateShort").' </span>'.img_picto($langs->trans('MemberStatusActiveLate'),'statut3');
+                else                                     return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusPaidShort").' </span>'.img_picto($langs->trans('MemberStatusPaid'),'statut4');
+            }
+            if ($statut == 0)  return '<span class="hideonsmartphone">'.$langs->trans("MemberStatusResiliated").' </span>'.img_picto($langs->trans('MemberStatusResiliated'),'statut5');
+        }
+        if ($mode == 6)
         {
             if ($statut == -1) return $langs->trans("MemberStatusDraft").' '.img_picto($langs->trans('MemberStatusDraft'),'statut0');
             if ($statut >= 1)
diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php
index c98ad4abf3117c64870399d0b1d284a6c4de4ded..0727002aa59087806a51c6219a321e271a5e8139 100644
--- a/htdocs/adherents/list.php
+++ b/htdocs/adherents/list.php
@@ -809,7 +809,7 @@ while ($i < $num && $i < $conf->liste_limit)
 	if (! empty($arrayfields['d.statut']['checked']))
 	{
 	    print '<td align="right" class="nowrap">';
-	    print $memberstatic->LibStatut($obj->statut,$obj->subscription,$datefin,2);
+	    print $memberstatic->LibStatut($obj->statut,$obj->subscription,$datefin,5);
 	    print '</td>';
 	    if (! $i) $totalarray['nbfield']++;
 	}
diff --git a/htdocs/admin/agenda_other.php b/htdocs/admin/agenda_other.php
index 9ea048c27fdbf103840a16f7e277029fa7be4fe5..e6bb4a2914f3643c16b8435536faec7a0a1ee9eb 100644
--- a/htdocs/admin/agenda_other.php
+++ b/htdocs/admin/agenda_other.php
@@ -1,9 +1,9 @@
 <?php
-/* Copyright (C) 2008-2015	Laurent Destailleur     <eldy@users.sourceforge.net>
+/* Copyright (C) 2008-2016	Laurent Destailleur     <eldy@users.sourceforge.net>
  * Copyright (C) 2011		Regis Houssin           <regis.houssin@capnetworks.com>
- * Copyright (C) 2011-2013  	Juanjo Menent           <jmenent@2byte.es>
- * Copyright (C) 2015		Jean-François Ferry	<jfefe@aternatik.fr>
- * Copyright (C) 2016		Charlie Benke		<charlie@patas-monkey.com>
+ * Copyright (C) 2011-2013  Juanjo Menent           <jmenent@2byte.es>
+ * Copyright (C) 2015		Jean-François Ferry	    <jfefe@aternatik.fr>
+ * Copyright (C) 2016		Charlie Benke		    <charlie@patas-monkey.com>
  *
  * 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
@@ -28,7 +28,7 @@
 require '../main.inc.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/agenda.lib.php';
-require_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
 
 if (!$user->admin)
     accessforbidden();
@@ -370,6 +370,7 @@ print '</td></tr>'."\n";
 if (! empty($conf->global->AGENDA_USE_EVENT_TYPE))
 {
     $var=!$var;
+    print '<!-- AGENDA_USE_EVENT_TYPE_DEFAULT -->';
     print '<tr '.$bc[$var].'>'."\n";
     print '<td>'.$langs->trans("AGENDA_USE_EVENT_TYPE_DEFAULT").'</td>'."\n";
     print '<td align="center">&nbsp;</td>'."\n";
@@ -384,7 +385,7 @@ print '<tr '.$bc[$var].'>'."\n";
 print '<td>'.$langs->trans("AGENDA_DEFAULT_FILTER_TYPE").'</td>'."\n";
 print '<td align="center">&nbsp;</td>'."\n";
 print '<td align="right" class="nowrap">'."\n";
-$formactions->select_type_actions($conf->global->AGENDA_DEFAULT_FILTER_TYPE, "AGENDA_DEFAULT_FILTER_TYPE", '', (empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : 0), 1);
+$formactions->select_type_actions($conf->global->AGENDA_DEFAULT_FILTER_TYPE, "AGENDA_DEFAULT_FILTER_TYPE", '', (empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : -1), 1);
 print '</td></tr>'."\n";
 
 // AGENDA_DEFAULT_FILTER_STATUS
@@ -393,7 +394,7 @@ print '<tr '.$bc[$var].'>'."\n";
 print '<td>'.$langs->trans("AGENDA_DEFAULT_FILTER_STATUS").'</td>'."\n";
 print '<td align="center">&nbsp;</td>'."\n";
 print '<td align="right">'."\n";
-$formactions->form_select_status_action('agenda',$conf->global->AGENDA_DEFAULT_FILTER_STATUS,1,'AGENDA_DEFAULT_FILTER_STATUS',1,2);
+$formactions->form_select_status_action('agenda', $conf->global->AGENDA_DEFAULT_FILTER_STATUS, 1, 'AGENDA_DEFAULT_FILTER_STATUS', 1, 2);
 print '</td></tr>'."\n";
 
 // AGENDA_DEFAULT_VIEW
diff --git a/htdocs/admin/confexped.php b/htdocs/admin/confexped.php
index bf4a09c0ada5fe86286bd83e2b9c5b28fe11fe35..859534d53fd352e7ce64bbb4df84b3a74ccee8f2 100644
--- a/htdocs/admin/confexped.php
+++ b/htdocs/admin/confexped.php
@@ -87,14 +87,14 @@ else if ($action == 'disable_delivery')
 $dir = DOL_DOCUMENT_ROOT."/core/modules/expedition/";
 $form=new Form($db);
 
-llxHeader("","");
+llxHeader("",$langs->trans("SendingsSetup"));
 
 $linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
 print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup');
 print '<br>';
 $head = expedition_admin_prepare_head();
 
-dol_fiche_head($head, 'general', $langs->trans("ModuleSetup"), 0, 'sending');
+dol_fiche_head($head, 'general', $langs->trans("Sendings"), 0, 'sending');
 
 /*
  * Formulaire parametres divers
diff --git a/htdocs/admin/expedition.php b/htdocs/admin/expedition.php
index 42741b49c7ae7aad54b302f8b05a541b4bf0b19c..34a561121b2c3a238a0f2760a5711804482222ed 100644
--- a/htdocs/admin/expedition.php
+++ b/htdocs/admin/expedition.php
@@ -215,7 +215,7 @@ $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
 
 $form=new Form($db);
 
-llxHeader("","");
+llxHeader("",$langs->trans("SendingsSetup"));
 
 $linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
 print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup');
diff --git a/htdocs/admin/supplier_order.php b/htdocs/admin/supplier_order.php
index 5d0cf665d7cbf915953a111c4ea7035099c6a200..5c288b9e78ac312497b3dc00793a7135c9e85a16 100644
--- a/htdocs/admin/supplier_order.php
+++ b/htdocs/admin/supplier_order.php
@@ -497,7 +497,7 @@ $var=false;
 	print $form->textwithpicto($langs->trans("UseDoubleApproval"), $langs->trans("Use3StepsApproval"), 1, 'help').'<br>';
 	print $langs->trans("IfSetToYesDontForgetPermission");
 	print '</td><td>';
-	print '<input type="text" size="3" name="SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED" value="'.$conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED.'">';
+	print '<input type="text" size="6" name="SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED" value="'.$conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED.'">';
 	print '</td><td align="right">';
 	print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
 	print "</td></tr>\n";
diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php
index 365cfaa449dabcaf0689aa422a2493938fc4af01..ff7a16d1893ba9b94cc0af25c85be95ce4f5e6ba 100644
--- a/htdocs/admin/system/database.php
+++ b/htdocs/admin/system/database.php
@@ -88,7 +88,7 @@ else
 		{
 			$arraytest=array(
 				'character_set_database'=>array('var'=>'dolibarr_main_db_character_set','valifempty'=>'utf8'),
-				'collation_database'=>array('var'=>'dolibarr_main_db_collation','valifempty'=>'utf8_general_ci')
+				'collation_database'=>array('var'=>'dolibarr_main_db_collation','valifempty'=>'utf8_unicode_ci')
 			);
 		}
 
diff --git a/htdocs/admin/system/dolibarr.php b/htdocs/admin/system/dolibarr.php
index eeea93a2feaef1adb34c64c71466534dce48407d..2fe87a02e632bc8453da490ec4c8dba15a1ea557 100644
--- a/htdocs/admin/system/dolibarr.php
+++ b/htdocs/admin/system/dolibarr.php
@@ -40,20 +40,22 @@ if (! $user->admin)
 
 $form=new Form($db);
 
-llxHeader();
+$title=$langs->trans("InfoDolibarr");
 
-print load_fiche_titre($langs->trans("InfoDolibarr"),'','title_setup');
+llxHeader('', $title);
+
+print load_fiche_titre($title,'','title_setup');
 
 // Version
 $var=true;
 print '<table class="noborder" width="100%">';
-print '<tr class="liste_titre"><td>'.$langs->trans("Version").'</td><td>'.$langs->trans("Value").'</td></tr>'."\n";
+print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("Version").'</td><td>'.$langs->trans("Value").'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("VersionLastInstall").'</td><td>'.$conf->global->MAIN_VERSION_LAST_INSTALL.'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>'.$langs->trans("VersionLastInstall").'</td><td>'.$conf->global->MAIN_VERSION_LAST_INSTALL.'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("VersionLastUpgrade").'</td><td>'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>'.$langs->trans("VersionLastUpgrade").'</td><td>'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("VersionProgram").'</td><td>'.DOL_VERSION;
+print '<tr '.$bc[$var].'><td>'.$langs->trans("VersionProgram").'</td><td>'.DOL_VERSION;
 // If current version differs from last upgrade
 if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE))
 {
@@ -72,30 +74,30 @@ print '<br>';
 // Session
 $var=true;
 print '<table class="noborder" width="100%">';
-print '<tr class="liste_titre"><td>'.$langs->trans("Session").'</td><td colspan="2">'.$langs->trans("Value").'</td></tr>'."\n";
+print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("Session").'</td><td colspan="2">'.$langs->trans("Value").'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("SessionSavePath").'</td><td colspan="2">'.session_save_path().'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>'.$langs->trans("SessionSavePath").'</td><td colspan="2">'.session_save_path().'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("SessionName").'</td><td colspan="2">'.session_name().'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>'.$langs->trans("SessionName").'</td><td colspan="2">'.session_name().'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("SessionId").'</td><td colspan="2">'.session_id().'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>'.$langs->trans("SessionId").'</td><td colspan="2">'.session_id().'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentSessionTimeOut").'</td><td>'.ini_get('session.gc_maxlifetime').' '.$langs->trans("seconds");
+print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentSessionTimeOut").'</td><td>'.ini_get('session.gc_maxlifetime').' '.$langs->trans("seconds");
 print '</td><td align="right">';
 print $form->textwithpicto('',$langs->trans("SessionExplanation",ini_get("session.gc_probability"),ini_get("session.gc_divisor")));
 print "</td></tr>\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentTheme").'</td><td colspan="2">'.$conf->theme.'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentTheme").'</td><td colspan="2">'.$conf->theme.'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentMenuHandler").'</td><td colspan="2">';
+print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentMenuHandler").'</td><td colspan="2">';
 print $conf->standard_menu;
 print '</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("Screen").'</td><td colspan="2">';
+print '<tr '.$bc[$var].'><td>'.$langs->trans("Screen").'</td><td colspan="2">';
 print $_SESSION['dol_screenwidth'].' x '.$_SESSION['dol_screenheight'];
 print '</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("Session").'</td><td colspan="2">';
+print '<tr '.$bc[$var].'><td>'.$langs->trans("Session").'</td><td colspan="2">';
 $i=0;
 foreach($_SESSION as $key => $val)
 {
@@ -116,7 +118,7 @@ if (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_S
 	$var=true;
 	print '<table class="noborder" width="100%">';
 	print '<tr class="liste_titre">';
-	print '<td>'.$langs->trans("LanguageFilesCachedIntoShmopSharedMemory").'</td>';
+	print '<td class="titlefield">'.$langs->trans("LanguageFilesCachedIntoShmopSharedMemory").'</td>';
 	print '<td>'.$langs->trans("NbOfEntries").'</td>';
 	print '<td align="right">'.$langs->trans("Address").'</td>';
 	print '</tr>'."\n";
@@ -124,7 +126,7 @@ if (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_S
 	foreach($shmoparray as $key => $val)
 	{
 		$var=!$var;
-		print '<tr '.$bc[$var].'><td width="300">'.$key.'</td>';
+		print '<tr '.$bc[$var].'><td>'.$key.'</td>';
 		print '<td>'.count($val).'</td>';
 		print '<td align="right">'.dol_getshmopaddress($key).'</td>';
 		print '</tr>'."\n";
@@ -138,41 +140,41 @@ if (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_S
 // Localisation
 $var=true;
 print '<table class="noborder" width="100%">';
-print '<tr class="liste_titre"><td>'.$langs->trans("LocalisationDolibarrParameters").'</td><td>'.$langs->trans("Value").'</td></tr>'."\n";
+print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("LocalisationDolibarrParameters").'</td><td>'.$langs->trans("Value").'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("LanguageBrowserParameter","HTTP_ACCEPT_LANGUAGE").'</td><td>'.$_SERVER["HTTP_ACCEPT_LANGUAGE"].'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>'.$langs->trans("LanguageBrowserParameter","HTTP_ACCEPT_LANGUAGE").'</td><td>'.$_SERVER["HTTP_ACCEPT_LANGUAGE"].'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentUserLanguage").'</td><td>'.$langs->getDefaultLang().'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentUserLanguage").'</td><td>'.$langs->getDefaultLang().'</td></tr>'."\n";
 // Thousands
 $var=!$var;
 $thousand=$langs->transnoentitiesnoconv("SeparatorThousand");
 if ($thousand == 'SeparatorThousand') $thousand=' ';	// ' ' does not work on trans method
 if ($thousand == 'None') $thousand='';
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentValueSeparatorThousand").'</td><td>'.($thousand==' '?$langs->transnoentitiesnoconv("Space"):$thousand).'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentValueSeparatorThousand").'</td><td>'.($thousand==' '?$langs->transnoentitiesnoconv("Space"):$thousand).'</td></tr>'."\n";
 // Decimals
 $var=!$var;
 $dec=$langs->transnoentitiesnoconv("SeparatorDecimal");
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentValueSeparatorDecimal").'</td><td>'.$dec.'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentValueSeparatorDecimal").'</td><td>'.$dec.'</td></tr>'."\n";
 // Show results of functions to see if everything works
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">&nbsp; => price2num(1233.56+1)</td><td>'.price2num(1233.56+1,'2').'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>&nbsp; => price2num(1233.56+1)</td><td>'.price2num(1233.56+1,'2').'</td></tr>'."\n";
 $var=!$var;
-print "<tr ".$bc[$var].'><td width="300">&nbsp; => price2num('."'1".$thousand."234".$dec."56')</td><td>".price2num("1".$thousand."234".$dec."56",'2')."</td></tr>\n";
+print "<tr ".$bc[$var].'><td>&nbsp; => price2num('."'1".$thousand."234".$dec."56')</td><td>".price2num("1".$thousand."234".$dec."56",'2')."</td></tr>\n";
 if (($thousand != ',' && $thousand != '.') || ($thousand != ' '))
 {
 	$var=!$var;
-	print "<tr ".$bc[$var].'><td width="300">&nbsp; => price2num('."'1 234.56')</td><td>".price2num("1 234.56",'2')."</td>";
+	print "<tr ".$bc[$var].'><td>&nbsp; => price2num('."'1 234.56')</td><td>".price2num("1 234.56",'2')."</td>";
 	print "</tr>\n";
 }
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">&nbsp; => price(1234.56)</td><td>'.price(1234.56).'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>&nbsp; => price(1234.56)</td><td>'.price(1234.56).'</td></tr>'."\n";
 // Timezone
 $txt =$langs->trans("OSTZ").' (variable system TZ): '.(! empty($_ENV["TZ"])?$_ENV["TZ"]:$langs->trans("NotDefined")).'<br>'."\n";
 $txt.=$langs->trans("PHPTZ").' (php.ini date.timezone): '.(ini_get("date.timezone")?ini_get("date.timezone"):$langs->trans("NotDefined")).''."<br>\n"; // date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php
 $txt.=$langs->trans("Dolibarr constant MAIN_SERVER_TZ").': '.(empty($conf->global->MAIN_SERVER_TZ)?$langs->trans("NotDefined"):$conf->global->MAIN_SERVER_TZ);
 //$txt.=$langs->trans("YouCanEditPHPTZ"); // deprecated
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentTimeZone").'</td><td>';	// Timezone server PHP
+print '<tr '.$bc[$var].'><td>'.$langs->trans("CurrentTimeZone").'</td><td>';	// Timezone server PHP
 $a=getServerTimeZoneInt('now');
 $b=getServerTimeZoneInt('winter');
 $c=getServerTimeZoneInt('summer');
@@ -185,18 +187,18 @@ $val.=' &nbsp; &nbsp; &nbsp; '.$langs->trans("DaylingSavingTime").': '.($dayligh
 print $form->textwithtooltip($val,$txt,2,1,img_info(''));
 print '</td></tr>'."\n";	// value defined in http://fr3.php.net/manual/en/timezones.europe.php
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">&nbsp; => '.$langs->trans("CurrentHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzserver').'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>&nbsp; => '.$langs->trans("CurrentHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzserver').'</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">&nbsp; => dol_print_date(0,"dayhourtext")</td><td>'.dol_print_date(0,"dayhourtext").'</td>';
+print '<tr '.$bc[$var].'><td>&nbsp; => dol_print_date(0,"dayhourtext")</td><td>'.dol_print_date(0,"dayhourtext").'</td>';
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">&nbsp; => dol_get_first_day(1970,1,false)</td><td>'.dol_get_first_day(1970,1,false).' &nbsp; &nbsp; (=> dol_print_date() or idate() of this value = '.dol_print_date(dol_get_first_day(1970,1,false),'dayhour').')</td>';
+print '<tr '.$bc[$var].'><td>&nbsp; => dol_get_first_day(1970,1,false)</td><td>'.dol_get_first_day(1970,1,false).' &nbsp; &nbsp; (=> dol_print_date() or idate() of this value = '.dol_print_date(dol_get_first_day(1970,1,false),'dayhour').')</td>';
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">&nbsp; => dol_get_first_day(1970,1,true)</td><td>'.dol_get_first_day(1970,1,true).' &nbsp; &nbsp; (=> dol_print_date() or idate() of this value = '.dol_print_date(dol_get_first_day(1970,1,true),'dayhour').')</td>';
+print '<tr '.$bc[$var].'><td>&nbsp; => dol_get_first_day(1970,1,true)</td><td>'.dol_get_first_day(1970,1,true).' &nbsp; &nbsp; (=> dol_print_date() or idate() of this value = '.dol_print_date(dol_get_first_day(1970,1,true),'dayhour').')</td>';
 // Database timezone
 if ($conf->db->type == 'mysql' || $conf->db->type == 'mysqli')
 {
 	$var=!$var;
-	print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("MySQLTimeZone").' (database)</td><td>';	// Timezone server base
+	print '<tr '.$bc[$var].'><td>'.$langs->trans("MySQLTimeZone").' (database)</td><td>';	// Timezone server base
 	$sql="SHOW VARIABLES where variable_name = 'system_time_zone'";
 	$resql = $db->query($sql);
 	if ($resql)
@@ -209,7 +211,7 @@ if ($conf->db->type == 'mysql' || $conf->db->type == 'mysqli')
 // Client
 $var=!$var;
 $tz=(int) $_SESSION['dol_tz'] + (int) $_SESSION['dol_dst'];
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("ClientTZ").'</td><td>'.($tz?($tz>=0?'+':'').$tz:'').' ('.($tz>=0?'+':'').($tz*60*60).')';
+print '<tr '.$bc[$var].'><td>'.$langs->trans("ClientTZ").'</td><td>'.($tz?($tz>=0?'+':'').$tz:'').' ('.($tz>=0?'+':'').($tz*60*60).')';
 print ' &nbsp; &nbsp; &nbsp; '.$_SESSION['dol_tz_string'];
 print ' &nbsp; &nbsp; &nbsp; '.$langs->trans("DaylingSavingTime").': ';
 if ($_SESSION['dol_dst']>0) print yn(1);
@@ -218,18 +220,18 @@ if (! empty($_SESSION['dol_dst_first'])) print ' &nbsp; &nbsp; ('.dol_print_date
 print '</td></tr>'."\n";
 print '</td></tr>'."\n";
 $var=!$var;
-print '<tr '.$bc[$var].'><td width="300">&nbsp; => '.$langs->trans("ClientHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzuser').'</td></tr>'."\n";
+print '<tr '.$bc[$var].'><td>&nbsp; => '.$langs->trans("ClientHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzuser').'</td></tr>'."\n";
 
 $var=!$var;
 $filesystemencoding=ini_get("unicode.filesystem_encoding");	// Disponible avec PHP 6.0
-print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("File encoding").' (php.ini unicode.filesystem_encoding)</td><td>'.$filesystemencoding.'</td></tr>'."\n";	// date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php
+print '<tr '.$bc[$var].'><td>'.$langs->trans("File encoding").' (php.ini unicode.filesystem_encoding)</td><td>'.$filesystemencoding.'</td></tr>'."\n";	// date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php
 
 $var=!$var;
 $tmp=ini_get("unicode.filesystem_encoding");						// Disponible avec PHP 6.0
 if (empty($tmp) && ! empty($_SERVER["WINDIR"])) $tmp='iso-8859-1';	// By default for windows
 if (empty($tmp)) $tmp='utf-8';										// By default for other
 if (! empty($conf->global->MAIN_FILESYSTEM_ENCODING)) $tmp=$conf->global->MAIN_FILESYSTEM_ENCODING;
-print '<tr '.$bc[$var].'><td width="300">&nbsp; => '.$langs->trans("File encoding").'</td><td>'.$tmp.'</td></tr>'."\n";	// date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php
+print '<tr '.$bc[$var].'><td>&nbsp; => '.$langs->trans("File encoding").'</td><td>'.$tmp.'</td></tr>'."\n";	// date.timezone must be in valued defined in http://fr3.php.net/manual/en/timezones.europe.php
 
 print '</table>';
 print '<br>';
@@ -291,7 +293,7 @@ $configfileparameters=array(
 $var=true;
 print '<table class="noborder" width="100%">';
 print '<tr class="liste_titre">';
-print '<td width="300">'.$langs->trans("Parameters").' ';
+print '<td class="titlefield">'.$langs->trans("Parameters").' ';
 print $langs->trans("ConfigurationFile").' ('.$conffiletoshowshort.')';
 print '</td>';
 print '<td>'.$langs->trans("Parameter").'</td>';
@@ -357,9 +359,9 @@ print '<br>';
 // Parameters in database
 print '<table class="noborder">';
 print '<tr class="liste_titre">';
-print '<td>'.$langs->trans("Parameters").' '.$langs->trans("Database").'</td>';
+print '<td class="titlefield">'.$langs->trans("Parameters").' '.$langs->trans("Database").'</td>';
 print '<td>'.$langs->trans("Value").'</td>';
-if (empty($conf->multicompany->enabled) || !$user->entity) print '<td align="center">'.$langs->trans("Entity").'</td>';	// If superadmin or multicompany disabled
+if (empty($conf->multicompany->enabled) || !$user->entity) print '<td class="center width="80px"">'.$langs->trans("Entity").'</td>';	// If superadmin or multicompany disabled
 print "</tr>\n";
 
 $sql = "SELECT";
@@ -394,9 +396,9 @@ if ($resql)
 		$var=!$var;
 
 		print '<tr '.$bc[$var].'>';
-		print '<td>'.$obj->name.'</td>'."\n";
-		print '<td>'.$obj->value.'</td>'."\n";
-		if (empty($conf->multicompany->enabled) || !$user->entity) print '<td align="center">'.$obj->entity.'</td>'."\n";	// If superadmin or multicompany disabled
+		print '<td class="tdoverflow">'.$obj->name.'</td>'."\n";
+		print '<td class="tdoverflow">'.$obj->value.'</td>'."\n";
+		if (empty($conf->multicompany->enabled) || !$user->entity) print '<td align="center" width="80px">'.$obj->entity.'</td>'."\n";	// If superadmin or multicompany disabled
 		print "</tr>\n";
 
 		$i++;
diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php
index 45f2be3e4da35abb1c0fc6b2f04af50b734ee6e0..e3081d1040049270908041ea28b5c551e833d43a 100644
--- a/htdocs/api/class/api.class.php
+++ b/htdocs/api/class/api.class.php
@@ -23,8 +23,7 @@ use Luracast\Restler\Defaults;
 require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
 
 /**
- * Class for API
- *
+ * Class for API REST v1
  */
 class DolibarrApi
 {
@@ -55,6 +54,8 @@ class DolibarrApi
         $this->db = $db;
         $production_mode = ( empty($conf->global->API_PRODUCTION_MODE) ? false : true );
         $this->r = new Restler($production_mode);
+        
+        $this->r->setAPIVersion(1);
     }
 
     /**
@@ -97,6 +98,7 @@ class DolibarrApi
         unset($object->statuts);
         unset($object->statuts_short);
         unset($object->statuts_logo);
+        unset($object->statuts_long);
         
         // Remove the $oldcopy property because it is not supported by the JSON
         // encoder. The following error is generated when trying to serialize
diff --git a/htdocs/api/index.php b/htdocs/api/index.php
index 80cfb5485df80275a7a1ac07cca61819abc932ca..7fe3e6437ac48180922c9d6ba867429fa5c90719 100644
--- a/htdocs/api/index.php
+++ b/htdocs/api/index.php
@@ -106,7 +106,10 @@ foreach ($modulesdir as $dir)
                 elseif ($module == 'facture') {
                     $moduledirforclass = 'compta/facture';
                 }
-
+                elseif ($module == 'project') {
+                    $moduledirforclass = 'projet';
+                }
+                
                 // Defined if module is enabled
                 $enabled=true;
                 if (empty($conf->$moduleforperm->enabled)) $enabled=false;
@@ -135,7 +138,7 @@ foreach ($modulesdir as $dir)
                                 require_once $dir_part.$file_searched;
                                 if (class_exists($classname))
                                 {
-                                    dol_syslog("Found deprecated API classname=".$classname." into ".$dir);
+                                    dol_syslog("Found deprecated API by index.php classname=".$classname." into ".$dir);
                                     $api->r->addAPIClass($classname, '/');
                                 }
                             }
@@ -145,7 +148,7 @@ foreach ($modulesdir as $dir)
                                 require_once $dir_part.$file_searched;
                                 if (class_exists($classname))
                                 {
-                                    dol_syslog("Found API classname=".$classname." into ".$dir);
+                                    dol_syslog("Found API by index.php classname=".$classname." into ".$dir);
                                     $listofapis[] = $classname;
                                 }
                             }
@@ -161,13 +164,14 @@ foreach ($modulesdir as $dir)
 // shows the classes in the order they are added and it's a mess if they are
 // not sorted.
 sort($listofapis);
+//var_dump($listofapis);
 foreach ($listofapis as $classname)
 {
     $api->r->addAPIClass($classname);
 }
 
 // TODO If not found, redirect to explorer
-
+//var_dump($api);
 
 // Call API (we suppose we found it)
 $api->r->handle();
diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php
index d38270b88273e53e5fddfdef5a67c9967ffd4950..c917925e87e5d3d75767961e36d3100baa2c041f 100644
--- a/htdocs/comm/action/card.php
+++ b/htdocs/comm/action/card.php
@@ -795,7 +795,7 @@ if ($action == 'create')
 		}
 		print '</td></tr>';
 	}
-	if(!empty($origin) && !empty($originid))
+	if (!empty($origin) && !empty($originid))
 	{
 		include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
 		print '<tr><td>'.$langs->trans("LinkedObject").'</td>';
diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php
index 419b32cdea47410163e71765bdaca3de0140928a..f8d2913028c4c20a2cfac2319e88efda31caab63 100644
--- a/htdocs/comm/action/class/actioncomm.class.php
+++ b/htdocs/comm/action/class/actioncomm.class.php
@@ -1113,15 +1113,26 @@ class ActionComm extends CommonObject
 
 		if (! empty($conf->dol_no_mouse_hover)) $notooltip=1;   // Force disable tooltips
 		
+		$label = $this->label;
+		if (empty($label)) $label=$this->libelle;   // For backward compatibility
+
 		$result='';
 		
+		// Set label of typ
+		$labeltype = ($langs->transnoentities("Action".$this->type_code) != "Action".$this->type_code)?$langs->transnoentities("Action".$this->type_code):$this->type_label;
+		if (empty($conf->global->AGENDA_USE_EVENT_TYPE))
+		{
+		    if ($this->type_code != 'AC_OTH_AUTO') $labeltype = $langs->trans('ActionAC_MANUAL');
+		}
+		
+		
 		$tooltip = '<u>' . $langs->trans('ShowAction'.$objp->code) . '</u>';
 		if (! empty($this->ref))
 			$tooltip .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
-		$label = $this->label;
-		if (empty($label)) $label=$this->libelle;   // For backward compatibility
 		if (! empty($label))
 			$tooltip .= '<br><b>' . $langs->trans('Title') . ':</b> ' . $label;
+		if (! empty($labeltype))
+			$tooltip .= '<br><b>' . $langs->trans('Type') . ':</b> ' . $labeltype;
 		if (! empty($this->location))
 			$tooltip .= '<br><b>' . $langs->trans('Location') . ':</b> ' . $this->location;
 
@@ -1129,11 +1140,11 @@ class ActionComm extends CommonObject
 		if (! empty($conf->global->AGENDA_USE_EVENT_TYPE) && $this->type_color) 
 			$linkclose = ' style="background-color:#'.$this->type_color.'"';
 
-		if (empty($notooltip) && $user->rights->propal->lire)
+		if (empty($notooltip))
 		{
 		    if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
 		    {
-		        $label=$langs->trans("ShowSupplierProposal");
+		        $label=$langs->trans("ShowAction");
 		        $linkclose.=' alt="'.dol_escape_htmltag($tooltip, 1).'"';
 		    }
 		    $linkclose.=' title="'.dol_escape_htmltag($tooltip, 1).'"';
@@ -1166,13 +1177,13 @@ class ActionComm extends CommonObject
         if ($withpicto == 2)
         {
             $libelle=$label;
-            if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) $libelle=$langs->transnoentities("Action".$this->type_code);
+            if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) $libelle=$labeltype;
             $libelleshort='';
         }
         else
         {
             $libelle=(empty($this->libelle)?$label:$this->libelle.(($label && $label != $this->libelle)?' '.$label:''));
-            if (! empty($conf->global->AGENDA_USE_EVENT_TYPE) && empty($libelle)) $libelle=($langs->transnoentities("Action".$this->type_code) != "Action".$this->type_code)?$langs->transnoentities("Action".$this->type_code):$this->type_label;
+            if (! empty($conf->global->AGENDA_USE_EVENT_TYPE) && empty($libelle)) $libelle=$labeltype;
             if ($maxlength < 0) $libelleshort=$this->ref;
             else $libelleshort=dol_trunc($libelle,$maxlength);
         }
diff --git a/htdocs/comm/action/class/cactioncomm.class.php b/htdocs/comm/action/class/cactioncomm.class.php
index 237a1043ac61e9198725ddeb5e35a04bdde0cab0..c03763c13a6b2f8155837e6ea31fd9ffb29ba5f0 100644
--- a/htdocs/comm/action/class/cactioncomm.class.php
+++ b/htdocs/comm/action/class/cactioncomm.class.php
@@ -105,9 +105,9 @@ class CActionComm
      *  @param	string|int	$active     	1 or 0 to filter on event state active or not ('' by default = no filter)
      *  @param	string		$idorcode		'id' or 'code'
      *  @param	string		$excludetype	Type to exclude ('system' or 'systemauto')
-     *  @param	int		    $onlyautoornot	1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type
+     *  @param	int		    $onlyautoornot	1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type, -1=Keep details and add a combined line "All manual"
      *  @param  string      $morefilter     Add more SQL filter
-     *  @return mixed      					Array of all event types if OK, <0 if KO
+     *  @return mixed      					Array of all event types if OK, <0 if KO. Key of array is id or code depending on parameter $idorcode.
      */
     function liste_array($active='',$idorcode='id',$excludetype='',$onlyautoornot=0, $morefilter='')
     {
@@ -123,7 +123,7 @@ class CActionComm
         if ($active != '') $sql.=" AND active=".$active;
         if (! empty($excludetype)) $sql.=" AND type <> '".$excludetype."'";
         if ($morefilter) $sql.=" AND ".$morefilter;
-        $sql.= " ORDER BY module, position";
+        $sql.= " ORDER BY module, position, type";
 
         dol_syslog(get_class($this)."::liste_array", LOG_DEBUG);
         $resql=$this->db->query($sql);
@@ -140,7 +140,7 @@ class CActionComm
                     $qualified=1;
 
                     // $obj->type can be system, systemauto, module, moduleauto, xxx, xxxauto
-                    if ($qualified && $onlyautoornot && preg_match('/^system/',$obj->type) && ! preg_match('/^AC_OTH/',$obj->code)) $qualified=0;	// We discard detailed system events. We keep only the 2 generic lines (AC_OTH and AC_OTH_AUTO)
+                    if ($qualified && $onlyautoornot > 0 && preg_match('/^system/',$obj->type) && ! preg_match('/^AC_OTH/',$obj->code)) $qualified=0;	// We discard detailed system events. We keep only the 2 generic lines (AC_OTH and AC_OTH_AUTO)
 
                     if ($qualified && $obj->module)
                     {
@@ -155,12 +155,19 @@ class CActionComm
                     if ($qualified)
                     {
                     	$code=$obj->code;
-                    	if ($onlyautoornot && $code == 'AC_OTH') $code='AC_MANUAL';
-                    	if ($onlyautoornot && $code == 'AC_OTH_AUTO') $code='AC_AUTO';
+                    	if ($onlyautoornot > 0 && $code == 'AC_OTH') $code='AC_MANUAL';
+                    	if ($onlyautoornot > 0 && $code == 'AC_OTH_AUTO') $code='AC_AUTO';
                     	$transcode=$langs->trans("Action".$code);
-                        $repid[$obj->id] = ($transcode!="Action".$code?$transcode:$langs->trans($obj->label));
-                        $repcode[$obj->code] = ($transcode!="Action".$code?$transcode:$langs->trans($obj->label));
-                        if ($onlyautoornot && preg_match('/^module/',$obj->type) && $obj->module) $repcode[$obj->code].=' ('.$langs->trans("Module").': '.$obj->module.')';
+                        $label = ($transcode!="Action".$code?$transcode:$langs->trans($obj->label));
+                        if ($onlyautoornot == -1 && ! empty($conf->global->AGENDA_USE_EVENT_TYPE) && ! preg_match('/auto/i', $code))
+                        {
+                            $label='&nbsp; '.$label;
+                            $repid[-99]=$langs->trans("ActionAC_MANUAL");
+                            $repcode['AC_NON_AUTO']=$langs->trans("ActionAC_MANUAL");
+                        }
+                    	$repid[$obj->id] = $label;
+                        $repcode[$obj->code] = $label;
+                        if ($onlyautoornot > 0 && preg_match('/^module/',$obj->type) && $obj->module) $repcode[$obj->code].=' ('.$langs->trans("Module").': '.$obj->module.')';
                     }
                     $i++;
                 }
diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php
index f70b8d171a1f9d1d4650033fcc97dfded28d3931..f63bbd7ab79dd60de7d65f47ba5d1d22b0384c40 100644
--- a/htdocs/comm/action/index.php
+++ b/htdocs/comm/action/index.php
@@ -450,7 +450,29 @@ if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resour
 if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element";
 $sql.= ' WHERE a.fk_action = ca.id';
 $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')';
-if ($actioncode) $sql.=" AND ca.code IN ('".implode("','", explode(',',$actioncode))."')";
+// Condition on actioncode
+if (! empty($actioncode))
+{
+    if (empty($conf->global->AGENDA_USE_EVENT_TYPE))
+    {
+        if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'";
+        elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'";
+        else
+        {
+            if ($actioncode == 'AC_OTH') $sql.= " AND ca.type != 'systemauto'";
+            if ($actioncode == 'AC_OTH_AUTO') $sql.= " AND ca.type = 'systemauto'";
+        }
+    }
+    else
+    {
+        if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'";
+        elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'";
+        else
+        {
+            $sql.=" AND ca.code IN ('".implode("','", explode(',',$actioncode))."')";
+        }
+    }
+}
 if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid);
 if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid);
 if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")";
@@ -970,7 +992,15 @@ if (empty($action) || $action == 'show_month')      // View by month
     $i=0;
     while ($i < 7)
     {
-        echo '  <td align="center">'.$langs->trans("Day".(($i+(isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1)) % 7))."</td>\n";
+        print '  <td align="center">';
+        $numdayinweek=(($i+(isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1)) % 7);
+        if (! empty($conf->dol_optimize_smallscreen))
+        {
+            $labelshort=array(0=>'SundayMin',1=>'MondayMin',2=>'TuesdayMin',3=>'WednesdayMin',4=>'ThursdayMin',5=>'FridayMin',6=>'SaturdayMin');
+            print $langs->trans($labelshort[$numdayinweek]);
+        }
+        else print $langs->trans("Day".$numdayinweek);
+        print "</td>\n";
         $i++;
     }
     echo " </tr>\n";
diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php
index ec4fba1298082a4687a83d4d369df75146d9d212..d583d56074ed18371ea316cc7156b3ae2ecc3b3f 100644
--- a/htdocs/comm/action/listactions.php
+++ b/htdocs/comm/action/listactions.php
@@ -194,7 +194,29 @@ if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resour
 if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element";
 $sql.= " WHERE c.id = a.fk_action";
 $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')';
-if ($actioncode) $sql.=" AND c.code IN ('".$db->escape($actioncode)."')";
+// Condition on actioncode
+if (! empty($actioncode))
+{
+    if (empty($conf->global->AGENDA_USE_EVENT_TYPE))
+    {
+        if ($actioncode == 'AC_NON_AUTO') $sql.= " AND c.type != 'systemauto'";
+        elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND c.type = 'systemauto'";
+        else
+        {
+            if ($actioncode == 'AC_OTH') $sql.= " AND c.type != 'systemauto'";
+            if ($actioncode == 'AC_OTH_AUTO') $sql.= " AND c.type = 'systemauto'";
+        }
+    }
+    else
+    {
+        if ($actioncode == 'AC_NON_AUTO') $sql.= " AND c.type != 'systemauto'";
+        elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND c.type = 'systemauto'";
+        else
+        {
+            $sql.=" AND c.code IN ('".implode("','", explode(',',$actioncode))."')";
+        }
+    }
+}
 if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid);
 if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid);
 if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")";
@@ -402,6 +424,7 @@ if ($resql)
 		{
     		if ($actionstatic->type_picto) print img_picto('', $actionstatic->type_picto);
     		else {
+    		    if ($actionstatic->type_code == 'AC_RDV')   print img_picto('', 'object_group').' ';
     		    if ($actionstatic->type_code == 'AC_TEL')   print img_picto('', 'object_phoning').' ';
     		    if ($actionstatic->type_code == 'AC_FAX')   print img_picto('', 'object_phoning_fax').' ';
     		    if ($actionstatic->type_code == 'AC_EMAIL') print img_picto('', 'object_email').' ';
diff --git a/htdocs/comm/action/pertype.php b/htdocs/comm/action/pertype.php
index ae11f06cedd7937961b0e70285a83c12c44c12c4..2dd5d78d9b9db59cb10b66893a2356856f83fe5b 100644
--- a/htdocs/comm/action/pertype.php
+++ b/htdocs/comm/action/pertype.php
@@ -365,7 +365,29 @@ if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resour
 if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element";
 $sql.= ' WHERE a.fk_action = ca.id';
 $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')';
-if ($actioncode) $sql.=" AND ca.code='".$db->escape($actioncode)."'";
+// Condition on actioncode
+if (! empty($actioncode))
+{
+    if (empty($conf->global->AGENDA_USE_EVENT_TYPE))
+    {
+        if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'";
+        elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'";
+        else
+        {
+            if ($actioncode == 'AC_OTH') $sql.= " AND ca.type != 'systemauto'";
+            if ($actioncode == 'AC_OTH_AUTO') $sql.= " AND ca.type = 'systemauto'";
+        }
+    }
+    else
+    {
+        if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'";
+        elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'";
+        else
+        {
+            $sql.=" AND ca.code IN ('".implode("','", explode(',',$actioncode))."')";
+        }
+    }
+}
 if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid);
 if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid);
 if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")";
diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php
index cd5f7d10fa7c2be5474912a8e4190415c33cb399..5651bca338b37fbf42bed2961d8634afa674ed15 100644
--- a/htdocs/comm/action/peruser.php
+++ b/htdocs/comm/action/peruser.php
@@ -96,7 +96,6 @@ else
     $actioncode=GETPOST("actioncode","alpha",3)?GETPOST("actioncode","alpha",3):(GETPOST("actioncode")=='0'?'0':(empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE)?'':$conf->global->AGENDA_DEFAULT_FILTER_TYPE));
 }
 if ($actioncode == '' && empty($actioncodearray)) $actioncode=(empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE)?'':$conf->global->AGENDA_DEFAULT_FILTER_TYPE);
-
 $dateselect=dol_mktime(0, 0, 0, GETPOST('dateselectmonth'), GETPOST('dateselectday'), GETPOST('dateselectyear'));
 if ($dateselect > 0)
 {
@@ -373,7 +372,29 @@ if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resour
 if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element";
 $sql.= ' WHERE a.fk_action = ca.id';
 $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')';
-if ($actioncode) $sql.=" AND ca.code='".$db->escape($actioncode)."'";
+// Condition on actioncode
+if (! empty($actioncode))
+{
+    if (empty($conf->global->AGENDA_USE_EVENT_TYPE))
+    {
+        if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'";
+        elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'";
+        else
+        {
+            if ($actioncode == 'AC_OTH') $sql.= " AND ca.type != 'systemauto'";
+            if ($actioncode == 'AC_OTH_AUTO') $sql.= " AND ca.type = 'systemauto'";
+        }
+    }
+    else
+    {
+        if ($actioncode == 'AC_NON_AUTO') $sql.= " AND ca.type != 'systemauto'";
+        elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND ca.type = 'systemauto'";
+        else
+        {
+            $sql.=" AND ca.code IN ('".implode("','", explode(',',$actioncode))."')";
+        }
+    }
+}
 if ($resourceid > 0) $sql.=" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".$db->escape($resourceid);
 if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid);
 if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")";
diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php
index 92dc2726030b20a163964cc5f57131b6cbbc85c0..d7fd92f365b5773745a7c0267ada212651a0deaf 100644
--- a/htdocs/comm/mailing/card.php
+++ b/htdocs/comm/mailing/card.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2004		Rodolphe Quiedeville	<rodolphe@quiedeville.org>
- * Copyright (C) 2005-2012	Laurent Destailleur		<eldy@uers.sourceforge.net>
+ * Copyright (C) 2005-2016	Laurent Destailleur		<eldy@uers.sourceforge.net>
  * Copyright (C) 2005-2016	Regis Houssin			<regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -333,7 +333,7 @@ if (empty($reshook))
 							dol_syslog("comm/mailing/card.php: error for #".$i.($mail->error?' - '.$mail->error:''), LOG_WARNING);
 
 							$sql="UPDATE ".MAIN_DB_PREFIX."mailing_cibles";
-							$sql.=" SET statut=-1, date_envoi='".$db->idate($now)."' WHERE rowid=".$obj->rowid;
+							$sql.=" SET statut=-1, error_text='".$db->escape($mail->error)."', date_envoi='".$db->idate($now)."' WHERE rowid=".$obj->rowid;
 							$resql2=$db->query($sql);
 							if (! $resql2)
 							{
@@ -668,7 +668,15 @@ if ($action == 'create')
 	print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
 	print '<input type="hidden" name="action" value="add">';
 
-	print load_fiche_titre($langs->trans("NewMailing"));
+	$htmltext = '<i>'.$langs->trans("FollowingConstantsWillBeSubstituted").':<br>';
+	foreach($object->substitutionarray as $key => $val)
+	{
+		$htmltext.=$key.' = '.$langs->trans($val).'<br>';
+	}
+	$htmltext.='</i>';
+			
+	// Print mail form
+	print load_fiche_titre($langs->trans("NewMailing"), $form->textwithpicto($langs->trans("AvailableVariables"), $htmltext), 'title_generic');
 
 	dol_fiche_head();
 
@@ -693,21 +701,16 @@ if ($action == 'create')
 	print '<tr><td>'.$langs->trans("BackgroundColorByDefault").'</td><td colspan="3">';
 	print $htmlother->selectColor($_POST['bgcolor'],'bgcolor','new_mailing',0);
 	print '</td></tr>';
-	print '<tr><td valign="top"><span class="fieldrequired">'.$langs->trans("MailMessage").'</span><br>';
-	print '<br><i>'.$langs->trans("CommonSubstitutions").':<br>';
-	foreach($object->substitutionarray as $key => $val)
-	{
-		print $key.' = '.$langs->trans($val).'<br>';
-	}
-	print '</i></td>';
-	print '<td>';
+
+	print '</table>';
+	
+	print '<div style="padding-top: 10px">';
 	// Editeur wysiwyg
 	require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
 	$doleditor=new DolEditor('body',$_POST['body'],'',320,'dolibarr_mailings','',true,true,$conf->global->FCKEDITOR_ENABLE_MAILING,20,'90%');
 	$doleditor->Create();
-	print '</td></tr>';
-	print '</table>';
-
+	print '</div>';
+	
 	dol_fiche_end();
 
 	print '<div class="center"><input type="submit" class="button" value="'.$langs->trans("CreateMailing").'"></div>';
@@ -788,17 +791,24 @@ else
 				}
 			}
 
-			print '<table class="border" width="100%">';
-
 			$linkback = '<a href="'.DOL_URL_ROOT.'/comm/mailing/list.php">'.$langs->trans("BackToList").'</a>';
 
-			print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td>';
+			$morehtmlright='';
+			if ($object->statut == 2) $morehtmlright.=' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.') ';
+			
+			dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', '', '', 0, '', $morehtmlright);
+			
+			print '<div class="underbanner clearboth"></div>';
+			
+			print '<table class="border" width="100%">';
+
+/*			print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td>';
 			print '<td colspan="3">';
 			print $form->showrefnav($object,'id', $linkback);
 			print '</td></tr>';
-
+*/
 			// Description
-			print '<tr><td>'.$form->editfieldkey("MailTitle",'titre',$object->titre,$object,$user->rights->mailing->creer && $object->statut < 3,'string').'</td><td colspan="3">';
+			print '<tr><td class="titlefield">'.$form->editfieldkey("MailTitle",'titre',$object->titre,$object,$user->rights->mailing->creer && $object->statut < 3,'string').'</td><td colspan="3">';
 			print $form->editfieldval("MailTitle",'titre',$object->titre,$object,$user->rights->mailing->creer && $object->statut < 3,'string');
 			print '</td></tr>';
 
@@ -813,10 +823,12 @@ else
 			print '</td></tr>';
 
 			// Status
+			/*
 			print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'.$object->getLibStatut(4);
 			if ($object->statut == 2) print ' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.')';
 			print'</td></tr>';
-
+			*/
+			
 			// Nb of distinct emails
 			print '<tr><td>';
 			print $langs->trans("TotalNbOfDistinctRecipients");
@@ -987,11 +999,19 @@ else
 				print '<br>';
 			}
 
-			// Print mail content
-			print load_fiche_titre($langs->trans("EMail"),'','');
 
+			$htmltext = '<i>'.$langs->trans("FollowingConstantsWillBeSubstituted").':<br>';
+			foreach($object->substitutionarray as $key => $val)
+			{
+				$htmltext.=$key.' = '.$langs->trans($val).'<br>';
+			}
+			$htmltext.='</i>';
+			
+			// Print mail content
+			print load_fiche_titre($langs->trans("EMail"), $form->textwithpicto($langs->trans("AvailableVariables"), $htmltext), 'title_generic');
+			
 			dol_fiche_head('');
-
+			
 			print '<table class="border" width="100%">';
 
 			// Subject
@@ -1019,16 +1039,11 @@ else
             /*print '<tr><td width="15%">'.$langs->trans("BackgroundColorByDefault").'</td><td colspan="3">';
             print $htmlother->selectColor($object->bgcolor,'bgcolor','edit_mailing',0);
             print '</td></tr>';*/
-
+			
+			print '</table>';
+			
 		    // Message
-			print '<tr><td valign="top">'.$langs->trans("MailMessage").'<br>';
-			print '<br><i>'.$langs->trans("CommonSubstitutions").':<br>';
-			foreach($object->substitutionarray as $key => $val)
-			{
-				print $key.' = '.$langs->trans($val).'<br>';
-			}
-			print '</i></td>';
-			print '<td colspan="3" bgcolor="'.($object->bgcolor?(preg_match('/^#/',$object->bgcolor)?'':'#').$object->bgcolor:'white').'">';
+			print '<div style="padding-top: 10px" bgcolor="'.($object->bgcolor?(preg_match('/^#/',$object->bgcolor)?'':'#').$object->bgcolor:'white').'">';
 			if (empty($object->bgcolor) || strtolower($object->bgcolor) == 'ffffff')
 			{
 				$readonly=1;
@@ -1038,12 +1053,10 @@ else
 				$doleditor->Create();
 			}
 			else print dol_htmlentitiesbr($object->body);
-			print '</td>';
-			print '</tr>';
-
-			print '</table>';
+			print '</div>';
 
 			dol_fiche_end();
+			
 		}
 		else
 		{
@@ -1051,19 +1064,28 @@ else
 			 * Mailing en mode edition
 			 */
 
-			print '<table class="border" width="100%">';
-
 			$linkback = '<a href="'.DOL_URL_ROOT.'/comm/mailing/list.php">'.$langs->trans("BackToList").'</a>';
 
+			$morehtmlright='';
+			if ($object->statut == 2) $morehtmlright.=' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.') ';
+			
+			dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', '', '', 0, '', $morehtmlright);
+			
+			print '<div class="underbanner clearboth"></div>';
+
+			print '<table class="border" width="100%">';
+
+			/*
 			print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td>';
 			print '<td colspan="3">';
 			print $form->showrefnav($object,'id', $linkback);
 			print '</td></tr>';
-
+			*/
+			
 			// Topic
-			print '<tr><td>'.$langs->trans("MailTitle").'</td><td colspan="3">'.$object->titre.'</td></tr>';
+			print '<tr><td class="titlefield">'.$langs->trans("MailTitle").'</td><td colspan="3">'.$object->titre.'</td></tr>';
 			// From
-			print '<tr><td>'.$langs->trans("MailFrom").'</td><td colspan="3">'.dol_print_email($object->email_from,0,0,0,0,1).'</td></tr>';
+			print '<tr><td class="titlefield">'.$langs->trans("MailFrom").'</td><td colspan="3">'.dol_print_email($object->email_from,0,0,0,0,1).'</td></tr>';
 			// To
 			print '<tr><td>'.$langs->trans("MailErrorsTo").'</td><td colspan="3">'.dol_print_email($object->email_errorsto,0,0,0,0,1).'</td></tr>';
 
@@ -1100,21 +1122,29 @@ else
 
 
 
-			print "\n";
+			print "<br>\n";
+			
 			print '<form name="edit_mailing" action="card.php" method="post" enctype="multipart/form-data">'."\n";
 			print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
 			print '<input type="hidden" name="action" value="update">';
 			print '<input type="hidden" name="id" value="'.$object->id.'">';
-
+			
+			$htmltext = '<i>'.$langs->trans("FollowingConstantsWillBeSubstituted").':<br>';
+			foreach($object->substitutionarray as $key => $val)
+			{
+				$htmltext.=$key.' = '.$langs->trans($val).'<br>';
+			}
+			$htmltext.='</i>';
+			
 			// Print mail content
-			print load_fiche_titre($langs->trans("EMail"),'','');
+			print load_fiche_titre($langs->trans("EMail"), $form->textwithpicto($langs->trans("AvailableVariables"), $htmltext), 'title_generic');
 
 			dol_fiche_head();
-
+			
 			print '<table class="border" width="100%">';
 
 			// Subject
-			print '<tr><td class="fieldrequired titlefield">'.$langs->trans("MailTopic").'</td><td colspan="3"><input class="flat" type="text" size=60 name="sujet" value="'.$object->sujet.'"></td></tr>';
+			print '<tr><td class="fieldrequired titlefield">'.$langs->trans("MailTopic").'</td><td colspan="3"><input class="flat quatrevingtpercent" type="text" name="sujet" value="'.$object->sujet.'"></td></tr>';
 
 			$trackid=''; // TODO To avoid conflicts with 2 mass emailing, we should set a trackid here, even if we use another one into email header.
 			dol_init_file_process($upload_dir, $trackid);
@@ -1159,23 +1189,17 @@ else
 			print '<tr><td>'.$langs->trans("BackgroundColorByDefault").'</td><td colspan="3">';
 			print $htmlother->selectColor($object->bgcolor,'bgcolor','edit_mailing',0);
 			print '</td></tr>';
-
+			
+			print '</table>';
+			
 			// Message
-			print '<tr><td valign="top">'.$langs->trans("MailMessage").'<br>';
-			print '<br><i>'.$langs->trans("CommonSubstitutions").':<br>';
-			foreach($object->substitutionarray as $key => $val)
-			{
-				print $key.' = '.$langs->trans($val).'<br>';
-			}
-			print '</i></td>';
-			print '<td colspan="3">';
+			print '<div style="padding-top: 10px">';
 			// Editeur wysiwyg
 			require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
 			$doleditor=new DolEditor('body',$object->body,'',320,'dolibarr_mailings','',true,true,$conf->global->FCKEDITOR_ENABLE_MAILING,20,120);
 			$doleditor->Create();
-			print '</td></tr>';
+			print '</div>';
 
-			print '</table>';
 
 			dol_fiche_end();
 
diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php
index cc5b16f1935fc160c8f54b63f7593ab01ff77fcd..3767ba17add4fabb5b4311ae642425af212498df 100644
--- a/htdocs/comm/mailing/cibles.php
+++ b/htdocs/comm/mailing/cibles.php
@@ -38,16 +38,17 @@ $langs->load("mails");
 if (! $user->rights->mailing->lire || $user->societe_id > 0) accessforbidden();
 
 
+// Load variable for pagination
 $limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit;
-$sortfield = GETPOST("sortfield",'alpha');
-$sortorder = GETPOST("sortorder",'alpha');
-$page = GETPOST("page",'int');
+$sortfield = GETPOST('sortfield','alpha');
+$sortorder = GETPOST('sortorder','alpha');
+$page = GETPOST('page','int');
 if ($page == -1) { $page = 0; }
 $offset = $limit * $page;
 $pageprev = $page - 1;
 $pagenext = $page + 1;
-if (! $sortorder) $sortorder="ASC";
 if (! $sortfield) $sortfield="email";
+if (! $sortorder) $sortorder="ASC";
 
 $id=GETPOST('id','int');
 $rowid=GETPOST('rowid','int');
@@ -178,17 +179,24 @@ if ($object->fetch($id) >= 0)
 
 	dol_fiche_head($head, 'targets', $langs->trans("Mailing"), 0, 'email');
 
-
-	print '<table class="border" width="100%">';
-
 	$linkback = '<a href="'.DOL_URL_ROOT.'/comm/mailing/list.php">'.$langs->trans("BackToList").'</a>';
 
+	$morehtmlright='';
+	if ($object->statut == 2) $morehtmlright.=' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.') ';
+	
+	dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', '', '', 0, '', $morehtmlright);
+
+	
+	print '<div class="underbanner clearboth"></div>';
+	
+	print '<table class="border" width="100%">';
+/*
 	print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td>';
 	print '<td colspan="3">';
 	print $form->showrefnav($object,'id', $linkback);
 	print '</td></tr>';
-
-	print '<tr><td>'.$langs->trans("MailTitle").'</td><td colspan="3">'.$object->titre.'</td></tr>';
+*/
+	print '<tr><td class="titlefield">'.$langs->trans("MailTitle").'</td><td colspan="3">'.$object->titre.'</td></tr>';
 
 	print '<tr><td>'.$langs->trans("MailFrom").'</td><td colspan="3">'.dol_print_email($object->email_from,0,0,0,0,1).'</td></tr>';
 
@@ -197,10 +205,10 @@ if ($object->fetch($id) >= 0)
 	print '</td></tr>';
 
 	// Status
-	print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'.$object->getLibStatut(4);
+/*	print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'.$object->getLibStatut(4);
 	if ($object->statut == 2) print ' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.')';
 	print '</td></tr>';
-
+*/
 	// Nb of distinct emails
 	print '<tr><td>';
 	print $langs->trans("TotalNbOfDistinctRecipients");
@@ -363,7 +371,7 @@ if ($object->fetch($id) >= 0)
 	}
 
 	// List of selected targets
-	$sql  = "SELECT mc.rowid, mc.lastname, mc.firstname, mc.email, mc.other, mc.statut, mc.date_envoi, mc.source_url, mc.source_id, mc.source_type";
+	$sql  = "SELECT mc.rowid, mc.lastname, mc.firstname, mc.email, mc.other, mc.statut, mc.date_envoi, mc.source_url, mc.source_id, mc.source_type, mc.error_text";
 	$sql .= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc";
 	$sql .= " WHERE mc.fk_mailing=".$object->id;
 	if ($search_lastname)    $sql.= " AND mc.lastname    LIKE '%".$db->escape($search_lastname)."%'";
@@ -441,15 +449,15 @@ if ($object->fetch($id) >= 0)
 		print '<tr class="liste_titre">';
 		// EMail
 		print '<td class="liste_titre">';
-		print '<input class="flat" type="text" name="search_email" size="14" value="'.$search_email.'">';
+		print '<input class="flat maxwidth100" type="text" name="search_email" value="'.dol_escape_htmltag($search_email).'">';
 		print '</td>';
 		// Name
 		print '<td class="liste_titre">';
-		print '<input class="flat" type="text" name="search_lastname" size="12" value="'.$search_lastname.'">';
+		print '<input class="flat maxwidth100" type="text" name="search_lastname" value="'.dol_escape_htmltag($search_lastname).'">';
 		print '</td>';
 		// Firstname
 		print '<td class="liste_titre">';
-		print '<input class="flat" type="text" name="search_firstname" size="10" value="'.$search_firstname.'">';
+		print '<input class="flat maxwidth100" type="text" name="search_firstname" value="'.dol_escape_htmltag($search_firstname).'">';
 		print '</td>';
 		// Other
 		print '<td class="liste_titre">';
@@ -468,10 +476,10 @@ if ($object->fetch($id) >= 0)
 		print '<td class="liste_titre" align="right">';
 		print $formmailing->selectDestinariesStatus($search_dest_status,'search_dest_status',1);
 		print '</td>';
-		//Search Icon
+		// Action column
 		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 '<input type="image" class="liste_titre" src="'.img_picto($langs->trans("Reset"),'searchclear.png','','',1).'" name="button_removefilter" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
+		$searchpitco=$form->showFilterAndCheckAddButtons($massactionbutton?1:0, 'checkforselect', 1);
+		print $searchpitco;
 		print '</td>';
 		print '</tr>';
 
@@ -480,9 +488,10 @@ if ($object->fetch($id) >= 0)
 
 		if ($num)
 		{
-			while ($i < min($num,$conf->liste_limit))
+			while ($i < min($num,$limit))
 			{
 				$obj = $db->fetch_object($resql);
+
 				$var=!$var;
 
 				print "<tr ".$bc[$var].">";
@@ -537,7 +546,7 @@ if ($object->fetch($id) >= 0)
 				{
 					print '<td align="center">'.$obj->date_envoi.'</td>';
 					print '<td align="right" class="nowrap">';
-					print $object::libStatutDest($obj->statut,2);
+					print $object::libStatutDest($obj->statut,2,$obj->error_text);
 					print '</td>';
 				}
 
diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php
index 6a7ae2cefbe206e21f0555db67c26971966aecfd..dc39c2e9399be21252f67e56333c9e0042cd4eee 100644
--- a/htdocs/comm/mailing/class/mailing.class.php
+++ b/htdocs/comm/mailing/class/mailing.class.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2005      Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2005-2012 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2005-2016 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005-2009 Regis Houssin        <regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -33,7 +33,8 @@ class Mailing extends CommonObject
 {
 	public $element='mailing';
 	public $table_element='mailing';
-
+	public $picto='email';
+	
 	var $titre;
 	var $sujet;
 	var $body;
@@ -577,12 +578,14 @@ class Mailing extends CommonObject
 
 	/**
 	 *  Renvoi le libelle d'un statut donne
+	 *  TODO Add class mailin_target.class.php
 	 *
 	 *  @param	int		$statut        	Id statut
 	 *  @param  int		$mode          	0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
+	 *  @param	strin	$desc			Desc error
 	 *  @return string        			Label
 	 */
-	static public function libStatutDest($statut,$mode=0)
+	static public function libStatutDest($statut,$mode=0,$desc='')
 	{
 		global $langs;
 		$langs->load('mails');
@@ -597,28 +600,28 @@ class Mailing extends CommonObject
 		}
 		if ($mode == 2)
 		{
-			if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error();
+			if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error($desc);
 			if ($statut==1) return $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut4');
 			if ($statut==2) return $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6');
 			if ($statut==3) return $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8');
 		}
 		if ($mode == 3)
 		{
-			if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error();
+			if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error($desc);
 			if ($statut==1) return $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut4');
 			if ($statut==2) return $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6');
 			if ($statut==3) return $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8');
 		}
 		if ($mode == 4)
 		{
-			if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error();
+			if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error($desc);
 			if ($statut==1) return $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut4');
 			if ($statut==2) return $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6');
 			if ($statut==3) return $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8');
 		}
 		if ($mode == 5)
 		{
-			if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error();
+			if ($statut==-1) return $langs->trans("MailingStatusError").' '.img_error($desc);
 			if ($statut==1) return $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut4');
 			if ($statut==2) return $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6');
 			if ($statut==3) return $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8');
diff --git a/htdocs/comm/mailing/index.php b/htdocs/comm/mailing/index.php
index bf7c4624c1e08b789cccb5c46be26cf353566c07..ba8c2481411a0b999453174f0e0decf643d9d5bb 100644
--- a/htdocs/comm/mailing/index.php
+++ b/htdocs/comm/mailing/index.php
@@ -56,10 +56,10 @@ print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
 print '<table class="noborder nohover" width="100%">';
 print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("SearchAMailing").'</td></tr>';
 print '<tr '.$bc[$var].'><td class="nowrap">';
-print $langs->trans("Ref").':</td><td><input type="text" class="flat" name="sref" size="18"></td>';
+print $langs->trans("Ref").':</td><td><input type="text" class="flat inputsearch" name="sref"></td>';
 print '<td rowspan="2"><input type="submit" value="'.$langs->trans("Search").'" class="button"></td></tr>';
 print '<tr '.$bc[$var].'><td class="nowrap">';
-print $langs->trans("Other").':</td><td><input type="text" class="flat" name="sall" size="18"></td>';
+print $langs->trans("Other").':</td><td><input type="text" class="flat inputsearch" name="sall"></td>';
 
 print "</table></form><br>\n";
 
diff --git a/htdocs/comm/mailing/info.php b/htdocs/comm/mailing/info.php
index 77245f74766c05b701224d5e689b2f548b199440..5280fcfad59d21c183eae2cf107cc3a646c89b90 100644
--- a/htdocs/comm/mailing/info.php
+++ b/htdocs/comm/mailing/info.php
@@ -43,24 +43,33 @@ llxHeader('',$langs->trans("Mailing"),'EN:Module_EMailing|FR:Module_Mailing|ES:M
 
 $form = new Form($db);
 
-$mil = new Mailing($db);
+$object = new Mailing($db);
 
-if ($mil->fetch($_REQUEST["id"]) >= 0)
+if ($object->fetch($_REQUEST["id"]) >= 0)
 {
-	$head = emailing_prepare_head($mil);
+	$head = emailing_prepare_head($object);
 
 	dol_fiche_head($head, 'info', $langs->trans("Mailing"), 0, 'email');
 
-
-	print '<table width="100%"><tr><td>';
-	$mil->user_creation=$mil->user_creat;
-	$mil->date_creation=$mil->date_creat;
-	$mil->user_validation=$mil->user_valid;
-	$mil->date_validation=$mil->date_valid;
-	dol_print_object_info($mil);
-	print '</td></tr></table>';
-
-	print '</div>';
+	$linkback = '<a href="'.DOL_URL_ROOT.'/comm/mailing/list.php">'.$langs->trans("BackToList").'</a>';
+
+	$morehtmlright='';
+	if ($object->statut == 2) $morehtmlright.=' ('.$object->countNbOfTargets('alreadysent').'/'.$object->nbemail.') ';
+	
+	dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', '', '', 0, '', $morehtmlright);
+	
+	print '<div class="underbanner clearboth"></div><br>';
+	
+	//print '<table width="100%"><tr><td>';
+	$object->user_creation=$object->user_creat;
+	$object->date_creation=$object->date_creat;
+	$object->user_validation=$object->user_valid;
+	$object->date_validation=$object->date_valid;
+	dol_print_object_info($object, 0);
+	//print '</td></tr></table>';
+	
+
+	dol_fiche_end();
 }
 
 llxFooter();
diff --git a/htdocs/comm/mailing/list.php b/htdocs/comm/mailing/list.php
index 7542782f6e7c419ab519921509988da068258a80..bd94dd83f5c77c5bd4e9904c7ca35f32e41a1be0 100644
--- a/htdocs/comm/mailing/list.php
+++ b/htdocs/comm/mailing/list.php
@@ -1,5 +1,5 @@
 <?php
-/* Copyright (C) 2005-2012 Laurent Destailleur  <eldy@users.sourceforge.net>
+/* Copyright (C) 2005-2016 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005-2010 Regis Houssin        <regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -125,11 +125,11 @@ if ($result)
 
 	print '<tr class="liste_titre">';
 	print '<td class="liste_titre">';
-	print '<input type="text" class="flat" name="sref" value="'.dol_escape_htmltag($sref).'" size="6">';
+	print '<input type="text" class="flat maxwidth50" name="sref" value="'.dol_escape_htmltag($sref).'">';
 	print '</td>';
 	// Title
 	print '<td class="liste_titre">';
-	print '<input type="text" class="flat" name="sall" value="'.dol_escape_htmltag($sall).'" size="40">';
+	print '<input type="text" class="flat maxwidth100 maxwidth50onsmartphone" name="sall" value="'.dol_escape_htmltag($sall).'">';
 	print '</td>';
 	print '<td class="liste_titre">&nbsp;</td>';
 	if (! $filteremail) print '<td class="liste_titre">&nbsp;</td>';
@@ -145,7 +145,7 @@ if ($result)
 
 	$email=new Mailing($db);
 
-	while ($i < min($num,$conf->liste_limit))
+	while ($i < min($num,$limit))
 	{
 		$obj = $db->fetch_object($result);
 
diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php
index 6b47d5205b604e776ff9c31314d4b82558c6fd3c..1fe8f76efaac9f31608c800821dd23700c8a7ea8 100644
--- a/htdocs/comm/propal/card.php
+++ b/htdocs/comm/propal/card.php
@@ -777,7 +777,7 @@ if (empty($reshook))
 								$pu_ht = price($prodcustprice->lines [0]->price);
 								$pu_ttc = price($prodcustprice->lines [0]->price_ttc);
 								$price_base_type = $prodcustprice->lines [0]->price_base_type;
-								$prod->tva_tx = $prodcustprice->lines [0]->tva_tx;
+								$tva_tx = $prodcustprice->lines [0]->tva_tx;
 							}
 						}
 					}
@@ -1808,7 +1808,7 @@ if ($action == 'create')
 			// Remise dispo de type non avoir
 			$filter = 'fk_facture_source IS NULL';
 			print '<br>';
-			$form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filter);
+			$form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filter, 0, '', 1);
 		}
 	}
 	if ($absolute_creditnote) {
diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php
index aa5a865dbf26e3f607c78e341c98c12721cad5c3..04c1af11e1d73379c8cacebbd14e5806eacb1396 100644
--- a/htdocs/comm/propal/stats/index.php
+++ b/htdocs/comm/propal/stats/index.php
@@ -37,7 +37,7 @@ $mode=GETPOST("mode")?GETPOST("mode"):'customer';
 if ($mode == 'customer' && ! $user->rights->propale->lire) accessforbidden();
 if ($mode == 'supplier' && ! $user->rights->supplier_proposal->lire) accessforbidden();
 
-$object_statut=GETPOST('propal_statut');
+$object_status=GETPOST('object_status');
 
 $userid=GETPOST('userid','int');
 $socid=GETPOST('socid','int');
@@ -58,6 +58,7 @@ $langs->load('orders');
 $langs->load('companies');
 $langs->load('other');
 $langs->load('suppliers');
+$langs->load('supplier_proposal');
 
 
 /*
@@ -91,7 +92,7 @@ dol_mkdir($dir);
 
 
 $stats = new PropaleStats($db, $socid, ($userid>0?$userid:0), $mode);
-if ($object_statut != '' && $object_statut >= 0) $stats->where .= ' AND p.fk_statut IN ('.$object_statut.')';
+if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND p.fk_statut IN ('.$object_status.')';
 
 // Build graphic number of object
 $data = $stats->getNbByMonthWithPrevYear($endyear,$startyear);
@@ -265,7 +266,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">';
 	print '</td></tr>';
 	// Status
 	print '<tr><td align="left">'.$langs->trans("Status").'</td><td align="left">';
-	$formpropal->selectProposalStatus($object_statut,0,1,1,$mode);
+    $formpropal->selectProposalStatus(($object_status!=''?$object_status:-1),0,0,1,$mode,'object_status');
 	print '</td></tr>';
 	// Year
 	print '<tr><td align="left">'.$langs->trans("Year").'</td><td align="left">';
diff --git a/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php b/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php
index cc84e87ddbae564ddf3a9665db2399ce304648e0..dd325da7297007a85fa5ac210b47fba13f9e4d83 100644
--- a/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php
@@ -35,27 +35,44 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
 
 $langs->load("propal");
 
+$total=0; $ilink=0;
 $var=true;
-$total=0;
 foreach($linkedObjectBlock as $key => $objectlink)
 {
-	$var=!$var;
+    $ilink++;
+    $var=!$var;
+    $trclass=($var?'pair':'impair');
+    if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total';
 ?>
-<tr <?php echo $bc[$var]; ?> >
-    <td><?php echo $langs->trans("Proposal"); ?></td>
-    <td><?php echo $objectlink->getNomUrl(1); ?></td>
-	<td><?php echo $objectlink->ref_client; ?></td>
-	<td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td>
-	<td align="right"><?php
-		if ($user->rights->propale->lire) {
-			$total = $total + $objectlink->total_ht;
-			echo price($objectlink->total_ht);
-		} ?></td>
-	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
-	<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
-</tr>
+    <tr class="<?php echo $trclass; ?>">
+        <td><?php echo $langs->trans("Proposal"); ?></td>
+        <td><?php echo $objectlink->getNomUrl(1); ?></td>
+    	<td><?php echo $objectlink->ref_client; ?></td>
+    	<td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td>
+    	<td align="right"><?php
+    		if ($user->rights->propale->lire) {
+    			$total = $total + $objectlink->total_ht;
+    			echo price($objectlink->total_ht);
+    		} ?></td>
+    	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
+    	<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
+    </tr>
 <?php
 }
+if (count($linkedObjectBlock) > 1)
+{
+    ?>
+    <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>">
+        <td><?php echo $langs->trans("Total"); ?></td>
+        <td></td>
+    	<td align="center"></td>
+    	<td align="center"></td>
+    	<td align="right"><?php echo price($total); ?></td>
+    	<td align="right"></td>
+    	<td align="right"></td>
+    </tr>
+    <?php  
+}
 ?>
 
 <!-- END PHP TEMPLATE -->
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 313fef16e2cd2d881d527e5ce0b45784a367b1e4..9495895bedac3579ec8b42ed2dc0c78e4a983840 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -730,7 +730,7 @@ if (empty($reshook))
 								$pu_ht = price($prodcustprice->lines [0]->price);
 								$pu_ttc = price($prodcustprice->lines [0]->price_ttc);
 								$price_base_type = $prodcustprice->lines [0]->price_base_type;
-								$prod->tva_tx = $prodcustprice->lines [0]->tva_tx;
+								$tva_tx = $prodcustprice->lines [0]->tva_tx;
 							}
 						}
 						else
@@ -2019,7 +2019,7 @@ if ($action == 'create' && $user->rights->commande->creer)
 			} else {
 				// Remise dispo de type remise fixe (not credit note)
 				print '<br>';
-				$form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filterabsolutediscount);
+				$form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filterabsolutediscount, 0, '', 1);
 			}
 		}
 		if ($absolute_creditnote) {
diff --git a/htdocs/commande/class/api_orders.class.php b/htdocs/commande/class/api_orders.class.php
index f000e4ce201a5d83f9806be2c0092a90c5cce05f..c9931ac6f2a86918d4bd5636c9a60b0a13d32e33 100644
--- a/htdocs/commande/class/api_orders.class.php
+++ b/htdocs/commande/class/api_orders.class.php
@@ -371,7 +371,7 @@ class Orders extends DolibarrApi
       }
 			$request_data = (object) $request_data;
       $updateRes = $this->commande->deleteline(DolibarrApiAccess::$user,$lineid);
-      if ($updateRes == 1) {
+      if ($updateRes > 0) {
         return $this->get($id);
       }
       return false;
diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php
index 14c2b88214ed71dbf93716dc02505a9794839f51..87a950623238ce3d2259de3b24adc6c0b6a02a54 100644
--- a/htdocs/commande/list.php
+++ b/htdocs/commande/list.php
@@ -1014,11 +1014,11 @@ if ($resql)
 	{
 	    print '<td class="liste_titre maxwidthonsmartphone" align="right">';
     	$liststatus=array(
-    	    '0'=>$langs->trans("StatusOrderDraftShort"), 
-    	    '1'=>$langs->trans("StatusOrderValidated"), 
-    	    '2'=>$langs->trans("StatusOrderSentShort"), 
-    	    '3'=>$langs->trans("StatusOrderDelivered"), 
-    	    '-1'=>$langs->trans("StatusOrderCanceledShort")
+    	    Commande::STATUS_DRAFT=>$langs->trans("StatusOrderDraftShort"), 
+    	    Commande::STATUS_VALIDATED=>$langs->trans("StatusOrderValidated"), 
+    	    Commande::STATUS_ACCEPTED=>$langs->trans("StatusOrderSentShort"), 
+    	    Commande::STATUS_CLOSED=>$langs->trans("StatusOrderDelivered"), 
+    	    Commande::STATUS_CANCELED=>$langs->trans("StatusOrderCanceledShort")
     	);
     	print $form->selectarray('viewstatut', $liststatus, $viewstatut, -4);
 	    print '</td>';
diff --git a/htdocs/commande/stats/index.php b/htdocs/commande/stats/index.php
index 1f0f763bfd13243733b1257a0c255572f5b43898..55b82d1063c5c041d24508ec76468cf7fef6499d 100644
--- a/htdocs/commande/stats/index.php
+++ b/htdocs/commande/stats/index.php
@@ -28,6 +28,7 @@
 require '../../main.inc.php';
 require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
 require_once DOL_DOCUMENT_ROOT.'/commande/class/commandestats.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formorder.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php';
 
 $WIDTH=DolGraph::getDefaultGraphSizeForStats('width');
@@ -37,6 +38,8 @@ $mode=GETPOST("mode")?GETPOST("mode"):'customer';
 if ($mode == 'customer' && ! $user->rights->commande->lire) accessforbidden();
 if ($mode == 'supplier' && ! $user->rights->fournisseur->commande->lire) accessforbidden();
 
+$object_status=GETPOST('object_status');
+
 $userid=GETPOST('userid','int');
 $socid=GETPOST('socid','int');
 // Security check
@@ -63,6 +66,7 @@ $langs->load('suppliers');
  */
 
 $form=new Form($db);
+$formorder=new FormOrder($db);
 
 if ($mode == 'customer')
 {
@@ -82,9 +86,19 @@ print load_fiche_titre($title,'','title_commercial.png');
 dol_mkdir($dir);
 
 $stats = new CommandeStats($db, $socid, $mode, ($userid>0?$userid:0));
+if ($mode == 'customer')
+{
+    if ($object_status != '' && $object_status >= -1) $stats->where .= ' AND c.fk_statut IN ('.$object_status.')';
+}
+if ($mode == 'supplier')
+{
+    if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND c.fk_statut IN ('.$object_status.')';
+}
+
 
 // Build graphic number of object
 $data = $stats->getNbByMonthWithPrevYear($endyear,$startyear);
+
 //var_dump($data);
 // $data = array(array('Lib',val1,val2,val3),...)
 
@@ -261,6 +275,24 @@ print '<div class="fichecenter"><div class="fichethirdleft">';
 	// User
 	print '<tr><td align="left">'.$langs->trans("CreatedBy").'</td><td align="left">';
 	print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
+	// Status
+	print '<tr><td align="left">'.$langs->trans("Status").'</td><td align="left">';
+	if ($mode == 'customer')
+	{
+	    $liststatus=array(
+	        Commande::STATUS_DRAFT=>$langs->trans("StatusOrderDraft"),
+	        Commande::STATUS_VALIDATED=>$langs->trans("StatusOrderValidated"),
+	        Commande::STATUS_ACCEPTED=>$langs->trans("StatusOrderSent"),
+	        Commande::STATUS_CLOSED=>$langs->trans("StatusOrderDelivered"),
+	        Commande::STATUS_CANCELED=>$langs->trans("StatusOrderCanceled")
+	    );
+	    print $form->selectarray('object_status', $liststatus, GETPOST('object_status'), -4);
+	}
+	if ($mode == 'supplier')
+	{
+	    $formorder->selectSupplierOrderStatus((strstr($object_status, ',')?-1:$object_status), 0, 'object_status');
+	}
+	print '</td></tr>';
 	// Year
 	print '<tr><td align="left">'.$langs->trans("Year").'</td><td align="left">';
 	if (! in_array($year,$arrayyears)) $arrayyears[$year]=$year;
diff --git a/htdocs/commande/tpl/linkedobjectblock.tpl.php b/htdocs/commande/tpl/linkedobjectblock.tpl.php
index 98e931db9f8d290a1922e1e896047c66f11ad296..38efbc91ca22dedadf606f106b82f94bda9bfda7 100644
--- a/htdocs/commande/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/commande/tpl/linkedobjectblock.tpl.php
@@ -24,41 +24,60 @@
 <?php
 
 global $user;
+global $noMoreLinkedObjectBlockAfter;
 
 $langs = $GLOBALS['langs'];
 $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
+
 $langs->load("orders");
 
+$total=0; $ilink=0;
 $var=true;
-$total=0;
 foreach($linkedObjectBlock as $key => $objectlink)
 {
-	$var=!$var;
+    $ilink++;
+    $var=!$var;
+    $trclass=($var?'pair':'impair');
+    if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total';
 ?>
-<tr <?php echo $GLOBALS['bc'][$var]; ?> >
-    <td><?php echo $langs->trans("CustomerOrder"); ?></td>
-    <td><?php echo $objectlink->getNomUrl(1); ?></td>
-	<td align="center"><?php echo $objectlink->ref_client; ?></td>
-	<td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td>
-	<td align="right"><?php
-		if ($user->rights->commande->lire) {
-			$total = $total + $objectlink->total_ht;
-			echo price($objectlink->total_ht);
-		} ?></td>
-	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
-	<td align="right">
-		<?php
-		// For now, shipments must stay linked to order, so link is not deletable
-		if($object->element != 'shipping') {
-			?>
-			<a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a>
-			<?php
-		}
-		?>
-	</td>
-</tr>
+    <tr class="<?php echo $trclass; ?>">
+        <td><?php echo $langs->trans("CustomerOrder"); ?></td>
+        <td><?php echo $objectlink->getNomUrl(1); ?></td>
+    	<td align="center"><?php echo $objectlink->ref_client; ?></td>
+    	<td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td>
+    	<td align="right"><?php
+    		if ($user->rights->commande->lire) {
+    			$total = $total + $objectlink->total_ht;
+    			echo price($objectlink->total_ht);
+    		} ?></td>
+    	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
+    	<td align="right">
+    		<?php
+    		// For now, shipments must stay linked to order, so link is not deletable
+    		if($object->element != 'shipping') {
+    			?>
+    			<a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a>
+    			<?php
+    		}
+    		?>
+    	</td>
+    </tr>
 <?php
 }
+if (count($linkedObjectBlock) > 1)
+{
+    ?>
+    <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>">
+        <td><?php echo $langs->trans("Total"); ?></td>
+        <td></td>
+    	<td align="center"></td>
+    	<td align="center"></td>
+    	<td align="right"><?php echo price($total); ?></td>
+    	<td align="right"></td>
+    	<td align="right"></td>
+    </tr>
+    <?php  
+}
 ?>
 
 <!-- END PHP TEMPLATE -->
\ No newline at end of file
diff --git a/htdocs/compta/bank/annuel.php b/htdocs/compta/bank/annuel.php
index 9acf83db3993ee14eb2be629fa20ed4633df83fa..f82177e0b21b5be5afd6da329865688c6c04174d 100644
--- a/htdocs/compta/bank/annuel.php
+++ b/htdocs/compta/bank/annuel.php
@@ -32,6 +32,9 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php';
 $langs->load("banks");
 $langs->load("categories");
 
+$WIDTH=DolGraph::getDefaultGraphSizeForStats('width',768);
+$HEIGHT=DolGraph::getDefaultGraphSizeForStats('height',200);
+
 $id=GETPOST('account')?GETPOST('account','alpha'):GETPOST('id');
 $ref=GETPOST('ref');
 
@@ -53,6 +56,12 @@ else
 	$year_end=$year_start+2;
 }
 
+
+
+/*
+ * View
+ */
+
 $title = $langs->trans("FinancialAccount").' - '.$langs->trans("IOMonthlyReporting");
 $helpurl = "";
 llxHeader('',$title,$helpurl);
@@ -276,10 +285,6 @@ if ($result < 0)
 }
 else
 {
-	// Definition de $width et $height
-	$width = 480;
-	$height = 300;
-
 	// Calcul de $min et $max
 	$sql = "SELECT MIN(b.datev) as min, MAX(b.datev) as max";
 	$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
@@ -374,8 +379,8 @@ else
 	$px1->SetMaxValue($px1->GetCeilMaxValue()<0?0:$px1->GetCeilMaxValue());
 	$px1->SetMinValue($px1->GetFloorMinValue()>0?0:$px1->GetFloorMinValue());
 	$px1->SetTitle($title);
-	$px1->SetWidth($width);
-	$px1->SetHeight($height);
+	$px1->SetWidth($WIDTH);
+	$px1->SetHeight($HEIGHT);
 	$px1->SetType(array('line','line','line'));
 	$px1->SetShading(3);
 	$px1->setBgColor('onglet');
@@ -461,8 +466,8 @@ else
 	$px2->SetMaxValue($px2->GetCeilMaxValue()<0?0:$px2->GetCeilMaxValue());
 	$px2->SetMinValue($px2->GetFloorMinValue()>0?0:$px2->GetFloorMinValue());
 	$px2->SetTitle($title);
-	$px2->SetWidth($width);
-	$px2->SetHeight($height);
+	$px2->SetWidth($WIDTH);
+	$px2->SetHeight($HEIGHT);
 	$px2->SetType(array('line','line','line'));
 	$px2->SetShading(3);
 	$px2->setBgColor('onglet');
diff --git a/htdocs/compta/bank/bankentries.php b/htdocs/compta/bank/bankentries.php
index bb56c49485417afe143822bc1d2be6b18f759f57..20a5a2e8b85066c066bbc6be2fd9e5c31da70349 100644
--- a/htdocs/compta/bank/bankentries.php
+++ b/htdocs/compta/bank/bankentries.php
@@ -108,14 +108,13 @@ if (! $sortfield) $sortfield='b.datev';
 
 $mode_balance_ok=false;
 //if (($sortfield == 'b.datev' || $sortfield == 'b.datev, b.dateo, b.rowid'))    // TODO Manage balance when account not selected
-if (($sortfield == 'b.datev' || $sortfield == 'b.datev, b.dateo, b.rowid') && ($id > 0 || ! empty($ref)))
+if (($sortfield == 'b.datev' || $sortfield == 'b.datev, b.dateo, b.rowid'))
 {
     $sortfield = 'b.datev, b.dateo, b.rowid';
-    $mode_balance_ok = true;
+    if ($id > 0 || ! empty($ref) || $account > 0) $mode_balance_ok = true;
 }
 if (strtolower($sortorder) == 'desc') $mode_balance_ok = false;
 
-
 $object = new Account($db);
 if ($id > 0 || ! empty($ref))
 {
@@ -527,6 +526,9 @@ if ($page >= $nbtotalofpages)
     if ($page < 0) $page = 0;
 }
 
+// If not account defined $mode_balance_ok=false
+if (empty($account)) $mode_balance_ok=false;
+// If a search is done $mode_balance_ok=false
 if (! empty($search_ref)) $mode_balance_ok=false;
 if (! empty($req_nb)) $mode_balance_ok=false;
 if (! empty($type)) $mode_balance_ok=false;
@@ -879,6 +881,12 @@ if ($resql)
         // If we are in a situation where we need/can show balance, we calculate the start of balance
         if (! $balancecalculated && ! empty($arrayfields['balance']['checked']) && $mode_balance_ok)
         {
+            if (! $account) 
+            {
+                dol_print_error('', 'account is not defined but $mode_balance_ok is true');
+                exit;
+            }
+            
             //Loop on each record
             $sign = 1;
             $i = 0;
diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php
index a608a71bf7d99a10d59aee3620fea84adb161b8c..43efcc93d574b43d16fc4d55967c4c44d20595e9 100644
--- a/htdocs/compta/bank/card.php
+++ b/htdocs/compta/bank/card.php
@@ -1,7 +1,7 @@
 <?php
 /* Copyright (C) 2002-2003	Rodolphe Quiedeville	<rodolphe@quiedeville.org>
  * Copyright (C) 2003		Jean-Louis Bergamo	<jlb@j1b.org>
- * Copyright (C) 2004-2015	Laurent Destailleur	<eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2016	Laurent Destailleur	<eldy@users.sourceforge.net>
  * Copyright (C) 2005-2009	Regis Houssin		<regis.houssin@capnetworks.com>
  * Copyright (C) 2014-2016	Alexandre Spangaro	<aspangaro.dolibarr@gmail.com>
  * Copyright (C) 2015       Jean-François Ferry	<jfefe@aternatik.fr>
@@ -840,11 +840,11 @@ else
 
 		// Label
         print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td>';
-        print '<td><input size="30" type="text" class="flat" name="label" value="'.(isset($_POST["label"])?$_POST["label"]:$object->label).'"></td></tr>';
+        print '<td><input type="text" class="flat minwidth300" name="label" value="'.(isset($_POST["label"])?$_POST["label"]:$object->label).'"></td></tr>';
 
         // Type
         print '<tr><td class="fieldrequired">'.$langs->trans("AccountType").'</td>';
-        print '<td>';
+        print '<td class="maxwidth200onsmartphone">';
 		$formbank->selectTypeOfBankAccount((isset($_POST["type"])?$_POST["type"]:$object->type),"type");
         print '</td></tr>';
 
@@ -852,7 +852,7 @@ else
 		print '<tr><td class="fieldrequired">'.$langs->trans("Currency");
 		print '<input type="hidden" value="'.$object->currency_code.'">';
 		print '</td>';
-		print '<td>';
+		print '<td class="maxwidth200onsmartphone">';
 		$selectedcode=$object->currency_code;
 		if (! $selectedcode) $selectedcode=$conf->currency;
 		print $form->selectCurrency((isset($_POST["account_currency_code"])?$_POST["account_currency_code"]:$selectedcode), 'account_currency_code');
@@ -862,8 +862,8 @@ else
 
 		// Status
         print '<tr><td class="fieldrequired">'.$langs->trans("Status").'</td>';
-        print '<td>';
-        print $form->selectarray("clos", $object->status,(isset($_POST["clos"])?$_POST["clos"]:$object->clos));
+        print '<td class="maxwidth200onsmartphone">';
+        print $form->selectarray("clos", $object->status, (isset($_POST["clos"])?$_POST["clos"]:$object->clos));
         print '</td></tr>';
 
 		// Country
@@ -874,13 +874,13 @@ else
 		$object->country_code = getCountry($selectedcode, 2);	// Force country code on account to have following field on bank fields matching country rules
 
 		print '<tr><td class="fieldrequired">'.$langs->trans("Country").'</td>';
-		print '<td>';
+		print '<td class="maxwidth200onsmartphone">';
 		print $form->select_country($selectedcode,'account_country_id');
 		if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
 		print '</td></tr>';
 
 		// State
-		print '<tr><td>'.$langs->trans('State').'</td><td>';
+		print '<tr><td>'.$langs->trans('State').'</td><td class="maxwidth200onsmartphone">';
 		if ($selectedcode)
 		{
 			print $formcompany->select_state(isset($_POST["account_state_id"])?$_POST["account_state_id"]:$object->state_id,$selectedcode,'account_state_id');
@@ -909,7 +909,7 @@ else
 
 		// Web
         print '<tr><td>'.$langs->trans("Web").'</td>';
-        print '<td><input size="50" type="text" class="flat" name="url" value="'.(isset($_POST["url"])?$_POST["url"]:$object->url).'">';
+        print '<td><input class="maxwidth200onsmartphone" type="text" class="flat" name="url" value="'.(isset($_POST["url"])?$_POST["url"]:$object->url).'">';
         print '</td></tr>';
 
         // Tags-Categories
@@ -931,7 +931,7 @@ else
 		print '<td>';
 	    // Editor wysiwyg
 		require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
-		$doleditor=new DolEditor('account_comment',(GETPOST("account_comment")?GETPOST("account_comment"):$object->comment),'',90,'dolibarr_notes','',false,true,$conf->global->FCKEDITOR_ENABLE_SOCIETE,4,70);
+		$doleditor=new DolEditor('account_comment',(GETPOST("account_comment")?GETPOST("account_comment"):$object->comment),'',90,'dolibarr_notes','',false,true,$conf->global->FCKEDITOR_ENABLE_SOCIETE,4,'95%');
 		$doleditor->Create();
 		print '</td></tr>';
 
@@ -1020,22 +1020,22 @@ else
 
 			// IBAN
 			print '<tr><td>'.$langs->trans($ibankey).'</td>';
-			print '<td><input size="34" maxlength="34" type="text" class="flat" name="iban" value="'.$object->iban.'"></td></tr>';
+			print '<td><input class="minwidth300 maxwidth200onsmartphone" maxlength="34" type="text" class="flat" name="iban" value="'.$object->iban.'"></td></tr>';
 
 			print '<tr><td>'.$langs->trans($bickey).'</td>';
-			print '<td><input size="11" maxlength="11" type="text" class="flat" name="bic" value="'.$object->bic.'"></td></tr>';
+			print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="11" type="text" class="flat" name="bic" value="'.$object->bic.'"></td></tr>';
 
 			print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
-			print "<textarea class=\"flat\" name=\"domiciliation\" rows=\"2\" cols=\"40\">";
+			print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
 			print $object->domiciliation;
 			print "</textarea></td></tr>";
 
 			print '<tr><td>'.$langs->trans("BankAccountOwner").'</td>';
-			print '<td><input size="30" type="text" class="flat" name="proprio" value="'.$object->proprio.'"></td>';
+			print '<td><input class="maxwidth200onsmartphone" type="text" class="flat" name="proprio" value="'.$object->proprio.'"></td>';
 			print '</tr>';
 
 			print '<tr><td>'.$langs->trans("BankAccountOwnerAddress").'</td><td>';
-			print "<textarea class=\"flat\" name=\"owner_address\" rows=\"2\" cols=\"40\">";
+			print '<textarea class="flat quatrevingtpercent" name="owner_address" rows="'.ROWS_2.'">';
 			print $object->owner_address;
 			print "</textarea></td></tr>";
 
diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php
index f786158ccbefb7b1b80ec3165b8c0e598cb01996..c25bc073d1f1c23eae0e76a85dad4ed273f85c72 100644
--- a/htdocs/compta/bank/class/account.class.php
+++ b/htdocs/compta/bank/class/account.class.php
@@ -236,7 +236,7 @@ class Account extends CommonObject
 
         $this->status = array(
             self::STATUS_OPEN => $langs->trans("StatusAccountOpened"),
-            self::STATUS_CLOSED => $langs->trans("StatusAccountOpened")
+            self::STATUS_CLOSED => $langs->trans("StatusAccountClosed")
         );
     }
 
@@ -1244,7 +1244,7 @@ class Account extends CommonObject
         }
 
         if ($withpicto) $result.=($link.img_object($label, 'account', 'class="classfortooltip"').$linkend.' ');
-        $result.=$link.$this->label.$linkend;
+        $result.=$link.$this->ref.$linkend;
         return $result;
     }
 
diff --git a/htdocs/compta/bank/index.php b/htdocs/compta/bank/index.php
index 7d3073d71294ed47107206875381d9e15727ffeb..56735d15fceec5b5dc7bde92f8d84c084a7d7d58 100644
--- a/htdocs/compta/bank/index.php
+++ b/htdocs/compta/bank/index.php
@@ -39,6 +39,9 @@ $show_files=GETPOST('show_files','int');
 $confirm=GETPOST('confirm','alpha');
 $toselect = GETPOST('toselect', 'array');
 
+$search_ref=GETPOST('search_ref','alpha');
+$search_label=GETPOST('search_label','alpha');
+$search_number=GETPOST('search_number','alpha');
 $statut=GETPOST('statut')?GETPOST('statut', 'alpha'):'opened';                      // 'all' or ''='opened'
 $optioncss = GETPOST('optioncss','alpha');
 
@@ -115,7 +118,10 @@ include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
 if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // All test are required to be compatible with all browsers
 {
     $statut = 'all';
-    
+    $search_ref='';
+    $search_label='';
+    $search_number='';
+    $search_statut='';
 }
     
     
@@ -124,6 +130,8 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP
  * View
  */
 
+$form=new Form($db);
+
 $title=$langs->trans('BankAccounts');
 
 // Load array of financial accounts (opened by default)
@@ -139,9 +147,11 @@ $sql.=$hookmanager->resPrint;
 $sql.= " FROM ".MAIN_DB_PREFIX."bank_account as b";
 if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bankcacount_extrafields as ef on (c.rowid = ef.fk_object)";
 $sql.= " WHERE entity IN (".getEntity('bank_account', 1).")";
-if ($statut == 'opened') $sql.= " AND clos = 0";
-if ($statut == 'closed') $sql.= " AND clos = 1";
-
+if ($statut == 'opened')  $sql.= " AND clos = 0";
+if ($statut == 'closed')  $sql.= " AND clos = 1";
+if ($search_ref != '')    $sql.=natural_search('b.ref', $search_ref);
+if ($search_label != '')  $sql.=natural_search('b.label', $search_label);
+if ($search_number != '') $sql.=natural_search('b.number', $search_number);
 // Add where from extra fields
 foreach ($search_array_options as $key => $val)
 {
@@ -202,6 +212,9 @@ $arrayofselected=is_array($toselect)?$toselect:array();
 $param='';
 if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage;
 if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit;
+if ($search_ref != '')      $param.='&search_ref='.$search_ref;
+if ($search_label != '')    $param.='&search_label='.$search_label;
+if ($search_number != '')   $param.='&search_number='.$search_number;
 if ($statut != '')          $param.='&statut='.$statut;
 if ($show_files)            $param.='&show_files=' .$show_files;
 if ($optioncss != '')       $param.='&optioncss='.$optioncss;
@@ -266,8 +279,8 @@ print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"")
 // Fields title
 print '<tr class="liste_titre">';
 if (! empty($arrayfields['b.ref']['checked']))            print_liste_field_titre($arrayfields['b.ref']['label'],$_SERVER["PHP_SELF"],'b.ref','',$param,'',$sortfield,$sortorder);
-if (! empty($arrayfields['accountype']['checked']))       print_liste_field_titre($arrayfields['accountype']['label'],$_SERVER["PHP_SELF"],'','',$param,'',$sortfield,$sortorder);
 if (! empty($arrayfields['b.label']['checked']))          print_liste_field_titre($arrayfields['b.label']['label'],$_SERVER["PHP_SELF"],'b.label','',$param,'',$sortfield,$sortorder);
+if (! empty($arrayfields['accountype']['checked']))       print_liste_field_titre($arrayfields['accountype']['label'],$_SERVER["PHP_SELF"],'','',$param,'',$sortfield,$sortorder);
 if (! empty($arrayfields['b.number']['checked']))         print_liste_field_titre($arrayfields['b.number']['label'],$_SERVER["PHP_SELF"],'b.number','',$param,'',$sortfield,$sortorder);
 if (! empty($arrayfields['toreconcile']['checked']))      print_liste_field_titre($arrayfields['toreconcile']['label'],$_SERVER["PHP_SELF"],'','',$param,'align="center"',$sortfield,$sortorder);
 if (! empty($arrayfields['b.clos']['checked']))           print_liste_field_titre($arrayfields['b.clos']['label'],$_SERVER["PHP_SELF"],'b.clos','',$param,'align="center"',$sortfield,$sortorder);
@@ -300,17 +313,17 @@ if (! empty($arrayfields['b.ref']['checked']))
     print '<input class="flat" size="6" type="text" name="search_ref" value="'.$search_ref.'">';
     print '</td>';
 }
-// Account type
-if (! empty($arrayfields['accountype']['checked']))
+// Label
+if (! empty($arrayfields['b.label']['checked']))
 {
     print '<td class="liste_titre">';
+    print '<input class="flat" size="6" type="text" name="search_label" value="'.$search_label.'">';
     print '</td>';
 }
-// Ref
-if (! empty($arrayfields['b.label']['checked']))
+// Account type
+if (! empty($arrayfields['accountype']['checked']))
 {
     print '<td class="liste_titre">';
-    print '<input class="flat" size="6" type="text" name="search_label" value="'.$search_label.'">';
     print '</td>';
 }
 // Number
@@ -403,10 +416,10 @@ foreach ($accounts as $key=>$type)
 
 		print '<tr '.$bc[$var].'>';
 		print '<td class="titlefield">'.$acc->getNomUrl(1).'</td>';
+		print '<td>'.$acc->label.'</td>';
 		print '<td>';
 		print $acc->type_lib[$acc->type];
 		print '</td>';
-		print '<td>'.$acc->bank.'</td>';
 		print '<td>'.$acc->number.'</td>';
 		print '<td align="center">';
 		if ($acc->rappro)
@@ -421,7 +434,9 @@ foreach ($accounts as $key=>$type)
 		}
 		else print $langs->trans("FeatureDisabled");
 		print '</td>';
-		print '<td align="center">'.$acc->getLibStatut(2).'</td>';
+		// Status
+		print '<td align="center">'.$acc->getLibStatut(5).'</td>';
+		//
 		print '<td align="right">';
 		print '<a href="'.DOL_URL_ROOT.'/compta/bankentries.php?id='.$acc->id.'">'.price($solde, 0, $langs, 0, 0, -1, $acc->currency_code).'</a>';
 		print '</td>';
@@ -442,7 +457,7 @@ foreach ($accounts as $key=>$type)
 		$total[$acc->currency_code] += $solde;
 	//}
 }
-if (! $found) print '<tr '.$bc[$var].'><td colspan="7" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
+if (! $found) print '<tr '.$bc[$var].'><td colspan="8" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
 // Total
 foreach ($total as $key=>$solde)
 {
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 2f4f887f6527a84ed703517856790c1af3f94104..2bf69038e78c8aae9c0ab56d786d228dacc03580 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -1433,7 +1433,7 @@ if (empty($reshook))
 								$pu_ht = price($prodcustprice->lines[0]->price);
 								$pu_ttc = price($prodcustprice->lines[0]->price_ttc);
 								$price_base_type = $prodcustprice->lines[0]->price_base_type;
-								$prod->tva_tx = $prodcustprice->lines[0]->tva_tx;
+								$tva_tx = $prodcustprice->lines[0]->tva_tx;
 							}
 						}
 					}
@@ -2933,17 +2933,17 @@ else if ($id > 0 || ! empty($ref))
 	    }
 	}
 	$morehtmlref.='</div>';
-	
+
 	$object->totalpaye = $totalpaye;   // To give a chance to dol_banner_tab to use already paid amount to show correct status
-	
+
 	dol_banner_tab($object, 'ref', $linkback, 1, 'facnumber', 'ref', $morehtmlref, '', 0, '', $morehtmlright);
-	
+
 	print '<div class="fichecenter">';
 	print '<div class="fichehalfleft">';
 	print '<div class="underbanner clearboth"></div>';
-	
+
 	print '<table class="border" width="100%">';
-	
+
 	// Type
 	print '<tr><td class="titlefield">' . $langs->trans('Type') . '</td><td>';
 	print $object->getLibType();
@@ -3303,7 +3303,7 @@ else if ($id > 0 || ! empty($ref))
 	include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php';
 
 	print '</table>';
-	
+
 	print '</div>';
 	print '<div class="fichehalfright">';
 	print '<div class="ficheaddleft">';
@@ -3328,15 +3328,15 @@ else if ($id > 0 || ! empty($ref))
 	    print '<td class="nowrap">' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
 	    print '</tr>';
 	}
-	
+
 	// Amount
-	print '<tr><td class="titlefieldmiddle">' . $langs->trans('AmountHT') . '</td>';
+	print '<tr><td class="titlefield">' . $langs->trans('AmountHT') . '</td>';
 	print '<td class="nowrap">' . price($object->total_ht, 1, '', 1, - 1, - 1, $conf->currency) . '</td></tr>';
-	
+
 	// Vat
 	print '<tr><td>' . $langs->trans('AmountVAT') . '</td><td colspan="3" class="nowrap">' . price($object->total_tva, 1, '', 1, - 1, - 1, $conf->currency) . '</td></tr>';
 	print '</tr>';
-	
+
 	// Amount Local Taxes
 	if (($mysoc->localtax1_assuj == "1" && $mysoc->useLocalTax(1)) || $object->total_localtax1 != 0) 	// Localtax1
 	{
@@ -3348,7 +3348,7 @@ else if ($id > 0 || ! empty($ref))
 	    print '<tr><td>' . $langs->transcountry("AmountLT2", $mysoc->country_code) . '</td>';
 	    print '<td class=nowrap">' . price($object->total_localtax2, 1, '', 1, - 1, - 1, $conf->currency) . '</td></tr>';
 	}
-	
+
 	// Revenue stamp
 	if ($selleruserevenustamp) 	// Test company use revenue stamp
 	{
@@ -3375,14 +3375,14 @@ else if ($id > 0 || ! empty($ref))
         }
         print '</td></tr>';
 	}
-	
+
 	// Total with tax
 	print '<tr><td>' . $langs->trans('AmountTTC') . '</td><td class="nowrap">' . price($object->total_ttc, 1, '', 1, - 1, - 1, $conf->currency) . '</td></tr>';
-	
+
 	print '</table>';
-	
+
 	// List of payments
-	
+
 	$sign = 1;
 	if ($object->type == Facture::TYPE_CREDIT_NOTE) $sign = - 1;
     $nbrows = 8;
@@ -3491,9 +3491,9 @@ else if ($id > 0 || ! empty($ref))
         if (count($object->tab_previous_situation_invoice) > 0 || count($object->tab_next_situation_invoice) > 0)
             print '</table>';
     }
-    
+
     print '<table class="noborder paymenttable" width="100%">';
-    
+
     // List of payments already done
     print '<tr class="liste_titre">';
     print '<td class="liste_titre">' . ($object->type == Facture::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')) . '</td>';
@@ -3505,9 +3505,9 @@ else if ($id > 0 || ! empty($ref))
     print '<td class="liste_titre" align="right">' . $langs->trans('Amount') . '</td>';
     print '<td class="liste_titre" width="18">&nbsp;</td>';
     print '</tr>';
-    
+
     $var = true;
-    
+
     // Payments already done (from payment on this invoice)
     $sql = 'SELECT p.datep as dp, p.ref, p.num_paiement, p.rowid, p.fk_bank,';
     $sql .= ' c.code as payment_code, c.libelle as payment_label,';
@@ -3518,12 +3518,12 @@ else if ($id > 0 || ! empty($ref))
     $sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'bank_account as ba ON b.fk_account = ba.rowid';
     $sql .= ' WHERE pf.fk_facture = ' . $object->id . ' AND p.fk_paiement = c.id AND pf.fk_paiement = p.rowid';
     $sql .= ' ORDER BY p.datep, p.tms';
-    
+
     $result = $db->query($sql);
     if ($result) {
         $num = $db->num_rows($result);
         $i = 0;
-        
+
         // if ($object->type != 2)
         // {
         if ($num > 0) {
@@ -3563,7 +3563,7 @@ else if ($id > 0 || ! empty($ref))
     } else {
         dol_print_error($db);
     }
-    
+
     if ($object->type != Facture::TYPE_CREDIT_NOTE) {
         // Total already paid
         print '<tr><td colspan="' . $nbcols . '" align="right">';
@@ -3572,10 +3572,10 @@ else if ($id > 0 || ! empty($ref))
         else
             print $langs->trans('AlreadyPaid');
         print ' :</td><td align="right"'.(($totalpaye > 0)?' class="amountalreadypaid"':'').'>' . price($totalpaye) . '</td><td>&nbsp;</td></tr>';
-        
+
         $resteapayeraffiche = $resteapayer;
         $cssforamountpaymentcomplete = 'amountpaymentcomplete';
-        
+
         // Loop on each credit note or deposit amount applied
         $creditnoteamount = 0;
         $depositamount = 0;
@@ -3611,7 +3611,7 @@ else if ($id > 0 || ! empty($ref))
         } else {
             dol_print_error($db);
         }
-        
+
         // Paye partiellement 'escompte'
         if (($object->statut == Facture::STATUS_CLOSED || $object->statut == Facture::STATUS_ABANDONED) && $object->close_code == 'discount_vat') {
             print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">';
@@ -3647,7 +3647,7 @@ else if ($id > 0 || ! empty($ref))
             $resteapayeraffiche = 0;
             $cssforamountpaymentcomplete = '';
         }
-        
+
         // Billed
         print '<tr><td colspan="' . $nbcols . '" align="right">' . $langs->trans("Billed") . ' :</td><td align="right">' . price($object->total_ttc) . '</td><td>&nbsp;</td></tr>';
         
@@ -3667,10 +3667,10 @@ else if ($id > 0 || ! empty($ref))
         print '<tr><td colspan="' . $nbcols . '" align="right">';
         print $langs->trans('AlreadyPaidBack');
         print ' :</td><td align="right">' . price($sign * $totalpaye) . '</td><td>&nbsp;</td></tr>';
-        
+
         // Billed
         print '<tr><td colspan="' . $nbcols . '" align="right">' . $langs->trans("Billed") . ' :</td><td align="right">' . price($sign * $object->total_ttc) . '</td><td>&nbsp;</td></tr>';
-        
+
         // Remainder to pay back
         print '<tr><td colspan="' . $nbcols . '" align="right">';
         if ($resteapayeraffiche <= 0)
@@ -3680,27 +3680,26 @@ else if ($id > 0 || ! empty($ref))
         print ' :</td>';
         print '<td align="right" bgcolor="#f0f0f0"><b>' . price($sign * $resteapayeraffiche) . '</b></td>';
         print '<td class="nowrap">&nbsp;</td></tr>';
-        
+
         // Sold credit note
         // print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans('TotalTTC').' :</td>';
         // print '<td align="right" style="border: 1px solid;" bgcolor="#f0f0f0"><b>'.price($sign *
         // $object->total_ttc).'</b></td><td>&nbsp;</td></tr>';
     }
-    
+
     print '</table>';
-	                            
+
 	// Margin Infos
 	if (! empty($conf->margin->enabled)) {
 	    $formmargin->displayMarginInfos($object);
 	}
-	
 
 	print '</div>';
 	print '</div>';
 	print '</div>';
-	
+
 	print '<div class="clearboth"></div><br>';
-	
+
 	if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) {
 		$blocname = 'contacts';
 		$title = $langs->trans('ContactsAddresses');
@@ -3811,8 +3810,7 @@ else if ($id > 0 || ! empty($ref))
 		print '<div class="tabsAction">';
 
 		$parameters = array();
-		$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been
-		                                                                                          // modified by hook
+		$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
 		if (empty($reshook)) {
 			// Editer une facture deja validee, sans paiement effectue et pas exporte en compta
 			if ($object->statut == 1)
diff --git a/htdocs/compta/facture/apercu.php b/htdocs/compta/facture/apercu.php
index 8300545cb22a5dd0fb027bac387c147c9a3edc1d..258b2434f600d8be86e2a7e039830d1c52bf056a 100644
--- a/htdocs/compta/facture/apercu.php
+++ b/htdocs/compta/facture/apercu.php
@@ -188,7 +188,7 @@ if ($id > 0 || ! empty($ref))
                 // Remise dispo de type remise fixe (not credit note)
                 $filter='fk_facture_source IS NULL';
                 print '<br>';
-                $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0,  'remise_id',$soc->id, $absolute_discount, $filter, $resteapayer, ' - '.$addabsolutediscount);
+                $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0,  'remise_id',$soc->id, $absolute_discount, $filter, $resteapayer, ' - '.$addabsolutediscount, 1);
             }
         }
         else
@@ -220,7 +220,7 @@ if ($id > 0 || ! empty($ref))
                 // Remise dispo de type avoir
                 $filter='fk_facture_source IS NOT NULL';
                 if (! $absolute_discount) print '<br>';
-                $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filter, $resteapayer);
+                $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filter, $resteapayer, '', 1);
             }
         }
         if (! $absolute_discount && ! $absolute_creditnote)
diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php
index 33da64e322167c38443ec3a1990082878c300c51..c1381be0ea55eeab3876853ad861074e97a63c7e 100644
--- a/htdocs/compta/facture/fiche-rec.php
+++ b/htdocs/compta/facture/fiche-rec.php
@@ -40,6 +40,7 @@ if (! empty($conf->projet->enabled)) {
 
 $langs->load('bills');
 $langs->load('compta');
+$langs->load('admin');
 
 // Security check
 $id=(GETPOST('facid','int')?GETPOST('facid','int'):GETPOST('id','int'));
@@ -504,7 +505,7 @@ if (empty($reshook))
     					$pu_ht = price($prodcustprice->lines[0]->price);
     					$pu_ttc = price($prodcustprice->lines[0]->price_ttc);
     					$price_base_type = $prodcustprice->lines[0]->price_base_type;
-    					$prod->tva_tx = $prodcustprice->lines[0]->tva_tx;
+    					$tva_tx = $prodcustprice->lines[0]->tva_tx;
     				}
     			}
     		}
diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php
index 87a27166ae89fcbb065b97307b7c2630c497ea5d..879d5abfee4139435417c9b160ed7dd652c3b9a8 100644
--- a/htdocs/compta/facture/prelevement.php
+++ b/htdocs/compta/facture/prelevement.php
@@ -263,7 +263,7 @@ if ($object->id > 0)
 			// Remise dispo de type non avoir
 			$filter='fk_facture_source IS NULL';
 			print '<br>';
-			$form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$object->id,0,'remise_id',$object->thirdparty->id,$absolute_discount,$filter,$resteapayer);
+			$form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$object->id,0,'remise_id',$object->thirdparty->id,$absolute_discount,$filter,$resteapayer,'',1);
 		}
 	}
 	if ($absolute_creditnote > 0)
@@ -283,7 +283,7 @@ if ($object->id > 0)
 			// Remise dispo de type avoir
 			$filter='fk_facture_source IS NOT NULL';
 			if (! $absolute_discount) print '<br>';
-			$form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$object->id,0,'remise_id_for_payment',$object->thirdparty->id,$absolute_creditnote,$filter,$resteapayer);
+			$form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$object->id,0,'remise_id_for_payment',$object->thirdparty->id,$absolute_creditnote,$filter,$resteapayer,'',1);
 		}
 	}
 	if (! $absolute_discount && ! $absolute_creditnote) print $langs->trans("CompanyHasNoAbsoluteDiscount").'.';
diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php
index 9ca0c2f7718dca6bb1d5810b61a7dd22841ff445..5c5aa8489be65fbae22eaa772f2ecbc62938a755 100644
--- a/htdocs/compta/facture/stats/index.php
+++ b/htdocs/compta/facture/stats/index.php
@@ -36,6 +36,8 @@ $mode=GETPOST("mode")?GETPOST("mode"):'customer';
 if ($mode == 'customer' && ! $user->rights->facture->lire) accessforbidden();
 if ($mode == 'supplier' && ! $user->rights->fournisseur->facture->lire) accessforbidden();
 
+$object_status=GETPOST('object_status');
+
 $userid=GETPOST('userid','int');
 $socid=GETPOST('socid','int');
 // Security check
@@ -80,7 +82,14 @@ print load_fiche_titre($title, $mesg, 'title_accountancy.png');
 dol_mkdir($dir);
 
 $stats = new FactureStats($db, $socid, $mode, ($userid>0?$userid:0));
-
+if ($mode == 'customer')
+{
+    if ($object_status != '' && $object_status >= -1) $stats->where .= ' AND f.fk_statut IN ('.$object_status.')';
+}
+if ($mode == 'supplier')
+{
+    if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND f.fk_statut IN ('.$object_status.')';
+}
 
 // Build graphic number of object
 // $data = array(array('Lib',val1,val2,val3),...)
@@ -246,6 +255,19 @@ print '<div class="fichecenter"><div class="fichethirdleft">';
 	print '<tr><td>'.$langs->trans("CreatedBy").'</td><td>';
 	print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
 	print '</td></tr>';
+	// Status
+	print '<tr><td align="left">'.$langs->trans("Status").'</td><td align="left">';
+	if ($mode == 'customer')
+	{
+	    $liststatus=array('0'=>$langs->trans("BillStatusDraft"), '1'=>$langs->trans("BillStatusNotPaid"), '2'=>$langs->trans("BillStatusPaid"), '3'=>$langs->trans("BillStatusCanceled"));
+	    print $form->selectarray('object_status', $liststatus, $object_status, 1);
+	}
+	if ($mode == 'supplier')
+	{
+	    $liststatus=array('0'=>$langs->trans("BillStatusDraft"),'1'=>$langs->trans("BillStatusNotPaid"), '2'=>$langs->trans("BillStatusPaid"));
+	    print $form->selectarray('object_status', $liststatus, $object_status, 1);
+	}
+	print '</td></tr>';
 	// Year
 	print '<tr><td>'.$langs->trans("Year").'</td><td>';
 	if (! in_array($year,$arrayyears)) $arrayyears[$year]=$year;
diff --git a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php
index 56e8645b8c7f92955877d27aa936ff3720ba09fa..16aa54e229da4fa0ce09ad8d1dfd25f068b5ac46 100644
--- a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php
@@ -24,32 +24,51 @@
 <?php
 
 global $user;
+global $noMoreLinkedObjectBlockAfter;
 
 $langs = $GLOBALS['langs'];
 $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
+
 $langs->load("bills");
 
+$total=0; $ilink=0;
 $var=true;
-$total=0;
 foreach($linkedObjectBlock as $key => $objectlink)
 {
-	$var=!$var;
+    $ilink++;
+    $var=!$var;
+    $trclass=($var?'pair':'impair');
+    if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total';
 ?>
-<tr <?php echo $GLOBALS['bc'][$var]; ?> >
-    <td><?php echo $langs->trans("CustomerInvoice"); ?></td>
-    <td><?php echo $objectlink->getNomUrl(1); ?></td>
-	<td align="center"><?php echo $objectlink->ref_client; ?></td>
-	<td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td>
-	<td align="right"><?php
-		if ($user->rights->facture->lire) {
-			$total = $total + $objectlink->total_ht;
-			echo price($objectlink->total_ht);
-		} ?></td>
-	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
-	<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
-</tr>
+	<tr class="<?php echo $trclass; ?>">
+        <td><?php echo $langs->trans("CustomerInvoice"); ?></td>
+        <td><?php echo $objectlink->getNomUrl(1); ?></td>
+    	<td align="center"><?php echo $objectlink->ref_client; ?></td>
+    	<td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td>
+    	<td align="right"><?php
+    		if ($user->rights->facture->lire) {
+    			$total = $total + $objectlink->total_ht;
+    			echo price($objectlink->total_ht);
+    		} ?></td>
+    	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
+    	<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
+    </tr>
 <?php
 }
+if (count($linkedObjectBlock) > 1)
+{
+    ?>
+    <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>">
+        <td><?php echo $langs->trans("Total"); ?></td>
+        <td></td>
+    	<td align="center"></td>
+    	<td align="center"></td>
+    	<td align="right"><?php echo price($total); ?></td>
+    	<td align="right"></td>
+    	<td align="right"></td>
+    </tr>
+    <?php  
+}
 ?>
 
 <!-- END PHP TEMPLATE -->
\ No newline at end of file
diff --git a/htdocs/compta/facture/tpl/linkedobjectblockForRec.tpl.php b/htdocs/compta/facture/tpl/linkedobjectblockForRec.tpl.php
index ce94e4a1212f227ac68a88bc9ce6c321075a5345..781f5609915a2a6d74e255ab57548013b4fb63e6 100644
--- a/htdocs/compta/facture/tpl/linkedobjectblockForRec.tpl.php
+++ b/htdocs/compta/facture/tpl/linkedobjectblockForRec.tpl.php
@@ -24,16 +24,21 @@
 <?php
 
 global $user;
+global $noMoreLinkedObjectBlockAfter;
 
 $langs = $GLOBALS['langs'];
 $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
+
 $langs->load("bills");
 
+$total=0; $ilink=0;
 $var=true;
-$total=0;
 foreach($linkedObjectBlock as $key => $objectlink)
 {
-	$var=!$var;
+    $ilink++;
+    $var=!$var;
+    $trclass=($var?'pair':'impair');
+    if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total';
 ?>
 <tr <?php echo $GLOBALS['bc'][$var]; ?> >
     <td><?php echo $langs->trans("RepeatableInvoice"); ?></td>
diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php
index 1dd1c46299a8c2587c53f56b8cba9d771dbc44c5..0d0552b41ade5632f32ce0f961d76336ce99d439 100644
--- a/htdocs/compta/index.php
+++ b/htdocs/compta/index.php
@@ -117,7 +117,7 @@ if (count($listofsearchfields))
 	{
 		if ($i == 0) print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("Search").'</td></tr>';
 		print '<tr '.$bc[false].'>';
-		print '<td class="nowrap"><label for="'.$key.'">'.$langs->trans($value["text"]).'</label></td><td><input type="text" class="flat inputsearch" name="'.$key.'" id="'.$key.'" size="14"></td>';
+		print '<td class="nowrap"><label for="'.$key.'">'.$langs->trans($value["text"]).'</label></td><td><input type="text" class="flat inputsearch" name="'.$key.'" id="'.$key.'"></td>';
 		if ($i == 0) print '<td rowspan="'.count($listofsearchfields).'"><input type="submit" value="'.$langs->trans("Search").'" class="button"></td>';
 		print '</tr>';
 		$i++;
@@ -577,7 +577,7 @@ if (! empty($conf->tax->enabled) && $user->rights->tax->charges->lire)
 
 			print '<table class="noborder" width="100%">';
 			print '<tr class="liste_titre">';
-			print '<td>'.$langs->trans("ContributionsToPay").($num?' <span class="badge">'.$num.'</span>':'').'</td>';
+			print '<td>'.$langs->trans("ContributionsToPay").($num?' <a href="'.DOL_URL_ROOT.'/compta/sociales/index.php?status=0"><span class="badge">'.$num.'</span></a>':'').'</td>';
 			print '<td align="center">'.$langs->trans("DateDue").'</td>';
 			print '<td align="right">'.$langs->trans("AmountTTC").'</td>';
 			print '<td align="right">'.$langs->trans("Paid").'</td>';
@@ -663,7 +663,7 @@ if (! empty($conf->facture->enabled) && ! empty($conf->commande->enabled) && $us
 			$i = 0;
 			print '<table class="noborder" width="100%">';
 			print "<tr class=\"liste_titre\">";
-			print '<td colspan="2">'.$langs->trans("OrdersToBill").' <a href="'.DOL_URL_ROOT.'/commande/list.php?status=3&amp;afacturer=1"><span class="badge">'.$num.'</span></a></td>';
+			print '<td colspan="2">'.$langs->trans("OrdersDeliveredToBill").' <a href="'.DOL_URL_ROOT.'/commande/list.php?viewstatut=3&amp;billed=0"><span class="badge">'.$num.'</span></a></td>';
 			if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.$langs->trans("AmountHT").'</td>';
 			print '<td align="right">'.$langs->trans("AmountTTC").'</td>';
 			print '<td align="right">'.$langs->trans("ToBill").'</td>';
diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php
index 63d4b9930edeb41767a8a82bc61fe03a6e57edfd..b39e5c47f7f6b5a416204a4285b8e0a7927d2f93 100644
--- a/htdocs/compta/resultat/clientfourn.php
+++ b/htdocs/compta/resultat/clientfourn.php
@@ -534,7 +534,7 @@ if ($modecompta == 'CREANCES-DETTES')
 print '<td colspan="3" align="right">'.price(-$subtotal_ttc).'</td>';
 print '</tr>';
 
-if ($mysoc->tva_assuj == 'franchise')	// Non assujeti
+if ($mysoc->tva_assuj == 'franchise')	// Non assujetti
 {
     // Total
     print '<tr>';
@@ -572,7 +572,7 @@ if (! empty($conf->salaries->enabled))
 	$sql.= " WHERE p.entity = ".$conf->entity;
 	if (! empty($date_start) && ! empty($date_end))
 		$sql.= " AND $column >= '".$db->idate($date_start)."' AND $column <= '".$db->idate($date_end)."'";
-		
+
 	$sql.= " GROUP BY u.rowid, u.firstname, u.lastname, p.fk_user, p.label, dm";
 	$sql.= " ORDER BY u.firstname";
 
@@ -599,7 +599,7 @@ if (! empty($conf->salaries->enabled))
 	            $var = !$var;
 	            print "<tr ".$bc[$var]."><td>&nbsp;</td>";
 
-	            print "<td>".$langs->trans("Salaries")." <a href=\"".DOL_URL_ROOT."/compta/salaries/index.php?filtre=s.fk_user=".$obj->fk_user."\">".$obj->firstname." ".$obj->lastname."</a></td>\n";
+	            print "<td>".$langs->trans("Salary")." <a href=\"".DOL_URL_ROOT."/compta/salaries/index.php?filtre=s.fk_user=".$obj->fk_user."\">".$obj->firstname." ".$obj->lastname."</a></td>\n";
 
 	            if ($modecompta == 'CREANCES-DETTES') print '<td align="right">'.price(-$obj->amount).'</td>';
 	            print '<td align="right">'.price(-$obj->amount).'</td>';
@@ -639,9 +639,8 @@ if (! empty($conf->expensereport->enabled))
 		$sql.= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid=p.fk_user_author";
 		$sql.= " WHERE p.entity = ".getEntity('expensereport',1);
 		$sql.= " AND p.fk_statut>=5";
-		
+
 		$column='p.date_valid';
-		
 	} else {
 		$sql = "SELECT p.rowid, p.ref, u.rowid as userid, u.firstname, u.lastname, date_format(pe.datep,'%Y-%m') as dm, sum(p.total_ht) as amount_ht,sum(p.total_ttc) as amount_ttc";
 		$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as p";
@@ -650,12 +649,12 @@ if (! empty($conf->expensereport->enabled))
 		$sql.= " INNER JOIN ".MAIN_DB_PREFIX."c_paiement as c ON pe.fk_typepayment = c.id";
 		$sql.= " WHERE p.entity = ".getEntity('expensereport',1);
 		$sql.= " AND p.fk_statut>=5";
-		
+
 		$column='pe.datep';
 	}
 
 	print '<tr><td colspan="4">'.$langs->trans("ExpenseReport").'</td></tr>';
-	
+
 	if (! empty($date_start) && ! empty($date_end))
 		$sql.= " AND $column >= '".$db->idate($date_start)."' AND $column <= '".$db->idate($date_end)."'";
 
@@ -709,12 +708,12 @@ if (! empty($conf->expensereport->enabled))
 }
 
 /*
- * Donation
+ * Donations
  */
 
 if (! empty($conf->don->enabled))
 {
-	print '<tr><td colspan="4">'.$langs->trans("Donation").'</td></tr>';
+	print '<tr><td colspan="4">'.$langs->trans("Donations").'</td></tr>';
 	if ($modecompta == 'CREANCES-DETTES')
 	{
     	$sql = "SELECT p.societe as name, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount";
@@ -975,7 +974,7 @@ else
 }
 
 
-if ($mysoc->tva_assuj != 'franchise')	// Assujeti
+if ($mysoc->tva_assuj != 'franchise')	// Assujetti
 {
     print '<tr class="liste_total">';
     if ($modecompta == 'CREANCES-DETTES')
@@ -995,7 +994,7 @@ $hookmanager->initHooks(array('externalbalance'));
 $reshook=$hookmanager->executeHooks('addBalanceLine',$parameters,$object,$action);    // Note that $action and $object may have been modified by some hooks
 print $hookmanager->resPrint;
 
-if ($mysoc->tva_assuj != 'franchise')	// Assujeti
+if ($mysoc->tva_assuj != 'franchise')	// Assujetti
 {
     // Total
     print '<tr>';
diff --git a/htdocs/compta/sociales/index.php b/htdocs/compta/sociales/index.php
index fc106de2ad1bae6dee250a31286f999186d899d4..6a4f7f836e7979466dd7eac428ef5df943f53626 100644
--- a/htdocs/compta/sociales/index.php
+++ b/htdocs/compta/sociales/index.php
@@ -40,6 +40,7 @@ $result = restrictedArea($user, 'tax', '', '', 'charges');
 $search_ref = GETPOST('search_ref','int');
 $search_label = GETPOST('search_label','alpha');
 $search_amount = GETPOST('search_amount','alpha');
+$search_status = GETPOST('search_status','int');
 
 $limit = GETPOST('limit')?GETPOST('limit','int'):$conf->liste_limit;
 $sortfield = GETPOST("sortfield",'alpha');
@@ -52,8 +53,8 @@ $pagenext = $page + 1;
 if (! $sortfield) $sortfield="cs.date_ech";
 if (! $sortorder) $sortorder="DESC";
 
-$year=$_GET["year"];
-$filtre=$_GET["filtre"];
+$year=GETPOST("year",'int');
+$filtre=GETPOST("filtre",'int');
 
 if (empty($_REQUEST['typeid']))
 {
@@ -75,6 +76,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP
 	$search_ref="";
 	$search_label="";
 	$search_amount="";
+	$search_status='';
     $typeid="";
 	$year="";
 	$month="";
@@ -88,7 +90,7 @@ $form = new Form($db);
 $formsocialcontrib = new FormSocialContrib($db);
 $chargesociale_static=new ChargeSociales($db);
 
-llxHeader();
+llxHeader('', $langs->trans("SocialContributions"));
 
 $sql = "SELECT cs.rowid as id, cs.fk_type as type, ";
 $sql.= " cs.amount, cs.date_ech, cs.libelle, cs.paye, cs.periode,";
@@ -99,11 +101,11 @@ $sql.= " ".MAIN_DB_PREFIX."chargesociales as cs";
 $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiementcharge as pc ON pc.fk_charge = cs.rowid";
 $sql.= " WHERE cs.fk_type = c.id";
 $sql.= " AND cs.entity = ".$conf->entity;
-
 // Search criteria
-if ($search_ref)	$sql.=" AND cs.rowid=".$search_ref;
+if ($search_ref)	$sql.=" AND cs.rowid=".$db->escape($search_ref);
 if ($search_label) 	$sql.=natural_search("cs.libelle", $search_label);
 if ($search_amount) $sql.=natural_search("cs.amount", price2num(trim($search_amount)), 1);
+if ($search_status != '' && $search_status >= 0) $sql.=" AND cs.paye = ".$db->escape($search_status);
 if ($year > 0)
 {
     $sql .= " AND (";
@@ -118,7 +120,7 @@ if ($filtre) {
     $sql .= " AND ".$filtre;
 }
 if ($typeid) {
-    $sql .= " AND cs.fk_type=".$typeid;
+    $sql .= " AND cs.fk_type=".$db->escape($typeid);
 }
 $sql.= " GROUP BY cs.rowid, cs.fk_type, cs.amount, cs.date_ech, cs.libelle, cs.paye, cs.periode, c.libelle";
 $sql.= $db->order($sortfield,$sortorder);
@@ -204,7 +206,10 @@ if ($resql)
 		print '</td>';
 		print '<td class="liste_titre">&nbsp;</td>';
 		// Status
-		print '<td class="liste_titre">&nbsp;</td>';
+		print '<td class="liste_titre maxwidthonsmartphone" align="right">';
+		$liststatus=array('0'=>$langs->trans("Unpaid"), '1'=>$langs->trans("Paid"));
+		print $form->selectarray('search_status', $liststatus, $search_status, 1);
+		print '</td>';
 
         print '<td class="liste_titre" align="right">';
         $searchpitco=$form->showFilterAndCheckAddButtons(0);
diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example
index aab5290a6635e4f7682187f4e46d31cb00bce6fc..83dbd300f6061865e5e1b0bd83b36610027894cf 100644
--- a/htdocs/conf/conf.php.example
+++ b/htdocs/conf/conf.php.example
@@ -134,7 +134,7 @@ $dolibarr_main_db_type='';
 
 
 // dolibarr_main_db_character_set
-// Database character set used to store data (forced during database creation).
+// Database character set used to store data (forced during database creation. value of database is then used).
 // Default value: depends on database driver
 // Examples:
 // dolibarr_main_db_character_set='utf8';
@@ -143,12 +143,12 @@ $dolibarr_main_db_character_set='utf8';
 
 
 // dolibarr_main_db_collation
-// Database character set used to sort data (forced during database creation).
+// Database character set used to sort data (forced during database creation. value of database is then used).
 // Default value: depends on database driver
 // Examples:
-// dolibarr_main_db_collation='utf8_general_ci';
+// dolibarr_main_db_collation='utf8_unicode_ci';
 //
-$dolibarr_main_db_collation='utf8_general_ci';
+$dolibarr_main_db_collation='utf8_unicode_ci';
 
 
 
diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php
index 4e045ccd449f0ed8a899359ce359d40f0905effb..cd45378ba866349c400080595881eb5661b9d256 100644
--- a/htdocs/contact/class/contact.class.php
+++ b/htdocs/contact/class/contact.class.php
@@ -123,15 +123,16 @@ class Contact extends CommonObject
 	
 		$sql = "SELECT count(sp.rowid) as nb";
 		$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as sp";
-		$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON (sp.fk_soc = s.rowid)";
 		if (!$user->rights->societe->client->voir && !$user->societe_id)
 		{
-			$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc";
+		    $sql.= " OUTER JOIN ".MAIN_DB_PREFIX."societe as s ON sp.fk_soc = s.rowid";
+		    $sql.= " OUTER JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc";
 			$sql.= " WHERE sc.fk_user = " .$user->id;
 			$clause = "AND";
 		}
-		$sql.= ' '.$clause.' s.entity IN ('.getEntity($this->element, 1).')';
-	
+		$sql.= ' '.$clause.' sp.entity IN ('.getEntity($this->element, 1).')';
+        if ($user->societe_id > 0) $sql.=" AND sp.fk_soc = ".$user->societe_id;
+        
 		$resql=$this->db->query($sql);
 		if ($resql)
 		{
diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php
index 86e45ade086d22792b49a1470f0f7355c12a8596..3c29f4e8fca9211e51a6d0f9ca838df71cf21c67 100644
--- a/htdocs/contrat/card.php
+++ b/htdocs/contrat/card.php
@@ -494,7 +494,7 @@ if (empty($reshook))
 							$pu_ht = price($prodcustprice->lines [0]->price);
 							$pu_ttc = price($prodcustprice->lines [0]->price_ttc);
 							$price_base_type = $prodcustprice->lines [0]->price_base_type;
-							$prod->tva_tx = $prodcustprice->lines [0]->tva_tx;
+							$tva_tx = $prodcustprice->lines [0]->tva_tx;
 						}
 					}
 				}
diff --git a/htdocs/contrat/services.php b/htdocs/contrat/services.php
index 8e37e39260325cd330fd3a9cf4f5cf762b0460a9..836e2fd82f6fbc02a9197ab84f1eceb31e124cf2 100644
--- a/htdocs/contrat/services.php
+++ b/htdocs/contrat/services.php
@@ -50,6 +50,7 @@ $search_contract=GETPOST("search_contract");
 $search_service=GETPOST("search_service");
 $search_status=GETPOST("search_status","alpha");
 $statut=GETPOST('statut')?GETPOST('statut'):1;
+$search_product_category=GETPOST('search_product_category','int');
 $socid=GETPOST('socid','int');
 
 $opouvertureprevuemonth=GETPOST('opouvertureprevuemonth');
@@ -99,6 +100,9 @@ $staticcontrat=new Contrat($db);
 $staticcontratligne=new ContratLigne($db);
 $companystatic=new Societe($db);
 
+$arrayfields=array();
+
+
 /*
  * Actions
  */
@@ -153,8 +157,10 @@ $sql.= " ".MAIN_DB_PREFIX."societe as s,";
 if (!$user->rights->societe->client->voir && !$socid) $sql .= " ".MAIN_DB_PREFIX."societe_commerciaux as sc,";
 $sql.= " ".MAIN_DB_PREFIX."contratdet as cd";
 $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid";
+if ($search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=cd.fk_product';
 $sql.= " WHERE c.entity = ".$conf->entity;
 $sql.= " AND c.rowid = cd.fk_contrat";
+if ($search_product_category > 0) $sql.=" AND cp.fk_categorie = ".$search_product_category;
 $sql.= " AND c.fk_soc = s.rowid";
 if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
 if ($mode == "0") $sql.= " AND cd.statut = 0";
@@ -206,17 +212,67 @@ if ($resql)
 	if ($filter_date2 != '') $param.='&amp;op2day='.$op2day.'&amp;op2month='.$op2month.'&amp;op2year='.$op2year;
 	if ($filter_datecloture != '') $param.='&amp;opclotureday='.$op2day.'&amp;opcloturemonth='.$op2month.'&amp;opclotureyear='.$op2year;
 	
+	// List of mass actions available
+	$arrayofmassactions =  array(
+	    //'presend'=>$langs->trans("SendByMail"),
+	    //'builddoc'=>$langs->trans("PDFMerge"),
+	);
+	//if ($user->rights->contrat->supprimer) $arrayofmassactions['delete']=$langs->trans("Delete");
+	//if ($massaction == 'presend') $arrayofmassactions=array();
+	$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
+	
+	print '<form method="POST" action="'. $_SERVER["PHP_SELF"] .'">';
+	if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
+	print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+	print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
+	print '<input type="hidden" name="action" value="list">';
+	print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
+	print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
+	
 	$title=$langs->trans("ListOfServices");
 	if ($mode == "0") $title=$langs->trans("ListOfInactiveServices");	// Must use == "0"
 	if ($mode == "4" && $filter != "expired") $title=$langs->trans("ListOfRunningServices");
 	if ($mode == "4" && $filter == "expired") $title=$langs->trans("ListOfExpiredServices");
 	if ($mode == "5") $title=$langs->trans("ListOfClosedServices");
-	print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder,'',$num,$totalnboflines,'title_commercial.png');
-	
-	print '<form method="POST" action="'. $_SERVER["PHP_SELF"] .'">';
-	print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-	print '<table class="liste" width="100%">';
+	print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $totalnboflines, 'title_commercial.png', 0, '', '', $limit);
 
+	if ($sall)
+	{
+	    foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val);
+	    print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall);
+	}
+
+	$morefilter = '';
+	
+	// If the user can view categories of products
+	if ($conf->categorie->enabled && ($user->rights->produit->lire || $user->rights->service->lire))
+	{
+	    include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
+	    $moreforfilter.='<div class="divsearchfield">';
+	    $moreforfilter.=$langs->trans('IncludingProductWithTag'). ': ';
+	    $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1);
+	    $moreforfilter.=$form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, '', 1);
+	    $moreforfilter.='</div>';
+	}
+	
+	$parameters=array();
+	$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters);    // Note that $action and $object may have been modified by hook
+	if (empty($reshook)) $moreforfilter .= $hookmanager->resPrint;
+	else $moreforfilter = $hookmanager->resPrint;
+	
+	
+	if (! empty($moreforfilter))
+	{
+	    print '<div class="liste_titre liste_titre_bydiv centpercent">';
+	    print $moreforfilter;
+	    print '</div>';
+	}
+	
+	$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
+	$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+	
+	print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
+	
 	print '<tr class="liste_titre">';
 	print_liste_field_titre($langs->trans("Contract"),$_SERVER["PHP_SELF"], "c.rowid",$param,"","",$sortfield,$sortorder);
 	print_liste_field_titre($langs->trans("Service"),$_SERVER["PHP_SELF"], "p.description",$param,"","",$sortfield,$sortorder);
@@ -308,11 +364,16 @@ if ($resql)
 	while ($i < min($num,$limit))
 	{
 		$obj = $db->fetch_object($resql);
+		
+		$contractstatic->id=$obj->cid;
+		$contractstatic->ref=$obj->ref?$obj->ref:$obj->cid;
+		
 		$var=!$var;
+
 		print "<tr ".$bc[$var].">";
+		
+		// Ref
 		print '<td>';
-		$contractstatic->id=$obj->cid;
-		$contractstatic->ref=$obj->ref?$obj->ref:$obj->cid;
 		print $contractstatic->getNomUrl(1,16);
 		print '</td>';
 
@@ -348,7 +409,7 @@ if ($resql)
 		{
 			print '<td align="center">';
 			print ($obj->date_ouverture_prevue?dol_print_date($db->jdate($obj->date_ouverture_prevue)):'&nbsp;');
-			if ($db->jdate($obj->date_ouverture_prevue) && ($db->jdate($obj->date_ouverture_prevue) < ($now - $conf->contrat->services->inactifs->warning_delay)))
+			if ($db->jdate($obj->date_ouverture_prevue) && ($db->jdate($obj->date_ouverture_prevue) < ($now - $conf->contrat->services->inactifs->warning_delay)) && $obj->statut == 0)
 			print ' '.img_picto($langs->trans("Late"),"warning");
 			else print '&nbsp;&nbsp;&nbsp;&nbsp;';
 			print '</td>';
@@ -357,7 +418,7 @@ if ($resql)
 		{
 		    print '<td align="center">'.($obj->date_ouverture?dol_print_date($db->jdate($obj->date_ouverture)):'&nbsp;').'</td>';
 		}
-		// Date fin
+		// End date
 		if (($mode == "" || $mode == -1) || $mode < 5) 
 		{
 		    print '<td align="center">'.($obj->date_fin_validite?dol_print_date($db->jdate($obj->date_fin_validite)):'&nbsp;');
diff --git a/htdocs/contrat/tpl/linkedobjectblock.tpl.php b/htdocs/contrat/tpl/linkedobjectblock.tpl.php
index aa8d83bb803a666da1fb95b359c4872191d0f129..9ea21f890fc594a2cf5ec74dfb35b640277cb991 100644
--- a/htdocs/contrat/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/contrat/tpl/linkedobjectblock.tpl.php
@@ -13,7 +13,6 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
  */
 ?>
 
@@ -22,19 +21,23 @@
 <?php
 
 global $user;
+global $noMoreLinkedObjectBlockAfter;
 
 $langs = $GLOBALS['langs'];
 $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
 
 $langs->load("contracts");
 
+$total=0; $ilink=0;
 $var=true;
 foreach($linkedObjectBlock as $key => $objectlink)
 {
-    $objectlink->fetch_lines();
-	$var=!$var;
+    $ilink++;
+    $var=!$var;
+    $trclass=($var?'pair':'impair');
+    if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total';
 ?>
-<tr <?php echo $bc[$var]; ?> >
+<tr class="<?php echo $trclass; ?>">
     <td><?php echo $langs->trans("Contract"); ?></td>
     <td><?php echo $objectlink->getNomUrl(1); ?></td>
     <td></td>
diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php
index 317b84e0b29fdbe7d99541526ff1cc5f39efb4bd..3abd7dd58b5d2bf4f013f9ba7549fb6c99683451 100644
--- a/htdocs/core/class/CMailFile.class.php
+++ b/htdocs/core/class/CMailFile.class.php
@@ -527,7 +527,7 @@ class CMailFile
 					if (! empty($conf->global->MAIN_MAIL_DEBUG)) $this->dump_mail();
 
 					if (! empty($bounce)) $res = mail($dest,$this->encodetorfc2822($this->subject),$this->message,$this->headers, $bounce);
-					else $res = mail($dest,$this->encodetorfc2822($this->subject),$this->message,$this->headers);
+					else $res = mail($dest, $this->encodetorfc2822($this->subject), $this->message, $this->headers);
 
 					if (! $res)
 					{
@@ -840,7 +840,7 @@ class CMailFile
 
 		// Receiver
 		if (isset($this->addr_cc)   && $this->addr_cc)   $out.= "Cc: ".$this->getValidAddress($this->addr_cc,2).$this->eol2;
-		if (isset($this->addr_bcc)  && $this->addr_bcc)  $out.= "Bcc: ".$this->getValidAddress($this->addr_bcc,2).$this->eol2;
+		if (isset($this->addr_bcc)  && $this->addr_bcc)  $out.= "Bcc: ".$this->getValidAddress($this->addr_bcc,2).$this->eol2;    // Question: bcc must not be into header, only into SMTP command "RCPT TO". Does php mail support this ? 
 
 		// Delivery receipt
 		if (isset($this->deliveryreceipt) && $this->deliveryreceipt == 1) $out.= "Disposition-Notification-To: ".$this->getValidAddress($this->addr_from,2).$this->eol2;
diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php
index b3b0cc4042b94b8810ce73579616a525f5806d15..30ea6639196e65771949e7a744362cf8a50d9f7e 100644
--- a/htdocs/core/class/commoninvoice.class.php
+++ b/htdocs/core/class/commoninvoice.class.php
@@ -337,17 +337,17 @@ abstract class CommonInvoice extends CommonObject
 			$prefix='Short';
 			if (! $paye)
 			{
-				if ($status == 0) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusDraft').' </span>'.img_picto($langs->trans('BillStatusDraft'),'statut0');
-				if (($status == 3 || $status == 2) && $alreadypaid <= 0) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusCanceled').' </span>'.img_picto($langs->trans('BillStatusCanceled'),'statut5');
-				if (($status == 3 || $status == 2) && $alreadypaid > 0) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusClosedPaidPartially').' </span>'.img_picto($langs->trans('BillStatusClosedPaidPartially'),'statut7');
-				if ($alreadypaid <= 0) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusNotPaid').' </span>'.img_picto($langs->trans('BillStatusNotPaid'),'statut1');
-				return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusStarted').' </span>'.img_picto($langs->trans('BillStatusStarted'),'statut3');
+				if ($status == 0) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusDraft').' </span>'.img_picto($langs->trans('BillStatusDraft'),'statut0');
+				if (($status == 3 || $status == 2) && $alreadypaid <= 0) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusCanceled').' </span>'.img_picto($langs->trans('BillStatusCanceled'),'statut5');
+				if (($status == 3 || $status == 2) && $alreadypaid > 0) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusClosedPaidPartially').' </span>'.img_picto($langs->trans('BillStatusClosedPaidPartially'),'statut7');
+				if ($alreadypaid <= 0) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusNotPaid').' </span>'.img_picto($langs->trans('BillStatusNotPaid'),'statut1');
+				return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusStarted').' </span>'.img_picto($langs->trans('BillStatusStarted'),'statut3');
 			}
 			else
 			{
-				if ($type == 2) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusPaidBackOrConverted').' </span>'.img_picto($langs->trans('BillStatusPaidBackOrConverted'),'statut6');
-				elseif ($type == 3) return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusConverted').' </span>'.img_picto($langs->trans('BillStatusConverted'),'statut6');
-				else return '<span class="hideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusPaid').' </span>'.img_picto($langs->trans('BillStatusPaid'),'statut6');
+				if ($type == 2) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusPaidBackOrConverted').' </span>'.img_picto($langs->trans('BillStatusPaidBackOrConverted'),'statut6');
+				elseif ($type == 3) return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusConverted').' </span>'.img_picto($langs->trans('BillStatusConverted'),'statut6');
+				else return '<span class="xhideonsmartphone">'.$langs->trans('Bill'.$prefix.'StatusPaid').' </span>'.img_picto($langs->trans('BillStatusPaid'),'statut6');
 			}
 		}
 	}
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index cdd8b89a1adfac28e9e84d08c8f779b0b60afed8..e3e899eceba066d1f6230497aaf9759379b708cb 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -3280,7 +3280,7 @@ abstract class CommonObject
 	{
 		global $conf, $hookmanager, $langs, $user;
 		// TODO We should not use global var for this !
-		global $inputalsopricewithtax, $usemargins, $disableedit, $disablemove, $disableremove;
+		global $inputalsopricewithtax, $usemargins, $disableedit, $disablemove, $disableremove, $outputalsopricetotalwithtax;
 
 		// Define usemargins
 		$usemargins=0;
@@ -3343,6 +3343,8 @@ abstract class CommonObject
 		// Multicurrency
 		if (!empty($conf->multicurrency->enabled)) print '<td class="linecoltotalht_currency" align="right">'.$langs->trans('TotalHTShortCurrency').'</td>';
 
+        if ($outputalsopricetotalwithtax) print '<td align="right" width="80">'.$langs->trans('TotalTTCShort').'</td>';
+
 		print '<td class="linecoledit"></td>';  // No width to allow autodim
 
 		print '<td class="linecoldelete" width="10"></td>';
@@ -4444,12 +4446,12 @@ abstract class CommonObject
 					}
 					if ( !empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && ($e % 2) == 0)
 					{
-						$out .= '<tr '.$class.$csstyle.'>';
+						$out .= '<tr '.$class.$csstyle.' class="'.$this->element.'_extras_'.$key.'">';
 						$colspan='0';
 					}
 					else
 					{
-						$out .= '<tr '.$class.$csstyle.'>';
+						$out .= '<tr '.$class.$csstyle.' class="'.$this->element.'_extras_'.$key.'">';
 					}
 					// Convert date into timestamp format
 					if (in_array($extrafields->attribute_type[$key],array('date','datetime')))
diff --git a/htdocs/core/class/doleditor.class.php b/htdocs/core/class/doleditor.class.php
index ef750e70253fa8057d9d6b722273f4b8e116aefa..90e4970b9d6954744b5fb22b04e9944ba81a3fa3 100644
--- a/htdocs/core/class/doleditor.class.php
+++ b/htdocs/core/class/doleditor.class.php
@@ -108,7 +108,7 @@ class DolEditor
     		// Dolibarr utilise toujours liens avec modulepart='fckeditor' quelque soit modulepart.
     		// Ou se trouve donc cette valeur /viewimage.php?modulepart=fckeditor&file=' ?
         	$modulepart='fckeditor';
-    		$this->editor->Config['UserFilesPath'] = '/viewimage.php?modulepart='.$modulepart.'&file=';
+    		$this->editor->Config['UserFilesPath'] = '/viewimage.php?modulepart='.$modulepart.'&entity='.$conf->entity.'&file=';
     		$this->editor->Config['UserFilesAbsolutePath'] = DOL_DATA_ROOT.'/'.$modulepart.'/' ;
 
         	$this->editor->Config['LinkBrowser']=($uselocalbrowser?'true':'false');
diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php
index 9bed1ed9a828a346a006bba400e195fb201b994f..8479bab7563267a84cc40b6c77a4d49bf4347f1a 100644
--- a/htdocs/core/class/extrafields.class.php
+++ b/htdocs/core/class/extrafields.class.php
@@ -76,14 +76,15 @@ class ExtraFields
 	'price'=>'ExtrafieldPrice',
 	'phone'=>'ExtrafieldPhone',
 	'mail'=>'ExtrafieldMail',
+	'url'=>'ExtrafieldUrl',
 	'select' => 'ExtrafieldSelect',
 	'sellist' => 'ExtrafieldSelectList',
 	'radio' => 'ExtrafieldRadio',
 	'checkbox' => 'ExtrafieldCheckBox',
 	'chkbxlst' => 'ExtrafieldCheckBoxFromList',
 	'link' => 'ExtrafieldLink',
-	'separate' => 'ExtrafieldSeparator',
 	'password' => 'ExtrafieldPassword',
+	'separate' => 'ExtrafieldSeparator',
 	);
 
 	/**
@@ -195,6 +196,9 @@ class ExtraFields
 			} elseif($type=='mail') {
 				$typedb='varchar';
 				$lengthdb='128';
+			} elseif($type=='url') {
+				$typedb='varchar';
+				$lengthdb='255';
 			} elseif (($type=='select') || ($type=='sellist') || ($type=='radio') ||($type=='checkbox') ||($type=='chkbxlst')){
 				$typedb='text';
 				$lengthdb='';
@@ -425,6 +429,9 @@ class ExtraFields
 			} elseif($type=='mail') {
 				$typedb='varchar';
 				$lengthdb='128';
+			} elseif($type=='url') {
+				$typedb='varchar';
+				$lengthdb='255';
 			} elseif (($type=='select') || ($type=='sellist') || ($type=='radio') || ($type=='checkbox') || ($type=='chkbxlst')) {
 				$typedb='text';
 				$lengthdb='';
@@ -693,6 +700,10 @@ class ExtraFields
     			//$showsize=10;
     			$showsize = 'minwidth100imp';
     		}
+    		elseif ($type == 'url')
+    		{
+    		    $showsize='minwidth400imp';
+    		}
     		else
     		{
     			if (round($size) < 12)
@@ -738,6 +749,10 @@ class ExtraFields
 		{
 			$out='<input type="text" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" maxlength="'.$size.'" value="'.$value.'"'.($moreparam?$moreparam:'').'>';
 		}
+		elseif (in_array($type, array('mail', 'phone', 'url')))
+		{
+			$out='<input type="text" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" value="'.$value.'" '.($moreparam?$moreparam:'').'>';
+		}
 		elseif ($type == 'text')
 		{
 			require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
@@ -754,14 +769,6 @@ class ExtraFields
 			}
 			$out='<input type="checkbox" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" '.$checked.' '.($moreparam?$moreparam:'').'>';
 		}
-		elseif ($type == 'mail')
-		{
-			$out='<input type="text" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" value="'.$value.'" '.($moreparam?$moreparam:'').'>';
-		}
-		elseif ($type == 'phone')
-		{
-			$out='<input type="text" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" value="'.$value.'" '.($moreparam?$moreparam:'').'>';
-		}
 		elseif ($type == 'price')
 		{
 			$out='<input type="text" class="flat '.$showsize.' maxwidthonsmartphone" name="'.$keysuffix.'options_'.$key.$keyprefix.'" value="'.price($value).'" '.($moreparam?$moreparam:'').'> '.$langs->getCurrencySymbol($conf->currency);
@@ -1236,11 +1243,15 @@ class ExtraFields
 		}
 		elseif ($type == 'mail')
 		{
-			$value=dol_print_email($value);
+			$value=dol_print_email($value,0,0,0,64,1,1);
+		}
+		elseif ($type == 'url')
+		{
+			$value=dol_print_url($value,'_blank',32,1);
 		}
 		elseif ($type == 'phone')
 		{
-			$value=dol_print_phone($value);
+			$value=dol_print_phone($value, '', 0, 0, '', '&nbsp;', 1);
 		}
 		elseif ($type == 'price')
 		{
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 48126c9afede442217a8f447f5305f98b417142a..2b18dab3acdffbdf4299916b66c54a8d2ede11ff 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -181,7 +181,14 @@ class Form
                 else if (preg_match('/^text/',$typeofdata) || preg_match('/^note/',$typeofdata))
                 {
                     $tmp=explode(':',$typeofdata);
-                    $ret.='<textarea id="'.$htmlname.'" name="'.$htmlname.'" wrap="soft" rows="'.($tmp[1]?$tmp[1]:'20').'" cols="'.($tmp[2]?$tmp[2]:'100').'">'.($editvalue?$editvalue:$value).'</textarea>';
+                    $cols=$tmp[2];
+                    $morealt='';
+                    if (preg_match('/%/',$cols))
+                    {
+                        $morealt=' style="width: '.$cols.'"';
+                        $cols='';
+                    }
+                    $ret.='<textarea id="'.$htmlname.'" name="'.$htmlname.'" wrap="soft" rows="'.($tmp[1]?$tmp[1]:'20').'"'.($cols?' cols="'.$cols.'"':'').$morealt.'">'.($editvalue?$editvalue:$value).'</textarea>';
                 }
                 else if ($typeofdata == 'day' || $typeofdata == 'datepicker')
                 {
@@ -211,9 +218,10 @@ class Form
                 if (empty($notabletag)) $ret.='</td>';
 
                 if (empty($notabletag)) $ret.='<td align="left">';
-               	$ret.='<input type="submit" class="button" name="modify" value="'.$langs->trans("Modify").'">';
-               	if (preg_match('/ckeditor|textarea/',$typeofdata)) $ret.='<br>'."\n";
-               	$ret.='<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
+                else $ret.='<div class="clearboth"></div>';
+               	$ret.='<input type="submit" class="button'.(empty($notabletag)?'':' marginrightonly').'" name="modify" value="'.$langs->trans("Modify").'">';
+               	if (preg_match('/ckeditor|textarea/',$typeofdata) && empty($notabletag)) $ret.='<br>'."\n";
+               	$ret.='<input type="submit" class="button'.(empty($notabletag)?'':' marginrightonly').'" name="cancel" value="'.$langs->trans("Cancel").'">';
                	if (empty($notabletag)) $ret.='</td>';
 
                	if (empty($notabletag)) $ret.='</tr></table>'."\n";
@@ -734,7 +742,7 @@ class Form
             }
             $out.= '</select>';
 
-			$out .= '<input id="location_incoterms" name="location_incoterms" size="14" value="'.$location_incoterms.'">';
+			$out .= '<input id="location_incoterms" class="maxwidth100onsmartphone" name="location_incoterms" value="'.$location_incoterms.'">';
 
 			if (!empty($page))
 			{
@@ -3910,15 +3918,16 @@ class Form
      *
      *  @param  string	$page        	Page URL where form is shown
      *  @param  int		$selected    	Value pre-selected
-     *	@param  string	$htmlname    	Nom du formulaire select. Si 'none', non modifiable. Example 'remise_id'.
+     *	@param  string	$htmlname    	Name of SELECT component. If 'none', not changeable. Example 'remise_id'.
      *	@param	int		$socid			Third party id
      * 	@param	float	$amount			Total amount available
      * 	@param	string	$filter			SQL filter on discounts
      * 	@param	int		$maxvalue		Max value for lines that can be selected
      *  @param  string	$more           More string to add
+     *  @param  int     $hidelist       1=Hide list
      *  @return	void
      */
-    function form_remise_dispo($page, $selected, $htmlname, $socid, $amount, $filter='', $maxvalue=0, $more='')
+    function form_remise_dispo($page, $selected, $htmlname, $socid, $amount, $filter='', $maxvalue=0, $more='', $hidelist=0)
     {
         global $conf,$langs;
         if ($htmlname != "none")
@@ -3929,25 +3938,30 @@ class Form
             print '<div class="inline-block">';
             if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS))
             {
-                if (! $filter || $filter=="fk_facture_source IS NULL") print $langs->trans("CompanyHasAbsoluteDiscount",price($amount,0,$langs,0,0,-1,$conf->currency)).': ';    // If we want deposit to be substracted to payments only and not to total of final invoice
-                else print $langs->trans("CompanyHasCreditNote",price($amount,0,$langs,0,0,-1,$conf->currency)).': ';
+                if (! $filter || $filter=="fk_facture_source IS NULL") print $langs->trans("CompanyHasAbsoluteDiscount",price($amount,0,$langs,0,0,-1,$conf->currency));    // If we want deposit to be substracted to payments only and not to total of final invoice
+                else print $langs->trans("CompanyHasCreditNote",price($amount,0,$langs,0,0,-1,$conf->currency));
             }
             else
             {
-                if (! $filter || $filter=="fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')") print $langs->trans("CompanyHasAbsoluteDiscount",price($amount,0,$langs,0,0,-1,$conf->currency)).': ';
-                else print $langs->trans("CompanyHasCreditNote",price($amount,0,$langs,0,0,-1,$conf->currency)).': ';
+                if (! $filter || $filter=="fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')") print $langs->trans("CompanyHasAbsoluteDiscount",price($amount,0,$langs,0,0,-1,$conf->currency));
+                else print $langs->trans("CompanyHasCreditNote",price($amount,0,$langs,0,0,-1,$conf->currency));
             }
-            print '</div><div class="inline-block" style="padding-right: 10px">';
-            $newfilter='fk_facture IS NULL AND fk_facture_line IS NULL';	// Remises disponibles
-            if ($filter) $newfilter.=' AND ('.$filter.')';
-            $nbqualifiedlines=$this->select_remises($selected,$htmlname,$newfilter,$socid,$maxvalue);
-            if ($nbqualifiedlines > 0)
+            if (empty($hidelist)) print ': ';
+            print '</div>';
+            if (empty($hidelist))
             {
-                print ' &nbsp; <input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("UseLine")).'"';
-                if ($filter && $filter != "fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')") print ' title="'.$langs->trans("UseCreditNoteInInvoicePayment").'"';
-                print '>';
+                print '<div class="inline-block" style="padding-right: 10px">';
+                $newfilter='fk_facture IS NULL AND fk_facture_line IS NULL';	// Remises disponibles
+                if ($filter) $newfilter.=' AND ('.$filter.')';
+                $nbqualifiedlines=$this->select_remises($selected,$htmlname,$newfilter,$socid,$maxvalue);
+                if ($nbqualifiedlines > 0)
+                {
+                    print ' &nbsp; <input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("UseLine")).'"';
+                    if ($filter && $filter != "fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description LIKE '(DEPOSIT)%')") print ' title="'.$langs->trans("UseCreditNoteInInvoicePayment").'"';
+                    print '>';
+                }
+                print '</div>';
             }
-            print '</div>';
             if ($more) 
             {
                 print '<div class="inline-block">';
@@ -4479,7 +4493,7 @@ class Form
                 if ($usecalendar == "eldy")
                 {
                     // Zone de saisie manuelle de la date
-                    $retstring.='<input id="'.$prefix.'" name="'.$prefix.'" type="text" size="9" maxlength="11" value="'.$formated_date.'"';
+                    $retstring.='<input id="'.$prefix.'" name="'.$prefix.'" type="text" class"minwidth100" maxlength="11" value="'.$formated_date.'"';
                     $retstring.=($disabled?' disabled':'');
                     $retstring.=' onChange="dpChangeDay(\''.$prefix.'\',\''.$langs->trans("FormatDateShortJavaInput").'\'); "';  // FormatDateShortInput for dol_print_date / FormatDateShortJavaInput that is same for javascript
                     $retstring.='>';
@@ -4507,7 +4521,7 @@ class Form
 			{
 			    //$retstring.='<div class="inline-block">';
                 // Day
-                $retstring.='<select'.($disabled?' disabled':'').' class="flat" id="'.$prefix.'day" name="'.$prefix.'day">';
+                $retstring.='<select'.($disabled?' disabled':'').' class="flat valignmiddle maxwidth50imp" id="'.$prefix.'day" name="'.$prefix.'day">';
 
                 if ($emptydate || $set_time == -1)
                 {
@@ -4521,7 +4535,7 @@ class Form
 
                 $retstring.="</select>";
 
-                $retstring.='<select'.($disabled?' disabled':'').' class="flat" id="'.$prefix.'month" name="'.$prefix.'month">';
+                $retstring.='<select'.($disabled?' disabled':'').' class="flat valignmiddle maxwidth50onsmartphone" id="'.$prefix.'month" name="'.$prefix.'month">';
                 if ($emptydate || $set_time == -1)
                 {
                     $retstring.='<option value="0" selected>&nbsp;</option>';
@@ -4539,11 +4553,11 @@ class Form
                 // Year
                 if ($emptydate || $set_time == -1)
                 {
-                    $retstring.='<input'.($disabled?' disabled':'').' placeholder="'.dol_escape_htmltag($langs->trans("Year")).'" class="flat" type="text" size="3" maxlength="4" id="'.$prefix.'year" name="'.$prefix.'year" value="'.$syear.'">';
+                    $retstring.='<input'.($disabled?' disabled':'').' placeholder="'.dol_escape_htmltag($langs->trans("Year")).'" class="flat maxwidth50imp" type="text" maxlength="4" id="'.$prefix.'year" name="'.$prefix.'year" value="'.$syear.'">';
                 }
                 else
                 {
-                    $retstring.='<select'.($disabled?' disabled':'').' class="flat" id="'.$prefix.'year" name="'.$prefix.'year">';
+                    $retstring.='<select'.($disabled?' disabled':'').' class="flat valignmiddle maxwidth75" id="'.$prefix.'year" name="'.$prefix.'year">';
 
                     for ($year = $syear - 5; $year < $syear + 10 ; $year++)
                     {
@@ -4560,7 +4574,7 @@ class Form
         if ($h)
         {
             // Show hour
-            $retstring.='<select'.($disabled?' disabled':'').' class="flat '.($fullday?$fullday.'hour':'').'" id="'.$prefix.'hour" name="'.$prefix.'hour">';
+            $retstring.='<select'.($disabled?' disabled':'').' class="flat valignmiddle maxwidth50 '.($fullday?$fullday.'hour':'').'" id="'.$prefix.'hour" name="'.$prefix.'hour">';
             if ($emptyhours) $retstring.='<option value="-1">&nbsp;</option>';
             for ($hour = 0; $hour < 24; $hour++)
             {
@@ -4574,7 +4588,7 @@ class Form
         if ($m)
         {
             // Show minutes
-            $retstring.='<select'.($disabled?' disabled':'').' class="flat '.($fullday?$fullday.'min':'').'" id="'.$prefix.'min" name="'.$prefix.'min">';
+            $retstring.='<select'.($disabled?' disabled':'').' class="flat valignmiddle maxwidth50 '.($fullday?$fullday.'min':'').'" id="'.$prefix.'min" name="'.$prefix.'min">';
             if ($emptyhours) $retstring.='<option value="-1">&nbsp;</option>';
             for ($min = 0; $min < 60 ; $min++)
             {
@@ -5209,7 +5223,7 @@ class Form
 
         if (empty($reshook))
         {
-        	$num = count($object->linkedObjects);
+        	$nbofdifferenttypes = count($object->linkedObjects);
 
         	print '<br>';
             print load_fiche_titre($langs->trans('RelatedObjects'), $morehtmlright, '');
@@ -5226,7 +5240,7 @@ class Form
             print '<td></td>';
             print '</tr>';
 
-            $numoutput=0;
+            $nboftypesoutput=0;
 
         	foreach($object->linkedObjects as $objecttype => $objects)
         	{
@@ -5286,23 +5300,28 @@ class Form
         		$dirtpls=array_merge($conf->modules_parts['tpl'],array('/'.$tplpath.'/tpl'));
         		foreach($dirtpls as $reldir)
         		{
+        		    if ($nboftypesoutput == ($nbofdifferenttypes - 1))    // No more type to show after
+        		    {
+        		        global $noMoreLinkedObjectBlockAfter;
+        		        $noMoreLinkedObjectBlockAfter=1;
+        		    }
                     $res=@include dol_buildpath($reldir.'/'.$tplname.'.tpl.php');
         			if ($res)
         			{
-        			    $numoutput++;
+        			    $nboftypesoutput++;
         			    break;
         			}
         		}
         	}
 
-        	if (! $numoutput)
+        	if (! $nboftypesoutput)
         	{
         	    print '<tr><td class="opacitymedium" colspan="7">'.$langs->trans("None").'</td></tr>';
         	}
 
         	print '</table>';
 
-        	return $num;
+        	return $nbofdifferenttypes;
         }
     }
 
@@ -5555,36 +5574,13 @@ class Form
 
         //$previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Previous"),'previous.png'):'&nbsp;').'</a>':'';
         //$next_ref     = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Next"),'next.png'):'&nbsp;').'</a>':'';
-        $previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(empty($conf->dol_use_jmobile)?'&lt;':'&nbsp;').'</a>':'<span class="inactive">'.(empty($conf->dol_use_jmobile)?'&lt;':'&nbsp;').'</span>';
-        $next_ref     = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(empty($conf->dol_use_jmobile)?'&gt;':'&nbsp;').'</a>':'<span class="inactive">'.(empty($conf->dol_use_jmobile)?'&gt;':'&nbsp;').'</span>';
+        $previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(($conf->dol_use_jmobile != 4)?'&lt;':'&nbsp;').'</a>':'<span class="inactive">'.(($conf->dol_use_jmobile != 4)?'&lt;':'&nbsp;').'</span>';
+        $next_ref     = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(($conf->dol_use_jmobile != 4)?'&gt;':'&nbsp;').'</a>':'<span class="inactive">'.(($conf->dol_use_jmobile != 4)?'&gt;':'&nbsp;').'</span>';
 
         //print "xx".$previous_ref."x".$next_ref;
-        $ret.='<div style="vertical-align: middle">';
-
-		if ($morehtmlleft) 
-		{
-		    if ($conf->browser->layout == 'phone') $ret.='<div class="center">'.$morehtmlleft.'</div>';
-		    else $ret.='<div class="inline-block floatleft">'.$morehtmlleft.'</div>';
-		}
-
-        $ret.='<div class="inline-block floatleft valignmiddle refid'.(($shownav && ($previous_ref || $next_ref))?' refidpadding':'').'">';
-
-        // For thirdparty, contact, user, member, the ref is the id, so we show something else
-        if ($object->element == 'societe')
-        {
-        	$ret.=dol_htmlentities($object->name);
-        }
-        else if (in_array($object->element, array('contact', 'user', 'member')))
-        {
-        	$ret.=dol_htmlentities($object->getFullName($langs));
-        }
-        else if ($fieldref != 'none') $ret.=dol_htmlentities($object->$fieldref);
-        if ($morehtmlref)
-        {
-            $ret.=' '.$morehtmlref;
-        }
-		$ret.='</div>';
+        $ret.='<!-- Start banner content --><div style="vertical-align: middle">';
 
+        // Right part of banner
 		if ($morehtmlright) $ret.='<div class="inline-block floatleft">'.$morehtmlright.'</div>';
 
         if ($previous_ref || $next_ref || $morehtml)
@@ -5605,7 +5601,34 @@ class Form
             $ret.='</ul></div>';
         }
 		if ($morehtmlstatus) $ret.='<div class="statusref">'.$morehtmlstatus.'</div>';
-        $ret.='</div>';
+
+        // Left part of banner
+		if ($morehtmlleft)
+		{
+		    if ($conf->browser->layout == 'phone') $ret.='<div class="floatleft">'.$morehtmlleft.'</div>';    // class="center" to have photo in middle
+		    else $ret.='<div class="inline-block floatleft">'.$morehtmlleft.'</div>';
+		}
+		
+		//if ($conf->browser->layout == 'phone') $ret.='<div class="clearboth"></div>';
+		$ret.='<div class="inline-block floatleft valignmiddle refid'.(($shownav && ($previous_ref || $next_ref))?' refidpadding':'').'">';
+		
+		// For thirdparty, contact, user, member, the ref is the id, so we show something else
+		if ($object->element == 'societe')
+		{
+		    $ret.=dol_htmlentities($object->name);
+		}
+		else if (in_array($object->element, array('contact', 'user', 'member')))
+		{
+		    $ret.=dol_htmlentities($object->getFullName($langs));
+		}
+		else if ($fieldref != 'none') $ret.=dol_htmlentities($object->$fieldref);
+		if ($morehtmlref)
+		{
+		    $ret.=' '.$morehtmlref;
+		}
+		$ret.='</div>';		
+		
+		$ret.='</div><!-- End banner content -->';
 
         return $ret;
     }
@@ -5779,10 +5802,10 @@ class Form
             if ($caneditfield)
             {
                 if ($object->photo) $ret.="<br>\n";
-                $ret.='<table class="nobordernopadding">';
-                if ($object->photo) $ret.='<tr><td align="center"><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
+                $ret.='<table class="nobordernopadding centpercent">';
+                if ($object->photo) $ret.='<tr><td><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
                 $ret.='<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
-                $ret.='<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>';
+                $ret.='<tr><td class="tdoverflow"><input type="file" class="flat maxwidth200onsmartphone" name="photo" id="photoinput"></td></tr>';
                 $ret.='</table>';
             }
 
diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php
index 503c1fbb739c52fa3adc55f6d33f6cf6e4b2de2a..16b63c16601c4e753eec7af2d1531d125c3e3885 100644
--- a/htdocs/core/class/html.formactions.class.php
+++ b/htdocs/core/class/html.formactions.class.php
@@ -180,7 +180,10 @@ class FormActions
             elseif ($typeelement == 'fichinter') $title=$langs->trans('ActionsOnFicheInter');
         	else $title=$langs->trans("Actions");
 
-        	print load_fiche_titre($title,'','');
+        	$buttontoaddnewevent = '<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.dol_print_date(dol_now(),'dayhourlog').'&origin='.$typeelement.'&originid='.$object->id.'&socid='.$object->socid.'&projectid='.$object->fk_project.'&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.$object->id).'">';
+        	$buttontoaddnewevent.= $langs->trans("AddEvent");
+        	$buttontoaddnewevent.= '</a>';
+        	print load_fiche_titre($title, $buttontoaddnewevent, '');
 
         	$page=0; $param=''; $sortfield='a.datep';
         	
@@ -250,13 +253,13 @@ class FormActions
      *  @param	array|string	$selected       Type pre-selected (can be 'manual', 'auto' or 'AC_xxx'). Can be an array too.
      *  @param  string		    $htmlname       Name of select field
      *  @param	string		    $excludetype	A type to exclude ('systemauto', 'system', '')
-     *  @param	integer		    $onlyautoornot	1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type
+     *  @param	integer		    $onlyautoornot	1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type, -1=Keep details and add a combined line "All manual"
      *  @param	int		        $hideinfohelp	1=Do not show info help, 0=Show, -1=Show+Add info to tell how to set default value
      *  @param  int		        $multiselect    1=Allow multiselect of action type
      *  @param  int             $nooutput       1=No output
      * 	@return	string
      */
-    function select_type_actions($selected='',$htmlname='actioncode',$excludetype='',$onlyautoornot=0, $hideinfohelp=0, $multiselect=0, $nooutput=0)
+    function select_type_actions($selected='', $htmlname='actioncode', $excludetype='', $onlyautoornot=0, $hideinfohelp=0, $multiselect=0, $nooutput=0)
     {
         global $langs,$user,$form,$conf;
 
diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php
index ef9141dbc94b7f9ac5c6d0fe0bd77cda1c51953c..ac800d480fc6cb0aceedc6cf7ebf010aa8fe90cf 100644
--- a/htdocs/core/class/html.formcompany.class.php
+++ b/htdocs/core/class/html.formcompany.class.php
@@ -358,9 +358,10 @@ class FormCompany
 	 *
 	 *  @param  string	$selected   	Title preselected
 	 * 	@param	string	$htmlname		Name of HTML select combo field
+	 *  @param  string  $morecss        Add more css on SELECT element      
 	 *  @return	string					String with HTML select
 	 */
-	function select_civility($selected='',$htmlname='civility_id')
+	function select_civility($selected='',$htmlname='civility_id',$morecss='maxwidth100')
 	{
 		global $conf,$langs,$user;
 		$langs->load("dict");
@@ -374,7 +375,7 @@ class FormCompany
 		$resql=$this->db->query($sql);
 		if ($resql)
 		{
-			$out.= '<select class="flat" name="'.$htmlname.'" id="'.$htmlname.'">';
+			$out.= '<select class="flat'.($morecss?' '.$morecss:'').'" name="'.$htmlname.'" id="'.$htmlname.'">';
 			$out.= '<option value="">&nbsp;</option>';
 			$num = $this->db->num_rows($resql);
 			$i = 0;
@@ -724,9 +725,10 @@ class FormCompany
 	 *    @param    int			$fieldsize				Field size
 	 *    @param    int			$disableautocomplete    1 To disable ajax autocomplete features (browser autocomplete may still occurs)
 	 *    @param	string		$moreattrib				Add more attribute on HTML input field
+	 *    @param    string      $morecss                More css
 	 *    @return	string
 	 */
-	function select_ziptown($selected='', $htmlname='zipcode', $fields='', $fieldsize=0, $disableautocomplete=0, $moreattrib='')
+	function select_ziptown($selected='', $htmlname='zipcode', $fields='', $fieldsize=0, $disableautocomplete=0, $moreattrib='',$morecss='')
 	{
 		global $conf;
 
@@ -740,7 +742,7 @@ class FormCompany
 			$out.= ajax_multiautocompleter($htmlname,$fields,DOL_URL_ROOT.'/core/ajax/ziptown.php')."\n";
 			$moreattrib.=' autocomplete="off"';
 		}
-		$out.= '<input id="'.$htmlname.'" class="maxwidthonsmartphone" type="text"'.($moreattrib?' '.$moreattrib:'').' name="'.$htmlname.'" '.$size.' value="'.$selected.'">'."\n";
+		$out.= '<input id="'.$htmlname.'" class="maxwidthonsmartphone'.($morecss?' '.$morecss:'').'" type="text"'.($moreattrib?' '.$moreattrib:'').' name="'.$htmlname.'" '.$size.' value="'.$selected.'">'."\n";
 
 		return $out;
 	}
diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php
index 109d2c5d23d54b1d02239ae5be570c49fe6f3692..d79eaae65f08842741d7a43b00822711a62090dc 100644
--- a/htdocs/core/class/html.formfile.class.php
+++ b/htdocs/core/class/html.formfile.class.php
@@ -62,7 +62,7 @@ class FormFile
      *  @param  int		$addcancel		1=Add 'Cancel' button
      *	@param	int		$sectionid		If upload must be done inside a particular ECM section
      * 	@param	int		$perm			Value of permission to allow upload
-     *  @param  int		$size           Length of input file area
+     *  @param  int		$size           Length of input file area. Deprecated.
      *  @param	Object	$object			Object to use (when attachment is done on an element)
      *  @param	string	$options		Add an option column
      *  @param	integer	$useajax		Use fileupload ajax (0=never, 1=if enabled, 2=always whatever is option). 2 should never be used.
@@ -106,7 +106,7 @@ class FormFile
 
             if (! empty($options)) $out .= '<td>'.$options.'</td>';
 
-            $out .= '<td valign="middle" class="nowrap">';
+            $out .= '<td valign="middle">';
 
             $max=$conf->global->MAIN_UPLOAD_DOC;		// En Kb
             $maxphp=@ini_get('upload_max_filesize');	// En inconnu
@@ -121,10 +121,10 @@ class FormFile
             {
                 $out .= '<input type="hidden" name="max_file_size" value="'.($max*1024).'">';
             }
-            $out .= '<input class="flat" type="file" name="userfile" size="'.$maxlength.'"';
+            $out .= '<input class="flat minwidth400" type="file" name="userfile"';
             $out .= (empty($conf->global->MAIN_UPLOAD_DOC) || empty($perm)?' disabled':'');
             $out .= '>';
-            $out .= '&nbsp;';
+            $out .= ' ';
             $out .= '<input type="submit" class="button" name="sendit" value="'.$langs->trans("Upload").'"';
             $out .= (empty($conf->global->MAIN_UPLOAD_DOC) || empty($perm)?' disabled':'');
             $out .= '>';
@@ -183,11 +183,11 @@ class FormFile
 	            $out .= '<div class="valignmiddle" >';
 	            $out .= '<div class="inline-block" style="padding-right: 10px;">';
 	            if (! empty($conf->global->OPTIMIZEFORTEXTBROWSER)) $out .= '<label for="link">'.$langs->trans("URLToLink") . ':</label> ';
-	            $out .= '<input type="text" name="link" size="'.$maxlength.'" id="link" placeholder="'.dol_escape_htmltag($langs->trans("URLToLink")).'">';
+	            $out .= '<input type="text" name="link" class="flat minwidth400imp" id="link" placeholder="'.dol_escape_htmltag($langs->trans("URLToLink")).'">';
 	            $out .= '</div>';
 	            $out .= '<div class="inline-block" style="padding-right: 10px;">';
 	            if (! empty($conf->global->OPTIMIZEFORTEXTBROWSER)) $out .= '<label for="label">'.$langs->trans("Label") . ':</label> ';
-	            $out .= '<input type="text" name="label" id="label" placeholder="'.dol_escape_htmltag($langs->trans("Label")).'">';
+	            $out .= '<input type="text" class="flat" name="label" id="label" placeholder="'.dol_escape_htmltag($langs->trans("Label")).'">';
 	            $out .= '<input type="hidden" name="objecttype" value="' . $object->element . '">';
 	            $out .= '<input type="hidden" name="objectid" value="' . $object->id . '">';
 	            $out .= '</div>';
@@ -776,6 +776,8 @@ class FormFile
 
     /**
      *	Show a Document icon with link(s)
+     *  You may want to call this into a div like this:
+     *  print '<div class="inline-block valignmiddle">'.$formfile->getDocumentsLink($element_doc, $filename, $filedir).'</div>';
      *
      *	@param	string	$modulepart		propal, facture, facture_fourn, ...
      *	@param	string	$modulesubdir	Sub-directory to scan (Example: '0/1/10', 'FA/DD/MM/YY/9999'). Use '' if file is not into subdir of module.
@@ -1449,6 +1451,7 @@ class FormFile
             else
 			{
                 print '<td>';
+                print img_picto('', 'object_globe').' ';
                 print '<a data-ajax="false" href="' . $link->url . '" target="_blank">';
                 print $link->label;
                 print '</a>';
diff --git a/htdocs/core/class/html.formpropal.class.php b/htdocs/core/class/html.formpropal.class.php
index 57dd6336a4324361473378b823602d56e0da56a7..2cfeaadd3686e07dc9c51242ad6b668a2d7fddb5 100644
--- a/htdocs/core/class/html.formpropal.class.php
+++ b/htdocs/core/class/html.formpropal.class.php
@@ -50,9 +50,10 @@ class FormPropal
      *    @param	int		$excludedraft	0=All status, 1=Exclude draft status
      *    @param	int 	$showempty		1=Add empty line
      *    @param    string  $mode           'customer', 'supplier'
+     *    @param    string  $htmlname       Name of select field
      *    @return	void
      */
-    function selectProposalStatus($selected='',$short=0, $excludedraft=0, $showempty=1, $mode='customer')
+    function selectProposalStatus($selected='',$short=0, $excludedraft=0, $showempty=1, $mode='customer',$htmlname='propal_statut')
     {
         global $langs;
 
@@ -63,7 +64,13 @@ class FormPropal
             $prefix='SupplierProposalStatus';
             
             $langs->load("supplier_proposal");
-            $listofstatus=array(0=>array('code'=>'PR_DRAFT'), 1=>array('code'=>'PR_OPEN'), 2=>array('code'=>'PR_SIGNED'), 3=>array('code'=>'PR_NOTSIGNED'), 4=>array('code'=>'PR_CLOSED'));
+            $listofstatus=array(
+                0=>array('id'=>0, 'code'=>'PR_DRAFT'),
+                1=>array('id'=>1, 'code'=>'PR_OPEN'),
+                2=>array('id'=>2, 'code'=>'PR_SIGNED'),
+                3=>array('id'=>3, 'code'=>'PR_NOTSIGNED'),
+                4=>array('id'=>4, 'code'=>'PR_CLOSED')
+            );
         }
         else
         {
@@ -93,7 +100,7 @@ class FormPropal
             }
         }
 
-        print '<select class="flat" name="propal_statut">';
+        print '<select class="flat" name="'.$htmlname.'">';
         if ($showempty) print '<option value="">&nbsp;</option>';
 
         foreach($listofstatus as $key => $obj)
@@ -115,15 +122,16 @@ class FormPropal
                 print '<option value="'.$obj['id'].'">';
             }
             $key=$obj['code'];
-            if ($langs->trans($prefix."PropalStatus".$key.($short?'Short':'')) != $prefix."PropalStatus".$key.($short?'Short':''))
+            if ($langs->trans($prefix.$key.($short?'Short':'')) != $prefix.$key.($short?'Short':''))
             {
-                print $langs->trans($prefix."PropalStatus".$key.($short?'Short':''));
+                print $langs->trans($prefix.$key.($short?'Short':''));
             }
             else
 			{
-                $conv_to_new_code=array('PR_DRAFT'=>'Draft','PR_OPEN'=>'Opened','PR_CLOSED'=>'Closed','PR_SIGNED'=>'Signed','PR_NOTSIGNED'=>'NotSigned','PR_FAC'=>'Billed');
+                $conv_to_new_code=array('PR_DRAFT'=>'Draft','PR_OPEN'=>'Validated','PR_CLOSED'=>'Closed','PR_SIGNED'=>'Signed','PR_NOTSIGNED'=>'NotSigned','PR_FAC'=>'Billed');
                 if (! empty($conv_to_new_code[$obj['code']])) $key=$conv_to_new_code[$obj['code']];
-                print ($langs->trans($prefix.$key.($short?'Short':''))!=$prefix.$key.($short?'Short':''))?$langs->trans($prefix.$key.($short?'Short':'')):$obj['label'];
+
+                print ($langs->trans($prefix.$key.($short?'Short':''))!=$prefix.$key.($short?'Short':''))?$langs->trans($prefix.$key.($short?'Short':'')):($obj['label']?$obj['label']:$obj['code']);
             }
             print '</option>';
             $i++;
diff --git a/htdocs/core/class/html.formsupplier_proposal.class.php b/htdocs/core/class/html.formsupplier_proposal.class.php
deleted file mode 100644
index ed8781731a072805e8e97cb7d20d88e64ff5b022..0000000000000000000000000000000000000000
--- a/htdocs/core/class/html.formsupplier_proposal.class.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/* Copyright (C) 2012 Laurent Destailleur   <eldy@users.sourceforge.net>
- *
- * 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
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/**
- *	\file       htdocs/core/class/html.formpropal.class.php
- *  \ingroup    core
- *	\brief      File of class with all html predefined components
- */
-
-
-/**
- *	Class to manage generation of HTML components for proposal management
- */
-class FormSupplierProposal
-{
-	var $db;
-	var $error;
-
-
-	/**
-	 * Constructor
-	 *
-	 * @param		DoliDB		$db      Database handler
-	 */
-	public function __construct($db)
-	{
-		$this->db = $db;
-	}
-
-    /**
-     *    Return combo list of differents status of a proposal
-     *    Values are id of table c_propalst
-     *
-     *    @param	string	$selected   Preselected value
-     *    @param	int		$short		Use short labels
-     *    @return	void
-     */
-    function selectSupplierProposalStatus($selected='',$short=0)
-    {
-        global $langs;
-
-        $sql = "SELECT id, code, label, active FROM ".MAIN_DB_PREFIX."c_propalst";
-        $sql .= " WHERE active = 1";
-
-        dol_syslog(get_class($this)."::selectSupplierProposalStatus", LOG_DEBUG);
-        $resql=$this->db->query($sql);
-        if ($resql)
-        {
-            print '<select class="flat" name="supplier_proposal_statut">';
-            print '<option value="">&nbsp;</option>';
-            $num = $this->db->num_rows($resql);
-            $i = 0;
-            if ($num)
-            {
-                while ($i < $num)
-                {
-                    $obj = $this->db->fetch_object($resql);
-                    if ($selected == $obj->id)
-                    {
-                        print '<option value="'.$obj->id.'" selected>';
-                    }
-                    else
-                    {
-                        print '<option value="'.$obj->id.'">';
-                    }
-                    $key=$obj->code;
-                    if ($langs->trans("PropalStatus".$key.($short?'Short':'')) != "PropalStatus".$key.($short?'Short':''))
-                    {
-                        print $langs->trans("PropalStatus".$key.($short?'Short':''));
-                    }
-                    else
-                    {
-                        $conv_to_new_code=array('PR_DRAFT'=>'Draft','PR_OPEN'=>'Opened','PR_CLOSED'=>'Closed','PR_SIGNED'=>'Signed','PR_NOTSIGNED'=>'NotSigned','PR_FAC'=>'Closed');
-                        if (! empty($conv_to_new_code[$obj->code])) $key=$conv_to_new_code[$obj->code];
-                        print ($langs->trans("PropalStatus".$key.($short?'Short':''))!="PropalStatus".$key.($short?'Short':''))?$langs->trans("PropalStatus".$key.($short?'Short':'')):$obj->label;
-                    }
-                    print '</option>';
-                    $i++;
-                }
-            }
-            print '</select>';
-        }
-        else
-        {
-            dol_print_error($this->db);
-        }
-    }
-
-}
-
diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php
index 39a45ad783b8d4648221a3a748e45e9337f7f40a..c8ce225e0c2b23dbf5aca5e08c22bf49b2ad77de 100644
--- a/htdocs/core/class/smtps.class.php
+++ b/htdocs/core/class/smtps.class.php
@@ -489,14 +489,20 @@ class SMTPs
 				// and send it out "single file"
 				foreach ( $this->get_RCPT_list() as $_address )
 				{
-					/*
+				    /* Note:
+				     * BCC email addresses must be listed in the RCPT TO command list,
+                     * but the BCC header should not be printed under the DATA command.
+				     * http://stackoverflow.com/questions/2750211/sending-bcc-emails-using-a-smtp-server
+				     */
+
+    				/*
 					 * TODO
-					* After each 'RCPT TO:' is sent, we need to make sure it was kosher,
-					* if not, the whole message will fail
-					* If any email address fails, we will need to RESET the connection,
-					* mark the last address as "bad" and start the address loop over again.
-					* If any address fails, the entire message fails.
-					*/
+					 * After each 'RCPT TO:' is sent, we need to make sure it was kosher,
+					 * if not, the whole message will fail
+					 * If any email address fails, we will need to RESET the connection,
+					 * mark the last address as "bad" and start the address loop over again.
+					 * If any address fails, the entire message fails.
+					 */
 					$this->socket_send_str('RCPT TO: <' . $_address . '>', '250');
 				}
 
@@ -1025,7 +1031,7 @@ class SMTPs
 	/**
 	 * Returns an array of addresses for a specific type; TO, CC or BCC
 	 *
-	 * @param 		string 	$_which 	Which collection of adresses to return
+	 * @param 		string 	       $_which 	    Which collection of addresses to return ('to', 'cc', 'bcc')
 	 * @return 		string|false 				Array of emaill address
 	 */
 	function get_email_list($_which = null)
@@ -1174,9 +1180,17 @@ class SMTPs
 		if ( $this->getCC() )
 		$_header .= 'Cc: ' . $this->getCC()  . "\r\n";
 
+		/* Note:
+		 * BCC email addresses must be listed in the RCPT TO command list,
+		 * but the BCC header should not be printed under the DATA command.
+		 * So it is included into the function sendMsg() but not here.
+		 * http://stackoverflow.com/questions/2750211/sending-bcc-emails-using-a-smtp-server
+		 */
+		/*
 		if ( $this->getBCC() )
 		$_header .= 'Bcc: ' . $this->getBCC()  . "\r\n";
-
+        */
+		
 		$host=$this->getHost();
 		$host=preg_replace('@tcp://@i','',$host);	// Remove prefix
 		$host=preg_replace('@ssl://@i','',$host);	// Remove prefix
diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php
index b80380564840596b3cef1d58327fe7312cad0724..c63227e1601ad61ab834ddd21430fc11d5742b29 100644
--- a/htdocs/core/db/DoliDB.class.php
+++ b/htdocs/core/db/DoliDB.class.php
@@ -36,7 +36,7 @@ abstract class DoliDB implements Database
 	/** @var string Charset used to force charset when creating database */
 	public $forcecharset='utf8';
 	/** @var string Collate used to force collate when creating database */
-	public $forcecollate='utf8_general_ci';
+	public $forcecollate='utf8_unicode_ci';
 	/** @var resource Resultset of last query */
 	private $_results;
 	/** @var bool true if connected, else false */
diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php
index 087abf709d9c31bac94635c813d1f649ecd34dbf..d7ff764ce7a7ca3c0068458fffc03d11b805439f 100644
--- a/htdocs/core/db/mysqli.class.php
+++ b/htdocs/core/db/mysqli.class.php
@@ -854,7 +854,7 @@ class DoliDBMysqli extends DoliDB
     }
 
     /**
-     *	Return charset used to store data in database
+     *	Return charset used to store data in current database (same result than using SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "databasename";)
      *
      *	@return		string		Charset
      */
@@ -897,7 +897,7 @@ class DoliDBMysqli extends DoliDB
     }
 
     /**
-     *	Return collation used in database
+     *	Return collation used in current database
      *
      *	@return		string		Collation value
      */
diff --git a/htdocs/core/filemanagerdol/connectors/php/config.php b/htdocs/core/filemanagerdol/connectors/php/config.php
index 8733e6a7c1706dfc086c8f1a7d89fd431724fa7e..de8b4d7e8bf1fd6ba8a1f24e859cf61703edf5f8 100644
--- a/htdocs/core/filemanagerdol/connectors/php/config.php
+++ b/htdocs/core/filemanagerdol/connectors/php/config.php
@@ -45,10 +45,12 @@ $Config['Enabled'] = true ;
 
 
 // Path to user files relative to the document root.
-$Config['UserFilesPath'] = DOL_URL_ROOT.'/viewimage.php?modulepart=medias'.(empty($website)?'':'_'.$website).'&file=' ;
+$extEntity=(empty($entity) ? 1 : $entity); // For multicompany with external access
 
+$Config['UserFilesPath'] = DOL_URL_ROOT.'/viewimage.php?modulepart=medias'.(empty($website)?'':'_'.$website).'&entity='.$extEntity.'&file=' ;
 $Config['UserFilesAbsolutePathRelative'] = (empty($website) ? ((!empty($entity) ? '/' . $entity : '') . '/medias/') : ('/websites/'.$website));
 
+
 // Fill the following value it you prefer to specify the absolute path for the
 // user files directory. Useful if you are using a virtual directory, symbolic
 // link or alias. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php
index cdc45de825e3d2849e21667cc9955fd055b8b2e5..57a4c03c63f59ae7df0074f43c0f883be1b4f93a 100644
--- a/htdocs/core/lib/agenda.lib.php
+++ b/htdocs/core/lib/agenda.lib.php
@@ -108,7 +108,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
 		{
             $multiselect=(!empty($conf->global->AGENDA_USE_EVENT_TYPE));
 		}
-        print $formactions->select_type_actions($actioncode, "actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:0), 0, $multiselect);
+        print $formactions->select_type_actions($actioncode, "actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:-1), 0, $multiselect);
 		print '</td></tr>';
 	}
 
diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php
index 4b0ae91ee3f0fbd1984048ff5e2196aaceb6ddb2..0193a33b305c41bee2e241acebe92009486e8b96 100644
--- a/htdocs/core/lib/ajax.lib.php
+++ b/htdocs/core/lib/ajax.lib.php
@@ -35,7 +35,7 @@
  *  @param	string	$urloption			More parameters on URL request
  *  @param	int		$minLength			Minimum number of chars to trigger that Ajax search
  *  @param	int		$autoselect			Automatic selection if just one value
- *  @param	array	$ajaxoptions		Multiple options array 
+ *  @param	array	$ajaxoptions		Multiple options array
  *                                          Ex: array('update'=>array('field1','field2'...)) will reset field1 and field2 once select done
  *                                          Ex: array('disabled'=>
  *                                          Ex: array('show'=>
@@ -61,8 +61,8 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt
 					$("input#search_'.$htmlname.'").keydown(function() {
 						$("#'.$htmlname.'").val("");
 					});
-						    
-					/* I disable this. A call to trigger is already done later into the select action of the autocomplete code 
+
+					/* I disable this. A call to trigger is already done later into the select action of the autocomplete code
 						$("input#search_'.$htmlname.'").change(function() {
 					    console.log("Call the change trigger on input '.$htmlname.' because of a change on search_'.$htmlname.' was triggered");
 						$("#'.$htmlname.'").trigger("change");
@@ -291,7 +291,7 @@ function ajax_multiautocompleter($htmlname, $fields, $url, $option='', $minLengt
 								    	needtotrigger="#" + fields[i];
 									}
 								}
-							
+
 								if (needtotrigger != "")	// To force select2 to refresh visible content
 								{
 									// We introduce a delay so hand is back to js and all other js change can be done before the trigger that may execute a submit is done
@@ -322,7 +322,8 @@ function ajax_dialog($title,$message,$w=350,$h=150)
 {
 	global $langs;
 
-	$msg= '<div id="dialog-info" title="'.dol_escape_htmltag($title).'">';
+	$newtitle=dol_textishtml($title)?dol_string_nohtmltag($title,1):$title;
+	$msg= '<div id="dialog-info" title="'.dol_escape_htmltag($newtitle).'">';
 	$msg.= $message;
 	$msg.= '</div>'."\n";
     $msg.= '<script type="text/javascript">
@@ -355,9 +356,10 @@ function ajax_dialog($title,$message,$w=350,$h=150)
  * @param	array	$events						More events option. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
  * @param  	int		$minLengthToAutocomplete	Minimum length of input string to start autocomplete
  * @param	int		$forcefocus					Force focus on field
+ * @param	string	$widthTypeOfAutocomplete	'resolve' or 'off'
  * @return	string								Return html string to convert a select field into a combo, or '' if feature has been disabled for some reason.
  */
-function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0)
+function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0, $widthTypeOfAutocomplete='resolve')
 {
 	global $conf;
 
@@ -374,7 +376,7 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $
         	$(document).ready(function () {
         		$(\''.(preg_match('/^\./',$htmlname)?$htmlname:'#'.$htmlname).'\').'.$tmpplugin.'({
         		    dir: \'ltr\',
-        			width: \'resolve\',		/* off or resolve */
+        			width: \''.$widthTypeOfAutocomplete.'\',		/* off or resolve */
 					minimumInputLength: '.$minLengthToAutocomplete.'
 				})';
 	if ($forcefocus) $msg.= '.select2(\'focus\')';
diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php
index 8c73889499859d7a96f5afc0a2823c0cec477545..e99a6913773afb9f94a1b48a593a67923e112739 100644
--- a/htdocs/core/lib/company.lib.php
+++ b/htdocs/core/lib/company.lib.php
@@ -1002,7 +1002,26 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint=
         if (get_class($filterobj) == 'Adherent') $sql.= " AND a.fk_element = m.rowid AND a.elementtype = 'member'";
         if (get_class($filterobj) == 'Adherent' && $filterobj->id) $sql.= " AND a.fk_element = ".$filterobj->id;
         if (is_object($objcon) && $objcon->id) $sql.= " AND a.fk_contact = ".$objcon->id;
-        if (!empty($actioncode)) $sql.= " AND c.code='".$actioncode."' ";
+        // Condition on actioncode
+        if (! empty($actioncode))
+        {
+            if (empty($conf->global->AGENDA_USE_EVENT_TYPE))
+            {
+                if ($actioncode == 'AC_NON_AUTO') $sql.= " AND c.type != 'systemauto'";
+                elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND c.type = 'systemauto'";
+                else 
+                {
+                    if ($actioncode == 'AC_OTH') $sql.= " AND c.type != 'systemauto'";
+                    if ($actioncode == 'AC_OTH_AUTO') $sql.= " AND c.type = 'systemauto'";
+                }
+            }
+            else
+            {
+                if ($actioncode == 'AC_NON_AUTO') $sql.= " AND c.type != 'systemauto'";
+                elseif ($actioncode == 'AC_ALL_AUTO') $sql.= " AND c.type = 'systemauto'";
+                else $sql.= " AND c.code = '".$db->escape($actioncode)."'";
+            }
+        }
         if ($donetodo == 'todo') $sql.= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep > '".$db->idate($now)."'))";
         if ($donetodo == 'done') $sql.= " AND (a.percent = 100 OR (a.percent = -1 AND a.datep <= '".$db->idate($now)."'))";
         if (is_array($filters) && $filters['search_agenda_label']) $sql.= natural_search('a.label', $filters['search_agenda_label']);
@@ -1140,7 +1159,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint=
             $out.='</td>';
 		}
         $out.=getTitleFieldOfList($langs->trans("Ref"), 0, $_SERVER["PHP_SELF"], 'a.id', '', $param, '', $sortfield, $sortorder);
-        $out.='<td>'.$langs->trans("Label").'</td>';
+        $out.='<td class="maxwidth100onsmartphone">'.$langs->trans("Label").'</td>';
         $out.=getTitleFieldOfList($langs->trans("Date"), 0, $_SERVER["PHP_SELF"], 'a.datep, a.id', '', $param, '', $sortfield, $sortorder);
         $out.='<td>'.$langs->trans("Type").'</td>';
 		$out.='<td></td>';
@@ -1157,10 +1176,10 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint=
             $out.='<td></td>';
 		}
 		$out.='<td></td>';
-		$out.='<td><input type="text" name="search_agenda_label" value="'.$filters['search_agenda_label'].'"></td>';
+		$out.='<td class="maxwidth100onsmartphone"><input type="text" name="search_agenda_label" value="'.$filters['search_agenda_label'].'"></td>';
 		$out.='<td></td>';
 		$out.='<td>';
-	    $out.=$formactions->select_type_actions($actioncode, "actioncode", '', empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:0, 0, 0, 1);
+	    $out.=$formactions->select_type_actions($actioncode, "actioncode", '', empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:-1, 0, 0, 1);
 		$out.='</td>';
 		$out.='<td></td>';
 		$out.='<td></td>';
@@ -1235,8 +1254,13 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint=
     			    if ($histo[$key]['acode'] == 'AC_FAX')   $out.=img_picto('', 'object_phoning_fax').' ';
     			    if ($histo[$key]['acode'] == 'AC_EMAIL') $out.=img_picto('', 'object_email').' ';
     			}
+			    $out.=$actionstatic->type;
+			}
+			else {
+			    $typelabel = $actionstatic->type;
+			    if ($histo[$key]['acode'] != 'AC_OTH_AUTO') $typelabel = $langs->trans("ActionAC_MANUAL"); 
+			    $out.=$typelabel;
 			}
-			$out.=$actionstatic->type;
 			$out.='</td>';
 
             // Title of event
diff --git a/htdocs/core/lib/donation.lib.php b/htdocs/core/lib/donation.lib.php
index 5ff91fb1286e96e1d5965fdc13b4bd0cea29a81d..51f6858eafd3cc53e59f31c041759b2e6fcc932e 100644
--- a/htdocs/core/lib/donation.lib.php
+++ b/htdocs/core/lib/donation.lib.php
@@ -89,6 +89,15 @@ function donation_prepare_head($object)
 	$head[$h][2] = 'documents';
 	$h++;
 
+	$nbNote = 0;
+	if(!empty($object->note_private)) $nbNote++;
+	if(!empty($object->note_public)) $nbNote++;
+	$head[$h][0] = DOL_URL_ROOT.'/don/note.php?id='.$object->id;
+	$head[$h][1] = $langs->trans("Notes");
+	if ($nbNote > 0) $head[$h][1].= ' <span class="badge">'.$nbNote.'</span>';
+	$head[$h][2] = 'note';
+	$h++;
+	
 	$head[$h][0] = DOL_URL_ROOT . '/don/info.php?id=' . $object->id;
 	$head[$h][1] = $langs->trans("Info");
 	$head[$h][2] = 'info';
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index d7414a4683595f4578720d3383ef25c41a3a1e5b..bc9dd52dd559d55209f98956755e1ea4c53c61af 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -939,11 +939,12 @@ function dol_get_fiche_end($notab=0)
  *  @param	string	$moreparam  	More param to add in nav link url.
  *	@param	int		$nodbprefix		Do not include DB prefix to forge table name
  *	@param	string	$morehtmlleft	More html code to show before ref
+ *	@param	string	$morehtmlstatus	More html code to show under navigation arrows
  *	@param	string	$morehtmlright	More html code to show before navigation arrows
  *  @param  int     $onlybanner     Put this to 1, if the card will contains only a banner
  *  @return	void
  */
-function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlright='', $onlybanner=0)
+function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
 {
 	global $conf, $form, $user, $langs;
 
@@ -1013,38 +1014,38 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
 	}
 	if ($showbarcode) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$form->showbarcode($object).'</div>';
 	if ($object->element == 'societe' && ! empty($conf->use_javascript_ajax) && $user->rights->societe->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) {
-		$morehtmlright.=ajax_object_onoff($object, 'status', 'status', 'InActivity', 'ActivityCeased');
+		$morehtmlstatus.=ajax_object_onoff($object, 'status', 'status', 'InActivity', 'ActivityCeased');
 	} 
 	elseif ($object->element == 'product')
 	{
-	    //$morehtmlright.=$langs->trans("Status").' ('.$langs->trans("Sell").') ';
+	    //$morehtmlstatus.=$langs->trans("Status").' ('.$langs->trans("Sell").') ';
         if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) {
-            $morehtmlright.=ajax_object_onoff($object, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell');
+            $morehtmlstatus.=ajax_object_onoff($object, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell');
         } else {
-            $morehtmlright.=$object->getLibStatut(5,0);
+            $morehtmlstatus.=$object->getLibStatut(5,0);
         }
-        $morehtmlright.=' &nbsp; ';
-        //$morehtmlright.=$langs->trans("Status").' ('.$langs->trans("Buy").') ';
+        $morehtmlstatus.=' &nbsp; ';
+        //$morehtmlstatus.=$langs->trans("Status").' ('.$langs->trans("Buy").') ';
 	    if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) {
-            $morehtmlright.=ajax_object_onoff($object, 'status_buy', 'tobuy', 'ProductStatusOnBuy', 'ProductStatusNotOnBuy');
+            $morehtmlstatus.=ajax_object_onoff($object, 'status_buy', 'tobuy', 'ProductStatusOnBuy', 'ProductStatusNotOnBuy');
         } else {
-            $morehtmlright.=$object->getLibStatut(5,1);
+            $morehtmlstatus.=$object->getLibStatut(5,1);
         }
 	}
 	elseif ($object->element == 'facture' || $object->element == 'invoice' || $object->element == 'invoice_supplier')
 	{
 	    $tmptxt=$object->getLibStatut(6, $object->totalpaye);
-	    if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3)) $tmptxt=$object->getLibStatut(5, $object->totalpaye); 
-		$morehtmlright.=$tmptxt;
+	    if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3) || $conf->browser->layout=='phone') $tmptxt=$object->getLibStatut(5, $object->totalpaye); 
+		$morehtmlstatus.=$tmptxt;
 	}
 	elseif ($object->element == 'facturerec') 
 	{
-	    $morehtmlright.='<!-- No status for recurring invoice -->';
+	    $morehtmlstatus.='<!-- No status for recurring invoice -->';
 	}
-	else {
+	else { // Generic case
 	    $tmptxt=$object->getLibStatut(6);
-	    if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3)) $tmptxt=$object->getLibStatut(5); 
-		$morehtmlright.=$tmptxt;
+	    if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3) || $conf->browser->layout=='phone') $tmptxt=$object->getLibStatut(5); 
+		$morehtmlstatus.=$tmptxt;
 	}
 	if (! empty($object->name_alias)) $morehtmlref.='<div class="refidno">'.$object->name_alias.'</div>';      // For thirdparty
 	if (! empty($object->label))      $morehtmlref.='<div class="refidno">'.$object->label.'</div>';           // For product
@@ -1062,7 +1063,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
 	}
 	
 	print '<div class="'.($onlybanner?'':'arearef ').'heightref valignmiddle" width="100%">';
-	print $form->showrefnav($object, $paramid, $morehtml, $shownav, $fieldid, $fieldref, $morehtmlref, $moreparam, $nodbprefix, $morehtmlleft, $morehtmlright);
+	print $form->showrefnav($object, $paramid, $morehtml, $shownav, $fieldid, $fieldref, $morehtmlref, $moreparam, $nodbprefix, $morehtmlleft, $morehtmlstatus, $morehtmlright);
 	print '</div>';
 	print '<div class="underrefbanner clearboth"></div>';
 }
@@ -1080,9 +1081,9 @@ function fieldLabel($langkey, $fieldkey, $fieldrequired=0)
 	global $conf, $langs;
 	$ret='';
 	if ($fieldrequired) $ret.='<span class="fieldrequired">';
-	if (empty($conf->dol_use_jmobile)) $ret.='<label for="'.$fieldkey.'">';
+	if (($conf->dol_use_jmobile != 4)) $ret.='<label for="'.$fieldkey.'">';
 	$ret.=$langs->trans($langkey);
-	if (empty($conf->dol_use_jmobile)) $ret.='</label>';
+	if (($conf->dol_use_jmobile != 4)) $ret.='</label>';
 	if ($fieldrequired) $ret.='</span>';
 	return $ret;
 }
@@ -2241,14 +2242,14 @@ function dol_trunc($string,$size=40,$trunc='right',$stringencoding='UTF-8',$nodo
  *                                  			Example: picto.png                  if picto.png is stored into htdocs/theme/mytheme/img
  *                                  			Example: picto.png@mymodule         if picto.png is stored into htdocs/mymodule/img
  *                                  			Example: /mydir/mysubdir/picto.png  if picto.png is stored into htdocs/mydir/mysubdir (pictoisfullpath must be set to 1)
- *	@param		string		$options			Add more attribute on img tag (For example 'style="float: right"')
+ *	@param		string		$morealt			Add more attribute on img tag (For example 'style="float: right"')
  *	@param		int			$pictoisfullpath	If 1, image path is a full path
  *	@param		int			$srconly			Return only content of the src attribute of img.
  *  @param		int			$notitle			1=Disable tag title. Use it if you add js tooltip, to avoid duplicate tooltip.
  *  @return     string       				    Return img tag
  *  @see        #img_object, #img_picto_common
  */
-function img_picto($titlealt, $picto, $options = '', $pictoisfullpath = false, $srconly=0, $notitle=0)
+function img_picto($titlealt, $picto, $morealt = '', $pictoisfullpath = false, $srconly=0, $notitle=0)
 {
 	global $conf;
 
@@ -2300,7 +2301,7 @@ function img_picto($titlealt, $picto, $options = '', $pictoisfullpath = false, $
 		if (preg_match('/:[^\s0-9]/',$titlealt)) $tmparray=explode(':',$titlealt);		// We explode if we have TextA:TextB. Not if we have TextA: TextB
 		$title=$tmparray[0];
 		$alt=empty($tmparray[1])?'':$tmparray[1];
-		return '<img src="'.$fullpathpicto.'" border="0" alt="'.dol_escape_htmltag($alt).'"'.($notitle?'':' title="'.dol_escape_htmltag($title).'"').($options?' '.$options:'').'>';	// Alt is used for accessibility, title for popup
+		return '<img src="'.$fullpathpicto.'" border="0" alt="'.dol_escape_htmltag($alt).'"'.($notitle?'':' title="'.dol_escape_htmltag($title).'"').($morealt?' '.$morealt:'').'>';	// Alt is used for accessibility, title for popup
 	}
 }
 
@@ -2310,16 +2311,16 @@ function img_picto($titlealt, $picto, $options = '', $pictoisfullpath = false, $
  *	@param	string	$titlealt			Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title.
  *	@param	string	$picto				Name of image to show object_picto (example: user, group, action, bill, contract, propal, product, ...)
  *										For external modules use imagename@mymodule to search into directory "img" of module.
- *	@param	string	$options			Add more attribute on img tag (ie: class="datecallink")
+ *	@param	string	$morealt			Add more attribute on img tag (ie: class="datecallink")
  *	@param	int		$pictoisfullpath	If 1, image path is a full path
  *	@param	int		$srconly			Return only content of the src attribute of img.
  *  @param	int		$notitle			1=Disable tag title. Use it if you add js tooltip, to avoid duplicate tooltip.
  *	@return	string						Return img tag
  *	@see	#img_picto, #img_picto_common
  */
-function img_object($titlealt, $picto, $options = '', $pictoisfullpath = false, $srconly=0, $notitle=0)
+function img_object($titlealt, $picto, $morealt = '', $pictoisfullpath = false, $srconly=0, $notitle=0)
 {
-	return img_picto($titlealt, 'object_'.$picto, $options, $pictoisfullpath, $srconly, $notitle);
+	return img_picto($titlealt, 'object_'.$picto, $morealt, $pictoisfullpath, $srconly, $notitle);
 }
 
 /**
@@ -2327,12 +2328,12 @@ function img_object($titlealt, $picto, $options = '', $pictoisfullpath = false,
  *
  *	@param      string		$titlealt         	Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title.
  *	@param      string		$picto       		Name of image file to show (If no extension provided, we use '.png'). Image must be stored into htdocs/theme/common directory.
- *	@param		string		$options			Add more attribute on img tag
+ *	@param		string		$morealt			Add more attribute on img tag
  *	@param		int			$pictoisfullpath	If 1, image path is a full path
  *	@return     string      					Return img tag
  *  @see        #img_object, #img_picto
  */
-function img_weather($titlealt, $picto, $options = '', $pictoisfullpath = 0)
+function img_weather($titlealt, $picto, $morealt = '', $pictoisfullpath = 0)
 {
 	global $conf;
 
@@ -2340,7 +2341,7 @@ function img_weather($titlealt, $picto, $options = '', $pictoisfullpath = 0)
 
 	$path = DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/weather/'.$picto;
 
-	return img_picto($titlealt, $path, $options, 1);
+	return img_picto($titlealt, $path, $morealt, 1);
 }
 
 /**
@@ -2348,12 +2349,12 @@ function img_weather($titlealt, $picto, $options = '', $pictoisfullpath = 0)
  *
  *	@param      string		$titlealt         	Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title.
  *	@param      string		$picto       		Name of image file to show (If no extension provided, we use '.png'). Image must be stored into htdocs/theme/common directory.
- *	@param		string		$options			Add more attribute on img tag
+ *	@param		string		$morealt			Add more attribute on img tag
  *	@param		int			$pictoisfullpath	If 1, image path is a full path
  *	@return     string      					Return img tag
  *  @see        #img_object, #img_picto
  */
-function img_picto_common($titlealt, $picto, $options = '', $pictoisfullpath = 0)
+function img_picto_common($titlealt, $picto, $morealt = '', $pictoisfullpath = 0)
 {
 	global $conf;
 
@@ -2372,7 +2373,7 @@ function img_picto_common($titlealt, $picto, $options = '', $pictoisfullpath = 0
 		}
 	}
 
-	return img_picto($titlealt, $path, $options, 1);
+	return img_picto($titlealt, $path, $morealt, 1);
 }
 
 /**
@@ -2478,9 +2479,9 @@ function img_view($titlealt = 'default', $float = 0, $other = '')
 
 	if ($titlealt == 'default') $titlealt = $langs->trans('View');
 
-	$options = ($float ? 'style="float: right" ' : '').$other;
+	$morealt = ($float ? 'style="float: right" ' : '').$other;
 
-	return img_picto($titlealt, 'view.png', $options);
+	return img_picto($titlealt, 'view.png', $morealt);
 }
 
 /**
@@ -2552,16 +2553,16 @@ function img_info($titlealt = 'default')
  *	Show warning logo
  *
  *	@param	string	$titlealt   Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title.
- *	@param	string	$options	Add more attribute on img tag (For example 'style="float: right"'). If 1
+ *	@param	string	$morealt	Add more attribute on img tag (For example 'style="float: right"'). If 1
  *	@return string      		Return img tag
  */
-function img_warning($titlealt = 'default', $options = '')
+function img_warning($titlealt = 'default', $morealt = '')
 {
 	global $conf, $langs;
 
 	if ($titlealt == 'default') $titlealt = $langs->trans('Warning');
 
-	return img_picto($titlealt, 'warning.png', 'class="pictowarning"'.($options ? ($options == '1' ? ' style="float: right"' : ' '.$options): ''));
+	return img_picto($titlealt, 'warning.png', 'class="pictowarning"'.($morealt ? ($morealt == '1' ? ' style="float: right"' : ' '.$morealt): ''));
 }
 
 /**
@@ -2583,32 +2584,32 @@ function img_error($titlealt = 'default')
  *	Show next logo
  *
  *	@param	string	$titlealt   Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title.
-*	@param	string	$options	Add more attribute on img tag (For example 'style="float: right"')
+*	@param	string	$morealt	Add more attribute on img tag (For example 'style="float: right"')
   *	@return string      		Return img tag
  */
-function img_next($titlealt = 'default', $options='')
+function img_next($titlealt = 'default', $morealt='')
 {
 	global $conf, $langs;
 
 	if ($titlealt == 'default') $titlealt = $langs->trans('Next');
 
-	return img_picto($titlealt, 'next.png', $options);
+	return img_picto($titlealt, 'next.png', $morealt);
 }
 
 /**
  *	Show previous logo
  *
  *	@param	string	$titlealt   Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title.
- *	@param	string	$options	Add more attribute on img tag (For example 'style="float: right"')
+ *	@param	string	$morealt	Add more attribute on img tag (For example 'style="float: right"')
  *	@return string      		Return img tag
  */
-function img_previous($titlealt = 'default', $options='')
+function img_previous($titlealt = 'default', $morealt='')
 {
 	global $conf, $langs;
 
 	if ($titlealt == 'default') $titlealt = $langs->trans('Previous');
 
-	return img_picto($titlealt, 'previous.png', $options);
+	return img_picto($titlealt, 'previous.png', $morealt);
 }
 
 /**
@@ -2650,16 +2651,16 @@ function img_up($titlealt = 'default', $selected = 0, $moreclass='')
  *
  *	@param	string	$titlealt   Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title.
  *	@param  int		$selected	Selected
- *	@param	string	$options	Add more attribute on img tag (For example 'style="float: right"')
+ *	@param	string	$morealt	Add more attribute on img tag (For example 'style="float: right"')
  *	@return string      		Return img tag
  */
-function img_left($titlealt = 'default', $selected = 0, $options='')
+function img_left($titlealt = 'default', $selected = 0, $morealt='')
 {
 	global $conf, $langs;
 
 	if ($titlealt == 'default') $titlealt = $langs->trans('Left');
 
-	return img_picto($titlealt, ($selected ? '1leftarrow_selected.png' : '1leftarrow.png'), $options);
+	return img_picto($titlealt, ($selected ? '1leftarrow_selected.png' : '1leftarrow.png'), $morealt);
 }
 
 /**
@@ -2667,16 +2668,16 @@ function img_left($titlealt = 'default', $selected = 0, $options='')
  *
  *	@param	string	$titlealt   Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title.
  *	@param  int		$selected	Selected
- *	@param	string	$options	Add more attribute on img tag (For example 'style="float: right"')
+ *	@param	string	$morealt	Add more attribute on img tag (For example 'style="float: right"')
  *	@return string      		Return img tag
  */
-function img_right($titlealt = 'default', $selected = 0, $options='')
+function img_right($titlealt = 'default', $selected = 0, $morealt='')
 {
 	global $conf, $langs;
 
 	if ($titlealt == 'default') $titlealt = $langs->trans('Right');
 
-	return img_picto($titlealt, ($selected ? '1rightarrow_selected.png' : '1rightarrow.png'), $options);
+	return img_picto($titlealt, ($selected ? '1rightarrow_selected.png' : '1rightarrow.png'), $morealt);
 }
 
 /**
@@ -3098,7 +3099,7 @@ function print_fiche_titre($title, $mesg='', $picto='title_generic.png', $pictoi
  *	Load a title with picto
  *
  *	@param	string	$titre				Title to show
- *	@param	string	$mesg				Added message to show on right
+ *	@param	string	$morehtmlright		Added message to show on right
  *	@param	string	$picto				Icon to use before title (should be a 32x32 transparent png file)
  *	@param	int		$pictoisfullpath	1=Icon name is a full absolute url of image
  * 	@param	int		$id					To force an id on html objects
@@ -3106,7 +3107,7 @@ function print_fiche_titre($title, $mesg='', $picto='title_generic.png', $pictoi
  * 	@return	string
  *  @see print_barre_liste
  */
-function load_fiche_titre($titre, $mesg='', $picto='title_generic.png', $pictoisfullpath=0, $id=0, $morecssontable='')
+function load_fiche_titre($titre, $morehtmlright='', $picto='title_generic.png', $pictoisfullpath=0, $id=0, $morecssontable='')
 {
 	global $conf;
 
@@ -3121,9 +3122,9 @@ function load_fiche_titre($titre, $mesg='', $picto='title_generic.png', $pictois
 	$return.= '<td class="nobordernopadding" valign="middle">';
 	$return.= '<div class="titre">'.$titre.'</div>';
 	$return.= '</td>';
-	if (dol_strlen($mesg))
+	if (dol_strlen($morehtmlright))
 	{
-		$return.= '<td class="nobordernopadding titre_right" align="right" valign="middle">'.$mesg.'</td>';
+		$return.= '<td class="nobordernopadding titre_right" align="right" valign="middle">'.$morehtmlright.'</td>';
 	}
 	$return.= '</tr></table>'."\n";
 
@@ -3177,7 +3178,7 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so
 
 	// Left
 	//if ($picto && $titre) print '<td class="nobordernopadding hideonsmartphone" width="40" align="left" valign="middle">'.img_picto('', $picto, 'id="pictotitle"', $pictoisfullpath).'</td>';
-	print '<td class="nobordernopadding" style="width: 35%" valign="middle">';
+	print '<td class="nobordernopadding valignmiddle">';
 	if ($picto && $titre) print img_picto('', $picto, 'class="hideonsmartphone valignmiddle" id="pictotitle"', $pictoisfullpath);
 	print '<div class="titre inline-block">'.$titre;
 	if (!empty($titre) && $savtotalnboflines > 0) print ' ('.$totalnboflines.')';
@@ -3186,11 +3187,11 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so
 	// Center
 	if ($center)
 	{
-		print '<td class="nobordernopadding center" style="width: 30%" valign="middle">'.$center.'</td>';
+		print '<td class="nobordernopadding center valignmiddle">'.$center.'</td>';
 	}
 
 	// Right
-	print '<td class="nobordernopadding" align="right" style="width: 35%" valign="middle">';
+	print '<td class="nobordernopadding valignmiddle" align="right">';
 	if ($sortfield) $options .= "&amp;sortfield=".$sortfield;
 	if ($sortorder) $options .= "&amp;sortorder=".$sortorder;
 	// Show navigation bar
@@ -3208,20 +3209,20 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so
 
 			if ($cpt>=1)
 			{
-				$pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page=0'.$options.'">1</a></li>';
-				if ($cpt > 2) $pagelist.='<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="inactive"':'data-role="button"').'>...</span></li>';
-				else if ($cpt == 2) $pagelist.='<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page=1'.$options.'">2</a></li>';
+				$pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><a '.(($conf->dol_use_jmobile != 4)?'':'data-role="button" ').'href="'.$file.'?page=0'.$options.'">1</a></li>';
+				if ($cpt > 2) $pagelist.='<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><span '.(($conf->dol_use_jmobile != 4)?'class="inactive"':'data-role="button"').'>...</span></li>';
+				else if ($cpt == 2) $pagelist.='<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><a '.(($conf->dol_use_jmobile != 4)?'':'data-role="button" ').'href="'.$file.'?page=1'.$options.'">2</a></li>';
 			}
 
 			do
 			{
 				if ($cpt==$page)
 				{
-					$pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="active"':'data-role="button"').'>'.($page+1).'</span></li>';
+					$pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><span '.(($conf->dol_use_jmobile != 4)?'class="active"':'data-role="button"').'>'.($page+1).'</span></li>';
 				}
 				else
 				{
-					$pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page='.$cpt.$options.'">'.($cpt+1).'</a></li>';
+					$pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><a '.(($conf->dol_use_jmobile != 4)?'':'data-role="button" ').'href="'.$file.'?page='.$cpt.$options.'">'.($cpt+1).'</a></li>';
 				}
 				$cpt++;
 			}
@@ -3229,14 +3230,14 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so
 
 			if ($cpt<$nbpages)
 			{
-				if ($cpt<$nbpages-2) $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="inactive"':'data-role="button"').'>...</span></li>';
-				else if ($cpt == $nbpages-2) $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page='.($nbpages-2).$options.'">'.($nbpages - 1).'</a></li>';
-				$pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page='.($nbpages-1).$options.'">'.$nbpages.'</a></li>';
+				if ($cpt<$nbpages-2) $pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><span '.(($conf->dol_use_jmobile != 4)?'class="inactive"':'data-role="button"').'>...</span></li>';
+				else if ($cpt == $nbpages-2) $pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><a '.(($conf->dol_use_jmobile != 4)?'':'data-role="button" ').'href="'.$file.'?page='.($nbpages-2).$options.'">'.($nbpages - 1).'</a></li>';
+				$pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><a '.(($conf->dol_use_jmobile != 4)?'':'data-role="button" ').'href="'.$file.'?page='.($nbpages-1).$options.'">'.$nbpages.'</a></li>';
 			}
 		}
 		else
 		{
-			$pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="active"':'data-role="button"').'>'.($page+1)."</li>";
+			$pagelist.= '<li'.(($conf->dol_use_jmobile != 4)?' class="pagination"':'').'><span '.(($conf->dol_use_jmobile != 4)?'class="active"':'data-role="button"').'>'.($page+1)."</li>";
 		}
 	}
 	print_fleche_navigation($page, $file, $options, $nextpage, $pagelist, $morehtml, $savlimit, $totalnboflines, $hideselectlimit);		// output the div and ul for previous/last completed with page numbers into $pagelist
@@ -3315,7 +3316,7 @@ function print_fleche_navigation($page, $file, $options='', $nextpage=0, $betwee
 	}
 	if ($page > 0)
 	{
-		if (empty($conf->dol_use_jmobile)) print '<li class="pagination"><a class="paginationprevious" href="'.$file.'?page='.($page-1).$options.'"><</a></li>';
+		if (($conf->dol_use_jmobile != 4)) print '<li class="pagination"><a class="paginationprevious" href="'.$file.'?page='.($page-1).$options.'"><</a></li>';
 		else print '<li><a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$file.'?page='.($page-1).$options.'">'.$langs->trans("Previous").'</a></li>';
 	}
 	if ($betweenarrows)
@@ -3324,7 +3325,7 @@ function print_fleche_navigation($page, $file, $options='', $nextpage=0, $betwee
 	}
 	if ($nextpage > 0)
 	{
-		if (empty($conf->dol_use_jmobile)) print '<li class="pagination"><a class="paginationnext" href="'.$file.'?page='.($page+1).$options.'">></a></li>';
+		if (($conf->dol_use_jmobile != 4)) print '<li class="pagination"><a class="paginationnext" href="'.$file.'?page='.($page+1).$options.'">></a></li>';
 		else print '<li><a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$file.'?page='.($page+1).$options.'">'.$langs->trans("Next").'</a></li>';
 	}
 	if ($afterarrows)
@@ -5197,7 +5198,7 @@ function dol_osencode($str)
  *      Store also Code-Id into a cache to speed up next request on same key.
  *
  * 		@param	DoliDB	$db			Database handler
- * 		@param	string	$key		Code to get Id
+ * 		@param	string	$key		Code or Id to get Id or Code
  * 		@param	string	$tablename	Table name without prefix
  * 		@param	string	$fieldkey	Field for code
  * 		@param	string	$fieldid	Field for id
@@ -5479,7 +5480,7 @@ function printCommonFooter($zone='private')
 	// Google Analytics (need Google module)
 	if (! empty($conf->google->enabled) && ! empty($conf->global->MAIN_GOOGLE_AN_ID))
 	{
-		if (empty($conf->dol_use_jmobile))
+		if (($conf->dol_use_jmobile != 4))
 		{
 			print "\n";
 			print '<script type="text/javascript">'."\n";
diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php
index 8b017a5a9f3fae7b2eacff8344114f8eea9525f1..840687ba69a81a54b96d8835d57434217eb2a72b 100644
--- a/htdocs/core/lib/price.lib.php
+++ b/htdocs/core/lib/price.lib.php
@@ -322,7 +322,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt
 		{
 			$result[1]=round($result[1]/$conf->global->MAIN_ROUNDING_RULE_TOT, 0)*$conf->global->MAIN_ROUNDING_RULE_TOT;
 			$result[2]=round($result[2]/$conf->global->MAIN_ROUNDING_RULE_TOT, 0)*$conf->global->MAIN_ROUNDING_RULE_TOT;
-			$result[0]=price2num($result[2]-$result[0], 'MT');
+			$result[0]=price2num($result[2]-$result[1], 'MT');
 			$result[9]=round($result[9]/$conf->global->MAIN_ROUNDING_RULE_TOT, 0)*$conf->global->MAIN_ROUNDING_RULE_TOT;
 			$result[10]=round($result[10]/$conf->global->MAIN_ROUNDING_RULE_TOT, 0)*$conf->global->MAIN_ROUNDING_RULE_TOT;
 		}
diff --git a/htdocs/core/lib/security2.lib.php b/htdocs/core/lib/security2.lib.php
index dc73c70b4ba8d2f2e26c37c0c3679befcbb35429..fc05e2c91943fd7af72436ad14e23046824f695b 100644
--- a/htdocs/core/lib/security2.lib.php
+++ b/htdocs/core/lib/security2.lib.php
@@ -293,7 +293,7 @@ function dol_loginfunction($langs,$conf,$mysoc)
 	$jquerytheme = 'smoothness';
 	if (! empty($conf->global->MAIN_USE_JQUERY_THEME)) $jquerytheme = $conf->global->MAIN_USE_JQUERY_THEME;
 
-	// Set dol_hide_topmenu, dol_hide_leftmenu, dol_optimize_smallscreen, dol_nomousehover
+	// Set dol_hide_topmenu, dol_hide_leftmenu, dol_optimize_smallscreen, dol_no_mouse_hover
 	$dol_hide_topmenu=GETPOST('dol_hide_topmenu','int');
 	$dol_hide_leftmenu=GETPOST('dol_hide_leftmenu','int');
 	$dol_optimize_smallscreen=GETPOST('dol_optimize_smallscreen','int');
diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql
index 07b737c8bbf2b314dc73152a66b9487c7e1f4e8b..bb53a0dd1da2e1a4ccea8295afd46c8f25b367d2 100644
--- a/htdocs/core/menus/init_menu_auguria.sql
+++ b/htdocs/core/menus/init_menu_auguria.sql
@@ -317,15 +317,13 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4206__+MAX_llx_menu__, 'members', '', 4202__+MAX_llx_menu__, '/adherents/list.php?leftmenu=members&amp;statut=1&amp;filter=uptodate', 'MenuMembersUpToDate', 2, 'members', '$user->rights->adherent->lire', '', 2, 5, __ENTITY__);
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4207__+MAX_llx_menu__, 'members', '', 4202__+MAX_llx_menu__, '/adherents/list.php?leftmenu=members&amp;statut=0', 'MenuMembersResiliated', 2, 'members', '$user->rights->adherent->lire', '', 2, 6, __ENTITY__);
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4208__+MAX_llx_menu__, 'members', '', 4200__+MAX_llx_menu__, '/adherents/stats/geo.php?leftmenu=members&amp;mode=memberbycountry', 'MenuMembersStats', 1, 'members', '$user->rights->adherent->lire', '', 2, 7, __ENTITY__);
+insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '! empty($conf->global->MEMBER_LINK_TO_HTPASSWDFILE) && $conf->adherent->enabled', __HANDLER__, 'left', 4502__+MAX_llx_menu__, 'members', '', 4200__+MAX_llx_menu__, '/adherents/htpasswd.php?leftmenu=export', 'Filehtpasswd', 1, 'members', '$user->rights->adherent->export', '', 2, 9, __ENTITY__);
+insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4503__+MAX_llx_menu__, 'members', '', 4200__+MAX_llx_menu__, '/adherents/cartes/carte.php?leftmenu=export', 'MembersCards', 1, 'members', '$user->rights->adherent->export', '', 2, 10, __ENTITY__);
 -- Members - Subscriptions
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4300__+MAX_llx_menu__, 'members', '', 13__+MAX_llx_menu__, '/adherents/index.php?leftmenu=members&amp;mainmenu=members', 'Subscriptions', 0, 'compta', '$user->rights->adherent->cotisation->lire', '', 2, 1, __ENTITY__);
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4301__+MAX_llx_menu__, 'members', '', 4300__+MAX_llx_menu__, '/adherents/list.php?statut=-1&amp;leftmenu=accountancy&amp;mainmenu=members', 'NewSubscription', 1, 'compta', '$user->rights->adherent->cotisation->creer', '', 2, 0, __ENTITY__);
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4302__+MAX_llx_menu__, 'members', '', 4300__+MAX_llx_menu__, '/adherents/subscription/list.php?leftmenu=members', 'List', 1, 'compta', '$user->rights->adherent->cotisation->lire', '', 2, 1, __ENTITY__);
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4303__+MAX_llx_menu__, 'members', '', 4300__+MAX_llx_menu__, '/adherents/stats/index.php?leftmenu=members', 'MenuMembersStats', 1, 'members', '$user->rights->adherent->lire', '', 2, 7, __ENTITY__);
-insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4500__+MAX_llx_menu__, 'members', 'export', 13__+MAX_llx_menu__, '/adherents/index.php?leftmenu=export&amp;mainmenu=members', 'Exports', 0, 'members', '$user->rights->adherent->export', '', 2, 3, __ENTITY__);
-insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled && $conf->export->enabled', __HANDLER__, 'left', 4501__+MAX_llx_menu__, 'members', '', 4500__+MAX_llx_menu__, '/exports/index.php?leftmenu=export', 'Datas', 1, 'members', '$user->rights->adherent->export', '', 2, 0, __ENTITY__);
-insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4502__+MAX_llx_menu__, 'members', '', 4500__+MAX_llx_menu__, '/adherents/htpasswd.php?leftmenu=export', 'Filehtpasswd', 1, 'members', '$user->rights->adherent->export', '', 2, 1, __ENTITY__);
-insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4503__+MAX_llx_menu__, 'members', '', 4500__+MAX_llx_menu__, '/adherents/cartes/carte.php?leftmenu=export', 'MembersCards', 1, 'members', '$user->rights->adherent->export', '', 2, 2, __ENTITY__);
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4700__+MAX_llx_menu__, 'members', 'setup', 13__+MAX_llx_menu__, '/adherents/type.php?leftmenu=setup&amp;mainmenu=members', 'MembersTypes', 0, 'members', '$user->rights->adherent->configurer', '', 2, 5, __ENTITY__);
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4701__+MAX_llx_menu__, 'members', '', 4700__+MAX_llx_menu__, '/adherents/type.php?leftmenu=setup&amp;mainmenu=members&amp;action=create', 'New', 1, 'members', '$user->rights->adherent->configurer', '', 2, 0, __ENTITY__);
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled', __HANDLER__, 'left', 4702__+MAX_llx_menu__, 'members', '', 4700__+MAX_llx_menu__, '/adherents/type.php?leftmenu=setup&amp;mainmenu=members', 'List', 1, 'members', '$user->rights->adherent->configurer', '', 2, 1, __ENTITY__);
diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php
index cd8d5e756450a9ce47174562f023a5cdb24dcbcd..63f1a874c39fefdee198ef8a5fc943ffb0bc9c26 100644
--- a/htdocs/core/menus/standard/auguria.lib.php
+++ b/htdocs/core/menus/standard/auguria.lib.php
@@ -53,8 +53,10 @@ function print_auguria_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$m
 
 	if (empty($noout)) print_start_menu_array_auguria();
 
+	$usemenuhider = (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER));
+	
 	// Show/Hide vertical menu
-	if ($mode != 'jmobile' && $mode != 'topnb' && (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
+	if ($mode != 'jmobile' && $mode != 'topnb' && $usemenuhider && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
 	{
 	    $showmode=1;
 	    $classname = 'class="tmenu menuhider"';
@@ -246,6 +248,9 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM
 	$mainmenu=($forcemainmenu?$forcemainmenu:$_SESSION["mainmenu"]);
 	$leftmenu=($forceleftmenu?'':(empty($_SESSION["leftmenu"])?'none':$_SESSION["leftmenu"]));
 
+	$usemenuhider = (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER));
+	global $usemenuhider;
+	
 	// Show logo company
 	if (empty($noout) && ! empty($conf->global->MAIN_SHOW_LOGO) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
 	{
diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php
index e64d6318105088fef88ef4e328a6cd16716c41b6..629db07eb77dfbcaa08a264d1e5bd85123211a93 100644
--- a/htdocs/core/menus/standard/eldy.lib.php
+++ b/htdocs/core/menus/standard/eldy.lib.php
@@ -51,8 +51,10 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode
 
 	if (empty($noout)) print_start_menu_array();
 
+	$usemenuhider = (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER));
+	
 	// Show/Hide vertical menu
-	if ($mode != 'jmobile' && $mode != 'topnb' && (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
+	if ($mode != 'jmobile' && $mode != 'topnb' && $usemenuhider && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
 	{
     	$showmode=1;
     	$classname = 'class="tmenu menuhider"';
@@ -456,6 +458,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 	$mainmenu=($forcemainmenu?$forcemainmenu:$_SESSION["mainmenu"]);
 	$leftmenu=($forceleftmenu?'':(empty($_SESSION["leftmenu"])?'none':$_SESSION["leftmenu"]));
 
+	$usemenuhider = (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER));
+	
 	// Show logo company
 	if (empty($conf->global->MAIN_MENU_INVERT) && empty($noout) && ! empty($conf->global->MAIN_SHOW_LOGO) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
 	{
@@ -508,7 +512,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 
 			// Setup
 			$newmenu->add("/admin/index.php?mainmenu=home&amp;leftmenu=setup", $langs->trans("Setup"), 0, $user->admin, '', $mainmenu, 'setup');
-			if (empty($leftmenu) || $leftmenu=="setup")
+			if ($usemenuhider || empty($leftmenu) || $leftmenu=="setup")
 			{
 				$langs->load("admin");
 				$langs->load("help");
@@ -544,15 +548,15 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 
 			// System tools
 			$newmenu->add("/admin/tools/index.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("AdminTools"), 0, $user->admin, '', $mainmenu, 'admintools');
-			if (empty($leftmenu) || preg_match('/^admintools/',$leftmenu))
+			if ($usemenuhider || empty($leftmenu) || preg_match('/^admintools/',$leftmenu))
 			{
 				$langs->load("admin");
 				$langs->load("help");
 
 				$newmenu->add('/admin/system/dolibarr.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('InfoDolibarr'), 1);
-				if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/modules.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('Modules'), 2);
-				if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/triggers.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('Triggers'), 2);
-				if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/filecheck.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('FileCheck'), 2);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/modules.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('Modules'), 2);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/triggers.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('Triggers'), 2);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/filecheck.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('FileCheck'), 2);
 				$newmenu->add('/admin/system/browser.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('InfoBrowser'), 1);
 				$newmenu->add('/admin/system/os.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('InfoOS'), 1);
 				$newmenu->add('/admin/system/web.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('InfoWebServer'), 1);
@@ -587,7 +591,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 			$newmenu->add("/user/home.php?leftmenu=users", $langs->trans("MenuUsersAndGroups"), 0, $user->rights->user->user->lire, '', $mainmenu, 'users');
 			if ($user->rights->user->user->lire)
 			{
-				if (empty($leftmenu) || $leftmenu=="users")
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="users")
 				{
 					$newmenu->add("", $langs->trans("Users"), 1, $user->rights->user->user->lire || $user->admin);
 					$newmenu->add("/user/card.php?leftmenu=users&action=create", $langs->trans("NewUser"),2, $user->rights->user->user->creer || $user->admin, '', 'home');
@@ -628,11 +632,11 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				$langs->load("commercial");
 				$newmenu->add("/societe/list.php?type=p&leftmenu=prospects", $langs->trans("ListProspectsShort"), 1, $user->rights->societe->lire, '', $mainmenu, 'prospects');
 				/* no more required, there is a filter that can do more
-				if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=-1", $langs->trans("LastProspectDoNotContact"), 2, $user->rights->societe->lire);
-				if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=0", $langs->trans("LastProspectNeverContacted"), 2, $user->rights->societe->lire);
-				if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=1", $langs->trans("LastProspectToContact"), 2, $user->rights->societe->lire);
-				if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=2", $langs->trans("LastProspectContactInProcess"), 2, $user->rights->societe->lire);
-				if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=3", $langs->trans("LastProspectContactDone"), 2, $user->rights->societe->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=-1", $langs->trans("LastProspectDoNotContact"), 2, $user->rights->societe->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=0", $langs->trans("LastProspectNeverContacted"), 2, $user->rights->societe->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=1", $langs->trans("LastProspectToContact"), 2, $user->rights->societe->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=2", $langs->trans("LastProspectContactInProcess"), 2, $user->rights->societe->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=3", $langs->trans("LastProspectContactDone"), 2, $user->rights->societe->lire);
 				*/
 				$newmenu->add("/societe/soc.php?leftmenu=prospects&amp;action=create&amp;type=p", $langs->trans("MenuNewProspect"), 2, $user->rights->societe->creer);
 				//$newmenu->add("/contact/list.php?leftmenu=customers&amp;type=p", $langs->trans("Contacts"), 2, $user->rights->societe->contact->lire);
@@ -688,7 +692,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 					$newmenu->add("/categories/index.php?leftmenu=cat&amp;type=1", $langs->trans("SuppliersCategoriesShort"), 0, $user->rights->categorie->lire);
 					$newmenu->add("/categories/card.php?action=create&amp;type=1", $langs->trans("NewCategory"), 1, $user->rights->categorie->creer);
 				}
-				//if (empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
+				//if ($usemenuhider || empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
 			}
 
 		}
@@ -707,12 +711,12 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				$newmenu->add("/comm/propal/index.php?leftmenu=propals", $langs->trans("Prop"), 0, $user->rights->propale->lire, '', $mainmenu, 'propals', 100);
 				$newmenu->add("/comm/propal/card.php?action=create&amp;leftmenu=propals", $langs->trans("NewPropal"), 1, $user->rights->propale->creer);
 				$newmenu->add("/comm/propal/list.php?leftmenu=propals", $langs->trans("List"), 1, $user->rights->propale->lire);
-				if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire);
-				if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=1", $langs->trans("PropalsOpened"), 2, $user->rights->propale->lire);
-				if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=2", $langs->trans("PropalStatusSigned"), 2, $user->rights->propale->lire);
-				if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=3", $langs->trans("PropalStatusNotSigned"), 2, $user->rights->propale->lire);
-				if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=4", $langs->trans("PropalStatusBilled"), 2, $user->rights->propale->lire);
-				//if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort"), 2, $user->rights->propale->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=1", $langs->trans("PropalsOpened"), 2, $user->rights->propale->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=2", $langs->trans("PropalStatusSigned"), 2, $user->rights->propale->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=3", $langs->trans("PropalStatusNotSigned"), 2, $user->rights->propale->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=4", $langs->trans("PropalStatusBilled"), 2, $user->rights->propale->lire);
+				//if ($usemenuhider || empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort"), 2, $user->rights->propale->lire);
 				$newmenu->add("/comm/propal/stats/index.php?leftmenu=propals", $langs->trans("Statistics"), 1, $user->rights->propale->lire);
 			}
 
@@ -723,12 +727,12 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
                 $newmenu->add("/commande/index.php?leftmenu=orders", $langs->trans("CustomersOrders"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders', 200);
                 $newmenu->add("/commande/card.php?action=create&amp;leftmenu=orders", $langs->trans("NewOrder"), 1, $user->rights->commande->creer);
                 $newmenu->add("/commande/list.php?leftmenu=orders", $langs->trans("List"), 1, $user->rights->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders" && ! empty($conf->expedition->enabled)) $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=2", $langs->trans("StatusOrderSentShort"), 2, $user->rights->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=3", $langs->trans("StatusOrderDelivered"), 2, $user->rights->commande->lire);
-                //if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=4", $langs->trans("StatusOrderProcessed"), 2, $user->rights->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=-1", $langs->trans("StatusOrderCanceledShort"), 2, $user->rights->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders" && ! empty($conf->expedition->enabled)) $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=2", $langs->trans("StatusOrderSentShort"), 2, $user->rights->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=3", $langs->trans("StatusOrderDelivered"), 2, $user->rights->commande->lire);
+                //if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=4", $langs->trans("StatusOrderProcessed"), 2, $user->rights->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=-1", $langs->trans("StatusOrderCanceledShort"), 2, $user->rights->commande->lire);
                 $newmenu->add("/commande/stats/index.php?leftmenu=orders", $langs->trans("Statistics"), 1, $user->rights->commande->lire);
             }
 
@@ -740,15 +744,15 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				$newmenu->add("/fourn/commande/card.php?action=create&amp;leftmenu=orders_suppliers", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer);
 				$newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire);
 
-				if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->fournisseur->commande->lire);
-                if ((empty($leftmenu) || $leftmenu=="orders_suppliers") && empty($conf->global->SUPPLIER_ORDER_HIDE_VALIDATED)) $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->fournisseur->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=2", $langs->trans("StatusOrderApprovedShort"), 2, $user->rights->fournisseur->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=3", $langs->trans("StatusOrderOnProcessShort"), 2, $user->rights->fournisseur->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=4", $langs->trans("StatusOrderReceivedPartiallyShort"), 2, $user->rights->fournisseur->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=5", $langs->trans("StatusOrderReceivedAll"), 2, $user->rights->fournisseur->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=6,7", $langs->trans("StatusOrderCanceled"), 2, $user->rights->fournisseur->commande->lire);
-                if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=9", $langs->trans("StatusOrderRefused"), 2, $user->rights->fournisseur->commande->lire);
-                // Billed is another field. We should add instead a dedicated filter on list. if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&billed=1", $langs->trans("StatusOrderBilled"), 2, $user->rights->fournisseur->commande->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->fournisseur->commande->lire);
+                if (($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") && empty($conf->global->SUPPLIER_ORDER_HIDE_VALIDATED)) $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->fournisseur->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=2", $langs->trans("StatusOrderApprovedShort"), 2, $user->rights->fournisseur->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=3", $langs->trans("StatusOrderOnProcessShort"), 2, $user->rights->fournisseur->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=4", $langs->trans("StatusOrderReceivedPartiallyShort"), 2, $user->rights->fournisseur->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=5", $langs->trans("StatusOrderReceivedAll"), 2, $user->rights->fournisseur->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=6,7", $langs->trans("StatusOrderCanceled"), 2, $user->rights->fournisseur->commande->lire);
+                if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=9", $langs->trans("StatusOrderRefused"), 2, $user->rights->fournisseur->commande->lire);
+                // Billed is another field. We should add instead a dedicated filter on list. if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&billed=1", $langs->trans("StatusOrderBilled"), 2, $user->rights->fournisseur->commande->lire);
 
 
 				$newmenu->add("/commande/stats/index.php?leftmenu=orders_suppliers&amp;mode=supplier", $langs->trans("Statistics"), 1, $user->rights->fournisseur->commande->lire);
@@ -762,10 +766,10 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				$newmenu->add("/contrat/card.php?action=create&amp;leftmenu=contracts", $langs->trans("NewContractSubscription"), 1, $user->rights->contrat->creer);
 				$newmenu->add("/contrat/list.php?leftmenu=contracts", $langs->trans("List"), 1, $user->rights->contrat->lire);
 				$newmenu->add("/contrat/services.php?leftmenu=contracts", $langs->trans("MenuServices"), 1, $user->rights->contrat->lire);
-				if (empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&amp;mode=0", $langs->trans("MenuInactiveServices"), 2, $user->rights->contrat->lire);
-				if (empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&amp;mode=4", $langs->trans("MenuRunningServices"), 2, $user->rights->contrat->lire);
-				if (empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&amp;mode=4&amp;filter=expired", $langs->trans("MenuExpiredServices"), 2, $user->rights->contrat->lire);
-				if (empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&amp;mode=5", $langs->trans("MenuClosedServices"), 2, $user->rights->contrat->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&amp;mode=0", $langs->trans("MenuInactiveServices"), 2, $user->rights->contrat->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&amp;mode=4", $langs->trans("MenuRunningServices"), 2, $user->rights->contrat->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&amp;mode=4&amp;filter=expired", $langs->trans("MenuExpiredServices"), 2, $user->rights->contrat->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&amp;mode=5", $langs->trans("MenuClosedServices"), 2, $user->rights->contrat->lire);
 			}
 
 			// Interventions
@@ -797,7 +801,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				$newmenu->add("/compta/facture.php?action=create&leftmenu=customers_bills",$langs->trans("NewBill"),1,$user->rights->facture->creer);
 				$newmenu->add("/compta/facture/list.php?leftmenu=customers_bills",$langs->trans("List"),1,$user->rights->facture->lire);
 
-				if (empty($leftmenu) || ($leftmenu == 'customers_bills'))
+				if ($usemenuhider || empty($leftmenu) || ($leftmenu == 'customers_bills'))
 				{
 					$newmenu->add("/compta/facture/list.php?leftmenu=customers_bills&amp;search_status=0",$langs->trans("BillShortStatusDraft"),2,$user->rights->facture->lire);
 					$newmenu->add("/compta/facture/list.php?leftmenu=customers_bills&amp;search_status=1",$langs->trans("BillShortStatusNotPaid"),2,$user->rights->facture->lire);
@@ -825,7 +829,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				$newmenu->add("/fourn/facture/card.php?action=create",$langs->trans("NewBill"),1,$user->rights->fournisseur->facture->creer);
 				$newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills", $langs->trans("List"),1,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills');
 
-				if (empty($leftmenu) || ($leftmenu == 'suppliers_bills')) {
+				if ($usemenuhider || empty($leftmenu) || ($leftmenu == 'suppliers_bills')) {
 					$newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills&amp;search_status=0", $langs->trans("BillShortStatusDraft"),2,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills');
 					$newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills&amp;search_status=1", $langs->trans("BillShortStatusNotPaid"),2,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills');
 					$newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills&amp;search_status=2", $langs->trans("BillShortStatusPaid"),2,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills');
@@ -841,7 +845,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 			{
 				$langs->load("orders");
 				if (! empty($conf->facture->enabled)) $newmenu->add("/commande/list.php?leftmenu=orders&amp;viewstatut=-3&amp;billed=0", $langs->trans("MenuOrdersToBill2"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders');
-				//                  if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire);
+				//                  if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire);
 			}
 
 			// Supplier Orders to bill
@@ -851,7 +855,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				{
 					$langs->load("supplier");
 					$newmenu->add("/fourn/commande/list.php?leftmenu=orders&amp;search_status=5&amp;billed=0", $langs->trans("MenuOrdersSupplierToBill"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders');
-					//                  if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire);
+					//                  if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire);
 				}
 			}
 
@@ -861,8 +865,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 			{
 				$langs->load("donations");
 				$newmenu->add("/don/index.php?leftmenu=donations&amp;mainmenu=accountancy",$langs->trans("Donations"), 0, $user->rights->don->lire, '', $mainmenu, 'donations');
-				if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/card.php?leftmenu=donations&amp;action=create",$langs->trans("NewDonation"), 1, $user->rights->don->creer);
-				if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/list.php?leftmenu=donations",$langs->trans("List"), 1, $user->rights->don->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/card.php?leftmenu=donations&amp;action=create",$langs->trans("NewDonation"), 1, $user->rights->don->creer);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/list.php?leftmenu=donations",$langs->trans("List"), 1, $user->rights->don->lire);
 				// if ($leftmenu=="donations") $newmenu->add("/don/stats/index.php",$langs->trans("Statistics"), 1, $user->rights->don->lire);
 			}
 
@@ -878,17 +882,17 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				if (! empty($conf->tax->enabled))
 				{
 					$newmenu->add("/compta/sociales/index.php?leftmenu=tax_social",$langs->trans("MenuSocialContributions"),1,$user->rights->tax->charges->lire);
-					if (empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/card.php?leftmenu=tax_social&action=create",$langs->trans("MenuNewSocialContribution"), 2, $user->rights->tax->charges->creer);
-					if (empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/index.php?leftmenu=tax_social",$langs->trans("List"),2,$user->rights->tax->charges->lire);
-					if (empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/payments.php?leftmenu=tax_social&amp;mainmenu=accountancy&amp;mode=sconly",$langs->trans("Payments"), 2, $user->rights->tax->charges->lire);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/card.php?leftmenu=tax_social&action=create",$langs->trans("MenuNewSocialContribution"), 2, $user->rights->tax->charges->creer);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/index.php?leftmenu=tax_social",$langs->trans("List"),2,$user->rights->tax->charges->lire);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/payments.php?leftmenu=tax_social&amp;mainmenu=accountancy&amp;mode=sconly",$langs->trans("Payments"), 2, $user->rights->tax->charges->lire);
 					// VAT
 					if (empty($conf->global->TAX_DISABLE_VAT_MENUS))
 					{
 						$newmenu->add("/compta/tva/index.php?leftmenu=tax_vat&amp;mainmenu=accountancy",$langs->trans("VAT"),1,$user->rights->tax->charges->lire, '', $mainmenu, 'tax_vat');
-						if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/card.php?leftmenu=tax_vat&action=create",$langs->trans("New"),2,$user->rights->tax->charges->creer);
-						if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/reglement.php?leftmenu=tax_vat",$langs->trans("List"),2,$user->rights->tax->charges->lire);
-						if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/clients.php?leftmenu=tax_vat", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
-						if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/quadri_detail.php?leftmenu=tax_vat", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
+						if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/card.php?leftmenu=tax_vat&action=create",$langs->trans("New"),2,$user->rights->tax->charges->creer);
+						if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/reglement.php?leftmenu=tax_vat",$langs->trans("List"),2,$user->rights->tax->charges->lire);
+						if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/clients.php?leftmenu=tax_vat", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
+						if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/quadri_detail.php?leftmenu=tax_vat", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
 						global $mysoc;
 
 						//Local Taxes
@@ -896,19 +900,19 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 						if($mysoc->useLocalTax(1) && (isset($mysoc->localtax1_assuj) && $mysoc->localtax1_assuj=="1"))
 						{
 							$newmenu->add("/compta/localtax/index.php?leftmenu=tax_1_vat&amp;mainmenu=accountancy&amp;localTaxType=1",$langs->transcountry("LT1",$mysoc->country_code),1,$user->rights->tax->charges->lire);
-							if (empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/card.php?leftmenu=tax_1_vat&action=create&amp;localTaxType=1",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer);
-							if (empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/reglement.php?leftmenu=tax_1_vat&amp;localTaxType=1",$langs->trans("Payments"),2,$user->rights->tax->charges->lire);
-							if (empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_1_vat&amp;localTaxType=1", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
-							if (empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_1_vat&amp;localTaxType=1", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
+							if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/card.php?leftmenu=tax_1_vat&action=create&amp;localTaxType=1",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer);
+							if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/reglement.php?leftmenu=tax_1_vat&amp;localTaxType=1",$langs->trans("Payments"),2,$user->rights->tax->charges->lire);
+							if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_1_vat&amp;localTaxType=1", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
+							if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_1_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_1_vat&amp;localTaxType=1", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
 						}
 						//Local Taxes 2
 						if($mysoc->useLocalTax(2) && (isset($mysoc->localtax2_assuj) && $mysoc->localtax2_assuj=="1"))
 						{
 							$newmenu->add("/compta/localtax/index.php?leftmenu=tax_2_vat&amp;mainmenu=accountancy&amp;localTaxType=2",$langs->transcountry("LT2",$mysoc->country_code),1,$user->rights->tax->charges->lire);
-							if (empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/card.php?leftmenu=tax_2_vat&action=create&amp;localTaxType=2",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer);
-							if (empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/reglement.php?leftmenu=tax_2_vat&amp;localTaxType=2",$langs->trans("Payments"),2,$user->rights->tax->charges->lire);
-							if (empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_2_vat&amp;localTaxType=2", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
-							if (empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_2_vat&amp;localTaxType=2", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
+							if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/card.php?leftmenu=tax_2_vat&action=create&amp;localTaxType=2",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer);
+							if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/reglement.php?leftmenu=tax_2_vat&amp;localTaxType=2",$langs->trans("Payments"),2,$user->rights->tax->charges->lire);
+							if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_2_vat&amp;localTaxType=2", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
+							if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_2_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_2_vat&amp;localTaxType=2", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
 						}
 					}
 				}
@@ -918,8 +922,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				{
 				    $langs->load("salaries");
 				    $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary&amp;mainmenu=accountancy",$langs->trans("Salaries"),1,$user->rights->salaries->read, '', $mainmenu, 'tax_salary');
-				    if (empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/card.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->write);
-				    if (empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read);
+				    if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/card.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->write);
+				    if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read);
 				}
 
 				// Loan
@@ -927,9 +931,9 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				{
 				    $langs->load("loan");
 				    $newmenu->add("/loan/index.php?leftmenu=tax_loan&amp;mainmenu=accountancy",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan');
-				    if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write);
+				    if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write);
 				    //if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/payment/list.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read);
-				    if ((empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) && ! empty($conf->global->LOAN_SHOW_CALCULATOR)) $newmenu->add("/loan/calc.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->calc);
+				    if (($usemenuhider || empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) && ! empty($conf->global->LOAN_SHOW_CALCULATOR)) $newmenu->add("/loan/calc.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->calc);
 				}
 			}
 
@@ -942,17 +946,17 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				$newmenu->add("/accountancy/index.php?leftmenu=accountancy",$langs->trans("MenuAccountancy"), 0, $permtoshowmenu, '', $mainmenu, 'accountancy');
 
 				// Chart of account
-				if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/index.php?leftmenu=accountancy_admin", $langs->trans("Setup"),1,$user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin', 1);
-				if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/accountmodel.php?id=31&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Pcg_version"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chartmodel', 10);
-				if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Chartofaccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chart', 20);
-				if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/defaultaccounts.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuDefaultAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 40);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/index.php?leftmenu=accountancy_admin", $langs->trans("Setup"),1,$user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin', 1);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/accountmodel.php?id=31&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Pcg_version"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chartmodel', 10);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Chartofaccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chart', 20);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/defaultaccounts.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuDefaultAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 40);
 				if (! empty($conf->facture->enabled) || ! empty($conf->fournisseur->enabled)) 
 				{
-				    if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/dict.php?id=10&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuVatAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 30);
+				    if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/dict.php?id=10&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuVatAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 30);
 				}
 				if (! empty($conf->tax->enabled)) 
 				{
-				    if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/dict.php?id=7&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuTaxAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 30);
+				    if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/dict.php?id=7&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuTaxAccounts"),2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 30);
 				}
 				if (! empty($conf->expensereport->enabled)) 
 				{
@@ -960,38 +964,38 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				}
 				if (! empty($conf->loan->enabled)) 
 				{
-				    if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/loan.php?mainmenu=accountancy&amp;leftmenu=accountancy_admin", $langs->trans("MenuLoanAccounts"), 2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_loan', 45);
+				    if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/admin/loan.php?mainmenu=accountancy&amp;leftmenu=accountancy_admin", $langs->trans("MenuLoanAccounts"), 2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_loan', 45);
 				}
 				/* not required yet, already supported by default account
 				if (! empty($conf->don->enabled)) 
 				{
 				    if (preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/don/admin/donation.php?from=accountancy&mainmenu=accountancy&amp;leftmenu=accountancy_admin", $langs->trans("MenuDonationAccounts"), 2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_donation', 47);
 				}*/
-				if (empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/productaccount.php?mainmenu=accountancy&amp;leftmenu=accountancy_admin", $langs->trans("MenuProductsAccounts"), 2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_product', 50);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/',$leftmenu)) $newmenu->add("/accountancy/admin/productaccount.php?mainmenu=accountancy&amp;leftmenu=accountancy_admin", $langs->trans("MenuProductsAccounts"), 2, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_product', 50);
 				
 				// Binding
-				if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/customer/index.php?leftmenu=accountancy_dispatch_customer&amp;mainmenu=accountancy",$langs->trans("CustomersVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_customer');
-			    if (empty($leftmenu) || preg_match('/accountancy_dispatch_customer/',$leftmenu)) $newmenu->add("/accountancy/customer/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_customer",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write);
-				if (empty($leftmenu) || preg_match('/accountancy_dispatch_customer/',$leftmenu)) $newmenu->add("/accountancy/customer/lines.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_customer",$langs->trans("Binded"),2,$user->rights->accounting->bind->write);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/customer/index.php?leftmenu=accountancy_dispatch_customer&amp;mainmenu=accountancy",$langs->trans("CustomersVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_customer');
+			    if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_customer/',$leftmenu)) $newmenu->add("/accountancy/customer/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_customer",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_customer/',$leftmenu)) $newmenu->add("/accountancy/customer/lines.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_customer",$langs->trans("Binded"),2,$user->rights->accounting->bind->write);
 
 				if (! empty($conf->supplier_invoice->enabled))
 				{
-					if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/supplier/index.php?leftmenu=accountancy_dispatch_supplier&amp;mainmenu=accountancy",$langs->trans("SuppliersVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_supplier');
-					if (empty($leftmenu) || preg_match('/accountancy_dispatch_supplier/',$leftmenu)) $newmenu->add("/accountancy/supplier/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_supplier",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write);
-					if (empty($leftmenu) || preg_match('/accountancy_dispatch_supplier/',$leftmenu)) $newmenu->add("/accountancy/supplier/lines.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_supplier",$langs->trans("Binded"),2,$user->rights->accounting->bind->write);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/supplier/index.php?leftmenu=accountancy_dispatch_supplier&amp;mainmenu=accountancy",$langs->trans("SuppliersVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_supplier');
+					if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_supplier/',$leftmenu)) $newmenu->add("/accountancy/supplier/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_supplier",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_supplier/',$leftmenu)) $newmenu->add("/accountancy/supplier/lines.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_supplier",$langs->trans("Binded"),2,$user->rights->accounting->bind->write);
 				}
 
 				if (! empty($conf->expensereport->enabled))
 				{
-					if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/expensereport/index.php?leftmenu=accountancy_dispatch_expensereport&amp;mainmenu=accountancy",$langs->trans("ExpenseReportsVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_expensereport');
-					if (empty($leftmenu) || preg_match('/accountancy_dispatch_expensereport/',$leftmenu)) $newmenu->add("/accountancy/expensereport/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_expensereport",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write);
-					if (empty($leftmenu) || preg_match('/accountancy_dispatch_expensereport/',$leftmenu)) $newmenu->add("/accountancy/expensereport/lines.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_expensereport",$langs->trans("Binded"),2,$user->rights->accounting->bind->write);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/expensereport/index.php?leftmenu=accountancy_dispatch_expensereport&amp;mainmenu=accountancy",$langs->trans("ExpenseReportsVentilation"),1,$user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_expensereport');
+					if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_expensereport/',$leftmenu)) $newmenu->add("/accountancy/expensereport/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_expensereport",$langs->trans("ToBind"),2,$user->rights->accounting->bind->write);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_expensereport/',$leftmenu)) $newmenu->add("/accountancy/expensereport/lines.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_expensereport",$langs->trans("Binded"),2,$user->rights->accounting->bind->write);
 				}
 
 				// Journals
 				if(! empty($conf->accounting->enabled) && ! empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy')
 				{
-					if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add('',$langs->trans("Journalization"),1,$user->rights->accounting->comptarapport->lire);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add('',$langs->trans("Journalization"),1,$user->rights->accounting->comptarapport->lire);
 
 					$sql = "SELECT rowid, label, accountancy_journal";
 					$sql.= " FROM ".MAIN_DB_PREFIX."bank_account";
@@ -1009,7 +1013,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 						while ($i < $numr)
 						{
 							$objp = $db->fetch_object($resql);
-							if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add('/accountancy/journal/bankjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_account='.$objp->rowid,$langs->trans("Journal").' - '.dol_trunc($objp->label,10),2,$user->rights->accounting->comptarapport->lire);
+							if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add('/accountancy/journal/bankjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_account='.$objp->rowid,$langs->trans("Journal").' - '.dol_trunc($objp->label,10),2,$user->rights->accounting->comptarapport->lire);
 							$i++;
 						}
 					}
@@ -1017,34 +1021,34 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 					$db->free($resql);
 
 					// Add other journal
-					if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/sellsjournal.php?mainmenu=accountancy&amp;leftmenu=accountancy_journal",$langs->trans("SellsJournal"),2,$user->rights->accounting->comptarapport->lire);
-					if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/purchasesjournal.php?mainmenu=accountancy&amp;leftmenu=accountancy_journal",$langs->trans("PurchasesJournal"),2,$user->rights->accounting->comptarapport->lire);
-					if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/expensereportsjournal.php?mainmenu=accountancy&amp;leftmenu=accountancy_journal",$langs->trans("ExpenseReportsJournal"),2,$user->rights->accounting->comptarapport->lire);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/sellsjournal.php?mainmenu=accountancy&amp;leftmenu=accountancy_journal",$langs->trans("SellsJournal"),2,$user->rights->accounting->comptarapport->lire);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/purchasesjournal.php?mainmenu=accountancy&amp;leftmenu=accountancy_journal",$langs->trans("PurchasesJournal"),2,$user->rights->accounting->comptarapport->lire);
+					if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/journal/expensereportsjournal.php?mainmenu=accountancy&amp;leftmenu=accountancy_journal",$langs->trans("ExpenseReportsJournal"),2,$user->rights->accounting->comptarapport->lire);
 				}
 
 				// General Ledger
-				if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/bookkeeping/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_generalledger",$langs->trans("Bookkeeping"),1,$user->rights->accounting->mouvements->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/bookkeeping/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_generalledger",$langs->trans("Bookkeeping"),1,$user->rights->accounting->mouvements->lire);
 
 				// Balance
-				if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/bookkeeping/balance.php?mainmenu=accountancy&amp;leftmenu=accountancy_balance",$langs->trans("AccountBalance"),1,$user->rights->accounting->mouvements->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/bookkeeping/balance.php?mainmenu=accountancy&amp;leftmenu=accountancy_balance",$langs->trans("AccountBalance"),1,$user->rights->accounting->mouvements->lire);
 
 				// Reports
 				$langs->load("compta");
 
-				if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/report/result.php?mainmenu=accountancy&amp;leftmenu=accountancy_report",$langs->trans("Reportings"),1,$user->rights->accounting->comptarapport->lire, '', $mainmenu, 'ca');
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/report/result.php?mainmenu=accountancy&amp;leftmenu=accountancy_report",$langs->trans("Reportings"),1,$user->rights->accounting->comptarapport->lire, '', $mainmenu, 'ca');
 
-				if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/accountancy/report/result.php?leftmenu=accountancy_report",$langs->trans("ReportInOut"),2,$user->rights->accounting->comptarapport->lire);
-				if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/resultat/index.php?leftmenu=accountancy_report",$langs->trans("ByExpenseIncome"),3,$user->rights->accounting->comptarapport->lire);
-				if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/resultat/clientfourn.php?leftmenu=accountancy_report",$langs->trans("ByCompanies"),3,$user->rights->accounting->comptarapport->lire);
-				if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/index.php?leftmenu=accountancy_report",$langs->trans("ReportTurnover"),2,$user->rights->accounting->comptarapport->lire);
-				if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/casoc.php?leftmenu=accountancy_report",$langs->trans("ByCompanies"),3,$user->rights->accounting->comptarapport->lire);
-				if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/cabyuser.php?leftmenu=accountancy_report",$langs->trans("ByUsers"),3,$user->rights->accounting->comptarapport->lire);
-				if (empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=accountancy_report", $langs->trans("ByProductsAndServices"),3,$user->rights->accounting->comptarapport->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/accountancy/report/result.php?leftmenu=accountancy_report",$langs->trans("ReportInOut"),2,$user->rights->accounting->comptarapport->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/resultat/index.php?leftmenu=accountancy_report",$langs->trans("ByExpenseIncome"),3,$user->rights->accounting->comptarapport->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/resultat/clientfourn.php?leftmenu=accountancy_report",$langs->trans("ByCompanies"),3,$user->rights->accounting->comptarapport->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/index.php?leftmenu=accountancy_report",$langs->trans("ReportTurnover"),2,$user->rights->accounting->comptarapport->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/casoc.php?leftmenu=accountancy_report",$langs->trans("ByCompanies"),3,$user->rights->accounting->comptarapport->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/cabyuser.php?leftmenu=accountancy_report",$langs->trans("ByUsers"),3,$user->rights->accounting->comptarapport->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/',$leftmenu)) $newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=accountancy_report", $langs->trans("ByProductsAndServices"),3,$user->rights->accounting->comptarapport->lire);
 
 				// Fiscal year
 				if ($conf->global->MAIN_FEATURES_LEVEL > 0)     // Not yet used. In a future will lock some periods.
 				{
-				    if (empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/admin/fiscalyear.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("FiscalPeriod"),1,$user->rights->accounting->fiscalyear, '', $mainmenu, 'fiscalyear');
+				    if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy/',$leftmenu)) $newmenu->add("/accountancy/admin/fiscalyear.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("FiscalPeriod"),1,$user->rights->accounting->fiscalyear, '', $mainmenu, 'fiscalyear');
 				}
 			}
 
@@ -1056,29 +1060,29 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				// Bilan, resultats
 				$newmenu->add("/compta/resultat/index.php?leftmenu=report&amp;mainmenu=accountancy",$langs->trans("Reportings"),0,$user->rights->compta->resultat->lire, '', $mainmenu, 'ca');
 
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/index.php?leftmenu=report",$langs->trans("ReportInOut"),1,$user->rights->compta->resultat->lire);
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/clientfourn.php?leftmenu=report",$langs->trans("ByCompanies"),2,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/index.php?leftmenu=report",$langs->trans("ReportInOut"),1,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/clientfourn.php?leftmenu=report",$langs->trans("ByCompanies"),2,$user->rights->compta->resultat->lire);
 				/* On verra ca avec module compabilite expert
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/compteres.php?leftmenu=report","Compte de resultat",2,$user->rights->compta->resultat->lire);
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/bilan.php?leftmenu=report","Bilan",2,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/compteres.php?leftmenu=report","Compte de resultat",2,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/resultat/bilan.php?leftmenu=report","Bilan",2,$user->rights->compta->resultat->lire);
 				*/
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/index.php?leftmenu=report",$langs->trans("ReportTurnover"),1,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/index.php?leftmenu=report",$langs->trans("ReportTurnover"),1,$user->rights->compta->resultat->lire);
 
 				/*
-				 if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cumul.php?leftmenu=report","Cumule",2,$user->rights->compta->resultat->lire);
+				 if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cumul.php?leftmenu=report","Cumule",2,$user->rights->compta->resultat->lire);
 				if (! empty($conf->propal->enabled)) {
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/prev.php?leftmenu=report","Previsionnel",2,$user->rights->compta->resultat->lire);
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/comp.php?leftmenu=report","Transforme",2,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/prev.php?leftmenu=report","Previsionnel",2,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/comp.php?leftmenu=report","Transforme",2,$user->rights->compta->resultat->lire);
 				}
 				*/
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/casoc.php?leftmenu=report",$langs->trans("ByCompanies"),2,$user->rights->compta->resultat->lire);
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cabyuser.php?leftmenu=report",$langs->trans("ByUsers"),2,$user->rights->compta->resultat->lire);
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=report", $langs->trans("ByProductsAndServices"),2,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/casoc.php?leftmenu=report",$langs->trans("ByCompanies"),2,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cabyuser.php?leftmenu=report",$langs->trans("ByUsers"),2,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=report", $langs->trans("ByProductsAndServices"),2,$user->rights->compta->resultat->lire);
 
 				// Journaux
 				//if ($leftmenu=="ca") $newmenu->add("/compta/journaux/index.php?leftmenu=ca",$langs->trans("Journaux"),1,$user->rights->compta->resultat->lire||$user->rights->accounting->comptarapport->lire);
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/journal/sellsjournal.php?leftmenu=report",$langs->trans("SellsJournal"),1,$user->rights->compta->resultat->lire);
-				if (empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/journal/purchasesjournal.php?leftmenu=report",$langs->trans("PurchasesJournal"),1,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/journal/sellsjournal.php?leftmenu=report",$langs->trans("SellsJournal"),1,$user->rights->compta->resultat->lire);
+				if ($usemenuhider || empty($leftmenu) || preg_match('/report/',$leftmenu)) $newmenu->add("/compta/journal/purchasesjournal.php?leftmenu=report",$langs->trans("PurchasesJournal"),1,$user->rights->compta->resultat->lire);
 			}
 		}
 
@@ -1118,17 +1122,17 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 			{
 				$newmenu->add("/compta/prelevement/index.php?leftmenu=withdraw&amp;mainmenu=bank",$langs->trans("StandingOrders"),0,$user->rights->prelevement->bons->lire, '', $mainmenu, 'withdraw');
 
-				//if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/demandes.php?status=0&amp;mainmenu=bank",$langs->trans("StandingOrderToProcess"),1,$user->rights->prelevement->bons->lire);
+				//if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/demandes.php?status=0&amp;mainmenu=bank",$langs->trans("StandingOrderToProcess"),1,$user->rights->prelevement->bons->lire);
 
 				if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/create.php?mainmenu=bank",$langs->trans("NewStandingOrder"),1,$user->rights->prelevement->bons->creer);
 
 
-				if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/bons.php?mainmenu=bank",$langs->trans("WithdrawalsReceipts"),1,$user->rights->prelevement->bons->lire);
-				if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/list.php?mainmenu=bank",$langs->trans("WithdrawalsLines"),1,$user->rights->prelevement->bons->lire);
-				if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/rejets.php?mainmenu=bank",$langs->trans("Rejects"),1,$user->rights->prelevement->bons->lire);
-				if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/stats.php?mainmenu=bank",$langs->trans("Statistics"),1,$user->rights->prelevement->bons->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/bons.php?mainmenu=bank",$langs->trans("WithdrawalsReceipts"),1,$user->rights->prelevement->bons->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/list.php?mainmenu=bank",$langs->trans("WithdrawalsLines"),1,$user->rights->prelevement->bons->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/rejets.php?mainmenu=bank",$langs->trans("Rejects"),1,$user->rights->prelevement->bons->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/stats.php?mainmenu=bank",$langs->trans("Statistics"),1,$user->rights->prelevement->bons->lire);
 
-				//if (empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/config.php",$langs->trans("Setup"),1,$user->rights->prelevement->bons->configurer);
+				//if ($usemenuhider || empty($leftmenu) || $leftmenu=="withdraw") $newmenu->add("/compta/prelevement/config.php",$langs->trans("Setup"),1,$user->rights->prelevement->bons->configurer);
 			}
 
 			// Gestion cheques
@@ -1186,7 +1190,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				$langs->load("categories");
 				$newmenu->add("/categories/index.php?leftmenu=cat&amp;type=0", $langs->trans("Categories"), 0, $user->rights->categorie->lire, '', $mainmenu, 'cat');
 				$newmenu->add("/categories/card.php?action=create&amp;type=0", $langs->trans("NewCategory"), 1, $user->rights->categorie->creer);
-				//if (empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
+				//if ($usemenuhider || empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
 			}
 
 			// Warehouse
@@ -1209,9 +1213,9 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				$newmenu->add("/expedition/index.php?leftmenu=sendings", $langs->trans("Shipments"), 0, $user->rights->expedition->lire, '', $mainmenu, 'sendings');
 				$newmenu->add("/expedition/card.php?action=create2&amp;leftmenu=sendings", $langs->trans("NewSending"), 1, $user->rights->expedition->creer);
 				$newmenu->add("/expedition/list.php?leftmenu=sendings", $langs->trans("List"), 1, $user->rights->expedition->lire);
-				if (empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=0", $langs->trans("StatusSendingDraftShort"), 2, $user->rights->expedition->lire);
-				if (empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=1", $langs->trans("StatusSendingValidatedShort"), 2, $user->rights->expedition->lire);
-				if (empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=2", $langs->trans("StatusSendingProcessedShort"), 2, $user->rights->expedition->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=0", $langs->trans("StatusSendingDraftShort"), 2, $user->rights->expedition->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=1", $langs->trans("StatusSendingValidatedShort"), 2, $user->rights->expedition->lire);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="sendings") $newmenu->add("/expedition/list.php?leftmenu=sendings&viewstatut=2", $langs->trans("StatusSendingProcessedShort"), 2, $user->rights->expedition->lire);
 				$newmenu->add("/expedition/stats/index.php?leftmenu=sendings", $langs->trans("Statistics"), 1, $user->rights->expedition->lire);
 			}
 
@@ -1258,7 +1262,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 					$langs->load("categories");
 					$newmenu->add("/categories/index.php?leftmenu=cat&amp;type=6", $langs->trans("Categories"), 0, $user->rights->categorie->lire, '', $mainmenu, 'cat');
 					$newmenu->add("/categories/card.php?action=create&amp;type=6", $langs->trans("NewCategory"), 1, $user->rights->categorie->creer);
-					//if (empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
+					//if ($usemenuhider || empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
 				}
 			}
 		}
@@ -1364,7 +1368,9 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				$newmenu->add("/adherents/list.php?leftmenu=members&amp;statut=1&amp;filter=outofdate",$langs->trans("MenuMembersNotUpToDate"),2,$user->rights->adherent->lire);
 				$newmenu->add("/adherents/list.php?leftmenu=members&amp;statut=0",$langs->trans("MenuMembersResiliated"),2,$user->rights->adherent->lire);
 				$newmenu->add("/adherents/stats/index.php?leftmenu=members",$langs->trans("MenuMembersStats"),1,$user->rights->adherent->lire);
-
+				if (! empty($conf->global->MEMBER_LINK_TO_HTPASSWDFILE) && ($usemenuhider || empty($leftmenu) || $leftmenu=="export")) $newmenu->add("/adherents/htpasswd.php?leftmenu=export",$langs->trans("Filehtpasswd"),1,$user->rights->adherent->export);
+				if ($usemenuhider || empty($leftmenu) || $leftmenu=="export") $newmenu->add("/adherents/cartes/carte.php?leftmenu=export",$langs->trans("MembersCards"),1,$user->rights->adherent->export);
+				
 				$newmenu->add("/adherents/index.php?leftmenu=members&amp;mainmenu=members",$langs->trans("Subscriptions"),0,$user->rights->adherent->cotisation->lire);
 				$newmenu->add("/adherents/list.php?leftmenu=members&amp;statut=-1,1&amp;mainmenu=members",$langs->trans("NewSubscription"),1,$user->rights->adherent->cotisation->creer);
 				$newmenu->add("/adherents/subscription/list.php?leftmenu=members",$langs->trans("List"),1,$user->rights->adherent->cotisation->lire);
@@ -1376,13 +1382,11 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 					$langs->load("categories");
 					$newmenu->add("/categories/index.php?leftmenu=cat&amp;type=3", $langs->trans("Categories"), 0, $user->rights->categorie->lire, '', $mainmenu, 'cat');
 					$newmenu->add("/categories/card.php?action=create&amp;type=3", $langs->trans("NewCategory"), 1, $user->rights->categorie->creer);
-					//if (empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
+					//if ($usemenuhider || empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
 				}
 
-				$newmenu->add("/adherents/index.php?leftmenu=export&amp;mainmenu=members",$langs->trans("Exports"),0,$user->rights->adherent->export, '', $mainmenu, 'export');
-				if (! empty($conf->export->enabled) && (empty($leftmenu) || $leftmenu=="export")) $newmenu->add("/exports/index.php?leftmenu=export",$langs->trans("Datas"),1,$user->rights->adherent->export);
-				if (empty($leftmenu) || $leftmenu=="export") $newmenu->add("/adherents/htpasswd.php?leftmenu=export",$langs->trans("Filehtpasswd"),1,$user->rights->adherent->export);
-				if (empty($leftmenu) || $leftmenu=="export") $newmenu->add("/adherents/cartes/carte.php?leftmenu=export",$langs->trans("MembersCards"),1,$user->rights->adherent->export);
+				//$newmenu->add("/adherents/index.php?leftmenu=export&amp;mainmenu=members",$langs->trans("Tools"),0,$user->rights->adherent->export, '', $mainmenu, 'export');
+				//if (! empty($conf->export->enabled) && ($usemenuhider || empty($leftmenu) || $leftmenu=="export")) $newmenu->add("/exports/index.php?leftmenu=export",$langs->trans("Datas"),1,$user->rights->adherent->export);
 
 				// Type
 				$newmenu->add("/adherents/type.php?leftmenu=setup&amp;mainmenu=members",$langs->trans("MembersTypes"),0,$user->rights->adherent->configurer, '', $mainmenu, 'setup');
diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php
index 7420e3474827d93dbef80b2c09f3a7672a832085..dab925eef1df6be114e21674049a1676da5ee743 100644
--- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php
+++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php
@@ -580,8 +580,6 @@ class pdf_rouget extends ModelePdfExpedition
 			$this->error=$langs->transnoentities("ErrorConstantNotDefined","EXP_OUTPUTDIR");
 			return 0;
 		}
-		$this->error=$langs->transnoentities("ErrorUnknown");
-		return 0;   // Erreur par defaut
 	}
 
 	/**
@@ -790,7 +788,7 @@ class pdf_rouget extends ModelePdfExpedition
 		// Show Draft Watermark
 		if($object->statut==0 && (! empty($conf->global->SHIPPING_DRAFT_WATERMARK)) )
 		{
-            pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->SHIPPING_DRAFT_WATERMARK);
+            		pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->SHIPPING_DRAFT_WATERMARK);
 		}
 
 		//Prepare la suite
@@ -861,11 +859,11 @@ class pdf_rouget extends ModelePdfExpedition
 		$pdf->SetTextColor(0,0,60);
 		$title=$outputlangs->transnoentities("SendingSheet");
 		$pdf->MultiCell($w, 4, $title, '', 'R');
-        $posy+=1;
 
 		$pdf->SetFont('','', $default_font_size + 1);
 
-		$posy+=4;
+		$posy+=5;
+		
 		$pdf->SetXY($posx,$posy);
 		$pdf->SetTextColor(0,0,60);
 		$pdf->MultiCell($w, 4, $outputlangs->transnoentities("RefSending") ." : ".$object->ref, '', 'R');
@@ -873,10 +871,10 @@ class pdf_rouget extends ModelePdfExpedition
 		// Date planned delivery
 		if (! empty($object->date_delivery))
 		{
-    		$posy+=4;
-    		$pdf->SetXY($posx,$posy);
-    		$pdf->SetTextColor(0,0,60);
-    		$pdf->MultiCell($w, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"day",false,$outputlangs,true), '', 'R');
+    			$posy+=4;
+    			$pdf->SetXY($posx,$posy);
+    			$pdf->SetTextColor(0,0,60);
+    			$pdf->MultiCell($w, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"day",false,$outputlangs,true), '', 'R');
 		}
 		
 		if (! empty($object->thirdparty->code_client))
@@ -889,11 +887,10 @@ class pdf_rouget extends ModelePdfExpedition
 
 
 		$pdf->SetFont('','', $default_font_size + 3);
-	    $Yoff=25;
-
-	    // Add list of linked orders
+		$Yoff=25;
 
-	    $origin 	= $object->origin;
+		// Add list of linked orders
+		$origin 	= $object->origin;
 		$origin_id 	= $object->origin_id;
 
 	    // TODO move to external function
diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
index 0c57cf644bc029195583e86920a7535b15109ffa..1701f82c47b274447150e2c42bf85d18b9cac142 100644
--- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
+++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
@@ -691,8 +691,6 @@ class pdf_crabe extends ModelePDFFactures
 			$this->error=$langs->transnoentities("ErrorConstantNotDefined","FAC_OUTPUTDIR");
 			return 0;
 		}
-		$this->error=$langs->transnoentities("ErrorUnknown");
-		return 0;   // Erreur par defaut
 	}
 
 
diff --git a/htdocs/core/modules/modAccounting.class.php b/htdocs/core/modules/modAccounting.class.php
index 4316bf6c13efc09543c2cc61670c085dc8993628..0e3dedb0109fe451e6526cdfb60e161de35a38bf 100644
--- a/htdocs/core/modules/modAccounting.class.php
+++ b/htdocs/core/modules/modAccounting.class.php
@@ -143,11 +143,6 @@ class modAccounting extends DolibarrModules
 				"chaine",
 				""
 		);
-		$this->const[12] = array(
-				"ACCOUNTING_LIMIT_LIST_VENTILATION",
-				"chaine",
-				"50"
-		);
 		$this->const[13] = array(
 				"ACCOUNTING_LIST_SORT_VENTILATION_TODO",
 				"yesno",
diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php
index ea0456bc3ff8f2bf8c6ba1d5b425736b5d2e5fd2..0a4f5d98c46f004cb1782bfc95437e7fc4847b90 100644
--- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php
+++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php
@@ -2,6 +2,7 @@
 /* Copyright (C) 2005-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005-2009 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2013      Philippe Grand       <philippe.grand@atoo-net.com>
+ * Copyright (C) 2016      Alexandre Spangaro   <aspangaro@zendsi.com>
  *
  * 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,14 +22,15 @@
 /**
  *    	\file       htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php
  *		\ingroup    supplier invoice
- *		\brief      File containing the Cactus Class of numbering models of suppliers invoices references
+ *		\brief      File containing class for the numbering module Cactus
  */
 
 require_once DOL_DOCUMENT_ROOT .'/core/modules/supplier_invoice/modules_facturefournisseur.php';
 
 
 /**
- *	Cactus Class of numbering models of suppliers invoices references
+ *  \class mod_facture_fournisseur_cactus
+ *  \brief Cactus Class of numbering models of suppliers invoices references
  */
 class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices
 {
@@ -36,6 +38,8 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices
 	var $error = '';
 	var $nom = 'Cactus';
 	var $prefixinvoice='SI';
+	var $prefixcreditnote='SA';
+	var $prefixdeposit='SD';
 
 
     /**
@@ -46,7 +50,8 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices
     function info()
     {
     	global $langs;
-      	return $langs->trans("SimpleNumRefModelDesc",$this->prefixinvoice);
+		$langs->load("bills");
+      	return $langs->trans("CactusNumRefModelDesc1",$this->prefixinvoice,$this->prefixcreditnote,$this->prefixdeposit);
     }
 
 
@@ -61,45 +66,90 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices
     }
 
 
-    /**
-     * 	Tests if the numbers already in force in the database do not cause conflicts that would prevent this numbering.
-     *
-     *  @return     boolean     false if conflict, true if ok
-     */
-    function canBeActivated()
-    {
-    	global $conf,$langs,$db;
+	/**
+	 * 	Tests if the numbers already in force in the database do not cause conflicts that would prevent this numbering.
+	 *
+	 *  @return     boolean     false if conflict, true if ok
+	 */
+	function canBeActivated()
+	{
+		global $conf,$langs,$db;
+
+		$langs->load("bills");
 
-        $siyymm=''; $max='';
+		// Check invoice num
+		$siyymm=''; $max='';
 
 		$posindice=8;
 		$sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
-        $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn";
+		$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn";
 		$sql.= " WHERE ref LIKE '".$this->prefixinvoice."____-%'";
-        $sql.= " AND entity = ".$conf->entity;
-        $resql=$db->query($sql);
-        if ($resql)
-        {
-            $row = $db->fetch_row($resql);
-            if ($row) { $siyymm = substr($row[0],0,6); $max=$row[0]; }
-        }
-        if (! $siyymm || preg_match('/'.$this->prefixinvoice.'[0-9][0-9][0-9][0-9]/i',$siyymm))
-        {
-            return true;
-        }
-        else
-        {
+		$sql.= " AND entity = ".$conf->entity;
+		$resql=$db->query($sql);
+		if ($resql)
+		{
+			$row = $db->fetch_row($resql);
+			if ($row) { $siyymm = substr($row[0],0,6); $max=$row[0]; }
+		}
+		if (! $siyymm || preg_match('/'.$this->prefixinvoice.'[0-9][0-9][0-9][0-9]/i',$siyymm))
+		{
+			return true;
+		}
+		else
+		{
 			$langs->load("errors");
 			$this->error=$langs->trans('ErrorNumRefModel',$max);
-            return false;
-        }
+			return false;
+		}
+
+		// Check credit note num
+		$siyymm='';
+
+		$posindice=8;
+		$sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";	// This is standard SQL
+		$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn";
+		$sql.= " WHERE ref LIKE '".$this->prefixcreditnote."____-%'";
+		$sql.= " AND entity = ".$conf->entity;
+
+		$resql=$db->query($sql);
+		if ($resql)
+		{
+			$row = $db->fetch_row($resql);
+			if ($row) { $siyymm = substr($row[0],0,6); $max=$row[0]; }
+		}
+		if ($siyymm && ! preg_match('/'.$this->prefixcreditnote.'[0-9][0-9][0-9][0-9]/i',$siyymm))
+		{
+			$this->error=$langs->trans('ErrorNumRefModel',$max);
+			return false;
+		}
+
+		// Check deposit num
+		$siyymm='';
+
+		$posindice=8;
+		$sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";	// This is standard SQL
+		$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn";
+		$sql.= " WHERE ref LIKE '".$this->prefixdeposit."____-%'";
+		$sql.= " AND entity = ".$conf->entity;
+
+		$resql=$db->query($sql);
+		if ($resql)
+		{
+			$row = $db->fetch_row($resql);
+			if ($row) { $siyymm = substr($row[0],0,6); $max=$row[0]; }
+		}
+		if ($siyymm && ! preg_match('/'.$this->prefixdeposit.'[0-9][0-9][0-9][0-9]/i',$siyymm))
+		{
+			$this->error=$langs->trans('ErrorNumRefModel',$max);
+			return false;
+		}
     }
 
     /**
      * Return next value
 	 *
 	 * @param	Societe		$objsoc     Object third party
-	 * @param  	Object		$object		Object
+	 * @param  	Object		$object		Object invoice
      * @param   string		$mode       'next' for next value or 'last' for last value
 	 * @return 	string      			Value if OK, 0 if KO
      */
@@ -108,6 +158,7 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices
         global $db,$conf;
 
         if ($object->type == 2) $prefix=$this->prefixcreditnote;
+        else if ($facture->type == 3) $prefix=$this->prefixdeposit;
         else $prefix=$this->prefixinvoice;
 
         // D'abord on recupere la valeur max
diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php
index ba31d9798640fa7cb5337c377c390ade9017db36..b7a3801a9cda49dd7712053325d677804d35dc9c 100644
--- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php
+++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php
@@ -3,7 +3,8 @@
  * Copyright (C) 2004-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005-2009 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2013      Philippe Grand       <philippe.grand@atoo-net.com>
- * Copyright (C) 2013 	   Juanjo Menent        <jmenent@2byte.es>
+ * Copyright (C) 2013      Juanjo Menent        <jmenent@2byte.es>
+ * Copyright (C) 2016      Alexandre Spangaro   <aspangaro@zendsi.com>
  *
  * 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
@@ -59,6 +60,9 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices
 		$texte.= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
 		$texte.= '<input type="hidden" name="action" value="updateMask">';
 		$texte.= '<input type="hidden" name="maskconstinvoice" value="SUPPLIER_INVOICE_TULIP_MASK">';
+        $texte.= '<input type="hidden" name="maskconstreplacement" value="SUPPLIER_REPLACEMENT_TULIP_MASK">';
+        $texte.= '<input type="hidden" name="maskconstcredit" value="SUPPLIER_CREDIT_TULIP_MASK">';
+		$texte.= '<input type="hidden" name="maskconstdeposit" value="SUPPLIER_DEPOSIT_TULIP_MASK">';
 		$texte.= '<table class="nobordernopadding" width="100%">';
 
 		$tooltip=$langs->trans("GenericMaskCodes",$langs->transnoentities("Invoice"),$langs->transnoentities("Invoice"));
@@ -68,13 +72,28 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices
 		$tooltip.=$langs->trans("GenericMaskCodes5");
 
 		// Parametrage du prefix
-		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
+		$texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceStandard").'):</td>';
 		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskinvoice" value="'.$conf->global->SUPPLIER_INVOICE_TULIP_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
 		$texte.= '</tr>';
 
+		// Parametrage du prefix des replacement
+		$texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceReplacement").'):</td>';
+		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskreplacement" value="'.$conf->global->SUPPLIER_REPLACEMENT_TULIP_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '</tr>';
+
+		// Parametrage du prefix des avoirs
+		$texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceAvoir").'):</td>';
+		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskcredit" value="'.$conf->global->SUPPLIER_CREDIT_TULIP_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '</tr>';
+
+		// Parametrage du prefix des acomptes
+		$texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceDeposit").'):</td>';
+		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskdeposit" value="'.$conf->global->SUPPLIER_DEPOSIT_TULIP_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '</tr>';
+
 		$texte.= '</table>';
 		$texte.= '</form>';
 
@@ -106,7 +125,7 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices
 	 * Return next value
 	 *
 	 * @param	Societe		$objsoc     Object third party
-	 * @param  	Object	    $object		Object
+	 * @param  	Object	    $object		Object invoice
      * @param	string		$mode       'next' for next value or 'last' for last value
      * @return 	string      			Value if OK, 0 if KO
 	 */
@@ -116,16 +135,26 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices
 
 		require_once DOL_DOCUMENT_ROOT .'/core/lib/functions2.lib.php';
 
-		// On defini critere recherche compteur
-		$mask=$conf->global->SUPPLIER_INVOICE_TULIP_MASK;
-
+		// Get Mask value
+		$mask = '';
+		if (is_object($object) && $object->type == 1) 
+		{
+			$mask=$conf->global->SUPPLIER_REPLACEMENT_TULIP_MASK;
+			if (! $mask)
+			{
+				$mask=$conf->global->SUPPLIER_INVOICE_TULIP_MASK;
+			}
+		}
+		else if (is_object($object) && $object->type == 2) $mask=$conf->global->SUPPLIER_CREDIT_TULIP_MASK;
+		else if (is_object($object) && $object->type == 3) $mask=$conf->global->SUPPLIER_DEPOSIT_TULIP_MASK;
+		else $mask=$conf->global->SUPPLIER_INVOICE_TULIP_MASK;
 		if (! $mask)
 		{
 			$this->error='NotConfigured';
 			return 0;
 		}
 
-	    //Supplier invoices take invoice date instead of creation date for the mask
+		// Supplier invoices take invoice date instead of creation date for the mask
 		$numFinal=get_next_value($db,$mask,'facture_fourn','ref','',$objsoc,$object->date);
 
 		return  $numFinal;
diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php
index 6788a24baaab701332e0a693c9465a74b38ba60a..b6c43b10ce96e69a11c2d0aa6893ca5fcbc63206 100644
--- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php
+++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php
@@ -129,10 +129,11 @@ elseif (($type== 'sellist') || ($type == 'chkbxlst') || ($type == 'link') )
 <?php
 // Define list of possible type transition
 $typewecanchangeinto=array(
-    'varchar'=>array('varchar', 'phone', 'mail', 'select'),
-    'mail'=>array('varchar', 'phone', 'mail', 'select'),
-    'phone'=>array('varchar', 'phone', 'mail', 'select'),
-    'select'=>array('varchar', 'phone', 'mail', 'select')
+    'varchar'=>array('varchar', 'phone', 'mail', 'url', 'select'),
+    'mail'=>array('varchar', 'phone', 'mail', 'url', 'select'),
+    'url'=>array('varchar', 'phone', 'mail', 'url', 'select'),
+    'phone'=>array('varchar', 'phone', 'mail', 'url', 'select'),
+    'select'=>array('varchar', 'phone', 'mail', 'url', 'select')
 );
 if (in_array($type, array_keys($typewecanchangeinto)))
 {
diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php
index 28a02fcd38a619b7f23d7086243c297bab2e62e8..845bc30ce13b5c839ec5b2fd14f406d52000b9fc 100644
--- a/htdocs/core/tpl/contacts.tpl.php
+++ b/htdocs/core/tpl/contacts.tpl.php
@@ -110,11 +110,10 @@ if ($permission) {
 		<div class="tagtd nowrap maxwidthonsmartphone">
 			<?php $selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$object->socid; ?>
 			<?php 
-			// add company icon for direct link 
-			if ($selectedCompany && empty($conf->dol_use_jmobile)) 
+			// add company icon before select list 
+			if ($selectedCompany) 
 			{
-				$companystatic->fetch($selectedCompany);
-				echo $companystatic->getNomUrl(2, '', 0, 1); 
+			    echo img_object('', 'company', 'class="hideonsmartphone"');
 			}
 			?>
 			<?php $selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany', '', 0); ?>
diff --git a/htdocs/core/tpl/notes.tpl.php b/htdocs/core/tpl/notes.tpl.php
index bc7cf44ce66eedcdc7bef1ef0ac236752e30bb34..c971a49148fa612f3ba82ca81775798b30bb5a21 100644
--- a/htdocs/core/tpl/notes.tpl.php
+++ b/htdocs/core/tpl/notes.tpl.php
@@ -63,8 +63,8 @@ elseif ($module == 'shipping')    		 { $permission=$user->rights->expedition->cr
 elseif ($module == 'product')    		 { $permission=$user->rights->produit->creer;}
 //else dol_print_error('','Bad value '.$module.' for param module');
 
-if (! empty($conf->global->FCKEDITOR_ENABLE_SOCIETE)) $typeofdata='ckeditor:dolibarr_notes:100%:200::1:12:100';	// Rem: This var is for all notes, not only thirdparties note.
-else $typeofdata='textarea:12:100';
+if (! empty($conf->global->FCKEDITOR_ENABLE_SOCIETE)) $typeofdata='ckeditor:dolibarr_notes:100%:200::1:12:95%';	// Rem: This var is for all notes, not only thirdparties note.
+else $typeofdata='textarea:12:95%';
 
 ?>
 
@@ -72,14 +72,14 @@ else $typeofdata='textarea:12:100';
 <div class="tagtable border table-border centpercent">
 <?php if ($module != 'product') {   // No public note yet on products ?>
 	<div class="tagtr table-border-row">
-		<div class="tagtd table-key-border-col<?php echo (empty($cssclass)?'':' '.$cssclass); ?>"<?php echo ($colwidth ? ' style="width: '.$colwidth.'%"' : ''); ?>><?php echo $form->editfieldkey("NotePublic", $note_public, $value_public, $object, $permission, $typeofdata, $moreparam); ?></div>
-		<div class="tagtd table-val-border-col"><?php echo $form->editfieldval("NotePublic", $note_public, $value_public, $object, $permission, $typeofdata, '', null, null, $moreparam); ?></div>
+		<div class="tagtd table-key-border-col<?php echo (empty($cssclass)?'':' '.$cssclass); ?>"<?php echo ($colwidth ? ' style="width: '.$colwidth.'%"' : ''); ?>><?php echo $form->editfieldkey("NotePublic", $note_public, $value_public, $object, $permission, $typeofdata, $moreparam, '', 0); ?></div>
+		<div class="tagtd table-val-border-col"><?php echo $form->editfieldval("NotePublic", $note_public, $value_public, $object, $permission, $typeofdata, '', null, null, $moreparam, 1); ?></div>
 	</div>
 <?php } ?>
 <?php if (empty($user->societe_id)) { ?>
 	<div class="tagtr table-border-row">
-		<div class="tagtd table-key-border-col<?php echo (empty($cssclass)?'':' '.$cssclass); ?>"<?php echo ($colwidth ? ' style="width: '.$colwidth.'%"' : ''); ?>><?php echo $form->editfieldkey("NotePrivate", $note_private, $value_private, $object, $permission, $typeofdata, $moreparam); ?></div>
-		<div class="tagtd table-val-border-col"><?php echo $form->editfieldval("NotePrivate", $note_private, $value_private, $object, $permission, $typeofdata, '', null, null, $moreparam); ?></div>
+		<div class="tagtd table-key-border-col<?php echo (empty($cssclass)?'':' '.$cssclass); ?>"<?php echo ($colwidth ? ' style="width: '.$colwidth.'%"' : ''); ?>><?php echo $form->editfieldkey("NotePrivate", $note_private, $value_private, $object, $permission, $typeofdata, $moreparam, '', 0); ?></div>
+		<div class="tagtd table-val-border-col"><?php echo $form->editfieldval("NotePrivate", $note_private, $value_private, $object, $permission, $typeofdata, '', null, null, $moreparam, 1); ?></div>
 	</div>
 <?php } ?>
 </div>
diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php
old mode 100644
new mode 100755
index 3e29c9f23e8ba02a27496899fccfc13f8f858dde..d38a3d761e4248cabcca34791f697ac58694aca8
--- a/htdocs/core/tpl/objectline_view.tpl.php
+++ b/htdocs/core/tpl/objectline_view.tpl.php
@@ -36,7 +36,7 @@
  * $type, $text, $description, $line
  */
 
-global $forceall, $senderissupplier, $inputalsopricewithtax, $usemargins;
+global $forceall, $senderissupplier, $inputalsopricewithtax, $usemargins, $outputalsopricetotalwithtax;
 
 $usemargins=0;
 if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1;
@@ -45,6 +45,7 @@ if (empty($dateSelector)) $dateSelector=0;
 if (empty($forceall)) $forceall=0;
 if (empty($senderissupplier)) $senderissupplier=0;
 if (empty($inputalsopricewithtax)) $inputalsopricewithtax=0;
+if (empty($outputalsopricetotalwithtax)) $outputalsopricetotalwithtax=0;
 if (empty($usemargins)) $usemargins=0;
 ?>
 <?php $coldisplay=0; ?>
@@ -203,6 +204,10 @@ if (empty($usemargins)) $usemargins=0;
 		<td align="right" class="linecolutotalht_currency nowrap"><?php $coldisplay++; ?><?php echo price($line->multicurrency_total_ht); ?></td>
 		<?php } ?>
 	<?php } ?>
+        <?php if ($outputalsopricetotalwithtax) { ?>
+        <td align="right" class="liencolht nowrap"><?php $coldisplay++; ?><?php echo price($line->total_ttc); ?></td>
+        <?php } ?>
+
 
 	<?php 
 	if ($this->statut == 0  && ($object_rights->creer)) { ?>
diff --git a/htdocs/don/document.php b/htdocs/don/document.php
index 35df6bb338a32a78b641934dd4b8486c5dea479a..ff25ca2828dd4d3f6cf0a2f64dc62c8bd9be45fc 100644
--- a/htdocs/don/document.php
+++ b/htdocs/don/document.php
@@ -107,7 +107,6 @@ if ($object->id)
 		$totalsize+=$file['size'];
 	}
 
-
 	$linkback = '<a href="'.DOL_URL_ROOT.'/don/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
 	
 	$morehtmlref='<div class="refidno">';
@@ -153,7 +152,6 @@ if ($object->id)
 	
     print '<table class="border" width="100%">';
 
-
 	// Ref
 	/*
 	print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>';
diff --git a/htdocs/don/index.php b/htdocs/don/index.php
index 9894de3a2b5583491dc0b29b42f3ebd03f33173b..5e4b2966051e9a649fbf82de55d24b4418df4596 100644
--- a/htdocs/don/index.php
+++ b/htdocs/don/index.php
@@ -96,7 +96,7 @@ if (count($listofsearchfields))
 	{
 		if ($i == 0) print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("Search").'</td></tr>';
 		print '<tr '.$bc[false].'>';
-		print '<td class="nowrap"><label for="'.$key.'">'.$langs->trans($value["text"]).'</label></td><td><input type="text" class="flat inputsearch" name="'.$key.'" id="'.$key.'" size="14"></td>';
+		print '<td class="nowrap"><label for="'.$key.'">'.$langs->trans($value["text"]).'</label></td><td><input type="text" class="flat inputsearch" name="'.$key.'" id="'.$key.'"></td>';
 		if ($i == 0) print '<td rowspan="'.count($listofsearchfields).'"><input type="submit" value="'.$langs->trans("Search").'" class="button"></td>';
 		print '</tr>';
 		$i++;
diff --git a/htdocs/don/note.php b/htdocs/don/note.php
new file mode 100644
index 0000000000000000000000000000000000000000..22d02fddb010b9a9fc3e2ce8bf86b9cf64087a41
--- /dev/null
+++ b/htdocs/don/note.php
@@ -0,0 +1,99 @@
+<?php
+/* Copyright (C) 2004      Rodolphe Quiedeville <rodolphe@quiedeville.org>
+ * Copyright (C) 2004-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2013      Florian Henry		  	<florian.henry@open-concept.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
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ *      \file       htdocs/compta/facture/note.php
+ *      \ingroup    facture
+ *      \brief      Fiche de notes sur une facture
+ */
+
+require '../main.inc.php';
+require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
+
+$langs->load("companies");
+$langs->load("bills");
+$langs->load("donations");
+
+$id=(GETPOST('id','int')?GETPOST('id','int'):GETPOST('facid','int'));  // For backward compatibility
+$ref=GETPOST('ref','alpha');
+$action=GETPOST('action','alpha');
+
+// Security check
+$socid=0;
+if ($user->societe_id) $socid=$user->societe_id;
+$result=restrictedArea($user,'don',$id,'');
+
+$object = new Don($db);
+$object->fetch($id);
+
+$permissionnote=$user->rights->don->creer;	// Used by the include of actions_setnotes.inc.php
+
+
+/*
+ * Actions
+ */
+
+include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php';	// Must be include, not includ_once
+
+
+
+/*
+ * View
+ */
+
+$title = $langs->trans('Donation') . " - " . $langs->trans('Notes');
+$helpurl = "";
+llxHeader('', $title, $helpurl);
+
+$form = new Form($db);
+
+if ($id > 0 || ! empty($ref))
+{
+	$object = new Don($db);
+	$object->fetch($id,$ref);
+
+    $head = donation_prepare_head($object);
+
+    dol_fiche_head($head, 'note', $langs->trans("Donation"), 0, 'generic');
+    
+    $linkback = '<a href="'.DOL_URL_ROOT.'/don/list.php">'.$langs->trans("BackToList").'</a>';
+    
+    print '<table class="border" width="100%">';
+
+    // Ref
+    print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>';
+    print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', '');
+    print '</td></tr>';
+
+    print "</table>";
+
+    print '<br>';
+
+	include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php';
+
+	dol_fiche_end();
+}
+
+
+llxFooter();
+
+$db->close();
diff --git a/htdocs/ecm/search.php b/htdocs/ecm/search.php
index 729543eff56c7645a8b2b2cf909879669440db62..dd37c86592ac2e5d69f033c92d7ecd986b902118 100644
--- a/htdocs/ecm/search.php
+++ b/htdocs/ecm/search.php
@@ -140,9 +140,9 @@ print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
 print '<table class="nobordernopadding" width="100%">';
 print "<tr class=\"liste_titre\">";
 print '<td colspan="2">'.$langs->trans("ECMSearchByKeywords").'</td></tr>';
-print "<tr ".$bc[false]."><td>".$langs->trans("Ref").':</td><td align="right"><input type="text" name="search_ref" class="flat" size="14"></td></tr>';
-print "<tr ".$bc[false]."><td>".$langs->trans("Title").':</td><td align="right"><input type="text" name="search_title" class="flat" size="14"></td></tr>';
-print "<tr ".$bc[false]."><td>".$langs->trans("Keyword").':</td><td align="right"><input type="text" name="search_keyword" class="flat" size="14"></td></tr>';
+print "<tr ".$bc[false]."><td>".$langs->trans("Ref").':</td><td align="right"><input type="text" name="search_ref" class="flat" size="10"></td></tr>';
+print "<tr ".$bc[false]."><td>".$langs->trans("Title").':</td><td align="right"><input type="text" name="search_title" class="flat" size="10"></td></tr>';
+print "<tr ".$bc[false]."><td>".$langs->trans("Keyword").':</td><td align="right"><input type="text" name="search_keyword" class="flat" size="10"></td></tr>';
 print "<tr ".$bc[false].'><td colspan="2" align="center"><input type="submit" class="button" value="'.$langs->trans("Search").'"></td></tr>';
 print "</table></form>";
 //print $langs->trans("ECMSectionManualDesc");
diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php
index d16cd64f0ffd5cb03642b6fac068cc3f27d5c756..fdb4bf76359b795eb018d7553d3e559eff6a38ee 100644
--- a/htdocs/expedition/shipment.php
+++ b/htdocs/expedition/shipment.php
@@ -254,7 +254,7 @@ if ($id > 0 || ! empty($ref))
 				// Remise dispo de type non avoir
 				$filter='fk_facture_source IS NULL';
 				print '<br>';
-				$form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$commande->id,0,'remise_id',$soc->id,$absolute_discount,$filter);
+				$form->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$commande->id,0,'remise_id',$soc->id,$absolute_discount,$filter, 0, '', 1);
 			}
 		}
 		if ($absolute_creditnote)
diff --git a/htdocs/expedition/tpl/linkedobjectblock.tpl.php b/htdocs/expedition/tpl/linkedobjectblock.tpl.php
index 276eb5ed8fa68cbacd257b77c9e2c7fbf2500d21..f66ff148d66468899ae09346eb0906b1c41c7d3b 100644
--- a/htdocs/expedition/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/expedition/tpl/linkedobjectblock.tpl.php
@@ -29,35 +29,52 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
 
 $langs->load("sendings");
 
-$total=0;
+$total=0; $ilink=0;
 $var=true;
 foreach($linkedObjectBlock as $key => $objectlink)
 {
-	$var=!$var;
+    $ilink++;
+    $var=!$var;
+    $trclass=($var?'pair':'impair');
+    if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total';
 ?>
-<tr <?php echo $GLOBALS['bc'][$var]; ?> >
-    <td><?php echo $langs->trans("Shipment"); ?></td>
-    <td><?php echo $objectlink->getNomUrl(1); ?></td>
-    <td></td>
-	<td align="center"><?php echo dol_print_date($objectlink->date_delivery,'day'); ?></td>
-	<td align="right"><?php
-		if ($user->rights->expedition->lire) {
-			$total = $total + $objectlink->total_ht;
-			echo price($objectlink->total_ht);
-		} ?></td>
-	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
-	<td align="right">
-		<?php
-		// For now, shipments must stay linked to order, so link is not deletable
-		if($object->element != 'commande') {
-			?>
-			<a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
-			<?php
-		}
-		?>
-</tr>
+    <tr class="<?php echo $trclass; ?>">
+        <td><?php echo $langs->trans("Shipment"); ?></td>
+        <td><?php echo $objectlink->getNomUrl(1); ?></td>
+        <td></td>
+    	<td align="center"><?php echo dol_print_date($objectlink->date_delivery,'day'); ?></td>
+    	<td align="right"><?php
+    		if ($user->rights->expedition->lire) {
+    			$total = $total + $objectlink->total_ht;
+    			echo price($objectlink->total_ht);
+    		} ?></td>
+    	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
+    	<td align="right">
+    		<?php
+    		// For now, shipments must stay linked to order, so link is not deletable
+    		if($object->element != 'commande') {
+    			?>
+    			<a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
+    			<?php
+    		}
+    		?>
+    </tr>
 <?php
 }
+if (count($linkedObjectBlock) > 1)
+{
+    ?>
+    <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>">
+        <td><?php echo $langs->trans("Total"); ?></td>
+        <td></td>
+    	<td align="center"></td>
+    	<td align="center"></td>
+    	<td align="right"><?php echo price($total); ?></td>
+    	<td align="right"></td>
+    	<td align="right"></td>
+    </tr>
+    <?php  
+}
 ?>
 
 <!-- END PHP TEMPLATE -->
diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php
index e7f407acfd2d8f85c6ed5a043a0c63271891925f..7a852704f9cde6e92ca9a55e8487e2a66bd48a91 100644
--- a/htdocs/filefunc.inc.php
+++ b/htdocs/filefunc.inc.php
@@ -149,7 +149,7 @@ if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type='mysqli';	// Pour comp
 if ($dolibarr_main_db_type == 'mysql') $dolibarr_main_db_type = 'mysqli';
 if (empty($dolibarr_main_db_prefix)) $dolibarr_main_db_prefix='llx_';
 if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($dolibarr_main_db_type=='mysqli'?'utf8':'');		// Old installation
-if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($dolibarr_main_db_type=='mysqli'?'utf8_general_ci':'');	// Old installation
+if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($dolibarr_main_db_type=='mysqli'?'utf8_unicode_ci':'');	// Old installation
 if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0;
 if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey='';
 if (empty($dolibarr_main_limit_users)) $dolibarr_main_limit_users=0;
diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php
index 286eaaebc88a594b317a0e290d2c93c62fd5314f..e1d73ec6e09cddb162d2e0f4f7d1c8a6f509cd0d 100644
--- a/htdocs/fourn/class/fournisseur.commande.class.php
+++ b/htdocs/fourn/class/fournisseur.commande.class.php
@@ -587,9 +587,10 @@ class CommandeFournisseur extends CommonOrder
      *
      *	@param		int		$withpicto		0=No picto, 1=Include picto into link, 2=Only picto
      *	@param		string	$option			On what the link points
+     *  @param	    int   	$notooltip		1=Disable tooltip
      *	@return		string					Chain with URL
      */
-    public function getNomUrl($withpicto=0,$option='')
+    public function getNomUrl($withpicto=0,$option='',$notooltip=0)
     {
         global $langs, $conf;
 
@@ -606,14 +607,28 @@ class CommandeFournisseur extends CommonOrder
         if (! empty($this->total_ttc))
             $label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
 
-        $link = '<a href="'.DOL_URL_ROOT.'/fourn/commande/card.php?id='.$this->id.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
-        $linkend='</a>';
-
         $picto='order';
+        $url = DOL_URL_ROOT.'/fourn/commande/card.php?id='.$this->id;
+            
+        $linkclose='';
+        if (empty($notooltip))
+        {
+            if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
+            {
+                $label=$langs->trans("ShowOrder");
+                $linkclose.=' alt="'.dol_escape_htmltag($label, 1).'"';
+            }
+            $linkclose.= ' title="'.dol_escape_htmltag($label, 1).'"';
+            $linkclose.=' class="classfortooltip"';
+        }
+        
+        $linkstart = '<a href="'.$url.'"';
+        $linkstart.=$linkclose.'>';
+        $linkend='</a>';
 
-        if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend);
+        if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend);
         if ($withpicto && $withpicto != 2) $result.=' ';
-        $result.=$link.$this->ref.$linkend;
+        $result.=$linkstart.$this->ref.$linkend;
         return $result;
     }
 
diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php
index 595dabff72ba76da6237c1f05935202d01089d22..af7bec526a684b3ef02337362c2302c13ebc73d3 100644
--- a/htdocs/fourn/class/fournisseur.facture.class.php
+++ b/htdocs/fourn/class/fournisseur.facture.class.php
@@ -10,7 +10,7 @@
  * Copyright (C) 2014-2016	Marcos García			<marcosgdf@gmail.com>
  * Copyright (C) 2015		Bahfir Abbes			<bafbes@gmail.com>
  * Copyright (C) 2015		Ferran Marcet			<fmarcet@2byte.es>
- * Copyright (C) 2016		Alexandre Spangaro		<aspangaro.dolibarr@gmail.com>
+ * Copyright (C) 2016		Alexandre Spangaro		<aspangaro@zendsi.com>
  *
  * 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
@@ -694,7 +694,6 @@ class FactureFournisseur extends CommonInvoice
         if (isset($this->tva)) $this->tva=trim($this->tva);
         if (isset($this->localtax1)) $this->localtax1=trim($this->localtax1);
         if (isset($this->localtax2)) $this->localtax2=trim($this->localtax2);
-        if (empty($this->total)) $this->total=0;
         if (empty($this->total_ht)) $this->total_ht=0;
         if (empty($this->total_tva)) $this->total_tva=0;
         //	if (isset($this->total_localtax1)) $this->total_localtax1=trim($this->total_localtax1);
@@ -734,7 +733,7 @@ class FactureFournisseur extends CommonInvoice
         $sql.= " tva=".(isset($this->tva)?$this->tva:"null").",";
         $sql.= " localtax1=".(isset($this->localtax1)?$this->localtax1:"null").",";
         $sql.= " localtax2=".(isset($this->localtax2)?$this->localtax2:"null").",";
-        $sql.= " total=".(isset($this->total)?$this->total:"null").",";
+        //$sql.= " total=".(isset($this->total)?$this->total:"null").",";
         $sql.= " total_ht=".(isset($this->total_ht)?$this->total_ht:"null").",";
         $sql.= " total_tva=".(isset($this->total_tva)?$this->total_tva:"null").",";
         $sql.= " total_ttc=".(isset($this->total_ttc)?$this->total_ttc:"null").",";
@@ -1766,9 +1765,10 @@ class FactureFournisseur extends CommonInvoice
      *	@param		int		$max			Max length of shown ref
      *	@param		int		$short			1=Return just URL
      *	@param		string	$moretitle		Add more text to title tooltip
+     *  @param	    int   	$notooltip		1=Disable tooltip
      * 	@return		string					String with URL
      */
-    public function getNomUrl($withpicto=0,$option='',$max=0,$short=0,$moretitle='')
+    public function getNomUrl($withpicto=0,$option='',$max=0,$short=0,$moretitle='',$notooltip=0)
     {
         global $langs, $conf;
 
@@ -1803,10 +1803,23 @@ class FactureFournisseur extends CommonInvoice
         $ref=$this->ref;
         if (empty($ref)) $ref=$this->id;
 
-        $linkstart='<a href="'.$url.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
+        $linkclose='';
+        if (empty($notooltip))
+        {
+            if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
+            {
+                $label=$langs->trans("ShowSupplierInvoice");
+                $linkclose.=' alt="'.dol_escape_htmltag($label, 1).'"';
+            }
+            $linkclose.= ' title="'.dol_escape_htmltag($label, 1).'"';
+            $linkclose.=' class="classfortooltip"';
+        }
+        
+        $linkstart = '<a href="'.$url.'"';
+        $linkstart.=$linkclose.'>';
         $linkend='</a>';
 
-        if ($withpicto) $result.=($linkstart.img_object($label, $picto, 'class="classfortooltip"').$linkend.' ');
+        if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend.' ');
         $result.=$linkstart.($max?dol_trunc($ref,$max):$ref).$linkend;
         return $result;
     }
diff --git a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php
index 4cb232add74c01c91e9bc085230efd6fb4efc418..ff16f267431985c8f5c9a97507f39e3d382cacc6 100644
--- a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php
@@ -23,33 +23,51 @@
 <?php
 
 global $user;
+global $noMoreLinkedObjectBlockAfter;
 
 $langs = $GLOBALS['langs'];
 $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
 
 $langs->load("orders");
 
-$total=0;
+$total=0; $ilink=0;
 $var=true;
 foreach($linkedObjectBlock as $key => $objectlink)
 {
-	$var=!$var;
+    $ilink++;
+    $var=!$var;
+    $trclass=($var?'pair':'impair');
+    if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total';
 ?>
-<tr <?php echo $bc[$var]; ?> >
-    <td><?php echo $langs->trans("SupplierOrder"); ?></td>
-	<td><a href="<?php echo DOL_URL_ROOT.'/fourn/commande/card.php?id='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowOrder"),"order").' '.$objectlink->ref; ?></a></td>
-	<td align="left"><?php echo $objectlink->ref_supplier; ?></td>
-	<td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td>
-	<td align="right"><?php
-		if ($user->rights->fournisseur->commande->lire) {
-			$total = $total + $objectlink->total_ht;
-			echo price($objectlink->total_ht);
-		} ?></td>
-	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
-	<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
-</tr>
+    <tr class="<?php echo $trclass; ?>">
+        <td><?php echo $langs->trans("SupplierOrder"); ?></td>
+    	<td><a href="<?php echo DOL_URL_ROOT.'/fourn/commande/card.php?id='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowOrder"),"order").' '.$objectlink->ref; ?></a></td>
+    	<td align="left"><?php echo $objectlink->ref_supplier; ?></td>
+    	<td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td>
+    	<td align="right"><?php
+    		if ($user->rights->fournisseur->commande->lire) {
+    			$total = $total + $objectlink->total_ht;
+    			echo price($objectlink->total_ht);
+    		} ?></td>
+    	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
+    	<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
+    </tr>
 <?php
 }
+if (count($linkedObjectBlock) > 1)
+{
+    ?>
+    <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>">
+        <td><?php echo $langs->trans("Total"); ?></td>
+        <td></td>
+    	<td align="center"></td>
+    	<td align="center"></td>
+    	<td align="right"><?php echo price($total); ?></td>
+    	<td align="right"></td>
+    	<td align="right"></td>
+    </tr>
+    <?php  
+}
 ?>
 
 <!-- END PHP TEMPLATE -->
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index bd7d1317957ad49d9409b55f23cbbd250d534ae0..ecad08da51a97bb82cf3152d74baff11cef0ef55 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -8,7 +8,7 @@
  * Copyright (C) 2013-2015	Philippe Grand			<philippe.grand@atoo-net.com>
  * Copyright (C) 2013		Florian Henry			<florian.henry@open-concept.pro>
  * Copyright (C) 2014		Marcos García			<marcosgdf@gmail.com>
- * Copyright (C) 2016		Alexandre Spangaro		<aspangaro.dolibarr@gmail.com>
+ * Copyright (C) 2016		Alexandre Spangaro		<aspangaro@zendsi.com>
  *
  * 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
@@ -309,7 +309,7 @@ if (empty($reshook))
 	elseif ($action == 'setlabel' && $user->rights->fournisseur->facture->creer)
 	{
 	    $object->fetch($id);
-	    $object->label=$_POST['label'];
+	    $object->label=GETPOST('label');
 	    $result=$object->update($user);
 	    if ($result < 0) dol_print_error($db);
 	}
@@ -412,6 +412,7 @@ if (empty($reshook))
 
 				$id = $object->createFromCurrent($user);
 				if ($id <= 0) {
+				    $error++;
 					setEventMessages($object->error, $object->errors, 'errors');
 				}
 			}
@@ -486,10 +487,10 @@ if (empty($reshook))
 						{
 							// Reset fk_parent_line for no child products and special product
 							if (($line->product_type != 9 && empty($line->fk_parent_line)) || $line->product_type == 9) {
-							$fk_parent_line = 0;
+								$fk_parent_line = 0;
 							}
 
-							$line->fk_facture = $object->id;
+							$line->fk_facture_fourn = $object->id;
 							$line->fk_parent_line = $fk_parent_line;
 
 							$line->subprice =-$line->subprice; // invert price for object
@@ -506,7 +507,7 @@ if (empty($reshook))
 
 							// Defined the new fk_parent_line
 							if ($result > 0 && $line->product_type == 9) {
-							$fk_parent_line = $result;
+                                $fk_parent_line = $result;
 							}
 						}
 
@@ -571,8 +572,6 @@ if (empty($reshook))
 
 			if (! $error)
 			{
-				$db->begin();
-
 				$tmpproject = GETPOST('projectid', 'int');
 
 				// Creation facture
@@ -745,34 +744,34 @@ if (empty($reshook))
 						}
 					}
 				}
+			}
+		}
 
-				if ($error)
-				{
-					$langs->load("errors");
-					$db->rollback();
-
-					setEventMessages($object->error, $object->errors, 'errors');
-					$action='create';
-					$_GET['socid']=$_POST['socid'];
-				}
-				else
-				{
-					$db->commit();
+		if ($error)
+		{
+			$langs->load("errors");
+			$db->rollback();
 
-					if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
-						$outputlangs = $langs;
-						$result = $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
-						if ($result	< 0)
-						{
-							dol_print_error($db,$object->error,$object->errors);
-							exit;
-						}
-					}
+			setEventMessages($object->error, $object->errors, 'errors');
+			$action='create';
+			$_GET['socid']=$_POST['socid'];
+		}
+		else
+		{
+			$db->commit();
 
-					header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
+			if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
+				$outputlangs = $langs;
+				$result = $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
+				if ($result	< 0)
+				{
+					dol_print_error($db,$object->error,$object->errors);
 					exit;
 				}
 			}
+
+			header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
+			exit;
 		}
 	}
 
@@ -2249,9 +2248,27 @@ else
     	print '<div class="fichehalfright">';
     	print '<div class="ficheaddleft">';
     	print '<div class="underbanner clearboth"></div>';
-    	
+
     	print '<table class="border centpercent">';
-    		
+
+    	if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency))
+		{
+    	    // Multicurrency Amount HT
+    	    print '<tr><td class="titlefieldmiddle">' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '</td>';
+    	    print '<td class="nowrap">' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
+    	    print '</tr>';
+    	
+    	    // Multicurrency Amount VAT
+    	    print '<tr><td>' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '</td>';
+    	    print '<td>' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
+    	    print '</tr>';
+    	
+    	    // Multicurrency Amount TTC
+    	    print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '</td>';
+    	    print '<td>' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
+    	    print '</tr>';
+    	}
+
     	// Amount
     	print '<tr><td>'.$langs->trans('AmountHT').'</td><td>'.price($object->total_ht,1,$langs,0,-1,-1,$conf->currency).'</td></tr>';
     	print '<tr><td>'.$langs->trans('AmountVAT').'</td><td>'.price($object->total_tva,1,$langs,0,-1,-1,$conf->currency).'<div class="inline-block"> &nbsp; &nbsp; &nbsp; &nbsp; ';
@@ -2265,7 +2282,7 @@ else
     	$s.='<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=calculate&calculationrule=roundoftotal">'.$langs->trans("Mode2").'</a>';
     	print $form->textwithtooltip($s, $langs->trans("CalculationRuleDesc",$calculationrulenum).'<br>'.$langs->trans("CalculationRuleDescSupplier"), 2, 1, img_picto('','help'));
     	print '</div></td></tr>';
-    	
+
     	// Amount Local Taxes
     	//TODO: Place into a function to control showing by country or study better option
     	if ($societe->localtax1_assuj=="1") //Localtax1
@@ -2281,39 +2298,25 @@ else
     	    print '</tr>';
     	}
     	print '<tr><td>'.$langs->trans('AmountTTC').'</td><td colspan="3">'.price($object->total_ttc,1,$langs,0,-1,-1,$conf->currency).'</td></tr>';
-    	
-    	if (!empty($conf->multicurrency->enabled))
-    	{
-    	    // Multicurrency Amount HT
-    	    print '<tr><td>' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '</td>';
-    	    print '<td class="nowrap">' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
-    	    print '</tr>';
-    	
-    	    // Multicurrency Amount VAT
-    	    print '<tr><td>' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '</td>';
-    	    print '<td class="nowrap" colspan="2">' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
-    	    print '</tr>';
-    	
-    	    // Multicurrency Amount TTC
-    	    print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '</td>';
-    	    print '<td class="nowrap" colspan="2">' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
-    	    print '</tr>';
-    	}	
-    	
+
     	print '</table>';
-    	 
+ 
     	/*
     	 * List of payments
     	 */
-    	$nbrows=9; $nbcols=3;
+		$sign = 1;
+		if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE) $sign = - 1;
+
+		$nbrows=9; $nbcols=3;
     	if (! empty($conf->projet->enabled)) $nbrows++;
     	if (! empty($conf->banque->enabled)) { $nbrows++; $nbcols++; }
     	if (! empty($conf->incoterm->enabled)) $nbrows++;
-    	
+		if (! empty($conf->multicurrency->enabled)) $nbrows += 5;
+
     	// Local taxes
     	if ($societe->localtax1_assuj=="1") $nbrows++;
     	if ($societe->localtax2_assuj=="1") $nbrows++;
-    	
+
     	$sql = 'SELECT p.datep as dp, p.ref, p.num_paiement, p.rowid, p.fk_bank,';
     	$sql.= ' c.id as paiement_type,';
     	$sql.= ' pf.amount,';
@@ -2325,7 +2328,7 @@ else
     	$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn_facturefourn as pf ON pf.fk_paiementfourn = p.rowid';
     	$sql.= ' WHERE pf.fk_facturefourn = '.$object->id;
     	$sql.= ' ORDER BY p.datep, p.tms';
-    	
+
     	$result = $db->query($sql);
     	if ($result)
     	{
@@ -2333,14 +2336,14 @@ else
     	    $i = 0; $totalpaye = 0;
     	    print '<table class="noborder paymenttable" width="100%">';
     	    print '<tr class="liste_titre">';
-    	    print '<td>'.$langs->trans('Payments').'</td>';
+    	    print '<td class="liste_titre">' . ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')) . '</td>';
     	    print '<td>'.$langs->trans('Date').'</td>';
     	    print '<td>'.$langs->trans('Type').'</td>';
     	    if (! empty($conf->banque->enabled)) print '<td align="right">'.$langs->trans('BankAccount').'</td>';
     	    print '<td align="right">'.$langs->trans('Amount').'</td>';
     	    print '<td width="18">&nbsp;</td>';
     	    print '</tr>';
-    	
+
     	    $var=false;
     	    if ($num > 0)
     	    {
@@ -2369,7 +2372,7 @@ else
     	                if ($objp->baid > 0) print $bankaccountstatic->getNomUrl(1,'transactions');
     	                print '</td>';
     	            }
-    	            print '<td align="right">'.price($objp->amount).'</td>';
+    	            print '<td align="right">' . price($sign * $objp->amount) . '</td>';
     	            print '<td align="center">';
     	            if ($object->statut == FactureFournisseur::STATUS_VALIDATED && $object->paye == 0 && $user->societe_id == 0)
     	            {
@@ -2387,7 +2390,8 @@ else
     	    {
     	        print '<tr '.$bc[$var].'><td colspan="'.$nbcols.'" class="opacitymedium">'.$langs->trans("None").'</td><td></td><td></td></tr>';
     	    }
-    	
+
+			/*
     	    if ($object->paye == 0)
     	    {
     	        print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans('AlreadyPaid').' :</td><td align="right">'.price($totalpaye).'</td><td></td></tr>';
@@ -2398,14 +2402,139 @@ else
     	        print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans('RemainderToPay').' :</td>';
     	        print '<td align="right"'.($resteapayer?' class="amountremaintopay"':'').'>'.price($resteapayer).'</td><td></td></tr>';
     	    }
-    	    print '</table>';
+			*/
+
     	    $db->free($result);
     	}
     	else
     	{
     	    dol_print_error($db);
     	}
-    	
+
+		if ($object->type != FactureFournisseur::TYPE_CREDIT_NOTE) {
+			// Total already paid
+			print '<tr><td colspan="' . $nbcols . '" align="right">';
+			if ($object->type != FactureFournisseur::TYPE_DEPOSIT)
+				print $langs->trans('AlreadyPaidNoCreditNotesNoDeposits');
+			else
+				print $langs->trans('AlreadyPaid');
+			print ' :</td><td align="right"'.(($totalpaye > 0)?' class="amountalreadypaid"':'').'>' . price($totalpaye) . '</td><td>&nbsp;</td></tr>';
+
+			$resteapayeraffiche = $resteapayer;
+			$cssforamountpaymentcomplete = 'amountpaymentcomplete';
+
+			// Loop on each credit note or deposit amount applied
+			$creditnoteamount = 0;
+			$depositamount = 0;
+			$sql = "SELECT re.rowid, re.amount_ht, re.amount_tva, re.amount_ttc,";
+			$sql .= " re.description, re.fk_facture_source";
+			$sql .= " FROM " . MAIN_DB_PREFIX . "societe_remise_except as re";
+			$sql .= " WHERE fk_facture = " . $object->id;
+			$resql = $db->query($sql);
+			if ($resql) {
+				$num = $db->num_rows($resql);
+				$i = 0;
+				$invoice = new FactureFournisseur($db);
+				while ($i < $num) {
+					$obj = $db->fetch_object($resql);
+					$invoice->fetch($obj->fk_facture_source);
+					print '<tr><td colspan="' . $nbcols . '" align="right">';
+					if ($invoice->type == FactureFournisseur::TYPE_CREDIT_NOTE)
+						print $langs->trans("CreditNote") . ' ';
+					if ($invoice->type == FactureFournisseur::TYPE_DEPOSIT)
+						print $langs->trans("Deposit") . ' ';
+					print $invoice->getNomUrl(0);
+					print ' :</td>';
+					print '<td align="right">' . price($obj->amount_ttc) . '</td>';
+					print '<td align="right">';
+					print '<a href="' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id . '&action=unlinkdiscount&discountid=' . $obj->rowid . '">' . img_delete() . '</a>';
+					print '</td></tr>';
+					$i ++;
+					if ($invoice->type == FactureFournisseur::TYPE_CREDIT_NOTE)
+						$creditnoteamount += $obj->amount_ttc;
+					if ($invoice->type == FactureFournisseur::TYPE_DEPOSIT)
+						$depositamount += $obj->amount_ttc;
+				}
+			} else {
+				dol_print_error($db);
+			}
+
+			// Paye partiellement 'escompte'
+			if (($object->statut == FactureFournisseur::STATUS_CLOSED || $object->statut == FactureFournisseur::STATUS_ABANDONED) && $object->close_code == 'discount_vat') {
+				print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">';
+				print $form->textwithpicto($langs->trans("Discount") . ':', $langs->trans("HelpEscompte"), - 1);
+				print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td>&nbsp;</td></tr>';
+				$resteapayeraffiche = 0;
+				$cssforamountpaymentcomplete = '';
+			}
+			// Paye partiellement ou Abandon 'badsupplier'
+			if (($object->statut == FactureFournisseur::STATUS_CLOSED || $object->statut == FactureFournisseur::STATUS_ABANDONED) && $object->close_code == 'badsupplier') {
+				print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">';
+				print $form->textwithpicto($langs->trans("Abandoned") . ':', $langs->trans("HelpAbandonBadCustomer"), - 1);
+				print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td>&nbsp;</td></tr>';
+				// $resteapayeraffiche=0;
+				$cssforamountpaymentcomplete = '';
+			}
+			// Paye partiellement ou Abandon 'product_returned'
+			if (($object->statut == FactureFournisseur::STATUS_CLOSED || $object->statut == FactureFournisseur::STATUS_ABANDONED) && $object->close_code == 'product_returned') {
+				print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">';
+				print $form->textwithpicto($langs->trans("ProductReturned") . ':', $langs->trans("HelpAbandonProductReturned"), - 1);
+				print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td>&nbsp;</td></tr>';
+				$resteapayeraffiche = 0;
+				$cssforamountpaymentcomplete = '';
+			}
+			// Paye partiellement ou Abandon 'abandon'
+			if (($object->statut == FactureFournisseur::STATUS_CLOSED || $object->statut == FactureFournisseur::STATUS_ABANDONED) && $object->close_code == 'abandon') {
+				print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">';
+				$text = $langs->trans("HelpAbandonOther");
+				if ($object->close_note)
+					$text .= '<br><br><b>' . $langs->trans("Reason") . '</b>:' . $object->close_note;
+				print $form->textwithpicto($langs->trans("Abandoned") . ':', $text, - 1);
+				print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td>&nbsp;</td></tr>';
+				$resteapayeraffiche = 0;
+				$cssforamountpaymentcomplete = '';
+			}
+
+			// Billed
+			print '<tr><td colspan="' . $nbcols . '" align="right">' . $langs->trans("Billed") . ' :</td><td align="right">' . price($object->total_ttc) . '</td><td>&nbsp;</td></tr>';
+
+			// Remainder to pay
+			print '<tr><td colspan="' . $nbcols . '" align="right">';
+			if ($resteapayeraffiche >= 0)
+				print $langs->trans('RemainderToPay');
+			else
+				print $langs->trans('ExcessReceived');
+			print ' :</td>';
+			print '<td align="right"'.($resteapayeraffiche?' class="amountremaintopay"':$cssforamountpaymentcomplete).'>' . price($resteapayeraffiche) . '</td>';
+			print '<td class="nowrap">&nbsp;</td></tr>';
+		} 
+		else // Credit note
+		{
+			// Total already paid back
+			print '<tr><td colspan="' . $nbcols . '" align="right">';
+			print $langs->trans('AlreadyPaidBack');
+			print ' :</td><td align="right">' . price($sign * $totalpaye) . '</td><td>&nbsp;</td></tr>';
+
+			// Billed
+			print '<tr><td colspan="' . $nbcols . '" align="right">' . $langs->trans("Billed") . ' :</td><td align="right">' . price($sign * $object->total_ttc) . '</td><td>&nbsp;</td></tr>';
+
+			// Remainder to pay back
+			print '<tr><td colspan="' . $nbcols . '" align="right">';
+			if ($resteapayeraffiche <= 0)
+				print $langs->trans('RemainderToPayBack');
+			else
+				print $langs->trans('ExcessPaydBack');
+			print ' :</td>';
+			print '<td align="right" bgcolor="#f0f0f0"><b>' . price($sign * $resteapayeraffiche) . '</b></td>';
+			print '<td class="nowrap">&nbsp;</td></tr>';
+
+			// Sold credit note
+			// print '<tr><td colspan="'.$nbcols.'" align="right">'.$langs->trans('TotalTTC').' :</td>';
+			// print '<td align="right" style="border: 1px solid;" bgcolor="#f0f0f0"><b>'.price($sign *
+			// $object->total_ttc).'</b></td><td>&nbsp;</td></tr>';
+		}
+
+		print '</table>';
 
         print '</div>';
         print '</div>';
@@ -2432,16 +2561,12 @@ else
         /*
          * Lines
          */
-		//$result = $object->getLinesArray();
-
-
-		print '	<form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline')?'#add':'#line_'.GETPOST('lineid')).'" method="POST">
-		<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">
-		<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline') . '">
-		<input type="hidden" name="mode" value="">
-		<input type="hidden" name="id" value="'.$object->id.'">
-        <input type="hidden" name="socid" value="'.$societe->id.'">
-		';
+		print '<form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline')?'#add':'#line_'.GETPOST('lineid')).'" method="POST">';
+		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+		print '<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline') . '">';
+		print '<input type="hidden" name="mode" value="">';
+		print '<input type="hidden" name="id" value="'.$object->id.'">';
+		print '<input type="hidden" name="socid" value="'.$societe->id.'">';
 
 		if (! empty($conf->use_javascript_ajax) && $object->statut == FactureFournisseur::STATUS_DRAFT) {
 			include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php';
@@ -2449,7 +2574,7 @@ else
 
 		print '<table id="tablelines" class="noborder noshadow" width="100%">';
 
-       	global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax;
+		global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax;
 		$forceall=1; $senderissupplier=1; $dateSelector=0; $inputalsopricewithtax=1;
 
 		// Show object lines
@@ -2498,7 +2623,7 @@ else
 			    // Modify a validated invoice with no payments
 				if ($object->statut == FactureFournisseur::STATUS_VALIDATED && $action != 'edit' && $object->getSommePaiement() == 0 && $user->rights->fournisseur->facture->creer)
 				{
-					print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=edit">'.$langs->trans('Modify').'</a>';
+					print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=edit">'.$langs->trans('Modify').'</a></div>';
 				}
 
 	 	 		// Reopen a standard paid invoice
@@ -2506,11 +2631,11 @@ else
 	            {
 	                if (! $facidnext && $object->close_code != 'replaced')	// Not replaced by another invoice
 	                {
-	                    print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=reopen">'.$langs->trans('ReOpen').'</a>';
+	                    print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=reopen">'.$langs->trans('ReOpen').'</a></div>';
 	                }
 	                else
 	                {
-	                    print '<span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('ReOpen').'</span>';
+	                    print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('ReOpen').'</span></div>';
 	                }
 	            }
 
@@ -2519,27 +2644,52 @@ else
 	            {
 	                if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->fournisseur->supplier_invoice_advance->send)
 	                {
-	                    print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=presend&amp;mode=init">'.$langs->trans('SendByMail').'</a>';
+	                    print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=presend&amp;mode=init">'.$langs->trans('SendByMail').'</a></div>';
 	                }
-	                else print '<a class="butActionRefused" href="#">'.$langs->trans('SendByMail').'</a>';
+	                else print '<div class="inline-block divButAction"><span class="butActionRefused">'.$langs->trans('SendByMail').'</a></div>';
 	            }
 
-
 	            // Make payments
-	            if ($action != 'edit' && $object->statut == FactureFournisseur::STATUS_VALIDATED && $object->paye == 0  && $user->societe_id == 0)
+	            if ($object->type != FactureFournisseur::TYPE_CREDIT_NOTE && $action != 'edit' && $object->statut == FactureFournisseur::STATUS_VALIDATED && $object->paye == 0  && $user->societe_id == 0)
 	            {
-	                print '<a class="butAction" href="paiement.php?facid='.$object->id.'&amp;action=create'.($object->fk_account>0?'&amp;accountid='.$object->fk_account:'').'">'.$langs->trans('DoPayment').'</a>';	// must use facid because id is for payment id not invoice
+	                print '<div class="inline-block divButAction"><a class="butAction" href="paiement.php?facid='.$object->id.'&amp;action=create'.($object->fk_account>0?'&amp;accountid='.$object->fk_account:'').'">'.$langs->trans('DoPayment').'</a></div>';	// must use facid because id is for payment id not invoice
 	            }
 
 	            // Classify paid
 	            if ($action != 'edit' && $object->statut == FactureFournisseur::STATUS_VALIDATED && $object->paye == 0  && $user->societe_id == 0)
 	            {
-	                print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=paid"';
-	                print '>'.$langs->trans('ClassifyPaid').'</a>';
+	                print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=paid"';
+	                print '>'.$langs->trans('ClassifyPaid').'</a></div>';
 
 	                //print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=paid">'.$langs->trans('ClassifyPaid').'</a>';
 	            }
 
+				// Reverse back money or convert to reduction
+				if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE || $object->type == FactureFournisseur::TYPE_DEPOSIT) {
+					// For credit note only
+					if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE && $object->statut == 1 && $object->paye == 0)
+					{
+						if ($resteapayer == 0)
+						{
+							print '<div class="inline-block divButAction"><span class="butActionRefused" title="'.$langs->trans("DisabledBecauseRemainderToPayIsZero").'">'.$langs->trans('DoPaymentBack').'</span></div>';
+						}
+						else
+						{
+							print '<div class="inline-block divButAction"><a class="butAction" href="paiement.php?facid='.$object->id.'&amp;action=create&amp;accountid='.$object->fk_account.'">'.$langs->trans('DoPaymentBack').'</a></div>';
+						}
+					}
+
+					// For credit note
+					if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE && $object->statut == 1 && $object->paye == 0 && $user->rights->fournisseur->facture->creer && $object->getSommePaiement() == 0) {
+						print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id . '&amp;action=converttoreduc">' . $langs->trans('ConvertToReduc') . '</a></div>';
+					}
+					// For deposit invoice
+					if ($object->type == FactureFournisseur::TYPE_DEPOSIT && $object->paye == 1 && $resteapayer == 0 && $user->rights->fournisseur->facture->creer && empty($discount->id))
+					{
+						print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?facid='.$object->id.'&amp;action=converttoreduc">'.$langs->trans('ConvertToReduc').'</a></div>';
+					}
+				}
+
 	            // Validate
 	            if ($action != 'edit' && $object->statut == FactureFournisseur::STATUS_DRAFT)
 	            {
@@ -2548,13 +2698,13 @@ else
 				        if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->fournisseur->facture->creer))
 				       	|| (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->fournisseur->supplier_invoice_advance->validate)))
 	                    {
-	                        print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=valid"';
-	                        print '>'.$langs->trans('Validate').'</a>';
+	                        print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=valid"';
+	                        print '>'.$langs->trans('Validate').'</a></div>';
 	                    }
 	                    else
 	                    {
-	                        print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'"';
-	                        print '>'.$langs->trans('Validate').'</a>';
+	                        print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'"';
+	                        print '>'.$langs->trans('Validate').'</a></div>';
 	                    }
 	                }
 	            }
@@ -2568,7 +2718,7 @@ else
 	            // Clone
 	            if ($action != 'edit' && $user->rights->fournisseur->facture->creer)
 	            {
-	                print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=clone&amp;socid='.$object->socid.'">'.$langs->trans('ToClone').'</a>';
+	                print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=clone&amp;socid='.$object->socid.'">'.$langs->trans('ToClone').'</a></div>';
 	            }
 
 				// Create a credit note
@@ -2586,7 +2736,7 @@ else
                     if ($object->getSommePaiement()) {
                         print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . $langs->trans("DisabledBecausePayments") . '">' . $langs->trans('Delete') . '</a></div>';
                     } else {
-    	                print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=delete">'.$langs->trans('Delete').'</a>';
+    	                print '<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=delete">'.$langs->trans('Delete').'</a></div>';
                     }
 	            }
 	            print '</div>';
diff --git a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php
index 6762d836d5238e42df6cf3cf53457d87e8cd7d69..2ab3b4d215bc2bb82690212d62fb8d7b3ba36070 100644
--- a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php
@@ -24,32 +24,50 @@
 <?php
 
 global $user;
+global $noMoreLinkedObjectBlockAfter;
 
 $langs = $GLOBALS['langs'];
 $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
 
 $langs->load("bills");
 
-$total=0;
+$total=0; $ilink=0;
 $var=true;
 foreach($linkedObjectBlock as $key => $objectlink)
 {
-	$var=!$var;
+    $ilink++;
+    $var=!$var;
+    $trclass=($var?'pair':'impair');
+    if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total';
 ?>
-<tr <?php echo $bc[$var]; ?> >
-    <td><?php echo $langs->trans("SupplierInvoice"); ?></td>
-	<td><a href="<?php echo DOL_URL_ROOT.'/fourn/facture/card.php?facid='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowBill"),"bill").' '.$objectlink->ref; ?></a></td>
-	<td align="left"><?php echo $objectlink->ref_supplier; ?></td>
-	<td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td>
-	<td align="right"><?php
-		if ($user->rights->fournisseur->facture->lire) {
-			$total = $total + $objectlink->total_ht;
-			echo price($objectlink->total_ht);
-		} ?></td>
-	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
-	<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
-</tr>
-<?php
+    <tr class="<?php echo $trclass; ?>">
+        <td><?php echo $langs->trans("SupplierInvoice"); ?></td>
+    	<td><a href="<?php echo DOL_URL_ROOT.'/fourn/facture/card.php?facid='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowBill"),"bill").' '.$objectlink->ref; ?></a></td>
+    	<td align="left"><?php echo $objectlink->ref_supplier; ?></td>
+    	<td align="center"><?php echo dol_print_date($objectlink->date,'day'); ?></td>
+    	<td align="right"><?php
+    		if ($user->rights->fournisseur->facture->lire) {
+    			$total = $total + $objectlink->total_ht;
+    			echo price($objectlink->total_ht);
+    		} ?></td>
+    	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
+    	<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
+    </tr>
+<?php 
+}
+if (count($linkedObjectBlock) > 1)
+{
+    ?>
+    <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>">
+        <td><?php echo $langs->trans("Total"); ?></td>
+        <td></td>
+    	<td align="center"></td>
+    	<td align="center"></td>
+    	<td align="right"><?php echo price($total); ?></td>
+    	<td align="right"></td>
+    	<td align="right"></td>
+    </tr>
+    <?php  
 }
 ?>
 
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php b/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php
index e8248a385fa1ac742d6f17ad9f41713ddb180156..8a3023cab20ea8977f1cfe31591b2a5b6158ff68 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php
@@ -505,7 +505,7 @@ class CommentParser
             $data = explode('|', $data);
             $r['type'] = count($data) == 1 ? $data[0] : $data;
         }
-        if (isset($r['type']) && Text::endsWith($r['type'], '[]')) {
+        if (isset($r['type']) && is_string($r['type']) && Text::endsWith($r['type'], '[]')) {
             $r[static::$embeddedDataName]['type'] = substr($r['type'], 0, -2);
             $r['type'] = 'array';
         }
diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php
index b999eefe6a464154bfd4cb5b238fdde365942b70..eb7e77cfc24fa377d91f286e55418ce7998f3083 100644
--- a/htdocs/install/inc.php
+++ b/htdocs/install/inc.php
@@ -151,7 +151,7 @@ define('DOL_URL_ROOT', $suburi);    // URL relative root ('', '/dolibarr', ...)
 
 if (empty($conf->file->character_set_client))      	$conf->file->character_set_client="UTF-8";
 if (empty($conf->db->character_set))  				$conf->db->character_set='utf8';
-if (empty($conf->db->dolibarr_main_db_collation))  	$conf->db->dolibarr_main_db_collation='utf8_general_ci';
+if (empty($conf->db->dolibarr_main_db_collation))  	$conf->db->dolibarr_main_db_collation='utf8_unicode_ci';
 if (empty($conf->db->dolibarr_main_db_encryption)) 	$conf->db->dolibarr_main_db_encryption=0;
 if (empty($conf->db->dolibarr_main_db_cryptkey))   	$conf->db->dolibarr_main_db_cryptkey='';
 if (empty($conf->db->user)) $conf->db->user='';
@@ -300,11 +300,13 @@ function conf($dolibarr_main_document_root)
     $conf->db->user = trim($dolibarr_main_db_user);
     $conf->db->pass = trim($dolibarr_main_db_pass);
 
+    // Mysql driver support has been removed in favor of mysqli
+    if ($conf->db->type == 'mysql') $conf->db->type = 'mysqli';
     if (empty($character_set_client)) $character_set_client="UTF-8";
     $conf->file->character_set_client=strtoupper($character_set_client);
-    if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($conf->db->type=='mysql'?'latin1':'');		// Old installation
+    if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($conf->db->type=='mysqli'?'utf8':'');
     $conf->db->character_set=$dolibarr_main_db_character_set;
-    if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($conf->db->type=='mysql'?'latin1_swedish_ci':'');  // Old installation
+    if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($conf->db->type=='mysqli'?'utf8_unicode_ci':'');
     $conf->db->dolibarr_main_db_collation=$dolibarr_main_db_collation;
     if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0;
     $conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption;
diff --git a/htdocs/install/mysql/migration/4.0.0-5.0.0.sql b/htdocs/install/mysql/migration/4.0.0-5.0.0.sql
index 2e8ce9e5db23d6994b4ed39314e9fe0baaa4dd14..0e478820af97c0554a934f9ce02c06a24f9c7125 100644
--- a/htdocs/install/mysql/migration/4.0.0-5.0.0.sql
+++ b/htdocs/install/mysql/migration/4.0.0-5.0.0.sql
@@ -24,6 +24,9 @@
 -- -- VPGSQL8.2 DELETE FROM llx_usergroup_user      WHERE fk_user      NOT IN (SELECT rowid from llx_user);
 -- -- VMYSQL4.1 DELETE FROM llx_usergroup_user      WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup);
 
+-- after changing const name, please insure that old constant was rename
+UPDATE llx_const SET name = 'THIRDPARTY_DEFAULT_CREATE_CONTACT' WHERE name='MAIN_THIRPARTY_CREATION_INDIVIDUAL'  -- under 3.9.0
+UPDATE llx_const SET name = 'THIRDPARTY_DEFAULT_CREATE_CONTACT' WHERE name='MAIN_THIRDPARTY_CREATION_INDIVIDUAL' -- under 4.0.1
 
 -- VPGSQL8.2 ALTER TABLE llx_product_lot ALTER COLUMN entity SET DEFAULT 1;
 ALTER TABLE llx_product_lot MODIFY COLUMN entity integer DEFAULT 1;
@@ -105,8 +108,10 @@ ALTER TABLE llx_expensereport_extrafields ADD INDEX idx_expensereport_extrafield
 ALTER TABLE llx_cotisation RENAME TO llx_subscription;
 ALTER TABLE llx_subscription ADD UNIQUE INDEX uk_subscription (fk_adherent,dateadh);
 ALTER TABLE llx_subscription CHANGE COLUMN cotisation subscription real;
-ALTER TABLE llx_adherent_type CHANGE COLUMN cotisation subscription varchar(3) NOT NULL DEFAULT 'yes';
- 
+ALTER TABLE llx_adherent_type CHANGE COLUMN cotisation subscription varchar(3) NOT NULL DEFAULT '1';
+
+UPDATE llx_adherent_type SET subscription = '1' WHERE subscription = 'yes';
+
 CREATE TABLE llx_product_lot_extrafields
 (
   rowid                     integer AUTO_INCREMENT PRIMARY KEY,
@@ -177,3 +182,40 @@ ALTER TABLE llx_bank_account ADD COLUMN import_key      		varchar(14);
 
 ALTER TABLE llx_overwrite_trans ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER rowid;
 
+ALTER TABLE llx_mailing_cibles ADD COLUMN error_text varchar(255);
+
+
+create table llx_user_employment
+(
+  rowid             integer AUTO_INCREMENT PRIMARY KEY,
+  entity            integer DEFAULT 1 NOT NULL, -- multi company id
+  ref				varchar(50),				-- reference
+  ref_ext			varchar(50),				-- reference into an external system (not used by dolibarr)
+  fk_user			integer,
+  datec             datetime,
+  tms               timestamp,
+  fk_user_creat     integer,
+  fk_user_modif     integer,
+  job				varchar(128),				-- job position. may be a dictionnary
+  status            integer NOT NULL,			-- draft, active, closed
+  salary			double(24,8),				-- last and current value stored into llx_user
+  salaryextra		double(24,8),				-- last and current value stored into llx_user
+  weeklyhours		double(16,8),				-- last and current value stored into llx_user
+  dateemployment    date,						-- last and current value stored into llx_user
+  dateemploymentend date						-- last and current value stored into llx_user
+)ENGINE=innodb;
+
+
+
+
+-- Sequence to removed duplicated values of llx_links. Use serveral times if you still have duplicate.
+drop table tmp_links_double;
+--select objectid, label, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_links where label is not null group by objectid, label having count(rowid) >= 2;
+create table tmp_links_double as (select objectid, label, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_links where label is not null group by objectid, label having count(rowid) >= 2);
+--select * from tmp_links_double;
+delete from llx_links where (rowid, label) in (select max_rowid, label from tmp_links_double);	--update to avoid duplicate, delete to delete
+drop table tmp_links_double;
+
+ALTER TABLE llx_links ADD UNIQUE INDEX uk_links (objectid,label);
+
+
diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql
index da5eab83e9b5d366dd4344fe9a2d1e9f69aa038e..3ba06daabcea8c9ea58c5d41e2ce421325111e23 100755
--- a/htdocs/install/mysql/migration/repair.sql
+++ b/htdocs/install/mysql/migration/repair.sql
@@ -13,6 +13,13 @@
 -- flush privileges;
 
 
+-- Requests to change character set and collation of a column
+
+-- ALTER TABLE llx_accountingaccount MODIFY account_number VARCHAR(20) CHARACTER SET utf8;
+-- ALTER TABLE llx_accountingaccount MODIFY account_number VARCHAR(20) COLLATE utf8_unicode_ci;
+-- You can check with show full columns from llx_accountingaccount;
+
+
 
 -- Requests to clean corrupted database
 
@@ -169,6 +176,7 @@ update llx_opensurvey_sondage set format = 'D' where format = 'D+';
 update llx_opensurvey_sondage set format = 'A' where format = 'A+';
 update llx_opensurvey_sondage set tms = now();
 
+
 -- ALTER TABLE llx_facture_fourn ALTER COLUMN fk_cond_reglement DROP NOT NULL;
 
 
@@ -176,12 +184,21 @@ update llx_product set barcode = null where barcode in ('', '-1', '0');
 update llx_societe set barcode = null where barcode in ('', '-1', '0');
 
 
+-- Sequence to removed duplicated values of llx_links. Use serveral times if you still have duplicate.
+drop table tmp_links_double;
+--select objectid, label, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_links where label is not null group by objectid, label having count(rowid) >= 2;
+create table tmp_links_double as (select objectid, label, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_links where label is not null group by objectid, label having count(rowid) >= 2);
+--select * from tmp_links_double;
+delete from llx_links where (rowid, label) in (select max_rowid, label from tmp_links_double);	--update to avoid duplicate, delete to delete
+drop table tmp_links_double;
+
+
 -- Sequence to removed duplicated values of barcode in llx_product. Use serveral times if you still have duplicate.
 drop table tmp_product_double;
 --select barcode, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_product where barcode is not null group by barcode having count(rowid) >= 2;
 create table tmp_product_double as (select barcode, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_product where barcode is not null group by barcode having count(rowid) >= 2);
 --select * from tmp_product_double;
-update llx_product set barcode = null where (rowid, barcode) in (select max_rowid, barcode from tmp_product_double);
+update llx_product set barcode = null where (rowid, barcode) in (select max_rowid, barcode from tmp_product_double);	--update to avoid duplicate, delete to delete
 drop table tmp_product_double;
 
 
diff --git a/htdocs/install/mysql/tables/llx_links.key.sql b/htdocs/install/mysql/tables/llx_links.key.sql
new file mode 100644
index 0000000000000000000000000000000000000000..7ba509e9d58473c22de4ce703118a7cd364342c1
--- /dev/null
+++ b/htdocs/install/mysql/tables/llx_links.key.sql
@@ -0,0 +1,22 @@
+-- ========================================================================
+-- Copyright (C) 2016      Laurent Destailleur  <eldy@users.sourceforge.net>
+--
+-- 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
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see <http://www.gnu.org/licenses/>.
+--
+--
+-- Linked files
+-- ========================================================================
+
+ALTER TABLE llx_links ADD UNIQUE INDEX uk_links (objectid,label);
+
diff --git a/htdocs/install/mysql/tables/llx_mailing_cibles.sql b/htdocs/install/mysql/tables/llx_mailing_cibles.sql
index 72fdeca2925a4e724eead45f4774aa49266760c6..f3031069220105ff0740881e9fb8af40df492da7 100644
--- a/htdocs/install/mysql/tables/llx_mailing_cibles.sql
+++ b/htdocs/install/mysql/tables/llx_mailing_cibles.sql
@@ -1,6 +1,6 @@
 -- ========================================================================
 -- Copyright (C) 2005		Rodolphe Quiedeville <rodolphe@quiedeville.org>
--- Copyright (C) 2009-2012	Laurent Destailleur  <eldy@users.sourceforge.net>
+-- Copyright (C) 2009-2016	Laurent Destailleur  <eldy@users.sourceforge.net>
 -- Copyright (C) 2011-2012	Regis Houssin        <regis.houssin@capnetworks.com>
 --
 -- This program is free software; you can redistribute it and/or modify
@@ -33,6 +33,6 @@ create table llx_mailing_cibles
   source_url		varchar(160),
   source_id			integer,
   source_type		varchar(16),
-  date_envoi		datetime
-  
+  date_envoi		datetime,
+  error_text		varchar(255)						-- text with error if statut is -1
 )ENGINE=innodb;
diff --git a/htdocs/langs/de_AT/agenda.lang b/htdocs/langs/de_AT/agenda.lang
index b5d5e6c2edbe70d6708007b058214ece4a64cf98..5412de7e00870798e34f5aa43feeeaf2dbbe8a27 100644
--- a/htdocs/langs/de_AT/agenda.lang
+++ b/htdocs/langs/de_AT/agenda.lang
@@ -1,6 +1,5 @@
 # Dolibarr language file - Source file is en_US - agenda
 Actions=Termine
-Calendar=Kalender
 LocalAgenda=interner Kalender
 Events=Termine
 ListOfActions=Terminliste
diff --git a/htdocs/langs/en_GB/admin.lang b/htdocs/langs/en_GB/admin.lang
index 0e5d27e124c700b3a08cd91be8eb300ad1f79b44..70a88f295060bbd3700898f5e722e33c0c24c404 100644
--- a/htdocs/langs/en_GB/admin.lang
+++ b/htdocs/langs/en_GB/admin.lang
@@ -2,7 +2,6 @@
 AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan
 AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib"
 ExampleOfDirectoriesForModelGen=Examples of syntax:<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir
-ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values?
 Permission300=Read barcodes
 Permission301=Create/modify barcodes
 Permission302=Delete barcodes
diff --git a/htdocs/langs/en_GB/banks.lang b/htdocs/langs/en_GB/banks.lang
index bd9870721fcd183cd29d592d407449579a97e662..38ce1953eeb3d79f061f3c8ab1c6796924da2266 100644
--- a/htdocs/langs/en_GB/banks.lang
+++ b/htdocs/langs/en_GB/banks.lang
@@ -1,6 +1,5 @@
 # Dolibarr language file - Source file is en_US - banks
 RIBControlError=Integrity check of values fails. This means the account details are incomplete or wrong (check country, numbers and IBAN).
-ConfirmDeleteAccount=Are you sure you want to delete this account?
 RemoveFromRubriqueConfirm=Are you sure you want to remove link between the transaction and the category?
 CheckTransmitter=Drawer
 ValidateCheckReceipt=Validate this cheque receipt?
diff --git a/htdocs/langs/en_GB/main.lang b/htdocs/langs/en_GB/main.lang
index b59e54fcf5ffc101954b877117b983db072ebfee..d0595b7f56a5fb7cc20e675f25e9fca9941826fe 100644
--- a/htdocs/langs/en_GB/main.lang
+++ b/htdocs/langs/en_GB/main.lang
@@ -27,11 +27,6 @@ ErrorNoVATRateDefinedForSellerCountry=Error, no VAT rates defined for country '%
 BackgroundColorByDefault=Default background colour
 FileWasNotUploaded=A file is selected for attachment but has not yet been uploaded. Click on "Attach file" for this.
 NbOfEntries=Number of entries
-DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode is set to <b>%s</b> in configuration file <b>conf.php</b>.<br>This means that the password database is external to Dolibarr, so changing this field may have no effect.
-PasswordForgotten=Password forgotten?
-AuthenticationMode=Authentication mode
-RequestedUrl=Requested URL
-InformationToHelpDiagnose=This information can be useful for diagnostic purposes
 PrecisionUnitIsLimitedToXDecimals=Dolibarr was setup to limit precision of unit prices to <b>%s</b> decimal places.
 ConfirmSendCardByMail=Do you really want to send the contents of this card by mail to <b>%s</b>?
 Resiliate=Cancel
diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang
index 99131bd5c0c50fd421f8c8bfaf5e74fa03f86572..cae29217cdbc481875baf7a54375034e78a22eb8 100644
--- a/htdocs/langs/en_US/accountancy.lang
+++ b/htdocs/langs/en_US/accountancy.lang
@@ -8,7 +8,11 @@ ACCOUNTING_EXPORT_AMOUNT=Export amount
 ACCOUNTING_EXPORT_DEVISE=Export currency
 Selectformat=Select the format for the file
 ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name
-
+ThisService=This service
+ThisProduct=This product
+DefaultForService=Default for service
+DefaultForProduct=Default for product
+CantSuggest=Can't suggest
 AccountancySetupDoneFromAccountancyMenu=Most setup of the accountancy is done from the menu %s
 ConfigAccountingExpert=Configuration of the module accounting expert
 Journalization=Journalization
@@ -16,11 +20,13 @@ Journaux=Journals
 JournalFinancial=Financial journals
 BackToChartofaccounts=Return chart of accounts
 Chartofaccounts=Chart of accounts
+CurrentDedicatedAccountingAccount=Current dedicated account
+AssignDedicatedAccountingAccount=New account to assign
 
 AccountancyArea=Accountancy area
 AccountancyAreaDescIntro=Usage of the accountancy module is done in several step:
 AccountancyAreaDescActionOnce=The following actions are usually executed one time only, or once per year...
-AccountancyAreaDescActionOnceBis=Next step should be done to save you time in future by suggesting you the correct default accounting account when making thee journalization (writing record in Journals and General ledger)
+AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in future by suggesting you the correct default accounting account when making thee journalization (writing record in Journals and General ledger)
 AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies...
 AccountancyAreaDescChartModel=STEP %s: Create a model of chart of account from menu %s
 AccountancyAreaDescChart=STEP %s: Create or check content of your chart of account from menu %s
@@ -47,7 +53,7 @@ ChangeAndLoad=Change and load
 Addanaccount=Add an accounting account
 AccountAccounting=Accounting account
 AccountAccountingShort=Account
-AccountAccountingSuggest=Accounting account suggest
+AccountAccountingSuggest=Accounting account suggested
 MenuDefaultAccounts=Default accounts
 MenuVatAccounts=Vat accounts
 MenuTaxAccounts=Tax accounts
@@ -167,7 +173,7 @@ DescVentilSupplier=Consult here the list of supplier invoice lines bound or not
 DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account
 DescVentilTodoExpenseReport=Bind expense report lines not already bound with a fee accounting account
 DescVentilExpenseReport=Consult here the list of expense report lines bound (or not) to a fee accounting account
-DescVentilExpenseReportMore=In most cases, if you use configured fees, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button <strong>"%s"</strong>. If account was not set on fees dictionary or if you still has some lines not bound to any account, you will have to make a manual binding from the menu "<strong>%s</strong>".  
+DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button <strong>"%s"</strong>. If account was not set on fees dictionary or if you still has some lines not bound to any account, you will have to make a manual binding from the menu "<strong>%s</strong>".  
 DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account
 
 ValidateHistory=Bind Automatically
@@ -207,11 +213,15 @@ DefaultBindingDesc=This page can be used to set a default account to use to link
 Options=Options
 OptionModeProductSell=Mode sales
 OptionModeProductBuy=Mode purchases
-OptionModeProductSellDesc=Show all products with no accounting account defined for sales.
-OptionModeProductBuyDesc=Show all products with no accounting account defined for purchases.
+OptionModeProductSellDesc=Show all products with accounting account for sales.
+OptionModeProductBuyDesc=Show all products with accounting account for purchases.
 CleanFixHistory=Remove accountancy code from lines that not exists into charts of account
 CleanHistory=Reset all bindings for selected year
 
+WithoutValidAccount=Without valid dedicated account
+WithValidAccount=With valid dedicated account
+ValueNotIntoChartOfAccount=This value of accounting account does not exist into chart of account
+
 ## Dictionary
 Range=Range of accounting account
 Calculated=Calculated
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 746d0ec7d77e907a6d5dbbde3de74a4ad8f987f8..f57dcfdc69d38cb0bd4c02eb12d44698e63785e8 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -354,6 +354,7 @@ Boolean=Boolean (Checkbox)
 ExtrafieldPhone = Phone
 ExtrafieldPrice = Price
 ExtrafieldMail = Email
+ExtrafieldUrl = Url
 ExtrafieldSelect = Select list
 ExtrafieldSelectList = Select from table
 ExtrafieldSeparator=Separator
@@ -398,7 +399,7 @@ EnableAndSetupModuleCron=If you want to have this recurring invoice beeing gener
 ModuleCompanyCodeAquarium=Return an accountancy code built by:<br>%s followed by third party supplier code for a supplier accountancy code,<br>%s followed by third party customer code for a customer accountancy code.
 ModuleCompanyCodePanicum=Return an empty accountancy code.
 ModuleCompanyCodeDigitaria=Accountancy code depends on third party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third party code.  
-Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1 validation, 2=first approval and 3=second approval if amount is enough).<br>Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval is always required.  
+Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).<br>Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval (3 steps) is always required.  
 UseDoubleApproval=Use a 3 steps approval when amount (without tax) is higher than...
 
 # Modules
@@ -1625,7 +1626,7 @@ AddOtherPagesOrServices=Add other pages or services
 AddModels=Add document or numbering templates
 AddSubstitutions=Add keys substitutions
 DetectionNotPossible=Detection not possible
-UrlToGetKeyToUseAPIs=Url to get token to use API (once token has been received it is saved on database user table and will be checked on each future access) 
+UrlToGetKeyToUseAPIs=Url to get token to use API (once token has been received it is saved on database user table and must be provided on each API call) 
 ListOfAvailableAPIs=List of available APIs
 activateModuleDependNotSatisfied=Module "%s" depends on module "%s" that is missing, so module "%1$s" may not work correclty. Please install module "%2$s" or disable module "%1$s" if you want to be safe from any surprise
 CommandIsNotInsideAllowedCommands=The command you try to run is not inside list of allowed commands defined into parameter <strong>$dolibarr_main_restrict_os_commands</strong> into <strong>conf.php</strong> file.
diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang
index 3f4898630ba32b6387fff8155c64a04e169a288a..825c31744e070efcac947ab664c6ff1a16465f18 100644
--- a/htdocs/langs/en_US/bills.lang
+++ b/htdocs/langs/en_US/bills.lang
@@ -446,6 +446,7 @@ PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice templat
 TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0
 MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for deposit invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0
 TerreNumRefModelError=A bill starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module.
+CactusNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for credit notes and %syymm-nnnn for deposit invoices where yy is year, mm is month and nnnn is a sequence with no break and no return to 0
 ##### Types de contacts #####
 TypeContact_facture_internal_SALESREPFOLL=Representative following-up customer invoice
 TypeContact_facture_external_BILLING=Customer invoice contact
diff --git a/htdocs/langs/en_US/commercial.lang b/htdocs/langs/en_US/commercial.lang
index 5e1959d0ecb0ff3e44bea16450018d133cf758e6..a6a0fc22b9e7dbcae355bed9bf855c50d6a1083c 100644
--- a/htdocs/langs/en_US/commercial.lang
+++ b/htdocs/langs/en_US/commercial.lang
@@ -62,7 +62,7 @@ ActionAC_SHIP=Send shipping by mail
 ActionAC_SUP_ORD=Send supplier order by mail
 ActionAC_SUP_INV=Send supplier invoice by mail
 ActionAC_OTH=Other
-ActionAC_OTH_AUTO=Other (automatically inserted events)
+ActionAC_OTH_AUTO=Automatically inserted events
 ActionAC_MANUAL=Manually inserted events
 ActionAC_AUTO=Automatically inserted events
 Stats=Sales statistics
diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang
index 45e8246261aa48f68bffbb3414e4634017950d83..1c1a3bf3245681c8ae11f832719ef5d2f6188c4a 100644
--- a/htdocs/langs/en_US/mails.lang
+++ b/htdocs/langs/en_US/mails.lang
@@ -50,7 +50,6 @@ NbOfEMails=Nb of EMails
 TotalNbOfDistinctRecipients=Number of distinct recipients
 NoTargetYet=No recipients defined yet (Go on tab 'Recipients')
 RemoveRecipient=Remove recipient
-CommonSubstitutions=Common substitutions
 YouCanAddYourOwnPredefindedListHere=To create your email selector module, see htdocs/core/modules/mailings/README.
 EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions variables are replaced by generic values
 MailingAddFile=Attach this file
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index ebd0a55e94cf5cf1df9733b0546aada513128c80..e5d0a5bb9700a30fb68e24076475be7f31f957ac 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -635,7 +635,7 @@ PrintContentArea=Show page to print main content area
 MenuManager=Menu manager
 WarningYouAreInMaintenanceMode=Warning, you are in a maintenance mode, so only login <b>%s</b> is allowed to use application at the moment.
 CoreErrorTitle=System error
-CoreErrorMessage=Sorry, an error occurred. Check the logs or contact your system administrator.
+CoreErrorMessage=Sorry, an error occurred. Contact your system administrator to check the logs or disable $dolibarr_main_prod=1 to get more information.
 CreditCard=Credit card
 FieldsWithAreMandatory=Fields with <b>%s</b> are mandatory
 FieldsWithIsForPublic=Fields with <b>%s</b> are shown on public list of members. If you don't want this, check off the "public" box.
diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang
index c123fed51a5ba77a9b035d7e111952fb934425aa..245f6f3ccc08e716c6f9db530ebb3d074aac3ab5 100644
--- a/htdocs/langs/en_US/members.lang
+++ b/htdocs/langs/en_US/members.lang
@@ -13,7 +13,7 @@ ListOfValidatedPublicMembers=List of validated public members
 ErrorThisMemberIsNotPublic=This member is not public
 ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: <b>%s</b>, login: <b>%s</b>) is already linked to a third party <b>%s</b>. Remove this link first because a third party can't be linked to only a member (and vice versa).
 ErrorUserPermissionAllowsToLinksToItselfOnly=For security reasons, you must be granted permissions to edit all users to be able to link a member to a user that is not yours.
-ThisIsContentOfYourCard=This is details of your card
+ThisIsContentOfYourCard=Hi.<br><br>This is a remind of the information we get about you. Feel free to contact us if something looks wrong.<br><br> 
 CardContent=Content of your member card
 SetLinkToUser=Link to a Dolibarr user
 SetLinkToThirdParty=Link to a Dolibarr third party
diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang
index 45997ef6cb58ecd7633cc3d0fde1128477a088e6..2f0579394eba99180baeaa015d95e21c1d957193 100644
--- a/htdocs/langs/en_US/orders.lang
+++ b/htdocs/langs/en_US/orders.lang
@@ -19,6 +19,7 @@ CustomerOrder=Customer order
 CustomersOrders=Customer orders
 CustomersOrdersRunning=Current customer orders
 CustomersOrdersAndOrdersLines=Customer orders and order lines
+OrdersDeliveredToBill=Customer orders delivered to bill
 OrdersToBill=Customer orders delivered
 OrdersInProcess=Customer orders in process
 OrdersToProcess=Customer orders to process
diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang
index 27b64a4399d4f2e4ed5b4358ddbbb23add8185a9..9bea19a30a213fad409c93fbb931a1107630102a 100644
--- a/htdocs/langs/en_US/products.lang
+++ b/htdocs/langs/en_US/products.lang
@@ -101,6 +101,7 @@ KeywordFilter=Keyword filter
 CategoryFilter=Category filter
 ProductToAddSearch=Search product to add
 NoMatchFound=No match found
+ListOfProductsServices=List of products/services
 ProductAssociationList=List of products/services that are component of this virtual product/package
 ProductParentList=List of virtual products/services with this product as a component
 ErrorAssociationIsFatherOfThis=One of selected product is parent with current product
diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang
index cbbeb092a1aa9fe0b635ef3704cfc8832c70ecda..b85b61bc33449f85feec8b2ab8412c92fe715b15 100644
--- a/htdocs/langs/en_US/sendings.lang
+++ b/htdocs/langs/en_US/sendings.lang
@@ -23,7 +23,7 @@ QtyReceived=Qty received
 QtyInOtherShipments=Qty in other shipments
 KeepToShip=Remain to ship
 OtherSendingsForSameOrder=Other shipments for this order
-SendingsAndReceivingForSameOrder=Shipments and receivings for this order
+SendingsAndReceivingForSameOrder=Shipments and receipts for this order
 SendingsToValidate=Shipments to validate
 StatusSendingCanceled=Canceled
 StatusSendingDraft=Draft
diff --git a/htdocs/langs/en_US/supplier_proposal.lang b/htdocs/langs/en_US/supplier_proposal.lang
index 94c0ef2e03908251d5a2368ae02e78bd598765c3..621d7784e358b4400b2cbf0076180baec27aabb3 100644
--- a/htdocs/langs/en_US/supplier_proposal.lang
+++ b/htdocs/langs/en_US/supplier_proposal.lang
@@ -28,6 +28,7 @@ SupplierProposalStatusClosed=Closed
 SupplierProposalStatusSigned=Accepted
 SupplierProposalStatusNotSigned=Refused
 SupplierProposalStatusDraftShort=Draft
+SupplierProposalStatusValidatedShort=Validated
 SupplierProposalStatusClosedShort=Closed
 SupplierProposalStatusSignedShort=Accepted
 SupplierProposalStatusNotSignedShort=Refused
diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang
index 8a09c66989ece70a7efca265fd525fdffbf06cc1..4a002fab02cd178101eda637b485147608ab587c 100644
--- a/htdocs/langs/en_US/users.lang
+++ b/htdocs/langs/en_US/users.lang
@@ -8,7 +8,7 @@ EditPassword=Edit password
 SendNewPassword=Regenerate and send password
 ReinitPassword=Regenerate password
 PasswordChangedTo=Password changed to: %s
-SubjectNewPassword=Your new password for Dolibarr
+SubjectNewPassword=Your new password for %s
 GroupRights=Group permissions
 UserRights=User permissions
 UserGUISetup=User display setup
diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang
index 229e3dd2941a8e3290bc7097b3775106f218d565..2a0da2ec1a392d02527fb59aa6f7b606c19058e8 100644
--- a/htdocs/langs/es_CL/admin.lang
+++ b/htdocs/langs/es_CL/admin.lang
@@ -1,5 +1,4 @@
 # Dolibarr language file - Source file is en_US - admin
-Chartofaccounts=Gráfico de cuentas
 AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan
 AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib"
 ExampleOfDirectoriesForModelGen=Examples of syntax:<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir
diff --git a/htdocs/langs/es_CL/other.lang b/htdocs/langs/es_CL/other.lang
index 89ebdd4939e1dfc7a3a5a5270267a24d47edc215..1b9b3fc44787e2a94e46e3d5974bffe037e4fdf7 100644
--- a/htdocs/langs/es_CL/other.lang
+++ b/htdocs/langs/es_CL/other.lang
@@ -6,6 +6,3 @@ PredefinedMailContentSendProposal=Buenos días, __CONTACTCIVNAME__ \n\n Nos pone
 NumberOfProposals=Número de cotizaciones en los últimos 12 meses
 NumberOfUnitsProposals=Número de unidades en las cotizaciones en los últimos 12 meses
 EMailTextProposalValidated=La cotización %s que le concierne ha sido validado.
-PropalClosedSignedInDolibarr=Cotización %s firmada en Dolibarr
-PropalClosedRefusedInDolibarr=Cotización %s rechazada en Dolibarr
-Export=Exportar
diff --git a/htdocs/langs/es_MX/accountancy.lang b/htdocs/langs/es_MX/accountancy.lang
index b25be13345e3871446c95cfa05b40bbca617dba0..1195e791ea07873084f4b2472fc247778b774f7e 100644
--- a/htdocs/langs/es_MX/accountancy.lang
+++ b/htdocs/langs/es_MX/accountancy.lang
@@ -4,7 +4,6 @@ ACCOUNTING_EXPORT_DATE=Formato de fecha para el archivo de exportación
 ACCOUNTING_EXPORT_PIECE=Exportar el número de pieza
 ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Exportación con cuenta global
 AccountAccountingSuggest=Sugerencia de cuenta contable
-Reports=Reportes
 Bookkeeping=Libro mayor
 CAHTF=Total de compra al proveedor antes de impuestos
 Processing=Procesando
diff --git a/htdocs/langs/es_MX/banks.lang b/htdocs/langs/es_MX/banks.lang
index cb585733a552f40692f4a039d158548b655a5cc3..81e2d6e77b30339ba802a2d92264560b46e12e53 100644
--- a/htdocs/langs/es_MX/banks.lang
+++ b/htdocs/langs/es_MX/banks.lang
@@ -49,7 +49,6 @@ BankLineConciliated=Transacción conciliada
 CustomerInvoicePayment=Pago de cliente
 WithdrawalPayment=Pago de retiro
 SocialContributionPayment=Pago de impuesto social/fiscal
-TransferDesc=Al crear una transferencia de una de sus cuentas bancarias hacia otra, Dolibarr crea dos registros contables (uno de débito en una cuenta y otro de crédito, del mismo importe, en la otra cuenta. Se utiliza para los dos registros la misma etiqueta de transferencia y la misma fecha)
 TransferFromToDone=La transferencia de <b>%s</b> hacia <b>%s</b> de <b>%s</b> %s ha sido registrada.
 ValidateCheckReceipt=¿Validar este recibo de cheque?
 ConfirmValidateCheckReceipt=¿Seguro que deseas validar este recibo de cheque? Ningún cambio será posible una vez que se valide
diff --git a/htdocs/langs/es_MX/install.lang b/htdocs/langs/es_MX/install.lang
index 1327b3550ba468235ea3ae422672d6074cda533a..5b0120eb61265e3ce6c95e70b2232a6574c711b8 100644
--- a/htdocs/langs/es_MX/install.lang
+++ b/htdocs/langs/es_MX/install.lang
@@ -46,7 +46,6 @@ KeepEmptyIfNoPassword=Deje en blanco si el usuario no tiene contraseña (evite e
 SaveConfigurationFile=Guardar valores
 ServerConnection=Conexión con el servidor
 DatabaseCreation=Creación de bases de datos
-UserCreation=Creación de usuario
 CreateDatabaseObjects=Creación de objetos de la base de datos
 ReferenceDataLoading=Referencia de carga de datos
 TablesAndPrimaryKeysCreation=Creación de Tablas y Llaves primarias
diff --git a/htdocs/langs/es_MX/main.lang b/htdocs/langs/es_MX/main.lang
index 15a19991313d8d076ad28af40d5433b4a6ce056d..3a19fee8ca204e290255f0bc1cc703be523c54d5 100644
--- a/htdocs/langs/es_MX/main.lang
+++ b/htdocs/langs/es_MX/main.lang
@@ -90,6 +90,7 @@ DateOperation=Fecha de operación
 DateOperationShort=Fecha Op.
 DateBuild=Fecha de generación del informe
 DatePayment=Fecha de pago
+UserCreation=Creación de usuario
 HourShort=Hr
 Rate=Tasa
 UseLocalTax=Incluir impuesto
diff --git a/htdocs/langs/es_MX/other.lang b/htdocs/langs/es_MX/other.lang
index a84e58cb5e221a4d8871d932043460a536c25c10..c444411ea1d5ebd738634ca17593ee64813790a4 100644
--- a/htdocs/langs/es_MX/other.lang
+++ b/htdocs/langs/es_MX/other.lang
@@ -1,5 +1,3 @@
 # Dolibarr language file - Source file is en_US - other
 Tools=Herramientas
 Notify_COMPANY_CREATE=Tercero creado
-ShipmentValidatedInDolibarr=Envío %s validado
-Export=Exportar
diff --git a/htdocs/langs/es_PE/accountancy.lang b/htdocs/langs/es_PE/accountancy.lang
index ddd943295ab50bc95a89784dddbbd0e4e5d869d1..8ca8b14dc1ac9f0d5c188243fe5f7d2b4f1f7946 100644
--- a/htdocs/langs/es_PE/accountancy.lang
+++ b/htdocs/langs/es_PE/accountancy.lang
@@ -15,5 +15,4 @@ BackToChartofaccounts=Retornar gráfico de cuentas
 Selectchartofaccounts=Seleccionar un gráfico de cuentas
 Addanaccount=Agregar una cuenta contable
 AccountAccountingSuggest=Cuenta contable sugerida
-Reports=Reportes
 OptionsDeactivatedForThisExportModel=Para este modelo de exportación, las opciones están desactivadas
diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang
index 010ca477b542e58dfa2ee12e85efab16bf895351..ad3d87e9ce7a1c293e1f46fe5b9899a190dc2f78 100644
--- a/htdocs/langs/fr_CA/admin.lang
+++ b/htdocs/langs/fr_CA/admin.lang
@@ -116,8 +116,6 @@ ApiDesc=En activant ce module , Dolibarr devenir un serveur REST pour fournir de
 ApiProductionMode=Activer le mode de production (active l'utilisation d'un cache pour la gestion des services )
 OnlyActiveElementsAreExposed=Seuls les éléments de modules activés sont exposés
 ApiKey=Clé API
-FiscalYears=Années fiscales
-FiscalYearCard=Fiche année fiscale
 NewFiscalYear=Nouvelle année fiscale
 OpenFiscalYear=Ouvrir année fiscale
 CloseFiscalYear=Fermer année fiscale
diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang
index 52ca3321b15b22f141e4f3f7d86fb49728858b36..bd6e2e989e0f7fe58ab285f38f77df920b3aca81 100644
--- a/htdocs/langs/fr_FR/accountancy.lang
+++ b/htdocs/langs/fr_FR/accountancy.lang
@@ -16,23 +16,28 @@ Journaux=Journaux
 JournalFinancial=Journaux financiers
 BackToChartofaccounts=Retour au plan comptable
 Chartofaccounts=Plan comptable
+CurrentDedicatedAccountingAccount=Compte dédié courant
+AssignDedicatedAccountingAccount=Nouveau compte à assigner
 
 AccountancyArea=Espace comptabilité
 AccountancyAreaDescIntro=L'utilisation du module de comptabilité se fait en plusieurs étapes:
 AccountancyAreaDescActionOnce=Les actions suivantes sont habituellement exécutées une seule fois, ou une fois par an ...
+AccountancyAreaDescActionOnceBis=Les prochaines étapes doivent être faite pour vous faire pour gagner du temps à l'avenir en vous proposant le bon compte comptable par défaut lors de la journalisation (écrire des enregistrements dans les journaux et Grand Livre)
 AccountancyAreaDescActionFreq=Les actions suivantes sont habituellement exécutées chaque mois, semaine, ou jour pour les très grandes entreprises ...
 AccountancyAreaDescChartModel=STEP %s: Créer un modèle de plan de compte depuis le menu %s
 AccountancyAreaDescChart=STEP %s: Créer ou vérifier le contenu de votre plan de compte depuis le menu %s
-AccountancyAreaDescBank=STEP %s: Vérifier que la liaison entre les comptes bancaires et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le bon compte comptable par défaut sur vos lignes de paiement. <br>Pour cela, rendez-vous sur la fiche de chaque compte financier. Vous pouvez commencer à partir de la page %s.
-AccountancyAreaDescVat=STEP %s: Vérifiez que la liaison entre le paiement de la TVA et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le compte comptable par défaut correcte sur les enregistrements liés aux paiements de TVA.<br>Vous pouvez définir les comptes comptables à utiliser pour chaque taux de TVA sur la page %s.
-AccountancyAreaDescSal=STEP %s: Vérifier que la liaison entre les paiements de salaires et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le bon compte comptable par défaut sur les enregistrements en rapport avec les paiements des salaires.<br>Pour cela, vous pouvez utiliser l'entrée de menu %s.
-AccountancyAreaDescContrib=STEP %s: Vérifier que la liaison entre les dépenses spéciales (cotisations sociales ou fiscales) et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le bon compte comptable par défaut sur les enregistrements liés aux paiements des cotisations sociales.<br>Pour cela, vous pouvez utiliser l'entrée de menu %s.
-AccountancyAreaDescDonation=STEP %s: Vérifier que la liaison entre les paiements de dons et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le bon compte comptable par défaut sur les enregistrements liés aux paiements de don. <br> Vous pouvez définir le compte dédié pour cela à partir de l'entrée de menu %s.
-AccountancyAreaDescMisc=STEP %s: Vérifier que les lignes de transactions divers et le compte comptable est fait. Compléter les liaisons manquantes.<br>Pour cela, vous pouvez utiliser l'entrée de menu %s.
-AccountancyAreaDescProd=STEP %s: Vérifier que la liaison entre les produits/services et le compte comptable est faite. Compléter les liaisons manquantes. Cela vous fera économiser du temps dans le futur pour les prochaines étapes en vous proposant le bon compte comptable par défaut sur vos lignes de facture. <br> Pour cela, vous pouvez utiliser l'entrée de menu %s.
-
-AccountancyAreaDescCustomer=STEP %s: Vérifier que la liaison entre les lignes de factures client existantes et le compte comptable est faite. Compléter les liaisons manquantes. Une fois que la liaison est terminée, l'application sera en mesure d'enregistrer les opérations dans le Grand Livre en un seul clic.<br>Pour cela, vous pouvez utiliser l'entrée de menu %s.
-AccountancyAreaDescSupplier=STEP %s: Vérifier que la liaison entre les lignes de factures fournisseurs existantes et le compte comptable est faite. Compléter les liaisons manquantes. Une fois que la liaison est terminée, l'application sera en mesure d'enregistrer les opérations dans le Grand Livre en un seul clic. <br> Pour cela, vous pouvez utiliser l'entrée de menu %s.
+AccountancyAreaDescBank=STEP %s: Vérifier que la liaison entre les comptes bancaires et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, rendez-vous sur la fiche de chaque compte financier. Vous pouvez commencer à partir de la page %s.
+AccountancyAreaDescVat=STEP %s: Vérifiez que la liaison entre le paiement de la TVA et le compte comptable est faite. Compléter les liaisons manquantes. Vous pouvez définir les comptes comptables à utiliser pour chaque taux de TVA sur la page %s.
+AccountancyAreaDescExpenseReport=STEP %s: Vérifiez que la liaison entre le type de notes de frais et le compte comptable est faite. Compléter les liaisons manquantes. Vous pouvez définir les comptes comptables à utiliser pour chaque type de ligne de note de frais sur la page %s.
+AccountancyAreaDescSal=STEP %s: Vérifier que la liaison entre les paiements de salaires et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s.
+AccountancyAreaDescContrib=STEP %s: Vérifier que la liaison entre les dépenses spéciales (cotisations sociales ou fiscales) et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s.
+AccountancyAreaDescDonation=STEP %s: Vérifier que la liaison entre les paiements de dons et le compte comptable est faite. Compléter les liaisons manquantes. Vous pouvez définir le compte dédié pour cela à partir de l'entrée de menu %s.
+AccountancyAreaDescMisc=STEP %s: Vérifier que les lignes de transactions divers et le compte comptable est fait. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s.
+AccountancyAreaDescProd=STEP %s: Vérifier que la liaison entre les produits/services et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s.
+AccountancyAreaDescLoan=STEP %s: Vérifier que la liaison entre les paiement de prêts et les comptes comptables est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s.
+
+AccountancyAreaDescCustomer=STEP %s: Vérifier que la liaison entre les lignes de factures client existantes et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s.
+AccountancyAreaDescSupplier=STEP %s: Vérifier que la liaison entre les lignes de factures fournisseurs existantes et le compte comptable est faite. Compléter les liaisons manquantes. Pour cela, vous pouvez utiliser l'entrée de menu %s.
 AccountancyAreaDescWriteRecords=STEP %s: Ecrire les transactions dans le Grand Livre. Pour cela, aller sur chaque Journal, et cliquer sur le bouton "Enregistrer les opérations dans le Grand Livre".
 AccountancyAreaDescAnalyze=STEP %s: Ajouter ou modifier les opérations existantes et générer des rapports et des exportations.
 
@@ -46,11 +51,16 @@ AccountAccounting=Compte comptable
 AccountAccountingShort=Compte
 AccountAccountingSuggest=Suggestion du compte
 MenuDefaultAccounts=Comptes par défaut
+MenuVatAccounts=Compte TVA
+MenuTaxAccounts=Comptes charges
+MenuExpenseReportAccounts=Comptes notes de frais
+MenuLoanAccounts=Comptes emprunts
 MenuProductsAccounts=Compte produits
 ProductsBinding=Comptes produits
 Ventilation=Liés aux comptes
 CustomersVentilation=Liaison factures client
 SuppliersVentilation=Liaison factures fournisseur
+ExpenseReportsVentilation=Liaison notes de frais
 CreateMvts=Créer nouvelle transaction
 UpdateMvts=Modification d'une transaction
 WriteBookKeeping=Ventiler les opérations dans le Grand Livre
@@ -58,16 +68,21 @@ Bookkeeping=Grand livre
 AccountBalance=Balance des comptes
 
 CAHTF=Total achat fournisseur HT
+TotalExpenseReport=Total note de frais
 InvoiceLines=Lignes de factures à ventiler
 InvoiceLinesDone=Lignes de factures liées
+ExpenseReportLines=Lignes de notes de frais à lier
+ExpenseReportLinesDone=Lignes de notes de frais liées
 IntoAccount=Lier ligne avec le compte comptable
 
+
 Ventilate=Lier
 LineId=Id ligne
 Processing=Traitement en cours
 EndProcessing=Fin du traitement
 SelectedLines=Lignes sélectionnées
 Lineofinvoice=Ligne de la facture
+LineOfExpenseReport=Ligne de note de frais
 NoAccountSelected=Pas de compte comptable sélectionné
 VentilatedinAccount=Liée avec succès sur compte comptable
 NotVentilatedinAccount=Non lié au compte comptable
@@ -93,12 +108,12 @@ ACCOUNTING_SOCIAL_JOURNAL=Journal de paie
 
 ACCOUNTING_ACCOUNT_TRANSFER_CASH=Compte comptable de tranfert
 ACCOUNTING_ACCOUNT_SUSPENSE=Compte comptable d'attente
-DONATION_ACCOUNTINGACCOUNT=Compte où enregistrer les dons
+DONATION_ACCOUNTINGACCOUNT=Compte comptable pour l'enregistrement des dons
 
-ACCOUNTING_PRODUCT_BUY_ACCOUNT=Compte comptable par défaut pour les produits achetés (si non défini dans la fiche produit)
-ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Compte comptable par défaut pour les produits vendus (si non défini dans la fiche produit)
-ACCOUNTING_SERVICE_BUY_ACCOUNT=Compte comptable par défaut pour les services achetés (si non défini dans la fiche service)
-ACCOUNTING_SERVICE_SOLD_ACCOUNT=Compte comptable par défaut pour les services vendus (si non défini dans la fiche service)
+ACCOUNTING_PRODUCT_BUY_ACCOUNT=Compte comptable par défaut pour les produits achetés (utilisé si non défini dans la fiche produit)
+ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Compte comptable par défaut pour les produits vendus (utilisé si non défini dans la fiche produit)
+ACCOUNTING_SERVICE_BUY_ACCOUNT=Compte comptable par défaut pour les services achetés (utilisé si non défini dans la fiche service)
+ACCOUNTING_SERVICE_SOLD_ACCOUNT=Compte comptable par défaut pour les services vendus (utilisé si non défini dans la fiche service)
 
 Doctype=Type de documents
 Docdate=Date
@@ -119,11 +134,13 @@ ConfirmDeleteMvt=Cela supprimera toutes les lignes du Grand Livre pour l'année
 ConfirmDeleteMvtPartial=Ceci va supprimer la(les) ligne(s) sélectionnée(s) du Grand Livre
 DelBookKeeping=Supprimer les écritures du grand livre
 FinanceJournal=Journal de trésorerie
+ExpenseReportsJournal=Journal des notes de frais
 DescFinanceJournal=Journal de trésorerie comprenant tous les types de paiements par compte bancaire / caisse
 DescJournalOnlyBindedVisible=Ceci est une vue de enregistrements qui sont liés à un compte comptable produits et qui peuvent être enregistrées dans le Grand Livre.
 VATAccountNotDefined=Compte de la TVA non défini
 ThirdpartyAccountNotDefined=Compte pour le tiers non défini
 ProductAccountNotDefined=Compte pour le produit non défini
+FeeAccountNotDefined=Compte de charge non défini
 BankAccountNotDefined=Compte pour la banque non défini
 CustomerInvoicePayment=Paiement de facture client
 ThirdPartyAccount=Comptes de tiers
@@ -150,6 +167,10 @@ ChangeAccount=Modifier le compte comptable produit/service pour les lignes séle
 Vide=-
 DescVentilSupplier=Consultez ici la liste des lignes de facture fournisseur liées ou pas encore liées à un compte comptable produit
 DescVentilDoneSupplier=Consultez ici la liste des lignes de factures fournisseur et leur compte comptable
+DescVentilTodoExpenseReport=Lier les lignes de note de frais par encore liées à un compte comptable
+DescVentilExpenseReport=Consultez ici la liste des lignes de notes de frais liées (ou non) à un compte comptable
+DescVentilExpenseReportMore=In most cases, if you use configured fees, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button <strong>"%s"</strong>. If account was not set on fees dictionary or if you still has some lines not bound to any account, you will have to make a manual binding from the menu "<strong>%s</strong>".
+DescVentilDoneExpenseReport=Consultez ici la liste des lignes des notes de frais et leur compte comptable
 
 ValidateHistory=Lier automatiquement
 AutomaticBindingDone=Liaison automatique faite
@@ -188,11 +209,15 @@ DefaultBindingDesc=Cette page peut être utilisée pour définir un compte par d
 Options=Options
 OptionModeProductSell=Mode ventes
 OptionModeProductBuy=Modes achats
-OptionModeProductSellDesc=Afficher tous les produits/services n'ayant pas de compte comptable défini pour les ventes.
-OptionModeProductBuyDesc=Afficher tous les produits/services n'ayant pas de compte comptable défini pour les achats.
+OptionModeProductSellDesc=Afficher tous les produits/services avec le compte comptable pour les ventes.
+OptionModeProductBuyDesc=Afficher tous les produits/services avec le compte comptable pour les achats.
 CleanFixHistory=Effacer les données comptables des lignes qui n'existent pas dans le plan comptable
 CleanHistory=Réinitialiser tous lesliens pour l'année sélectionnée
 
+WithoutValidAccount=Sans compte dédié valide
+WithValidAccount=Avec un compte dédié valide
+ValueNotIntoChartOfAccount=Cette valeur de compte comptable n'existe pas dans le plan comptable
+
 ## Dictionary
 Range=Plage de comptes
 Calculated=Calculé
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index 0d4e90be88728dc0e38ddd9d3d45afe17341b16a..e956c203058d7114c22713cf6f64bfad979f4395 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -58,8 +58,8 @@ ErrorCodeCantContainZero=Erreur, le code ne peut contenir la valeur 0
 DisableJavascript=Désactive les fonctions Javascript et Ajax (Recommandé pour les personnes aveugles ou navigateurs text).
 UseSearchToSelectCompanyTooltip=Si vous avez un nombre important de tiers (>100 000), vous pourrez améliorer les performances en positionnant la constante COMPANY_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limité au début des chaines.
 UseSearchToSelectContactTooltip=Si vous avez un nombre important de contacts (>100 000), vous pourrez améliorer les performances en positionnant la constante CONTACT_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limité au début des chaines.
-DelaiedFullListToSelectCompany=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste des tiers (Cela peut augmenter les performances si vous avez un grand nombre de tiers)
-DelaiedFullListToSelectContact=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste des contacts (Cela peut augmenter les performances si vous avez un grand nombre de contacts)
+DelaiedFullListToSelectCompany=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste déroulante des tiers (Cela peut augmenter les performances si vous avez un grand nombre de contacts)
+DelaiedFullListToSelectContact=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste déroulante des contacts/adresses (Cela peut augmenter les performances si vous avez un grand nombre de contacts)
 NumberOfKeyToSearch=Nb carac. déclenchant recherche : %s
 NotAvailableWhenAjaxDisabled=Non disponible quand Ajax est désactivé
 AllowToSelectProjectFromOtherCompany=Sur les éléments d'un tiers, autorise la sélection d'un projet lié à un autre tiers
@@ -1017,7 +1017,7 @@ SimpleNumRefModelDesc=Renvoie le numéro sous la forme %syymm-nnnn où yy est l'
 ShowProfIdInAddress=Afficher l'identifiant professionnel dans les adresses sur les documents
 ShowVATIntaInAddress=Cacher l'identifiant de TVA Intracommunautaire dans les adresses sur les documents
 TranslationUncomplete=Traduction partielle
-SomeTranslationAreUncomplete=Certaines langues sont traduites partiellement ou peuvent contenir des erreurs. Si vous en détectez, vous pouvez corriger les fichiers langues depuis  <a href="http://transifex.com/projects/p/dolibarr/" target="_blank">http://transifex.com/projects/p/dolibarr/</a>.
+SomeTranslationAreUncomplete=Certaines langues sont traduites partiellement ou peuvent contenir des erreurs. Si vous en détectez, vous pouvez corriger les fichiers langues depuis  <a href="https://transifex.com/projects/p/dolibarr/" target="_blank">http://transifex.com/projects/p/dolibarr/</a>.
 MAIN_DISABLE_METEO=Désactiver la vue météo
 TestLoginToAPI=Tester connexion à l'API
 ProxyDesc=Certaines fonctions de Dolibarr nécessitent que le serveur ait accès à internet. Définissez ici les paramètres de ces accès. Si le serveur Dolibarr est derrière un proxy, ces paramètres indiquent à Dolibarr comment le traverser.
@@ -1062,7 +1062,7 @@ TotalNumberOfActivatedModules=Nombre total de modules/fonctionnalités activés:
 YouMustEnableOneModule=Vous devez activer au moins une fonctionnalité
 ClassNotFoundIntoPathWarning=La classe %s n'a pas été trouvée dans le chemin PHP
 YesInSummer=Oui en été
-OnlyFollowingModulesAreOpenedToExternalUsers=Remarque, seuls les modules suivants sont ouverts aux utilisateurs externes (quelles qu'en soient les permissions de ces utilisateurs):
+OnlyFollowingModulesAreOpenedToExternalUsers=Remarque, seuls les modules suivants sont ouverts aux utilisateurs externes (quelles qu'en soient les permissions de ces utilisateurs) et seulement si les permissions leur ont été données:
 SuhosinSessionEncrypt=Stockage des sessions chiffrées par Suhosin
 ConditionIsCurrently=La condition est actuellement %s
 YouUseBestDriver=Vous utilisez le driver %s qui est le driver recommandé actuellement.
@@ -1140,6 +1140,8 @@ FreeLegalTextOnSupplierProposal=Texte libre sur les demande de tarifs fournisseu
 WatermarkOnDraftSupplierProposal=Filigrane sur le brouillon de la demande de prix-fournisseur (aucun si vide)
 BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Demander le compte bancaire cible durant la création de la demande de prix fournisseur
 WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Demander pour l'entrepôt-source pour la commande
+##### Suppliers Orders #####
+BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Demandez le compte bancaire destination de commande fournisseur
 ##### Orders #####
 OrdersSetup=Configuration du module Commandes
 OrdersNumberingModules=Modèles de numérotation des commandes
@@ -1320,7 +1322,7 @@ ViewProductDescInFormAbility=Visualisation des descriptions produits dans les fo
 MergePropalProductCard=Ajoute dans l'onglet Fichiers joints des produits/services, une option pour fusionner le document PDF du produit au PDF des propositions Azur si le produit/services est inclut dans la proposition.
 ViewProductDescInThirdpartyLanguageAbility=Visualisation des descriptions de produits dans la langue du tiers
 UseSearchToSelectProductTooltip=Si vous avez un nombre important de produits (>100 000), vous pourrez améliorer les performances en positionnant la constante PRODUCT_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limité au début des chaines.
-UseSearchToSelectProduct=Utilisez un champ avec auto-complétion pour choisir les produits (plutôt qu'une liste déroulante).
+UseSearchToSelectProduct=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste déroulante des produits (Cela peut augmenter les performances si vous avez un grand nombre de contacts)
 SetDefaultBarcodeTypeProducts=Type de code-barre utilisé par défaut pour les produits
 SetDefaultBarcodeTypeThirdParties=Type de code-barre utilisé par défaut pour les tiers
 UseUnits=Définir une unité de mesure pour la quantité lors de l'édition de lignes de commande, proposition ou facture
@@ -1632,3 +1634,8 @@ SamePriceAlsoForSharedCompanies=Si vous utilisez un module multi-société, avec
 ModuleEnabledAdminMustCheckRights=Le module a été activé. Les permissions pour le(s) module(s) activé(s) ont été donnés aux utilisateurs admin uniquement. Vous devrez peut-être accorder des autorisations aux autres utilisateurs manuellement si nécessaire.
 UserHasNoPermissions=Cet utilisateur n'a pas de permission définie
 TypeCdr=Utilisez "Aucune" si la date du terme de paiement est la date de la facture plus un delta en jours (delta est le champ "Nb de jours") <br> Utilisez "À la fin du mois", si, après le delta, la date doit être augmentée pour atteindre la fin du mois (+ un «Offset» optionnel en jours) <br> Utilisez "Coutant/Suivant" pour que la date du terme de paiement soit la premier Nième jour du mois qui suit (N est stocké dans le champ "Nb de jours")
+##### Resource ####
+ResourceSetup=Configuration du module Ressource
+UseSearchToSelectResource=Utilisez un champ avec auto-complétion pour choisir les ressources (plutôt qu'une liste déroulante).
+DisabledResourceLinkUser=Supprimer le lien entre la ressource et l'utilisateur
+DisabledResourceLinkContact=Désactiver le lient entre la ressource et le contact/adresse
diff --git a/htdocs/langs/fr_FR/agenda.lang b/htdocs/langs/fr_FR/agenda.lang
index 796488899dcc261196b0f6024d90e799dfb2e664..3d6dc494be42f0d84deb8d8552ff9c62e00de740 100644
--- a/htdocs/langs/fr_FR/agenda.lang
+++ b/htdocs/langs/fr_FR/agenda.lang
@@ -54,6 +54,7 @@ ShipmentValidatedInDolibarr=Expédition %s validée
 ShipmentClassifyClosedInDolibarr=Expédition %s classée payée
 ShipmentUnClassifyCloseddInDolibarr=Expédition %s réouverte
 ShipmentDeletedInDolibarr=Expédition %s supprimée
+OrderCreatedInDolibarr=Commande %s créée
 OrderValidatedInDolibarr=Commande %s validée
 OrderDeliveredInDolibarr=Commande %s classée Livrée
 OrderCanceledInDolibarr=Commande %s annulée
diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang
index 9534504292198882bb609a6676d80587ee68202d..18963c824a8f542e08212120de241023fc0347af 100644
--- a/htdocs/langs/fr_FR/banks.lang
+++ b/htdocs/langs/fr_FR/banks.lang
@@ -55,19 +55,20 @@ AccountCard=Fiche compte
 DeleteAccount=Suppression de compte
 ConfirmDeleteAccount=Êtes-vous sûr de vouloir effacer cet événement ?
 Account=Compte
-BankTransactionByCategories=Écritures bancaires par rubriques
-BankTransactionForCategory=Écritures bancaires pour la rubrique <b>%s</b>
+BankTransactionByCategories=Écritures bancaires par tags/catégories
+BankTransactionForCategory=Écritures bancaires pour le tag/catégorie <b>%s</b>
 RemoveFromRubrique=Supprimer lien avec rubrique
 RemoveFromRubriqueConfirm=Êtes-vous sûr de vouloir supprimer le lien entre la transaction et la catégorie ?
 ListBankTransactions=Liste des écritures
 IdTransaction=Id écriture
 BankTransactions=Écritures bancaires
 ListTransactions=Liste écritures
-ListTransactionsByCategory=Liste écritures/rubrique
+ListTransactionsByCategory=Liste écritures/catégories
 TransactionsToConciliate=Écritures à rapprocher
 Conciliable=Rapprochable
 Conciliate=Rapprocher
 Conciliation=Rapprochement
+ReconciliationLate=Rapprochement en retard
 IncludeClosedAccount=Inclure comptes fermés
 OnlyOpenedAccount=Seulement les comptes ouverts
 AccountToCredit=Compte à créditer
@@ -80,7 +81,7 @@ StatusAccountClosed=Fermé
 AccountIdShort=Numéro
 LineRecord=Ecriture
 AddBankRecord=Ajouter écriture
-AddBankRecordLong=Saisie d'une écriture manuelle hors facture
+AddBankRecordLong=Saisie d'une écriture manuelle
 ConciliatedBy=Rapproché par
 DateConciliating=Date rapprochement
 BankLineConciliated=Écriture rapprochée
diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang
index e2ab618fd30e22dca2be5db9f3dd3e3517f2b5ab..0fef037cd3adbf4bf8ccdb04448a958a9228919c 100644
--- a/htdocs/langs/fr_FR/bills.lang
+++ b/htdocs/langs/fr_FR/bills.lang
@@ -421,6 +421,7 @@ ShowUnpaidAll=Afficher tous les impayés
 ShowUnpaidLateOnly=Afficher uniquement les factures impayées en retard
 PaymentInvoiceRef=Paiement facture %s
 ValidateInvoice=Valider facture
+ValidateInvoices=Factures validées
 Cash=Liquide
 Reported=Différé
 DisabledBecausePayments=Non disponible car il existe des paiements
@@ -482,4 +483,5 @@ ToCreateARecurringInvoiceGene=Pour générer de futures factures régulièrement
 ToCreateARecurringInvoiceGeneAuto=Si vous devez utiliser de telles factures, demandez à votre administrateur d'activer le module <strong>%s</strong>. Notez que les deux méthodes de générations de factures (manuelles et automatiques) peuvent être utilisées simultanément sans risque de création de doublon.
 DeleteRepeatableInvoice=Supprimer facture modèle
 ConfirmDeleteRepeatableInvoice=Est-ce votre sûr de vouloir supprimer la facture modèle ?
-
+CreateOneBillByThird=Créer une facture par tiers (autrement, une facture par commande)
+BillCreated=%s facture(s) créée(s)
diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang
index 1f75b228f8199fe96d5777b1d4773bece0cd0b39..5671adf71aac79f1ff87c2785da04267f6b8a127 100644
--- a/htdocs/langs/fr_FR/companies.lang
+++ b/htdocs/langs/fr_FR/companies.lang
@@ -77,6 +77,7 @@ VATIsUsed=Assujetti à la TVA
 VATIsNotUsed=Non assujetti à la TVA
 CopyAddressFromSoc=Remplir avec l'adresse du tiers
 ThirdpartyNotCustomerNotSupplierSoNoRef=Ce tiers n'est ni client ni fournisseur. il n'y a pas d'objet référent.
+PaymentBankAccount=Compte bancaire paiements
 ##### Local Taxes #####
 LocalTax1IsUsed=Assujetti à la deuxième taxe
 LocalTax1IsUsedES= Assujetti à RE
@@ -172,6 +173,12 @@ ProfId3FR=Id. prof. 3 (NAF-APE)
 ProfId4FR=Id. prof. 4 (RCS/RM)
 ProfId5FR=-
 ProfId6FR=-
+ProfId1GA=Id. prof. 1 (NIF)
+ProfId2GA=Id. prof. 2 (RCCM)
+ProfId3GA=Id. prof. 3 (CAE)
+ProfId4GA=Id. prof. 4
+ProfId5GA=-
+ProfId6GA=-
 ProfId1GB=Numéro d'enregistrement
 ProfId2GB=-
 ProfId3GB=SIC
@@ -271,7 +278,7 @@ DefaultContact=Contact par défaut
 AddThirdParty=Créer tiers
 DeleteACompany=Supprimer une société
 PersonalInformations=Informations personnelles
-AccountancyCode=Code compta
+AccountancyCode=Compte comptable
 CustomerCode=Code client
 SupplierCode=Code fournisseur
 CustomerCodeShort=Code client
diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang
index b572caed5f18785e18c8ce4f80017d44643ea270..d6b155ba5587d9e6468885a76a2505e5bf798890 100644
--- a/htdocs/langs/fr_FR/compta.lang
+++ b/htdocs/langs/fr_FR/compta.lang
@@ -86,6 +86,7 @@ Refund=Rembourser
 SocialContributionsPayments=Paiements de charges fiscales/sociales
 ShowVatPayment=Affiche paiement TVA
 TotalToPay=Total à payer
+BalanceVisibilityDependsOnSortAndFilters=Le solde est visible dans cette liste que si la table est triée en ordre croissant sur %s et filtré pour 1 compte bancaire
 CustomerAccountancyCode=Compte comptable client
 SupplierAccountancyCode=Compte comptable fournisseur
 CustomerAccountancyCodeShort=Compte comptable client
@@ -184,11 +185,11 @@ CalculationRuleDescSupplier=Selon le fournisseur, choisissez le mode approprié
 TurnoverPerProductInCommitmentAccountingNotRelevant=Le chiffre d'affaires par produit, dans une comptabilité en mode <b>comptabilité de caisse</b> n'est pas définissable. Ce rapport n'est disponible qu'en mode de comptabilité dit <b>comptabilité d'engagement</b> (voir la configuration du module de comptabilité).
 CalculationMode=Mode de calcul
 AccountancyJournal=Code journal comptabilité
-ACCOUNTING_VAT_SOLD_ACCOUNT=Compte comptable par défaut pour l'encaissement de TVA (TVA sur les ventes)
-ACCOUNTING_VAT_BUY_ACCOUNT=Compte comptable par défaut pour le paiement de la TVA (TVA sur les achats)
+ACCOUNTING_VAT_SOLD_ACCOUNT=Compte comptable par défaut pour l'encaissement de TVA - TVA sur les ventes (utilisé si non défini au niveau de la configuration du dictionnaire de TVA)
+ACCOUNTING_VAT_BUY_ACCOUNT=Compte comptable par défaut pour le paiement de la TVA - TVA sur les achats (utilisé si non défini au niveau de la configuration du dictionnaire de TVA)
 ACCOUNTING_VAT_PAY_ACCOUNT=Compte comptable par défaut pour le paiement de la TVA
-ACCOUNTING_ACCOUNT_CUSTOMER=Compte comptable par défaut des tiers clients
-ACCOUNTING_ACCOUNT_SUPPLIER=Compte comptable par défaut des tiers fournisseurs
+ACCOUNTING_ACCOUNT_CUSTOMER=Compte comptable par défaut des tiers clients (utilisé si non défini au niveau de la fiche Tiers)
+ACCOUNTING_ACCOUNT_SUPPLIER=Compte comptable par défaut des tiers fournisseurs (utilisé si non défini au niveau de la fiche Tiers)
 CloneTax=Cloner une charge sociale/fiscale
 ConfirmCloneTax=Confirmez le clone du paiement de charge sociale/fiscale
 CloneTaxForNextMonth=Cloner pour le mois suivant
diff --git a/htdocs/langs/fr_FR/ecm.lang b/htdocs/langs/fr_FR/ecm.lang
index 966ce8e4bde0480a30ec7c966d348ef1a023463a..8676f6323aa340bd2867ba43b5f263b5bbc3d8a5 100644
--- a/htdocs/langs/fr_FR/ecm.lang
+++ b/htdocs/langs/fr_FR/ecm.lang
@@ -32,6 +32,7 @@ ECMDocsByProducts=Documents associés aux produits
 ECMDocsByProjects=Documents associés aux projets
 ECMDocsByUsers=Documents associés aux utilisateurs
 ECMDocsByInterventions=Documents associés aux interventions
+ECMDocsByExpenseReports=Documents associés aux notes de frais
 ECMNoDirectoryYet=Aucun répertoire créé
 ShowECMSection=Afficher répertoire
 DeleteSection=Suppression répertoire
diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang
index c36cb8bf027c128add55c5edb51374c2f6f215a7..b5781633de67d79c2732f916b85de7ec310bd80b 100644
--- a/htdocs/langs/fr_FR/errors.lang
+++ b/htdocs/langs/fr_FR/errors.lang
@@ -69,7 +69,7 @@ ErrorLDAPSetupNotComplete=Le matching Dolibarr-LDAP est incomplet.
 ErrorLDAPMakeManualTest=Un fichier .ldif a été généré dans le répertoire %s. Essayez de charger ce fichier manuellement depuis la ligne de commande pour plus de détail sur l'erreur.
 ErrorCantSaveADoneUserWithZeroPercentage=Impossible de sauver une action à l'état non commencé avec un utilisateur défini comme ayant fait l'action.
 ErrorRefAlreadyExists=La référence utilisée pour la création existe déjà
-ErrorPleaseTypeBankTransactionReportName=Veuillez saisir le nom de relevé bancaire sur lequel l'écriture est constatée (Format AAAAMM de préférence ou AAAAMMJJ)
+ErrorPleaseTypeBankTransactionReportName=Choisissez le relevé bancaire sur lequel la ligne est rapportées (Format AAAAMM ou AAAAMMJJ)
 ErrorRecordHasChildren=Impossible de supprimer l'enregistrement car il possède des enregistrements fils.
 ErrorRecordIsUsedCantDelete=Ne peut effacer l'enregistrement.  Ce dernier est déjà utilisé ou inclut dans un autre élément.
 ErrorModuleRequireJavascript=Le javascript ne doit pas être désactivé pour que cette fonctionnalité soit utilisable. Pour activer/désactiver l'utilisation de javascript, allez dans le menu Accueil->Configuration->Affichage.
@@ -131,7 +131,7 @@ ErrorWarehouseMustDiffers=Les entrepôts source et destination doivent être dif
 ErrorBadFormat=Mauvais format
 ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Erreur, cet adhérent n'ait pas encore lié à un tiers. Lier le tier à un tiers existant ou créer un nouveau tiers avant de créer une adhésion avec facture.
 ErrorThereIsSomeDeliveries=Erreur, il y a des bordereaux de réception liées à ces expéditions. La suppression est refusée.
-ErrorCantDeletePaymentReconciliated=Impossible d'effacer un paiement qui a généré une écriture bancaire qui a été rapprochée
+ErrorCantDeletePaymentReconciliated=Impossible d'effacer un paiement qui a généré une écriture sur le compte bancaire et qui a été rapprochée.
 ErrorCantDeletePaymentSharedWithPayedInvoice=Impossible d'effacer un paiement qui porte sur au moins une facture qui est à l'état payée.
 ErrorPriceExpression1=Ne peut assigner la constante '%s'
 ErrorPriceExpression2=Ne peut redéfinir la fonction '%s'
@@ -177,6 +177,7 @@ ErrorStockIsNotEnoughToAddProductOnProposal=Le stock du produit %s est insuffisa
 ErrorFailedToLoadLoginFileForMode=Impossible d'obtenir le fichier de connexion pour le mode '%s'.
 ErrorModuleNotFound=Fichier du module non trouvé.
 ErrorFieldAccountNotDefinedForBankLine=Valeur du compte comptable non défini pour la ligne de bank source %s
+ErrorBankStatementNameMustFollowRegex=Erreur, le nom de relevé bancaire doit suivre la règle de syntaxe suivante %s
 
 # Warnings
 WarningPasswordSetWithNoAccount=Un mot de passe a été fixé pour cet adhérent. Cependant, aucun compte d'utilisateur n'a été créé. Donc, ce mot de passe est stocké, mais ne peut être utilisé pour accéder à Dolibarr. Il peut être utilisé par un module/interface externe, mais si vous n'avez pas besoin de définir ni login ni mot de passe pour un adhérent, vous pouvez désactiver l'option «Gérer un login pour chaque adhérent" depuis la configuration du module Adhérents. Si vous avez besoin de gérer un login, mais pas de mot de passe, vous pouvez laisser ce champ vide pour éviter cet avertissement. Remarque: L'email peut également être utilisé comme login si l'adhérent est lié à un utilisateur.
diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang
index 267c665090a7fa948034d0dbf9c4b41759b8e4e4..b032f361b019404f68fc4173ab06e276fad7a383 100644
--- a/htdocs/langs/fr_FR/install.lang
+++ b/htdocs/langs/fr_FR/install.lang
@@ -175,7 +175,7 @@ MigrationReopeningContracts=Réouverture des contrats qui ont au moins un servic
 MigrationReopenThisContract=Réouverture contrat %s
 MigrationReopenedContractsNumber=%s contrats modifiés
 MigrationReopeningContractsNothingToUpdate=Pas ou plus de contrats à ré-ouvrir.
-MigrationBankTransfertsUpdate=Mise à jour des liens entre écriture bancaire et un transfert entre compte
+MigrationBankTransfertsUpdate=Mise à jour des liens entre l'écriture en banque et le virement
 MigrationBankTransfertsNothingToUpdate=Aucun lien non à jour
 MigrationShipmentOrderMatching=Mise à jour bon expédition
 MigrationDeliveryOrderMatching=Mise à jour bon réception
diff --git a/htdocs/langs/fr_FR/loan.lang b/htdocs/langs/fr_FR/loan.lang
index c3114967ce0da2229b7e89ccc80546788a1ba8a1..612ba145f1898859a1e6d98ca22e3ff5b61c14db 100644
--- a/htdocs/langs/fr_FR/loan.lang
+++ b/htdocs/langs/fr_FR/loan.lang
@@ -4,6 +4,7 @@ Loans=Emprunts
 NewLoan=Nouvel emprunt
 ShowLoan=Montrer emprunt
 PaymentLoan=Paiement emprunt
+LoanPayment=Paiement du prêt
 ShowLoanPayment=Montrer paiement de l'emprunt
 LoanCapital=Capital
 Insurance=Assurance
@@ -11,7 +12,7 @@ Interest=Intérêt
 Nbterms=Nombre de termes
 LoanAccountancyCapitalCode=Compte comptable capital
 LoanAccountancyInsuranceCode=Compte comptable assurance
-LoanAccountancyInterestCode=Compte comptable intérêt
+LoanAccountancyInterestCode=Compte comptable intérêts
 ConfirmDeleteLoan=Confirmer la suppression de cet emprunt ?
 LoanDeleted=Emprunt supprimé avec succès
 ConfirmPayLoan=Classer cet emprunt comme payé
@@ -44,6 +45,6 @@ GoToPrincipal=%s remboursera le principal (capital)
 YouWillSpend=Vous allez dépenser %s pour l'année %s
 # Admin
 ConfigLoan=Configuration du module Emprunt
-LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Code comptable par défaut pour le capital
-LOAN_ACCOUNTING_ACCOUNT_INTEREST=Code comptable par défaut pour les intérêts
-LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Code comptable par défaut pour l'assurance
+LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Compte comptable capital par défaut
+LOAN_ACCOUNTING_ACCOUNT_INTEREST=Compte comptable intérêt par défaut
+LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Compte comptable assurance par défaut
diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang
index a4da0538d1de185b04186566090ecd126d501509..c69387908a421d24eb94837045c139b2d4e2ad64 100644
--- a/htdocs/langs/fr_FR/main.lang
+++ b/htdocs/langs/fr_FR/main.lang
@@ -62,6 +62,7 @@ ErrorCantLoadUserFromDolibarrDatabase=Impossible de trouver l'utilisateur <b>%s<
 ErrorNoVATRateDefinedForSellerCountry=Erreur, aucun taux tva défini pour le pays '%s'.
 ErrorNoSocialContributionForSellerCountry=Erreur, pas de types de charges sociales/fiscales définies pour le pays '%s'.
 ErrorFailedToSaveFile=Erreur, l'enregistrement du fichier a échoué.
+ErrorCannotAddThisParentWarehouse=Vous essayez d'ajouter un entrepôt parent qui est déjà un enfant de l'entrepôt courant
 NotAuthorized=Vous n'êtes pas autorisé pour cette action.
 SetDate=Définir date
 SelectDate=Sélectionnez une date
@@ -127,6 +128,7 @@ Activate=Activer
 Activated=Activé
 Closed=Clôturé
 Closed2=Fermé
+NotClosed=Non fermé
 Enabled=Actif
 Deprecated=Obsolète
 Disable=Désactiver
@@ -160,6 +162,7 @@ Go=Aller
 Run=Lancer
 CopyOf=Copie de
 Show=Voir
+Hide=Cacher
 ShowCardHere=Voir la fiche ici
 Search=Rechercher
 SearchOf=Recherche de
@@ -512,6 +515,7 @@ ReportPeriod=Période d'analyse
 ReportDescription=Description
 Report=Rapport
 Keyword=Mot-clé
+Origin=Origine
 Legend=Légende
 Fill=Remplir
 Reset=Vider
@@ -566,6 +570,7 @@ TextUsedInTheMessageBody=Corps du message
 SendAcknowledgementByMail=Envoi A.R. par email
 EMail=Email
 NoEMail=Pas d'email
+Email=Email
 NoMobilePhone=Pas de téléphone portable
 Owner=Propriétaire
 FollowingConstantsWillBeSubstituted=Les constantes suivantes seront substituées par leur valeur correspondante.
@@ -703,7 +708,7 @@ PublicUrl=URL publique
 AddBox=Ajouter boite
 SelectElementAndClickRefresh=Sélectionnez un élément et cliquez sur Rafraichir
 PrintFile=Imprimer fichier %s
-ShowTransaction=Afficher transaction sur compte bancaire
+ShowTransaction=Afficher l'écriture sur le compte bancaire
 GoIntoSetupToChangeLogo=Allez dans Accueil - Configuration - Société/institution pour changer le  logo ou aller dans Accueil - Configuration - Affichage pour le cacher.
 Deny=Refuser
 Denied=Refusé
@@ -719,7 +724,7 @@ DeleteLine=Effacer ligne
 ConfirmDeleteLine=Êtes-vous sûr de vouloir supprimer cette ligne ?
 NoPDFAvailableForDocGenAmongChecked=Aucun PDF n'est disponible pour la génération du document parmi les enregistrements cochés
 TooManyRecordForMassAction=Trop d'enregistrements sélectionnés pour l'action de masse. De telles actions sont restreintes à une liste de %s enregistrements maximum.
-NoRecordSelected=Pas d'enregistrement sélectionné
+NoRecordSelected=Aucu enregistrement sélectionné
 MassFilesArea=Zone des fichiers générés en masse
 ShowTempMassFilesArea=Afficher la zone des fichiers générés en masse
 RelatedObjects=Objets liés
@@ -737,6 +742,7 @@ Miscellaneous=Divers
 Calendar=Calendrier
 GroupBy=Grouper par...
 ViewFlatList=Voir vue liste
+RemoveString=Supprimer la chaine '%s'
 # Week day
 Monday=Lundi
 Tuesday=Mardi
diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang
index d2446163aa76ed3ef69701abfe5d47c221fe19ad..b6890016c75f9d5886e85eeb14bd4833296e19d8 100644
--- a/htdocs/langs/fr_FR/members.lang
+++ b/htdocs/langs/fr_FR/members.lang
@@ -127,8 +127,8 @@ NoThirdPartyAssociatedToMember=Pas de tiers associé à cet adhérent
 MembersAndSubscriptions= Adhérents et Adhésions
 MoreActions=Action complémentaire à l'enregistrement
 MoreActionsOnSubscription=Action complémentaire proposée par défaut à l'enregistrement de l'adhésion
-MoreActionBankDirect=Création transaction sur compte bancaire ou caisse directement
-MoreActionBankViaInvoice=Création facture avec paiement sur compte bancaire ou caisse
+MoreActionBankDirect=Création une écriture directe sur le compte bancaire ou caisse
+MoreActionBankViaInvoice=Créer une facture avec paiement sur compte bancaire ou caisse
 MoreActionInvoiceOnly=Création facture sans paiement
 LinkToGeneratedPages=Génération de cartes de visites ou planches d'adresses
 LinkToGeneratedPagesDesc=Cet écran vous permet de générer des planches de cartes de visite ou d'étiquettes d'adresses pour chaque adhérent ou pour un adhérent en particulier.
diff --git a/htdocs/langs/fr_FR/orders.lang b/htdocs/langs/fr_FR/orders.lang
index 71dfa59687065d0c129f2177b532618c1bdc00ad..25fc9a29d30df65f776c397d8bb27a355b415d57 100644
--- a/htdocs/langs/fr_FR/orders.lang
+++ b/htdocs/langs/fr_FR/orders.lang
@@ -19,6 +19,7 @@ CustomerOrder=Commande client
 CustomersOrders=Commandes clients
 CustomersOrdersRunning=Commandes clients en cours
 CustomersOrdersAndOrdersLines=Commandes clients et ligne de commandes
+OrdersDeliveredToBill=Commandes clients délivrées à facturer
 OrdersToBill=Commandes clients à délivrer
 OrdersInProcess=Commandes clients en traitement
 OrdersToProcess=Commandes clients à traiter
diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang
index fc1511020f0787f1bbfbd6f8921eb3a877262f42..f438929d4a169f798fb7a7e1f89d38f307effd8b 100644
--- a/htdocs/langs/fr_FR/products.lang
+++ b/htdocs/langs/fr_FR/products.lang
@@ -90,19 +90,20 @@ ServiceLimitedDuration=Si produit de type service à durée limitée :
 MultiPricesAbility=Plusieurs niveaux de prix par produit/service (chaque client est dans un et un seul niveau)
 MultiPricesNumPrices=Nombre de prix
 AssociatedProductsAbility=Pris en charge des packages
-AssociatedProducts=Produit virtuel/package
-AssociatedProductsNumber=Nombre de produits packages composant ce package
+AssociatedProducts=Produit virtuel
+AssociatedProductsNumber=Nbre de sous-produits constituant ce produit virtuel
 ParentProductsNumber=Nbre de produits virtuels/packages parent
 ParentProducts=Produits parents
-IfZeroItIsNotAVirtualProduct=Si 0, ce produit n'est pas utilisé par un produit package
-IfZeroItIsNotUsedByVirtualProduct=Si 0, ce produit n'est pas un produit package
+IfZeroItIsNotAVirtualProduct=Si 0, ce produit n'est pas un produit virtuel
+IfZeroItIsNotUsedByVirtualProduct=Si 0, ce produit n'est pas utilisé par un produit virtuel
 Translation=Traduction
 KeywordFilter=Filtre par mot-clé
 CategoryFilter=Filtre par catégorie
 ProductToAddSearch=Recherche des produits à ajouter
 NoMatchFound=Aucun résultat n'a été trouvé
+ListOfProductsServices=Liste des produits/services
 ProductAssociationList=Liste des produits/services constituant ce produit package
-ProductParentList=Liste des produits/services virtuels/packages avec ce produit comme composante
+ProductParentList=Liste des produits/services virtuels avec ce produit comme composante
 ErrorAssociationIsFatherOfThis=L'un des produits sélectionnés est parent du produit en cours
 DeleteProduct=Supprimer un produit/service
 ConfirmDeleteProduct=Êtes-vous sûr de vouloir supprimer ce produit/service ?
diff --git a/htdocs/langs/fr_FR/sendings.lang b/htdocs/langs/fr_FR/sendings.lang
index 064e6d15f54f8b5b452c13fa5589b352fc2704ea..7ad7e30a94d2c4d23cebff5abd94f11c788dbe9f 100644
--- a/htdocs/langs/fr_FR/sendings.lang
+++ b/htdocs/langs/fr_FR/sendings.lang
@@ -20,6 +20,7 @@ CreateASending=Créer une expédition
 QtyShipped=Qté. expédiée
 QtyToShip=Qté. à expédier
 QtyReceived=Qté. reçue
+QtyInOtherShipments=Qté dans les autres expéditions
 KeepToShip=Reste à expédier
 OtherSendingsForSameOrder=Autres expéditions pour cette commande
 SendingsAndReceivingForSameOrder=Expéditions et réceptions pour cette commande
@@ -40,6 +41,8 @@ DocumentModelMerou=Modèle Merou A5
 WarningNoQtyLeftToSend=Alerte, aucun produit en attente d'expédition.
 StatsOnShipmentsOnlyValidated=Statistiques effectuées sur les expéditions validées uniquement. La date prise en compte est la date de validation (la date de prévision de livraison n'étant pas toujours renseignée).
 DateDeliveryPlanned=Date prévue de livraison
+RefDeliveryReceipt=Ref bon de réception
+StatusReceipt=Status du bon de réception
 DateReceived=Date de réception réelle
 SendShippingByEMail=Envoyer bon d'expédition par email
 SendShippingRef=Envoi du bordereau d'expédition %s
diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang
index 9c8e6be412fcdc92e552b1b30410a768807474c5..1c9bf7281b6d80ba8da4ea0b8be63503214233ca 100644
--- a/htdocs/langs/fr_FR/stocks.lang
+++ b/htdocs/langs/fr_FR/stocks.lang
@@ -2,6 +2,7 @@
 WarehouseCard=Fiche entrepôt
 Warehouse=Entrepôt
 Warehouses=Entrepôts
+ParentWarehouse=Entrepôt parent
 NewWarehouse=Nouvel entrepôt ou zone de stockage
 WarehouseEdit=Édition entrepôt
 MenuNewWarehouse=Nouvel entrepôt
diff --git a/htdocs/langs/fr_FR/supplier_proposal.lang b/htdocs/langs/fr_FR/supplier_proposal.lang
index bea3ad4f31f03e8b392bfe8f3b496598270bee94..764b094ae687a1bfee1bc88e48b98fcb457b5d84 100644
--- a/htdocs/langs/fr_FR/supplier_proposal.lang
+++ b/htdocs/langs/fr_FR/supplier_proposal.lang
@@ -28,6 +28,7 @@ SupplierProposalStatusClosed=Fermé
 SupplierProposalStatusSigned=Accepté
 SupplierProposalStatusNotSigned=Refusé
 SupplierProposalStatusDraftShort=Brouillon
+SupplierProposalStatusValidatedShort=Validé
 SupplierProposalStatusClosedShort=Fermé
 SupplierProposalStatusSignedShort=Accepté
 SupplierProposalStatusNotSignedShort=Refusé
@@ -50,5 +51,5 @@ ListOfSupplierProposal=Liste des demandes de propositions de fournisseur
 ListSupplierProposalsAssociatedProject=Liste des propositions commerciales fournisseurs liées à un projet
 SupplierProposalsToClose=Propositions commerciales fournisseurs à fermer
 SupplierProposalsToProcess=Propositions commerciales fournisseurs à traiter
-LastSupplierProposals=Dernières demande de prix
+LastSupplierProposals=Les %s dernières demandes de prix
 AllPriceRequests=Toutes les demandes de prix
diff --git a/htdocs/langs/fr_FR/trips.lang b/htdocs/langs/fr_FR/trips.lang
index 4780d57793b54e05cf5c970123287035bc1ed012..8dc20e2b67e55a9301410c737237a41fccf26c35 100644
--- a/htdocs/langs/fr_FR/trips.lang
+++ b/htdocs/langs/fr_FR/trips.lang
@@ -8,6 +8,7 @@ TripCard=Fiche note de frais
 AddTrip=Créer note de frais
 ListOfTrips=Liste des notes de frais
 ListOfFees=Liste des notes de frais
+TypeFees=Types de déplacement et notes de frais
 ShowTrip=Afficher la note de frais
 NewTrip=Nouvelle note de frais
 CompanyVisited=Société/institution visitée
diff --git a/htdocs/langs/fr_FR/workflow.lang b/htdocs/langs/fr_FR/workflow.lang
index 29b79621b7b90cbab939b8cfaf618901050e88e2..a9eb29c7a8df2f2e29f80ffffdee9ac3c79fc414 100644
--- a/htdocs/langs/fr_FR/workflow.lang
+++ b/htdocs/langs/fr_FR/workflow.lang
@@ -10,4 +10,6 @@ descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Classer facturée la proposition comme
 descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classer facturée la ou les commandes clients source quand la facture client dérivée est classée payée
 descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classer facturée la ou les commandes clients source lorsque la facture client dérivée est validée
 descWORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL=A la validation d'une commande, classer la proposition commerciale source "facturée"
-descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Classez livré les commandes liées sur validation d'une expédition, si la quantité livrée est la même que celle de la commande
+descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Classez la commande liée à expédiée quand une expédition est validée et que la quantité expédiée totale est la même que dans la commande
+AutomaticCreation=Création automatique
+AutomaticClassification=Classification automatique
diff --git a/htdocs/langs/nl_BE/accountancy.lang b/htdocs/langs/nl_BE/accountancy.lang
index 604986cae773bc19be1c6cf7f9e32bd054a77329..4ebecd4b78a608a32c4f724db6b9afa46f6e27a6 100644
--- a/htdocs/langs/nl_BE/accountancy.lang
+++ b/htdocs/langs/nl_BE/accountancy.lang
@@ -13,7 +13,6 @@ Selectchartofaccounts=Selecteer een kaart van accounts
 Addanaccount=Voeg een boekhouder account toe
 AccountAccounting=Boekhouder account
 AccountAccountingSuggest=Boekhouder account voorstel
-Reports=Rapporten
 Bookkeeping=Grootboek
 CAHTF=Totaal leveranciersaankoop voor BTW
 Processing=Verwerken
diff --git a/htdocs/langs/pt_BR/accountancy.lang b/htdocs/langs/pt_BR/accountancy.lang
index d12cc67e3ebaf832b8e4af69dbdeed498b8439c6..a026fa5d2c89152dc011897f45620ea9d34e697a 100644
--- a/htdocs/langs/pt_BR/accountancy.lang
+++ b/htdocs/langs/pt_BR/accountancy.lang
@@ -1,4 +1,4 @@
-# Dolibarr language file - en_US - Accounting Expert
+# Dolibarr language file - Source file is en_US - accountancy
 ACCOUNTING_EXPORT_SEPARATORCSV=Separador de coluna para o arquivo de exportação
 ACCOUNTING_EXPORT_DATE=Formato de data para arquivo de exportação
 ACCOUNTING_EXPORT_PIECE=Exportar a quantidade
@@ -8,47 +8,31 @@ ACCOUNTING_EXPORT_AMOUNT=Exportar o montante?
 ACCOUNTING_EXPORT_DEVISE=Exportar Moedas
 Selectformat=Selecione o formato do arquivo
 ACCOUNTING_EXPORT_PREFIX_SPEC=Especifique o prefixo do nome do arquivo
-
-AccountancySetupDoneFromAccountancyMenu=A maioria das configurações da Contabilidade é feita a partir do menu %s
 ConfigAccountingExpert=Configuração do módulo específico de contabilidade
-Journalization=Lançamento no Livro
 Journaux=Diários
 JournalFinancial=Diários financeiros
-BackToChartofaccounts=Voltar ao plano de contas
-Chartofaccounts=Plano de contas
-
 AccountancyArea=Área da Contabilidade
 AccountancyAreaDescIntro=O uso do módulo Contabilidade é feito em diversas etapas:
 AccountancyAreaDescActionOnce=As ações a seguir são normalmente realizadas apenas uma vez, ou uma vez por ano...
 AccountancyAreaDescActionFreq=As ações a seguir são normalmente executadas a cada mês, semana ou dia para grandes empresas...
-AccountancyAreaDescChartModel=ETAPA %s: Criar um modelo de gráfico de conta a partir do menu %s
 AccountancyAreaDescChart=ETAPA %s: Criar ou verificar o conteúdo do seu gráfico de conta a partir do menu %s
+AccountancyAreaDescProd=ETAPA %s: Verifique se a vinculação entre os produtos/serviços e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta nas linhas da sua fatura.<br>Para isto você pode usar a entrada do menu %s.
 AccountancyAreaDescBank=ETAPA %s: Verifique se a vinculação entre as contas bancárias e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta nas suas linhas de pagamento.<br>Para isto, vá até o cartão de cada conta financeira. Você pode iniciar a partir da página %s.
 AccountancyAreaDescVat=ETAPA %s: Verifique se a vinculação entre o pagamento do ICMS e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta no registro relacionado aos pagamentos do ICMS.<br>Você pode definir as contas da Contabilidade para uso para cada ICMS a partir da página %s.
 AccountancyAreaDescSal=ETAPA %s: Verifique se a vinculação entre o pagamento dos salários e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta no registro relacionado ao pagamento dos salários.<br>Para isto você pode usar a entrada do menu %s.
 AccountancyAreaDescContrib=ETAPA %s: Verifique se a vinculação entre as despesas especiais (taxas diversas) e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta no registro relacionado ao pagamento das taxas.<br>Para isto você pode usar a entrada do menu %s.
 AccountancyAreaDescDonation=ETAPA %s: Verifique se a vinculação entre as doações e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta no registro relacionado ao pagamento das doações.<br>Você pode definir a conta dedicada para isto a partir da entrada do menu %s.
-AccountancyAreaDescMisc=ETAPA %s: Verifique se a vinculação padrão entre as linhas das transações diversas e a conta da Contabilidade foi feita. Conclua as vinculações faltantes.<br>Para isto você pode usar a entrada do menu %s.
-AccountancyAreaDescProd=ETAPA %s: Verifique se a vinculação entre os produtos/serviços e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Isto fará com que você economize tempo no futuro para as próximas etapas pela sugestão da conta da Contabilidade padrão correta nas linhas da sua fatura.<br>Para isto você pode usar a entrada do menu %s.
-
 AccountancyAreaDescCustomer=ETAPA %s: Verifique se a vinculação entre as linhas da fatura de um cliente existente e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Uma vez concluída a vinculação, o aplicativo será capaz de registrar as transações na Contabilidade geral em um clique.<br>Para isto você pode usar a entrada do menu %s.
 AccountancyAreaDescSupplier=ETAPA %s: Verifique se a vinculação entre as linhas da fatura de um fornecedor existente e a conta da Contabilidade foi feita. Conclua as vinculações faltantes. Uma vez concluída a vinculação, o aplicativo será capaz de registrar as transações na Contabilidade geral em um clique.<br>Para isto você pode usar a entrada do menu %s.
 AccountancyAreaDescWriteRecords=ETAPA %s: Grave as transações na Contabilidade Geral. Para isto, vá para cada Registro, e clique no botão "Registrar as transações na Contabilidade Geral".
-AccountancyAreaDescAnalyze=ETAPA %s: Adicionar ou editar as transações existentes, gerar os relatórios e exportar.
-
-AccountancyAreaDescClosePeriod=ETAPA %s: Fechar o período de forma que não possamos fazer modificações no futuro.
-
-MenuAccountancy=Contabilidade
 Selectchartofaccounts=Selecione gráfico ativo de contas
-ChangeAndLoad=Alterar e carregar
 Addanaccount=Adicionar uma conta contábil
 AccountAccounting=Conta contábil
 AccountAccountingShort=Conta
 AccountAccountingSuggest=Sugerir Conta de Contabilidade
-MenuDefaultAccounts=Contas padrão
-MenuProductsAccounts=Contas de produto
-ProductsBinding=Contas dos produtos
 Ventilation=Vinculando para as contas
+ProductsBinding=Contas dos produtos
+MenuAccountancy=Contabilidade
 CustomersVentilation=Vinculando as faturas do cliente
 SuppliersVentilation=Vinculando as faturas do fornecedor
 CreateMvts=Criar nova transação
@@ -56,61 +40,44 @@ UpdateMvts=Modificação de uma transação
 WriteBookKeeping=Diário de transações em Contabilidade Geral
 Bookkeeping=Livro razão
 AccountBalance=Saldo da conta
-
 CAHTF=Total de Compras em fornecedores sem Impostos
 InvoiceLines=Linhas da fatura a vincular
 InvoiceLinesDone=Linhas das faturas vinculadas
 IntoAccount=Vincular linha com conta contábil
-
 Ventilate=Vincular
-LineId=Linha da ID
-Processing=Processando
 EndProcessing=Processo foi finalizado.
 SelectedLines=Linhas selecionadas
 Lineofinvoice=Linha da fatura
-NoAccountSelected=Nenhuma conta da Contabilidade selecionada
 VentilatedinAccount=Vinculado a conta contábil com sucesso
 NotVentilatedinAccount=Não vinculado a conta contábil
 XLineSuccessfullyBinded=%s produtos/serviços vinculados com sucesso a uma conta da Contabilidade
 XLineFailedToBeBinded=%s produtos/serviços não estão vinculados a qualquer conta da Contabilidade
-
-ACCOUNTING_LIMIT_LIST_VENTILATION=Numero de elementos para vincular, mostrado por página (máximo recomendado: 50) 
+ACCOUNTING_LIMIT_LIST_VENTILATION=Numero de elementos para vincular, mostrado por página (máximo recomendado: 50)
 ACCOUNTING_LIST_SORT_VENTILATION_TODO=Iniciar a página "Vinculações a fazer" ordenando pelos elementos mais recentes
 ACCOUNTING_LIST_SORT_VENTILATION_DONE=Iniciar a página "Vinculações feitas" ordenando pelos elementos mais recentes
-
 ACCOUNTING_LENGTH_DESCRIPTION=Truncar a descrição de Produtos & Serviços nas listagens, após x caracteres (Melhor = 50)
 ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=Truncar a descrição da conta de Produtos & Serviços nas listagens, após X caracteres (Melhor = 50)
 ACCOUNTING_LENGTH_GACCOUNT=Tamanho das contas contábeis geral
 ACCOUNTING_LENGTH_AACCOUNT=Tamanho das contas contábeis de terceiros
 ACCOUNTING_MANAGE_ZERO=Gerenciar o zero no fim de uma conta da Contabilidade. Necessário em alguns países. Desabilitado como padrão. Se habilitado, você deve também definir os 2 parâmetros seguintes (ou isto é ignorado).
 BANK_DISABLE_DIRECT_INPUT=Desabilitar o registro direto da transação na conta bancária
-
 ACCOUNTING_SELL_JOURNAL=Resumo diário das Vendas
 ACCOUNTING_PURCHASE_JOURNAL=Resumo diário das Compras
 ACCOUNTING_MISCELLANEOUS_JOURNAL=Diário diversos
 ACCOUNTING_EXPENSEREPORT_JOURNAL=Diário de relatórios de despesas
-ACCOUNTING_SOCIAL_JOURNAL=Diário social
-
 ACCOUNTING_ACCOUNT_TRANSFER_CASH=Conta de transferência
 ACCOUNTING_ACCOUNT_SUSPENSE=Conta de espera
 DONATION_ACCOUNTINGACCOUNT=Conta para o registro de doações
-
 ACCOUNTING_PRODUCT_BUY_ACCOUNT=Conta contábil por padrão para produtos comprados (se não for definido na listagem dos produtos)
 ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Conta contábil por padrão para os produtos vendidos (se não for definido na listagem dos produtos)
 ACCOUNTING_SERVICE_BUY_ACCOUNT=Conta contábil por padrão para os serviços comprados (se não for definido na listagem de serviços)
 ACCOUNTING_SERVICE_SOLD_ACCOUNT=Conta contábil por padrão para os serviços vendidos (se não for definido na listagem de  serviços)
-
-Doctype=Tipo de documento
-Docdate=Data
 Docref=Referência
 Code_tiers=Terceiro
 Labelcompte=Conta rótulo
 Sens=Significado
-Codejournal=Diário
 NumPiece=Número da peça
-TransactionNumShort=Nº da transação
 AccountingCategory=Categoria contábil
-GroupByAccountAccounting=Agrupar pela conta da Contabilidade
 NotMatch=Não Definido
 DeleteMvt=Excluir as linhas da Contabilidade geral
 DelYear=Ano a ser deletado
@@ -125,35 +92,27 @@ VATAccountNotDefined=Conta para ICMS não definida
 ThirdpartyAccountNotDefined=Conta para terceiro não definida
 ProductAccountNotDefined=Conta para produto não definida
 BankAccountNotDefined=Conta para o banco não definida
-CustomerInvoicePayment=Contas Recebidas
 ThirdPartyAccount=Conta de terceiro
 NewAccountingMvt=Nova transação
 NumMvts=Número da transação
 ListeMvts=Lista de movimentações
 ErrorDebitCredit=Débito e Crédito não pode ter valor preenchido ao mesmo tempo
-
 ReportThirdParty=Lista de contas de terceiros
 DescThirdPartyReport=Consulte aqui a lista dos terceiros, clientes e fornecedores, e as suas contas contábeis
 ListAccounts=Lista das contas contábeis
-
 Pcgtype=Classes de conta
 Pcgsubtype=Sob classe de conta
-
 TotalVente=Volume total negociado sem Impostos
 TotalMarge=Margem de vendas totais
-
 DescVentilCustomer=Consulte aqui a lista linhas de pedidos de clientes vinculadas (ou não) a uma conta contábil de produto
 DescVentilMore=Na maioria dos casos, se você usa produtos ou serviços pré-definidos e define o número da conta no cartão do produto/serviço, o aplicativo será capaz de realizar todas as vinculações entre as linhas da sua fatura e a conta da Contabilidade do seu gráfico de contas, apenas com um clique no botão <strong>"%s"</strong>. Se a conta não foi definida nos cartões do produto/serviço ou se você ainda tem alguma linha não vinculada a qualquer conta, você terá que fazer uma vinculação manual a partir do menu "<strong>%s</strong>".
 DescVentilDoneCustomer=Consulte aqui a lista com as linhas das faturas dos clientes e a conta da Contabilidade dos seus produtos
 DescVentilTodoCustomer=Linhas da fatura ainda não vinculadas à conta da Contabilidade do produto
 ChangeAccount=Mudar a conta da Contabilidade do produto/serviço para as linhas selecionadas com a seguinte conta da Contabilidade
-Vide=-
 DescVentilSupplier=Consulte aqui a lista das linhas da fatura do fornecedor vinculadas ou ainda não vinculadas a uma conta da Contabilidade de um produto
 DescVentilDoneSupplier=Consulte aqui a lista das linhas de faturas de fornecedores e sua conta de contabilidade
-
 ValidateHistory=Vincular Automaticamente
 AutomaticBindingDone=Vinculação automática realizada
-
 ErrorAccountancyCodeIsAlreadyUse=Erro, você não pode excluir esta conta contábil, pois ela esta em uso
 MvtNotCorrectlyBalanced=Movimento sem o equilíbrio correto. Crédito = %s. Débito = %s
 FicheVentilation=Cartão de vinculação
@@ -162,14 +121,7 @@ GeneralLedgerSomeRecordWasNotRecorded=Algumas das transações poderão não ser
 NoNewRecordSaved=Nenhum novo registro salvo
 ListOfProductsWithoutAccountingAccount=Lista de produtos não vinculados a qualquer conta da Contabilidade
 ChangeBinding=Alterar a vinculação
-
-## Admin
 ApplyMassCategories=Aplicar categorias em massa
-
-## Export
-Exports=Exportações
-Export=Exportar
-Modelcsv=Modelo de exportação
 OptionsDeactivatedForThisExportModel=Para este modelo de exportação, as opções são desativadas
 Selectmodelcsv=Escolha um modelo de exportação
 Modelcsv_normal=Exportação clássica
@@ -180,11 +132,8 @@ Modelcsv_ciel=Exportar para Sage Ciel Compta ou Compta Evolution
 Modelcsv_quadratus=Exportar para Quadratus QuadraCompta
 Modelcsv_ebp=Exportar para EBP
 Modelcsv_cogilog=Exportar para Cogilog
-
-## Tools - Init accounting account on product / service
 InitAccountancy=Contabilidade Inicial
 InitAccountancyDesc=Esta página pode ser usada para inicializar uma conta da Contabilidade dos produtos e serviços que não possuem uma conta da Contabilidade definida para vendas e compras.
-DefaultBindingDesc=Esta página pode ser usada para definir a conta padrão a ser usada para conectar o registro das transações sobre o pagamento de salários, doações, taxas e o ICMS quando nenhuma conta da Contabilidade específica tiver sido definida.
 Options=Opções
 OptionModeProductSell=Modo vendas
 OptionModeProductBuy=Modo compras
@@ -192,18 +141,12 @@ OptionModeProductSellDesc=Exibir todos os produtos sem uma conta da Contabilidad
 OptionModeProductBuyDesc=Exibir todos os produtos sem uma conta da Contabilidade definida para compras.
 CleanFixHistory=Remover o código da Contabilidade das linhas que não existem nos gráficos da conta
 CleanHistory=Redefinir todas as vinculações para o ano selecionado
-
-## Dictionary
 Range=Faixa da conta da Contabilidade
 Calculated=Calculado
 Formula=Fórmula
-
-## Error
 ErrorNoAccountingCategoryForThisCountry=Nenhuma categoria da Contabilidade disponível para o país %s (Veja Início - Configuração - Dicionários)
 ExportNotSupported=O formato de exportação definido não é suportado nesta página
 BookeppingLineAlreayExists=Linhas já existentes na Contabilidade
-
 Binded=Linhas vinculadas
 ToBind=Linhas a vincular
-
 WarningReportNotReliable=Alerta, este relatório não está baseado na Contabilidade Geral, portanto não é ainda confiável. Ele será substituído por um relatório correto na próxima versão.
diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang
index 2fa30545ed556f6f18dea39f7d6d71adb88aa6bd..cb109ae818e47debbdc5210c03429729f41a485a 100644
--- a/htdocs/langs/pt_BR/admin.lang
+++ b/htdocs/langs/pt_BR/admin.lang
@@ -1,6 +1,4 @@
 # Dolibarr language file - Source file is en_US - admin
-Foundation=Fundação
-Version=Versão
 VersionProgram=Versão Programa
 VersionLastInstall=Versão de instalação inicial
 VersionLastUpgrade=Atualização versão mais recente
@@ -48,11 +46,9 @@ RemoveLock=Remove o arquivo <b>%s</ b> se tiver permissão de usar a ferramente
 RestoreLock=Restaura o arquivo <b>%s</b>, com permissão de leitura, para desabilitar qualquer serviço de atualição
 SecuritySetup=Conf. de Segurança
 SecurityFilesDesc=Defina aqui as opções relacionadas à segurança sobre o carregamento (upload) de arquivos.
-ErrorModuleRequirePHPVersion=Erro, este módulo requer uma versão %s ou superior de PHP
 ErrorModuleRequireDolibarrVersion=Erro, este módulo requer uma versão %s ou superior do Dolibarr
 ErrorDecimalLargerThanAreForbidden=Erro, número maior que <b>%s</b> e não é suportada pelo dolibarr.
 DictionarySetup=Configuração Dicionário
-Dictionary=Dicionários
 ErrorReservedTypeSystemSystemAuto=A Variável 'system' e 'systemauto' é reservada. Você pode usar 'user' como variável para adicionar sua própria gravação
 ErrorCodeCantContainZero=A variável não pode conter valor "0" (zero)
 DisableJavascript=Desativar as funções Javascript e Ajax
@@ -71,12 +67,6 @@ ThemeCurrentlyActive=Tema Ativo
 CurrentTimeZone=Timezone PHP (do servidor apache)
 MySQLTimeZone=Timezone Mysql (do servidor sql)
 TZHasNoEffect=A data é armazenada e retornada pelo servidor sql se eles manterem a string apresentada. A timezone é resultado somente se for usado a função UNIX_TIMESTAMP (Não deve ser usada pelo Dolibarr, se não a database TZ não terá efeito, mesmo se tivesse trocada depois da data ter entrado).
-Space=Área
-Table=Tabela
-Fields=Campos
-Index=Index
-Mask=Mask
-NextValue=Próximo Valor
 NextValueForInvoices=Próximo Valor (Faturas)
 NextValueForCreditNotes=Próximo Valor (Notas de Crédito)
 NextValueForDeposit=Próximo Valor (Depósito)
@@ -85,10 +75,10 @@ MustBeLowerThanPHPLimit=OBS: Tamanho máximo de upload é <b>%s</b> %s de máxim
 NoMaxSizeByPHPLimit=Nenhum limite foi configurado no seu PHP
 MaxSizeForUploadedFiles=Tamanho Máximo para uploads de arquivos ('0' para proibir o carregamento)
 UseCaptchaCode=Usar captcha para login (recomendado se os usuários tiverem acesso ao Dolibarr pela internet)
-AntiVirusCommand= Caminho completo para antivirus
-AntiVirusCommandExample= Exemplo com o ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Exemplo com o ClamAv: /usr/bin/clamscan (UNIX)
-AntiVirusParam= Mais parâmetros em linha de comando (CLI)
-AntiVirusParamExample= Exemplo com o ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib"
+AntiVirusCommand=Caminho completo para antivirus
+AntiVirusCommandExample=Exemplo com o ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Exemplo com o ClamAv: /usr/bin/clamscan (UNIX)
+AntiVirusParam=Mais parâmetros em linha de comando (CLI)
+AntiVirusParamExample=Exemplo com o ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib"
 ComptaSetup=Conf. do Módulo Contabilidade
 UserSetup=Conf. do Gestor de usuários
 MultiCurrencySetup=Configuração de múltiplas moedas
@@ -96,18 +86,13 @@ MenuLimits=Limites e Precisão
 MenuIdParent=ID do menu pai
 DetailMenuIdParent=ID do menu pai (vazio (NULL) para menu no topo)
 DetailPosition=Define as posições do menu em ordem numérica
-AllMenus=Todos
 NotConfigured=Módulo não está configurado
 Active=Ativo
 SetupShort=Conf.
-OtherOptions=Outras Opções
 OtherSetup=Outras Configurações
-CurrentValueSeparatorDecimal=Separador decimal
 CurrentValueSeparatorThousand=Separador de milhar
-Destination=Destino
 IdModule=Módulo ID
 IdPermissions=Permissão ID
-Modules=Módulos
 LanguageBrowserParameter=Parâmetro de Linguagem %s
 LocalisationDolibarrParameters=Parâmetros de Localização
 ClientTZ=Fuso Horário do cliente (usuário)
@@ -118,16 +103,12 @@ DaylingSavingTime=Horário de verão
 CurrentHour=Horário PHP (servidor)
 CurrentSessionTimeOut=A sessão expirou
 YouCanEditPHPTZ=Para trocar diferente PHP 'timezone' (não requerido), você pode tentar adicionando um arquivo .htacces com uma linha tipo essa "SetEnv TZ Europe/Paris"
-Box=Widget
-Boxes=Widgets
 MaxNbOfLinesForBoxes=Número máximo de linahs para os widgets
 PositionByDefault=Posição Padrão(default)
-Position=Posição
 MenusDesc=O Gerenciador de Menu, define o conteúdo das barras de menu (Horizontal e Vertical).
 MenusEditorDesc=O Editor de menu permite definir entradas personalizadas ao menu.<br />Use-o com cuidado para evitar instabilidades e que os menus fiquem totalmente inacessiveis.<br />Alguns módulos adicionam entradas do menu ( no menu <b>Geral</b> principalmente). Se você remover algumas destas entradas por engano, você poderá restaurá-las desabilitando e habilitando o módulo novamente.
 MenuForUsers=Menu para os Usuários
 LangFile=Arquivo .lang
-System=Sistema
 SystemInfo=Informações de Sistema
 SystemToolsArea=Área de Ferramentas do sistema
 SystemToolsAreaDesc=Essa área dispõe de funções administrativas. Use esse menu para escolher as funções que você está procurando.
@@ -143,8 +124,6 @@ PurgeNDirectoriesDeleted=<b>%s</b> Arquivos o diretórios eliminados
 PurgeAuditEvents=Eliminar os eventos de segurança
 ConfirmPurgeAuditEvents=Você tem certeza que deseja limpar todos os eventos de segurança? Todos os registros de segurança serão excluídos, nenhum outro dado será removido.
 GenerateBackup=Gerar Backup
-Backup=Backup
-Restore=Restaurar
 RunCommandSummary=Backup foi iniciado com o seguinte comando
 BackupResult=Resultado de backup
 BackupFileSuccessfullyCreated=Sucesso em gerar o arquivo de backup! =D
@@ -163,15 +142,12 @@ CommandsToDisableForeignKeysForImport=Comando para desativar as chaves estrangei
 CommandsToDisableForeignKeysForImportWarning=Mandatório se você quiser ser capaz de restaurar seu 'sql dump' depois
 ExportCompatibility=Compatibilidade de gerar arquivos de exportação
 MySqlExportParameters=Parâmetros de exportação do MySql
-PostgreSqlExportParameters= Parâmetros de exportação do PostgreSQL
+PostgreSqlExportParameters=Parâmetros de exportação do PostgreSQL
 UseTransactionnalMode=Utilizar o modo transicional(transactional mode)
 FullPathToMysqldumpCommand=Caminho completo para o comando mysqldump
 FullPathToPostgreSQLdumpCommand=Caminho completo para o comando pg_dump
-ExportOptions=Opções de exportação
 AddDropDatabase=Adicionar  o comando 'DROP DATABASE'
 AddDropTable=Adicionar o comando 'DROP TABLE'
-ExportStructure=Estrutura
-NameColumn=Nome das colunas
 ExtendedInsert=Extender o INSERT
 NoLockBeforeInsert=Não travar comando antes do INSERT
 DelayedInsert=Inserir Atraso
@@ -180,7 +156,6 @@ IgnoreDuplicateRecords=Ignorar erros de registro duplicado (INSERT IGNORE)
 AutoDetectLang=Autodetecção de idioma pelo navegador
 FeatureDisabledInDemo=Algumas funções desabilitada no Demo
 FeatureAvailableOnlyOnStable=Funcionalidade somente disponível em versões estáveis oficiais
-Rights=Permissões
 BoxesDesc=Os widgets são componentes que exibem alguma informação que você pode adicionar para personalizar algumas páginas. Você pode escolher entre a exibição ou não do widget pela seleção da página de destino e clicando em "Ativar", ou clicando na lixeira para desabilitá-lo.
 OnlyActiveElementsAreShown=Somente elementos de <a href="%s">módulos ativos</a> são mostrado.
 ModulesDesc=Os módulos do Dolibarr definem qual funcionalidade está habilitada no aplicativo. Alguns módulos exigem permissões que você deve garantir aos usuários, após a habilitação do código. Clique no botão on/off para habilitar um módulo/funcionalidade.
@@ -196,9 +171,7 @@ ActivateOn=Ativar
 ActiveOn=Ativa
 SourceFile=Arquivo Fonte
 AvailableOnlyIfJavascriptAndAjaxNotDisabled=Disponível somente se Javascript não estiver desativado
-Required=Requerido
 UsedOnlyWithTypeOption=Usado por alguns opção agenda única
-Security=Segurança
 Passwords=Senhas
 DoNotStoreClearPassword=Não armazenar senhas em branco no banco de dados, somente armazenar senhas criptografadas (Ativação é Recomendada)
 MainDbPasswordFileConfEncrypted=Criptografar senha do banco de dados no arquivo conf.php
@@ -207,7 +180,6 @@ InstrucToClearPass=Para ter a senha não codificada(limpa) no arquivo <b>conf.ph
 ProtectAndEncryptPdfFiles=Criptografar a geração de arquivos em PDF (NÃO RECOMENDADO, póis pode deixar instável a geração de PDFs massivos)
 ProtectAndEncryptPdfFilesDesc=A proteção de um documento PDF o mantém disponível para leitura e impressão em qualquer leitor PDF. Contudo, a edição e a cópia não serão mais possíveis. Favor notar que o uso desta função não permite a criação de um PDF global acumulado (tal como as faturas não pagas).
 Feature=Destaque
-DolibarrLicense=Licença
 Developpers=Desenvolvedores/Contribuidores
 OfficialWebSite=Site internacional do Dolibarr
 OfficialWebSiteLocal=Web site local (%s)
@@ -216,14 +188,11 @@ OfficialDemo=Demo online do Dolibarr
 OfficialMarketPlace=Loja oficial para módulos externos/addons
 OfficialWebHostingService=Serviços de hospedagem web referenciados (hospedagem na Nuvem)
 ReferencedPreferredPartners=Parceiro preferido
-OtherResources=Outros recursos
 ForDocumentationSeeWiki=Documentos para usuários e desenvolvedores (Doc, FAQs...), <br>de uma olhada no Dolibarr Wiki:<br><b><a href="%s" target="_blank">%s</a></b>
 ForAnswersSeeForum=Para outras questões/ajudas, você pode usar o forum do Dolibar:<br><b><a href="%s" target="_blank">%s</a></b>
 HelpCenterDesc1=Essa área pode ajudar você a conseguir serviço de suporte no Dolibarr.
 HelpCenterDesc2=Uma parte desse serviço está disponivel em <b>inglês</b>.
 CurrentMenuHandler=Gestor atual de menu
-MeasuringUnit=Unidade de medida
-Emails=E-Mails
 EMailsSetup=Conf. de E-Mails
 EMailsDesc=Essa página permite você a sobrescrever os seus parâmetros PHP para enviar e-mails. Na maioria dos casos dos sistemas Unix/Linux OS, a configuração já está correta, tornando desnecessário esses parâmetros.
 MAIN_MAIL_SMTP_PORT=Porta SMTP/SMTPS (Como padrão em php.ini: <b>%s</b>)
@@ -232,31 +201,26 @@ MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=Porta SMTP/SMTPS (Não definido no P
 MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=Servidor SMTP/SMTPS (Não definido no PHP nos sistemas tipo Unix)
 MAIN_MAIL_EMAIL_FROM=E-Mail de envio para envios automáticos (Como padrão no php.ini: <b>%s</b>)
 MAIN_MAIL_ERRORS_TO=Remetente do e-mail usado para o erro retorna e-mails enviados
-MAIN_MAIL_AUTOCOPY_TO= Enviar sistematicamente uma cópia carbono oculta de todos os e-mails enviados para
+MAIN_MAIL_AUTOCOPY_TO=Enviar sistematicamente uma cópia carbono oculta de todos os e-mails enviados para
 MAIN_DISABLE_ALL_MAILS=Desabilita o envido de todos os E-Mails (Para testes ou demo)
 MAIN_MAIL_SENDMODE=Método usado para o envio de E-Mails
 MAIN_MAIL_SMTPS_ID=ID SMTP se a autentificação é exigida
 MAIN_MAIL_SMTPS_PW=Senha SMTP se a autenticação é exigida
-MAIN_MAIL_EMAIL_TLS= Usar criptografia TLS (SSL)
-MAIN_MAIL_EMAIL_STARTTLS= Use criptografia TLS (STARTTLS)
+MAIN_MAIL_EMAIL_TLS=Usar criptografia TLS (SSL)
+MAIN_MAIL_EMAIL_STARTTLS=Use criptografia TLS (STARTTLS)
 MAIN_DISABLE_ALL_SMS=Desabilitar todos envios de SMS (Para testes ou demo)
 MAIN_SMS_SENDMODE=Método usado para enviar SMS
 MAIN_MAIL_SMS_FROM=Número de telefone padrão para o envio de SMS
-MAIN_MAIL_DEFAULT_FROMTYPE=Remetente do e-mail como padrão para envios manuais (e-mail do usuário ou e-mail da empresa)
-UserEmail=E-mail do usuário
-CompanyEmail=E-mail da empresa
 FeatureNotAvailableOnLinux=Função não disponível para sistemas tipo Unix. Teste de envio local.
 SubmitTranslation=Se a tradução deste idioma não estiver completa ou se encontrar erros, você poderá corrigir editando os arquivos no diretório <b>langs/%s</b> e submeter sua alteração em www.transifex.com/dolibarr-association/dolibarr/
 SubmitTranslationENUS=Se a tradução para este idioma não está completa ou você encontrar erros, você pode corrigir pela edição dos arquivos no diretório <b>langs/%s</b> e enviar os arquivos modificados para dolibarr.org/forum ou para os desenvolvedores em github.com/Dolibarr/dolibarr.
 ModuleSetup=Conf. do módulo
 ModulesSetup=Conf. dos módulos
-ModuleFamilyBase=Sistema
 ModuleFamilyCrm=Gestão de Relacionamento com o Cliente (CRM)
 ModuleFamilySrm=Gestor da Relação com o Fornecedor (SRM)
 ModuleFamilyProducts=Gestão de Produtos (GP)
 ModuleFamilyHr=Gestão de Recursos Humanos (RH)
 ModuleFamilyProjects=Projetos
-ModuleFamilyOther=Outro
 ModuleFamilyTechnic=Ferramentas para Módulos Múltiplos
 ModuleFamilyExperimental=Módulos Experimentais
 ModuleFamilyFinancial=Módulos Financeiros
@@ -268,7 +232,6 @@ MenuAdmin=Editor menus
 DoNotUseInProduction=Não utilizar em produção
 ThisIsProcessToFollow=Esse é o processo de configuração:
 ThisIsAlternativeProcessToFollow=Esta é uma configuração alternativa para o processo:
-StepNb=Passo %s
 FindPackageFromWebSite=Achar um pacote que possue as funções desejadas (por exemplo no site oficial %s).
 DownloadPackageFromWebSite=Baixar pacote.
 UnpackPackageInDolibarrRoot=Descompactar pacote dentro do diretório raiz do Dolibarr <b>%s</b>
@@ -279,7 +242,6 @@ InfDirExample=<br>Então declara o arquivo conf.php<br> $dolibarr_main_url_root_
 YouCanSubmitFile=Selecione o módulo:
 CurrentVersion=Versão atual do Dolibarr
 CallUpdatePage=Vá para a página que atualiza a estrutura de banco de dados e os dados:% s.
-LastStableVersion=Última versão estável
 LastActivationDate=Última data de ativação
 UpdateServerOffline=Atualização de servidor off-line
 GenericMaskCodes=Você pode criar suas próprias mascaras para gerar as referências automáticas.<br> Como exemplo inicial a mascara <b>'CLI{000}'</b> vai gerar a ref. <b>CLI001</b>,<b>CLI002</b>,<b>...</b> as mascaras são:<br>Mascara de contagem <b>{0000}</b>, essa mascara vai contar para cada nova ref. ex:<b>0001</b>,<b>0002</b>,<b>0003</b>,<b>...</b><br>Mascara de número inicial ex:<b>{000+100}</b> -> <b>101</b>,<b>102</b>,<b>103</b>,<b>...</b> ex2:<b>{0000+123}</b> -> <b>0124</b>,<b>0125</b>,<b>...</b><br>Mascara da data <b>{dd}</b> dias (01 a 31), <b>{mm}</b> mês (01 a 12), <b>{yy} {yyyy}</b> para anos ex:<b>{dd}/{mm}/{yy}</b> -> <b>28/07/15</b><br>
@@ -292,7 +254,6 @@ GenericMaskCodes5=Ex:<b>ABC{yy}{mm}-{000000}</b> -> <b>ABC1507-000099</b><br>
 GenericNumRefModelDesc=Retorna um número costomizado de acordo com a mascara definida.
 ServerAvailableOnIPOrPort=Servidor disponível no endeço <b>%s</b> e porta <b>%s</b>
 ServerNotAvailableOnIPOrPort=Servidor não disponível no endereço <b>%s</b> e porta <b>%s</b>
-DoTestServerAvailability=Teste de conectividade com o servidor
 DoTestSend=Teste de Envio
 DoTestSendHTML=Teste envio HTML
 ErrorCantUseRazIfNoYearInMask=Erro, não pode utilizar o @ para resetar o contador cada ano se a sequencia {yy} ou {yyyy} não estiver na mascara
@@ -300,7 +261,7 @@ ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Erro, não pode utilizar a opç
 UMask=Parâmetros da UMask para novos arquivos nos sistemas de arquivos Unix/Linux/BSD/Mac.
 UMaskExplanation=Esses parâmetros permitem você definir permissões por default nos arquivos criado pelo Dolibarr no servidor (Ex: durante upload).<br>Deve ser em formato octal (Ex: 06666 significa que tem permissão de leitura e escrita para todo mundo).<br> Esse parâmetro é inutil para servidores windows.
 SeeWikiForAllTeam=Veja a página da wiki para ver a lista de todos os autores e essa organização
-UseACacheDelay= Atraso para exportação de cache em segundos (0 ou vazio para sem cache)
+UseACacheDelay=Atraso para exportação de cache em segundos (0 ou vazio para sem cache)
 DisableLinkToHelpCenter=Esconder link "<b>Precisa de ajuda ou suporte</b>" na página de login
 DisableLinkToHelp=Ocultar link para ajuda online "<b>%s</b>"
 AddCRIfTooLong=Não possui nenhum empacotamento automático, então se a linha sair da página do documento é porque é muito comprida, você precisa adicionar você mesmo um retorno de transporte(carriage) na área de texto.
@@ -313,7 +274,6 @@ ListOfDirectoriesForModelGenODT=A lista de diretórios contém modelos de arquiv
 NumberOfModelFilesFound=Número de arquivos de temas ODT/ODS encontrados nestes diretórios
 ExampleOfDirectoriesForModelGen=Exemplo de sintaxe:<br>c:\\meudir<br>/home/meudir<br>DOL_DATA_ROOT/ecm/ecmdir
 FollowingSubstitutionKeysCanBeUsed=<br>Para saber como criar seus temas de documento em ODT, antes de armazená-los nesses diretórios, leia a documentação wiki:
-FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template
 FirstnameNamePosition=Posição do Nome/Sobrenome
 DescWeather=As seguintes imagens serão mostradas no painel quando o número de ações tardias alcançar os seguintes valores:
 KeyForWebServicesAccess=Chave para usar o Serviços Web (parâmetro "dolibarrkey" no serviço web)
@@ -326,7 +286,6 @@ SmsTestMessage=Mensagem Teste de __PHONEFROM__ para __PHONETO__
 ModuleMustBeEnabledFirst=O módulo <b>%s</b> deve estar primeiramente habilitado se você precisa desta funcionalidade.
 SecurityToken=Chave para proteção das URLs
 NoSmsEngine=Sem gestor de envido de SMS disponível. Por default o gestor de envio de SMS não vêm instalado (porque depende de um fornecedor externo) mas você pode achar um em %s
-PDF=PDF
 PDFDesc=Você pode configurar cada opção global relacionada com geração de PDF
 PDFAddressForging=Regras para forjar caixas de endereços
 HideAnyVATInformationOnPDF=Esconder todas as informações relacionadas com ICMS na geração de PDF
@@ -334,7 +293,6 @@ HideDescOnPDF=Esconder todas as descrições de produto na geração de PDF
 HideRefOnPDF=Esconder ref. dos produtos na geração de PDF
 HideDetailsOnPDF=Esconder a linha de detalhes dos produtos na geração de PDF
 PlaceCustomerAddressToIsoLocation=Use a posição padrão francesa (La Poste) para a posição do endereço do cliente
-Library=Biblioteca
 UrlGenerationParameters=Parâmetros para URLs de segurança
 SecurityTokenIsUnique=Usar um único parâmetro na chave de segurança para cada URL
 EnterRefToBuildUrl=Entre com a referência do objeto %s
@@ -345,22 +303,16 @@ NewVATRates=Taxa de ICMS nova
 PriceBaseTypeToChange=Modificar os preços com base no valor de referência defino em
 MassConvert=Lançar converções massivas
 String=Variável
-TextLong=Texto longo
 Int=Inteiro
 Float=Flutuante
 DateAndTime=Data e Hora
-Unique=Único
 Boolean=Boolean
-ExtrafieldPhone = Telefone
-ExtrafieldPrice = Preço
-ExtrafieldMail = E-mail
-ExtrafieldSelect = Selecionar lista
-ExtrafieldSelectList = Selecionar da tabela
-ExtrafieldSeparator=Separador
+ExtrafieldMail =E-mail
+ExtrafieldSelect =Selecionar lista
 ExtrafieldPassword=Senha
 ExtrafieldCheckBox=Caixa de seleção
 ExtrafieldRadio=Botão de Rádio
-ExtrafieldCheckBoxFromList= Caixa de seleção da tabela
+ExtrafieldCheckBoxFromList=Caixa de seleção da tabela
 ExtrafieldLink=Link para um objeto
 ExtrafieldParamHelpselect=Lista de parâmetros tem que ser tipo chave,valor<br><br> Por exemplo: <br>1,valor1<br>2,valor2<br>3,valor3<br>...<br><br>A ordem da lista tem que depender da outra:<br>1,valor1|parent_list_code:parent_key<br>2,valor2|parent_list_code:parent_key
 ExtrafieldParamHelpcheckbox=Lista de parâmetros tem que ser tipo chave,valor<br><br> por exemplo: <br>1,valor1<br>2,valor2<br>3,valor3<br>...
@@ -371,9 +323,7 @@ ExtrafieldParamHelplink=Os parâmetros devem ser ObjectName:Classpath<br>Sintaxe
 LibraryToBuildPDF=Biblioteca usada para a geração de PDF
 WarningUsingFPDF=Aviso: Sua <b>conf.php</b> Contém diretrize <b>dolibarr_pdf_force_fpdf=1</b>. Isso significa que você usa a biblioteca FPDF para gerar arquivos em PDF. Essa biblioteca é velha e não suporta muitas novas funções (Unicode, imagem transparente, cyrillic, línguas arábicas e asiáticas,...), portanto pode ocorrer alguns erros durante a geração de PDF.<br>Para corrigir esse problema e ter todo o suporte na geração de PDF, baixe <a href="http://www.tcpdf.org/" target="_blank">Biblioteca TCPDF</a>, então comente ou remova essa linha <b>$dolibarr_pdf_force_fpdf=1</b>, e adicione essa <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
 LocalTaxDesc=Alguns paises aplicam de 2 a 3 taxas em cada linha de fatura. Se for esse caso, escolha o tipo de segunda e terceira taxa. Os possíveis tipos são:<br>1 : Taxa local aplicam em produtos e serviços sem ICMS (ICMS não é aplicada em taxa local)<br>2 : Taxa local aplicam em produtos e serviços antes do ICMS (ICMS é calculado no montante + taxa local)<br>3 : Taxa local aplicam em produtos sem o ICMS (ICMS não é aplicada na taxa local)<br>4 : Taxa local aplicam nos produtos antes do ICMS (ICMS é calculado no montante + taxa local)<br>5 : Taxa local aplicam no serviço sem o ICMS (ICMS não é aplicado em taxa local)<br>6 : Taxa local aplicam em serviços antes do ICMS (ICMS é calculado no montante + taxa local)
-SMS=SMS
 LinkToTestClickToDial=Entre com um número telefônico para chamar e mostrar um link que testar a URL CliqueParaDiscar para usuário <strong>%s</strong>
-RefreshPhoneLink=Atualizar link
 LinkToTest=Clique no link gerado pelo usuário <strong>%s</strong> (clique no número telefônico para testar)
 KeepEmptyToUseDefault=Deixe em branco para usar o valor padrão
 DefaultLink=Link padrão
@@ -400,39 +350,28 @@ ModuleCompanyCodePanicum=Retorna um código de contabilidade vazio.
 ModuleCompanyCodeDigitaria=Código de contabilidade depende do código do terceiro. O Código é composto pelo caractere "C" na primeira posição seguido pelos 5 primeiros caracteres do código do terceiro.
 Use3StepsApproval=Como padrão, as Ordens de Compra precisam ser criadas e aprovadas por 2 usuários diferentes (uma etapa/usuário para criar e outra etapa/usuário para aprovar. Note que se o usuário tem as permissões para criar e aprovar, uma etapa/usuário será suficiente). Você pode usar esta opção para introduzir uma terceira etapa/usuário para aprovação, se o valor é superior do que um valor dedicado (assim 3 etapas serão necessárias: 1=validação, 2=primeira aprovação e 3=segunda aprovação se o valor for suficiente).<br>Defina isto como vazio se uma aprovação (2 etapas) é suficiente, e defina isto para um valor muito baixo (0.1) se uma segunda aprovação é sempre exigida.
 UseDoubleApproval=Usar uma aprovação de 3 etapas quando o valor (sem taxa) é maior do que ...
-
-# Modules
 Module0Name=Usuários e grupos
 Module0Desc=Gerenciamento de usuários e grupos
-Module1Name=Terceiros
 Module1Desc=Gerenciamento de empresas e contatos (clientes, prospecção, etc.)
-Module2Name=Comercial
 Module2Desc=Gestor Comercial
-Module10Name=Contabilidade
 Module10Desc=Relatório de Contabilidade Simples (jornais, rotação de estoque) baseado no conteúdo do banco de dados.
-Module20Name=Orçamentos
 Module20Desc=Gestor de Orçamentos
 Module22Name=E-Mails Massivos
 Module22Desc=Envio de E-Mails Massivos (spam)
-Module23Name=Energia
 Module23Desc=Monitoramento de Consumo de Energia
 Module25Name=Pedidos de Clientes
 Module25Desc=Gestor de Pedidos de Clientes
 Module30Name=Faturas
 Module30Desc=Gestor de Faturas e Notas de Créditos para Clientes. Gestor de faturas para Fornecedores
-Module40Name=Fornecedores
 Module40Desc=Gestor de Fornecedores e Compra (Pedidos e Faturas)
 Module42Name=Registros
 Module42Desc=Recursos para registro (arquivo, syslog, etc.)
-Module49Name=Editores
 Module49Desc=Gestor de Editores
-Module50Name=Produtos
 Module50Desc=Gestor de Produtos
 Module51Name=Cartas Massivos
 Module51Desc=Gestão de correspondência do massa
 Module52Name=Estoques
 Module52Desc=Gestor de Estoques (produtos)
-Module53Name=Serviços
 Module53Desc=Gestor de Serviços
 Module54Name=Contratos/Assinaturas
 Module54Desc=Gestor de Contratos (serviços e assinaturas recorrentes)
@@ -444,53 +383,39 @@ Module57Name=Ordens de pagamento bancárias diretas
 Module57Desc=Gerenciamento dos pedidos de pagamento com Débito Direto. Isto inclui a geração do arquivo SEPA para os países europeus.
 Module58Name=CliqueParaDiscarl
 Module58Desc=Integração do Sistema CliqueParaDiscar (Asterisk, etc.)
-Module59Name=Bookmark4u
 Module59Desc=Adicione uma função para gerar uma conta Bookmark4u de uma conta Dolibarr
-Module70Name=Intervenções
 Module70Desc=Gestor de Intervenções
 Module75Name=Despesas e Notas de Viagem
 Module75Desc=Gestor de Despesas e Notas de Viagem. Administração das notas de despesas e deslocamentos
 Module80Name=Fretes
 Module80Desc=Gestor de Fretes e Carregamentos
-Module85Name=Bancos e Caixas
 Module85Desc=Gestor de Bancos e Caixas
-Module100Name=Site Externo
 Module100Desc=Incluir seu site no menu superior do Dolibarr
 Module105Name=Carteiro e SPIP
 Module105Desc=Carteiro ou Interface SPIP para Módulo MembroMailman or SPIP interface for member module
-Module200Name=LDAP
 Module200Desc=Diretório de sincronização do LDAP
-Module210Name=PostNuke
-Module210Desc=Integração com PostNuke
 Module240Name=Exportações de Dados
 Module240Desc=Ferramenta para exportar dados do Dolibarr (com assistentes)
 Module250Name=Importação de Dados
 Module250Desc=Ferramenta para importar dados para o Dolibarr (com assistentes)
-Module310Name=Membros
 Module310Desc=Gestor de Associação de Membros
-Module320Name=RSS Feed
 Module320Desc=Adiciona um RSS feed dentro das páginas de tela do Dolibarr
 Module330Name=Marcadores de Página
 Module330Desc=Gerenciamento de agendamentos
 Module400Name=Projetos
 Module400Desc=Gestor de Projetos dentro de outros módulos
-Module410Name=Webcalendar
 Module410Desc=Integração do Webcalendar
 Module500Name=Taxas, Contribuições Sociais e Dividendos
 Module500Desc=Gestor Taxas, Contribuições Sociais e Dividentos
 Module510Name=Contratos e salários do empregado
 Module510Desc=Gerenciamento dos contratos, salários e pagamentos dos empregados
-Module520Name=Empréstimo
 Module520Desc=Gestão dos empréstimos
-Module600Name=Notificações
 Module600Desc=Enviar notificações por e-mail (disparadas por alguns eventos comerciais) para os usuários (configuração definida para cada usuário), contatos de terceiros (configuração definida para cada terceiro) ou para e-mails fixos
 Module700Name=Doações
 Module700Desc=Gestor de Doações
-Module770Name=Relatórios de despesas
 Module770Desc=Gestão e reivindicação de relatórios de despesas (transporte, refeição, ...)
 Module1120Name=Fornecedor - proposta comercial
 Module1120Desc=Pedido fornecedor - proposta comercial e preços
-Module1200Name=Mantis
 Module1200Desc=Integração Mantis
 Module1400Name=Contabilidade
 Module1400Desc=Gestor de Contabilidade (duas partes)
@@ -502,7 +427,6 @@ Module2000Name=Editor WYSIWYG
 Module2000Desc=Permitir editar alguma área do texto usando um editor avançado (Baseado no CKEditor)
 Module2200Name=Preços dinâmicos
 Module2200Desc=Habilitar o uso de expressões matemáticas para os preços
-Module2300Name=Cron
 Module2300Desc=Gestor de Tarefas Agendadas
 Module2400Name=Agenda/Eventos
 Module2400Desc=Siga eventos ou encontros. Registre manualmente os eventos  nas Agendas ou deixe que o aplicativo grave automaticamente os eventos para fins de monitoramento.
@@ -510,34 +434,25 @@ Module2500Name=Gerenciamento de Conteúdo Eletrônico
 Module2500Desc=Salve e compartilhe documentos
 Module2600Name=Serviços API/Web (Servidor SOAP)
 Module2600Desc=Ativa o servidor de serviços web do Dolibarr
-Module2610Name=Serviços API/Web (servidor REST)
 Module2610Desc=Permitir que o servidor prestação de serviços de API REST do Dolibarr
 Module2660Name=Chamar ServiçosWeb (cliente SOAP)
 Module2660Desc=Habilitar o webservices do Dolibarr (pode ser usado para empurrar de dados / pedidos de servidores externos. Ordens Fornecedor suporte apenas para o momento)
-Module2700Name=Gravatar
 Module2700Desc=Usar serviço online do Gravatar (www.gravatar.com) para mostrar foto de usuários/membros (achado pelos emails deles). Precisa de acesso a internet
-Module2800Desc=Cliente FTP
-Module2900Name=GeoIPMaxmind
 Module2900Desc=Capacidade de conversão com o GeoIP Maxmind
-Module3100Name=Skype
 Module3100Desc=Adicionar um botão Skype nos cartões dos usuários / terceiros / contatos membros
 Module4000Name=RH
 Module4000Desc=Gestão de recursos humanos
 Module5000Name=Multi-Empresas
 Module5000Desc=Permite gerenciar várias empresas
-Module6000Name=Fluxo de Trabalho
 Module6000Desc=Gestor de Fluxo de Trabalho
-Module10000Name=Websites
 Module10000Desc=Criar websites públicos com um editor WYSIWYG. Configure apenas o seu servidor web para direcionar para um diretório dedicado para tê-lo online na Internet.
 Module20000Name=Gerenciamento de folgas e férias
 Module20000Desc=Autorizar e acompanhar solicitações de licença de funcionários
 Module39000Name=Lote do produto
 Module39000Desc=Lote ou número de serie, para compra e venda administrado produtos
-Module50000Name=PayBox
 Module50000Desc=Módulo para oferecer pagamento online via cartão de crédito com PayBox
 Module50100Name=Ponto de Vendas
 Module50100Desc=Módulo ponto de vendas (PDV)
-Module50200Name=Paypal
 Module50200Desc=Módulo que oferece pagamento online via cartão de crédito com Paypal
 Module50400Name=Contabilidade (avançada)
 Module50400Desc=Gestão de Contabilidade (partes duplas)
@@ -545,9 +460,7 @@ Module54000Name=ImprimirIPP
 Module54000Desc=Imprima via Cups IPP
 Module55000Name=Pesquisa Aberta
 Module55000Desc=Módulo que integra pesquisa (tipo: Doodle, Studs, Rdvz, ...)
-Module59000Name=Margens
 Module59000Desc=Módulo para gerenciar margens
-Module60000Name=Comissões
 Module60000Desc=Módulo para gerenciar comissão
 Module63000Name=Recursos
 Module63000Desc=Gerenciar recursos (impressoras, carros, salas, etc.) que você pode compartilhar em eventos.
@@ -559,30 +472,21 @@ Permission15=Enviar Faturas de Clientes por E-Mail
 Permission16=Criar Pagamentos para Faturas de Clientes
 Permission19=Deletar Faturas de Clientes
 Permission21=Ler Orçamentos
-Permission22=Criar/Modificar Orçamentos
 Permission24=Validar Orçamentos
-Permission25=Enviar os Orçamentos
-Permission26=Fechar Orçamentos
-Permission27=Eliminar Orçamentos
 Permission28=Exportar Orçamentos
 Permission31=Ler Produtos
 Permission32=Criar/Modificar Produtos
 Permission34=Deletar Produtos
 Permission36=Ver/Gerenciar Produtos Ocultos
-Permission38=Exportar Produtos
 Permission41=Ler Projetos (Projetos Compartilhados e Projetos que eu contratei para)
 Permission42=Criar/Modificar Projetos (Projetos Compartilhados e Projetos que eu contratei para)
 Permission44=Deletar Projetos (Projetos Compartilhados e Projetos que eu contratei para)
 Permission45=Exportar projetos
 Permission61=Ler Intervenções
-Permission62=Criar/Modificar Intervenções
 Permission64=Deletar Intervenções
-Permission67=Exportar Intervenções
 Permission71=Ler Membros
-Permission72=Criar/Modificar Membros
 Permission74=Deletar Membros
 Permission75=Configurar tipos e atributos dos Membros
-Permission76=Exportar dados
 Permission78=Ler Assinaturas
 Permission79=Criar/Modificar Assinaturas
 Permission81=Ler Pedidos de Clientes
@@ -642,8 +546,6 @@ Permission185=Realizar Pedidos para Fornecedores
 Permission186=Aceitar Pedidos para Fornecedores
 Permission187=Fechar Pedidos para Fornecedores
 Permission188=Cancelar Pedidos para Fornecedores
-Permission192=Criar Linhas
-Permission193=Cancelar Linhas
 Permission194=Ler as Linhas de Bandwith
 Permission202=Criar Conexões ADSL
 Permission203=Pedir Pedidos de Conexões
@@ -653,7 +555,6 @@ Permission206=Ler Conexões
 Permission211=Ler Telefones
 Permission212=Linhas de Pedidos
 Permission213=Ativar Linha
-Permission214=Configurar Telefone
 Permission215=Configurar Provedores
 Permission221=Ler E-Mails
 Permission222=Criar/Modificar E-Mails (assunto, destinatários...)
@@ -675,7 +576,6 @@ Permission254=Criar/Modificar Usuários Externos
 Permission255=Modificar Senha de Outros Usuários
 Permission256=Deletar ou Desativar Outros Usuários
 Permission262=Acesso Extendido para Todos os Terceiros (não apenas aqueles usuários vinculados). Não é efetivo para usuários externos (sempre são limitados a eles mesmos)
-Permission271=Ler CA
 Permission272=Ler Faturas
 Permission273=Emitir Fatura
 Permission281=Ler Contatos
@@ -729,7 +629,7 @@ Permission773=Excluir relatórios de despesas
 Permission774=Leia todos os relatórios de despesas (mesmo para o utilizadores Não subordinados)
 Permission775=Aprovar os relatórios de despesas
 Permission776=Relatórios de despesas pagas
-Permission779=Exportar - Relatórios de despesas 
+Permission779=Exportar - Relatórios de despesas
 Permission1001=Ler Estoques
 Permission1002=Criar/Modificar Estoques
 Permission1003=Excluir Estoques
@@ -787,7 +687,6 @@ Permission2802=Usar cliente FTP no modo escrita (deletar ou upload de arquivos)
 Permission50101=Usar Ponto de Vendas
 Permission50201=Ler Transações
 Permission50202=Importar Transações
-Permission54001=Imprimir
 Permission55001=Ler Pesquisa
 Permission55002=Criar/Modificar Pesquisa
 Permission59001=Leia margens comerciais
@@ -801,9 +700,6 @@ DictionaryCompanyType=Tipos de terceiros
 DictionaryCompanyJuridicalType=Formas legais dos terceiros
 DictionaryProspectLevel=Nível potencial Prospect
 DictionaryCanton=Estado/Província
-DictionaryRegion=Regiões
-DictionaryCountry=Países
-DictionaryCurrency=Moedas
 DictionaryCivility=Títulos pessoais e profissionais
 DictionaryActions=Tipos de eventos na agenda
 DictionarySocialContributions=Tipos de encargos sociais e fiscais
@@ -817,52 +713,40 @@ DictionaryPaperFormat=Formatos de papel
 DictionaryFees=Tipos de benefício
 DictionarySendingMethods=Métodos do transporte
 DictionaryStaff=Pessoal
-DictionaryAvailability=Atraso na entrega
 DictionaryOrderMethods=Métodos de compra
 DictionarySource=Origem das propostas / ordens
 DictionaryAccountancyCategory=Categorias da contabilidade
 DictionaryAccountancysystem=Modelos para o plano de contas
 DictionaryEMailTemplates=Modelos de E-mails
-DictionaryUnits=Unidades
 DictionaryProspectStatus=Status de Prospecção
 DictionaryHolidayTypes=Tipos de licenças
 DictionaryOpportunityStatus=Status oportunidade para projeto / lead
 SetupSaved=Configurações Salvas
-BackToModuleList=Voltar à lista de módulos
 BackToDictionaryList=Voltar para a lista de dicionários
 VATManagement=Gestor de ICMS
 VATIsUsedDesc=Como padrão, quando da criação de orçamentos, faturas, pedidos, etc. a taxa do ICMS acompanha a regra padrão ativa:<br>se o vendedor não estiver sujeito ao ICMS, então o padrão do ICMS é 0. Fim da regra.<br>Se o (país da venda= país da compra), então o ICMS por padrão é igual ao ICMS do produto no país da venda. Fim da regra. <br>Se o vendedor e o comprador estão na Comunidade Europeia e os produtos são meios de transporte (carro, navio, avião), o VAT padrão é 0 (O VAT deverá ser pago pelo comprador à receita federal do seu país e não ao vendedor). Fim da regra.<br>Se o vendedor e o comprador estão na Comunidade Europeia e o comprador não é uma pessoa jurídica, então o VAT por padrão é o VAT do produto vendido. Fim da regra.<br>Se o vendedor e o comprador estão na Comunidade Europeia e o comprador é uma pessoa jurídica, então o VAT é 0 por padrão . Fim da regra.<br>Em qualquer outro caso o padrão proposto é ICMS=0. Fim da regra.
 VATIsNotUsedDesc=Por padrão o ICMS sugerido é 0, o que pode ser usado em casos tipo associações, pessoas ou pequenas empresas.
 VATIsUsedExampleFR=Na França, as empresas ou organizações tem um sistema fiscal real (simplificado real ou normal real). Um sistema no qual o ICMS(vat) é declarado.
 VATIsNotUsedExampleFR=Na França, as associações que não declaram ICMS(vat) ou empresas, organizações ou profissionais liberais que tem escolhidos o sistema fiscal de micro empresas (VAT em franquia) e pago uma franquia VAT sem qualquer declaração de ICMS(vat). Está escolha será mostrado com uma refêrencia "Não Aplicado ICMS(vat) - art-293B de CGI" nas faturas.
-##### Local Taxes #####
 LTRate=Rata
 LocalTax1IsNotUsed=Não utilizar segundo imposto
 LocalTax1IsUsedDesc=Utilizar um segundo tipo de imposto (outro que não seja ICMS)
 LocalTax1IsNotUsedDesc=Não utilizar outro tipo de imposto (outro que não seja ICMS)
-LocalTax1Management=Segundo tipo de imposto
-LocalTax1IsUsedExample=
-LocalTax1IsNotUsedExample=
 LocalTax2IsNotUsed=Não utilizar terceiro imposto
 LocalTax2IsUsedDesc=Utilizar um terceiro tipo de imposto (outro que não seja ICMS)
 LocalTax2IsNotUsedDesc=Não utilizar outro tipo de imposto (outro que não seja ICMS)
-LocalTax2Management=Terceiro tipo de imposto
-LocalTax2IsUsedExample=
-LocalTax2IsNotUsedExample=
-LocalTax1ManagementES= Gestor RE
-LocalTax1IsUsedDescES= A taxa RE padrão, quando criando orçamentos, faturas, pedidos, etc., segue a regra padrão ativa:<br>Se o comprador não estiver sujeito à RE, a RE por padrão=0. Fim da regra.<br>Se o comprador for sujeito à RE, então será aplicada a RE padrão. Fim da regra.<br>
-LocalTax1IsNotUsedDescES= A RE padrão proposta é 0. Fim da regra.
-LocalTax1IsUsedExampleES= Na Espanha eles são profissionais sujeito a alguma seção especifica da IAE espanhola.
-LocalTax1IsNotUsedExampleES= Na Espanha eles são proficionais e sócios e sujeito a uma certa seção da IAE espanhola.
-LocalTax2ManagementES= Gestor IRPF
-LocalTax2IsUsedDescES= A taxa RE padrão, quando criando orçamentos, faturas, pedidos, etc., acompanha a regra padrão ativa:<br>Se o vendedor não estiver sujeito ao IRPF, então o IRPF por padrão=0. Fim da regra.<br>Se o vendedor estiver sujeito ao IRPF, então aplica-se o IRPF padrão. Fim da regra.<br>
-LocalTax2IsNotUsedDescES= Por padrão, o iRPF sugerido é 0. Fim da regra.
-LocalTax2IsUsedExampleES= Na Espanha, freelancers e profissionais independentes que oferecem serviços e empresas que tenham escolhidos o módulo de sistema de imposto.
-LocalTax2IsNotUsedExampleES= Na Espanha eles são negócios não sujeito ao módulo de sistema de imposto.
+LocalTax1ManagementES=Gestor RE
+LocalTax1IsUsedDescES=A taxa RE padrão, quando criando orçamentos, faturas, pedidos, etc., segue a regra padrão ativa:<br>Se o comprador não estiver sujeito à RE, a RE por padrão=0. Fim da regra.<br>Se o comprador for sujeito à RE, então será aplicada a RE padrão. Fim da regra.<br>
+LocalTax1IsNotUsedDescES=A RE padrão proposta é 0. Fim da regra.
+LocalTax1IsUsedExampleES=Na Espanha eles são profissionais sujeito a alguma seção especifica da IAE espanhola.
+LocalTax1IsNotUsedExampleES=Na Espanha eles são proficionais e sócios e sujeito a uma certa seção da IAE espanhola.
+LocalTax2ManagementES=Gestor IRPF
+LocalTax2IsUsedDescES=A taxa RE padrão, quando criando orçamentos, faturas, pedidos, etc., acompanha a regra padrão ativa:<br>Se o vendedor não estiver sujeito ao IRPF, então o IRPF por padrão=0. Fim da regra.<br>Se o vendedor estiver sujeito ao IRPF, então aplica-se o IRPF padrão. Fim da regra.<br>
+LocalTax2IsNotUsedDescES=Por padrão, o iRPF sugerido é 0. Fim da regra.
+LocalTax2IsUsedExampleES=Na Espanha, freelancers e profissionais independentes que oferecem serviços e empresas que tenham escolhidos o módulo de sistema de imposto.
+LocalTax2IsNotUsedExampleES=Na Espanha eles são negócios não sujeito ao módulo de sistema de imposto.
 CalcLocaltax=Relatórios sobre os impostos locais
-CalcLocaltax1=Vendas - Compras
 CalcLocaltax1Desc=Relatorios de taxas locais são calculados pela differença entre taxas locais de venda e taxas locais de compra
-CalcLocaltax2=Compras
 CalcLocaltax2Desc=Relatorio de taxas locais e o total de taxas locais nas compras
 CalcLocaltax3=De vendas
 CalcLocaltax3Desc=Relatorio de taxas locais e o total de taxas locais de vendas
@@ -876,14 +760,9 @@ AlwaysActive=Sempre ativo
 Upgrade=Atualizar
 MenuUpgrade=Atualizar / Ampliar
 AddExtensionThemeModuleOrOther=Adicionar extensão (tema, módulo, ...)
-WebServer=Servidor web
 DocumentRootServer=Diretório raiz do servidor web
 DataRootServer=Diretório raiz dos dados
-IP=IP
-Port=Porta
 VirtualServerName=Nome virtual do servidor
-OS=SO
-PhpWebLink=link Web-PHP
 Browser=Navegador
 Server=Servidor
 Database=Banco de Dados
@@ -892,15 +771,13 @@ DatabaseName=Nome do Banco de Dados
 DatabasePort=Porta do Banco de Dados
 DatabaseUser=Usuário do Banco de Dados
 DatabasePassword=Senha do Banco de Dados
-Tables=Tabelas
 TableName=Nome da Tabela
 NbOfRecord=Núm de gravações
-Host=Servidor
 DriverType=Tipo de Driver
 SummarySystem=Resumo de informações do sistema
 SummaryConst=Lista de todos os parâmetros de configurações do Dolibarr
 MenuCompanySetup=Empresa
-DefaultMenuManager= Gestor padrão de menu
+DefaultMenuManager=Gestor padrão de menu
 DefaultMenuSmartphoneManager=Gestor do menu de smartphone
 Skin=Tema Visual
 DefaultSkin=Tema visual default
@@ -919,16 +796,10 @@ CompanyName=Nome
 CompanyAddress=Endereço
 CompanyZip=CEP
 CompanyTown=Município
-CompanyCountry=País
-CompanyCurrency=Moeda principal
-CompanyObject=Objeto da empresa
-Logo=Logo
-DoNotSuggestPaymentMode=Não sugerir
 NoActiveBankAccountDefined=Nenhuma conta bancária ativa está definida
 OwnerOfBankAccount=Titular da conta bancária %s
 BankModuleNotActive=O módulo de contas bancárias não está habilitado
 ShowBugTrackLink=Mostrar link "<strong>%s</strong>"
-Alerts=Alertas
 DelaysOfToleranceBeforeWarning=Prazos de tolerância antes do aviso
 DelaysOfToleranceDesc=Esta janela permite definir os prazos de tolerância antes que o aviso é reportado na tela com o símbolo %s, sobre cada elemento em atraso.
 Delays_MAIN_DELAY_ACTIONS_TODO=Prazo de tolerância (em dias) antes do alerta sobre eventos planejados (eventos da agenda) ainda não concluídos
@@ -952,7 +823,6 @@ SetupDescription3=Os parâmetros no menu <a href="%s">Configuração -> Companhi
 SetupDescription4=Os parâmetros no menu <a href="%s">Configuração -> Módulos</a> são exigidos, pois o Dolibarr não é um ERP/CRM monolítico, mas uma coleção de diversos módulos, todos mais ou menos independentes. Novas funções serão adicionadas aos menus para cada módulo que você habilitar.
 SetupDescription5=Outros menu precisa entrar com parâmetros opcionais do gestor.
 LogEvents=Auditoría de segurança dos eventos
-Audit=Auditoría
 InfoDolibarr=Sobre o Dolibarr
 InfoBrowser=Sobre o navegador
 InfoOS=Sobre o SO
@@ -1006,9 +876,8 @@ RestoreDesc=Para restaurar o backup Dolibarr, você deve:
 RestoreDesc2=* Restaurar o arquivo de backup (zipado) no diretório dos documentos, para extrair a arvore de arquivos no diretório do documento da nova instalação do Dolibarr ou dentro do atual diretório dos documentos (<b>%s</b>).
 RestoreDesc3=* Restaurar os dados de backup do arquivo de despejo, para dentro do banco de dados da nova instalação do Dolibarr ou para dentro da atual instalação. Aviso, uma vez a restauração completa, você deve usar o login/senha, que existia quando o backup foi feito, para conectar denovo. Para restaurar o backup do banco de dados para dentro da atual instalação, você pode seguir esse assistente.
 RestoreMySQL=Importar MySQL
-ForcedToByAModule= Essa Regra é forçada para <b>%s</b> by um módulo ativado
+ForcedToByAModule=Essa Regra é forçada para <b>%s</b> by um módulo ativado
 PreviousDumpFiles=Disponível banco de dados de backup dos arquivos de despejo
-WeekStartOnDay=Primeiro dia da semana
 RunningUpdateProcessMayBeRequired=Rodando o processo de upgrade parece ser requerido (Versão dos programas %s é diferente da versão do banco de dados %s)
 YouMustRunCommandFromCommandLineAfterLoginToUser=Você deve rodar esse comando na linha de comando (CLI) depois de logar no shell com o usuário <b>%s</b> ou você deve adicionar a opção -W no final da linha de comando para fornecer a senha <b>%s</b>.
 YourPHPDoesNotHaveSSLSupport=Função SSL functions não está disponível no seu PHP
@@ -1021,26 +890,18 @@ SomeTranslationAreUncomplete=Algumas línguas pode ter sido parcialmente traduzi
 MAIN_DISABLE_METEO=Desativar visualização meteo
 TestLoginToAPI=Teste de login para API
 ProxyDesc=Algumas funções do Dolibarr precisam ter acesso a internet para funcionar. Defina esses parâmetros aqui. se o servidor Dolibarr esta atrás de um servidor de proxy, esses parâmetros falam pro Dolibarr como acessar a internet através disso.
-ExternalAccess=Acesso externo
 MAIN_PROXY_USE=Use um servidor de proxy (caso contrário acesso direto a internet)
 MAIN_PROXY_HOST=Nome/Endereço do servidor de proxy
 MAIN_PROXY_PORT=Porta do servidor de proxy
 MAIN_PROXY_USER=Login para usar no servidor de proxy
 MAIN_PROXY_PASS=Senha para usar no servidor de proxy
 DefineHereComplementaryAttributes=Defina aqui todos os atributos, não disponível por default, e que você quer que seja suportado por %s.
-ExtraFields=Atributos complementares
-ExtraFieldsLines=Atributos complementares (linhas)
 ExtraFieldsSupplierOrdersLines=Atributos complementares (linhas de encomenda)
 ExtraFieldsSupplierInvoicesLines=Atributos complementares (linhas da fatura)
 ExtraFieldsThirdParties=Atributos complementares (terceiros)
 ExtraFieldsContacts=Atributos complementares (contato/endereço)
 ExtraFieldsMember=Atributos complementares (membros)
-ExtraFieldsMemberType=Atributos complementares (tipo de membro)
-ExtraFieldsCustomerInvoices=Atributos complementares (faturas)
 ExtraFieldsSupplierOrders=Atributos complementares (pedidos)
-ExtraFieldsSupplierInvoices=Atributos complementares (faturas)
-ExtraFieldsProject=Atributos complementares (projetos)
-ExtraFieldsProjectTask=Atributos complementares (tarefas)
 ExtraFieldHasWrongValue=Atributo %s tem um valor errado.
 AlphaNumOnlyLowerCharsAndNoSpace=apenas alfanumérico e minúsculas, sem espaço
 SendmailOptionNotComplete=Aviso, em alguns sistemas Linux, para enviar email para seu email, sendmail executa a configuração que deve conter opção -ba (parâmetro mail.force_extra_parameters dentro do seu arquivo php.ini). Se algum destinatário não receber emails, tente editar esse parâmetro PHP com mail.force_extra_parameters = -ba).
@@ -1076,23 +937,17 @@ XDebugInstalled=XDebug é carregado.
 XCacheInstalled=XCache é carregado.
 AddRefInList=Aparência cliente/fornecedor ref dentro da lista (escolha a lista ou combobox) e mais o hyperlink. Terceiros serão exibidos co o nome "CC12345 - SC45678 - A grande corporação", ao invés de "A grande corporação".
 AskForPreferredShippingMethod=Perguntar pelo Método de Envio preferido para Terceiros
-FieldEdition=Edição do campo %s
 FillThisOnlyIfRequired=Exemplo: +2 (Preencha somente se compensar o problema do timezone é experiente)
-GetBarCode=Obter código de barras
-##### Module password generation
 PasswordGenerationStandard=Retorna uma senha gerara de acordo com o algorítimo interno do Dolibarr: 8 caracteres contendo números e letras em letras minusculas.
 PasswordGenerationNone=Não sugerimos qualquer senha gerada. A senha deve ser inserida manualmente.
 PasswordGenerationPerso=Retornar uma senha de acordo com a configuração definida para a sua personalidade.
 SetupPerso=De acordo com a sua configuração
 PasswordPatternDesc=Descrição do padrão de senha
-##### Users setup #####
 RuleForGeneratedPasswords=Regra para sugerir uma senha gerada ou validação de senha
 DisableForgetPasswordLinkOnLogonPage=Não mostrar o link "Esqueceu a senha" na página de login
 UsersSetup=Configurações de módulo de usuários
 UserMailRequired=EMail é necessário para criação de um novo usuário
-##### HRM setup #####
 HRMSetup=Configuração do módulo RH
-##### Company setup #####
 CompanySetup=Configurações de módulo das empresas
 CompanyCodeChecker=Módulo de geração e verificação de códigos de terceiros (cliente ou fornecedor)
 AccountCodeManager=Módulo de geração de códigos de contabilidade (clientes ou fornecedores)
@@ -1108,14 +963,10 @@ CompanyIdProfChecker=Regras no Ids profissional
 MustBeUnique=Deve ser único?
 MustBeMandatory=Obrigatória a criação de terceiros?
 MustBeInvoiceMandatory=Obrigatória a validação de faturas?
-##### Webcal setup #####
 WebCalUrlForVCalExport=Uma exportação de link para o formato <b>%s</b> está disponível no seguinte link: %s
-##### Invoices #####
 BillsSetup=Configurações do módulo de faturas
 BillsNumberingModule=Faturas e notas de crédito no modelo de numeração
 BillsPDFModules=Modelos de documentos da fatura
-CreditNote=Nota de crédito
-CreditNotes=Notas de crédito
 ForceInvoiceDate=Forçar data de fatura para data de validação
 SuggestedPaymentModesIfNotDefinedInInvoice=Sugerir formas de pagamentos na fatura por default se não estiver definida na fatura
 SuggestPaymentByRIBOnAccount=Sugerir pagamento por transferência bancária
@@ -1125,14 +976,12 @@ WatermarkOnDraftInvoices=Marca d'água sobre o projeto de faturas (nenhum se est
 PaymentsNumberingModule=Modelo de enumeração para pagamentos
 SuppliersPayment=Pagamentos a fornecedores
 SupplierPaymentSetup=Configuração dos pagamentos aos fornecedores
-##### Proposals #####
 PropalSetup=Configurações do módulo de orçamentos
 ProposalsNumberingModules=Modelos de numeração de orçamentos
 ProposalsPDFModules=Modelos de documentos para Orçamentos
 FreeLegalTextOnProposal=Texto livre em orçamentos
 WatermarkOnDraftProposal=Marca d'água no rascunho de orçamentos (nenhum se vazio)
 BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Informar conta bancária de destino da proposta
-##### SupplierProposal #####
 SupplierProposalSetup=Preço solicitado via fornecedor instalação de módulo
 SupplierProposalNumberingModules=Modelos de numeração das solicitações de preço aos fornecedores
 SupplierProposalPDFModules=Modelos de documentos de solicitação de preço aos fornecedores
@@ -1140,57 +989,41 @@ FreeLegalTextOnSupplierProposal=Texto livre sobre os pedidos de preços de forne
 WatermarkOnDraftSupplierProposal=Marca d'água em projetos de ordem dos fornecedores (nenhum se estiver vazio)
 BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Informar conta bancária de destino da proposta
 WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Solicitar Fonte de Armazenagem para o pedido
-##### Orders #####
 OrdersSetup=Configurações do gestor de pedidos
 OrdersNumberingModules=modelos de numeração de pedidos
 OrdersModelModule=Modelos de documentos de pedidos
-FreeLegalTextOnOrders=Texto livre em pedidos
 WatermarkOnDraftOrders=Marca d'água no rascunho de pedidos (nenhum para vazio)
 ShippableOrderIconInList=Adicionar um ícone na lista de pedidos que indicam se a ordem é shippable
 BANK_ASK_PAYMENT_BANK_DURING_ORDER=Informar conta bancária de destino da ordem
-##### Clicktodial #####
 ClickToDialSetup=Configurações do módulo clique para discar
 ClickToDialUrlDesc=Chamada URL quando se dá um clique na imagem do telefone. Na URL, você pode usar as tags<br><b>__TELEFONEPARA__</b> que será substituido com o número telefônico da pessoa a telefonar<br><b>__TELEFONEDE__ que será substituido com o número da pessoa que se telefona (seus)<br><b>__LOGIN__</b> que será substituido com o seu usuário do seu clique para discar (definido com o seu cartão de usuário)<br><b>__SENHA__</b> que será substituido pela sua senha do clique para discar (definida pelo seu cartão de usuário)
-##### Bookmark4u #####
-##### Interventions #####
 InterventionsSetup=Configurações do módulo intervenções
 FreeLegalTextOnInterventions=Texto livre nos documentos de intervenção
 FicheinterNumberingModules=Modelos de numeração de intervenção
 TemplatePDFInterventions=Modelos de documentos de cartão de intervenção
 WatermarkOnDraftInterventionCards=Marca d'água nos documentos de cartão de intervenção (nenhum para vazio)
-##### Contracts #####
 ContractsSetup=Configurações de módulo de contratos
 ContractsNumberingModules=módulos de numeração de contratos
 TemplatePDFContracts=Modelos de documentos Contratos
 FreeLegalTextOnContracts=Texto livre em contratos
 WatermarkOnDraftContractCards=Marca d'água em projetos de contratos (nenhum se estiver vazio)
-##### Members #####
 MembersSetup=Configurações de módulo de membros
-MemberMainOptions=Opções principais
-AdherentLoginRequired= Gestor de login para cada membro
+AdherentLoginRequired=Gestor de login para cada membro
 AdherentMailRequired=E-Mail é obrigatório para criar um novo membro
 MemberSendInformationByMailByDefault=Marque o checkbox para enviar confirmação de correspondência para membros (validação ou nova contribuição) é ativo por default
-##### LDAP setup #####
 LDAPSetup=Configurações do LDAP
 LDAPGlobalParameters=Parâmetros globais
 LDAPUsersSynchro=Usuários
-LDAPGroupsSynchro=Grupos
 LDAPContactsSynchro=Contatos
-LDAPMembersSynchro=Membros
 LDAPSynchronization=sincronização LDAP
 LDAPFunctionsNotAvailableOnPHP=Funções LDAP não estão disponíveis no seu PHP
-LDAPToDolibarr=LDAP -> Dolibarr
-DolibarrToLDAP=Dolibarr -> LDAP
-LDAPNamingAttribute=Chave em LDAP
 LDAPSynchronizeUsers=Organização dos usuários em LDAP
 LDAPSynchronizeGroups=Organização dos grupos em LDAP
 LDAPSynchronizeContacts=Organização dos contatos em LDAP
 LDAPSynchronizeMembers=Organização dos membros da fundação em LDAP
 LDAPPrimaryServer=Servidor primário
 LDAPSecondaryServer=Servidor secundário
-LDAPServerPort=Porta do servidor
 LDAPServerPortExample=Porta default : 389
-LDAPServerProtocolVersion=Versão de protocolo
 LDAPServerUseTLS=Usuário TLS
 LDAPServerUseTLSExample=Seu servidor LDAP usa TLS
 LDAPServerDn=Servidor DN
@@ -1199,7 +1032,6 @@ LDAPAdminDnExample=Preencher DN (ex: cn=admin,dc=exemplo,dc=com ou cn=Administra
 LDAPPassword=Senha do administrador
 LDAPUserDn=DN dos Usuário
 LDAPUserDnExample=DN completo (ex: ou=usuários,dc=exemplo,dc=com)
-LDAPGroupDn=DN dos grupos
 LDAPGroupDnExample=DN completo (ex: ou=grupos,dc=exemplo,dc=com)
 LDAPServerExample=Endereço do servidor (ex: localhost, 192.168.0.2, ldaps://ldap.exemplo.com/)
 LDAPServerDnExample=DN completo (Ex: dc=exemplo,dc=com)
@@ -1207,26 +1039,21 @@ LDAPDnSynchroActive=Sincronização de Usuários e Grupos
 LDAPDnSynchroActiveExample=Sincronização LDAP para Dolibarr ou Dolibarr para LDAP
 LDAPDnContactActive=Sincronização dos contatos
 LDAPDnContactActiveExample=Sincronização Ativada/Desativada
-LDAPDnMemberActive=Sincronização dos Membros
 LDAPDnMemberActiveExample=Sincronização Ativada/Desativada
 LDAPContactDn=Contatos DN do Dolibarr
 LDAPContactDnExample=DN completo (ex: ou=contatos,dc=exemplo,dc=com)
 LDAPMemberDn=Membros DN do Dolibarr
 LDAPMemberDnExample=DN completo (ex: ou=membros,dc=exemplo,dc=com)
-LDAPMemberObjectClassList=Lista de objectClass
 LDAPMemberObjectClassListExample=Lista de ObjectClass que definem os atributos gravados (ex: top,inetOrgPerson ou top,usuário por active diretory)
-LDAPUserObjectClassList=Lista de objectClass
 LDAPUserObjectClassListExample=Lista de ObjectClass que definem os atributos gravados (ex: top,inetOrgPerson ou top,usuário por active diretory)
-LDAPGroupObjectClassList=Lista de objectClass
 LDAPGroupObjectClassListExample=Lista de ObjectClass que definem os atributos gravados (ex top,grupoDeNomeUnico)
-LDAPContactObjectClassList=Lista de objectClass
 LDAPContactObjectClassListExample=Lista de objectClass que definem os atributos gravados (ex: top,inetOrgPerson o top,usuários por active diretory)
 LDAPTestConnect=Teste de conexão LDAP
 LDAPTestSynchroContact=Teste de sincronização dos contatos
 LDAPTestSynchroUser=Teste de sincronização dos Usuário
 LDAPTestSynchroGroup=Teste de sincronização dos grupos
 LDAPTestSynchroMember=Teste de sincronização dos Membros
-LDAPTestSearch= Teste de pesquisa LDAP
+LDAPTestSearch=Teste de pesquisa LDAP
 LDAPSynchroOK=Teste de sincronização foi um sucesso
 LDAPSynchroKO=Teste de sincronização falhou
 LDAPSynchroKOMayBePermissions=Teste de sincronização falhou. Verifique se a conexão do servidor está corretamente configurada e que permita atualizações LDAP
@@ -1238,49 +1065,28 @@ LDAPSetupForVersion3=Servidor LDAP configurado para versão 3
 LDAPSetupForVersion2=Servidor LDAP configurado para versão 2
 LDAPDolibarrMapping=Mapeamento Dolibarr
 LDAPLdapMapping=Mapeamento LDAP
-LDAPFieldLoginUnix=Login (unix)
-LDAPFieldLoginExample=Exemplo : uid
-LDAPFilterConnection=Filtro de pesquisa
 LDAPFilterConnectionExample=Exemplo : &(objectClass=inetOrgPerson)
-LDAPFieldLoginSamba=Login (samba, activedirectory)
 LDAPFieldLoginSambaExample=Exemplo : ananomedaconta
-LDAPFieldFullname=Nome completo
-LDAPFieldFullnameExample=Exemplo : cn
 LDAPFieldPasswordNotCrypted=Senha não criptografada
 LDAPFieldPasswordCrypted=Senha criptografada
 LDAPFieldPasswordExample=Exemplo : SenhaUsuário
-LDAPFieldCommonNameExample=Exemplo : cn
-LDAPFieldName=Nome
-LDAPFieldNameExample=Exemplo : sn
 LDAPFieldFirstName=Primeiro nome
 LDAPFieldFirstNameExample=Exemplo : deumnome
-LDAPFieldMail=E-Mail
-LDAPFieldMailExample=Exemplo : mail
 LDAPFieldPhone=Telefone profissional
 LDAPFieldPhoneExample=Exemplo : númerotelefônico
-LDAPFieldHomePhone=Telefone pessoal
 LDAPFieldHomePhoneExample=Exemplo : númerodecasa
 LDAPFieldMobile=Celular
 LDAPFieldMobileExample=Exemplo : móvel
-LDAPFieldFax=Fax
 LDAPFieldFaxExample=Exemplo : númerodefax
 LDAPFieldAddress=Endereço
 LDAPFieldAddressExample=Exemplo : Rua
 LDAPFieldZip=CEP
 LDAPFieldZipExample=Exemplo : 00000-000
 LDAPFieldTown=Município
-LDAPFieldTownExample=Exemplo : l
-LDAPFieldCountry=País
-LDAPFieldDescription=Descrição
 LDAPFieldDescriptionExample=Exemplo : Descrição
-LDAPFieldNotePublic=Nota Pública
 LDAPFieldNotePublicExample=Exemplo: publicnote
-LDAPFieldGroupMembers= Membros de grupo
-LDAPFieldGroupMembersExample= Exemplo : membroÚnico
-LDAPFieldBirthdate=Data de nascimento
-LDAPFieldCompany=Empresa
-LDAPFieldCompanyExample=Exemplo : o
-LDAPFieldSid=SID
+LDAPFieldGroupMembers=Membros de grupo
+LDAPFieldGroupMembersExample=Exemplo : membroÚnico
 LDAPFieldSidExample=Exemplo : objetosid
 LDAPFieldEndLastSubscription=Data do término de inscrição
 LDAPFieldTitle=Cargo
@@ -1302,16 +1108,12 @@ MemcachedModuleAvailableButNotSetup=Módulo de aceleração da memória cache es
 MemcachedAvailableAndSetup=Módulo de aceleração da memória cache está ativado e a configuração está completa
 OPCodeCache=cache OPCode
 NoOPCodeCacheFound=Nenhum cache OPCode foi achado. Pode ser que você use outro cache OPCode do que XCache ou eAccelerator (bom), pode ser que você não tenha cache OPCode (muito mau).
-HTTPCacheStaticResources=Cache HTTP para recursos estáticos (css, img, javascript)
 FilesOfTypeCached=Arquivos do tipo %s estão no cache pelo servidor HTTP
 FilesOfTypeNotCached=Arquivos do tipo %s não estão no cache pelo servidor HTTP
 FilesOfTypeCompressed=Arquivos do tipo %s estão comprimidos pelo servidor HTTP
 FilesOfTypeNotCompressed=Arquivos do tipo %s não estão comprimidos pelo servidor HTTP
-CacheByServer=Cache pelo servidor
-CacheByClient=Cache pelo navegador
 CompressionOfResources=Comprimir as respostas HTTP
 TestNotPossibleWithCurrentBrowsers=Não é possível detecção automática
-##### Products #####
 ProductSetup=Configurações do módulo dos produtos
 ServiceSetup=Configurações do módulo de serviços
 ProductServiceSetup=Configurações dos módulos de produtos e serviços
@@ -1324,22 +1126,18 @@ UseSearchToSelectProduct=Usar um formulário de pesquisa para escolher um produt
 SetDefaultBarcodeTypeProducts=Tipo de código de barras default para usar nós produtos
 SetDefaultBarcodeTypeThirdParties=Tipo de código de barras default para usar nós terceiros
 UseUnits=Definir uma unidade de medida para a Quantidade durante a edição das linhas do pedido, proposta ou fatura
-ProductCodeChecker= Módulo para geração de código do produto e verificação (produto ou serviço)
-ProductOtherConf= Configurações de Produto / Serviço
+ProductCodeChecker=Módulo para geração de código do produto e verificação (produto ou serviço)
+ProductOtherConf=Configurações de Produto / Serviço
 IsNotADir=não é um diretório!
-##### Syslog #####
 SyslogSetup=Configurações do módulo de logs
 SyslogOutput=Saídas de logs
-SyslogFacility=Facilidade
 SyslogLevel=Nível
 SyslogFilename=Nome do arquivo e caminho
 YouCanUseDOL_DATA_ROOT=Você pode usar DOL_DATA_ROOT/dolibarr.log para um arquivo de log no diretório dos "documentos" do Dolibarr.
 ErrorUnknownSyslogConstant=A Constante %s não é conhecida pelas constantes do Syslog
 OnlyWindowsLOG_USER=Somente Windows suporta LOG_USER
-##### Donations #####
 DonationsSetup=Configurações do módulo de doações
 DonationsReceiptModel=Templates de recibos de doação
-##### Barcode #####
 BarcodeSetup=Configurações de código de barras
 PaperFormatModule=Módulo de formato de impressão
 BarcodeEncodeModule=Tipo de codificação do código de barras
@@ -1352,66 +1150,51 @@ BarcodeDescUPC=Código de barras tipo UPC
 BarcodeDescISBN=Código de barras tipo ISBN
 BarcodeDescC39=Código de barras tipo C39
 BarcodeDescC128=Código de barras tipo C128
-BarcodeDescDATAMATRIX=Código de barras do tipo Datamatrix
 BarcodeDescQRCODE=Código de barras do tipo QR code
 GenbarcodeLocation=Ferramenta em linha de comando para geração de código de barras (usado pelo mecanismo interno para alguns tipos de código de barras)
 BarcodeInternalEngine=Mecanismo interno
 BarCodeNumberManager=Gerente de auto definir números de código de barras
-##### Prelevements #####
 WithdrawalsSetup=Configuração do módulo de pedidos com pagamento por Débito direto
-##### ExternalRSS #####
 ExternalRSSSetup=Configurações importantes de RSS externo
 NewRSS=Novo RSS Feed
 RSSUrl=URL de RSS
 RSSUrlExample=Um interessante RSS feed
-##### Mailing #####
 MailingSetup=Configurações do módulo de e-mails
 MailingEMailFrom=Emissor de e-mails (de) por envio de e-mail pelo módulo de e-mails
 MailingEMailError=Retornar e-mails (erros-para) por e-mails que contêm erros
 MailingDelay=Segundos de espera antes do envio da mensagem seguinte
-##### Notification #####
 NotificationSetup=Configurações do módulo de notificações por e-mail
 NotificationEMailFrom=Emissor de e-mails (de) por envio de notificação por e-mails
 FixedEmailTarget=Alvo fixo e-mail
-##### Sendings #####
 SendingsSetup=Configurações do módulo de envios
 SendingsReceiptModel=Modelo de recibo do envio
 SendingsNumberingModules=Módulos de númeração de envios
 SendingsAbility=Suporte para folhas de envios, para entregas de cliente
 NoNeedForDeliveryReceipts=Na maioria dos casos, recibos de envios são usados em duas folhas pela entrega de clientes (lista de produtos a enviar) e folhas que é recebida e assinado pelo cliente. Então o recibo de entrega do produto é duplicado e é raramente ativado.
 FreeLegalTextOnShippings=Texto livre para envios
-##### Deliveries #####
 DeliveryOrderNumberingModules=Módulo de numeração de recibos de produtos entregues
 DeliveryOrderModel=Modelo de recibo de produtos entregues
 DeliveriesOrderAbility=Suporta recibos de entrega de produtos
 FreeLegalTextOnDeliveryReceipts=Texto livre em recibos de entregas
-##### FCKeditor #####
 AdvancedEditor=Editor avançado
 ActivateFCKeditor=Editor avançado ativo por:
 FCKeditorForCompany=Criação/edição do WYSIWIG nas descrições de elementos e nota (exceto produtos/serviços)
 FCKeditorForProduct=Criação/edição do WYSIWIG nas descrições de  produtos/serviços e nota
 FCKeditorForProductDetails=Criação/edição do WYSIWIG nas linhas dos detalhes de produtos de todas entidades (orçamentos, pedidos, faturas, etc...). <font class="warning">Aviso: Usando essa opção nesse caso é extremamente NÃO recomendado, podendo causar problemas com caracteres especiais e no formato da página na construção do arquivo PDF.</font>
-FCKeditorForMailing= Criação/edição do WYSIWIG nos E-Mails massivos (ferramentas->emailing)
+FCKeditorForMailing=Criação/edição do WYSIWIG nos E-Mails massivos (ferramentas->emailing)
 FCKeditorForUserSignature=criação/edição do WYSIWIG nas assinaturas de usuários
 FCKeditorForMail=Criação/Edição WYSIWIG para todos os e-mails (exceto Ferramentas->eMailing)
-##### OSCommerce 1 #####
 OSCommerceErrorConnectOkButWrongDatabase=Conexão foi um sucesso mas o banco de dados não enxerga o banco de dados do OSCommerce (chave %s não achada na tabela %s).
 OSCommerceTestOk=Conexão ao servidor '%s' no banco de dados '%s' com o usuário '%s' foi um sucesso.
 OSCommerceTestKo1=Conexão ao servidor '%s' foi um sucesso mas o banco de dados '%s' não foi alcançado.
 OSCommerceTestKo2=Conexão ao servidor '%s' com o usuário '%s' falhou.
-##### Stock #####
 StockSetup=Configurações do módulo de estoque
 IfYouUsePointOfSaleCheckModule=Se você usar um módulo Ponto de Venda (POS módulo fornecido por padrão ou outro módulo externo), esta configuração pode ser ignorado pelo seu modulo ponto de Venda. A maioria modulo ponto de Vendas são projetados para criar imediatamente uma fatura e diminuir estoque por padrão tudo o que são opções aqui. Então, se você precisa ou não ter uma diminuição de ações quando registrar uma venda a partir do seu ponto de venda, verifique também a configuração do seu módulo POS.
-##### Menu #####
 MenuDeleted=Menu Deletado
-Menus=Menus
-TreeMenuPersonalized=Menus personalizados
 NotTopTreeMenuPersonalized=Menus personalizados não conectados à uma entrada do menu superior
-NewMenu=Novo Menu
 Menu=Seleção de menus
-MenuHandler=Gestor de menus
 MenuModule=Fonte do módulo
-HideUnauthorizedMenu= Esconder menus não autorizados (cinza)
+HideUnauthorizedMenu=Esconder menus não autorizados (cinza)
 DetailId=Menu ID
 DetailMenuHandler=Gestor de menu onde mostra novo menu
 DetailMenuModule=Nome do módulo se a entrada do menu vier de um módulo
@@ -1421,15 +1204,12 @@ DetailUrl=URL onde o menu envia para você (URL absoluta ou link externo com htt
 DetailEnabled=Condição para mostra ou não entrar
 DetailRight=Condição para mostrar menus não autorizados em cinza
 DetailLangs=Nomes de arquivos lang para código de etiqueta da tradução
-DetailUser=Interno / Externo / Todos
-Target=Alvo
 DetailTarget=Alvos por links (_blank topo abre uma nova janela)
 DetailLevel=Nível (-1:menu superior, 0:menu do cabeçario, >0 menu e sub-menu)
 ModifMenu=Modificar menu
 DeleteMenu=Deletar entrada do menu
 ConfirmDeleteMenu=Você tem certeza que deseja excluir a entrada no menu <b>%s</b>?
 FailedToInitializeMenu=Falha na inicialização do menu
-##### Tax #####
 TaxSetup=Configurações do módulo taxas, contribuição social e dividendos
 OptionVatMode=Imposto ICMS
 OptionVATDefault=Base em Dinheiro
@@ -1437,7 +1217,6 @@ OptionVATDebitOption=Base em Acréscimo
 OptionVatDefaultDesc=ICMS é um imposto:<br>- Nas entregas dos bens (Nós usamos a data da fatura)<br>- Nos pagamentos dos serviços
 OptionVatDebitOptionDesc=ICMS é um imposto:<br>- Nas entregas dos bens (Nós usamos a data da fatura)<br>- Na emissão da fatura do serviço
 SummaryOfVatExigibilityUsedByDefault=O tempo do ICMS exige por default as seguintes opções a serem escolhidas:
-OnDelivery=Na entrega
 OnPayment=No pagamento
 OnInvoice=Na fatura
 SupposedToBePaymentDate=Data usada no pagamento
@@ -1449,7 +1228,6 @@ YourCompanyDoesNotUseVAT=Sua empresa está definido para não usar ICMS (Home->C
 AccountancyCode=Código de contabilidade
 AccountancyCodeSell=Código de contas de vendas
 AccountancyCodeBuy=Código de contas de compras
-##### Agenda #####
 AgendaSetup=Configurações do módulo de eventos e agenda
 PasswordTogetVCalExport=Chave para autorizar exportação do link
 PastDelayVCalExport=Não exportar eventos antigos de
@@ -1458,74 +1236,57 @@ AGENDA_USE_EVENT_TYPE_DEFAULT=Definido automaticamente esse valor padrão para o
 AGENDA_DEFAULT_FILTER_TYPE=Use automaticamente este tipo de evento no filtro de busca da agenda
 AGENDA_DEFAULT_FILTER_STATUS=Use automaticamente este estado no filtro das buscas da agenda
 AGENDA_DEFAULT_VIEW=Qual aba voçê quer abrir por padrão quando o menu Agenda e selecionado
-##### ClickToDial #####
 ClickToDialDesc=Esto modo permite tornar os números telefônicos em link. Um clique neste ícone fará com que o seu telefone ligue para o número exibido. Isto pode ser usado para ligar para um sistema de Call Center do Dolibarr, o qual poderá ligar para um número em um sistema SIP, por exemplo.
 ClickToDialUseTelLink=Use apenas o link "tel." para os números de telefone
 ClickToDialUseTelLinkDesc=Use este método se os seus usuários possuírem um softphone ou uma interface de programa instalada no mesmo computador do navegador, e usado para ligar quando você clica em um link no seu navegador que inicia com "tel.". Se você precisar de uma solução de um servidor completo (sem a necessidade de instalação de um programa local), você deve definir isto para "Não" e preencher o próximo campo.
-##### Point Of Sales (CashDesk) #####
-CashDesk=Ponto de Vendas
 CashDeskSetup=Configurações do módulo do ponto de vendas
 CashDeskThirdPartyForSell=Terceiro genérico para usar nas vendas
 CashDeskBankAccountForSell=Conta default para usar nos pagamentos em dinheiro
-CashDeskBankAccountForCheque= Conta default para usar nos pagamentos em cheque
-CashDeskBankAccountForCB= Conta default para usar nos pagamentos em cartão de crédito
+CashDeskBankAccountForCheque=Conta default para usar nos pagamentos em cheque
+CashDeskBankAccountForCB=Conta default para usar nos pagamentos em cartão de crédito
 CashDeskDoNotDecreaseStock=Desativar diminuição de ações quando uma venda é feita a partir de ponto de venda (se "não", diminuição de ações é feito para cada vendem feito a partir de POS, o que for opção definida no módulo de estoque).
 CashDeskIdWareHouse=Depósito para usar nas vendas
 StockDecreaseForPointOfSaleDisabled=Diminuição do estoque pelo PDV desativado
 StockDecreaseForPointOfSaleDisabledbyBatch=Diminuir estoque no Ponto De Vendas não é compativel com o gerenciamento do lote
 CashDeskYouDidNotDisableStockDecease=Você não desabilitou a redução do estoque quando realizando uma venda a partir do Ponto de Venda. Por isso um armazém é exigido.
-##### Bookmark #####
 BookmarkSetup=Configurações do módulo de marcadores
 BookmarkDesc=Esse módulo permite você gerenciar marcadores. Você pode também adicionar atalhos para qualquer página do Dolibarr ou sites externos no seu menu esquerdo.
 NbOfBoomarkToShow=Número máximo de marcadores para mostrar no menu esquerdo
-##### WebServices #####
 WebServicesSetup=Configurações do módulo de serviço de web
 WebServicesDesc=Ativando esse módulo, Dolibarr se torna um servidor de serviços web e fornece vários serviços web.
 WSDLCanBeDownloadedHere=Arquivos descritor WSDL que fornece serviços que podem ser baixados aqui
 EndPointIs=Os clientes SOAP devem enviar suas solicitações para o destinatário Dolibarr disponível na URL
-##### API ####
 ApiSetup=Instalação de módulo de API
 ApiDesc=Ao ativar este módulo, Dolibarr se tornar um servidor REST para fornecer serviços de web diversos.
 ApiProductionMode=Habilitar o modo produção (isto ativará o uso de caches para o gerenciamento dos serviços)
 ApiExporerIs=Você pode explorar as APIs no URL
 OnlyActiveElementsAreExposed=Somente elementos de módulos habilitados são expostos
 ApiKey=Chave para API
-##### Bank #####
 BankSetupModule=Configurações do módulo bancário
 FreeLegalTextOnChequeReceipts=Texto livre para recibos de cheque
 BankOrderShow=Mostrar ordem das contas bancárias para países usando "Número do banco detalhado"
-BankOrderGlobal=Geral
 BankOrderGlobalDesc=Ordem geral exibida
 BankOrderES=Espanhol
 BankOrderESDesc=Ordem espanhola exibida
 ChequeReceiptsNumberingModule=Módulo de Numeração dos Comprovantes de Cheque
-
-##### Multicompany #####
 MultiCompanySetup=Configurações do módulo multi-empresas
-##### Suppliers #####
 SuppliersSetup=Configurações do módulo de fornecedores
 SuppliersCommandModel=Template completo de pedidos de fornecedores (logo...)
 SuppliersInvoiceModel=Template completo de faturas de fornecedores (logo...)
 SuppliersInvoiceNumberingModel=Modelo de numeração de faturas de fornecedores
 IfSetToYesDontForgetPermission=Se definido como sim, não se esqueça de fornecer permissões a grupos ou usuários autorizados para a segunda aprovação
-##### GeoIPMaxmind #####
 GeoIPMaxmindSetup=Configurações do módulo GeoIP Maxmind
 PathToGeoIPMaxmindCountryDataFile=Caminho do arquivo que contêm Maxmind ip para tradução do país.<br>Exemplos:<br>/usr/local/share/GeoIP/GeoIP.dat<br>/usr/share/GeoIP/GeoIP.dat
 NoteOnPathLocation=Nota que seu ip para o arquivo de dados do país deve estar dentro do diretório do seu PHP que possa ser lido (Verifique a configuração do seu PHP open_basedir e o sistema de permissões).
 YouCanDownloadFreeDatFileTo=Você pode baixar uma <b>Versão demo</b> do arquivo Maxmind GeoIP do seu país no %s.
 YouCanDownloadAdvancedDatFileTo=Você também pode baixar uma versão mais completa, com updates do arquivo Maxmind GeoIP do seu país no %s.
 TestGeoIPResult=Teste a conversão IP -> país
-##### Projects #####
 ProjectsNumberingModules=Modelo de numeração de projetos
 ProjectsSetup=Configurações do módulo de projetos
 ProjectsModelModule=Modelo de documento de relatório de projeto
 TasksNumberingModules=Modelo de numeração de tarefas
 TaskModelModule=Modelo de numeração de relatório de tarefas
 UseSearchToSelectProject=Use campos de completação automática para escolher projeto (em vez de usar uma caixa de lista)
-##### ECM (GED) #####
-##### Fiscal Year #####
-AccountingPeriods=Períodos de contabilidade
-AccountingPeriodCard=Período de contabilidade
 NewFiscalYear=Novo período de contabilidade
 OpenFiscalYear=Período da contabilidade em aberto
 CloseFiscalYear=Período da contabilidade fechada
@@ -1539,12 +1300,9 @@ NbNumMin=Número mínimo de caracteres numéricos
 NbSpeMin=Número mínimo de caracteres especiais
 NbIteConsecutive=Numero maximo dos mesmos caracteres repetidos
 NoAmbiCaracAutoGeneration=Não use caracteres ambíguos ("1","l","i","|","0","O") para a geração automática
-SalariesSetup=Configuração do módulo de salários
 SortOrder=Ordem de classificação
-Format=Formato
 TypePaymentDesc=0: Pagamento para Cliente, 1: Pagamento para Fornecedor, 2: Pagamentos para Clientes e Fornecedores
 IncludePath=Incluir caminho (definido na variável %s)
-ExpenseReportsSetup=Configuração do módulo de Relatórios de Despesas
 TemplatePDFExpenseReports=Modelos de documentos para gerar despesa documento de relatório
 NoModueToManageStockIncrease=Nenhum módulo disponível foi ativado para gerenciar o aumento automático do estoque. O aumento do estoque será feito apenas de forma manual.
 YouMayFindNotificationsFeaturesIntoModuleNotification=Você pode encontrar opções para notificações por email por habilitar e configurar o módulo "Notificação".
@@ -1565,7 +1323,6 @@ TextTitleColor=Cor do título da página
 LinkColor=Cor dos linques
 PressF5AfterChangingThis=Pressione F5 no teclado depois de mudar este valor para tê-lo eficaz
 NotSupportedByAllThemes=Trabalhará com os temas principais, pode não ser suportado por temas externos
-BackgroundColor=Cor de fundo
 TopMenuBackgroundColor=Cor de fundo para o menu de topo
 TopMenuDisableImages=Ocultar imagens no menu Superior
 LeftMenuBackgroundColor=Cor do fundo para o menu esquerdo
@@ -1582,7 +1339,6 @@ RecuperableOnly=Sim para VAT "Non Perçue Récupérable" dedicado a alguns estad
 UrlTrackingDesc=Se o prestador do serviço de transporte oferece uma página ou um site na web para verificação da situação do seu envio, você pode inserir seu endereço aqui. Você pode usar a chave {TRACKID} nos parâmetros da URL de forma que o sistema a substitua com o valor do número de rastreamento que o usuário inseriu no cartão de envio.
 OpportunityPercent=Quando você cria uma oportunidade, você definiu um valor estimado para o projeto. De acordo com a situação da oportunidade, este valor pode ser multiplicado por esta taxa para avaliação do valor global que todas as suas oportunidades podem gerar. O valor é uma porcentagem (entre 0 e 100).
 TemplateForElement=O registro deste tema é dedicado a qual elemento
-TypeOfTemplate=Tipo de modelo
 TemplateIsVisibleByOwnerOnly=Template é visível somente pelo proprietário
 FixTZ=Consertar TimeZone
 FillFixTZOnlyIfRequired=Exemplo: +2 (preencher apenas se experimentou um problema)
diff --git a/htdocs/langs/pt_BR/agenda.lang b/htdocs/langs/pt_BR/agenda.lang
index 4c5fdf8a2966c9cf9bf5e0c91be182405d66897f..e13fa066b2d5c61f9ad4d0fbe3e4bc81ca486e6a 100644
--- a/htdocs/langs/pt_BR/agenda.lang
+++ b/htdocs/langs/pt_BR/agenda.lang
@@ -1,26 +1,17 @@
 # Dolibarr language file - Source file is en_US - agenda
-IdAgenda=ID do evento
 Actions=Eventos
-Agenda=Agenda
-Agendas=Agendas
 LocalAgenda=Calendário local
 ActionsOwnedBy=Evento de propriedade do
 ActionsOwnedByShort=Proprietário
-AffectedTo=Atribuído a
 Event=Evento
-Events=Eventos
-EventsNb=Número de eventos
 ListOfActions=Lista de eventos
-Location=Localização
 ToUserOfGroup=Para qualquer usuário no grupo
 EventOnFullDay=Evento no(s) dia(s) todo
 MenuToDoActions=Todos os eventos incompletos
-MenuDoneActions=Todos os eventos terminados
 MenuToDoMyActions=Meus eventos incompletos
 MenuDoneMyActions=Meus eventos terminados
 ListOfEvents=Lista de eventos Dolibarr
 ActionsAskedBy=Eventos relatados pelo
-ActionsToDoBy=Eventos atribuídos a
 ActionsDoneBy=Eventos feito por
 ActionAssignedTo=Evento atribuído a
 ViewCal=Ver Mês
@@ -28,32 +19,15 @@ ViewDay=Ver dia
 ViewWeek=ver semana
 ViewPerUser=Visão do usuário
 ViewPerType=Por visualização de tipo
-AutoActions= Preenchimento automático
-AgendaAutoActionDesc= Defina aqui eventos para os quais você queira que o Dolibarr crie automaticamente uma evento na agenda. Se nada for confirmado, apenas ações manuais terão registro e visibilidade inclusos na agenda. O rastreamento automático de ações de negócio realizadas sobre objetos (validação, alteração de estado) não serão salvos.
-AgendaSetupOtherDesc= Essa página fornece a opção de exportar seus eventos Dolibarr para um calendário externo (thunderbird, google, ...)
+AgendaAutoActionDesc=Defina aqui eventos para os quais você queira que o Dolibarr crie automaticamente uma evento na agenda. Se nada for confirmado, apenas ações manuais terão registro e visibilidade inclusos na agenda. O rastreamento automático de ações de negócio realizadas sobre objetos (validação, alteração de estado) não serão salvos.
+AgendaSetupOtherDesc=Essa página fornece a opção de exportar seus eventos Dolibarr para um calendário externo (thunderbird, google, ...)
 AgendaExtSitesDesc=Essa página permite declarar calendários externos para serem visto nos eventos da agenda Dolibarr.
 ActionsEvents=Eventos no qual Dolibarr cria uma ação na agenda automáticamente.
-##### Agenda event labels #####
-NewCompanyToDolibarr=Terceiro %s criados
-ContractValidatedInDolibarr=Contrato %s validado
-PropalClosedSignedInDolibarr=Proposta %s assinada
-PropalClosedRefusedInDolibarr=Proposta %s declinada
 PropalValidatedInDolibarr=Orçamento %s validado
-PropalClassifiedBilledInDolibarr=Proposta %s classificada faturada
 InvoiceValidatedInDolibarr=Fatura %s validada
 InvoiceValidatedInDolibarrFromPos=Fatura %s validada no POS
 InvoiceBackToDraftInDolibarr=Fatura %s voltou para o status de rascunho
 InvoiceDeleteDolibarr=Fatura %s deletada
-InvoicePaidInDolibarr=Fatura %s marcada paga
-InvoiceCanceledInDolibarr=Fatura %s cancelada
-MemberValidatedInDolibarr=Membro %s validado
-MemberResiliatedInDolibarr=Membro %s finalizado
-MemberDeletedInDolibarr=Membro %s cancelado
-MemberSubscriptionAddedInDolibarr=Inscrição do membo %s adicionada
-ShipmentValidatedInDolibarr=Envio %s validado
-ShipmentClassifyClosedInDolibarr=Expedição %s classificada como faturada
-ShipmentUnClassifyCloseddInDolibarr=Expedição %s classificada como reaberta
-ShipmentDeletedInDolibarr=Envio %s cancelado
 OrderValidatedInDolibarr=Pedido %s validado
 OrderDeliveredInDolibarr=Ordem %s classificadas entregues
 OrderCanceledInDolibarr=Pedido %s cancelado
@@ -67,12 +41,12 @@ InvoiceSentByEMail=Fatura de cliente %s enviado por e-mail
 SupplierOrderSentByEMail=Pedido de fornecedor %s enviado por e-mail
 SupplierInvoiceSentByEMail=Fatura de fornecedor %s enviado por e-mail
 ShippingSentByEMail=Frete %s enviado por e-mail
-ShippingValidated= Envio %s validado
+ShippingValidated=Envio %s validado
 InterventionSentByEMail=Intervenção %s enviado por e-mail
 ProposalDeleted=Proposta excluída
 OrderDeleted=Pedido excluído
 InvoiceDeleted=Fatura excluída
-##### End agenda events #####
+NewCompanyToDolibarr=Terceiro %s criados
 DateActionStart=Data de início
 DateActionEnd=Data de término
 AgendaUrlOptions1=Você também pode adicionar os seguintes parâmetros nos filtros de saída:
@@ -82,15 +56,10 @@ AgendaUrlOptions4=<b>logint=%s</b> para restringir a saída para ações atribu
 AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> para restringir a saida de açoes associadas ao projeto <b>PROJECT_ID</b>.
 AgendaShowBirthdayEvents=Mostrar datas de nascimento dos contatos
 AgendaHideBirthdayEvents=Ocultar datas de nascimento dos contatos
-Busy=Ocupado
 ExportDataset_event1=Lista dos eventos da agenda
 DefaultWorkingDays=Padrão dias úteis por semana (Exemplo: 1-5, 1-6)
 DefaultWorkingHours=Padrão horas de trabalho em dia (Exemplo: 9-18)
-# External Sites ical
-ExportCal=Exportar calendário
-ExtSites=Importar calendários externos
 ExtSitesEnableThisTool=Mostrar calendários externos na agenda
-ExtSitesNbOfAgenda=Número de calendários
 AgendaExtNb=Calendário núm %s
 ExtSiteUrlAgenda=URL para acessar arquivos .ical
 ExtSiteNoLabel=Sem descrição
@@ -98,13 +67,10 @@ VisibleTimeRange=Intervalo de tempo visível
 VisibleDaysRange=Intervalo de dias visíveis
 AddEvent=Criar evento
 MyAvailability=Minha disponibilidade
-ActionType=Tipo de evento
 DateActionBegin=Iniciar a data do evento
 CloneAction=Evento Clone
 ConfirmCloneEvent=Tem certeza que deseja clonar o evento <b>%s</b>?
 RepeatEvent=Repita evento
 EveryWeek=Toda semana
 EveryMonth=Todo mês
-DayOfMonth=Dia do mês
-DayOfWeek=Dia da semana
 DateStartPlusOne=Data de início + 1 hora
diff --git a/htdocs/langs/pt_BR/banks.lang b/htdocs/langs/pt_BR/banks.lang
index e6ca16ac8abe862fa5e3404ec23df79e3ddac71d..668d886150b5e6b631f55e4327e910779caac398 100644
--- a/htdocs/langs/pt_BR/banks.lang
+++ b/htdocs/langs/pt_BR/banks.lang
@@ -1,19 +1,13 @@
 # Dolibarr language file - Source file is en_US - banks
-Bank=Banco
 MenuBankCash=Banco/Caixa
-BankName=Nome do banco
-FinancialAccount=Conta
-BankAccount=Conta bancária
 BankAccounts=Contas bancárias
 ShowAccount=Mostrar conta
 AccountRef=Ref. da conta financeira
 AccountLabel=Rótulo da conta financeira
 CashAccount=Conta caixa
 CashAccounts=Contas caixas
-CurrentAccounts=Contas correntes
 SavingAccounts=Contas poupança
 ErrorBankLabelAlreadyExists=Rótulo de conta financeira já existente
-BankBalance=Saldo
 BankBalanceBefore=Saldo anterior
 BankBalanceAfter=Saldo posterior
 BalanceMinimalAllowed=Saldo mínimo permitido
@@ -26,10 +20,6 @@ ShowAllTimeBalance=Mostrar saldo desde o início
 AllTime=Desde o início
 Reconciliation=Reconciliação
 RIB=Número da conta bancária
-IBAN=Número IBAN
-BIC=Código BIC/SWIFT
-StandingOrders=Ordens de Débito direto
-StandingOrder=Ordem de débito direto
 AccountStatement=Extrato da conta
 AccountStatementShort=Extrato
 AccountStatements=Extratos da conta
@@ -41,7 +31,6 @@ BankAccountOwner=Nome do titular da conta
 BankAccountOwnerAddress=Endereço do titular da conta
 RIBControlError=Verificação da integridade dos valores falhou. Isso significa que esse número de conta não esta completo ou errado (verifique país, número e agência).
 CreateAccount=Criar conta
-NewBankAccount=Nova conta
 NewFinancialAccount=Nova conta financeira
 MenuNewFinancialAccount=Nova conta financeira
 EditFinancialAccount=Editar conta
@@ -54,7 +43,6 @@ AccountsArea=Área das contas
 AccountCard=Ficha da conta
 DeleteAccount=Excluir conta
 ConfirmDeleteAccount=Tem certeza que deseja deletar esta conta?
-Account=Conta
 BankTransactionByCategories=Transações bancárias por categorias
 BankTransactionForCategory=Transações bancárias por categoria <b>%s</b>
 RemoveFromRubrique=Remover vínculo com categoria
@@ -77,7 +65,6 @@ ConciliationDisabled=Função de reconciliação desativada
 LinkedToAConciliatedTransaction=Vinculado a uma transação conciliada
 StatusAccountOpened=Ativa
 StatusAccountClosed=Inativa
-AccountIdShort=Número
 LineRecord=Transação
 AddBankRecord=Adicionar transação
 AddBankRecordLong=Adicionar manualmente uma transação
@@ -86,19 +73,12 @@ DateConciliating=Data da reconciliação
 BankLineConciliated=Transação reconciliada
 Reconciled=Conciliada
 NotReconciled=Não conciliada
-CustomerInvoicePayment=Pagamento de cliente
 SupplierInvoicePayment=Pagamento a fornecedores
-SubscriptionPayment=Pagamento Assinatura
-WithdrawalPayment=Pagamento de retirada
 SocialContributionPayment=Pagamento de contribuição social
-BankTransfer=Transferência bancária
 BankTransfers=Transferências bancárias
 MenuBankInternalTransfer=Transferência interna
 TransferDesc=Transferência de uma conta para outra, o Dolibarr criará dois registros (um débito na conta de origem e um crédito na conta de destino. A mesma quantia (exceto o sinal), rótulo e data serão usados para esta transação).
-TransferFrom=De
-TransferTo=Para
 TransferFromToDone=Uma transferência de <b>%s</b> para <b>%s</b> de <b>%s</b> %s foi registrado.
-CheckTransmitter=Emissor
 ValidateCheckReceipt=Validar este comprovante de cheque?
 ConfirmValidateCheckReceipt=Você tem certeza que deseja validar este comprovante de cheque, mesmo sabendo que nenhuma mudança poderá ser feita depois?
 DeleteCheckReceipt=Excluir este recibo de cheque?
@@ -106,13 +86,10 @@ ConfirmDeleteCheckReceipt=Você tem certeza que deseja excluir este comprovante
 BankChecks=Cheques do banco
 BankChecksToReceipt=Cheques aguardando depósito
 ShowCheckReceipt=Mostrar recibo de depósito do cheque
-NumberOfCheques=Nº de cheques
 DeleteTransaction=Eliminar transação
 ConfirmDeleteTransaction=Você tem certeza que deseja excluir esta transação?
 ThisWillAlsoDeleteBankRecord=Isto eliminará também as transações bancárias geradas
-BankMovements=Movimentos
 PlannedTransactions=Transações planejadas
-Graph=Gráficos
 ExportDataset_banque_1=Transações bancárias e extrato da conta
 ExportDataset_banque_2=Comprovante de depósito
 TransactionOnTheOtherAccount=Transação de outra conta
@@ -132,9 +109,7 @@ EventualyAddCategory=Eventualmente, especifique a categoria na qual os registros
 ToConciliate=Conciliar?
 ThenCheckLinesAndConciliate=Então, verifique as linhas presente no estrato bancário e clique
 DefaultRIB=BAN padrão
-AllRIB=Todos os BAN
 LabelRIB=Rótulo do BAN
-NoBANRecord=Nenhum registro de BAN
 DeleteARib=Excluir registro de BAN
 ConfirmDeleteRib=Você tem certeza que deseja excluir este registro BAN?
 RejectCheck=Cheque devolvido
diff --git a/htdocs/langs/pt_BR/bills.lang b/htdocs/langs/pt_BR/bills.lang
index 437d6c2843988cefbc0a37c72bc2c7295c88a0bd..6ce87c69561c53bf740c8745d3340bccc6f5bdc4 100644
--- a/htdocs/langs/pt_BR/bills.lang
+++ b/htdocs/langs/pt_BR/bills.lang
@@ -1,5 +1,4 @@
 # Dolibarr language file - Source file is en_US - bills
-Bill=Fatura
 Bills=Faturas
 BillsCustomers=Faturas de cliente
 BillsCustomer=Fatura de cliente
@@ -37,7 +36,6 @@ ReplacementByInvoice=Substituido por fatura
 CorrectInvoice=Fatura correta %s
 CorrectionInvoice=Correção de fatura
 UsedByInvoice=Usado para pagar fatura %s
-ConsumedBy=Consumida por
 NotConsumed=Não consumida
 NoReplacableInvoice=Nenhuma fatura substituida
 NoInvoiceToCorrect=Nenhuma fatura para corrigir
@@ -54,10 +52,8 @@ SupplierInvoice=Fatura de fornecedor
 SuppliersInvoices=Faturas de fornecedores
 SupplierBill=Fatura de fornecedor
 SupplierBills=Faturas de fornecedores
-Payment=Pagamento
 PaymentBack=Reembolso de pagamento
 CustomerInvoicePaymentBack=Reembolso de pagamento
-Payments=Pagamentos
 PaymentsBack=Reembolsos de pagamentos
 paymentInInvoiceCurrency=na moeda das faturas
 PaidBack=Reembolso pago
@@ -65,12 +61,10 @@ DeletePayment=Deletar pagamento
 ConfirmDeletePayment=Você tem certeza que deseja excluir este pagamento?
 ConfirmConvertToReduc=Você deseja converter esta nota de crédito ou depósito em um desconto absoluto?<br>A quantia será então salva entre todos os descontos e poderá ser usada como um desconto para uma fatura atual ou futura para este cliente.
 SupplierPayments=Pagamentos a fornecedores
-ReceivedPayments=Pagamentos recebidos
 ReceivedCustomersPayments=Pagamentos recebidos de cliente
 PayedSuppliersPayments=Pagamentos pago ao fornecedores
 ReceivedCustomersPaymentsToValid=Pagamentos recebidos de cliente para validar
 PaymentsReportsForYear=Relatórios de pagamentos por %s
-PaymentsReports=Relatórios de pagamentos
 PaymentsAlreadyDone=Pagamentos já feitos
 PaymentsBackAlreadyDone=Reembolsos de pagamentos já feitos
 PaymentRule=Regra de pagamento
@@ -82,13 +76,11 @@ PaymentTerm=Termo de pagamento
 PaymentConditions=Prazo de pagamento
 PaymentConditionsShort=Prazo de pagamento
 PaymentAmount=Valor a ser pago
-ValidatePayment=Validar pagamento
 PaymentHigherThanReminderToPay=Pagamento superior ao valor a ser pago
 HelpPaymentHigherThanReminderToPay=Atenção, o valor do pagamento de uma ou mais fatura é superior ao valor restante a ser pago. <br> Edite sua entrada, caso contrário confirme e pense sobre em criar nota de crédito do valor excedido para cada fatura que foi paga a mais.
 HelpPaymentHigherThanReminderToPaySupplier=Atenção, o valor do pagamento de uma ou mais contas é maior do que o resto a pagar. <br> Edite sua entrada, caso contrário, confirmar.
 ClassifyPaid=Classificar 'pago'
 ClassifyPaidPartially=Classificar 'parcialmente pago'
-ClassifyCanceled=Classificar 'Abandonado'
 ClassifyClosed=Classificar 'fechado'
 ClassifyUnBilled=Classificar "à faturar"
 CreateBill=Criar fatura
@@ -113,13 +105,11 @@ BillStatusDraft=Rascunho (precisa ser validada)
 BillStatusPaid=Pago
 BillStatusPaidBackOrConverted=Pago ou convertido em desconto
 BillStatusConverted=Pago (pronto para fatura final)
-BillStatusCanceled=Abandonada
 BillStatusValidated=Validado (precisa ser pago)
 BillStatusStarted=Iniciado
 BillStatusNotPaid=Não pago
 BillStatusClosedUnpaid=Fechado (não pago)
 BillStatusClosedPaidPartially=Pago (parcialmente)
-BillShortStatusDraft=Rascunho
 BillShortStatusPaid=Pago
 BillShortStatusPaidBackOrConverted=Processado
 BillShortStatusConverted=Processado
@@ -176,7 +166,6 @@ ConfirmClassifyPaidPartiallyReasonAvoirDesc=Use essa escolha se as outras não s
 ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=Um <b>cliente mau</b> é um cliente que se recusa a pagar seu débito.
 ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Essa escolha é usado quando o pagamento não é completo porque alguns produtos foram devolvidos
 ConfirmClassifyPaidPartiallyReasonOtherDesc=Use essa escolha se todas as outras não são adequados, por exemplo na seguinte situação:<br>- pagamento não completo porque alguns produtos foram devolvidos<br>- Quantia reivindicada é muito importante porque um desconto foi esquecido<br>Em todos os casos, quantia reivindicada deve estar correta no sistema de contabilidade pela criação de uma nota de crédito.
-ConfirmClassifyAbandonReasonOther=Outro
 ConfirmClassifyAbandonReasonOtherDesc=Essa escolha será usado em todos os outros casos. Por exemplo porque você planeja criar fatura de substituição.
 ConfirmCustomerPayment=Você confirma o recebimento de pagamento para <b>%s</b> %s?
 ConfirmSupplierPayment=Você confirma o recebimento de pagamento para <b>%s</b> %s?
@@ -198,7 +187,6 @@ ShowPayment=Mostrar pagamento
 AlreadyPaid=Já está pago
 AlreadyPaidBack=Já está estornado
 AlreadyPaidNoCreditNotesNoDeposits=Já está pago (sem notas de crédito e depósitos)
-Abandoned=Abandonada
 RemainderToPay=Restante para pagar
 RemainderToTake=Restante para pegar
 RemainderToPayBack=Restante para estornar
@@ -229,9 +217,7 @@ NoInvoice=Nenhuma fatura
 ClassifyBill=Classificar fatura
 SupplierBillsToPay=Faturas de fornecedores não pagos
 CustomerBillsUnpaid=Faturas de clientes não pagos
-NonPercuRecuperable=Não recuperável
 SetConditions=Definir condições de pagamento
-SetMode=Definir modo de pagamento
 SetRevenuStamp=Definir o selo da receita
 Billed=Faturado
 RecurringInvoices=Faturas recorrentes
@@ -247,33 +233,23 @@ CustomersInvoicesAndPayments=Faturas de cliente e pagamentos
 ExportDataset_invoice_1=Lista de faturas de clientes e linhas de fatura
 ExportDataset_invoice_2=Faturas de clientes e pagamentos
 ProformaBill=Conta pro-forma:
-Reduction=Redução
 ReductionShort=Redução
 Reductions=Reduções
 ReductionsShort=Reduções
-Discounts=Descontos
 AddDiscount=Criar desconto
-AddRelativeDiscount=Criar desconto relativo
-EditRelativeDiscount=Editar desconto relativo
 AddGlobalDiscount=Criar desconto fixo
 EditGlobalDiscounts=Editar desconto fixo
-AddCreditNote=Criar nota de crédito
 ShowDiscount=Mostrar desconto
 ShowReduc=Mostrar o desconto
-RelativeDiscount=Desconto relativo
 GlobalDiscount=Desconto global
 CreditNote=Nota de crédito
 CreditNotes=Notas de crédito
-Deposit=Depósito
-Deposits=Depósitos
 DiscountFromCreditNote=Desconto de nota de crédito %s
 DiscountFromDeposit=Pagamentos de fatura de depósito %s
 AbsoluteDiscountUse=Esse tipo de crédito pode ser usado na fatura antes da validação
 CreditNoteDepositUse=A fatura deve ser validada para utilizar este tipo de crédito
 NewGlobalDiscount=Novo desconto fixo
 NewRelativeDiscount=Novo desconto relativo
-NoteReason=Nota/Motivo
-ReasonDiscount=Motivo
 DiscountOfferedBy=Concedido por
 DiscountStillRemaining=Descontos ainda remanescente
 DiscountAlreadyCounted=Desconto já foram aplicados
@@ -290,7 +266,6 @@ InvoiceDateCreation=Data da criação da fatura
 InvoiceStatus=Status da fatura
 InvoiceNote=Nota de fatura
 InvoicePaid=Fatura paga
-PaymentNumber=Número de pagamento
 RemoveDiscount=Remover desconto
 WatermarkOnDraftBill=Marca d'água nos rascunhos de faturas (nada se vazio)
 InvoiceNotChecked=Nenhuma fatura selecionada
@@ -329,26 +304,20 @@ InvoiceAutoValidate=Validar as faturas automaticamente
 GeneratedFromRecurringInvoice=Gerar a partir do tem de fatura recorrente %s
 DateIsNotEnough=Data ainda não alcançada
 InvoiceGeneratedFromTemplate=Fatura %s gerada a partir do tema de fatura recorrente %s
-# PaymentConditions
 PaymentConditionShortRECEP=Imediato
 PaymentConditionRECEP=Imediato
-PaymentConditionShort30D=30 dias
 PaymentCondition30D=30 dias
 PaymentConditionShort30DENDMONTH=30 dias do fim do mês
 PaymentCondition30DENDMONTH=Dentro de 30 dias após o fim do mês
-PaymentConditionShort60D=60 dias
 PaymentCondition60D=60 dias
 PaymentConditionShort60DENDMONTH=60 dias do fim do mês
 PaymentCondition60DENDMONTH=Dentro de 60 dias após o fim do mês
 PaymentConditionShortPT_DELIVERY=Na entrega
-PaymentConditionPT_DELIVERY=Na entrega
 PaymentConditionShortPT_ORDER=Pedido
 PaymentConditionPT_ORDER=No pedido
-PaymentConditionShortPT_5050=50-50
 PaymentConditionPT_5050=50%% adiantado e 50%% na entrega
 FixAmount=Corrigir valor
 VarAmount=Variavel valor (%% total)
-# PaymentType
 PaymentTypeVIR=Transferência bancária
 PaymentTypeShortVIR=Transferência bancária
 PaymentTypePRE=Pedido com pagamento em Débito direto
@@ -357,8 +326,6 @@ PaymentTypeLIQ=Dinheiro
 PaymentTypeShortLIQ=Dinheiro
 PaymentTypeCB=Cartão de crédito
 PaymentTypeShortCB=Cartão de crédito
-PaymentTypeCHQ=Cheque
-PaymentTypeShortCHQ=Cheque
 PaymentTypeTIP=TIP (Documentos contra Pagamento)
 PaymentTypeShortTIP=Pagamento TIP
 PaymentTypeVAD=Pagamento online
@@ -375,7 +342,6 @@ BankAccountNumberKey=Chave
 Residence=Débito automático
 IBANNumber=Número da agencia
 IBAN=Agencia
-BIC=BIC/SWIFT
 BICNumber=Número BIC/SWIFT
 ExtraInfos=Informações extras
 RegulatedOn=Regulamentado em
@@ -383,12 +349,9 @@ ChequeNumber=Nº do Cheque
 ChequeOrTransferNumber=Nº do cheque/transferência
 ChequeBordereau=Verificar agendamento
 ChequeMaker=Cheque/transmissor de Transferência
-ChequeBank=Banco do cheque
-CheckBank=Verificar
 NetToBePaid=Líquido a ser pago
 PhoneNumber=Telefone
 FullPhoneNumber=Telefone
-TeleFax=Fax
 PrettyLittleSentence=Aceito o valor do pagamento devido pelo cheque emitido em meu nome como membro de uma associação de contabilidade aprovado pelo administração fiscal.
 IntracommunityVATNumber=Número intracomunitário do ICMS
 PaymentByChequeOrderedTo=Pagamento em cheque (incluindo taxa) é pagável para %s enviar para
@@ -401,7 +364,6 @@ LawApplicationPart2=os bens permanece propriedade de
 LawApplicationPart3=o vendedor até que o desconto completo de
 LawApplicationPart4=preço dele.
 LimitedLiabilityCompanyCapital=SARL com capital de
-UseLine=Aplicar
 UseDiscount=Usar desconto
 UseCredit=Usar crédito
 UseCreditNoteInInvoicePayment=Reduzir o valor a ser pago com esse crédito
@@ -412,7 +374,6 @@ NewChequeDeposit=Novo depósito
 ChequesReceipts=Recibos de cheques
 ChequesArea=Área de cheques depositados
 ChequeDeposits=depósitos de cheques
-Cheques=Cheques
 DepositId=Depósito Id
 NbCheque=Número de cheques
 CreditNoteConvertedIntoDiscount=Essa nota de crédito ou fatura de depósito foi convertida em %s
@@ -422,19 +383,15 @@ ShowUnpaidLateOnly=Mostrar todas as faturas atrasadas não pagas
 PaymentInvoiceRef=Pagamento de fatura %s
 ValidateInvoice=validar fatura
 Cash=DinheiroCash
-Reported=Atrasado
 DisabledBecausePayments=Não é possivel devido alguns pagamentos
 CantRemovePaymentWithOneInvoicePaid=Não posso remover pagamento ao menos que o última fatura sejá classificada como pago
 ExpectedToPay=Esperando pagamento
 CantRemoveConciliatedPayment=Não pode remover a conciliação de pagamento
-PayedByThisPayment=Pago por esse pagamento
 ClosePaidInvoicesAutomatically=Classificar "pago" todos padão or substituir faturas inteiramente pago.
 ClosePaidCreditNotesAutomatically=Classificar "pago" todas notas de crédito inteiramente pago de volta.
 ClosePaidContributionsAutomatically=Classificar como "Pagas" todas as contribuições sociais ou fiscais quitadas.
 AllCompletelyPayedInvoiceWillBeClosed=Todas faturas sem permanencia para pagar será automaticamente fechada com status "pago".
-ToMakePayment=Pagar
 ToMakePaymentBack=Pagar de volta
-ListOfYourUnpaidInvoices=Lista de faturas não pagas
 NoteListOfYourUnpaidInvoices=Nota: Essa lista contém faturas de terceiros que você está a ligado como representante de vendas.
 RevenueStamp=Selo de receita
 YouMustCreateInvoiceFromThird=Esta opção está apenas disponível quando da criação de uma fatura a partir da aba "cliente" de terceiro
@@ -445,7 +402,6 @@ PDFCrevetteDescription=Tema Crevette para fatura em PDF. Um tema completo para a
 TerreNumRefModelDesc1=Retorna número com formato %syymm-nnnn para padrão de faturas e %syymm-nnnn para notas de crédito onde yy é ano, mm é mês e nnnn é uma sequência numérica sem quebra e sem retorno para 0
 MarsNumRefModelDesc1=Retorna número com formato %syymm-nnnn para padrão de faturas, %syymm-nnnn para faturas substituidas, %syymm-nnnn para crédito de notas e %syymm-nnnn para notas de créditos onde yy é ano, mm é mês e nnnn é uma sequência sem quebra e sem retorno a 0
 TerreNumRefModelError=Uma conta começa com %syymm já existe e não é compatível com esse modelo de sequência. Remova ou renomeie ele para ativar esse módulo.
-##### Types de contacts #####
 TypeContact_facture_internal_SALESREPFOLL=Representativo seguindo de fatura de cliente
 TypeContact_facture_external_BILLING=Contato de fatura de cliente
 TypeContact_facture_external_SHIPPING=Contato de envio de cliente
@@ -454,7 +410,6 @@ TypeContact_invoice_supplier_internal_SALESREPFOLL=Representativo seguido de fat
 TypeContact_invoice_supplier_external_BILLING=Contato de fatura de fornecedor
 TypeContact_invoice_supplier_external_SHIPPING=Contato de envio de fornecedor
 TypeContact_invoice_supplier_external_SERVICE=Contato de serviço do fornecedor
-# Situation invoices
 InvoiceFirstSituationAsk=Primeira situação da fatura
 InvoiceFirstSituationDesc=A <b>situação faturas</b> são amarradas às situações relacionadas com uma progressão, por exemplo, a progressão de uma construção. Cada situação é amarrada a uma fatura.
 InvoiceSituation=Situação da fatura
@@ -462,11 +417,9 @@ InvoiceSituationAsk=Fatura acompanhando a situação
 InvoiceSituationDesc=Criar uma nova situação na sequência de um um já existente
 SituationAmount=Situação montante da fatura (líquida)
 SituationDeduction=Situação subtração
-ModifyAllLines=Modificar todas as linhas
 CreateNextSituationInvoice=Criar proxima situação
 NotLastInCycle=Esta fatura não é a última do ciclo e não deve ser modificada.
 DisabledBecauseNotLastInCycle=A próxima situação já existe.
-DisabledBecauseFinal=Esta situação é final.
 CantBeLessThanMinPercent=O progresso não pode ser menor do que o seu valor na situação anterior.
 NoSituations=Não há situações em aberto
 InvoiceSituationLast=Fatura final e geral
@@ -482,4 +435,3 @@ ToCreateARecurringInvoiceGene=Para gerar as futuras faturas regular e manualment
 ToCreateARecurringInvoiceGeneAuto=Se você deseja ter tais faturas sendo geradas automaticamente, peça ao seu Administrador para habilitar e configurar o módulo <strong>%s</strong>. Note que ambos os métodos (manual e automático) podem ser usados em conjunto sem o risco de duplicação.
 DeleteRepeatableInvoice=Excluir tema de fatura
 ConfirmDeleteRepeatableInvoice=Você tem certeza que deseja excluir o tema de fatura?
-
diff --git a/htdocs/langs/pt_BR/bookmarks.lang b/htdocs/langs/pt_BR/bookmarks.lang
index 598d12767d82352e3a14b36b5c50d970f74e9a1d..1ad92390b9c7bf3afd7b7f8b30984d19ecb21621 100644
--- a/htdocs/langs/pt_BR/bookmarks.lang
+++ b/htdocs/langs/pt_BR/bookmarks.lang
@@ -1,4 +1,4 @@
-# Dolibarr language file - Source file is en_US - marque pages
+# Dolibarr language file - Source file is en_US - bookmarks
 AddThisPageToBookmarks=Adicionar essa página aos marcadores
 Bookmark=Marcador
 Bookmarks=Marcadores
@@ -6,10 +6,8 @@ NewBookmark=Novo marcador
 ShowBookmark=Mostrar marcador
 OpenANewWindow=Abrir uma nova janela
 ReplaceWindow=Substituir atual janela
-BookmarkTargetNewWindowShort=Nova janela
 BookmarkTargetReplaceWindowShort=Atual janela
 BookmarkTitle=Título do marcador
-UrlOrLink=URL
 BehaviourOnClick=Comportamento quando a URL é clicada
 CreateBookmark=Criar marcador
 SetHereATitleForLink=Colocar título para o marcador
diff --git a/htdocs/langs/pt_BR/boxes.lang b/htdocs/langs/pt_BR/boxes.lang
index 0a7d839079f4e0f6322244936b8c28f0a043ad9d..e3ed64b9fff71f335d8d9e5f1c14421b8c06a561 100644
--- a/htdocs/langs/pt_BR/boxes.lang
+++ b/htdocs/langs/pt_BR/boxes.lang
@@ -1,5 +1,4 @@
 # Dolibarr language file - Source file is en_US - boxes
-BoxLastRssInfos=Informação RSS
 BoxLastProducts=Últimos %s produtos/serviços
 BoxProductsAlertStock=Alertas de estoque para produtos
 BoxLastProductsInContract=Últimos %s produtos/serviços contratados
@@ -47,8 +46,6 @@ BoxTitleGoodCustomers=%s bons clientes
 FailedToRefreshDataInfoNotUpToDate=Falha na atualizacao do fulxo RSS. Ultima data da atualizacao: %s
 LastRefreshDate=Ultima data atualizacao
 NoRecordedBookmarks=Nenhum marcador definido.
-ClickToAdd=Clique aqui para adicionar.
-NoRecordedCustomers=Nenhum cliente registado
 NoRecordedContacts=Nenhum contato registrado
 NoActionsToDo=Nenhuma ação para fazer
 NoRecordedOrders=Nenhum pedido de cliente registrado
@@ -63,15 +60,12 @@ NoContractedProducts=Nenhum produtos/serviços contratados
 NoRecordedContracts=Nenhum registro de contratos
 NoRecordedInterventions=Nenhum registro de intervenções
 BoxLatestSupplierOrders=Mais recentes pedidos de fornecedores
-NoSupplierOrder=Nenhum registro de pedido de fornecedor
 BoxCustomersInvoicesPerMonth=Faturas de cliente por mês
 BoxSuppliersInvoicesPerMonth=Faturas de fornecedor por mês
 BoxCustomersOrdersPerMonth=Pedidos de clientes por mês
 BoxSuppliersOrdersPerMonth=Pedidos de fornecedor por mês
 BoxProposalsPerMonth=Orçamentos por mês
 NoTooLowStockProducts=Nenhum produto abaixo do estoque mínimo
-BoxProductDistribution=Distribuição de Produtos/Serviços
-BoxProductDistributionFor=Distribuição de %s para %s
 BoxTitleLastModifiedSupplierBills=Ultimos %s notas fornecedores modificadas
 BoxTitleLatestModifiedSupplierOrders=Ultimas %s ordems de fornecedores modificadas
 BoxTitleLastModifiedCustomerBills=Ultimos %s notas de clientes modificadas
@@ -79,6 +73,5 @@ BoxTitleLastModifiedCustomerOrders=Ultimos %s pedidos de clientes modificados
 BoxTitleLastModifiedPropals=Ultimas %s propostas modificadas
 ForCustomersInvoices=Faturas de clientes
 ForCustomersOrders=Pedidos de clientes
-ForProposals=Orçamentos
 LastXMonthRolling=Ultima %s mensal
 ChooseBoxToAdd=Adicionar widget para sua area de notificacoes
diff --git a/htdocs/langs/pt_BR/cashdesk.lang b/htdocs/langs/pt_BR/cashdesk.lang
index 0aed4ab39d428cb62a7685537f84323d447e9912..2a6394332a4a1d8b5829c2b399b5aa51755e06c8 100644
--- a/htdocs/langs/pt_BR/cashdesk.lang
+++ b/htdocs/langs/pt_BR/cashdesk.lang
@@ -1,33 +1,17 @@
-# Language file - Source file is en_US - cashdesk
-CashDeskMenu=Ponto de venda
-CashDesk=Ponto de venda
-CashDeskBankCash=Conta bancária (dinheiro)
-CashDeskBankCB=Conta bancária (cartão)
-CashDeskBankCheque=Conta bancária (cheque)
-CashDeskWarehouse=Armazém
+# Dolibarr language file - Source file is en_US - cashdesk
 CashdeskShowServices=Serviços de venda
-CashDeskProducts=Produtos
 CashDeskStock=Estoque
 CashDeskOn=ligar
-CashDeskThirdParty=Terceiro
-ShoppingCart=Carrinho de compras
 NewSell=Nova venda
 AddThisArticle=Adicionar esse artigo
 RestartSelling=Voltar na venda
 SellFinished=Venda completada
 PrintTicket=Imprimir tíquete
-NoProductFound=Nenhum artigo encontrado
-ProductFound=produto encontrado
-NoArticle=Nenhum artigo
-Identification=Identificação
-Article=Artigo
-Difference=Diferença
 TotalTicket=Total do tíquite
 NoVAT=Nenhum ICMS para essa venda
 Change=Excesso recebido
 BankToPay=Cobrar conta
 ShowCompany=Mostar empresa
-ShowStock=Mostrar armazém
 DeleteArticle=Clique para remover esse artigo
 FilterRefOrLabelOrBC=Procurar (Ref/Rótulo)
 UserNeedPermissionToEditStockToUsePos=Você tentou retirar do estoque com a emissão da fatura, mas o usuário precisa ter permissão para editar estoque.
diff --git a/htdocs/langs/pt_BR/categories.lang b/htdocs/langs/pt_BR/categories.lang
index 090c2435c880f596f0596293e7e922b6333620ff..f7d3809ed586d6f89d828db043f2f651154fcb36 100644
--- a/htdocs/langs/pt_BR/categories.lang
+++ b/htdocs/langs/pt_BR/categories.lang
@@ -4,15 +4,12 @@ Rubriques=Tags/Categorias
 categories=tags/categorias
 NoCategoryYet=Nenhuma tag/categoria deste tipo foi criada
 In=Em
-AddIn=Adicionar em
-modify=Modificar
-Classify=Classificar
 CategoriesArea=Área Tags / Categorias
 ProductsCategoriesArea=Área tags / categorias de Produtos / Serviços
 SuppliersCategoriesArea=Área tags / categorias de Fornecedores
 CustomersCategoriesArea=Área tags / categorias de Clientes
 MembersCategoriesArea=Área tags / categorias de Membros
-ContactsCategoriesArea=Área tags / categorias de Contatos 
+ContactsCategoriesArea=Área tags / categorias de Contatos
 AccountsCategoriesArea=Tags/categorias da área de Contas
 ProjectsCategoriesArea=Projetos area de tags/categorias
 SubCats=Subcategorias
@@ -23,10 +20,8 @@ CatCreated=Tag/categoria criada
 CreateCat=Criar tag/categoria
 CreateThisCat=Criar esta tag/categoria
 NoSubCat=Nenhuma subcategoria.
-SubCatOf=Subcategoria
 FoundCats=Encontrada tags / categorias
 ImpossibleAddCat=Impossível associar a tag/categoria %s
-WasAddedSuccessfully=Foi adicionado com êxito.
 ObjectAlreadyLinkedToCategory=Elemento já está ligada a esta tag / categoria.
 ProductIsInCategories=Produto / serviço está ligada à seguintes tags / categorias
 CompanyIsInCustomersCategories=Este Terceiro está vinculado às seguintes tags/categorias de Clientes/Prospects
@@ -40,7 +35,6 @@ ContactHasNoCategory=Este contato não está em nenhum tags / categorias
 ProjectHasNoCategory=Este projeto nao esta em nenhuma tag/categoria
 ClassifyInCategory=Adicionar para tag / categoria
 NotCategorized=Sem tag / categoria
-CategoryExistsAtSameLevel=Esta categoria já existe na mesma localização
 ContentsVisibleByAllShort=Conteúdo visivel por todos
 ContentsNotVisibleByAllShort=Conteúdo não visivel por todos
 DeleteCategory=Excluir tag / categoria
@@ -53,7 +47,6 @@ MembersCategoryShort=Membros tag / categoria
 SuppliersCategoriesShort=Fornecedores tags / categorias
 CustomersCategoriesShort=Clientes tags / categorias
 ProspectsCategoriesShort=Tag/categoria Prospecção
-CustomersProspectsCategoriesShort=Cat. Clientes/Potenciais
 ProductsCategoriesShort=Produtos tags / categorias
 MembersCategoriesShort=Tag / categorias de Membros
 ContactCategoriesShort=Contatos tags / categorias
@@ -83,4 +76,3 @@ CategorieRecursiv=Fazer a ligação com os pais tag/categoria automaticamente
 CategorieRecursivHelp=Se ativado, o produto também será ligada a categoria original quando adicionando em uma subcategoria
 AddProductServiceIntoCategory=Adicione o seguinte produto / serviço
 ShowCategory=Mostrar tag / categoria
-ByDefaultInList=Por padrão em lista
diff --git a/htdocs/langs/pt_BR/commercial.lang b/htdocs/langs/pt_BR/commercial.lang
index a172735024bf9813be186f8ab02d4fb4b08b8937..1b2cd595c3bafbdc8b4a4dda474ee49f5e0a6381 100644
--- a/htdocs/langs/pt_BR/commercial.lang
+++ b/htdocs/langs/pt_BR/commercial.lang
@@ -1,9 +1,5 @@
 # Dolibarr language file - Source file is en_US - commercial
-Commercial=Comercial
 CommercialArea=Departamento comercial
-Customer=Cliente
-Customers=Clientes
-Prospect=Prospecto de cliente
 Prospects=Prospectos de cliente
 DeleteAction=Excluir um evento
 NewAction=Novo evento
@@ -14,7 +10,6 @@ ConfirmDeleteAction=Tem certeza que quer deleitaar este evento ?
 CardAction=Ficha de evento
 ActionOnCompany=Empresa relacionada
 ActionOnContact=Contato relacionado
-TaskRDVWith=Reunião com %s
 ShowTask=Mostrar tarefa
 ShowAction=Mostrar evento
 ActionsReport=Relatório de eventos
@@ -35,14 +30,11 @@ DoneActions=Eventos concluídos
 ToDoActions=Eventos não concluídos
 SendPropalRef=Enviar orçamento %s
 SendOrderRef=Enviar pedido %s
-StatusNotApplicable=Não aplicável
 StatusActionToDo=Para fazer
 StatusActionDone=Concluído
 StatusActionInProcess=Em andamento
 TasksHistoryForThisContact=Eventos para esse contato
-LastProspectDoNotContact=Não contactar
 LastProspectNeverContacted=Nunca contactado
-LastProspectToContact=A contactar
 LastProspectContactInProcess=Contato em andamento
 LastProspectContactDone=Contato feito
 ActionAffectedTo=Evento atribuído para
@@ -55,16 +47,12 @@ ActionAC_RDV=Reuniões
 ActionAC_INT=Intervenção no lugar
 ActionAC_FAC=Enviar fatura de cliente por correio
 ActionAC_REL=Enviar fatura de cliente por correio (lembrete)
-ActionAC_CLO=Fechar
 ActionAC_EMAILING=Enviar emails massivos
 ActionAC_COM=Enviar pedido de cliente por correio
 ActionAC_SHIP=Enviar frete por correio
 ActionAC_SUP_ORD=Enviar pedido de fornecedor por correio
 ActionAC_SUP_INV=Enviar fatura de fornecedor por correio
 ActionAC_OTH=Outros
-ActionAC_OTH_AUTO=Outros (eventos inseridos automaticamente)
-ActionAC_MANUAL=Eventos inseridos manualmente
-ActionAC_AUTO=Eventos inseridos automaticamente
 Stats=Estatísticas de vendas
 StatusProsp=Status de prospecto de cliente
 DraftPropals=Minutas de orçamentos
diff --git a/htdocs/langs/pt_BR/companies.lang b/htdocs/langs/pt_BR/companies.lang
index b7cf0f46d00a28ab3b4f8f5aa763bc6ec73c7ea7..a52d84b97f3679aed94d29329d6ae200044f165d 100644
--- a/htdocs/langs/pt_BR/companies.lang
+++ b/htdocs/langs/pt_BR/companies.lang
@@ -1,7 +1,6 @@
 # Dolibarr language file - Source file is en_US - companies
 ErrorCompanyNameAlreadyExists=Já existe uma empresa com o nome %s. Escolha um outro.
 ErrorSetACountryFirst=Defina o país primeiro
-SelectThirdParty=Selecione um terceiro
 ConfirmDeleteCompany=Você tem certeza que deseja excluir esta empresa e toda a informação associada?
 DeleteContact=Excluir um contato/endereço
 ConfirmDeleteContact=Você tem certeza que deseja excluir este contato e toda a informação associada?
@@ -22,21 +21,13 @@ IdContact=ID do contato
 Contacts=Contatos/Endereços
 ThirdPartyContacts=Contato de terceiros
 ThirdPartyContact=Contato/endereço de terceiro
-Company=Empresa
-CompanyName=Razão social
 AliasNames=Nome de fantasia (nome comercial, marca registrada etc.)
 AliasNameShort=Nome de fantasia
-Companies=Empresas
 CountryIsInEEC=O país integra a Comunidade Econômica Europeia
 ThirdPartyName=Nome do terceiro
-ThirdParty=Terceiro
-ThirdParties=Terceiros
 ThirdPartyProspects=Prospectos de cliente
 ThirdPartyProspectsStats=Prospectos de cliente
-ThirdPartyCustomers=Clientes
-ThirdPartyCustomersStats=Clientes
 ThirdPartyCustomersWithIdProf12=Clientes com %s ou %s
-ThirdPartySuppliers=Fornecedores
 ThirdPartyType=Tipo de terceiro
 Company/Fundation=Pessoa jurídica
 Individual=Pessoa física
@@ -50,50 +41,37 @@ RegisteredOffice=Escritório registrado
 Lastname=Sobrenome
 Firstname=Primeiro nome
 PostOrFunction=Cargo
-UserTitle=Título
 Address=Endereço
 State=Estado/Província
 StateShort=Status do Cadastro
-Region=Região
-Country=País
 CountryCode=Código do país
 CountryId=ID do país
-Phone=Telefone
 PhoneShort=Telefone
-Skype=Skype
 Call=Chamar
-Chat=Chat
 PhonePro=Tel. comercial
 PhonePerso=Tel. particular
 PhoneMobile=Celular
 No_Email=Recusar e-mails em massa
-Fax=Fax
 Zip=CEP
 Town=Município
 Web=Website
-Poste= Posição
 DefaultLang=Idioma ordinário
 VATIsUsed=Sujeito a ICMS
 VATIsNotUsed=Não sujeito a ICMS
 CopyAddressFromSoc=Preencher o endereço com os dados do terceiro
 ThirdpartyNotCustomerNotSupplierSoNoRef=Terceiro sem ser cliente ou fornecedor, nenhum objeto de referência disponível
-##### Local Taxes #####
 LocalTax1IsUsed=Utilizar segundo imposto
-LocalTax1IsUsedES= É usado RE
-LocalTax1IsNotUsedES= Não é usado RE
+LocalTax1IsUsedES=É usado RE
+LocalTax1IsNotUsedES=Não é usado RE
 LocalTax2IsUsed=Utilizar terceiro imposto
-LocalTax2IsUsedES= É usado IRPF
-LocalTax2IsNotUsedES= Não é usado IRPF
-LocalTax1ES=RE
-LocalTax2ES=IRPF
+LocalTax2IsUsedES=É usado IRPF
+LocalTax2IsNotUsedES=Não é usado IRPF
 TypeLocaltax1ES=RE Tipo
 TypeLocaltax2ES=IRPF Tipo
 WrongCustomerCode=Código de cliente inválido
 WrongSupplierCode=Código de fornecedor inválido
 CustomerCodeModel=Modelo de código de cliente
 SupplierCodeModel=Modelo de código de fornecedor
-Gencod=Código de barras
-##### Professional ID #####
 ProfId1Short=ID prof. 1
 ProfId2Short=ID prof. 2
 ProfId3Short=ID prof. 3
@@ -106,145 +84,29 @@ ProfId3=ID profissional 3
 ProfId4=ID profissional 4
 ProfId5=ID profissional 5
 ProfId6=ID profissional 6
-ProfId1AR=Prof Id 1 (CUIT/CUIL)
-ProfId2AR=Prof Id 2 (Revenu brutes)
-ProfId3AR=-
-ProfId4AR=-
-ProfId5AR=-
-ProfId6AR=-
 ProfId1AT=Prof Id 1 (ICMS)
 ProfId2AT=Prof Id 2 (Inscrição Estadual)
 ProfId3AT=Prof Id 3 (Inscrição Municipal)
-ProfId4AT=-
-ProfId5AT=-
-ProfId6AT=-
-ProfId1AU=Prof Id 1 (ABN)
-ProfId2AU=-
-ProfId3AU=-
-ProfId4AU=-
-ProfId5AU=-
-ProfId6AU=-
 ProfId1BE=Prof Id 1 (Número profissional)
-ProfId2BE=-
-ProfId3BE=-
-ProfId4BE=-
-ProfId5BE=-
-ProfId6BE=-
-ProfId1BR=-
 ProfId2BR=IE (Inscrição Estadual)
 ProfId3BR=IM (Inscrição Municipal)
 ProfId4BR=CNPJ/CPF
-#ProfId5BR=CNAE
-#ProfId6BR=INSS
-ProfId1CH=-
-ProfId2CH=-
 ProfId3CH=Prof Id 1 (Número federal)
 ProfId4CH=Prof Id 2 (Número gravado comercial)
-ProfId5CH=-
-ProfId6CH=-
-ProfId1CL=Prof Id 1 (R.U.T.)
-ProfId2CL=-
-ProfId3CL=-
-ProfId4CL=-
-ProfId5CL=-
-ProfId6CL=-
-ProfId1CO=Prof Id 1 (R.U.T.)
-ProfId2CO=-
-ProfId3CO=-
-ProfId4CO=-
-ProfId5CO=-
-ProfId6CO=-
-ProfId1DE=Prof Id 1 (USt.-IdNr)
-ProfId2DE=Prof Id 2 (USt.-Nr)
-ProfId3DE=Prof Id 3 (Handelsregister-Nr.)
-ProfId4DE=-
-ProfId5DE=-
-ProfId6DE=-
-ProfId1ES=Prof Id 1 (CIF/NIF)
 ProfId2ES=Prof Id 2 (Número de seguro social)
-ProfId3ES=Prof Id 3 (CNAE)
 ProfId4ES=Prof Id 4 (Número do colegial)
-ProfId5ES=-
-ProfId6ES=-
-ProfId1FR=SIREN
-ProfId2FR=SIRET
-ProfId3FR=NAF (Ex APE)
-ProfId4FR=RCS/RM
-ProfId5FR=-
-ProfId6FR=-
 ProfId1GB=Número do registro
-ProfId2GB=-
-ProfId3GB=SIC
-ProfId4GB=-
-ProfId5GB=-
-ProfId6GB=-
-ProfId1HN=Id prof. 1 (RTN)
-ProfId2HN=-
-ProfId3HN=-
-ProfId4HN=-
-ProfId5HN=-
-ProfId6HN=-
-ProfId1IN=Prof Id 1 (TIN)
-ProfId2IN=Prof Id 2 (PAN)
-ProfId3IN=Prof Id 3 (SRVC TAX)
 ProfId4IN=ID prof. 4
 ProfId5IN=ID prof. 5
-ProfId6IN=-
 ProfId1LU=Id. prof. 1 (R.C.S. Luxemburgo)
 ProfId2LU=Id. prof. 2 (Permissão para negócios)
-ProfId3LU=-
-ProfId4LU=-
-ProfId5LU=-
-ProfId6LU=-
-ProfId1MA=Id prof. 1 (R.C.)
-ProfId2MA=Id prof. 2 (Patente)
-ProfId3MA=Id prof. 3 (I.F.)
-ProfId4MA=Id prof. 4 (C.N.S.S.)
 ProfId5MA=ID prof. 5 (C.I.C.E.)
-ProfId6MA=-
-ProfId1MX=Prof Id 1 (R.F.C).
-ProfId2MX=Prof Id 2 (R..P. IMSS)
-ProfId3MX=Prof Id 3 (Profesional Charter)
-ProfId4MX=-
-ProfId5MX=-
-ProfId6MX=-
-ProfId1NL=KVK nummer
-ProfId2NL=-
-ProfId3NL=-
-ProfId4NL=Burgerservicenummer (BSN)
-ProfId5NL=-
-ProfId6NL=-
-ProfId1PT=NIPC
-ProfId2PT=Núm. Segurança Social
-ProfId3PT=Num. Reg. Comercial
-ProfId4PT=Conservatória
-ProfId5PT=-
-ProfId6PT=-
-ProfId1SN=RC
-ProfId2SN=NINEA
-ProfId3SN=-
-ProfId4SN=-
-ProfId5SN=-
-ProfId6SN=-
-ProfId1TN=RC
-ProfId2TN=Matrícula Fiscal
-ProfId3TN=Código na Alfandega
-ProfId4TN=CCC
-ProfId5TN=-
-ProfId6TN=-
-ProfId1RU=Prof Id 1 (OGRN)
-ProfId2RU=Prof Id 2 (INN)
-ProfId3RU=Prof Id 3 (KPP)
-ProfId4RU=Prof Id 4 (OKPO)
-ProfId5RU=-
-ProfId6RU=-
 VATIntra=Número ICMS
 VATIntraShort=Núm ICMS
 VATIntraSyntaxIsValid=Sintaxe é válida
 ProspectCustomer=Possível cliente / Cliente
 Prospect=Prospecto de cliente
 CustomerCard=Ficha do cliente
-Customer=Cliente
 CustomerRelativeDiscount=Desconto relativo do cliente
 CustomerRelativeDiscountShort=Desconto relativo
 CustomerAbsoluteDiscountShort=Desconto fixo
@@ -256,7 +118,6 @@ CompanyHasNoAbsoluteDiscount=Esse cliente não tem desconto de crédito disponí
 CustomerAbsoluteDiscountAllUsers=Desconto fixo (concedido para todos usuários)
 CustomerAbsoluteDiscountMy=Desconto fixo (concedido para seu usuário)
 DiscountNone=Nenhum
-Supplier=Fornecedor
 AddContact=Adicionar contato
 AddContactAddress=Adicionar contato/endereço
 EditContact=Editar contato
@@ -271,7 +132,6 @@ DefaultContact=Contato/endereço padrão
 AddThirdParty=Adicionar terceiro
 DeleteACompany=Excluir empresa
 PersonalInformations=Dados pessoais
-AccountancyCode=Código contábil
 CustomerCode=Código de cliente
 SupplierCode=Código de fornecedor
 CustomerCodeShort=Código de cliente
@@ -287,9 +147,7 @@ CompanyDeleted=A empresa "%s" foi excluída do banco de dados.
 ListOfContacts=Lista de contatos/endereços
 ListOfContactsAddresses=Lista de Contatos/Endereços
 ListOfThirdParties=Lista de terceiros
-ShowCompany=Exibir terceiro
 ShowContact=Mostrar contato
-ContactsAllShort=Todos (sem filtro)
 ContactType=Tipo de contato
 ContactForOrders=Contato de pedidos
 ContactForOrdersOrShipments=Contato do pedido ou da remessa
@@ -304,13 +162,10 @@ NoContactForAnyInvoice=Esse contato não é de nenhuma fatura
 NewContact=Novo contato
 NewContactAddress=Novo contato/endereço
 MyContacts=Meus contatos
-Capital=Capital
 CapitalOf=Capital de %s
 EditCompany=Editar empresa
 ThisUserIsNot=Esse usuário não é um possível cliente, cliente ou fornecedor
-VATIntraCheck=Verificar
 VATIntraCheckDesc=Esse link <b>%s</b> permite perguntar ao serviço de verificação da VAT europeia. Acesso externo a internet é necessário para o serviço.
-VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do
 VATIntraCheckableOnEUSite=Verificar taxa VAT no site da comissão europeia
 VATIntraManualCheck=Você pode também verificar manualmente no site europeu <a href="%s" target="_blank">%s</a>
 ErrorVATCheckMS_UNAVAILABLE=Verificação não é possível. Verifique o serviço não é necessário por um membro de estado (%s).
@@ -319,19 +174,13 @@ JuridicalStatus=Natureza jurídica
 Staff=Número de funcionários
 ProspectLevelShort=Pos. Cli.
 ProspectLevel=Possível cliente
-ContactPrivate=Privado
 ContactPublic=Compartilhado
 ContactVisibility=Visível
 ContactOthers=Outro
 OthersNotLinkedToThirdParty=Outros, não esta vinculado a terceiros
 ProspectStatus=Status de possível cliente
-PL_NONE=Nenhum
 PL_UNKNOWN=Desconhecido
-PL_LOW=Baixo
 PL_MEDIUM=Médio
-PL_HIGH=Alto
-TE_UNKNOWN=-
-TE_STARTUP=Startup
 TE_GROUP=Empresa de grande porte
 TE_MEDIUM=Empresa de médio porte
 TE_ADMIN=Governo
@@ -339,7 +188,6 @@ TE_SMALL=Empresa de pequeno porte
 TE_RETAIL=Revendedor/Varejista
 TE_WHOLE=Atacadista
 TE_PRIVATE=Autônomo
-TE_OTHER=Outro
 StatusProspect-1=Não contactar
 StatusProspect0=Nunca contactado
 StatusProspect1=A contactar
@@ -351,10 +199,7 @@ ChangeToContact=Alterar status para 'A contactar'
 ChangeContactInProcess=Trocar status para 'Contato em andamento'
 ChangeContactDone=Trocar status para 'Contato feito'
 ProspectsByStatus=Prospectos por status
-NoParentCompany=Nenhuma
-ExportCardToFormat=Exportar ficha para o formato
 ContactNotLinkedToCompany=Contato não esta vinculado a nenhum terceiro
-DolibarrLogin=Dolibarr login
 NoDolibarrAccess=Sem acesso ao Dolibarr
 ExportDataset_company_1=Terceiros (Empresas / Fundações / Pessoas físicas) e propriedades
 ExportDataset_company_2=Contatos e propriedades
@@ -375,9 +220,7 @@ FiscalYearInformation=Informações do ano fiscal
 FiscalMonthStart=Primeiro mês do ano fiscal
 YouMustAssignUserMailFirst=Você deve criar um e-mail para este usuário para poder adicionar as notificações por e-mail para ele.
 YouMustCreateContactFirst=Para estar apto a adicionar notificações por e-mail, você deve primeiramente definir contatos com e-mails válidos para o terceiro
-ListSuppliersShort=Lista de fornecedores
 ListProspectsShort=Lista de prospectos de cliente
-ListCustomersShort=Lista de clientes
 ThirdPartiesArea=Área de terceiros
 LastModifiedThirdParties=Últimos %s terceiros modificados
 UniqueThirdParties=Total de terceiros
diff --git a/htdocs/langs/pt_BR/compta.lang b/htdocs/langs/pt_BR/compta.lang
index 3135a13cad0f4e265700c19d9499b65076894aba..eae84df5baac1d87a8791c1d3f3e10d1e6867de5 100644
--- a/htdocs/langs/pt_BR/compta.lang
+++ b/htdocs/langs/pt_BR/compta.lang
@@ -4,7 +4,6 @@ TaxModuleSetupToModifyRules=Vá para <a href="%s">configuração do módulo Impo
 TaxModuleSetupToModifyRulesLT=Vá até <a href="%s">Configuração >> Empresa</a> para modificar as regras de cálculo
 OptionMode=Opção de Administração Contabilidade
 OptionModeTrue=Opção Rendimentos-Despesas
-OptionModeVirtual=Opção Créditos/Dividas
 OptionModeTrueDesc=Neste método, o balanço calcula-se sobre a base das faturas pagas.\nA validade dos valores não está garantida pois a Administração da Contabilidade pasa rigurosamente pelas entradas/saidas das contas mediante as faturas.\nNota : Nesta Versão, Dolibarr utiliza a data da fatura ao estado ' Validada ' e não a data do estado ' paga '.
 OptionModeVirtualDesc=neste método, o balanço se calcula sobre a base das faturas validadas. pagas o não, aparecen ao resultado em quanto sejam discolocaçãos.
 FeatureIsSupportedInInOutModeOnly=função disponível somente ao modo contas CREDITOS-dividas (Véase a configuração do módulo contas)
@@ -12,22 +11,16 @@ VATReportBuildWithOptionDefinedInModule=Os valores aqui apresentados são calcul
 LTReportBuildWithOptionDefinedInModule=Valores mostrados aqui são calculados usando as regras definidas nas configurações da empresa.
 Param=Configuração
 RemainingAmountPayment=Pagamento montante remanescente:
-Account=Conta
 Accountparent=Conta pai
 Accountsparent=Contas pai
 Income=Rendimentos
-Outcome=Despesas
 ReportInOut=Rendimentos/Despesas
 ReportTurnover=Faturamento
 PaymentsNotLinkedToInvoice=pagamentos vinculados a Nenhuma fatura, por o que nenhum Fornecedor
 PaymentsNotLinkedToUser=pagamentos não vinculados a um usuário
 Profit=Lucro
 AccountingResult=Resultado contábil
-Balance=Saldo
-Debit=Débito
-Credit=Crédito
 Piece=Doc. contábil
-AmountHTVATRealReceived=Total Recebido
 AmountHTVATRealPaid=líquido pago
 VATToPay=ICMS a pagar
 VATReceived=ICMS recebido
@@ -44,7 +37,6 @@ LT1CustomerES=RE vendas
 LT1SupplierES=RE compras
 VATCollected=ICMS recuperado
 ToPay=A pagar
-SpecialExpensesArea=Área para todos os pagamentos especiais
 SocialContribution=Contribuição fiscal ou social
 SocialContributions=Encargos sociais e fiscais
 SocialContributionsDeductibles=Contribuições fiscais ou sociais dedutíveis
@@ -52,19 +44,13 @@ SocialContributionsNondeductibles=Contribuições fiscais ou sociais não dedut
 LabelContrib=Rótulo da contribuição
 TypeContrib=Tipo de contribuição
 MenuSpecialExpenses=Despesas especiais
-MenuTaxAndDividends=Impostos e Dividas
 MenuSocialContributions=Contribuições fiscais/sociais
-MenuNewSocialContribution=New social/fiscal tax
 NewSocialContribution=Nova contribuição fiscal/social
 ContributionsToPay=Encargos sociais / fiscais para pagar
-AccountancyTreasuryArea=Área Contabilidade/Tesouraria
 NewPayment=Novo pagamento
-Payments=Pagamentos
 PaymentCustomerInvoice=Pagamento de fatura de cliente
 PaymentSocialContribution=Pagamento de imposto social / fiscal
 PaymentVat=Pagamento de ICMS
-ListPayment=Lista de pagamentos
-ListOfCustomerPayments=Lista de pagamentos de clientes
 DateStartPeriod=Período de início e data
 DateEndPeriod=Período e data final
 newLT1Payment=Novo pagamento da taxa 2
@@ -91,7 +77,6 @@ SupplierAccountancyCode=Código contábil do fornecedor
 CustomerAccountancyCodeShort=Cod. cont. cli.
 SupplierAccountancyCodeShort=Cod. cont. forn.
 AccountNumber=Número da conta
-NewAccountingAccount=Nova conta
 SalesTurnover=Faturamento de vendas
 SalesTurnoverMinimum=Volume de negócios mínimo de vendas
 ByExpenseIncome=Por despesas & receitas
@@ -102,9 +87,7 @@ CheckReceiptShort=Depósito de cheque
 LastCheckReceiptShort=Últimos %s recibos de cheque
 NewCheckReceipt=Novo desconto
 NewCheckDeposit=Novo depósito de cheque
-NewCheckDepositOn=Criar Novo deposito na conta: %s
 NoWaitingChecks=Sem cheques a depositar.
-DateChequeReceived=Data introdução de dados de recepção cheque
 NbOfCheques=Nº de cheques
 PaySocialContribution=Quitar um encargo fiscal/social
 ConfirmPaySocialContribution=Quer mesmo categorizar esta contribuição fiscal/social como paga?
@@ -115,12 +98,12 @@ CalcModeVATDebt=<b>Modo% S VAT compromisso da contabilidade% s.</b>
 CalcModeVATEngagement=<b>Modo% SVAT sobre os rendimentos e as despesas% s.</b>
 CalcModeDebt=Modo <b>% s declarações de dívidas% s </ b> diz <b> Compromisso da contabilidade </ b>.
 CalcModeEngagement=Modo <b>% s rendimentos e as despesas% s </ b> contabilidade do caixa <b> </ b>>
-CalcModeLT1= Modo <b>%sRE nas faturas dos clientes - faturas dos fornecedores%s</b>
+CalcModeLT1=Modo <b>%sRE nas faturas dos clientes - faturas dos fornecedores%s</b>
 CalcModeLT1Debt=Modo <b>%sRE nas faturas dos clientes%s</b>
-CalcModeLT1Rec= Modo <b>%sRE nas faturas dos fornecedores%s</b>
-CalcModeLT2= Modo <b>%sIRPF nas faturas de clientes - fornecedores%s</b>
+CalcModeLT1Rec=Modo <b>%sRE nas faturas dos fornecedores%s</b>
+CalcModeLT2=Modo <b>%sIRPF nas faturas de clientes - fornecedores%s</b>
 CalcModeLT2Debt=Modo <b>%sIRPF nas faturas de clientes%s</b>
-CalcModeLT2Rec= Modo <b>%sIRPF nas faturas de fornecedores%s</b>
+CalcModeLT2Rec=Modo <b>%sIRPF nas faturas de fornecedores%s</b>
 AnnualSummaryDueDebtMode=Balanço de receitas e despesas, resumo anual
 AnnualSummaryInputOutputMode=Balanço de receitas e despesas, resumo anual
 AnnualByCompaniesDueDebtMode=balanço de depositos e despesas, desglosado por Fornecedores, em modo <b>%sCréditos-dividas%s</b> chamada <b>Contabilidade de compromisso</b>.
@@ -145,7 +128,6 @@ LT2ReportByQuartersInInputOutputMode=Relatoriopor rata IRPF
 VATReportByQuartersInDueDebtMode=Relatório da taxa do IVA cobrado e pago
 LT1ReportByQuartersInDueDebtMode=Relatorio por rata RE
 LT2ReportByQuartersInDueDebtMode=Relatorio por rata IRPF
-SeeVATReportInInputOutputMode=Ver o Relatório <b>%sIVA pago%s</b> para um modo de cálculo Standard
 SeeVATReportInDueDebtMode=Ver o Relatório <b>%sIVA a dever%s</b> para um modo de cálculo com a opção sobre a divida
 RulesVATInServices=- No caso dos serviços, o relatório inclui os regulamentos IVA efetivamente recebidas ou emitidas com base na data de pagamento.
 RulesVATInProducts=- Para os bens materiais, que inclui as notas fiscais de IVA com base na data da fatura.
@@ -156,16 +138,11 @@ PercentOfInvoice=%%/fatura
 NotUsedForGoods=Bens não utilizados
 ProposalStats=As estatísticas sobre as propostas
 OrderStats=Estatísticas de comandos
-InvoiceStats=Estatísticas sobre as contas
-Dispatch=Repartição
-Dispatched=Repartições
-ToDispatch=A Repartir
 ThirdPartyMustBeEditAsCustomer=Fornecedor deve ser definido como um cliente
 SellsJournal=Diário de Vendas
 PurchasesJournal=Diário de  Compras
 DescSellsJournal=Diário de Vendas
 DescPurchasesJournal=Diário de  Compras
-InvoiceRef=Ref. Fatura
 CodeNotDef=Não Definida
 WarningDepositsNotIncluded=Depósitos faturas não estão incluídos nesta versão com este módulo de contabilidade.
 DatePaymentTermCantBeLowerThanObjectDate=Data Prazo de pagamento não pode ser inferior a data da compra ou aquisição
@@ -173,12 +150,9 @@ Pcg_version=Modelos de carta de contas
 Pcg_type=Tipo Pcg
 Pcg_subtype=PCG subtipo
 InvoiceLinesToDispatch=Linhas de nota fiscal para envio
-ByProductsAndServices=Por produtos e serviços
 RefExt=Ref externo
 ToCreateAPredefinedInvoice=Para criar um tema para fatura, crie uma fatura padrão e então, sem validá-la, clique no botão "%s".
 LinkedOrder=Linque para o pedido
-Mode1=Método 1
-Mode2=Método 2
 CalculationRuleDesc=Para calcular o total do VAT, há dois métodos: <br> Método 1 é arredondamento cuba em cada linha, em seguida, soma-los. <br> Método 2 é somando tudo cuba em cada linha, em seguida, o arredondamento resultado. <br> Resultado final pode difere de alguns centavos. O modo padrão é o <b>modo% s.</b>
 CalculationRuleDescSupplier=De acordo com o fornecedor, escolher o método adequado aplicar mesma regra de cálculo e obter mesmo resultado esperado pelo seu fornecedor.
 TurnoverPerProductInCommitmentAccountingNotRelevant=Relatório Volume de negócios por produto, quando se usa um modo de <b>contabilidade de caixa</b> não é relevante. Este relatório está disponível somente quando utilizar o modo de <b>contabilidade engajamento</b> (ver configuração do módulo de contabilidade).
@@ -192,7 +166,6 @@ ACCOUNTING_ACCOUNT_SUPPLIER=Conta da contabilidade padrão para fornecedores ter
 CloneTax=Clonar uma taxa social / fiscal
 ConfirmCloneTax=Confirme o clone de um pagamento de taxa social / fiscal
 CloneTaxForNextMonth=Clonar para o proximo mes
-SimpleReport=Relatório simples
 AddExtraReport=Relatórios extra
 OtherCountriesCustomersReport=Relação de clientes estrangeiros
 BasedOnTwoFirstLettersOfVATNumberBeingDifferentFromYourCompanyCountry=Com base nas duas primeiras letras do número de IVA sendo diferente do código de país da sua própria empresa
@@ -202,4 +175,3 @@ LinkedFichinter=Vincular a uma intervenção
 ImportDataset_tax_contrib=Importar contribuições fiscais/sociais
 ImportDataset_tax_vat=Importar valores pagos de ICMS
 ErrorBankAccountNotFound=Erro: conta bancária não encontrada
-FiscalPeriod=Período de contabilidade
diff --git a/htdocs/langs/pt_BR/contracts.lang b/htdocs/langs/pt_BR/contracts.lang
index 3b1f8e9bad48ad85ad28821933692225700781f0..3ab455d7835f7fa21e311d0af43076405e405250 100644
--- a/htdocs/langs/pt_BR/contracts.lang
+++ b/htdocs/langs/pt_BR/contracts.lang
@@ -4,9 +4,6 @@ ListOfContracts=Lista de contratos
 AllContracts=Todos os contratos
 ContractCard=Ficha do contrato
 ContractStatusNotRunning=Fora de vigência
-ContractStatusDraft=Rascunho
-ContractStatusValidated=Validado
-ContractStatusClosed=Encerrado
 ServiceStatusInitial=Fora de vigência
 ServiceStatusRunning=Em vigência
 ServiceStatusNotLate=Em vigência, não vencido
@@ -17,12 +14,9 @@ ServiceStatusClosed=Encerrado
 ShowContractOfService=Mostrar contrato de serviço
 Contracts=Contratos
 ContractsSubscriptions=Contratos
-ContractsAndLine=Contratos e linha de contratos
-Contract=Contrato
 ContractLine=Linha contrato
 Closing=Fechando
 NoContracts=Sem contratos
-MenuServices=Serviços
 MenuInactiveServices=Serviços inativos
 MenuRunningServices=Serviços em vigência
 MenuExpiredServices=Serviços vencidos
@@ -36,17 +30,13 @@ ConfirmDeleteAContract=Você tem certeza que deseja excluir este contrato e todo
 ConfirmValidateContract=Você tem certeza que deseja validar este contrato sob o mesmo nome <b>%s</b>?
 ConfirmCloseContract=Isto fechará todos os serviços (ativos ou não). Você tem certeza que deseja fechar este contrato?
 ConfirmCloseService=Você tem certeza que deseja fechar este serviço com a data <b>%s</b>?
-ValidateAContract=Confirmar um contrato
 ActivateService=Ativar o serviço
 ConfirmActivateService=Você tem certeza que deseja ativar este serviço com a data <b>%s</b>?
 RefContract=Referencia contrato
 DateContract=Data do contrato
 DateServiceActivate=Data de ativação do serviço
-ShowContract=Mostrar contrato
-ListOfServices=Lista de serviços
 ListOfInactiveServices=Lista servicos inativos
 ListOfExpiredServices=Lista servicos ativos vencidos
-ListOfClosedServices=Lista de serviços fechados
 ListOfRunningServices=Lista de Serviços Ativos
 NotActivatedServices=Serviços Desativados (Com os Contratos Validados)
 BoardNotActivatedServices=Serviços a Ativar (Com os Contratos Validados)
@@ -71,10 +61,7 @@ CloseAllContracts=Fechar Todos os Contratos
 DeleteContractLine=Eliminar a linha do contrato
 ConfirmDeleteContractLine=Você tem certeza que deseja excluir esta linha do contrato?
 MoveToAnotherContract=Mover o serviço a outro contrato deste Fornecedor.
-ConfirmMoveToAnotherContract=Escolhi o contrato e confirmo o alterar de serviço ao presente contrato.
 ConfirmMoveToAnotherContractQuestion=Escolher para qual contrato existente (do mesmo terceiro) você deseja mover este serviço.
-PaymentRenewContractId=Renovação do Serviço (Numero %s)
-ExpiredSince=Expirado desde
 NoExpiredServices=Nao tem servicos ativos vencidos
 ListOfServicesToExpireWithDuration=Lista de servicos a vencer em %s dias
 ListOfServicesToExpireWithDurationNeg=Lista de serviços expirados a mais de %s dias
@@ -83,10 +70,6 @@ NoteListOfYourExpiredServices=Esta lista contém apenas contratos de serviços d
 StandardContractsTemplate=Modelo de contratos simples
 ContactNameAndSignature=Para %s, nome e assinatura:
 OnlyLinesWithTypeServiceAreUsed=Somente as linhas com o tipo de "serviço" será clonado.
-
-##### Types de contacts #####
-TypeContact_contrat_internal_SALESREPSIGN=Comercial assinante do contrato
-TypeContact_contrat_internal_SALESREPFOLL=Comercial seguimento do contrato
 TypeContact_contrat_external_BILLING=Contato cliente de faturação do contrato
 TypeContact_contrat_external_CUSTOMER=Contato cliente seguimento do contrato
 TypeContact_contrat_external_SALESREPSIGN=Contato cliente assinante do contrato
diff --git a/htdocs/langs/pt_BR/cron.lang b/htdocs/langs/pt_BR/cron.lang
index b8e56f1243ee45247e666a7797b488f7fddc8c6c..a8abd749dbd1419c5f21447ccdfa04c6bc9841ad 100644
--- a/htdocs/langs/pt_BR/cron.lang
+++ b/htdocs/langs/pt_BR/cron.lang
@@ -1,12 +1,9 @@
 # Dolibarr language file - Source file is en_US - cron
-# About page
-# Right
-Permission23101 = Leia trabalho Programado
-Permission23102 = Criar / atualização de tarefa agendada
-Permission23103 = Excluir trabalho agendado
-Permission23104 = Executar trabalho agendado
-# Admin
-CronSetup= Configuração do gerenciamento de trabalho agendado
+Permission23101 =Leia trabalho Programado
+Permission23102 =Criar / atualização de tarefa agendada
+Permission23103 =Excluir trabalho agendado
+Permission23104 =Executar trabalho agendado
+CronSetup=Configuração do gerenciamento de trabalho agendado
 URLToLaunchCronJobs=URL para verificar e iniciar os cron jobs qualificados
 OrToLaunchASpecificJob=Ou checkar e iniciar um specifico trabalho
 KeyForCronAccess=Chave seguranca para URL que lanca tarefas cron
@@ -14,19 +11,15 @@ FileToLaunchCronJobs=Linha de comando para iniciar tarefas agendadas
 CronExplainHowToRunUnix=No ambiente Unix você deve usar a seguinte entrada crontab para executar a linha de comando a cada 5 minutos
 CronExplainHowToRunWin=Em ambiente Microsoft (tm)  Windows,  Você PODE USAR Ferramentas de Tarefa agendada Para executar a Linha de Comando de Cada 5 Minutos
 CronMethodDoesNotExists=A classe %s não contém método %s algum
-# Menu
 EnabledAndDisabled=Ativado e desativado
-# Page list
 CronLastOutput=Saída do último acionamento
 CronLastResult=Código do último resultado
-CronCommand=Comando
 CronList=As tarefas agendadas
 CronDelete=Excluir tarefas agendadas
 CronConfirmDelete=Você tem certeza que deseja excluir esses cron jobs agendados?
 CronExecute=Lançar Tarefas agendadas
 CronConfirmExecute=Você tem certeza que deseja executar agora estas tarefas agendadas?
 CronInfo=Módulo de tarefas agendadas permitem executar trabalho que foram planejadas
-CronTask=Tarefa
 CronNone=Nenhum
 CronDtStart=Não antes
 CronDtEnd=Não depois
@@ -35,28 +28,21 @@ CronDtLastLaunch=Data de início da última execução
 CronDtLastResult=Data final da última execução
 CronFrequency=Frequência
 CronClass=Classe
-CronMethod=Método
-CronModule=Módulo
 CronNoJobs=Nenhuma tarefa registrada
-CronPriority=Prioridade
 CronLabel=Etiqueta
 CronNbRun=Nr. execuçao
 CronMaxRun=Max nr. execução
 CronEach=Cada
 JobFinished=Trabalho iniciado e terminado
-#Page card
-CronAdd= Adicionar tarefa
+CronAdd=Adicionar tarefa
 CronEvery=Executar cada tarefa
 CronObject=Instância/Objeto a se criar
-CronArgs=Parâmetros
 CronSaveSucess=Salvo com sucesso
-CronNote=Comentário
 CronFieldMandatory=O campo %s é obrigatório
 CronErrEndDateStartDt=A data final não pode ser anterior a data de início
 CronStatusActiveBtn=Ativar
 CronStatusInactiveBtn=Desativar
 CronTaskInactive=Está tarefa está desativada
-CronId=Id
 CronClassFile=Classes (nomedoarquivo.class.php)
 CronModuleHelp=Nome do diretório do módulo Dolibarr (também trabalha com módulo Dolibarr externo). Por exemplo para buscar método do objeto Dolibarr Product /htdocs/<u>produto</u>/class/product.class.php, o valor do módulo é o <i>produto</i>
 CronClassFileHelp=O nome do arquivo a ser carregado.<BR>Por exemplo para buscar método do objeto Dolibarr Product /htdocs/produtos/classe/<u>product.class.php</u>, o valor do nome do arquivo de classe é <i>product.class.php</i>
@@ -65,9 +51,6 @@ CronMethodHelp=O método de objeto para o lançamento. Por exemplo para buscar m
 CronArgsHelp=Os argumentos do método. Por exemplo para buscar método do objeto Product do Dolibarr /htdocs/produto/class/product.class.php, o valor de paramtetros pode ser <i>0, ProductRef</i>
 CronCommandHelp=A linha de comando de sistema que deve ser executada.
 CronCreateJob=Criar uma nova Tarefa agendada
-CronFrom=De
-# Info
-# Common
 CronType=Tipo de tarefa
 CronType_method=Chamar metodo da classe Dolibarr
 CronType_command=Comando Shell
diff --git a/htdocs/langs/pt_BR/deliveries.lang b/htdocs/langs/pt_BR/deliveries.lang
index b328d7932e8b99a7df8966d35804cdc580fe2f4e..9c0b9bc02ebe81a3d03c295ba72e32e324d6923f 100644
--- a/htdocs/langs/pt_BR/deliveries.lang
+++ b/htdocs/langs/pt_BR/deliveries.lang
@@ -6,25 +6,16 @@ DeliveryOrder=Ordem de entrega
 DeliveryDate=Data da entrega
 CreateDeliveryOrder=Gerar ordem de entrega
 DeliveryStateSaved=Estado de entrega salvo
-SetDeliveryDate=Indicar a Data de Envio
-ValidateDeliveryReceipt=Confirmar a Nota de Entrega
 ValidateDeliveryReceiptConfirm=Você tem certeza que deseja validar este comprovante de entrega?
 DeleteDeliveryReceipt=Excluir recibo de entrega
 DeleteDeliveryReceiptConfirm=Você tem certeza que deseja excluir o comprovante de entrega <b>%s</b>?
 DeliveryMethod=Método de entrega
 TrackingNumber=Número de rastreamento
-DeliveryNotValidated=Entrega não validada
 StatusDeliveryCanceled=Cancelada
 StatusDeliveryDraft=Rascunho
 StatusDeliveryValidated=Recebida
-# merou PDF model
-NameAndSignature=Nome e assinatura:
-ToAndDate=Em___________________________________ a ____/_____/__________
 GoodStatusDeclaration=Recebi a mercadorias acima em bom estado,
-Deliverer=Destinatário:
 Sender=Remetente
-Recipient=Destinatário
-ErrorStockIsNotEnough=Não existe estoque suficiente
 Shippable=Disponivel para envio
 NonShippable=Não disponivel para envio
 ShowReceiving=Mostrar recibo de entrega
diff --git a/htdocs/langs/pt_BR/dict.lang b/htdocs/langs/pt_BR/dict.lang
index dce305a12c77a359c046fbe2fde7daffe6087f77..b82198fbf97c4a6231451594d59c3fc2fbfad8ab 100644
--- a/htdocs/langs/pt_BR/dict.lang
+++ b/htdocs/langs/pt_BR/dict.lang
@@ -1,276 +1,67 @@
 # Dolibarr language file - Source file is en_US - dict
-CountryFR=França
 CountryBE=Bélgica
 CountryIT=Itália
-CountryES=Espanha
-CountryDE=Alemanha
 CountryCH=Suíça
-CountryGB=Grã-Bretanha
-CountryUK=Reino Unido
-CountryIE=Irlanda
-CountryCN=China
-CountryTN=Tunísia
-CountryUS=Estados Unidos
-CountryMA=Marrocos
 CountryDZ=Argélia
 CountryCA=Canadá
-CountryTG=Togo
-CountryGA=Gabão
-CountryNL=Holanda
-CountryHU=Hungria
 CountryRU=Rússia
-CountrySE=Suécia
-CountryCI=Costa do Marfim
-CountrySN=Senegal
-CountryAR=Argentina
-CountryCM=Camarões
-CountryPT=Portugal
-CountrySA=Arábia Saudita
-CountryMC=Mônaco
-CountryAU=Austrália
-CountrySG=Singapura
-CountryAF=Afeganistão
 CountryAX=Ilhas Åland
-CountryAL=Albânia
-CountryAS=Samoa Americana
-CountryAD=Andorra
-CountryAO=Angola
-CountryAI=Anguilla
-CountryAQ=Antártica
-CountryAG=Antígua e Barbuda
-CountryAM=Armênia
-CountryAW=Aruba
-CountryAT=Áustria
-CountryAZ=Azerbaijão
-CountryBS=Bahamas
-CountryBH=Barém
-CountryBD=Bangladesh
-CountryBB=Barbados
-CountryBY=Bielorrússia
-CountryBZ=Belize
 CountryBJ=Benim
-CountryBM=Bermudas
-CountryBT=Butão
-CountryBO=Bolívia
-CountryBA=Bósnia e Herzegovina
-CountryBW=Botsuana
-CountryBV=Ilha Bouvet
-CountryBR=Brasil
-CountryIO=Território Britânico do Oceano Índico
 CountryBN=Brunei
 CountryBG=Bulgária
 CountryBF=Burquina Faso
 CountryBI=Burúndi
-CountryKH=Camboja
-CountryCV=Cabo Verde
-CountryKY=Ilhas Cayman
 CountryCF=República Centro-Africana
-CountryTD=Chade
-CountryCL=Chile
-CountryCX=Ilha Christmas
-CountryCC=Ilhas Cocos (Keeling)
-CountryCO=Colômbia
 CountryKM=Comores
-CountryCG=Congo
-CountryCD=Congo, República Democrática do
-CountryCK=Ilhas Cook
-CountryCR=Costa Rica
-CountryHR=Croácia
-CountryCU=Cuba
-CountryCY=Chipre
 CountryCZ=República Tcheca
-CountryDK=Dinamarca
-CountryDJ=Djibuti
-CountryDM=Dominica
-CountryDO=República Dominicana
-CountryEC=Equador
-CountryEG=Egito
-CountrySV=El Salvador
-CountryGQ=Guiné Equatorial
-CountryER=Eritréia
-CountryEE=Estônia
-CountryET=Etiópia
-CountryFK=Ilhas Malvinas
 CountryFO=Ilhas Féroe
 CountryFJ=República de Fíji
-CountryFI=Finlândia
-CountryGF=Guiana Francesa
-CountryPF=Polinésia Francesa
 CountryTF=Território das Terras Austrais e Antárticas Francesas
-CountryGM=Gâmbia
 CountryGE=Geórgia
-CountryGH=Gana
-CountryGI=Gibraltar
-CountryGR=Grécia
 CountryGL=Groenlândia
-CountryGD=Granada
-CountryGP=Guadalupe
-CountryGU=Guam
-CountryGT=Guatemala
-CountryGN=Guiné
-CountryGW=Guiné-Bissau
-CountryGY=Guiana
 CountryHT=Haiti
 CountryHM=Ilha Heard e Ilhas McDonald
 CountryVA=Santa Sé (Estado da Cidade do Vaticano)
-CountryHN=Honduras
-CountryHK=Hong Kong
 CountryIS=Islândia
-CountryIN=Índia
-CountryID=Indonésia
 CountryIR=Irã
-CountryIQ=Iraque
-CountryIL=Israel
-CountryJM=Jamaica
-CountryJP=Japão
-CountryJO=Jordânia
-CountryKZ=Cazaquistão
-CountryKE=Quênia
-CountryKI=Kiribati
-CountryKP=Coreia do Norte
 CountryKR=Coreia do Sul
-CountryKW=Kuwait
 CountryKG=Quirguistão
 CountryLA=Laos
-CountryLV=Letônia
-CountryLB=Líbano
-CountryLS=Lesoto
-CountryLR=Libéria
-CountryLY=Líbia
-CountryLI=Liechtenstein
 CountryLT=Lituânia
-CountryLU=Luxemburgo
-CountryMO=Macau
 CountryMK=Macedônia, antiga República iugoslava da
-CountryMG=Madagascar
 CountryMW=Maláui
-CountryMY=Malásia
-CountryMV=Maldivas
 CountryML=Máli
-CountryMT=Malta
-CountryMH=Ilhas Marshall
-CountryMQ=Martinica
-CountryMR=Mauritânia
-CountryMU=Maurício
-CountryYT=Mayotte
-CountryMX=México
-CountryFM=Micronésia
-CountryMD=Moldávia
-CountryMN=Mongólia
-CountryMS=Montserrat
-CountryMZ=Moçambique
 CountryMM=Birmânia (Myanmar)
-CountryNA=Namíbia
-CountryNR=Nauru
-CountryNP=Nepal
-CountryAN=Antilhas Holandesas
 CountryNC=Nova Caledônia
-CountryNZ=Nova Zelândia
-CountryNI=Nicarágua
-CountryNE=Níger
-CountryNG=Nigéria
-CountryNU=Niue
-CountryNF=Ilha Norfolk
-CountryMP=Ilhas Marianas do Norte
-CountryNO=Noruega
-CountryOM=Omã
-CountryPK=Paquistão
-CountryPW=Palau
 CountryPS=Território Palestino, Ocupado
-CountryPA=Panamá
 CountryPG=Papua-Nova Guiné
-CountryPY=Paraguai
-CountryPE=Peru
-CountryPH=Filipinas
 CountryPN=Ilhas Picárnia
-CountryPL=Polônia
-CountryPR=Porto Rico
-CountryQA=Catar
-CountryRE=Reunião
-CountryRO=Romênia
-CountryRW=Ruanda
-CountrySH=Santa Helena
 CountryKN=São Cristóvão e Nevis
-CountryLC=Santa Lúcia
 CountryPM=São Pedro e Miquelon
-CountryVC=São Vicente e Granadinas
-CountryWS=Samoa
-CountrySM=San Marino
-CountryST=São Tomé e Príncipe
-CountryRS=Sérvia
 CountrySC=Seicheles
-CountrySL=Serra Leoa
-CountrySK=Eslováquia
-CountrySI=Eslovênia
-CountrySB=Ilhas Salomão
-CountrySO=Somália
-CountryZA=África do Sul
 CountryGS=Ilhas Geórgias do Sul e Sandwich do Sul
-CountryLK=Sri Lanka
-CountrySD=Sudão
-CountrySR=Suriname
-CountrySJ=Svalbard e Jan Mayen
-CountrySZ=Suazilândia
-CountrySY=Síria
-CountryTW=Taiwan
-CountryTJ=Tajiquistão
-CountryTZ=Tanzânia
-CountryTH=Tailândia
-CountryTL=Timor-Leste
-CountryTK=Toquelau
-CountryTO=Tonga
-CountryTT=Trinidad e Tobago
-CountryTR=Turquia
-CountryTM=Turquemenistão
 CountryTC=Ilhas Turcas e Caicos
-CountryTV=Tuvalu
-CountryUG=Uganda
 CountryUA=Ucrânia
-CountryAE=Emirados Árabes Unidos
 CountryUM=Ilhas Menores Distantes dos Estados Unidos
-CountryUY=Uruguai
-CountryUZ=Uzbequistão
-CountryVU=Vanuatu
-CountryVE=Venezuela
 CountryVN=Vietnã
-CountryVG=Ilhas Virgens Britânicas
 CountryVI=Ilhas Virgens, EUA
-CountryWF=Wallis e Futuna
 CountryEH=Saara Ocidental
-CountryYE=Iêmen
-CountryZM=Zâmbia
-CountryZW= Zimbábue
-CountryGG=Guernsey
-CountryIM=Ilha de Man
-CountryJE=Jersey
-CountryME=Montenegro
+CountryZW=Zimbábue
 CountryBL=São Bartolomeu
 CountryMF=São Martinho
-
-##### Civilities #####
-CivilityMME=Sra.
-CivilityMR=Sr.
 CivilityMLE=Srta.
 CivilityMTRE=Me.
 CivilityDR=Dr.
-##### Currencies #####
-Currencyeuros=Euros
 CurrencyAUD=Dólares australianos
 CurrencySingAUD=Dólar australiano
 CurrencyCAD=Dólares canadenses
 CurrencySingCAD=Dólar canadense
-CurrencyCHF=Francos suíços
 CurrencySingCHF=Franco suíço
-CurrencyEUR=Euros
-CurrencySingEUR=Euro
 CurrencyFRF=Francos franceses
-CurrencySingFRF=Franco francês
 CurrencyGBP=Libras esterlinas
 CurrencySingGBP=Libra esterlina
 CurrencyINR=Rupias indianas
-CurrencySingINR=Rupia indiana
 CurrencyMAD=Dirhames
-CurrencySingMAD=Dirham
 CurrencyMGA=Ariaris
 CurrencySingMGA=Ariari
 CurrencyMUR=Rupias mauricianas
@@ -283,38 +74,15 @@ CurrencyUSD=Dólares americanos
 CurrencySingUSD=Dólar americano
 CurrencyUAH=Grívnias
 CurrencySingUAH=Grívnia
-CurrencyXAF=Francos CFA BEAC
-CurrencySingXAF=Franco CFA BEAC
-CurrencyXOF=Francos CFA BCEAO
-CurrencySingXOF=Franco CFA BCEAO
 CurrencyXPF=Francos CFP
-CurrencySingXPF=Franco CFP
 CurrencyCentSingEUR=centavo
 CurrencyCentINR=paise
-CurrencyCentSingINR=paisa
-CurrencyThousandthSingTND=milésimo
-#### Input reasons #####
-DemandReasonTypeSRC_INTE=Internet
 DemandReasonTypeSRC_CAMP_MAIL=Campanha por correspondência
 DemandReasonTypeSRC_CAMP_EMAIL=Campanha por e-mail
 DemandReasonTypeSRC_CAMP_PHO=Campanha por telefone
 DemandReasonTypeSRC_CAMP_FAX=Campanha por fax
-DemandReasonTypeSRC_COMM=Contato comercial
 DemandReasonTypeSRC_SHOP=Contato na loja
 DemandReasonTypeSRC_WOM=Palavra da boca
-DemandReasonTypeSRC_PARTNER=Parceiro
-DemandReasonTypeSRC_EMPLOYEE=Empregado
-DemandReasonTypeSRC_SPONSORING=Patrocínio
-#### Paper formats ####
-PaperFormatEU4A0=Formato 4A0
-PaperFormatEU2A0=Formato 2A0
-PaperFormatEUA0=Formato A0
-PaperFormatEUA1=Formato A1
-PaperFormatEUA2=Formato A2
-PaperFormatEUA3=Formato A3
-PaperFormatEUA4=Formato A4
-PaperFormatEUA5=Formato A5
-PaperFormatEUA6=Formato A6
 PaperFormatUSLETTER=Formato Carta, EUA
 PaperFormatUSLEGAL=Formato Legal, EUA
 PaperFormatUSEXECUTIVE=Formato Executivo, EUA
diff --git a/htdocs/langs/pt_BR/donations.lang b/htdocs/langs/pt_BR/donations.lang
index 10cf85a921b75adae67f2841863a30c8d1a765b8..639052d56e5bd2de4bd49b5f897068fbe5d766ca 100644
--- a/htdocs/langs/pt_BR/donations.lang
+++ b/htdocs/langs/pt_BR/donations.lang
@@ -2,7 +2,6 @@
 Donation=Doação
 Donations=Doações
 DonationRef=Ref. da doação
-Donor=Doador
 AddDonation=Criar uma doação
 NewDonation=Nova doação
 DeleteADonation=Excluir uma doação
@@ -15,18 +14,13 @@ DonationStatusPromiseValidated=Promessa validada
 DonationStatusPaid=Doação recebida
 DonationStatusPromiseNotValidatedShort=Não validada
 DonationStatusPromiseValidatedShort=Validada
-DonationStatusPaidShort=Recebido
 DonationTitle=Recibo de doação
-DonationDatePayment=Data de pagamento
-ValidPromess=Validar promessa
 DonationReceipt=Recibo de doação
 DonationsModels=Modelo de documento de recepção de Doação
 LastModifiedDonations=Últimas %s doações modificadas
 DonationRecipient=Recipiente doaçaõ
 IConfirmDonationReception=O beneficiário declara ter recebido, como doação, o seguinte montante
 MinimumAmount=O montante mínimo é de %s
-FreeTextOnDonations=Texto livre para mostrar no rodapé
-FrenchOptions=Opções para França
 DONATION_ART200=Mostrar o artigo 200 do CGI se você está preocupado
 DONATION_ART238=Mostrar o artigo 238 do CGI se você está preocupado
 DONATION_ART885=Mostrar o artigo 885 do CGI se você está preocupado
diff --git a/htdocs/langs/pt_BR/ecm.lang b/htdocs/langs/pt_BR/ecm.lang
index fa7fb644d9bc6d8492f23987300c7c122b65d50b..5ad21433a6b1584998dbbf9e3055dc3574132146 100644
--- a/htdocs/langs/pt_BR/ecm.lang
+++ b/htdocs/langs/pt_BR/ecm.lang
@@ -1,12 +1,9 @@
 # Dolibarr language file - Source file is en_US - ecm
 ECMNbOfDocs=Nr. de documentos
-ECMSection=Pasta
 ECMSectionManual=Pasta manual
 ECMSectionAuto=Pasta automática
 ECMSectionsManual=Pastas manuais
 ECMSectionsAuto=Pastas automáticas
-ECMSections=Pastas
-ECMRoot=Raíz
 ECMNewSection=Criar pasta
 ECMAddSection=Adicionar pasta
 ECMCreationDate=Data criação
@@ -14,25 +11,18 @@ ECMNbOfFilesInDir=Número de arquivos na pasta
 ECMNbOfSubDir=Número de subpastas
 ECMNbOfFilesInSubDir=Numero de arquivos nos subpastas
 ECMCreationUser=Criado por
-ECMArea=Área GED
 ECMAreaDesc=O GED (Gestão Eletrônica de Documentos) permite salvar, compartilhar e pesquisar rapidamente todos os tipos de documentos contidos no Dolibarr.
 ECMAreaDesc2=* As pastas automáticas são geradas automaticamente quando algum arquivo é adicionado a algum ficheiro do sistema.<br>* As pastas manuais podem ser usados ​​para guardar documentos sem ligação a um cadastro do sistema.
-ECMSectionWasRemoved=A pasta <b>%s</b> foi eliminada
 ECMSearchByKeywords=Busca usando palavras chave
 ECMSearchByEntity=Busca por objeto
 ECMSectionOfDocuments=Pastas de documentos
-ECMTypeAuto=Automático
 ECMDocsBySocialContributions=Documentos ligados a impostos sociais ou fiscais
 ECMDocsByThirdParties=Documentos associados a fornecedores
 ECMDocsByProposals=Documentos associados a orçamentos
-ECMDocsByOrders=Documentos associados a pedidos
-ECMDocsByContracts=Documentos associados a contratos
 ECMDocsByInvoices=Documentos associados a faturas do cliente
-ECMDocsByProducts=Documentos associados a produtos
 ECMDocsByProjects=Documentos associados a projetos
 ECMDocsByUsers=Documentos relacionados a usuários
 ECMDocsByInterventions=Documentos ligados a intervenções
-ECMNoDirectoryYet=Nenhuma pasta criada
 ShowECMSection=Exibir pasta
 DeleteSection=Apagar pasta
 ConfirmDeleteSection=Por favor confirmar a remocao do diretorio <b>%s</b>?
diff --git a/htdocs/langs/pt_BR/errors.lang b/htdocs/langs/pt_BR/errors.lang
index a85964fefce538d36dc008ee7d8a59f0a4ccbcb7..2ede6f11a9cbedd15d89cff4d750c5e7704ab56a 100644
--- a/htdocs/langs/pt_BR/errors.lang
+++ b/htdocs/langs/pt_BR/errors.lang
@@ -1,14 +1,9 @@
 # Dolibarr language file - Source file is en_US - errors
-
-# No errors
 NoErrorCommitIsDone=Sem erros, garantimos
-# Errors
 ErrorButCommitIsDone=Erros foram encontrados mas, apesar disso, validamos
 ErrorBadEMail=O e-mail %s está errado
 ErrorBadUrl=O URL %s está errado
 ErrorBadValueForParamNotAString=Valor ruim para o seu parâmetro por falta, possivelmente, de tradução.
-ErrorLoginAlreadyExists=O login %s já existe.
-ErrorGroupAlreadyExists=O grupo %s já existe.
 ErrorRecordNotFound=Registro não encontrado.
 ErrorFailToCopyFile=Houve uma falha ao copiar o arquivo '<b>%s</b>' para '<b>%s</b>'.
 ErrorFailToRenameFile=Houve uma falha ao renomear o arquivo '<b>%s</b>' para '<b>%s</b>'.
@@ -26,12 +21,9 @@ ErrorBadCustomerCodeSyntax=Sintaxe inadequada para o código de cliente
 ErrorBadBarCodeSyntax=Bad sintaxe para código de barras. Pode ser que você definir um tipo de código de barras mal ou você definida uma máscara de código de barras para a numeração que não coincide com o valor verificado.
 ErrorCustomerCodeRequired=Código de cliente necessário
 ErrorBarCodeRequired=Código de barras necessário
-ErrorCustomerCodeAlreadyUsed=Código de cliente já utilizado
 ErrorBarCodeAlreadyUsed=Código de barras já utilizado
-ErrorPrefixRequired=Prefixo obrigatório
 ErrorBadSupplierCodeSyntax=Sintaxe inadequada para o código de fornecedor
 ErrorSupplierCodeRequired=Código de fornecedor necessário
-ErrorSupplierCodeAlreadyUsed=Código de fornecedor já utilizado
 ErrorBadParameters=Parâmetros inadequados
 ErrorBadValueForParameter=Valor incorreto '%s' para o parâmetro '%s'
 ErrorBadImageFormat=Arquivo imagem de formato não suportado (Seu PHP não suporta funções para converter neste formato)
@@ -69,7 +61,6 @@ ErrorLDAPSetupNotComplete=A correspondência Dolibarr-LDAP não está completa.
 ErrorLDAPMakeManualTest=foi criado unn Arquivo .ldif na pasta %s. Trate de gastor manualmente este Arquivo a partir da linha de comandos para Obter mais detalles acerca do error.
 ErrorCantSaveADoneUserWithZeroPercentage=Não é possível salvar uma ação com status "sem começar" se o campo "feito por" estiver preenchido.
 ErrorRefAlreadyExists=A ref. utilizada para a criação já existe.
-ErrorPleaseTypeBankTransactionReportName=Introduzca o Nome do registo bancario sobre a qual o escrito está constatado (formato AAAAMM ó AAAMMJJ)
 ErrorRecordHasChildren=Falha na exclusão do registro, uma vez que ele possui dependentes.
 ErrorRecordIsUsedCantDelete=Não é possível excluir o registro. Ele já é usado por ou integra outro objeto.
 ErrorModuleRequireJavascript=Javascript não deve ser desativado para ter esse recurso funcionando. Para ativar / desativar o Javascript, vá ao menu Home-> Configuração-> Display.
@@ -84,16 +75,13 @@ ErrorSpecialCharNotAllowedForField=O campo "%s" não aceita caracteres especiais
 ErrorNumRefModel=Uma referência existe no banco de dados (% s) e não é compatível com esta regra de numeração. Remover registro ou referência renomeado para ativar este módulo.
 ErrorQtyTooLowForThisSupplier=Quantidade insuficiente para este fornecedor
 ErrorModuleSetupNotComplete=A configuração do módulo parece estar incompleta. Vá para Início >> Configuração >> Módulos para completá-la.
-ErrorBadMask=Erro na máscara
 ErrorBadMaskFailedToLocatePosOfSequence=Erro, máscara sem número de sequência
 ErrorBadMaskBadRazMonth=Erro, valor de redefinição ruim
 ErrorMaxNumberReachForThisMask=Número máximo de alcance para essa máscara
 ErrorCounterMustHaveMoreThan3Digits=Contador deve ter mais de 3 dígitos
-ErrorSelectAtLeastOne=Erro. Selecione pelo menos uma entrada.
 ErrorDeleteNotPossibleLineIsConsolidated=Não e possívelexcluir porque registro está ligada a uma transação bancária que está conciliada
 ErrorProdIdAlreadyExist=%s é atribuído a outro terço
 ErrorFailedToSendPassword=Houve uma falha no envio da senha
-ErrorFailedToLoadRSSFile=Falha ao obter feed RSS. Tente adicionar MAIN_SIMPLEXMLLOAD_DEBUG constante se as mensagens de erro não fornecer informações suficientes.
 ErrorForbidden=Acesso negado. <br> Você tenta acessar a uma página, área ou característica de um módulo desativado ou sem estar em uma sessão autenticada ou que não é permitido para o usuário.
 ErrorForbidden2=Os permissões para este usuário podem ser designados por o administrador Dolibarr mediante o menu %s-> %s.
 ErrorForbidden3=Dolibarr não parece funcionar em uma Sessão autentificada. Consulte a documentação de Instalação de Dolibarr para saber cómo administrar as autenticaciones (htaccess, mod_auth u outro...).
@@ -176,9 +164,6 @@ ErrorStockIsNotEnoughToAddProductOnShipment=O estoque não é suficiente para o
 ErrorStockIsNotEnoughToAddProductOnProposal=O estoque não é suficiente para o produto %s para adicioná-lo a uma nova proposta.
 ErrorFailedToLoadLoginFileForMode=Falha para recuperar o arquivo de login para o modo '%s'.
 ErrorModuleNotFound=O arquivo do módulo não foi encontrado.
-ErrorFieldAccountNotDefinedForBankLine=O valor para a conta da Contabilidade não foi definido para a linha do banco de origem %s
-
-# Warnings
 WarningPasswordSetWithNoAccount=A senha foi definida para esse membro. No entanto, nenhuma conta de usuário foi criada. Portanto, esta senha é armazenada, mas não pode ser usado para acessar Dolibarr. Ele pode ser usado por um módulo / interface externa, mas se você não precisa definir qualquer login nem palavra-passe para um membro, você pode desabilitar a opção "Gerenciar um login para cada membro" da configuração do módulo-Membro. Se você precisa para gerenciar um login, mas não precisa de qualquer senha, você pode manter este campo em branco para evitar este aviso. Nota: E-mail pode também ser utilizado como uma entre o membro se está ligado a um utilizador.
 WarningMandatorySetupNotComplete=Há parâmetros de configuração obrigatórios ainda não definidos
 WarningSafeModeOnCheckExecDir=Atenção, a opção PHP <b>safe_mode</b> está em modo de comando devem ser armazenados dentro de um diretório declarado pelo php parâmetro <b>safe_mode_exec_dir.</b>
diff --git a/htdocs/langs/pt_BR/exports.lang b/htdocs/langs/pt_BR/exports.lang
index 5133a026d86eeb28e196a0cc32989aa2067f0c09..dac42587447370f8072e073afb82192f88683b9a 100644
--- a/htdocs/langs/pt_BR/exports.lang
+++ b/htdocs/langs/pt_BR/exports.lang
@@ -7,34 +7,19 @@ ExportableDatas=Conjunto de dados que podem ser exportados
 ImportableDatas=Conjunto de dados que podem ser importados
 SelectExportDataSet=Escolha um conjunto predefinido de dados que deseja exportar...
 SelectImportDataSet=Escolha um conjunto predefinido de dados que deseja importar...
-SelectExportFields=Escolha os campos que devem exportar-se, ou escolha um perfil de exportação predefinido
 SelectImportFields=Escolha campos de arquivo de fonte que você deseja importar e seu campo de destino no banco de dados, movendo-os para cima e para baixo com a seta, ou selecione um perfil de importação pré-definido:
 NotImportedFields=Os campos de arquivo de origem não importado
-SaveExportModel=Guardar este perfil de exportação assim pode reutiliza-lo posteriormente...
 SaveImportModel=Guardar este perfil de importação assim pode reutiliza-lo posteriormente...
-ExportModelName=Nome do perfil de exportação
-ExportModelSaved=Perfil de exportação guardado com o nome de <b>%s</b>.
-ExportableFields=Campos Exportáveis
-ExportedFields=Campos a Exportar
 ImportModelName=Nome do perfil de importação
 ImportModelSaved=Perfil de importação guardado com o nome de <b>%s</b>.
-DatasetToExport=Conjunto de dados a exportar
 DatasetToImport=Conjunto de dados a importar
-ChooseFieldsOrdersAndTitle=Escolha a ordem dos campos...
-FieldsTitle=Título Campos
-FieldTitle=Campo título
 NowClickToGenerateToBuildExportFile=Agora, faça click em "Gerar" para gerar o arquivo exportação...
 AvailableFormats=Formatos disponíveis
-LibraryShort=Biblioteca
-Step=Passo
 FormatedImport=Assistente de importação
-FormatedImportDesc1=Esta área permite realizar importações personalizadas de dados mediante um ajudante que evita ter conhecimentos técnicos de Dolibarr.
 FormatedImportDesc2=O primeiro passo consiste em escolher o tipo de dado que deve importar, logo o arquivo e a continuação escolher os campos que deseja importar.
 FormatedExport=Assistente de exportação
-FormatedExportDesc1=Esta área permite realizar exportações personalizadas dos dados mediante um ajudante que evita ter conhecimentos técnicos de Dolibarr.
 FormatedExportDesc2=O primeiro passo consiste em escolher um dos conjuntos de dados predefinidos, a continuação escolher os campos que quer exportar para o arquivo e em que ordem.
 FormatedExportDesc3=Uma vez selecionados os dados, é possível escolher o formato do arquivo de exportação gerado.
-Sheet=Folha
 NoImportableData=Não existe tipo de dados importavel (não existe nenhum módulo com definições de dados importavel ativado)
 FileSuccessfullyBuilt=Arquivo gerado
 SQLUsedForExport=Pedido de SQL usado para construir exportação de arquivo
@@ -48,17 +33,13 @@ LineTotalHT=Valor do HT por linha
 LineTotalTTC=Acrescido de ICMS da linha
 LineTotalVAT=Valor ICMS por Linha
 TypeOfLineServiceOrProduct=Tipo de Linha (0
-FileWithDataToImport=Arquivo com os dados de importação
 FileToImport=Arquivo de origem de importação
 FileMustHaveOneOfFollowingFormat=Arquivo para importação deve ter um dos seguinte formato
 DownloadEmptyExample=Baixar exemplo de arquivo de origem vazio
 ChooseFormatOfFileToImport=Escolha o formato de arquivo a ser usado como formato de arquivo de importação clicando no para selecioná-lo ...
 ChooseFileToImport=Carregar arquivo e clique no picto% s para selecionar o arquivo como arquivo de importação de fonte ...
-SourceFileFormat=Formato de arquivo de origem
 FieldsInSourceFile=Campos em arquivo de origem
 FieldsInTargetDatabase=Campos de destino no banco de dados Dolibarr (negrito = obrigatório)
-Field=Campo
-NoFields=Nenhum campo
 MoveField=Mover campo número da colunas
 ExampleOfImportFile=Exemplo de arquivo de importação
 SaveImportProfile=Guardar este perfil de importação
@@ -67,13 +48,10 @@ TablesTarget=Mesas alvejados
 FieldsTarget=Alvo
 FieldTarget=Campo de destino
 FieldSource=Campo Fonte
-NbOfSourceLines=Número de linhas no arquivo de origem
 NowClickToTestTheImport=Verifique os parâmetros de importação que você definiu. Se eles estiverem corretos, clique no botão <b>"% s"</b> para iniciar uma simulação do processo de importação (os dados não serão alterados em seu banco de dados, é apenas uma simulação para o momento) ...
-RunSimulateImportFile=Inicie a simulação de importação
 FieldNeedSource=Este campo requer dados do arquivo de origem
 SomeMandatoryFieldHaveNoSource=Alguns campos obrigatórios não têm nenhuma fonte de arquivo de dados
 InformationOnSourceFile=Informações sobre arquivo de origem
-InformationOnTargetTables=Informações sobre os campos de destino
 SelectAtLeastOneField=Mude pelo menos um campo de origem na coluna de campos para exportar
 SelectFormat=Escolha este formato de arquivo de importação
 RunImportFile=Arquivo de importação de lançamento
@@ -83,7 +61,6 @@ ErrorMissingMandatoryValue=Dados obrigatórios esta vazio no arquivo de origem p
 TooMuchErrors=Há ainda outras linhas de origem com erros mas a produção tem sido limitado.
 TooMuchWarnings=Há ainda outras linhas de origem com avisos, mas a produção tem sido limitado.
 EmptyLine=Linha vazia (serão descartados)
-CorrectErrorBeforeRunningImport=Primeiro, você deve corrigir todos os erros antes de executar a importação definitiva.
 FileWasImported=O arquivo foi importado com o números.
 YouCanUseImportIdToFindRecord=Você pode encontrar todos os registros importados para o seu banco de dados pela filtragem no campo <b>import_key='%s'</b>.
 NbOfLinesOK=Número de linhas sem erros e sem avisos:
@@ -95,17 +72,15 @@ DataComeFromIdFoundFromCodeId=O código que vem de número do campo do arquivo d
 DataIsInsertedInto=Dados provenientes do arquivo de origem será inserido o seguinte campo:
 DataIDSourceIsInsertedInto=O id do objeto pai encontrado usando os dados em arquivo de origem, será inserido o seguinte campo:
 DataCodeIDSourceIsInsertedInto=O ID da linha pai encontrado a partir do código, será inserido no campo a seguir:
-SourceRequired=Valor dos dados é obrigatória
 SourceExample=Exemplo de possível valor dos dados
 ExampleAnyRefFoundIntoElement=Qualquer ref encontrada para o elemento
 ExampleAnyCodeOrIdFoundIntoDictionary=Qualquer código (ou id) encontrado em dicionário
-CSVFormatDesc=Formato de arquivo de valores separados por vírgulas . Este é um formato de arquivo de texto, onde os campos são separados pelo separador. Se separador é encontrado dentro de um conteúdo de campo, o campo é arredondado pelo caráter rodada . Fuja personagem para escapar caráter rodada é 
+CSVFormatDesc=Formato de arquivo de valores separados por vírgulas . Este é um formato de arquivo de texto, onde os campos são separados pelo separador. Se separador é encontrado dentro de um conteúdo de campo, o campo é arredondado pelo caráter rodada . Fuja personagem para escapar caráter rodada é
 Excel95FormatDesc=Formato de arquivo do Excel. (Xls) Este é o formato Excel 95 nativa (BIFF5).
 Excel2007FormatDesc=Formato de arquivo do Excel (. Xlsx) Este é o formato Excel 2007 nativo (SpreadsheetML).
 TsvFormatDesc=Formato de arquivo Tab Separated Value (. TSV) Este é um formato de arquivo de texto, onde os campos são separados por um tabulador [Tab].
 ExportFieldAutomaticallyAdded=O campo <b>%s</b> foi adicionado automaticamente. Isto evitará que você tenha linhas semelhantes a serem tratadas como registro duplicado (com este campo adicionado, todas as linhas terão sua própria ID e serão então diferentes).
 CsvOptions=Opções csv
-Separator=Separador
 Enclosure=Recinto
 SpecialCode=Código especial
 ExportStringFilter=Permite substituir um ou mais caracteres no texto
@@ -115,7 +90,6 @@ ImportFromLine=Importar iniciando da linha número
 EndAtLineNb=Terminar na linha número
 SetThisValueTo2ToExcludeFirstLine=Por exemplo, coloque 3 para este valor para excluir as 2 primeiras linhas
 KeepEmptyToGoToEndOfFile=Manter este campo em branco para ir até o fim do arquivo
-## filters
 SelectFilterFields=Se você deseja filtrar alguns valores, apenas os valores de entrada aqui.
 FilteredFields=Campos filtrados
 FilteredFieldsValues=Valor para o filtro
diff --git a/htdocs/langs/pt_BR/externalsite.lang b/htdocs/langs/pt_BR/externalsite.lang
index 7962ccf0ac4ab44e301eaae71be496a319ebfbb8..00d4c89c287d07454231c0d309cd2be2bfc1fa24 100644
--- a/htdocs/langs/pt_BR/externalsite.lang
+++ b/htdocs/langs/pt_BR/externalsite.lang
@@ -1,5 +1,4 @@
 # Dolibarr language file - Source file is en_US - externalsite
 ExternalSiteSetup=Configurar linque para o website externo
-ExternalSiteURL=URL do site externo
 ExternalSiteModuleNotComplete=O módulo SiteExterno não foi configurado corretamente.
 ExampleMyMenuEntry=Minha entrada do menu
diff --git a/htdocs/langs/pt_BR/ftp.lang b/htdocs/langs/pt_BR/ftp.lang
index e75f5994c86085d2d89d25c1ba0d201d08fbb25f..efafabd98a2fa622779b08cdb551d674d0be52df 100644
--- a/htdocs/langs/pt_BR/ftp.lang
+++ b/htdocs/langs/pt_BR/ftp.lang
@@ -9,6 +9,5 @@ FailedToConnectToFTPServer=Falha na conexão ao servidor FTP (server% s, porta%
 FailedToConnectToFTPServerWithCredentials=Falha ao efetuar login no servidor FTP com login/senha
 FTPFailedToRemoveFile=Falha ao remover o arquivo <b>%s</ b>.
 FTPFailedToRemoveDir=Falha ao remover diretório <b>%s</ b> (verifique as permissões e se o diretório está vazio).
-FTPPassiveMode=Modo passivo
 ChooseAFTPEntryIntoMenu=Escolha uma entrada de FTP em menu ...
 FailedToGetFile=Falha ao obter arquivos %s
diff --git a/htdocs/langs/pt_BR/help.lang b/htdocs/langs/pt_BR/help.lang
index c88def66d0b52dab42fbcc5517df711c422cb773..8f53e3087e9e33b1e2f3b802a3ea32584b0059a9 100644
--- a/htdocs/langs/pt_BR/help.lang
+++ b/htdocs/langs/pt_BR/help.lang
@@ -1,5 +1,5 @@
 # Dolibarr language file - Source file is en_US - help
-CommunitySupport=Fórum/Wiki suporte 
+CommunitySupport=Fórum/Wiki suporte
 EMailSupport=E-mails de suporte
 RemoteControlSupport=Suporte em tempo real / remoto
 OtherSupport=Outros suportes
@@ -8,15 +8,12 @@ HelpCenter=Central de ajuda
 DolibarrHelpCenter=Centro de suporte e ajuda Dolibarr
 ToGoBackToDolibarr=Caso contrário, clique aqui para usar Dolibarr
 TypeOfSupport=Fonte de suporte
-TypeSupportCommunauty=Comunidade (grátis)
-TypeSupportCommercial=Comercial
-TypeOfHelp=Tipo
 NeedHelpCenter=PRecisa de ajuda ou suporte?
 Efficiency=eficiência
 TypeHelpOnly=Somente ajuda
 TypeHelpDev=Ajuda+Desenvolvimento
 TypeHelpDevForm=Ajuda+Desenvolvimento+Formação
-ToGetHelpGoOnSparkAngels1=Algumas empresas podem prover um suporte online rápido (às vezes imediato) e mais eficiente ao assumirem o controle de seu computador. Tais ajudantes podem ser encontrados na página <b>%s</b>: 
+ToGetHelpGoOnSparkAngels1=Algumas empresas podem prover um suporte online rápido (às vezes imediato) e mais eficiente ao assumirem o controle de seu computador. Tais ajudantes podem ser encontrados na página <b>%s</b>:
 ToGetHelpGoOnSparkAngels3=Você também pode acessar a lista de todos os treinadores disponíveis para o Dolibarr, para isto clique no botão
 ToGetHelpGoOnSparkAngels2=Às vezes, não há nenhuma empresa disponível no momento de fazer sua pesquisa, por isso acho que para mudar o filtro para procurar "tudo disponibilidade". Você será capaz de enviar mais pedidos.
 BackToHelpCenter=Caso contrário, clique aqui para ir para trás para ajudar a home page .
diff --git a/htdocs/langs/pt_BR/holiday.lang b/htdocs/langs/pt_BR/holiday.lang
index a56946ae68d0f4dbd5047240a68b7b868dd13f89..a201f268953953c04714c3b0ec2201e6cbae4fd0 100644
--- a/htdocs/langs/pt_BR/holiday.lang
+++ b/htdocs/langs/pt_BR/holiday.lang
@@ -1,15 +1,9 @@
 # Dolibarr language file - Source file is en_US - holiday
-HRM=RH
-Holidays=Licenças
-CPTitreMenu=Licenças
 MenuReportMonth=Relatório mensal
 MenuAddCP=Nova solicitação de licença
 NotActiveModCP=Você deve ativar o módulo Gestão de solicitações de licença para visualizar esta página.
 AddCP=Fazer uma solicitação de licença
-DateDebCP=Data de início
 DateFinCP=Data de término
-DateCreateCP=Data de criação
-DraftCP=Rascunho
 ToReviewCP=Aguardando aprovação
 ApprovedCP=Aprovado
 CancelCP=Cancelado
@@ -17,13 +11,11 @@ RefuseCP=Negado
 ValidatorCP=Aprovador
 ListeCP=Lista de licenças
 ReviewedByCP=Será revisada por
-DescCP=Descrição
 SendRequestCP=Criar solicitação de licença
 DelayToRequestCP=Solicitações devem ser feitas pelo menos<b> %s dias (s)</b> antes.
 MenuConfCP=Saldo de folgas
 SoldeCPUser=O saldo de folgas é de <b>%s</b> dias.
 ErrorEndDateCP=Você deve selecionar uma data final posterior à data inicial.
-ErrorSQLCreateCP=Ocorreu um erro de SQL durante a criação:
 ErrorIDFicheCP=Ocorreu um erro, a solicitação de licença não existe.
 ReturnCP=Retorne à página anterior
 ErrorUserViewCP=Você não está autorizado a ler este pedido de licença.
@@ -31,11 +23,7 @@ InfosWorkflowCP=Workflow da informação
 RequestByCP=Solicitada por
 TitreRequestCP=Solicitação de licença
 NbUseDaysCP=Número de dias de folga consumidos
-EditCP=Editar
 DeleteCP=Excluir
-ActionRefuseCP=Recusar
-ActionCancelCP=Cancelar
-StatutCP=Estado
 TitleDeleteCP=Excluir a solicitação de licença
 ConfirmDeleteCP=Confirmar a eliminação da solicitação de licença?
 ErrorCantDeleteCP=Erro: você não tem o direito de excluir esta solicitação de licença.
@@ -46,7 +34,6 @@ NoDateFin=Você deve selecionar uma data de término.
 ErrorDureeCP=O seu pedido de licença não contém dia de trabalho.
 TitleValidCP=Aprovar a solicitação de licença
 ConfirmValidCP=Quer mesmo aprovar esta solicitação de licença?
-DateValidCP=Data aprovada
 TitleToValidCP=Enviar solicitação de licença
 ConfirmToValidCP=Quer mesmo enviar a solicitação de licença?
 TitleRefuseCP=Recusar a solicitação de licença
@@ -59,7 +46,6 @@ DateRefusCP=Data da recusa
 DateCancelCP=Data do cancelamento
 DefineEventUserCP=Atribuir uma licença excepcional para um usuário
 addEventToUserCP=Conceder licença
-MotifCP=Motivo
 UserCP=Usuário
 ErrorAddEventToUserCP=Ocorreu um erro ao adicionar a licença excepcional.
 AddEventToUserOkCP=A adição da licença excepcional foi completada.
@@ -78,16 +64,12 @@ ManualUpdate=Atualização manual
 HolidaysCancelation=Cancelamento da solicitação de licença
 EmployeeLastname=Sobrenome do funcionário
 EmployeeFirstname=Nome do funcionário
-
-## Configuration du Module ##
 LastUpdateCP=Última atualização automática de fixação de licenças
 MonthOfLastMonthlyUpdate=Mês da última atualização automática de fixação de licenças
 UpdateConfCPOK=Atualizado com sucesso.
-Module27130Name= Gestão de solicitações de licença
-Module27130Desc= Gestão de solicitações de licença
+Module27130Name=Gestão de solicitações de licença
+Module27130Desc=Gestão de solicitações de licença
 ErrorMailNotSend=Ocorreu um erro durante o envio de e-mail:
-NoticePeriod=Período de aviso
-#Messages
 HolidaysToValidate=Confirmar as solicitações de licença
 HolidaysToValidateBody=Segue abaixo uma solicitação de licença a confirmar
 HolidaysToValidateDelay=Este pedido de licença terá lugar dentro de um período de menos de %s dias.
diff --git a/htdocs/langs/pt_BR/hrm.lang b/htdocs/langs/pt_BR/hrm.lang
index 05a6ead136ccc130628aa42e57d4f960f683c620..5ccbd6446afe99ac55d054ba0cc714ff478da512 100644
--- a/htdocs/langs/pt_BR/hrm.lang
+++ b/htdocs/langs/pt_BR/hrm.lang
@@ -1,17 +1,7 @@
-# Dolibarr language file - en_US - hrm
-# Admin
+# Dolibarr language file - Source file is en_US - hrm
 HRM_EMAIL_EXTERNAL_SERVICE=E-mail para evitar HRM serviço externo
 Establishments=Estabelecimentos
-Establishment=Estabelecimento
-NewEstablishment=Novo estabelecimento
 DeleteEstablishment=Excluir estabelecimento
 ConfirmDeleteEstablishment=Você tem certeza que deseja excluir este estabelecimento?
-OpenEtablishment=Abrir estabelecimento
-CloseEtablishment=Fechar estabelecimento
-# Dictionary
 DictionaryDepartment=RH - Lista de departamentos
 DictionaryFunction=RH - Lista de funções
-# Module
-Employees=Funcionários
-Employee=Funcionário
-NewEmployee=Novo funcionário
diff --git a/htdocs/langs/pt_BR/incoterm.lang b/htdocs/langs/pt_BR/incoterm.lang
index 0ac94a6c5a0e6227457dcfea11b003a2981444df..8aa2070c3e825e320ad35235d0a14d4fe8b8fe43 100644
--- a/htdocs/langs/pt_BR/incoterm.lang
+++ b/htdocs/langs/pt_BR/incoterm.lang
@@ -1,3 +1,2 @@
-Module62000Name=Incoterm
+# Dolibarr language file - Source file is en_US - incoterm
 Module62000Desc=Adicionar recursos para gerenciar Incoterm
-IncotermLabel=Incoterms
diff --git a/htdocs/langs/pt_BR/install.lang b/htdocs/langs/pt_BR/install.lang
index d61c1e5c0d7ad7d609ee1a019148f738bb516904..f1f5b1dae5556a454fd8e28f7d3868ca5cb2db17 100644
--- a/htdocs/langs/pt_BR/install.lang
+++ b/htdocs/langs/pt_BR/install.lang
@@ -7,15 +7,12 @@ ConfFileCouldBeCreated=O arquivo de configuração <b>conf.php</b> pôde ser cri
 ConfFileIsNotWritable=O arquivo de configuração <b>conf.php</b> não é passível de escrita, verifique as permissões sff, o seu servidor web tem de ter permissões de escrita neste arquivo cem Linux, chmod 666).
 ConfFileIsWritable=O arquivo de configuração <b>conf.php</b> tem as permissões corretas.
 ConfFileReload=Recarregar todas as informaçoes do arquivo de configuraçao.
-PHPSupportSessions=Este PHP suporta sessões.
-PHPSupportPOSTGETOk=Este PHP suporta variáveis GET e POST.
 PHPSupportPOSTGETKo=É possível que a  sua instalação do PHP não possui suporte ou não está habilitado o suporte à variáveis POST e / ou GET. Verifique seu parâmetro <b>variables_order</b> em seu arquivo de configuração php.ini.
 PHPSupportGD=Seu PHP possui suporte as funções gráficas GD.
 PHPSupportCurl=Este PHP suporta Curl.
 PHPSupportUTF8=Seu PHP possui  suporte as funções UTF8.
 PHPMemoryOK=Seu parametro PHP max session memory está definido <b>para %s.</b> Isto deve ser suficiente.
 PHPMemoryTooLow=Seu parametro PHP max session memory está definido <b>para %s</b> bytes. Isto deve ser muito baixo. Alterar o seu arquivo <b>php.ini em memory_limit</b> para definir parâmetro para pelo <b>menos %s</b> bytes.
-Recheck=Clique aqui para um teste mais significativo
 ErrorPHPDoesNotSupportSessions=Sua instalação PHP não suporta sessões. Esta característica é necessária para tornar Dolibarr funcional. Verifique a sua configuração do PHP.
 ErrorPHPDoesNotSupportGD=Sua instalação PHP não suporta gráficos ou não possui a função GD.  Gráficos não estarão disponíveis.
 ErrorPHPDoesNotSupportCurl=Sua instalacao do PHP nao suporta Curl.
@@ -32,7 +29,6 @@ ErrorDatabaseAlreadyExists=Base de dados' %s' já existe.
 IfDatabaseNotExistsGoBackAndUncheckCreate=Se não existe base de dados, volte e verifique a opção "Criar uma base de dados".
 IfDatabaseExistsGoBackAndCheckCreate=Caso dados já existe, volte e desmarque a opção  "Criar uma base de dados".
 WarningBrowserTooOld=Navegador antigo. Faça a atualizaçao do seu navegador para uma versao mais recente de Firefox, Chrome ou Opera ( altamente recomendado).
-PHPVersion=Versão PHP
 License=Usando licença
 ConfigurationFile=Arquivo de configuração
 WebPagesDirectory=Diretório onde armazenar as páginas web
@@ -41,19 +37,13 @@ URLRoot=URL raiz
 ForceHttps=Forcar conexoes seguras (https)
 CheckToForceHttps=Escolha esta opcao para forcar conexoes seguras (https).<br>Isto requere que o servidor web esta configurado para uso com certificado SSL.
 DolibarrDatabase=Base de dados Dolibarr
-DatabaseType=Tipo de base de dados
-DriverType=Tipo do Driver
-Server=Servidor
 ServerAddressDescription=Nome ou endereço IP para o servidor de banco de dados (database server), normalmente 'localhost' quando o banco de dados está hospedado no mesmo servidor que o servidor web
 ServerPortDescription=Database server port. Mantenha vazio se desconhecido.
-DatabaseServer=Database server
-DatabaseName=Nome da base de dados
 DatabasePrefix=Prefixo tabela banco de dados
 AdminLogin=Login para o administrador da base de dados Dolibarr. Deixar em branco se a conexão é feita com anônimo
 PasswordAgain=Introduza a password uma segunda vez
 AdminPassword=Password para o administrador da base de dados Dolibarr. Deixar em branco se a conexão é feita com anônimo
 CreateDatabase=Criar uma base de dados
-CreateUser=Criar usuário
 DatabaseSuperUserAccess=Base de dados - Acesso Superuser
 CheckToCreateDatabase=Verifique se o banco de dados não existe e deve ser criado. <br> Neste caso, você deve preencher o login / senha para a conta de superuser, na parte inferior desta página.
 CheckToCreateUser=Marque esta opção se o dono do banco de dados não existe e deve ser criado. <br> Neste caso, você deve preencher o login / senha para o superusuário em conta, na parte inferior desta página.
@@ -65,15 +55,12 @@ DatabaseCreation=Criação da base de dados
 CreateDatabaseObjects=Criação dos objetos na base de dados...
 ReferenceDataLoading=Carregando Dados de base...
 TablesAndPrimaryKeysCreation=Criação de tabelas e chaves primárias...
-CreateTableAndPrimaryKey=Criar tabela %s
-CreateOtherKeysForTable=Crie chaves estrangeiras e índices para a tabela %s
 OtherKeysCreation=Criação de chaves estrangeiras e índices...
 FunctionsCreation=Criação de Funções...
 AdminAccountCreation=Criando login do Administrador
 PleaseTypePassword=Por favor escreva uma password, passwords vazias não são permitidas !
 PleaseTypeALogin=Por favor escreva um login !
 PasswordsMismatch=As passwords diferem, tente novamente !
-SetupEnd=Fim da Configuração
 SystemIsInstalled=Instalação completa.
 SystemIsUpgraded=Dolibarr foi atualizado com êxito.
 YouNeedToPersonalizeSetup=Você precisa configurar o Dolibarr para atender às suas necessidades (aspecto, funcionalidades, ...). Para isto clique no seguinte link:
@@ -84,36 +71,27 @@ MigrationNotFinished=A versao do banco de dados nao e competamente atualizada, v
 GoToUpgradePage=Vai para a pagina de atualizaçao novamente
 WithNoSlashAtTheEnd=Sem a barra "/" no final
 DirectoryRecommendation=É recomendado que você use este diretório fora do diretório das suas páginas web.
-LoginAlreadyExists=Já existe
-DolibarrAdminLogin=Dolibarr admin login
 AdminLoginAlreadyExists=Dolibarr conta administrador <b>' %s'</b> já existe.
 FailedToCreateAdminLogin=Falha na criacao da conta administrador do Dolibarr.
 WarningRemoveInstallDir=Atenção, por razões de segurança, uma vez que a instalação ou atualização estiver completa, você deve remover o <b>diretório</b> de <b>instalação ou renomeá-lo para install.lock a fim de evitar o seu uso malicioso.</b>
-FunctionNotAvailableInThisPHP=Não disponível neste PHP
 ChoosedMigrateScript=Migrar script selecionado
-DataMigration=Migração de dados
 DatabaseMigration=Estrutura de migração de dados
 ProcessMigrateScript=Processamento de Script
 ChooseYourSetupMode=Escolha o seu modo de configuração e clique em "Iniciar" ...
 FreshInstall=Nova instalação
 FreshInstallDesc=Utilize este modo se esta for a primeira instalação. Se não, este modo pode reparar uma instalação anterior incompleto, mas se você deseja atualizar sua versão, selecione o modo  "Upgrade".
-Upgrade=Upgrade
 UpgradeDesc=Use este modo se você substituiu arquivos antigos do Dolibarr por arquivos de uma versão mais recente. Isto irá atualizar seu banco de dados e dados instalados.
-Start=Iniciar
 InstallNotAllowed=Instalação não permitidas pelas permissões no <b>conf.php</b>
 YouMustCreateWithPermission=Você deve criar o arquivo %s e definir permissões de escrita sobre ele para instalar o servidor web durante o processo.
 CorrectProblemAndReloadPage=Corrija o problema e pressione a tecla F5 para recarregar  a página.
 AlreadyDone=Migração OK
 DatabaseVersion=Database versão
-ServerVersion=Database server version
 YouMustCreateItAndAllowServerToWrite=Você deve criar este diretório para permitir que o servidor web escreva no mesmo.
 DBSortingCollation=Ordenação dos caracteres
 YouAskDatabaseCreationSoDolibarrNeedToConnect=Você deseja criar a base de <b>dados %s,</b> mas, para isso,  o Dolibarr precisa se conectar ao servidor com permissões de  <b>super-usuário %s %s</b>.
 YouAskLoginCreationSoDolibarrNeedToConnect=Você deseja criar a base de <b>dados %s,</b> mas, para isso,  o Dolibarr precisa se conectar ao servidor com permissões de  <b>super-usuário %s %s</b>.
 BecauseConnectionFailedParametersMayBeWrong=Como a conexão falhou, o host, super-usuário ou outro falhou
 OrphelinsPaymentsDetectedByMethod=Pagamentos órfãos detectado pelo método %s
-RemoveItManuallyAndPressF5ToContinue=Remova-o manualmente e pressione F5 para continuar.
-FieldRenamed=Campo renomeado
 IfLoginDoesNotExistsCheckCreateUser=Se login não existe ainda, você deve verificar a opção "Criar usuário"
 ErrorConnection=Servidor <b>" %s",</b> nome do banco de dados <b>" %s",</b> login <b>" %s",</b> ou senha do banco de dados pode estar errado ou a versão cliente do PHP  pode ser muito antiga para comparação de dados com a versão do banco.
 InstallChoiceRecommanded=Versao recomendada para instalação <b>%s</b> da sua versao corrente <b>%s</b>
@@ -128,7 +106,6 @@ NextStepMightLastALongTime=O passo seguinte pode demorar alguns minutos. Por fav
 MigrationCustomerOrderShipping=Migrar expedição para pedidos de cliente de armazenamento
 MigrationShippingDelivery=Atualizar armazenamento de expedições
 MigrationShippingDelivery2=Atualizar armazenamento de expedição 2
-MigrationFinished=Migração terminada
 LastStepDesc=<strong>Ultimo passo</strong>: Defina aqui o usuario e a senha que voce planeja usar para conectar-se ao software. Nao perca estas credenciais, pois sao da conta que administra todas as outras contas.
 ActivateModule=Ativar modulo %s
 ShowEditTechnicalParameters=Clique aqui para mostrar/editar parametros avançados (modo avançado)
@@ -138,42 +115,30 @@ KeepDefaultValuesWamp=Se você usa o DoliWamp Setup Wizard, então os valores pr
 KeepDefaultValuesDeb=Voce esta usando o assistente de configuração do Dolibarr do pacote Linux (Ubuntu, Debian, Fedora...), portanto os valores propostos aqui ja estao otimizados. O unico parametro a informar e a senha do administrador de banco de dados. Mude outros parametros somente se voce sabe o que esta fazendo.
 KeepDefaultValuesMamp=Você usa o DoliMamp Setup Wizard, para valores propostos aqui já estão otimizados. Alterá-los apenas se souber o que está fazendo.
 KeepDefaultValuesProxmox=Voçê esta usando o asistente de configuração do Dolibarr da aplicação virtual Proxmox , portanto os valores propostos aqui ja estão otimizados. Mude-os somente se você sabe o que esta fazendo.
-
-#########
-# upgrade
 MigrationFixData=Correção para dados não normalizados
-MigrationOrder=Migração de dados para ordens de clientes 
-MigrationSupplierOrder=Migração de dados de Fornecedores' ordens
+MigrationOrder=Migração de dados para ordens de clientes
 MigrationProposal=Migração de dados de propostas comerciais
 MigrationInvoice=Migração de dados para as faturas de clientes
-MigrationContract=Migração de dados para os contratos
 MigrationSuccessfullUpdate=Atualizado com sucesso
 MigrationUpdateFailed=Falha no processo de upgrade/atualização
 MigrationRelationshipTables=Migração de dados para as tabelas de relação (%s)
 MigrationPaymentsUpdate=Correção de dados de pagamento
-MigrationPaymentsNumberToUpdate=%s pagamento (s) para atualizar
 MigrationProcessPaymentUpdate=Atualização de pagamento (s) %s
-MigrationPaymentsNothingToUpdate=Não há mais coisas para fazer
 MigrationPaymentsNothingUpdatable=Não mais pagamentos que podem ser corrigidos
 MigrationContractsUpdate=Correção de dados de contrato
-MigrationContractsNumberToUpdate=%s contrato (s) para atualizar
 MigrationContractsLineCreation=Criar uma linha de contrato ref %s
-MigrationContractsNothingToUpdate=Não há mais coisas para fazer
-MigrationContractsFieldDontExist=Campo fk_facture não existe mais. Nada a fazer.
 MigrationContractsEmptyDatesUpdate=Data de correção de contrato vazio
 MigrationContractsEmptyDatesUpdateSuccess=Correção de data de contrato vazia feita com sucesso
 MigrationContractsEmptyDatesNothingToUpdate=Nenhuma data de contrato vazio para corrigir
 MigrationContractsEmptyCreationDatesNothingToUpdate=Nenhuma data de criação de contrato para corrigir
 MigrationContractsInvalidDatesUpdate=Valor de data de correção de contrato incorreta
 MigrationContractsInvalidDateFix=Contrato Correto %s (Data do Contrato=%s, Data do inicio do serviço=%s)
-MigrationContractsInvalidDatesNumber=%s contratos modificados
 MigrationContractsInvalidDatesNothingToUpdate=Sem data com valor incorreto à corrigir
 MigrationContractsIncoherentCreationDateUpdate=Data de correção de data de criação do contrato
 MigrationContractsIncoherentCreationDateUpdateSuccess=Correcao de valor errado na criacao da data do contrato concluida com sucesso
 MigrationContractsIncoherentCreationDateNothingToUpdate=Sem valor incorreto na data de criação de contrato para correção
 MigrationReopeningContracts=Abrir contrato fechado por erro
 MigrationReopenThisContract=Reabrir contrato %s
-MigrationReopenedContractsNumber=%s contratos modificados
 MigrationReopeningContractsNothingToUpdate=Sem contratos encerrados para abrir
 MigrationBankTransfertsUpdate=Atualizar links entre transação bancária e transferência bancária
 MigrationBankTransfertsNothingToUpdate=Todas as ligações são até a data
@@ -188,11 +153,9 @@ MigrationProjectUserResp=Dados da migração do campo fk_user_resp de llx_projet
 MigrationProjectTaskTime=Atualizar tempo gasto em segundos
 MigrationActioncommElement=Atualizar dados nas ações
 MigrationPaymentMode=Migração de dados para o modo de pagamento
-MigrationCategorieAssociation=Migração de categorias
 MigrationEvents=Migração de eventos para adicionar proprietário do evento na tabela de atribuição
 MigrationRemiseEntity=Atulizacao do valor da tabela llx_societe_remise
 MigrationRemiseExceptEntity=Atualizacao do valor no campo da tabela llx_societe_remise_except
-MigrationReloadModule=Recarregar módulo %s
 ShowNotAvailableOptions=Mostrar as opções não disponíveis
 HideNotAvailableOptions=Esconder opções não disponíveis
 ErrorFoundDuringMigration=O erro será reportado durante o processo de migração então o próximo passo não está disponível. Para ignorar os erros, você pode <a href="%s">clicar aqui</a>, mas a aplicação de algumas funcionalidade não irão funcionar corretamente até que sejam consertadas.
diff --git a/htdocs/langs/pt_BR/interventions.lang b/htdocs/langs/pt_BR/interventions.lang
index e0232f217321c4c8f82bb8ab55b97cc5d024997b..dff92fe99308af8cb436e9aa34bda74ae33953ae 100644
--- a/htdocs/langs/pt_BR/interventions.lang
+++ b/htdocs/langs/pt_BR/interventions.lang
@@ -1,29 +1,15 @@
 # Dolibarr language file - Source file is en_US - interventions
-Intervention=Intervenção
-Interventions=Intervenções
-InterventionCard=Ficha de Intervenção
-NewIntervention=Nova Intervenção
 AddIntervention=Criar Intervenção
-ListOfInterventions=Lista de Intervenções
 ActionsOnFicheInter=Açoes na intervençao
 LastInterventions=Últimas %s intervenções
-AllInterventions=Todas as Intervenções
-CreateDraftIntervention=Criar Rascunho
 InterventionContact=Contato Intervenção
-DeleteIntervention=Eliminar Intervenção
-ValidateIntervention=Confirmar Intervenção
 ModifyIntervention=Modificar intervençao
-DeleteInterventionLine=Eliminar Linha de Intervenção
 CloneIntervention=Clonar intervenção
 ConfirmDeleteIntervention=Você tem certeza que deseja excluir esta intervenção?
 ConfirmValidateIntervention=Você tem certeza que deseja validar esta intervenção sob o nome <b>%s</b>?
 ConfirmModifyIntervention=Você tem certeza que deseja modificar esta intervenção?
 ConfirmDeleteInterventionLine=Você tem certeza que deseja excluir esta linha de intervenção?
 ConfirmCloneIntervention=Você tem certeza que deseja clonar esta intervenção?
-NameAndSignatureOfInternalContact=Nome e Assinatura do Participante:
-NameAndSignatureOfExternalContact=Nome e Assinatura do Cliente:
-DocumentModelStandard=Modelo da Norma Intervenção
-InterventionCardsAndInterventionLines=Fichas e Linhas de Intervenção
 InterventionClassifyBilled=Classificar "Faturado"
 InterventionClassifyUnBilled=Classificar "à faturar"
 StatusInterInvoiced=Faturado
@@ -35,21 +21,17 @@ InterventionValidatedInDolibarr=Intervenção %s validada
 InterventionModifiedInDolibarr=Intervenção %s alterada
 InterventionClassifiedBilledInDolibarr=Intervenção %s classificada como Faturada
 InterventionClassifiedUnbilledInDolibarr=Intervenção %s definida como à faturar
-InterventionSentByEMail=Intervenção %s enviada por e-mail
 InterventionDeletedInDolibarr=Intervenção %s excluída
 InterventionsArea=Área intervenções
 DraftFichinter=Rascunho de intervenções
 LastModifiedInterventions=Últimas %s intervenções modificadas
-##### Types de contacts #####
 TypeContact_fichinter_external_CUSTOMER=Contato do cliente do seguimento da intervenção
-# Modele numérotation
 PrintProductsOnFichinter=Imprima também linhas do tipo "produto" (e não apenas serviços) na ficha de intervenção
 PrintProductsOnFichinterDetails=intervenções gerados a partir de ordens
 UseServicesDurationOnFichinter=duração de uso de serviços para intervenções geradas a partir de ordens
 InterventionStatistics=Estatística de intervenções
 NbOfinterventions=Nº de fichas de intervenção
 NumberOfInterventionsByMonth=Nº de fichas de intervenção por mês (data de validação)
-##### Exports #####
 InterId=ID de intervenção
 InterRef=Intervenção ref.
 InterDateCreation=Intervenção data de criação
diff --git a/htdocs/langs/pt_BR/languages.lang b/htdocs/langs/pt_BR/languages.lang
index 9f028b21fdbcedc06f670a8bacc59028f044fef7..4c03fdcccae0d33c1adb13fa29e91aa781ba57a7 100644
--- a/htdocs/langs/pt_BR/languages.lang
+++ b/htdocs/langs/pt_BR/languages.lang
@@ -1,81 +1,12 @@
 # Dolibarr language file - Source file is en_US - languages
-Language_ar_AR=Árabe
-Language_ar_SA=Árabe
-Language_bn_BD=Bengali
-Language_bg_BG=Búlgaro
-Language_bs_BA=Bósnio
-Language_ca_ES=Catalão
 Language_cs_CZ=Tcheco
-Language_da_DA=Dinamarquês
-Language_da_DK=Dinamarquês
-Language_de_DE=Alemão
-Language_de_AT=Alemão (Áustria)
 Language_de_CH=Alemão (Suíça)
-Language_el_GR=Grego
-Language_en_AU=Inglês (Austrália)
-Language_en_CA=Inglês (Canadá)
-Language_en_GB=Inglês (Reino Unido)
-Language_en_IN=Inglês (Índia)
-Language_en_NZ=Inglês (Nova Zelândia)
-Language_en_SA=Inglês (Arábia Saudita)
-Language_en_US=Inglês (Estados Unidos)
-Language_en_ZA=Inglês (África do Sul)
-Language_es_ES=Espanhol
-Language_es_AR=Espanhol (Argentina)
-Language_es_BO=Espanhol (Bolívia)
-Language_es_CL=Espanhol (Chile)
 Language_es_CO=Espanhol (Colômbia)
-Language_es_DO=Espanhol (República Dominicana)
-Language_es_HN=Espanhol (Honduras)
-Language_es_MX=Espanhol (México)
-Language_es_PY=Espanhol (Paraguai)
-Language_es_PE=Espanhol (Peru)
-Language_es_PR=Espanhol (Porto Rico)
-Language_es_VE=Espanhol (Venezuela)
 Language_et_EE=Estoniano
-Language_eu_ES=Basco
-Language_fa_IR=Persa
-Language_fi_FI=Finlandês
-Language_fr_BE=Francês (Bélgica)
-Language_fr_CA=Francês (Canadá)
-Language_fr_CH=Francês (Suíça)
-Language_fr_FR=Francês
-Language_fr_NC=Francês (Nova Caledónia)
 Language_fy_NL=Holandês
 Language_he_IL=Hebraico
-Language_hr_HR=Croata
-Language_hu_HU=Húngaro
-Language_id_ID=Indonésio
-Language_is_IS=Islandês
-Language_it_IT=Italiano
-Language_ja_JP=Japonês
 Language_ka_GE=Georgiano
-Language_kn_IN=Canarês
-Language_ko_KR=Coreano
 Language_lo_LA=Laosiano
-Language_lt_LT=Lituano
-Language_lv_LV=Letão
 Language_mk_MK=Macedônio
-Language_nb_NO=Norueguês (Bokmål)
-Language_nl_BE=Holandês (Bélgica)
 Language_nl_NL=Holandês (Holanda)
 Language_pl_PL=Polonês
-Language_pt_BR=Português (Brasil)
-Language_pt_PT=Português
-Language_ro_RO=Romeno
-Language_ru_RU=Russo
-Language_ru_UA=Russo (Ucrânia)
-Language_tr_TR=Turco
-Language_sl_SI=Esloveno
-Language_sv_SV=Sueco
-Language_sv_SE=Sueco
-Language_sq_AL=Albanês
-Language_sk_SK=Eslovaco
-Language_sr_RS=Sérvio
-Language_sw_SW=Suaíli
-Language_th_TH=Tailandês
-Language_uk_UA=Ucraniano
-Language_uz_UZ=Uzbeque
-Language_vi_VN=Vietnamita
-Language_zh_CN=Chinês
-Language_zh_TW=Chinês (Tradicional)
diff --git a/htdocs/langs/pt_BR/ldap.lang b/htdocs/langs/pt_BR/ldap.lang
index a8153717e9bfefa60d9283f975cf9849b98ce292..3f290642a4bbda578e803be853f1a501dcff357d 100644
--- a/htdocs/langs/pt_BR/ldap.lang
+++ b/htdocs/langs/pt_BR/ldap.lang
@@ -4,22 +4,10 @@ YouMustChangePassNextLogon=A senha de <b>%s</b> ao domínio <b>%s</b> deve de se
 UserMustChangePassNextLogon=O usuário deve alterar de senha na próxima login
 LDAPInformationsForThisContact=Informação da base de dados LDAP deste contato
 LDAPInformationsForThisUser=Informação da base de dados LDAP deste usuário
-LDAPInformationsForThisGroup=Informação da base de dados LDAP deste grupo
-LDAPInformationsForThisMember=Informação da base de dados LDAP deste membro
-LDAPAttributes=Atributos LDAP
-LDAPCard=Ficha LDAP
-LDAPRecordNotFound=Registo não encontrado na base de dados LDAP
 LDAPUsers=Usuário na base de dados LDAP
-LDAPFieldStatus=Estatuto
-LDAPFieldFirstSubscriptionDate=Data primeira adesão
 LDAPFieldFirstSubscriptionAmount=Valor da Primeira Adesão
 LDAPFieldLastSubscriptionDate=Data da Última Adesão
 LDAPFieldLastSubscriptionAmount=Valor Última Adesão
-LDAPFieldSkype=Skype id
 LDAPFieldSkypeExample=Exemplo : nomeskype
 UserSynchronized=Usuário Sincronizado
-GroupSynchronized=Grupo sincronizado
-MemberSynchronized=Membro sincronizado
-ContactSynchronized=Contato sincronizado
-ForceSynchronize=forçar sincronização Dolibarr -> LDAP
 ErrorFailedToReadLDAP=Erro na leitura do anuário LDAP. Verificar a configuração do módulo LDAP e a acessibilidade do anuário.
diff --git a/htdocs/langs/pt_BR/link.lang b/htdocs/langs/pt_BR/link.lang
index ad738807b73e53b1228f18541ff64d820a131b0a..eb57e8c3b2e7eac48254619907d006ea94075321 100644
--- a/htdocs/langs/pt_BR/link.lang
+++ b/htdocs/langs/pt_BR/link.lang
@@ -1,10 +1,9 @@
-# Dolibarr language file - Source file is en_US - languages
+# Dolibarr language file - Source file is en_US - link
 LinkANewFile=Vincular um novo arquivo/documento
 LinkedFiles=Arquivos vinculados e documentos
 NoLinkFound=Não há links registrados
 LinkComplete=O arquivo foi associada com sucesso
 ErrorFileNotLinked=O arquivo não pôde ser vinculado
-LinkRemoved=A ligação %s foi removida
-ErrorFailedToDeleteLink= Falha ao remover link '<b>%s</b>'
-ErrorFailedToUpdateLink= Falha ao atualizar link '<b>%s</b>'
+ErrorFailedToDeleteLink=Falha ao remover link '<b>%s</b>'
+ErrorFailedToUpdateLink=Falha ao atualizar link '<b>%s</b>'
 URLToLink=URL para link
diff --git a/htdocs/langs/pt_BR/loan.lang b/htdocs/langs/pt_BR/loan.lang
index bb780efc3358f0edd4156fe0ad97ef9d5c211776..10e65fe5092b0cba6084bdfc3e99f50c97ebca57 100644
--- a/htdocs/langs/pt_BR/loan.lang
+++ b/htdocs/langs/pt_BR/loan.lang
@@ -1,14 +1,9 @@
 # Dolibarr language file - Source file is en_US - loan
-Loan=Empréstimo
-Loans=Empréstimos
 NewLoan=Novo empréstimo
 ShowLoan=Mostrar empréstimo
 PaymentLoan=Pagamento de empréstimo
 ShowLoanPayment=Mostrar pagamento de empréstimo
-LoanCapital=Capital
-Insurance=Seguro
 Interest=Juro
-Nbterms=Número de termos
 LoanAccountancyCapitalCode=Código Contábil Capital
 LoanAccountancyInsuranceCode=Código Contábil Seguro
 LoanAccountancyInterestCode=Código Contábil Juros
@@ -16,7 +11,6 @@ ConfirmDeleteLoan=Confirme a exclusão deste empréstimo
 LoanDeleted=Empréstimo excluído com sucesso
 ConfirmPayLoan=Confirmar este empréstimo como pago
 LoanPaid=Empréstimo pago
-# Calc
 LoanCalc=Calculadora de Empréstimos Bancários
 PurchaseFinanceInfo=Informações de Compras e Financiamentos
 SalePriceOfAsset=Preço de venda de ativos
@@ -36,14 +30,10 @@ MonthlyPaymentDesc=O pagamento mensal é descoberto com a seguinte fórmula
 AmortizationPaymentDesc=A <a href="#amortization">amortização</a> demonstra o quanto do seu pagamento mensal  destina-se a juros do banco e quanto refere-se ao pagamento do pirncipal do seu empréstimo.
 AmountFinanced=Valor Financiado
 AmortizationMonthlyPaymentOverYears=Amortização de pagamento mensal: <b>%s%</b>de  %s ao longo dos anos
-Totalsforyear=Totais para o ano
-MonthlyPayment=Pagamento Mensal
 LoanCalcDesc=Esta <b>calculadora de hipoteca</b> pode ser usada para mostrar os pagamentos mensais de um empréstimo, com base no montante contratado, no prazo desejado para o pagamento e na taxa de juros.<br> Esta calculadora inclui também o PMI (Private Mortgage Insurance - Seguro de Hipoteca Privada) para empréstimos onde mais de 20%% são usados para a entrada. Foram também consideradas as taxas municipais (IPTU), e seus efeitos no pagamento mensal total da hipoteca.<br>
 GoToInterest=%s será destinado a JUROS
 GoToPrincipal=%s será destinado ao PRINCIPAL
 YouWillSpend=Você gastará %s no ano de %s
-# Admin
-ConfigLoan=Configuração do módulo de empréstimo
 LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Código Contábil Capital por padrão
 LOAN_ACCOUNTING_ACCOUNT_INTEREST=Código Contábil Juros por padrão
 LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Código Contábil Seguros por padrão
diff --git a/htdocs/langs/pt_BR/mailmanspip.lang b/htdocs/langs/pt_BR/mailmanspip.lang
index 8b4853ad2146f5988d97154afd825dbbdaa86476..bbea232c4ef24e068faac9f4fdc21e114270e2fc 100644
--- a/htdocs/langs/pt_BR/mailmanspip.lang
+++ b/htdocs/langs/pt_BR/mailmanspip.lang
@@ -12,14 +12,12 @@ DescADHERENT_MAILMAN_URL=URL para inscriçoes Mailman
 DescADHERENT_MAILMAN_UNSUB_URL=URL para desenscriçoes Mailman
 DescADHERENT_MAILMAN_LISTS=Lista(s) para inscriçao automatica de novos membros (separado por virgula)
 SPIPTitle=Gerenciamento do conteudo do sistema SPIP
-DescADHERENT_SPIP_SERVEUR=Servidor SPIP
 DescADHERENT_SPIP_DB=Nome do banco de dados SPIP
 DescADHERENT_SPIP_USER=Login do banco de dados SPIP
 DescADHERENT_SPIP_PASS=Senha do banco de dados SPIP
 AddIntoSpip=Adicionar no SPIP
 AddIntoSpipConfirmation=Tem certeza que quer adicionar este membro no SPIP ?
 AddIntoSpipError=Falha em adicionar o usuario no SPIP
-DeleteIntoSpip=Remover do SPIP
 DeleteIntoSpipConfirmation=Tem certeza que quer remover este membro do SPIP ?
 DeleteIntoSpipError=Falha no suprimir o usuario do SPIP
 SPIPConnectionFailed=Falha na conexao com o SPIP
diff --git a/htdocs/langs/pt_BR/mails.lang b/htdocs/langs/pt_BR/mails.lang
index 247400ccfcab1e0b09a23412b930a9cd18034903..c4743f7b3edfea7e482b7f587302002c3f81d319 100644
--- a/htdocs/langs/pt_BR/mails.lang
+++ b/htdocs/langs/pt_BR/mails.lang
@@ -1,39 +1,15 @@
 # Dolibarr language file - Source file is en_US - mails
-Mailing=Mailing
-EMailing=Mailing
-EMailings=Mailings
-AllEMailings=Todos os E-Mailings
-MailCard=Ficha de Mailing
 MailRecipients=Dsetinatarios
 MailRecipient=Destinatário
 MailTitle=Descrição
-MailFrom=Remetente
 MailErrorsTo=Erros para
-MailReply=Responder a
 MailTo=Destinatário(s)
 MailCC=Copiar para
-MailCCC=Adicionar Cópia a
-MailTopic=Assunto do e-mail
-MailText=Mensagem
 MailFile=Arquivos anexados
-MailMessage=Mensagem do e-mail
-ShowEMailing=Mostrar E-Mailing
-ListOfEMailings=Lista de mailings
-NewMailing=Novo Mailing
-EditMailing=Editar Mailing
 ResetMailing=Limpar Mailing
-DeleteMailing=Eliminar Mailing
-DeleteAMailing=Eliminar um Mailing
-PreviewMailing=Previsualizar um Mailing
-CreateMailing=Criar E-Mailing
 TestMailing=Testar email
-ValidMailing=Confirmar Mailing
-MailingStatusDraft=Rascunho
-MailingStatusValidated=Validado
-MailingStatusSent=Enviado
 MailingStatusSentPartialy=Enviado parcialmente
 MailingStatusSentCompletely=Enviado completamente
-MailingStatusError=Erro
 MailingStatusNotSent=Não enviado
 MailSuccessfulySent=E-mail enviado corretamente (de %s a %s)
 MailingSuccessfullyValidated=Emailins validado com sucesso
@@ -50,9 +26,7 @@ NbOfEMails=N� de E-mails
 TotalNbOfDistinctRecipients=Número de destinatários únicos
 NoTargetYet=Nenhum destinatário definido
 RemoveRecipient=Eliminar destinatário
-CommonSubstitutions=Substituições comuns
 YouCanAddYourOwnPredefindedListHere=Para Criar o seu módulo de seleção e-mails, tem que ir a htdocs/core/modules/mailings/README.
-EMailTestSubstitutionReplacedByGenericValues=Em modo teste, as Variávels de substituição são sustituidas por valores genéricos
 MailingAddFile=Adicionar este Arquivo
 NoAttachedFiles=Sem arquivos anexos
 BadEMail=Valor errado para e-mail
@@ -62,8 +36,6 @@ CloneContent=Clonar mensagem
 CloneReceivers=Clonar recebidores
 DateLastSend=Data do último envio
 DateSending=Data envio
-SentTo=Enviado para <b>%s</b>
-MailingStatusRead=Ler
 YourMailUnsubcribeOK=O e-mail <b>%s</b> foi removido com sucesso da lista
 ActivateCheckReadKey=Chave usada para criptografar URL usado para "confirmação de leitura" e recurso "Unsubcribe"
 EMailSentToNRecipients=E-mail enviado para %s destinatarios.
@@ -72,33 +44,20 @@ XTargetsAdded=<b>%s </b> destinatários adicionados à lista de destino
 OnlyPDFattachmentSupported=Se o documento PDF já foi gerado para o objeto a ser enviado, ele será anexado ao e-mail. Se não, nenhum e-mail será (além disso, note que somente os documentos PDF são suportados como anexo no envio em massa nesta versão).
 AllRecipientSelected=Todos os endereços de e-mails dos representantes selecionados
 ResultOfMailSending=Resultado de envio em massa de e-mails
-NbSelected=Nb selecionado
-NbIgnored=Nb ignorado
-NbSent=Nb enviado
-
-# Libelle des modules de liste de destinataires mailing
 LineInFile=Linha %s em arquivo
 RecipientSelectionModules=Módulos de seleção dos destinatários
 MailSelectedRecipients=Destinatários selecionados
-MailingArea=Área mailings
-LastMailings=Os %s últimos mailings
 TargetsStatistics=Estatísticas destinatários
 NbOfCompaniesContacts=Contatos únicos de empresas
 MailNoChangePossible=Destinatários de um mailing validado não modificaveis
-SearchAMailing=Procurar um mailing
-SendMailing=Enviar mailing
-SendMail=Enviar e-mail
 MailingNeedCommand=Para razões de segurança, o envio de um mailing em massa e melhor quando feito da linha de comando. Se voce tem uma, pergunte ao seu administrador de serviço de executar o comando seguinte para enviar o mailing em massa a todos os destinatarios:
 MailingNeedCommand2=Pode enviar em linha adicionando o parâmetro MAILING_LIMIT_SENDBYWEB com um valor número que indica o máximo n� de e-mails enviados por Sessão.
 ConfirmSendingEmailing=Se você não pode ou prefere enviá-los por meio do seu navegador, favor confirmar que você tem certeza que deseja enviar o e-mail para a lista de e-mails agora a partir do seu navegador.
 LimitSendingEmailing=Observação: Envios de mailings em massa da interface web são feitas em varias vezes por causa de segurança e tempo limite, <b>%s</b> destinatarios por sessão de envio.
-TargetsReset=Limpar lista
 ToClearAllRecipientsClickHere=Para limpar a lista dos destinatários deste mailing, faça click ao botão
 ToAddRecipientsChooseHere=Para Adicionar destinatários, escoja os que figuran em listas a continuação
 NbOfEMailingsReceived=Mailings em massa recebidos
 NbOfEMailingsSend=E-mails em massa enviados
-IdRecord=ID registo
-DeliveryReceipt=Recibo de recpção
 YouCanUseCommaSeparatorForSeveralRecipients=Pode usar o caracter0 de separação <b>coma </b> para especificar multiplos destinatários.
 TagCheckMail=Seguir quando o e-mail sera lido
 TagUnsubscribe=Atalho para se desenscrever
@@ -106,11 +65,6 @@ TagSignature=Assinatura do remetente
 EMailRecipient=E-mail destinatario
 TagMailtoEmail=Destinatário do E-mail (incluindo o link HTML "mailto:")
 NoEmailSentBadSenderOrRecipientEmail=Nenhum e-mail enviado. Bad remetente ou destinatário de e-mail. Verifique perfil de usuário.
-# Module Notifications
-Notifications=Notificações
-NoNotificationsWillBeSent=Nenhuma notificação por e-mail está prevista para este evento e empresa
-ANotificationsWillBeSent=1 notificação vai a ser enviada por e-mail
-SomeNotificationsWillBeSent=%s Notificações vão ser enviadas por e-mail
 AddNewNotification=Ativar uma nova notificação email para alvo
 ListOfActiveNotifications=Lista de todos os destinatários para a notificação por e-mail
 ListOfNotificationsDone=Listar todas as notificações de e-mail enviadas
@@ -119,27 +73,19 @@ MailSendSetupIs2=Voçê precisa primeiramente acessar com uma conta de Administr
 MailSendSetupIs3=Se tiver perguntas sobre como configurar o seu servidor SMTP voçê pode perguntar %s.
 YouCanAlsoUseSupervisorKeyword=Você também pode adicionar a palavra-chave <strong>__SUPERVISOREMAIL__</strong> ter e-mail que está sendo enviado ao supervisor do usuário (só funciona se um email é definido para este supervisor)
 NbOfTargetedContacts=Número atual de e-mails de contatos direcionados
-MailAdvTargetRecipients=Destinatários (seleção avançada)
 AdvTgtTitle=Preencher os campos de entrada para pré-selecionar os terceiros ou contatos/endereços como destino
 AdvTgtSearchTextHelp=Use %% como caracteres mágicos. Por exemplo, para encontrar todos os itens como <b>jean, joe, jim</b>, você pode inserir <b>j%%</b>, você também pode usar ; como separador para valores, e usar ! para excluir este valor. Por exemplo <b>jean;joe;jim%%;!jimo;!jima%</b> colocarão todos os jean, joe, como destino, iniciar com jim, mas sem jimo e nem tudo que começa com jima
 AdvTgtSearchIntHelp=Use o intervalo para selecionar o valor int ou flutuante
-AdvTgtMinVal=Valor mínimo
-AdvTgtMaxVal=Valor máximo
 AdvTgtSearchDtHelp=Use o intervalo para selecionar o valor da data
 AdvTgtStartDt=Data in.
 AdvTgtEndDt=Data fn.
 AdvTgtTypeOfIncudeHelp=E-mail de destino de terceiro e e-mail do contato do terceiro, ou apenas o e-mail do terceiro ou apenas o e-mail do contato
 AdvTgtTypeOfIncude=Tipo de e-mail do destino
 AdvTgtContactHelp=Usar apenas de você colocou o contato no "Tipo de e-mail de destino"
-AddAll=Adicionar tudo
-RemoveAll=Remover tudo
 ItemsCount=Item(ns)
 AdvTgtNameTemplate=Filtrar nome
 AdvTgtAddContact=Adicionar e-mails de acordo com os critérios
-AdvTgtLoadFilter=Carregar filtro
 AdvTgtDeleteFilter=Excluir filtro
 AdvTgtSaveFilter=Salvar filtro
-AdvTgtCreateFilter=Criar filtro
-AdvTgtOrCreateNewFilter=Nome do novo filtro
 NoContactWithCategoryFound=Nenhum foi encontrado nenhum contato/endereço com uma categoria
 NoContactLinkedToThirdpartieWithCategoryFound=Nenhum foi encontrado nenhum contato/endereço com uma categoria
diff --git a/htdocs/langs/pt_BR/main.lang b/htdocs/langs/pt_BR/main.lang
index c1438c2c9e0817e0fa50fb1e25c13acf7fd2feb7..953a78a6eebe8450a763e56866197870c2bcc0a2 100644
--- a/htdocs/langs/pt_BR/main.lang
+++ b/htdocs/langs/pt_BR/main.lang
@@ -1,9 +1,5 @@
 # Dolibarr language file - Source file is en_US - main
 DIRECTION=ltr
-# Note for Chinese:
-# msungstdlight or cid0ct are for traditional Chinese (traditional does not render with Ubuntu pdf reader)
-# stsongstdlight or cid0cs are for simplified Chinese
-# To read Chinese pdf with Linux: sudo apt-get install poppler-data
 FONTFORPDF=helvetica
 FONTSIZEFORPDF=10
 SeparatorDecimal=,
@@ -26,36 +22,23 @@ FormatDateHourText=%d %B, %Y, %I:%M %p
 DatabaseConnection=Login à Base de Dados
 NoTemplateDefined=Nenhum tema definido para este tipo de e-mail
 AvailableVariables=Variáveis de substituição disponíveis
-NoTranslation=Sem tradução
 NoRecordFound=Nenhum registro encontrado
-NoRecordDeleted=Nenhum registro foi deletado
 NotEnoughDataYet=Sem dados suficientes
 NoError=Sem erro
-Error=Erro
 Errors=Erros
-ErrorFieldRequired=O campo '%s' é obrigatório
 ErrorFieldFormat=O campo '%s' tem um valor incorreto
 ErrorFileDoesNotExists=O arquivo %s não existe
 ErrorFailedToOpenFile=Houve uma falha ao abrir o arquivo %s
 ErrorCanNotCreateDir=Não é possível criar  a pasta %s
 ErrorCanNotReadDir=Não é possível ler a pasta %s
-ErrorConstantNotDefined=Parâmetro %s não definido
-ErrorUnknown=Erro desconhecido
-ErrorSQL=Erro de SQL
 ErrorLogoFileNotFound=O arquivo logo '%s' não se encontra
-ErrorGoToGlobalSetup=Ir á configuração ' Empresa/Instituição ' para corrigir
-ErrorGoToModuleSetup=Ir á configuração do módulo para corrigir
 ErrorFailedToSendMail=Erro ao envio do e-mail (emissor
 ErrorFileNotUploaded=O arquivo não foi possível transferir
-ErrorInternalErrorDetected=Erro detectado
-ErrorWrongHostParameter=Parâmetro Servidor inválido
 ErrorYourCountryIsNotDefined=O seu país não está definido. corrija indo a Configuração-Geral-Editar
 ErrorRecordIsUsedByChild=Impossível de suprimir este registo. Esta sendo utilizado como pai pelo menos em um registo filho.
 ErrorWrongValue=Valor incorreto
 ErrorWrongValueForParameterX=Valor incorreto para o parâmetro %s
-ErrorNoRequestInError=Nenhuma petição em erro
 ErrorServiceUnavailableTryLater=Serviço não disponível no momento. Tente novamente mais tarde.
-ErrorDuplicateField=Duplicado num campo único
 ErrorSomeErrorWereFoundRollbackIsDone=Foram encontrados alguns erros. Alterações revertidas.
 ErrorConfigParameterNotDefined=O parâmetro <b>%s</b> não está definido ao arquivo de configuração Dolibarr <b>conf.php</b>.
 ErrorCantLoadUserFromDolibarrDatabase=Impossível encontrar o usuário <b>%s</b> na base de dados do Dolibarr.
@@ -63,179 +46,101 @@ ErrorNoVATRateDefinedForSellerCountry=Erro, nenhum tipo de ICMS definido para o
 ErrorNoSocialContributionForSellerCountry=Erro, nenhum tipo de imposto social / fiscal definidos para o país '%s'.
 ErrorFailedToSaveFile=Erro, o registo do arquivo falhou.
 NotAuthorized=Você não está autorizado a fazer isso.
-SetDate=Definir data
 SelectDate=Selecionar uma data
 SeeAlso=Ver tambem %s
 SeeHere=veja aqui
 BackgroundColorByDefault=Cor do fundo padrão
 FileRenamed=O arquivo foi renomeado com sucesso
 FileUploaded=O arquivo foi carregado com sucesso
-FileGenerated=O arquivo foi gerado com sucesso
 FileWasNotUploaded=O arquivo foi selecionado, mas nao foi ainda enviado. Clique no "Anexar arquivo" para proceder.
 NbOfEntries=Nr. de entradas
 GoToWikiHelpPage=Ler a ajuda online (necessário acesso a Internet)
 GoToHelpPage=Consulte a ajuda (pode necessitar de acesso à internet)
-RecordSaved=Registo Guardado
 RecordDeleted=Registro apagado
 LevelOfFeature=Nível de funções
-NotDefined=Não Definida
 DolibarrInHttpAuthenticationSoPasswordUseless=Modo de autenticação do Dolibarr está definido como <b>%s</b> no arquivo de configuração<b>conf.php</b>.<br>Isso significa que o banco de dados das senhas é externo ao Dolibarr, assim mudar este campo, pode não ter efeito.
-Administrator=Administrador
-Undefined=Não Definido
 PasswordForgotten=Esqueceu a senha?
 SeeAbove=Mencionar anteriormente
-HomeArea=Área Principal
 LastConnexion=último login
 PreviousConnexion=último login
 PreviousValue=Valor anterior
 ConnectedOnMultiCompany=Conectado no ambiente
-ConnectedSince=Conectado desde
 AuthenticationMode=Modo de Autenticação
 RequestedUrl=URL solicitada
 DatabaseTypeManager=Tipo de gerente de base de dados
 RequestLastAccessInError=Últimos erros de acesso ao banco de dados
 ReturnCodeLastAccessInError=Código de retorno do último erro de acesso ao banco de dados
 InformationLastAccessInError=Informação do último erro de acesso ao banco de dados
-DolibarrHasDetectedError=O Dolibarr detectou um erro técnico
-InformationToHelpDiagnose=Esta informação pode ser útil para fins de diagnóstico 
-MoreInformation=Mais Informação
-TechnicalInformation=Informação técnica 
+InformationToHelpDiagnose=Esta informação pode ser útil para fins de diagnóstico
 TechnicalID=ID Técnico
-NotePublic=Nota (pública)
-NotePrivate=Nota (privada)
 PrecisionUnitIsLimitedToXDecimals=Dolibarr está configurado para limitar a precisão dos preços unitários a <b>%s</b> Decimais.
-DoTest=Teste
-ToFilter=Filtrar
 NoFilter=Nenhum filtro
 WarningYouHaveAtLeastOneTaskLate=Atenção, tem um elemento a menos que passou a data de tolerância.
 yes=sim
-Yes=Sim
 no=não
-No=Não
-All=Tudo
-Home=Inicio
-Help=Ajuda
 OnlineHelp=Ajuda online
 PageWiki=Pagina wiki
 MediaBrowser=Navegador de mídia
-Always=Sempre
-Never=Nunca
-Under=Baixo
-Period=Periodo
 PeriodEndDate=Data final periodo
 Activate=Ativar
 Activated=Ativado
 Closed=Encerrado
 Closed2=Encerrado
 Enabled=Ativado
-Deprecated=Obsoleto
 Disable=Desativar
 Disabled=Desativado
-Add=Adicionar
 AddLink=Adicionar link
 RemoveLink=Remover o link
 AddToDraft=Adicionar ao rascunho
 Update=Modificar
-Close=Fechar
 CloseBox=Remover o widget do seu painel de controle
-Confirm=Confirmar
 ConfirmSendCardByMail=Você realmente quer enviar o conteúdo deste cartão por e-mail para  <b>%s</b>?
 Delete=Eliminar
 Remove=Retirar
 Resiliate=Concluir
-Cancel=Cancelar
-Modify=Modificar
-Edit=Editar
 Validate=Confirmar
-ValidateAndApprove=Validar e Aprovar
 ToValidate=A Confirmar
-Save=Guardar
 SaveAs=Guardar como
 TestConnection=Teste a login
 ToClone=Cópiar
 ConfirmClone=Selecciones dados que deseja Cópiar.
 NoCloneOptionsSpecified=Não existem dados definidos para copiar
-Of=de
 Go=Ir
 Run=Attivo
-CopyOf=Cópia de
 Show=Ver
 ShowCardHere=Mostrar cartão
-Search=Procurar
-SearchOf=Procurar
-Valid=Confirmar
-Approve=Aprovar
-Disapprove=Desaprovar
-ReOpen=Reabrir
 Upload=Enviar Arquivo
-ToLink=Link
-Select=Selecionar
-Choose=Escolher
 Resize=Modificar tamanho
 Recenter=Recolocar no centro
-Author=Autor
 User=Usuário
 Users=Usuário
-Group=Grupo
-Groups=Grupos
 NoUserGroupDefined=Nenhum grupo definido pelo usuário
-Password=Senha
 PasswordRetype=Repetir Senha
 NoteSomeFeaturesAreDisabled=Antenção, só poucos módulos/funcionalidade foram ativados nesta demo
-Name=Nome
-Person=Pessoa
-Parameter=Parâmetro
-Parameters=Parâmetros
-Value=Valor
 PersonalValue=Valor Personalizado
-NewValue=Novo valor
 CurrentValue=Valor atual
-Code=Código
-Type=Tipo
-Language=Idioma
 MultiLanguage=Multi Idioma
-Note=Nota
-Title=Título
-Label=Etiqueta
 RefOrLabel=Ref. da etiqueta
-Info=Log
-Family=Familia
-Description=Descrição
-Designation=Designação
-Model=Modelo
 DefaultModel=Modelo Padrão
 Action=Ação
 About=Acerca de
-Number=Número
 NumberByMonth=Numero por mes
-AmountByMonth=Valor por mês
-Numero=Número
 Limit=Límite
-Limits=Limites
 Logout=Sair
 NoLogoutProcessWithAuthMode=No recurso de desconexão aplicativo com modo de autenticação
 Connection=Login
-Setup=Configuração
-Alert=Alerta
-Previous=Anterior
-Next=Seguinte
-Cards=Fichas
-Card=Ficha
 Now=Agora
 HourStart=Comece hora
-Date=Data
 DateAndHour=Data e hora
 DateToday=Data de hoje
 DateReference=Data de referência
 DateStart=Data de início
 DateEnd=Data de término
-DateCreation=Data de Criação
 DateCreationShort=Data Criação
 DateModification=Data Modificação
 DateModificationShort=Data Modif.
 DateLastModification=Data última Modificação
 DateValidation=Data Validação
-DateClosing=Data de Encerramento
 DateDue=Data Vencimento
 DateValue=Data Valor
 DateValueShort=Data Valor
@@ -244,66 +149,20 @@ DateOperationShort=Data Op.
 DateLimit=Data Límite
 DateRequest=Data Consulta
 DateProcess=Data Processo
-DateBuild=Data da geração do Relatório
-DatePayment=Data de pagamento
-DateApprove=Data de aprovação
-DateApprove2=Data de aprovação (segunda aprovação)
-UserCreation=Criado por
 UserModification=Alterado por
 UserCreationShort=Criado por
 UserModificationShort=Modif. por
-DurationYear=Ano
-DurationMonth=Mês
-DurationWeek=Semana
 DurationDay=Día
-DurationYears=Anos
-DurationMonths=Meses
-DurationWeeks=Semanas
-DurationDays=Dias
-Year=Ano
-Month=Mês
-Week=Semana
 WeekShort=Semana
 Day=Día
-Hour=Hora
-Minute=Minuto
-Second=Segundo
-Years=Anos
-Months=Meses
-Days=Dias
 days=Dias
-Hours=Horas
-Minutes=Minutos
-Seconds=Segundos
 Weeks=Semandas
-Today=Hoje
-Yesterday=Ontem
-Tomorrow=Amanhã
 Morning=Manha
-Afternoon=Tarde
 Quadri=Trimistre
-MonthOfDay=Dia do mês
-HourShort=H
-MinuteShort=mn
-Rate=Tipo
 CurrencyRate=Taxa de conversão moeda
 UseLocalTax=Incluindo taxa
-Bytes=Bytes
-KiloBytes=Kilobytes
-MegaBytes=Megabytes
-GigaBytes=Gigabytes
-TeraBytes=Terabytes
-b=b.
-Kb=Kb
-Mb=Mb
-Gb=Gb
-Tb=Tb
-Cut=Cortar
-Copy=Copiar
-Paste=Colar
 Default=Padrao
 DefaultValue=Valor por default
-Price=Preço
 UnitPrice=Preço Unit.
 UnitPriceHT=Preço Base
 UnitPriceTTC=Preço Unit. Total
@@ -328,10 +187,6 @@ AmountLT1ES=Valor RE
 AmountLT2ES=Valor IRPF
 AmountTotal=Valor Total
 AmountAverage=Valor médio
-PriceQtyMinHT=Preço quantidade min total
-Percentage=Percentagem
-Total=Total
-SubTotal=Subtotal
 TotalHTShort=Total (neto)
 TotalHTShortCurrency=Total (líquido na moeda)
 TotalTTCShort=Total (incl. taxas)
@@ -339,45 +194,23 @@ TotalHT=Valor
 TotalHTforthispage=Total (sem impostos) desta pagina
 Totalforthispage=Total para esta página
 TotalTTC=Total
-TotalTTCToYourCredit=Total a crédito
 TotalVAT=Total do ICMS
 TotalLT1=Total taxa 2
 TotalLT2=Total taxa 3
-TotalLT1ES=Total RE
-TotalLT2ES=Total IRPF
 HT=Sem ICMS
 TTC=ICMS Incluido
 VAT=ICMS
 VATs=Impostos sobre vendas
-LT1ES=RE
-LT2ES=IRPF
 VATRate=Taxa ICMS
-Average=Média
-Sum=Soma
-Delta=Divergencia
-Module=Módulo
-Option=Opção
-List=Lista
-FullList=Lista Completa
-Statistics=Estatísticas
 OtherStatistics=Outras estatisticas
-Status=Estado
 Favorite=Favorito
-ShortInfo=Info.
-Ref=Ref.
-ExternalRef=Ref. extern
 RefSupplier=Ref. Fornecedor
 RefPayment=Ref. Pagamento
-CommercialProposalsShort=Orçamentos
 Comment=Comentario
 Comments=Comentarios
 ActionsToDo=Ações a realizar
-ActionsToDoShort=A realizar
-ActionsDoneShort=Realizadas
 ActionNotApplicable=Não aplicavel
 ActionRunningNotStarted=A Iniciar
-ActionRunningShort=Iniciado
-ActionDoneShort=Terminado
 ActionUncomplete=Imcompleto
 CompanyFoundation=Companhia/Fundação
 ContactsForCompany=Contatos desta empresa
@@ -385,243 +218,82 @@ ContactsAddressesForCompany=Contatos/Endereços do Cliente ou Fornecedor
 AddressesForCompany=Endereços para este terceiro
 ActionsOnCompany=Ações nesta sociedade
 ActionsOnMember=Eventos deste membro
-NActionsLate=%s em atraso
 RequestAlreadyDone=Pedido ja registrado
-Filter=Filtro
 FilterOnInto=Critério da pesquisa  '<strong>%s</strong>' nos campos %s
 RemoveFilter=Eliminar filtro
-ChartGenerated=Gráficos gerados
-ChartNotGenerated=Gráfico não gerado
 GeneratedOn=Gerado a %s
-Generate=Gerar
-Duration=Duração
-TotalDuration=Duração total
-Summary=Resumo
-DolibarrStateBoard=Estatísticas
-DolibarrWorkBoard=Indicadores de Trabalho
 Available=Disponivel
 NotYetAvailable=Ainda não disponível
 NotAvailable=Não disponível
 Categories=Tags / categorias
 Category=Tag / categoria
-By=Por
-From=De
 to=para
-and=e
-or=ou
-Other=Outro
-Others=Outros
-OtherInformations=Outras Informações
-Quantity=quantidade
-Qty=Quant.
-ChangedBy=Modificado por
-ApprovedBy=Aprovado por
 ApprovedBy2=Aprovado pelo (segunda aprovação)
-Approved=Aprovado
-Refused=Recusado
-ReCalculate=Recalcular
-ResultKo=Erro
-Reporting=Relatório
-Reportings=Relatórios
-Draft=Rascunho
-Drafts=Drafts
-Validated=Validado
 Opened=Aberto
-New=Novo
-Discount=Desconto
-Unknown=Desconhecido
-General=General
-Size=Tamanho
-Received=Recebido
-Paid=Pago
 Topic=Assunto
-ByCompanies=Por empresa
 ByUsers=Por usuário
-Links=Links
-Link=Link
-Rejects=Reprovado
-Preview=Preview
-NextStep=Passo Seguinte
-Datas=Dados
-None=Nenhum
-NoneF=Nenhuma
-Late=Atraso
 LateDesc=O atraso na definição se o registro é tardio ou não, depende da sua configuração. Peça ao seu Administrador para alterar o atraso no menu Início - Configuração - Alertas.
-Photo=Foto
-Photos=Fotos
-AddPhoto=Adicionar foto
 DeletePicture=Apagar foto
 ConfirmDeletePicture=Confirmar eliminação de fotografias
-Login=Login
 CurrentLogin=Login atual
-January=Janeiro
-February=Fevereiro
-March=Março
-April=Abril
-May=Maio
-June=Junho
-July=Julho
-August=Agosto
-September=Setembro
-October=Outubro
-November=Novembro
-December=Dezembro
-JanuaryMin=Jan
 FebruaryMin=Fev
-MarchMin=Mar
 AprilMin=Abr
 MayMin=Mai
-JuneMin=Jun
-JulyMin=Jul
 AugustMin=Ago
 SeptemberMin=Set
 OctoberMin=Out
-NovemberMin=Nov
 DecemberMin=Dez
-Month01=Janeiro
-Month02=Fevereiro
-Month03=Março
-Month04=Abril
-Month05=Maio
-Month06=Junho
-Month07=Julho
-Month08=Agosto
-Month09=Setembro
-Month10=Outubro
-Month11=Novembro
-Month12=Dezembro
-MonthShort01=Jan
 MonthShort02=Fev
-MonthShort03=Mar
 MonthShort04=Abr
 MonthShort05=Mai
-MonthShort06=Jun
-MonthShort07=Jul
 MonthShort08=Ago
 MonthShort09=Set
 MonthShort10=Out
-MonthShort11=Nov
 MonthShort12=Dez
 AttachedFiles=Arquivos e Documentos Anexos
 FileTransferComplete=Foi transferido corretamente o Arquivo
-DateFormatYYYYMM=YYYY-MM
-DateFormatYYYYMMDD=YYYY-MM-DD
-DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS
-ReportName=Nome do Relatório
 ReportPeriod=Periodo de Análise
-ReportDescription=Descrição
-Report=Relatório
 Keyword=Palavra-chave
-Legend=Legenda
 Fill=Preencher
 Reset=Resetar
 File=Arquivo
 Files=Arquivos
-NotAllowed=Não Autorizado
-ReadPermissionNotAllowed=Leitura não Autorizada
 AmountInCurrency=Valores Apresentados em %s
-Example=Exemplo
-Examples=Exemplos
-NoExample=Sem Exemplo
-FindBug=Sinalizar um bug
 NbOfThirdParties=Numero de Fornecedores
-NbOfLines=Numeros de Linhas
 NbOfObjects=Numero de Objetos
 NbOfObjectReferers=Número de itens relacionados
 Referers=Itens correlatos
-TotalQuantity=Quantidade Total
-DateFromTo=De %s a %s
-DateFrom=A partir de %s
-DateUntil=Até %s
-Check=Verificar
 Uncheck=Desmarque
-Internal=Interno
-External=Externo
-Internals=Internos
-Externals=Externos
-Warning=Alerta
-Warnings=Alertas
-BuildDoc=Gerar o doc
-Entity=Entidade
 Entities=Entidadees
 CustomerPreview=Historico Cliente
 SupplierPreview=Historico Fornecedor
 ShowCustomerPreview=Ver Historico Cliente
 ShowSupplierPreview=Ver Historico Fornecedor
-RefCustomer=Ref. Cliente
-Currency=Moeda
-InfoAdmin=Informação para os administradores
-Undo=Desfazer
-Redo=Refazer
-ExpandAll=Expandir tudo
-UndoExpandAll=Anular Expansão
-Reason=Razão
-FeatureNotYetSupported=Funcionalidade ainda não suportada
-CloseWindow=Fechar Janela
-Response=Resposta
-Priority=Prioridade
 SendByMail=Enviado por e-mail
-MailSentBy=Mail enviado por
-TextUsedInTheMessageBody=Texto utilizado no corpo da mensagem
-SendAcknowledgementByMail=Enviar email de confirmação
-EMail=E-mail
-NoEMail=Sem e-mail
 NoMobilePhone=Sem celular
 Owner=Proprietário
-FollowingConstantsWillBeSubstituted=As seguintes constantes serão substituidas pelo seu valor correspondente.
 Refresh=Atualizar
-BackToList=Mostar Lista
-GoBack=Voltar
 CanBeModifiedIfOk=Pode modificarse se é valido
 CanBeModifiedIfKo=Pode modificarse senão é valido
 ValueIsValid=Valor é válido
 ValueIsNotValid=Valor inválido
-RecordCreatedSuccessfully=Registro criado com sucesso
-RecordModifiedSuccessfully=Registo modificado com êxito
 RecordsModified=%s registros modificados
 RecordsDeleted=%s registro excluido
-AutomaticCode=Criação automática de código
 FeatureDisabled=Função Desativada
 MoveBox=Widget de movimento
-Offered=Oferta
 NotEnoughPermissions=Não tem permissões para esta ação
-SessionName=Nome Sessão
-Method=Método
-Receive=Recepção
 CompleteOrNoMoreReceptionExpected=Completo nada mais a fazer
-PartialWoman=Parcial
-TotalWoman=Total
-NeverReceived=Nunca Recebido
-Canceled=Cancelado
 YouCanChangeValuesForThisListFromDictionarySetup=Voce pode modificar os valores para esta lista no menu Configuração - dicionario
 YouCanSetDefaultValueInModuleSetup=Você pode definir o valor padrão usado quando da criação de um novo registro na configuração do módulo
-Color=Cor
-Documents=Documentos
-Documents2=Documentos
 UploadDisabled=Carregamento Desativada
-MenuECM=Documentos
-MenuAWStats=Estatisticas
-MenuMembers=Membros
-MenuAgendaGoogle=Agenda Google
-ThisLimitIsDefinedInSetup=Límite Dolibarr (menu inicio-configuração-segurança): %s Kb, PHP limit: %s Kb
-NoFileFound=Não existem documentos guardados nesta pasta
 CurrentUserLanguage=Idioma atual
 CurrentTheme=Tema atual
 CurrentMenuManager=Administração do menu atual
 DisabledModules=Módulos desativados
-For=Para
-ForCustomer=Para cliente
-Signature=Assinatura
 DateOfSignature=Data da assinatura
 HidePassword=Mostrar comando com senha oculta
 UnHidePassword=Mostrar comando real com a senha visivel
-Root=Raíz
-Informations=Informação
-Page=Página
-Notes=Notas
-AddNewLine=Adicionar nova linha
 AddFile=Adicionar arquivo
-FreeZone=Entrada livre
 FreeLineOfType=Entrada livre de tipo
 CloneMainAttributes=Clonar o objeto com estes atributos
 PDFMerge=Fusão de PDF
@@ -629,30 +301,19 @@ Merge=Fusão
 PrintContentArea=Mostrar pagina a se imprimir na area principal
 MenuManager=Administração do menu
 WarningYouAreInMaintenanceMode=Atenção, voce esta no modo de manutenção, somente o login <b>%s</b> tem permissões para uso da aplicação no momento.
-CoreErrorTitle=Erro de sistema
-CoreErrorMessage=Occoreu erro. Verifique os arquivos de log ou contate seu administrador de sistema. 
+CoreErrorMessage=Occoreu erro. Verifique os arquivos de log ou contate seu administrador de sistema.
 CreditCard=Cartão de credito
 FieldsWithAreMandatory=Campos com <b>%s</b> são obrigatorios
 FieldsWithIsForPublic=Campos com <b>%s</b> são mostrados na lista publica de membros. Se não deseja isto, deselecione a caixa "publico".
 AccordingToGeoIPDatabase=(conforme a convenção GeoIP)
-Line=Linha
 NotSupported=Não suportado
 RequiredField=Campo obrigatorio
-Result=Resultado
-ToTest=Teste
 ValidateBefore=Precisa de um cartão valido antes de usar esta função
-Visibility=Visibilidade
-Private=Privado
 Hidden=Escondido
 Resources=Resorsas
-Source=Fonte
-Prefix=Prefixo
-Before=Antes
-After=Depois
 IPAddress=endereco IP
 Frequency=Frequencia
 IM=Mensagems instantaneas
-NewAttribute=Novo atributo
 AttributeCode=Codigo do atributo
 URLPhoto=URL da photo/logo
 SetLinkToAnotherThirdParty=Atalho para outro terceiro
@@ -665,31 +326,21 @@ LinkToSupplierProposal=Link para a proposta de Compra
 LinkToSupplierInvoice=Link para a Fatura de Compra
 LinkToContract=Link para o Contrato
 LinkToIntervention=Link para a Intervensão
-CreateDraft=Criar Rascunho
 SetToDraft=Voltar para modo rascunho
-ClickToEdit=Clique para editar
 ObjectDeleted=Objeto %s apagado
-ByCountry=Por país
-ByTown=Por cidade
-ByDate=Por data
 ByMonthYear=Por mes/ano
 ByYear=Por ano
 ByMonth=Por mes
 ByDay=Por día
 BySalesRepresentative=Por vendedor representante
-LinkedToSpecificUsers=Conectado com um contato particular do usuario 
-NoResults=Sem resultados
+LinkedToSpecificUsers=Conectado com um contato particular do usuario
 AdminTools=Ferram. admin.
-SystemTools=Ferramentas do sistema
 ModulesSystemTools=Ferramentas de modulos
-Test=Teste
-Element=Elemento
 NoPhotoYet=Sem fotos disponiveis no momento
 Dashboard=Painel de Controle
 Deductible=Deduzivel
 from=de
 toward=para
-Access=Acesso
 SelectAction=Selecionar ação
 HelpCopyToClipboard=Use Ctrl+C para copiar para o clipboard
 SaveUploadedFileWithMask=Salvar arquivo no servidor com nome "<strong>%s</strong>" (alternativamente "%s")
@@ -705,12 +356,8 @@ SelectElementAndClickRefresh=Selecionar um elemento e clickar atualizar
 PrintFile=Imprimir arquivo %s
 ShowTransaction=Mostrar transação na conta bancária
 GoIntoSetupToChangeLogo=Vá para casa - Configuração - Empresa de mudar logotipo ou ir para casa - Setup - Display para esconder.
-Deny=Negar
 Denied=Negado
-ListOfTemplates=Lista de modelos
 Gender=Gênero
-Genderman=Homem
-Genderwoman=Mulher
 ViewList=Exibição de lista
 Mandatory=Obrigatório
 Hello=Olá
@@ -719,7 +366,6 @@ DeleteLine=Apagar linha
 ConfirmDeleteLine=Você tem certeza que deseja excluir esta linha?
 NoPDFAvailableForDocGenAmongChecked=Nenhum PDF estava disponível para a geração do documento entre os registros verificados
 TooManyRecordForMassAction=Muitos registros selecionados para a ação em massa. A ação é restrita a uma lista de %s registros.
-NoRecordSelected=Nenhum registro selecionado
 MassFilesArea=Área para os arquivos gerados pelas ações em massa
 ShowTempMassFilesArea=Exibir área dos arquivos gerados pelas ações em massa
 RelatedObjects=Objetos Relacionados
@@ -729,46 +375,10 @@ ClickHere=Clickque aqui
 FrontOffice=Frente do escritório
 BackOffice=Fundo do escritório
 View=Visão
-Export=Exportar
-Exports=Exportações
-ExportFilteredList=Exportar lista filtrada
-ExportList=Exportar lista
-Miscellaneous=Variados
-Calendar=Calendário
-GroupBy=Agrupar por
-ViewFlatList=Visão da lista resumida
-# Week day
-Monday=Segunda-feira
-Tuesday=Terça-feira
-Wednesday=Quarta-feira
-Thursday=Quinta-feira
-Friday=Sexta-feira
 Saturday=Sabado
-Sunday=Domingo
-MondayMin=Seg
-TuesdayMin=Ter
-WednesdayMin=Qua
-ThursdayMin=Qui
-FridayMin=Sex
 SaturdayMin=Sab
-SundayMin=Dom
-Day1=Segunda-Feira
-Day2=Terça-Feira
-Day3=Quarta-Feira
-Day4=Quinta-Feira
-Day5=Sexta-Feria
-Day6=Sábado
-Day0=Domingo
-ShortMonday=Seg
-ShortTuesday=Ter
-ShortWednesday=Qua
-ShortThursday=Qui
-ShortFriday=Sex
-ShortSaturday=Sab
-ShortSunday=Dom
 SelectMailModel=Escolha um modelo de e-mail
 SetRef=Escolher referência
-Select2ResultFoundUseArrows=Alguns resultados encontrados. Use as setas para selecionar.
 Select2NotFound=Nenhum resultado encontrado
 Select2Enter=Forneça
 Select2MoreCharacter=ou mais caracteres
diff --git a/htdocs/langs/pt_BR/margins.lang b/htdocs/langs/pt_BR/margins.lang
index 521f1f911ab7a2d849622b2e584bdaca349ef18e..a3d74fa8b547b713cca2c1b1d04835afdfa122be 100644
--- a/htdocs/langs/pt_BR/margins.lang
+++ b/htdocs/langs/pt_BR/margins.lang
@@ -1,10 +1,4 @@
-# Dolibarr language file - Source file is en_US - marges
-
-Margin=Margem
-Margins=Margens
-TotalMargin=Margem total
-MarginOnProducts=Margem / Produtos
-MarginOnServices=Margem / Serviços
+# Dolibarr language file - Source file is en_US - margins
 MarginRate=Relação margem-preço de compra
 MarkRate=Relação margem-preço de venda
 DisplayMarginRates=Exibir relações margem-preço de compra
@@ -12,29 +6,20 @@ DisplayMarkRates=Exibir relações margem-preço de venda
 InputPrice=Preço de entrada
 margin=Gestão de margens de lucro
 margesSetup=Configuração das margens de lucro
-MarginDetails=Detalhes da margem
 ProductMargins=Margens de produtos
 CustomerMargins=Margems de clientes
 SalesRepresentativeMargins=Tolerância aos representante de vendas
 UserMargins=Margens do usuário
 ProductService=Produto ou serviço
-AllProducts=Todos os produtos e serviços
-ChooseProduct/Service=Escolher produto ou serviço
 ForceBuyingPriceIfNull=Compra Força preço / custo para o preço de venda se não definido
 ForceBuyingPriceIfNullDetails=Se o preço de compra / custo não definido, e essa opção "ON", a margem será zero em linha (compra / preço = custo preço de venda), caso contrário ("OFF"), marge será igual ao padrão sugerido.
 MARGIN_METHODE_FOR_DISCOUNT=Metodologia de margem para descontos globais
-UseDiscountAsProduct=Como um produto
-UseDiscountAsService=Como um serviço
-UseDiscountOnTotal=No subtotal
 MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Define se um desconto global e tratado como o produto, serviço, ou somente sob o sub-total na margem.
 MARGIN_TYPE=Compra / Preço de custo sugerido por padrão para cálculo da margem de
 MargeType1=Margem de melhor preço com fornecedor
 MargeType2=Margem sobre o Preço Médio Ponderado (PMP)
 MargeType3=Margem sobre o preço de custo
 MarginTypeDesc=* Margem de melhor preço de compra = Preço de venda - o melhor preço com fornecedor definido na ficha de produto <br> * margem sobre o preço médio ponderado (WAP) = Preço de VENDA - produto Preço Médio Ponderado (WAP) ou melhor preço de fornecedor se WAP ainda não definido <br> * Margem sobre o preço de custo = preço de VENDA - preço de custo definido na ficha de produto ou WAP se o preço de custo não definido, ou melhor preço fornecedor, se ainda não WAP definido
-CostPrice=Preço de custo
-UnitCharges=Custos unitários
-Charges=Custos
 AgentContactType=Tipo contato do agente comercial
 AgentContactTypeDetails=Defina o tipo de contato (conectado coma as faturas) sera usado para o relatorio de margem dos representantes
 rateMustBeNumeric=Rata deve ser um valor numerico
diff --git a/htdocs/langs/pt_BR/members.lang b/htdocs/langs/pt_BR/members.lang
index 19d6f6fb4ae8e1019da1122184140686f2281c12..1838298905d7e4be4e21f8e905b5f10896047ee4 100644
--- a/htdocs/langs/pt_BR/members.lang
+++ b/htdocs/langs/pt_BR/members.lang
@@ -9,81 +9,47 @@ UserNotLinkedToMember=Usuário não vinculado a um associado
 ThirdpartyNotLinkedToMember=Fornecedores não ligados a um membro
 MembersTickets=Etiquetas de associado
 FundationMembers=Membros da fundação
-ListOfValidatedPublicMembers=Lista de Membros públicos validados
-ErrorThisMemberIsNotPublic=Este membro não é público
 ErrorMemberIsAlreadyLinkedToThisThirdParty=Outro membro  já está vinculado a um terceiro. Remover este link em primeiro lugar porque um terceiro não pode ser ligado a apenas um membro (e vice-versa).
 ErrorUserPermissionAllowsToLinksToItselfOnly=Por razões de segurança, você deve ter permissões para editar todos os usuários sejam capazes de ligar um membro a um usuário que não é seu.
 ThisIsContentOfYourCard=Este é os detalhes do seu cartão
 CardContent=Conteúdo da sua ficha de membro
-SetLinkToUser=Link para um usuário Dolibarr
 SetLinkToThirdParty=Link para um fornecedor Dolibarr
-MembersCards=Cartões de Membros
-MembersList=Lista de Membros
-MembersListToValid=Lista de Membros rascunho (a Confirmar)
-MembersListValid=Lista de Membros validados
 MembersListUpToDate=Lista dos Membros válidos ao día de adesão
 MembersListNotUpToDate=Lista dos Membros válidos não ao día de adesão
 MembersListResiliated=Lista de membros encerrados
-MembersListQualified=Lista dos Membros qualificados
-MenuMembersToValidate=Membros rascunho
-MenuMembersValidated=Membros validados
 MenuMembersUpToDate=Membros ao día
 MenuMembersNotUpToDate=Membros não ao día
 MenuMembersResiliated=Membros encerrados
-MembersWithSubscriptionToReceive=Membros com assinatura para receber
 DateSubscription=data filiação
 DateEndSubscription=data final filiação
 EndSubscription=fim filiação
 SubscriptionId=Id adesão
 MemberId=Id adesão
-NewMember=Novo membro
-MemberType=Tipo de Membro
-MemberTypeId=ID tipo de membro
-MemberTypeLabel=Etiqueta tipo de membro
-MembersTypes=Tipos de Membros
 MemberStatusDraft=rascunho (a Confirmar)
-MemberStatusDraftShort=A Confirmar
-MemberStatusActive=Validado (em espera de filiação )
-MemberStatusActiveShort=Validado
 MemberStatusActiveLate=filiação não à día
 MemberStatusActiveLateShort=não à día
 MemberStatusPaid=Assinatura em dia
 MemberStatusPaidShort=Até à data
 MemberStatusResiliated=Membro encerrado
 MemberStatusResiliatedShort=Encerrado
-MembersStatusToValid=Membros rascunho
 MembersStatusResiliated=Membros encerrados
-NewCotisation=Nova filiação
 PaymentSubscription=Subscrição de Pagamento
 SubscriptionEndDate=data final filiação
-MembersTypeSetup=configuração dos tipos de Membros
-NewSubscription=Nova filiação
 NewSubscriptionDesc=Este formulário permite que você grave a sua assinatura como um novo membro da fundação. Se você quiser renovar a sua assinatura (se já for membro), por favor, entre em contato com Conselho de Fundadores não por e-mail.
-Subscription=Filiação
 Subscriptions=Filiações
 SubscriptionLate=Em Atraso
 SubscriptionNotReceived=filiação não recibida
 ListOfSubscriptions=Lista de Filiações
-SendCardByMail=Enviar ficha
 AddMember=Criar membro
 NoTypeDefinedGoToSetup=nenhum tipo de membro definido. ir a configuração -> Tipos de Membros
-NewMemberType=Novo tipo de membro
-WelcomeEMail=E-mail
-SubscriptionRequired=Sujeito a cotação
-DeleteType=Eliminar
-VoteAllowed=Voto autorizado
 Physical=Físico
-Moral=Moral
 MorPhy=Moral/Físico
 Reenable=Reativar
 ResiliateMember=Encerrar um membro
 ConfirmResiliateMember=Você tem certeza que deseja encerrar este membro?
-DeleteMember=Eliminar um membro
 ConfirmDeleteMember=Você tem certeza que deseja excluir este membro (a exclusão de um membro excluirá todas as suas assinaturas)?
-DeleteSubscription=Eliminar uma filiação
 ConfirmDeleteSubscription=Você tem certeza que deseja excluir esta assinatura?
 Filehtpasswd=Arquivo htpasswd
-ValidateMember=Confirmar um membro
 ConfirmValidateMember=Você tem certeza que deseja validar este membro?
 FollowingLinksArePublic=os vínculos seguintes são páginas acessiveis a todos e não protegidas por Nenhuma habilitação Dolibarr.
 PublicMemberList=Lista público de Membros
@@ -91,58 +57,28 @@ BlankSubscriptionForm=Formulário de inscrição
 BlankSubscriptionFormDesc=Dolibarr pode fornecer uma URL pública para permitir que os visitantes externos de pedir para se inscrever para a fundação. Se um módulo de pagamento on-line estiver ativado, uma forma de pagamento também será fornecido automaticamente.
 EnablePublicSubscriptionForm=Habilite a forma pública auto-assinatura
 ExportDataset_member_1=Membros e Filiações
-ImportDataset_member_1=Membros
 LastMembersModified=Últimos %s membros modificados
 LastSubscriptionsModified=Últimas %s subscrições modificadas
-String=Cadeia
-Text=Texto largo
-Int=Numérico
-DateAndTime=data e hora
-PublicMemberCard=Ficha pública membro
 SubscriptionNotRecorded=Subscrição não registrada
 AddSubscription=Criar subscripção
-ShowSubscription=Mostrar filiação
-SendAnEMailToMember=Enviar e-mail de informação à membro (E-mail: <b>%s</b>)
-DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Assunto do e-mail recebido em caso de auto-inscrição de um convidado
-DescADHERENT_AUTOREGISTER_NOTIF_MAIL=E-mail recebido em caso de auto-inscrição de um convidado
 DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=Assunto do email em caso de inscrição automática
 DescADHERENT_AUTOREGISTER_MAIL=Email a enviar em caso de convite para inscrição automática
-DescADHERENT_MAIL_VALID_SUBJECT=assunto do e-mail  de validação de membro
-DescADHERENT_MAIL_VALID=E-mail de validação de membro
-DescADHERENT_MAIL_COTIS_SUBJECT=assunto do e-mail de validação de cotação
-DescADHERENT_MAIL_COTIS=E-mail de validação de uma filiação
-DescADHERENT_MAIL_RESIL_SUBJECT=assunto de e-mail de baixa
-DescADHERENT_MAIL_RESIL=E-mail de baixa
-DescADHERENT_MAIL_FROM=E-mail emissor para os e-mails automáticos
-DescADHERENT_ETIQUETTE_TYPE=Formato etiquetas
 DescADHERENT_ETIQUETTE_TEXT=Texto impresso em folhas de endereço de membros
 DescADHERENT_CARD_TYPE=Formato da página fichas
-DescADHERENT_CARD_HEADER_TEXT=Texto a imprimir na parte superior do cartão de membro
-DescADHERENT_CARD_TEXT=Texto a imprimir ao cartão de membro
 DescADHERENT_CARD_TEXT_RIGHT=Texto impresso em cartões de membros (alinhar à direita)
-DescADHERENT_CARD_FOOTER_TEXT=Texto a imprimir na parte inferior do cartão de membro
-ShowTypeCard=Ver tipo '%s'
 HTPasswordExport=geração Arquivo htpassword
 NoThirdPartyAssociatedToMember=nenhum Fornecedor associado a este membro
-MembersAndSubscriptions= Membros e Subscrições
+MembersAndSubscriptions=Membros e Subscrições
 MoreActions=Ação complementar em gravação
 MoreActionsOnSubscription=Ação complementar, sugerido por padrão durante a gravação de uma assinatura
-MoreActionBankDirect=Criar um registro de transação direto na conta
-MoreActionBankViaInvoice=Criar uma fatura e pagamento por conta
-MoreActionInvoiceOnly=Criar uma fatura sem pagamento
 LinkToGeneratedPages=Gerar cartões de visitas
 LinkToGeneratedPagesDesc=Esta tela permite gerar arquivos PDF com cartões de visita para todos os seus membros ou um membro particular.
 DocForAllMembersCards=Gerar cartões de visita para todos os membros
 DocForOneMemberCards=Gerar cartões de visita para um determinado membro
 DocForLabels=Gerar folhas de endereço
-SubscriptionPayment=Pagamento Assinatura
 LastSubscriptionDate=Data da Última Adesão
 LastSubscriptionAmount=Valor Última Adesão
-MembersStatisticsByCountries=Membros estatísticas por país
-MembersStatisticsByState=Membros estatísticas por estado / província
-MembersStatisticsByTown=Membros estatísticas por cidade
 MembersStatisticsByRegion=Membros por região estatísticas
-NbOfMembers=Número de membros
 NoValidatedMemberYet=Nenhum membro validados encontrado
 MembersByCountryDesc=Esta tela mostrará estatísticas sobre usuários por países. Gráfico depende, contudo, do Google serviço gráfico on-line e está disponível apenas se uma conexão à Internet é está funcionando.
 MembersByStateDesc=Esta tela mostrará estatísticas sobre usuários por estado / província / cantão.
@@ -154,11 +90,8 @@ Nature=Tipo de produto
 Public=Informações são públicas
 NewMemberbyWeb=Novo membro adicionado. Aguardando aprovação
 NewMemberForm=Formulário para novo membro
-SubscriptionsStatistics=Estatísticas sobre assinaturas
 NbOfSubscriptions=Número de inscrições
-AmountOfSubscriptions=Quantidade de assinaturas
 TurnoverOrBudget=Volume de negócios (para uma empresa) ou de orçamento (para uma fundação)
-DefaultAmount=Quantidade padrão de assinatura
 CanEditAmount=Visitante pode escolher/editar quantidade da sua subscrição
 MEMBER_NEWFORM_PAYONLINE=Ir na página de pagamento online integrado
 ByProperties=Por características
diff --git a/htdocs/langs/pt_BR/opensurvey.lang b/htdocs/langs/pt_BR/opensurvey.lang
index 20b5fcf0233424d0f1e92e4ce068c3dd21bd9de7..c7b097c44ba9c43e75462f8d3a0b341637d747d2 100644
--- a/htdocs/langs/pt_BR/opensurvey.lang
+++ b/htdocs/langs/pt_BR/opensurvey.lang
@@ -5,7 +5,6 @@ OrganizeYourMeetingEasily=Organize suas reuniões e enquetes facilmente. Em prim
 NewSurvey=Nova enquete
 OpenSurveyArea=Área de enquetes
 AddACommentForPoll=Você pode adicionar um comentário na enquete...
-AddComment=Adicionar comentário
 CreatePoll=Criar uma enquete
 PollTitle=Titulo da enquete
 ToReceiveEMailForEachVote=Receba um e-mail a cada novo voto
@@ -15,12 +14,9 @@ OpenSurveyStep2=Selecione os dias livres (cinza). Os dias escolhidos são verdes
 RemoveAllDays=Remova todos os dias
 CopyHoursOfFirstDay=Copiar horários do primeiro dia
 RemoveAllHours=Apagar todos os horários
-SelectedDays=Dias selecionados
 TheBestChoice=A melhor escolha no momento é
 TheBestChoices=As melhores escolhas no momento são
-with=com
 OpenSurveyHowTo=Se você quiser votar nesta enquete, você tem que preencher o seu nome, escolha as opções que se encaixam melhor para você e confirme com o botão de mais no final da linha.
-CommentsOfVoters=Comentários dos votantes
 ConfirmRemovalOfPoll=Você tem certeza que deseja remover esta enquete (e todos os votos)
 RemovePoll=Remover enquete
 UrlForSurvey=URL para obter um acesso direto à pesquisa
@@ -30,27 +26,20 @@ CreateSurveyStandard=Criar uma enquete padrão
 CheckBox=Caixa de resposta simples
 YesNoList=Escolher (nulo/sim/não)
 PourContreList=Escolher (nulo/a favor/contra)
-AddNewColumn=Adicionar nova coluna
-TitleChoice= Escolha a resposta
+TitleChoice=Escolha a resposta
 ExportSpreadsheet=Exportar resultado para planilha
-ExpireDate=Data Limite
 NbOfSurveys=Número de enquetes
 NbOfVoters=Nr. de eleitores
 SurveyResults=Resultado
 PollAdminDesc=Você está autorizado a alterar todas as linhas da votação desta enquete, com o botão "Editar". Você pode, também remover uma coluna ou uma linha com o %s. Você também pode adicionar uma nova coluna com o %s.
-5MoreChoices=Mais 5 opções
-Against=Contra
 YouAreInivitedToVote=Você foi convidado para votar nesta enquete
 VoteNameAlreadyExists=Este nome já foi usada na enquete
-AddADate=Adicionar uma data
-AddStartHour=Adicionar hora de início
 AddEndHour=Adicionar hora final
 votes=voto(s)
 NoCommentYet=Nenhum comentário foi publicado para este voto ainda
 CanComment=Os eleitores podem comentar na enquete
 CanSeeOthersVote=Os eleitores podem ver os votos de outras pessoas
 SelectDayDesc=Em cada dia selecionado, você pode escolher ou não preencher os horários com o seguinte formato:<br>- vazio,<br>- "8h", "8H" ou "08:00"  horário de início da reunião, <br>- "8-11", "8h-11h", "8H-11H" ou "8:00-11:00" horário de início da reunião e do termino,<br> - "8h15-11h15", "8h15-11H15 " ou " 8:15-11:15 " mesma funcionalidade, mas com preenchimento dos minutos.
-BackToCurrentMonth=Voltar para o mês atual
 ErrorOpenSurveyFillFirstSection=Você não preencheu o primeiro passo para criação da enquete
 ErrorOpenSurveyOneChoice=Digite pelo menos uma opção
 ErrorInsertingComment=Houve um erro ao inserir o seu comentário
diff --git a/htdocs/langs/pt_BR/orders.lang b/htdocs/langs/pt_BR/orders.lang
index 96d5caf44676e6837b7e4e45cb68ac51531da28f..1e37cd4575f73c7450a39132b07448a3d3be3eac 100644
--- a/htdocs/langs/pt_BR/orders.lang
+++ b/htdocs/langs/pt_BR/orders.lang
@@ -1,20 +1,9 @@
 # Dolibarr language file - Source file is en_US - orders
 OrdersArea=Área de Pedidos de Clientes
-SuppliersOrdersArea=Área de Pedidos a Fornecedores
-OrderCard=Ficha Pedido
 OrderId=ID Pedido
-Order=Pedido
-Orders=Pedidos
 OrderLine=Linha de Comando
-OrderDate=Data Pedido
 OrderDateShort=Data do pedido
 OrderToProcess=Pedido a processar
-NewOrder=Novo Pedido
-ToOrder=Realizar Pedido
-MakeOrder=Realizar Pedido
-SupplierOrder=Pedido a Fornecedor
-SuppliersOrders=Pedidos a Fornecedores
-SuppliersOrdersRunning=Pedidos a Fornecedores em Curso
 CustomerOrder=Pedido de Cliente
 CustomersOrders=Pedidos de clientes
 CustomersOrdersRunning=Pedidos dos clientes atuais
@@ -23,52 +12,29 @@ OrdersToBill=Pedidos dos clientes entregue
 OrdersInProcess=Pedidos de cliente em processo
 OrdersToProcess=Pedidos de cliente a processar
 SuppliersOrdersToProcess=Pedidos a fornecedor a processar
-StatusOrderCanceledShort=Anulado
-StatusOrderDraftShort=Rascunho
-StatusOrderValidatedShort=Validado
 StatusOrderSentShort=Em processo
 StatusOrderSent=Entrega encaminhada
 StatusOrderOnProcessShort=Pedido
-StatusOrderProcessedShort=Processado
 StatusOrderDelivered=Entregue
 StatusOrderDeliveredShort=Entregue
 StatusOrderToBillShort=Entregue
-StatusOrderApprovedShort=Aprovado
-StatusOrderRefusedShort=Reprovado
 StatusOrderBilledShort=Faturado
 StatusOrderToProcessShort=A processar
-StatusOrderReceivedPartiallyShort=Recebido Parcialmente
-StatusOrderReceivedAllShort=Recebido
-StatusOrderCanceled=Anulado
-StatusOrderDraft=Rascunho (a Confirmar)
-StatusOrderValidated=Validado
 StatusOrderOnProcess=Pedido - Aguardando Recebimento
 StatusOrderOnProcessWithValidation=Ordenada - recepção Standby ou validação
-StatusOrderProcessed=Processado
 StatusOrderToBill=A Faturar
-StatusOrderApproved=Aprovado
-StatusOrderRefused=Reprovado
 StatusOrderBilled=Faturado
-StatusOrderReceivedPartially=Recebido Parcialmente
-StatusOrderReceivedAll=Recebido
 ShippingExist=Existe envio
 ProductQtyInDraft=Quantidade do produto em projetos de ordens
 ProductQtyInDraftOrWaitingApproved=Quantidade do produto em projecto ou ordens aprovadas, ainda não ordenou
 MenuOrdersToBill=Pedidos por Faturar
 MenuOrdersToBill2=Ordens faturáveis
-ShipProduct=Enviar Produto
-CreateOrder=Criar Pedido
-RefuseOrder=Rejeitar o Pedido
 ApproveOrder=Aprovar pedidos
 Approve2Order=Aprovar pedido (segundo nível)
-ValidateOrder=Confirmar o Pedido
 UnvalidateOrder=Desaprovar pedido
-DeleteOrder=Eliminar o pedido
-CancelOrder=Anular o Pedido
-OrderReopened= Pedido %s Reaberto
+OrderReopened=Pedido %s Reaberto
 AddOrder=Criar ordem
 AddToDraftOrders=Adicionar a projeto de pedido
-ShowOrder=Mostrar Pedido
 OrdersOpened=Pedidos a processar
 NoDraftOrders=Não há projetos de pedidos
 NoOrder=Sem pedidos
@@ -77,14 +43,7 @@ LastOrders=Últimos %s pedidos de cliente
 LastCustomerOrders=Últimos %s pedidos de cliente
 LastSupplierOrders=Últimos %s pedidos a fornecedores
 LastModifiedOrders=Últimos %s pedidos modificados
-AllOrders=Todos os Pedidos
-NbOfOrders=Número de Pedidos
-OrdersStatistics=Estatísticas de pedidos
-OrdersStatisticsSuppliers=Estatísticas de Pedidos a Fornecedores
-NumberOfOrdersByMonth=Número de Pedidos por Mês
 AmountOfOrdersByMonthHT=Numero de pedidos por mes (sem impostos)
-ListOfOrders=Lista de Pedidos
-CloseOrder=Fechar Pedido
 ConfirmCloseOrder=Você tem certeza que deseja definir este pedido como entregue? Uma vez entregue o pedido, o mesmo pode ser definido como cobrado.
 ConfirmDeleteOrder=Você tem certeza que deseja excluir este pedido?
 ConfirmValidateOrder=Você tem certeza que deseja validar este pedido sob o nome <b>%s</b>?
@@ -93,19 +52,12 @@ ConfirmCancelOrder=Você tem certeza que deseja cancelar este pedido?
 ConfirmMakeOrder=Você tem certeza que deseja confirmar que fez este pedido em <b>%s</b>?
 GenerateBill=Faturar
 ClassifyShipped=Clasificar entregue
-DraftOrders=Rascunhos de Pedidos
 DraftSuppliersOrders=Rascunho de pedidos para fornecedor
-OnProcessOrders=Pedidos em Processo
-RefOrder=Ref. Pedido
 RefCustomerOrder=Ref. pedido por cliente
 RefOrderSupplier=Ref. ordem por fonecedor
-SendOrderByMail=Enviar pedido por e-mail
 ActionsOnOrder=Ações sobre o pedido
 NoArticleOfTypeProduct=Não existe artigos de tipo 'produto' e por tanto expedidos neste pedido
-OrderMode=Método de pedido
-AuthorRequest=Autor/Solicitante
 UserWithApproveOrderGrant=Usuários autorizados a aprovar os pedidos.
-PaymentOrderRef=Pagamento de Pedido %s
 CloneOrder=Copiar o Pedido
 ConfirmCloneOrder=Você tem certeza que deseja clonar este pedido, o <b>%s</b>?
 DispatchSupplierOrder=Receber pedido de fornecedor %s
@@ -114,7 +66,6 @@ SecondApprovalAlreadyDone=Segundo aprovação já feito
 SupplierOrderReceivedInDolibarr=Pedido a fornecedor %s recebido %s
 SupplierOrderSubmitedInDolibarr=Pedido a fornecedor %s submetido
 SupplierOrderClassifiedBilled=Pedido a fornecedor %s conjunto faturado
-##### Types de contacts #####
 TypeContact_commande_internal_SALESREPFOLL=Responsável do seguimento do pedido do cliente
 TypeContact_commande_internal_SHIPPING=Representante seguindo o envio
 TypeContact_commande_external_BILLING=Contato fatura cliente
@@ -125,29 +76,12 @@ TypeContact_order_supplier_internal_SHIPPING=Representante seguindo o envio
 TypeContact_order_supplier_external_BILLING=Contato fatura fornecedor
 TypeContact_order_supplier_external_SHIPPING=Contato envio fornecedor
 TypeContact_order_supplier_external_CUSTOMER=Contato fornecedor seguindo o pedido
-
-Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constante COMMANDE_SUPPLIER_ADDON não definida
-Error_COMMANDE_ADDON_NotDefined=Constante COMMANDE_ADDON não definida
 Error_OrderNotChecked=Nenhum pedido seleçionado para se faturar
-# Sources
-OrderSource0=Orçamento Proposto
-OrderSource1=Internet
-OrderSource2=Campanha por correio
 OrderSource3=Campanha telefônica
-OrderSource4=Campanha por fax
-OrderSource5=Comercial
-OrderSource6=Revistas
-QtyOrdered=Quant. Pedida
-# Documents models
 PDFEinsteinDescription=Modelo de pedido completo (logo...)
 PDFEdisonDescription=O modelo simplificado do pedido
 PDFProformaDescription=A proforma fatura completa (logomarca...)
-# Orders modes
-OrderByMail=Correio
-OrderByFax=Fax
 OrderByEMail=E-mail
-OrderByWWW=Online
-OrderByPhone=Telefone
 CreateInvoiceForThisCustomer=Faturar pedidos
 NoOrdersToInvoice=Nenhum pedido faturavel
 CloseProcessedOrdersAutomatically=Classificar como "processados" todos os pedidos selecionados.
diff --git a/htdocs/langs/pt_BR/other.lang b/htdocs/langs/pt_BR/other.lang
index 174948a5dd89f87973bc209ed0fd95c08c31bf87..1dde195264457ce3cea077fccd1fe7b0132fcd5d 100644
--- a/htdocs/langs/pt_BR/other.lang
+++ b/htdocs/langs/pt_BR/other.lang
@@ -1,6 +1,5 @@
 # Dolibarr language file - Source file is en_US - other
 SecurityCode=Código de segurança
-NumberingShort=N°
 Tools=Ferramentas
 ToolsDesc=Todas as diversas ferramentas não incluídas em outras entradas de menu estão aqui coligidas.<br /><br />Todas as ferramentas podem ser acessadas a partir do menu esquerdo.
 Birthday=Aniversário
@@ -24,7 +23,6 @@ Notify_PROPAL_SENTBYMAIL=Proposta comercial enviada por e-mail
 Notify_WITHDRAW_TRANSMIT=Revogação de transmissão
 Notify_WITHDRAW_CREDIT=Revogação de credito
 Notify_WITHDRAW_EMIT=Revogação de performance
-Notify_COMPANY_CREATE=Terceiro criado
 Notify_COMPANY_SENTBYMAIL=E-mails enviados a partir do cartão de terceiros
 Notify_BILL_VALIDATE=Fatura de cliente confirmada
 Notify_BILL_UNVALIDATE=Fatura de cliente anulada
@@ -35,12 +33,9 @@ Notify_BILL_SUPPLIER_VALIDATE=Fatura fornecedor validada
 Notify_BILL_SUPPLIER_PAYED=Fatura fornecedor paga
 Notify_BILL_SUPPLIER_SENTBYMAIL=Fatura fornecedor enviada por e-mail
 Notify_BILL_SUPPLIER_CANCELED=Fornecedor fatura cancelada
-Notify_CONTRACT_VALIDATE=Contrato validado
 Notify_FICHEINTER_VALIDATE=Intervenção validada
 Notify_SHIPPING_VALIDATE=Envio validado
 Notify_SHIPPING_SENTBYMAIL=Envio enviado por e-mail
-Notify_MEMBER_VALIDATE=Membro validado
-Notify_MEMBER_MODIFY=Membro modificado
 Notify_MEMBER_SUBSCRIPTION=Membro inscrito
 Notify_MEMBER_RESILIATE=Membro encerrado
 Notify_MEMBER_DELETE=Membro apagado
@@ -51,7 +46,6 @@ Notify_TASK_DELETE=Tarefa excluída
 SeeModuleSetup=Veja configuração do módulo %s
 NbOfAttachedFiles=Número Arquivos/Documentos Anexos
 TotalSizeOfAttachedFiles=Tamanho Total dos Arquivos/Documentos Anexos
-MaxSize=Tamanho Máximo
 AttachANewFile=Adicionar Novo Arquivo/Documento
 LinkedObject=Arquivo Anexo
 NbOfActiveNotifications=Número de notificações (nb de e-mails de destinatários)
@@ -75,9 +69,6 @@ DemoCompanyServiceOnly=Administração de um trabalhador por conta propia realiz
 DemoCompanyShopWithCashDesk=Administração de uma loja com Caixa
 DemoCompanyProductAndStocks=Administração de uma PYME com venda de produtos
 DemoCompanyAll=Administração de uma PYME com Atividades multiplos (todos Os módulos principais)
-CreatedBy=Criado por %s
-ModifiedBy=Modificado por %s
-ValidatedBy=Validado por %s
 ClosedBy=Encerrado por %s
 CreatedById=Id usuario que criou
 ModifiedById=ID do usuário que fez a última mudança
@@ -93,59 +84,17 @@ FileWasRemoved=o Arquivo foi eliminado
 DirWasRemoved=a pasta foi eliminado
 FeatureNotYetAvailable=Funcionalidade ainda não disponível na versão atual
 FeaturesSupported=Funcionalidades suportadas
-Width=Largura
-Height=Altura
-Depth=Fundo
-Top=Topo
-Bottom=Fundo
 Left=Esquerda
 Right=Direita
-CalculatedWeight=Peso calculado
-CalculatedVolume=Volume calculado
-Weight=Peso
 WeightUnitton=tonelada
-WeightUnitkg=kg
-WeightUnitg=g
-WeightUnitmg=mg
-WeightUnitpound=libra
-Length=Comprimento
-LengthUnitm=m
-LengthUnitdm=dm
-LengthUnitcm=cm
-LengthUnitmm=mm
-Surface=Area
-SurfaceUnitm2=m²
-SurfaceUnitdm2=dm²
-SurfaceUnitcm2=cm²
-SurfaceUnitmm2=mm²
-SurfaceUnitfoot2=ft²
-SurfaceUnitinch2=in²
-Volume=Volume
-VolumeUnitm3=m³
-VolumeUnitdm3=dm³ (L)
-VolumeUnitcm3=cm³ (ml)
-VolumeUnitmm3=mm³ (µl)
-VolumeUnitfoot3=ft³
-VolumeUnitinch3=in³
-VolumeUnitounce=onça
-VolumeUnitlitre=litro
 VolumeUnitgallon=gallão
-SizeUnitm=m
-SizeUnitdm=dm
-SizeUnitcm=cm
-SizeUnitmm=mm
-SizeUnitinch=polegada
 SizeUnitfoot=pe
-SizeUnitpoint=ponto
 BugTracker=Incidências
 SendNewPasswordDesc=Este formulário permite que você solicite uma nova senha. Ela será enviada para o seu endereço de e-mail.<br />A alteração irá vigorar assim que você clicar no link de confirmação no e-mail.<br />Verifique sua caixa de entrada.
 BackToLoginPage=Voltar e a página de login
 AuthenticationDoesNotAllowSendNewPassword=O modo de autenticação é <b>%s</b>.<br />Neste modo, o Dolibarr não pode saber e nem alterar a sua senha.<br />Entre em contato com o seu Administrador se você deseja alterar a sua senha.
 EnableGDLibraryDesc=Instale ou ative a biblioteca GD da sua instalação PHP para usar esta opção.
 ProfIdShortDesc=<b>Prof Id %s</b> é uma informação dePendente do país do Fornecedor.<br>Por Exemplo, para o país  <b>%s</b>, é o código <b>%s</b>.
-DolibarrDemo=Demo de Dolibarr ERP/CRM
-StatsByNumberOfUnits=Estatísticas em número de unidades de produto/serviço
-StatsByNumberOfEntities=Estatísticas em número de identidadees referentes
 NumberOfProposals=Número de propostas nos últimos 12 meses
 NumberOfCustomerOrders=Número de pedidos de cliente nos últimos 12 meses
 NumberOfCustomerInvoices=Número de faturas de cliente nos últimos 12 meses
@@ -163,16 +112,10 @@ EMailTextInterventionValidated=A intervenção %s foi validada
 EMailTextInvoiceValidated=A fatura %s foi validada.
 EMailTextProposalValidated=A proposta %s foi validada.
 EMailTextOrderValidated=O pedido %s foi validado.
-EMailTextOrderApproved=Pedido %s Aprovado
 EMailTextOrderValidatedBy=A ordem %s foi gravada por %s.
-EMailTextOrderApprovedBy=Pedido %s Aprovado por %s
-EMailTextOrderRefused=Pedido %s Reprovado
-EMailTextOrderRefusedBy=Pedido %s Reprovado por %s
-EMailTextExpeditionValidated=O envio %s foi validado.
 ImportedWithSet=Data importacao
 DolibarrNotification=Notificação automatica
 ResizeDesc=Insira a nova largura <b>OU</b> o novo peso. A proporção sera mantida durante a transformacao...
-NewLength=Nova largura
 NewHeight=Nova altrua
 NewSizeAfterCropping=Nova dimensao depois do recorte
 DefineNewAreaToPick=Definir nova area na imagem para escolher ( click esquerdo na imagem e depois arastar ate o canto oposto)
@@ -184,7 +127,6 @@ ThisIsListOfModules=Esta e a lista de modulos pre-seleçionados pelo profilo dem
 UseAdvancedPerms=Use as permissões avançadas de algums modulos
 FileFormat=Arquivo formato
 SelectAColor=Escolha a cor
-AddFiles=Adicionar arquivos
 StartUpload=Iniciar o "upload"
 CancelUpload=Cancelar o "upload"
 FileIsTooBig=Tamanho do arquivo grande de mais
@@ -198,15 +140,22 @@ ForgetIfNothing=Se voce nao pediu esta mudanca, simplismente esquece deste email
 IfAmountHigherThan=Se a quantia mais elevada do que <strong>%s</strong>
 SourcesRepository=Repositório de fontes
 Chart=Gráfico
-
-##### Export #####
-ExportsArea=Área de Exportações
-AvailableFormats=Formatos disponíveis
-LibraryUsed=Biblioteca usada
-LibraryVersion=Versão da biblioteca
-ExportableDatas=dados exportáveis
+ContractValidatedInDolibarr=Contrato %s validado
+PropalClosedSignedInDolibarr=Proposta %s assinada
+PropalClosedRefusedInDolibarr=Proposta %s declinada
+PropalClassifiedBilledInDolibarr=Proposta %s classificada faturada
+InvoicePaidInDolibarr=Fatura %s marcada paga
+InvoiceCanceledInDolibarr=Fatura %s cancelada
+MemberValidatedInDolibarr=Membro %s validado
+MemberResiliatedInDolibarr=Membro %s finalizado
+MemberDeletedInDolibarr=Membro %s cancelado
+MemberSubscriptionAddedInDolibarr=Inscrição do membo %s adicionada
+ShipmentValidatedInDolibarr=Envio %s validado
+ShipmentClassifyClosedInDolibarr=Expedição %s classificada como faturada
+ShipmentUnClassifyCloseddInDolibarr=Expedição %s classificada como reaberta
+ShipmentDeletedInDolibarr=Envio %s cancelado
+Export=Exportar
 NoExportableData=não existe dados exportáveis (sem módulos com dados exportáveis gastodos, necessitam de permissões)
-##### External sites #####
 WebsiteSetup=Configuração do módulo website
 WEBSITE_PAGEURL=URL da página
 WEBSITE_TITLE=Título
diff --git a/htdocs/langs/pt_BR/paybox.lang b/htdocs/langs/pt_BR/paybox.lang
index b6b4dbff06d3169cf2560b80160b192c1a4150d9..383d49a131ff174d947291b7d818dfcc270431e3 100644
--- a/htdocs/langs/pt_BR/paybox.lang
+++ b/htdocs/langs/pt_BR/paybox.lang
@@ -1,18 +1,13 @@
 # Dolibarr language file - Source file is en_US - paybox
-PayBoxSetup=Configuração do módulo PayBox
 PayBoxDesc=Este módulo oferece uma página de pagamento atravé do fornecedor <a href
 FollowingUrlAreAvailableToMakePayments=As seguintes URL estão disponíveis para permitir a um cliente efetuar um pagamento
 PaymentForm=Formulário de Pagamento
 WelcomeOnPaymentPage=Bem Vindos a Nossos serviços de pagamento on-line
 ThisScreenAllowsYouToPay=Esta página lhe permite fazer seu pagamento on-line destinado a %s.
 ThisIsInformationOnPayment=Aqui está a informação sobre o pagamento a realizar
-ToComplete=A completar
-YourEMail=E-Mail de confirmação de pagamento
 Creditor=Beneficiário
-PaymentCode=Código de pagamento
 PayBoxDoPayment=Continuar o pagamento com cartão
 YouWillBeRedirectedOnPayBox=Va a ser redirecionado a a página segura de  Paybox para indicar seu cartão de crédito
-Continue=Continuar
 ToOfferALinkForOnlinePayment=URL para %s pagamento
 ToOfferALinkForOnlinePaymentOnOrder=URL que oferece uma interface de pagamento on-line %s baseada no valor de un pedido de cliente
 ToOfferALinkForOnlinePaymentOnInvoice=URL que oferece uma interface de pagamento on-line %s baseada no valor de uma fatura
@@ -25,7 +20,7 @@ YourPaymentHasBeenRecorded=Esta pagina confirma que o seu pagamento foi registra
 YourPaymentHasNotBeenRecorded=Seu pagamento nao foi registrado e a transaçao foi cancelada. Obrigado.
 AccountParameter=Parametros da conta
 UsageParameter=Parametros de uso
-InformationToFindParameters=Ajuda a buscar suas %s informaçoes da conta 
+InformationToFindParameters=Ajuda a buscar suas %s informaçoes da conta
 PAYBOX_CGI_URL_V2=URL do Paybox CGI modulo para pagamento
 VendorName=Nome do vendedor
 CSSUrlForPaymentForm=CSS style sheet URL para modelo de pagamento
diff --git a/htdocs/langs/pt_BR/paypal.lang b/htdocs/langs/pt_BR/paypal.lang
index 9df278907fea8043a9522c1448f2c82caddb9f18..3a24701e5fb45d039392358f2b8bdddb84b2633a 100644
--- a/htdocs/langs/pt_BR/paypal.lang
+++ b/htdocs/langs/pt_BR/paypal.lang
@@ -16,12 +16,11 @@ ThisIsTransactionId=Eis o id da transação: <b>%s</b>
 PAYPAL_ADD_PAYMENT_URL=Adicionar URL do pagamento Paypal quando se envia o documento por e-mail
 PredefinedMailContentLink=Clique no link seguro abaixo para fazer o pagamento (PayPal) se nao esta ainda effetuado.⏎\n⏎\n%s⏎\n⏎\n
 YouAreCurrentlyInSandboxMode=No momento esta no modo "caixa de areia"
-NewPaypalPaymentReceived=Novo pagamento Paypal recebido
 NewPaypalPaymentFailed=Tentado novo pagamento Paypal mas sem hesito.
 PAYPAL_PAYONLINE_SENDEMAIL=Endereço e-mail para aviso apos o pagamento (positivo ou nao)
 ReturnURLAfterPayment=Retornar ao URL após o pagamento
 ValidationOfPaypalPaymentFailed=Validação do pagamento do Paypal falhou
-PaypalConfirmPaymentPageWasCalledButFailed= Pagamento completo mas nenhum pagamento foi recebido no PayPal
+PaypalConfirmPaymentPageWasCalledButFailed=Pagamento completo mas nenhum pagamento foi recebido no PayPal
 SetExpressCheckoutAPICallFailed=Falha ao chamar a API: SetExpressCheckout.
 DoExpressCheckoutPaymentAPICallFailed=Falha ao chamar a API: DoExpressCheckoutPayment.
 DetailedErrorMessage=Mensagem de erro detalhada
diff --git a/htdocs/langs/pt_BR/printing.lang b/htdocs/langs/pt_BR/printing.lang
index 33164b36b3861c73c28e8938be292f0459ce3cce..bd46819e35b1eaf20f5d01a3290c1c093462d5ee 100644
--- a/htdocs/langs/pt_BR/printing.lang
+++ b/htdocs/langs/pt_BR/printing.lang
@@ -1,5 +1,4 @@
 # Dolibarr language file - Source file is en_US - printing
-Module64000Name=Impressão Direta
 Module64000Desc=Habilitar Sistema de Impressão Direta
 PrintingSetup=Configuração do Sistema de Impressão Direta
 PrintingDesc=Este módulo adiciona um botão Imprimir para enviar documentos diretamente para uma impressora (sem abrir documento em um aplicativo) com vários módulos.
@@ -7,7 +6,6 @@ MenuDirectPrinting=Trabalhos de Impressão Direta
 DirectPrint=Impressão directa
 PrintingDriverDesc=Configuração de variáveis para o driver de impressão.
 ListDrivers=Lista de drivers
-PrintTestDesc=Lista de Impressoras.
 FileWasSentToPrinter=Arquivo %s enviado para impressora
 NoActivePrintingModuleFound=Sem módulo ativo para impressão de documentos
 PleaseSelectaDriverfromList=Por favor, selecione um driver da lista.
@@ -17,9 +15,7 @@ TargetedPrinter=Impressora em questão
 UserConf=Configuração por usuário
 PRINTGCP_INFO=Configuração API do Google OAuth
 PRINTGCP_AUTHLINK=Autenticação
-PRINTGCP_TOKEN_ACCESS=Google Cloud Print OAuth Token
 PrintGCPDesc=Este driver permite enviar documentos diretamente para uma impressora com o Google Cloud Print.
-GCP_Name=Nome
 GCP_displayName=Nome De Exibição
 GCP_Id=ID da impressora
 GCP_OwnerName=Nome do proprietário
@@ -28,20 +24,12 @@ GCP_connectionStatus=Estado online
 GCP_Type=Tipo de impressora
 PrintIPPDesc=Este driver permite enviar documentos diretamente para uma impressora. Ele requer um sistema Linux com CUPS instalados.
 PRINTIPP_HOST=Servidor de impressão
-PRINTIPP_PORT=Porta
-PRINTIPP_USER=Login
-PRINTIPP_PASSWORD=Senha
 NoDefaultPrinterDefined=Nenhuma impressora padrão definida
 DefaultPrinter=Impressora padrão
-Printer=Impressora
-IPP_Uri=Printer Uri
 IPP_Name=\nNome da impressora
 IPP_State=Estado da impressora
 IPP_State_reason=Estado razão
 IPP_State_reason1=Estado razão1
-IPP_BW=BW
-IPP_Color=Cor
-IPP_Device=Dispositivo
 IPP_Media=Mídia da impressora
 IPP_Supported=Tipo de mídia
 DirectPrintingJobsDesc=Esta página lista os trabalhos de impressão encontrado para impressoras disponíveis.
diff --git a/htdocs/langs/pt_BR/productbatch.lang b/htdocs/langs/pt_BR/productbatch.lang
index 6844c3a80d6bccfedaf2aa3141bbc1109688ddf1..0e2abcbcd0458e38db33358fc838047005a62c37 100644
--- a/htdocs/langs/pt_BR/productbatch.lang
+++ b/htdocs/langs/pt_BR/productbatch.lang
@@ -1,9 +1,7 @@
-# ProductBATCH language file - en_US - ProductBATCH
+# Dolibarr language file - Source file is en_US - productbatch
 ManageLotSerial=Use lote / número de série
 ProductStatusOnBatch=Sim (lote / série necessário)
 ProductStatusNotOnBatch=Não (lote / série não utilizado)
-ProductStatusOnBatchShort=Sim
-ProductStatusNotOnBatchShort=Não
 Batch=Lote / Serial
 atleast1batchfield=Compra prazo de validade ou data de venda ou Lote / Número de série
 batch_number=Lote / Número de série
diff --git a/htdocs/langs/pt_BR/products.lang b/htdocs/langs/pt_BR/products.lang
index 556ad4eedab972407affe6389448aff5b5d0c9d2..301fbe00f969badf3229e0611c3ddf0c3c8646f8 100644
--- a/htdocs/langs/pt_BR/products.lang
+++ b/htdocs/langs/pt_BR/products.lang
@@ -5,24 +5,16 @@ ProductLabelTranslated=Etiqueta do produto traduzido
 ProductDescriptionTranslated=Descrição do produto traduzido
 ProductNoteTranslated=Nota produto traduzido
 ProductServiceCard=Ficha do produto/serviço
-Products=Produtos
-Services=Serviços
-Product=Produto
-Service=Serviço
 ProductId=ID do produto/serviço
-Create=Criar
 Reference=Referência
 NewProduct=Novo produto
 NewService=Novo serviço
 ProductVatMassChange=Mudança VAT Massa
 ProductVatMassChangeDesc=Esta página pode ser utilizado para modificar uma taxa VAT definido em produtos ou serviços a partir de um valor para outro. Atenção, esta mudança é feita em todos os banco de dados.
-MassBarcodeInit=Inicialização de código de barras. 
+MassBarcodeInit=Inicialização de código de barras.
 MassBarcodeInitDesc=Esta página pode ser usado para inicializar um código de barras em objetos que não têm código de barras definidas. Verifique antes que a instalação do módulo de código de barras é completa.
 ProductAccountancyBuyCode=Código contábil (para compras)
 ProductAccountancySellCode=Código contábil (venda)
-ProductOrService=Produto ou Serviço
-ProductsAndServices=Produtos e Serviços
-ProductsOrServices=Produtos ou Serviços
 ProductsOnSell=Produto para venda ou para compra
 ProductsNotOnSell=Produto que não se vende nem se compra
 ProductsOnSellAndOnBuy=Produtos para venda e para compra
@@ -34,11 +26,6 @@ LastRecordedProducts=Últimos %s produtos gravados
 LastRecordedServices=Últimos %s serviços gravados
 CardProduct0=Ficha do Produto
 CardProduct1=Ficha do Serviço
-Stock=Estoque
-Stocks=Estoques
-Movements=Movimentos
-Sell=Vendas
-Buy=Compras
 OnSell=Vende-se
 OnBuy=Para compra
 NotOnSell=Não se vende
@@ -53,40 +40,21 @@ ProductStatusNotOnBuyShort=Não para-se comprar
 UpdateVAT=Atualização IVA
 UpdateDefaultPrice=Atualização de preço padrão
 UpdateLevelPrices=Atualizar preços para cada nível
-AppliedPricesFrom=Preço de venda válido a partir de
-SellingPrice=Preço de venda
 SellingPriceHT=Preço de venda (sem taxas)
 SellingPriceTTC=Preço de venda (incl. taxas)
 CostPriceDescription=Este preço ( livre de impostos) pode ser usado para armazenar a quantidade média do custo do produto para sua empresa. Pode ser qualquer preço a se calcular, por exemplo, a partir do preço médio de compra mais o custo médio de produção e distribuição.
 CostPriceUsage=Numa futura versão, este valor não poderá ser usado para cálculo de margem.
 SoldAmount=Total vendido
 PurchasedAmount=Total comprado
-NewPrice=Novo preço
 MinPrice=Preço de venda min.
 CantBeLessThanMinPrice=O preço de venda não deve ser inferior ao mínimo para este produto (%s ICMS)
 ContractStatusClosed=Encerrado
-ErrorProductAlreadyExists=Um produto com a referencia %s já existe.
 ErrorProductBadRefOrLabel=O valor da referencia ou etiqueta é incorreto
 ErrorProductClone=Aconteceu um problema durante a clonação do produto ou serviço.
 ErrorPriceCantBeLowerThanMinPrice=Erro, o preço não pode ser inferior ao preço mínimo.
-Suppliers=Fornecedores
-SupplierRef=Ref. fornecedor
-ShowProduct=Mostrar produto
-ShowService=Mostrar serviço
-ProductsAndServicesArea=Área de Produtos e Serviços
-ProductsArea=Área de Produtos
-ServicesArea=Área de Serviços
-ListOfStockMovements=Lista de movimentos de estoque
-BuyingPrice=Preço de compra
 PriceForEachProduct=Produtos com preços específicos
 SupplierCard=Ficha do fornecedor
-PriceRemoved=Preço eliminado
-BarCode=Código de barras
-BarcodeType=Tipo de código de barras
-SetDefaultBarcodeType=Defina o tipo de código de barras
-BarcodeValue=Valor do código de barras
 NoteNotVisibleOnBill=Nota (não visivel em faturas, orçamentos etc.)
-ServiceLimitedDuration=Sim o serviço é de Duração limitada :
 MultiPricesAbility=Varias faixas de preços de produtos/serviços por segmento (cada cliente está em um segmento)
 MultiPricesNumPrices=Número de preços
 AssociatedProductsAbility=Ative o recurso pacote
@@ -96,30 +64,17 @@ ParentProductsNumber=Numero de pacotes pais do produto
 ParentProducts=Produtos pai
 IfZeroItIsNotAVirtualProduct=Se for 0, este produto não é um produto pacote
 IfZeroItIsNotUsedByVirtualProduct=Se 0, este produto não é usado por qualquer produto do pacote
-Translation=Tradução
 KeywordFilter=Filtro por palavra-chave
 CategoryFilter=Filtro por categoria
-ProductToAddSearch=Procurar produtos a Adicionar
-NoMatchFound=Não foram encontrados resultados
 ProductAssociationList=Lista dos produtos / serviços que são componente deste produto / pacote virtual
 ProductParentList=Lista de pacote produtos/serviços com este produto como componente
 ErrorAssociationIsFatherOfThis=Um dos produtos selecionados é pai do produto em curso
-DeleteProduct=Eliminar um produto/serviço
 ConfirmDeleteProduct=? Tem certeza que quer eliminar este produto/serviço?
-ProductDeleted=O produto/serviço "%s" foi eliminado da base de dados.
-ExportDataset_produit_1=Produtos e Serviços
-ExportDataset_service_1=Serviços
-ImportDataset_produit_1=Produtos
-ImportDataset_service_1=Serviços
-DeleteProductLine=Eliminar linha de produto
 ConfirmDeleteProductLine=Tem certeza que quer eliminar esta linha de produto?
-ProductSpecial=Especial
 QtyMin=Quantidade min
 PriceQtyMin=Preco para esta qtd min. (sem desconto)
 VATRateForSupplierProduct=Percentual ICMS (para este fornecedor/produto)
 DiscountQtyMin=Desconto padrao para qtd
-NoPriceDefinedForThisSupplier=Nenhum Preço/Quant. definido para este fornecedor/produto
-NoSupplierPriceDefinedForThisProduct=Nenhum Preço/Quant. Fornecedor definida para este produto
 PredefinedProductsToSell=Produtos pré-definidas para vender
 PredefinedServicesToSell=Serviços predefinidos para vender
 PredefinedProductsAndServicesToSell=Produtos / serviços pré-definidas para vender
@@ -127,7 +82,6 @@ PredefinedProductsToPurchase=Produto pré-definidas para compra
 PredefinedServicesToPurchase=Serviços pré-definidos para compra
 PredefinedProductsAndServicesToPurchase=Produtos / serviços predefinidos para compra.
 NotPredefinedProducts=Produtos/Serviços sem predefinição
-GenerateThumb=Gerar a etiqueta
 ServiceNb=Serviço n� %s
 ListProductServiceByPopularity=Lista de produtos/serviços por popularidade
 ListProductByPopularity=Lista de produtos por popularidade
@@ -148,32 +102,12 @@ SuppliersPrices=Fornecedor preços
 SuppliersPricesOfProductsOrServices=Fornecedor de preços (produtos ou serviços)
 CustomCode=NCM/SH
 CountryOrigin=Pais de origem
-Nature=Tipo de produto
 ShortLabel=Etiqueta curta
-Unit=Unidade
-p=u.
 set=conjunto
 se=conjunto
-second=segundo
-s=s
-hour=hora
-h=h
-day=dia
-d=d
-kilogram=quilograma
-kg=Kg
-gram=grama
-g=g
 meter=medidor
-m=m
-lm=lm
-m2=m²
-m3=m³
-liter=litro
-l=L
 ProductCodeModel=Modelo de ref. de produto
 ServiceCodeModel=Modelo de ref. de serviço
-CurrentProductPrice=Preço atual
 AlwaysUseNewPrice=Usar sempre preço atual do produto/serviço
 AlwaysUseFixedPrice=Usar preço fixo
 PriceByQuantity=Diferentes preços por quantidade
@@ -182,7 +116,6 @@ MultipriceRules=Regras de preços por segmento
 UseMultipriceRules=Usar regras de preços do segmento (definido na configuração do módulos produto) para calcular automaticamente o preço de todos os segmentos de acordo com o primeiro segmento
 PercentVariationOver=%% variação sobre %s
 PercentDiscountOver=%% disconto sobre %s
-### composition fabrication
 Build=Produzir
 ProductsMultiPrice=Produtos e preços de cada segmento
 ProductsOrServiceMultiPrice=Preços de Clientes (de produtos ou serviços, multi-preços)
@@ -221,7 +154,6 @@ PriceExpressionEditorHelp3=Em ambos produtos/serviços e fornecedores nesses pre
 PriceExpressionEditorHelp4=No preço do produto/serviço apenas: <b>#supplier_min_price#</b><br>Em apenas preços com fornecedores: <b>#supplier_quantity# e #supplier_tva_tx#</b>
 PriceExpressionEditorHelp5=Valores globais disponíveis:
 PriceMode=Modo de Preço
-PriceNumeric=Número
 DefaultPrice=Preço padrão
 ComposedProductIncDecStock=Aumento/diminuição do estoque, armazém, atual
 ComposedProduct=Sub-produto
@@ -234,9 +166,7 @@ AddUpdater=Adicionar atualizador
 GlobalVariables=As variáveis ​​globais
 VariableToUpdate=Variável para atualizar
 GlobalVariableUpdaters=Updaters variáveis ​​globais
-UpdateInterval=Intervalo de atualização (minutos)
 LastUpdated=Ultima atualização
-CorrectlyUpdated=Corretamente atualizado
 PropalMergePdfProductActualFile=Usar arquivos para adicionar em PDF Azur são / é
 PropalMergePdfProductChooseFile=Selecione os arquivos PDF
 IncludingProductWithTag=Incluindo produto/serviço com tag
@@ -255,4 +185,3 @@ VolumeUnits=Unidade de Volume
 SizeUnits=Unidade de Tamanho
 DeleteProductBuyPrice=Apagar preço de Compra
 ConfirmDeleteProductBuyPrice=Tem certeza que que deseja excluir este preço de compra?
-
diff --git a/htdocs/langs/pt_BR/projects.lang b/htdocs/langs/pt_BR/projects.lang
index 78ffb9962abbac7a3461fb60208211a4a0590d06..7674cc907189e5fa25073cd26b80539e8b7bbe24 100644
--- a/htdocs/langs/pt_BR/projects.lang
+++ b/htdocs/langs/pt_BR/projects.lang
@@ -1,12 +1,8 @@
 # Dolibarr language file - Source file is en_US - projects
-RefProject=Ref. do projeto
 ProjectRef=Ref projeto.
 ProjectId=Id do projeto
 ProjectLabel=Etiqueta projeto
-Project=Projeto
-Projects=Projetos
 ProjectsArea=Setor de projetos
-ProjectStatus=Estado do projeto
 SharedProject=A todos
 PrivateProject=Contatos do projeto
 MyProjectsDesc=Exibe apenas os projetos que você for um contato (independente do tipo).
@@ -33,7 +29,6 @@ OpenedTasks=Tarefas em andamento
 OpportunitiesStatusForOpenedProjects=Montante de oportunidades de projetos abertos de acordo com a situação
 OpportunitiesStatusForProjects=Montante de oportunidades dos projetos pela situação
 ShowProject=Mostrar projeto
-SetProject=Definir Projeto
 NoProject=Nenhum Projeto Definido
 NbOfProjects=Nº de projetos
 TimeSpent=Dispêndio de tempo
@@ -41,45 +36,27 @@ TimeSpentByYou=Tempo gasto por você
 TimeSpentByUser=Tempo gasto por usuário
 TimesSpent=Dispêndio de tempo
 RefTask=Ref. da tarefa
-LabelTask=Etiqueta de Tarefa
 TaskTimeSpent=Dispêndio de tempo com tarefas
 TaskTimeUser=Usuário
-TaskTimeNote=Nota
-TaskTimeDate=Data
 TasksOnOpenedProject=Tarefas em projetos abertos
-WorkloadNotDefined=Carga de trabalho não definida
 NewTimeSpent=Novo dispêndio de tempo
 MyTimeSpent=Meu dispêndio de tempo
-Tasks=Tarefas
-Task=Tarefa
-TaskDateStart=Data de início da tarefa
 TaskDateEnd=Data final da tarefa
-TaskDescription=Descrição da tarefa
 NewTask=Nova tarefa
 AddTask=Criar tarefa
-Activity=Atividade
 Activities=Tarefas/atividades
 MyActivities=Minhas Tarefas/Atividades
-MyProjects=Os Meus Projetos
 MyProjectsArea=Minha Área de projetos
-DurationEffective=Duração Efetiva
 ProgressDeclared=o progresso declarado
 ProgressCalculated=calculado do progresso
-Time=Tempo
-ListOfTasks=Lista de tarefas
 GoToListOfTimeConsumed=Ir para a lista de dispêndios de tempo
-GoToListOfTasks=Ir para a lista de tarefas
-ListProposalsAssociatedProject=Lista de Orçamentos Associados ao Projeto
 ListOrdersAssociatedProject=Lista de pedidos do cliente associados ao projeto
 ListInvoicesAssociatedProject=Lista de faturas do cliente associadas ao projeto
 ListPredefinedInvoicesAssociatedProject=Lista de temas das faturas associadas ao projeto
 ListSupplierOrdersAssociatedProject=Lista de pedidos do fornecedor associados ao projeto
 ListSupplierInvoicesAssociatedProject=Lista de faturas do fornecedor associadas ao projeto
-ListContractAssociatedProject=Lista de Contratos Associados ao Projeto
-ListFichinterAssociatedProject=Lista de intervenções associadas ao projeto
 ListExpenseReportsAssociatedProject=Lista de relatórios de despesas associadas ao projeto
 ListDonationsAssociatedProject=Lista de doações associados ao projeto
-ListActionsAssociatedProject=Lista de eventos associados ao projeto
 ListTaskTimeUserProject=Lista de tempo consumido nas tarefas de projecto
 ActivityOnProjectToday=Atividade no projeto hoje
 ActivityOnProjectYesterday=Atividade de ontem no projeto
@@ -88,7 +65,6 @@ ActivityOnProjectThisMonth=Atividade ao Projeto este Mês
 ActivityOnProjectThisYear=Atividade ao Projeto este Ano
 ChildOfTask=Link do projeto/tarefa
 NotOwnerOfProject=Não é responsável deste projeto privado
-AffectedTo=Atribuido a
 CantRemoveProject=Este projeto não pode ser eliminado porque está referenciado por muito objetos (facturas, pedidos e outros). ver a lista no separador referencias.
 ValidateProject=Validar projeto
 ConfirmValidateProject=Você tem certeza que deseja validar este projeto?
@@ -103,26 +79,18 @@ DeleteATimeSpent=Excluir dispêndio de tempo
 ConfirmDeleteATimeSpent=Você tem certeza que deseja excluir este tempo gasto?
 DoNotShowMyTasksOnly=Ver tambem tarefas não associadas comigo
 ShowMyTasksOnly=Visualizar apenas tarefas incumbidas a mim
-TaskRessourceLinks=Recursos
-ProjectsDedicatedToThisThirdParty=Projetos dedicados a este terceiro
 NoTasks=Não há tarefas para este projeto
 LinkedToAnotherCompany=Ligado a outros terceiros
 TaskIsNotAffectedToYou=Tarefas não incumbidas a você
 ErrorTimeSpentIsEmpty=O dispêndio de tempo está em branco
 ThisWillAlsoRemoveTasks=Esta ação também vai apagar todas as tarefas do projeto <b>(tarefas% s</b> no momento) e todas as entradas de tempo gasto.
 IfNeedToUseOhterObjectKeepEmpty=Se alguns objetos (nota fiscal, ordem, ...), pertencentes a um terceiro, deve estar vinculado ao projeto de criar, manter este vazio para que o projeto de vários fornecedores.
-CloneProject=Clonar projeto
-CloneTasks=Clonar tarefas
 CloneContacts=Copiar contatos
 CloneNotes=Copiar notas
 CloneProjectFiles=Copiar arquivos do projetos
 CloneTaskFiles=Copia(s) do(s) arquivo(s) do projeto(s) finalizado
-CloneMoveDate=Atualizar as datas do projeto/tarefas a partir de agora?
 ConfirmCloneProject=Você tem certeza que deseja clonar este projeto?
-ProjectReportDate=Alterar a data da tarefa de acordo com a data de início do projeto
 ErrorShiftTaskDate=Impossível mudar data da tarefa de acordo com a nova data de início do projeto
-ProjectsAndTasksLines=Projetos e tarefas
-ProjectCreatedInDolibarr=Projeto %s criado
 ProjectModifiedInDolibarr=Projeto %s modificado
 TaskCreatedInDolibarr=Tarefa %s criada
 TaskModifiedInDolibarr=Tarefa %s alterada
@@ -136,18 +104,12 @@ OpportunityAmountShort=Montante de oport.
 OpportunityAmountAverageShort=Montante médio de oport.
 OpportunityAmountWeigthedShort=Montante de oport. ponderadas
 WonLostExcluded=Ganho/Perda excluída
-##### Types de contacts #####
 TypeContact_project_internal_PROJECTLEADER=Chefe de projeto
 TypeContact_project_external_PROJECTLEADER=Chefe de projeto
-TypeContact_project_internal_PROJECTCONTRIBUTOR=Colaborador
-TypeContact_project_external_PROJECTCONTRIBUTOR=Colaborador
 TypeContact_project_task_internal_TASKEXECUTIVE=Tarefa executada
 TypeContact_project_task_external_TASKEXECUTIVE=Tarefa executada
-TypeContact_project_task_internal_TASKCONTRIBUTOR=Colaborador
-TypeContact_project_task_external_TASKCONTRIBUTOR=Colaborador
 SelectElement=Selecionar componente
 AddElement=Link para componente
-# Documents models
 DocumentModelBeluga=Modelo de projeto para visão geral objetos ligados
 DocumentModelBaleine=Modelo de relatório do Projeto para tarefas
 PlannedWorkload=carga horária planejada
@@ -164,7 +126,6 @@ TasksWithThisUserAsContact=As tarefas atribuídas a esse usuário
 ResourceNotAssignedToProject=Não atribuído ao projeto
 ResourceNotAssignedToTheTask=Não atribuído à tarefa
 AssignTaskToMe=Atribuir tarefa para mim
-AssignTask=Atribuir
 ProjectOverview=Visão geral
 ManageTasks=Use projetos para acompanhar tarefas e tempo
 ManageOpportunitiesStatus=Use projetos para acompanhar leads / opportinuties
@@ -184,10 +145,4 @@ OpportunityTotalAmount=Montante total de oportunidades
 OpportunityPonderatedAmount=Montante de oportunidades ponderadas
 OpportunityPonderatedAmountDesc=Montante de oportunidades ponderadas com probalidade
 OppStatusPROSP=Prospecção
-OppStatusQUAL=Qualificação
-OppStatusPROPO=Proposta
-OppStatusNEGO=Negociação
-OppStatusPENDING=Pendente
 OppStatusWON=Ganhou
-OppStatusLOST=Perdido
-Budget=Orçamento
diff --git a/htdocs/langs/pt_BR/propal.lang b/htdocs/langs/pt_BR/propal.lang
index 5f6d41cf389b258461aa0bc61bb061ba44a82372..1e451132e3873860f135e20c5cf69a9115405d89 100644
--- a/htdocs/langs/pt_BR/propal.lang
+++ b/htdocs/langs/pt_BR/propal.lang
@@ -1,57 +1,28 @@
 # Dolibarr language file - Source file is en_US - propal
-Proposals=Orçamentos
-Proposal=Orçamento
-ProposalShort=Proposta
-ProposalsDraft=Orçamentos Rascunho
 ProposalsOpened=Propostas comerciais abertas
-Prop=Orçamentos
-CommercialProposal=Orçamento
 ProposalCard=Cartao de proposta
-NewProp=Novo Orçamento
-NewPropal=Novo Orçamento
-Prospect=Cliente Potencial
-DeleteProp=Eliminar Orçamento
-ValidateProp=Confirmar Orçamento
 AddProp=Criar proposta
 ConfirmDeleteProp=Tem certeza que quer apagar esta proposta comercial?
 ConfirmValidateProp=Tem certeza que quer validar esta proposta comercial sob o nome <b>%s</b>?
 LastPropals=Últimas %s propostas
 LastModifiedProposals=Últimas %s propostas modificadas
-AllPropals=Todos Os Orçamentos
-SearchAProposal=Procurar um Orçamento
 NoProposal=Sem propostas
-ProposalsStatistics=Estatísticas de Orçamentos
-NumberOfProposalsByMonth=Número por Mês
 AmountOfProposalsByMonthHT=Valor por Mês (sem ICMS)
-NbOfProposals=Número Orçamentos
-ShowPropal=Ver Orçamento
-PropalsDraft=Rascunho
 PropalsOpened=Aberto
-PropalStatusDraft=Rascunho (a Confirmar)
-PropalStatusValidated=Validado (Orçamento Aberto)
 PropalStatusSigned=Assinado (A Faturar)
 PropalStatusNotSigned=Sem Assinar (Encerrado)
 PropalStatusBilled=Faturado
-PropalStatusDraftShort=Rascunho
 PropalStatusClosedShort=Encerrado
-PropalStatusSignedShort=Assinado
-PropalStatusNotSignedShort=Sem Assinar
 PropalStatusBilledShort=Faturado
 PropalsToClose=Orçamentos a Fechar
 PropalsToBill=Orçamentos Assinados a Faturar
-ListOfProposals=Lista de Orçamentos
 ActionsOnPropal=Ações sobre o Orçamento
-RefProposal=Ref. Orçamento
-SendPropalByMail=Enviar Orçamento por E-mail
 DatePropal=Data da Proposta
-DateEndPropal=Válido até
 ValidityDuration=Validade da proposta
 CloseAs=Configurar status para
 SetAcceptedRefused=Configurar aceito/recusado
-ErrorPropalNotFound=Orçamento %s Inexistente
 AddToDraftProposals=Adicionar a projeto de proposta
 NoDraftProposals=Não há projetos de propostas
-CopyPropalFrom=Criar orçamento por Cópia de um existente
 CreateEmptyPropal=Criar orçamento a partir da Lista de produtos predefinidos
 DefaultProposalDurationValidity=Prazo de validez por default (em dias)
 UseCustomerContactAsPropalRecipientIfExist=Utilizar endereço contato de seguimento de cliente definido em vez do endereço do Fornecedor como destinatário dos Orçamentos
@@ -63,20 +34,12 @@ ProposalLine=Linha da Proposta
 AvailabilityPeriod=Prazo de entrega
 SetAvailability=Atraso de entrega
 AfterOrder=Apos o pedido
-##### Availability #####
-AvailabilityTypeAV_NOW=Imediato
-AvailabilityTypeAV_1W=1 semana
-AvailabilityTypeAV_2W=2 semanas
-AvailabilityTypeAV_3W=3 semanas
 AvailabilityTypeAV_1M=1 mes
-##### Types de contacts #####
 TypeContact_propal_internal_SALESREPFOLL=Representante seguindo a proposta
 TypeContact_propal_external_BILLING=Contato da fatura cliente
-TypeContact_propal_external_CUSTOMER=Contato cliente seguindo a proposta 
-# Document models
-DocModelAzurDescription=Modelo de orçamento completo (logo...)
+TypeContact_propal_external_CUSTOMER=Contato cliente seguindo a proposta
 DefaultModelPropalCreate=Criaçao modelo padrao
 DefaultModelPropalToBill=Modelo padrao no fechamento da proposta comercial ( a se faturar)
 DefaultModelPropalClosed=Modelo padrao no fechamento da proposta comercial (nao faturada)
 ProposalCustomerSignature=Aceite por escrito, carimbo da empresa, data e assinatura
-ProposalsStatisticsSuppliers=Estatísticas de Propostas a Fornecedor 
+ProposalsStatisticsSuppliers=Estatísticas de Propostas a Fornecedor
diff --git a/htdocs/langs/pt_BR/receiptprinter.lang b/htdocs/langs/pt_BR/receiptprinter.lang
index d1036dfad2a9a6cb1ac8036c6f6738f436a37d69..6cff8032b5a606f30749739b4a67fd6c8af5a9ab 100644
--- a/htdocs/langs/pt_BR/receiptprinter.lang
+++ b/htdocs/langs/pt_BR/receiptprinter.lang
@@ -16,8 +16,6 @@ CONNECTOR_NETWORK_PRINT=Impressora de rede
 CONNECTOR_FILE_PRINT=Impressora local
 CONNECTOR_WINDOWS_PRINT=Impressora local do Windows
 CONNECTOR_DUMMY_HELP=Impressora Falsa para teste, não imprime nada
-CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100
-CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1
 CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@nomedocomputador/grupodetrabalho/Impressora do Recibo
 PROFILE_DEFAULT=Perfil Padrão
 PROFILE_SIMPLE=Perfil Simples
@@ -29,13 +27,10 @@ PROFILE_SIMPLE_HELP=Perfil Simples Sem Imagens
 PROFILE_EPOSTEP_HELP=Ajuda do Perfil Epos Tep
 PROFILE_P822D_HELP=Perfil P822D Sem Imagens
 PROFILE_STAR_HELP=Perfil Star
-DOL_ALIGN_LEFT=Texto alinhado à esquerda
 DOL_ALIGN_CENTER=Texto centralizado
-DOL_ALIGN_RIGHT=Texto alinhado à direita
 DOL_USE_FONT_A=Usar fonte A da impressora
 DOL_USE_FONT_B=Usar fonte B da impressora
 DOL_USE_FONT_C=Usar fonte C da impressora
-DOL_PRINT_BARCODE=Imprimir código de barras
 DOL_PRINT_BARCODE_CUSTOMER_ID=Impressão de código de barras ID de cliente
 DOL_CUT_PAPER_FULL=Cortar todo o ticket
 DOL_CUT_PAPER_PARTIAL=Cortar parcialmente o ticket
diff --git a/htdocs/langs/pt_BR/resource.lang b/htdocs/langs/pt_BR/resource.lang
index 33dfe06ba4f0add092899d7fb6cb4a215245611e..3d3af7d00280990e3d296204bfeb68f41632d188 100644
--- a/htdocs/langs/pt_BR/resource.lang
+++ b/htdocs/langs/pt_BR/resource.lang
@@ -1,31 +1,17 @@
 # Dolibarr language file - Source file is en_US - resource
-MenuResourceIndex=Recursos
-MenuResourceAdd=Novo recurso
 DeleteResource=Remover recurso
 ConfirmDeleteResourceElement=Confirmar remoção do recurso para este elemento
-NoResourceInDatabase=Nenhum recurso na base de dados
 NoResourceLinked=Nenhum recurso vinculado
-
-ResourcePageIndex=Lista de recursos
-ResourceSingular=Recurso
 ResourceCard=Cartao recursos
 AddResource=Criar recurso
-ResourceFormLabel_ref=Nome do recurso
-ResourceType=Tipo de recurso
-ResourceFormLabel_description=Descrição do recurso
-
 ResourcesLinkedToElement=Recursos vinculados ao elemento
-
 ShowResource=Mostrar recurso
-
 ResourceElementPage=Elemento recursos
 ResourceCreatedWithSuccess=Recurso criado com sucesso
 RessourceLineSuccessfullyDeleted=Linha de Recursos excluído com sucesso
 RessourceLineSuccessfullyUpdated=Linha de Recursos atualizado com sucesso
 ResourceLinkedWithSuccess=Recurso conectado com sucesso
-
 ConfirmDeleteResource=Confirme para remover este recurso
 RessourceSuccessfullyDeleted=Recurso removido com sucesso
 DictionaryResourceType=Tipo de recurso
-
 SelectResource=Selecionar recurso
diff --git a/htdocs/langs/pt_BR/salaries.lang b/htdocs/langs/pt_BR/salaries.lang
index 3d9a619d7665d8cfab7be7b6f9d899504a2a11ef..c74c6709d1fdde13fbc95e49b63a34713562a4ca 100644
--- a/htdocs/langs/pt_BR/salaries.lang
+++ b/htdocs/langs/pt_BR/salaries.lang
@@ -1,14 +1,10 @@
 # Dolibarr language file - Source file is en_US - salaries
 SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Conta da Contabilidade padrão para pagamentos de salário
 SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Conta da Contabilidade padrão para despesas pessoais
-Salary=Salário
-Salaries=Salários
 NewSalaryPayment=Novo pagamento de salário
 SalaryPayment=Pagamento de salário
 SalariesPayments=Pagamentos de salários
-ShowSalaryPayment=Mostrar pagamento de salário
 THM=Taxa média horária
 TJM=Taxa média diária
-CurrentSalary=Salário atual
 THMDescription=Este valor pode ser usado para calcular o custo do tempo consumido em um projeto inserido por usuários se o módulo de projetos é utilizado
 TJMDescription=Este valor é atualmente apenas como informação e não é utilizado para o cálculo
diff --git a/htdocs/langs/pt_BR/sendings.lang b/htdocs/langs/pt_BR/sendings.lang
index 9ed595064ddfb7b3b21083cdf8f3b63f5ec41c63..895b129808d1b7a6e7a12d0fb765b9c3860f889e 100644
--- a/htdocs/langs/pt_BR/sendings.lang
+++ b/htdocs/langs/pt_BR/sendings.lang
@@ -1,41 +1,18 @@
 # Dolibarr language file - Source file is en_US - sendings
 RefSending=Ref. Envio
-Sending=Envio
-Sendings=Envios
 AllSendings=Todos os embarques
-Shipment=Envio
-Shipments=Envios
 ShowSending=Mostrar envios
 Receivings=Recibos de entrega
 SendingsArea=Área Envios
-ListOfSendings=Lista de Envios
-SendingMethod=Método de Envio
 LastSendings=Últimas %s remessas
-StatisticsOfSendings=Estatísticas de Envios
-NbOfSendings=Número de Envios
-NumberOfShipmentsByMonth=Número de envios por mês
 SendingCard=Cartão de embarque
-NewSending=Novo Envio
-CreateASending=Criar um Envio
-QtyShipped=Quant. Enviada
-QtyToShip=Quant. a Enviar
 QtyReceived=Quant. Recibida
 KeepToShip=Permaneça para enviar
-OtherSendingsForSameOrder=Outros Envios deste Pedido
-SendingsAndReceivingForSameOrder=Envios e Recepções deste pedido
-SendingsToValidate=Envios a Confirmar
-StatusSendingCanceled=Cancelado
-StatusSendingDraft=Rascunho
 StatusSendingValidated=Validado (produtos a enviar o enviados)
-StatusSendingProcessed=Processado
-StatusSendingDraftShort=Rascunho
-StatusSendingValidatedShort=Validado
-StatusSendingProcessedShort=Processado
 SendingSheet=Folha de embarque
 ConfirmDeleteSending=Tem certeza que quer remover este envio?
 ConfirmValidateSending=Tem certeza que quer validar o envio com referencia <b>%s</b>?
 ConfirmCancelSending=Tem certeza que quer cancelar este envio?
-DocumentModelSimple=Modelo Simples
 DocumentModelMerou=Modelo A5 Merou
 WarningNoQtyLeftToSend=Atenção, nenhum produto à espera de ser enviado.
 StatsOnShipmentsOnlyValidated=Estatisticas referentes os envios , mas somente validados. Data usada e data da validacao do envio ( a data planejada da entrega nao e sempre conhecida).
@@ -54,14 +31,9 @@ ProductQtyInSuppliersShipmentAlreadyRecevied=Quantidade do produto a partir da o
 NoProductToShipFoundIntoStock=Nenhum produto para enviar encontrado em armazém <b>%s</b>. Estoque correto ou voltar para escolher outro armazém.
 WeightVolShort=Peso/Vol.
 ValidateOrderFirstBeforeShipment=Você deve primeiro, antes de fazer as remessas, confirmar o pedido.
-
-# Sending methods
-# ModelDocument
 DocumentModelTyphon=Modelo de Documento Typhon
 Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constante EXPEDITION_ADDON_NUMBER nao definida
 SumOfProductVolumes=Soma do volume dos pedidos
 SumOfProductWeights=Soma do peso dos produtos
-
-# warehouse details
-DetailWarehouseNumber= Detalhes do estoque
-DetailWarehouseFormat= W:%s (Qtd : %d)
+DetailWarehouseNumber=Detalhes do estoque
+DetailWarehouseFormat=W:%s (Qtd : %d)
diff --git a/htdocs/langs/pt_BR/sms.lang b/htdocs/langs/pt_BR/sms.lang
index 0bdcc9c113ade8010d35b35bef6b0c1c26a114a7..4cebb0588093cb4d4e531d3d03911aa1f1f56e0f 100644
--- a/htdocs/langs/pt_BR/sms.lang
+++ b/htdocs/langs/pt_BR/sms.lang
@@ -6,13 +6,7 @@ SmsCard=Chip SMS
 AllSms=Todas as campnhas SMS
 SmsTargets=Alvos
 SmsRecipients=Alvos
-SmsRecipient=Alvo
-SmsTitle=Descrição
-SmsFrom=Remetente
-SmsTo=Alvo
 SmsTopic=Topico do SMS
-SmsText=Mensagem
-SmsMessage=Mensagem SMS
 ShowSms=Mostrar SMS
 ListOfSms=Listar campanhas SMS
 NewSms=Nova campanha SMS
@@ -27,13 +21,6 @@ SmsResult=Resultado do envio SMS
 TestSms=Testar SMS
 ValidSms=Validar SMS
 ApproveSms=Aprovar SMS
-SmsStatusDraft=Rascunho
-SmsStatusValidated=Validado
-SmsStatusApproved=Aprovado
-SmsStatusSent=Enviado
-SmsStatusSentPartialy=Enviado parcialmente
-SmsStatusSentCompletely=Enviado completamente
-SmsStatusError=Erro
 SmsStatusNotSent=Nao enviado
 SmsSuccessfulySent=SMS enviado coretamente (de %s a %s)
 ErrorSmsRecipientIsEmpty=Numero de alvos vazio
@@ -42,10 +29,6 @@ ConfirmValidSms=Quer confirmar a validacao desta campanha?
 NbOfUniqueSms=Nr. de numeros telefonicos unicos
 NbOfSms=Numero de numeros telefonicos
 ThisIsATestMessage=Isto e uma mensagem de teste
-SendSms=Enviar SMS
 SmsInfoCharRemain=Nr de caracteres restantes
-SmsInfoNumero= (formato internacional ex: +33899701761)
-DelayBeforeSending=Atraso antes de enviar (minutos)
+SmsInfoNumero=(formato internacional ex: +33899701761)
 SmsNoPossibleSenderFound=Nenhum expedidor disponível. Verifique a configuração do seu provedor de SMS.
-SmsNoPossibleRecipientFound=Nenhum alvo disponível. Verifique a configuração do seu provedor de SMS.
-
diff --git a/htdocs/langs/pt_BR/stocks.lang b/htdocs/langs/pt_BR/stocks.lang
index 4ca55a40f1e61bc550396481221f6f6a56d03909..ad5bb42a98afa74f90bfc63d3d9faead3af47945 100644
--- a/htdocs/langs/pt_BR/stocks.lang
+++ b/htdocs/langs/pt_BR/stocks.lang
@@ -1,13 +1,10 @@
 # Dolibarr language file - Source file is en_US - stocks
 WarehouseCard=Ficha do armazém
 Warehouse=Armazém
-Warehouses=Armazéns
 NewWarehouse=Novo armazém / setor de armazenagem
-WarehouseEdit=Modificar armazém
 MenuNewWarehouse=Novo armazém
 WarehouseSource=Armazém de origem
 WarehouseSourceNotDefined=Nenhum armazém definido,
-AddOne=Adicionar um
 WarehouseTarget=Armazém de destino
 ValidateSending=Apagar envio
 CancelSending=Cancelar envio
@@ -22,27 +19,19 @@ ErrorWarehouseRefRequired=A referência do armazém é necessária
 ListOfWarehouses=Lista de armazéns
 ListOfStockMovements=Lista de movimentações de estoque
 StocksArea=Setor de armazenagem
-Location=Localização
-LocationSummary=Nome abreviado da localização
 NumberOfDifferentProducts=Número de produtos diferentes
 NumberOfProducts=Número total de produtos
 LastMovement=Última movimentação
 LastMovements=Últimas movimentações
-Units=Unidades
-Unit=Unidade
 StockCorrection=Corrigir estoque
 StockTransfer=Tranferencia de Estoque
 MassStockTransferShort=Transferência de estoque em massa
 StockMovement=Movimento de estoque
 StockMovements=Movimentações de estoque
 LabelMovement=Rótulo para a movimentação
-NumberOfUnit=Número de peças
 UnitPurchaseValue=Preço unitário de compra
 StockTooLow=Estoque muito baixo
 StockLowerThanLimit=Estoque mais baixo do que o limite de alerta
-EnhancedValue=Valor
-PMPValue=Valor (PMP)
-PMPValueShort=PMP
 EnhancedValueOfWarehouses=Valor de estoques
 UserWarehouseAutoCreate=Criar existencias automaticamente na criação de um usuário
 AllowAddLimitStockByWarehouse=Permitir a adição de limite e estoque desejado por produto e armazém
@@ -81,7 +70,6 @@ EstimatedStockValueSellShort=Valor para venda
 EstimatedStockValueSell=Valor para venda
 EstimatedStockValueShort=O valor das ações de entrada
 EstimatedStockValue=O valor das ações de entrada
-DeleteAWarehouse=Excluir um armazém
 ConfirmDeleteWarehouse=Tem certeza que quer remover o estoque <b>%s</b>?
 PersonalStock=Estoque Pessoal
 ThisWarehouseIsPersonalStock=Este armazenamento representa estoque pessoal de:
@@ -102,7 +90,7 @@ CurentlyUsingVirtualStock=Estoque virtual
 CurentlyUsingPhysicalStock=Estoque físico
 RuleForStockReplenishment=Regra para a reposição de estoques
 SelectProductWithNotNullQty=Selecione pelo menos um produto com um qty não nulo e um fornecedor
-AlertOnly= Alertas apenas
+AlertOnly=Alertas apenas
 WarehouseForStockDecrease=Os arquivos serão utilizados para redução estoque
 WarehouseForStockIncrease=O arquivos serão utilizados para aumento de
 ForThisWarehouse=Para este armazenamento
@@ -110,7 +98,7 @@ ReplenishmentStatusDesc=Esta é a lista de todos os produtos que esão abaixo do
 ReplenishmentOrdersDesc=Esta é a lista de todas as  Ordens de Compras abertas, incluindo produtos pré-definidos. Somente ordens com produtos pré-definidos que podem alterar o estoque, são visíveies aqui.
 Replenishments=Reabastecimentos
 NbOfProductBeforePeriod=Quantidade de produtos em estoque antes do período selecionado
-NbOfProductAfterPeriod=Quantidade de produtos em estoque período selecionado depois 
+NbOfProductAfterPeriod=Quantidade de produtos em estoque período selecionado depois
 MassMovement=Movimentações em massa
 SelectProductInAndOutWareHouse=Selecione um produto, uma quantidade, um armazém de origem e um armazém de destino e clique em "% s". Uma vez feito isso para todos os movimentos necessários, clique em "% s".
 RecordMovement=Gravar a transferência
@@ -119,13 +107,12 @@ StockMovementRecorded=Movimentações de estoque registradas
 RuleForStockAvailability=Regras sobre os requisitos de ações
 StockMustBeEnoughForInvoice=O nível de estoque deve ser suficiente para se adicionar produto/serviço à fatura (é feita uma verificação no estoque real quando da adição de uma linha na fatura sempre que a regra for a mudança automática de estoque)
 StockMustBeEnoughForOrder=O nível de estoque deve ser suficiente para se adicionar produto/serviço ao pedido (é feita uma verificação no estoque real quando da adição de uma linha no pedido sempre que a regra for a mudança automática de estoque)
-StockMustBeEnoughForShipment= O nível de estoque deve ser suficiente para se adicionar produto/serviço à remessa (é feita uma verificação no estoque real quando da adição de uma linha na remessa sempre que a regra for a mudança automática de estoque)
+StockMustBeEnoughForShipment=O nível de estoque deve ser suficiente para se adicionar produto/serviço à remessa (é feita uma verificação no estoque real quando da adição de uma linha na remessa sempre que a regra for a mudança automática de estoque)
 MovementLabel=Rótulo de movimentação
 InventoryCode=Código da movimentação ou do inventário
 IsInPackage=Contido em pacote
 WarehouseAllowNegativeTransfer=O estoque pode ser negativo
 qtyToTranferIsNotEnough=Não há estoque suficiente no armazém de origem
-ShowWarehouse=Mostrar armazém
 MovementCorrectStock=Da correção para o produto %s
 MovementTransferStock=Da transferência de produto %s em um outro armazém
 InventoryCodeShort=Código mov./inv.
diff --git a/htdocs/langs/pt_BR/suppliers.lang b/htdocs/langs/pt_BR/suppliers.lang
index e09308099dbe86e73cf1aa70cb6784d53255d1a6..53be113f8b5969b08a0121eb99b59face5612ab7 100644
--- a/htdocs/langs/pt_BR/suppliers.lang
+++ b/htdocs/langs/pt_BR/suppliers.lang
@@ -1,12 +1,6 @@
 # Dolibarr language file - Source file is en_US - suppliers
-Suppliers=Fornecedores
 SuppliersInvoice=Faturas do Fornecedor
 ShowSupplierInvoice=Mostrar Fatura de Suprimentos
-NewSupplier=Novo Fornecedor
-History=Histórico
-ListOfSuppliers=Lista de Fornecedores
-ShowSupplier=Mostrar Fornecedor
-OrderDate=Data Pedido
 BuyingPriceMin=Melhor preço de compra
 BuyingPriceMinShort=Melhor preço de compra
 TotalBuyingPriceMinShort=Total de precos de compra dos subprodutos
@@ -15,22 +9,15 @@ SomeSubProductHaveNoPrices=Algums dos sub-produtos nao tem um preco definido
 AddSupplierPrice=Adicionar preço de compra
 ChangeSupplierPrice=Modificar preço de compra
 ReferenceSupplierIsAlreadyAssociatedWithAProduct=Esta referencia de fornecedor ja esta asociada com a referenca: %s
-NoRecordedSuppliers=Sem Fornecedores Registados
-SupplierPayment=Pagamento a Fornecedor
-SuppliersArea=Área Fornecedores
-RefSupplierShort=Ref. Fornecedor
 Availability=Entrega
 ExportDataset_fournisseur_1=Faturas de Fornecedores e Linhas de Fatura
 ExportDataset_fournisseur_2=Faturas Fornecedores e Pagamentos
 ExportDataset_fournisseur_3=Ordems de fornecedor e linhas de ordem
-ApproveThisOrder=Aprovar este Pedido
 ConfirmApproveThisOrder=Tem certeza que deseja aprovar o pedido <b>%s</b>?
 DenyingThisOrder=Negar esta pedido
 ConfirmDenyingThisOrder=Você tem certeza que deseja negar este pedido <b>%s</b>?
 ConfirmCancelThisOrder=Você tem certeza que deseja cancelar este pedido <b>%s</b>?
-AddSupplierOrder=Criar Pedido a Fornecedor
 AddSupplierInvoice=Criar Fatura do Fornecedor
-ListOfSupplierProductForSupplier=Lista de produtos e preços do fornecedor <b>%s</b>
 SentToSuppliers=Enviado para fornecedores
 ListOfSupplierOrders=Lista de pedidos do fornecedor
 MenuOrdersSupplierToBill=Pedidos a se faturar do foprnecedor
diff --git a/htdocs/langs/pt_BR/trips.lang b/htdocs/langs/pt_BR/trips.lang
index bcdd035fceba88c432958b783cf261cf0d926b91..3a2032d05113a13cbfd99c1e066f09176b6afd95 100644
--- a/htdocs/langs/pt_BR/trips.lang
+++ b/htdocs/langs/pt_BR/trips.lang
@@ -1,5 +1,4 @@
 # Dolibarr language file - Source file is en_US - trips
-ExpenseReport=Relatório de despesas
 ExpenseReports=Os relatórios de despesas
 Trips=Os relatórios de despesas
 TripsAndExpenses=Relatórios de despesas
@@ -7,81 +6,48 @@ TripsAndExpensesStatistics=Estatísticas de relatórios de despesas
 TripCard=Despesa de cartão de relatório
 AddTrip=Criar relatório de despesas
 ListOfTrips=Lista de relatórios de despesas
-ListOfFees=Lista de Taxas
 ShowTrip=Mostrar relatório de despesas
-NewTrip=Novo relatório de despesas
-CompanyVisited=Empresa/Instituição Visitada
 FeesKilometersOrAmout=Quantidade de quilômetros
 DeleteTrip=Excluir relatório de despesas
 ConfirmDeleteTrip=Você tem certeza que deseja excluir este relatório de despesas?
-ListTripsAndExpenses=Lista de relatórios de despesas
 ListToApprove=Esperando aprovação
 ExpensesArea=Área de relatórios de despesas
 ClassifyRefunded=Classificar 'Rembolsado'
 ExpenseReportWaitingForApproval=Um novo relatório de despesas foi apresentada para aprovação
 ExpenseReportWaitingForApprovalMessage=Um novo relatório de despesas foi apresentado e está aguardando aprovação.\n - Usuário: %s \n - Período: %s \n Clique aqui para autenticar: %s
 TripId=Id relatório de despesas
-AnyOtherInThisListCanValidate=Pessoa para informar para validação.
 TripSociete=Informações da empresa
 TripNDF=Informações relatório de despesas
 PDFStandardExpenseReports=Template padrão para gerar um documento PDF para relatório de despesa
 ExpenseReportLine=Linha de relatório de despesas
-TF_OTHER=Outro
 TF_TRIP=Transporte
-TF_LUNCH=Alimentação
-TF_METRO=Metro
 TF_TRAIN=Trem
 TF_BUS=Ônibus
-TF_CAR=Carro
 TF_PEAGE=Pedágio
-TF_ESSENCE=Combustível
-TF_HOTEL=Hotel
-TF_TAXI=Taxi
-
 ErrorDoubleDeclaration=Você declarou outro relatório de despesas em um intervalo de datas semelhante.
 AucuneLigne=Não há relatório de despesas declaradas ainda
-
 ModePaiement=Forma de pagamento
-
 VALIDATOR=Usuário responsável pela aprovação
-VALIDOR=Aprovado por
 AUTHOR=Registrado por
 AUTHORPAIEMENT=Pago por
 REFUSEUR=Negado pelo
 CANCEL_USER=Excluída por
-
 MOTIF_REFUS=Razão
 MOTIF_CANCEL=Razão
-
 DATE_REFUS=Negar data
 DATE_SAVE=Data de validação
 DATE_CANCEL=Data de cancelamento
-DATE_PAIEMENT=Data de pagamento
-
-BROUILLONNER=Reabrir
 ValidateAndSubmit=Validar e submeter à aprovação
 ValidatedWaitingApproval=Validado (aguardando aprovação)
-
 NOT_AUTHOR=Você não é o autor deste relatório de despesas. Operação cancelada.
-
 ConfirmRefuseTrip=Você tem certeza que deseja recusar este relatório de despesas?
-
-ValideTrip=Aprovar relatório de despesas
 ConfirmValideTrip=Você tem certeza que deseja aprovar este relatório de despesas?
-
-PaidTrip=Pagar um relatório de despesas
 ConfirmPaidTrip=Você tem certeza que deseja mudar a situação deste relatório de despesas para "Pago"?
-
 ConfirmCancelTrip=Você tem certeza que deseja cancelar este relatório de despesas?
-
 BrouillonnerTrip=Voltar relatório de despesas para o status de "Rascunho"
 ConfirmBrouillonnerTrip=Você tem certeza que deseja alterar a situação deste relatório de despesas para "Rascunho"?
-
-SaveTrip=Validar relatório de despesas
 ConfirmSaveTrip=Você tem certeza que deseja validar este relatório de despesas?
-
 NoTripsToExportCSV=Nenhum relatório de despesas para exportar para este período.
 ExpenseReportPayment=Despesa de pagamento de relatório
-
 ExpenseReportsToApprove=Relatórios de despesas a confirmar
 ExpenseReportsToPay=Relatórios de despesas a pagar
diff --git a/htdocs/langs/pt_BR/users.lang b/htdocs/langs/pt_BR/users.lang
index f682cf4800af20f50c1b183ced75cef6aeb50dd1..57b1eda8352edb9f73285d24f75875ea6d749931 100644
--- a/htdocs/langs/pt_BR/users.lang
+++ b/htdocs/langs/pt_BR/users.lang
@@ -2,8 +2,6 @@
 HRMArea=área de gestão de recursos humanos
 UserCard=Ficha de usuário
 GroupCard=Ficha de grupo
-Permission=Permissão
-Permissions=Permissões
 EditPassword=Alterar senha
 SendNewPassword=Enviar nova senha
 ReinitPassword=Gerar nova senha
@@ -12,7 +10,6 @@ SubjectNewPassword=Sua nova senha para o Dolibarr
 GroupRights=Permissões do grupo
 UserRights=Permissões do usuário
 UserGUISetup=Interface do usuário
-DisableUser=Desativar
 DisableAUser=Desativar um usuário
 DeleteUser=Excluir
 DeleteAUser=Excluir um usuário
@@ -61,15 +58,11 @@ LinkedToDolibarrThirdParty=Atalho para um fornecedor do Dolibarr
 CreateDolibarrLogin=Criar uma usuário
 CreateDolibarrThirdParty=Criar um fornecedor
 LoginAccountDisableInDolibarr=A conta está desativada no Dolibarr
-UsePersonalValue=Utilizar valores personalizados
-InternalUser=Usuário Interno
 ExportDataset_user_1=Usuários e Atributos
 DomainUser=Usuário de Domínio
-Reactivate=Reativar
 CreateInternalUserDesc=Este formulario permite criar um usuario interno a sua compania/fundação. Para criar um usuario externo (cliente, fornecedor, ...), use o botão 'Criar usuario Dolibarr' da ficha de contatos dos terceiro..
 InternalExternalDesc=Um usuário <b>interno</b> é um usuário que pertence à sua Empresa/Instituição.<br>Um usuário <b>externo</b> é um usuário cliente, fornecedor ou outro.<br><br>Nos 2 casos, as permissões de Usuários definem os direitos de acesso, mas o usuário externo pode além disso ter  um gerente de menus diferente do usuário interno (ver Inicio - configuração - visualização)
 PermissionInheritedFromAGroup=A permissão dá-se já que o herda de um grupo ao qual pertence o usuário.
-Inherited=Herdado
 UserWillBeInternalUser=Usuario criado sera um usuario interno (porque nao esta conectado a um particular terceiro)
 UserWillBeExternalUser=Usuario criado sera um usuario externo (porque esta conectado a um particular terceiro)
 IdPhoneCaller=ID chamador (telefone)
@@ -79,7 +72,6 @@ EventUserModified=Usuário %s Modificado
 UserDisabled=Usuário %s Desativado
 UserEnabled=Usuário %s Ativado
 UserDeleted=Usuário %s Eliminado
-NewGroupCreated=Grupo %s Criado
 GroupModified=Grupo %s Alterado
 GroupDeleted=Grupo %s Eliminado
 ConfirmCreateContact=Tem certeza de que deseja criar uma conta Dolibarr para este contato?
@@ -89,14 +81,12 @@ LoginToCreate=Login a Criar
 NameToCreate=Nome do Fornecedor a Criar
 YourRole=Suas funções
 YourQuotaOfUsersIsReached=Sua cota de usuarios ativos atingida !
-NbOfUsers=N. de usuarios 
+NbOfUsers=N. de usuarios
 DontDowngradeSuperAdmin=Somente um Super Administrador pode rebaixar um Super Administrador
-HierarchicalResponsible=Supervisor
 HierarchicView=Visão hierárquica
 UseTypeFieldToChange=Use campo Tipo para mudar
 OpenIDURL=URL do OpenID
 LoginUsingOpenID=Usar o OpenID para efetuar o login
-WeeklyHours=Horas semanais
 ColorUser=Cor do usuario
 DisabledInMonoUserMode=Desativado no modo de manutenção
 UserAccountancyCode=Código de contabilidade do usuário
diff --git a/htdocs/langs/pt_BR/website.lang b/htdocs/langs/pt_BR/website.lang
index 04e212a3217422cf8af0c3eb5cc9a9afd7c3abea..f474d2017ececd3d41bcc12a1c6f24675f8dc040 100644
--- a/htdocs/langs/pt_BR/website.lang
+++ b/htdocs/langs/pt_BR/website.lang
@@ -1,5 +1,4 @@
 # Dolibarr language file - Source file is en_US - website
-Shortname=Código
 WebsiteSetupDesc=Crie aqui o numero de entradas ao website que você precisa. Depois entre no menu websites para editá-las.
 DeleteWebsite=Apagar website
 ConfirmDeleteWebsite=Você tem certeza que deseja apagar este web site. Todas as páginas e conteúdos serão removidos.
@@ -8,16 +7,12 @@ WEBSITE_CSS_URL=URL do arquivo CSS externo.
 WEBSITE_CSS_INLINE=Conteúdo CSS
 MediaFiles=Biblioteca de mídias
 EditCss=Editar Estilos/CSS
-EditMenu=Editar Menu
 EditPageMeta=Editar Meta
-EditPageContent=Editar Conteúdo
 Website=Web Site
 Webpage=Página na web
-AddPage=Adicionar página
 PreviewOfSiteNotYetAvailable=A Pré-visualização do seu website <strong>%s</strong> ainda não está disponível. Primeiro você deverá adicionar uma página.
 RequestedPageHasNoContentYet=A página com id %s ainda não está disponível ou o arquivo .tpl.php em cache foi removido. Edite o conteúdo da página para resolver isso.
 PageDeleted=Página '%s' do website %s foi deletada
-PageAdded=Página '%s' adicionada
 ViewSiteInNewTab=Visualizar site numa nova aba
 ViewPageInNewTab=Visualizar página numa nova aba
 SetAsHomePage=Definir com Página Inicial
diff --git a/htdocs/langs/pt_BR/withdrawals.lang b/htdocs/langs/pt_BR/withdrawals.lang
index 8c1b2cd9ece921ca04adbf4609c30014ee8f5c8e..0da54b70f29a3f2fdecbccbe5695b2393db9d7e8 100644
--- a/htdocs/langs/pt_BR/withdrawals.lang
+++ b/htdocs/langs/pt_BR/withdrawals.lang
@@ -1,8 +1,6 @@
 # Dolibarr language file - Source file is en_US - withdrawals
 CustomersStandingOrdersArea=Área de pagamento dos pedidos com Débito direto
 SuppliersStandingOrdersArea=Área dos pedidos com pagamento por Crédito direto
-StandingOrders=Pagamento dos pedidos com Débito direto
-StandingOrder=Pedido com pagamento em Débito direto
 NewStandingOrder=Novo pedido para Débito direto
 StandingOrderToProcess=A Processar
 WithdrawalsReceipts=Pedidos com Débito direto
@@ -15,11 +13,9 @@ NotPossibleForThisStatusOfWithdrawReceiptORLine=Ainda não é possível. Retirar
 NbOfInvoiceToWithdraw=Nº da fatura com pedido por Débito direto
 NbOfInvoiceToWithdrawWithInfo=Nº da fatura do cliente com pedidos para pagamento por Débito direto com informação bancária definida
 InvoiceWaitingWithdraw=Fatura aguardando o Débito direto
-AmountToWithdraw=Quantidade a Levantar
 WithdrawsRefused=Débito direto recusado
 NoInvoiceToWithdraw=Nenhuma fatura a cliente com modo de pagamento 'Débito Directo' em espera. Ir ao separador 'Débito Directo' na ficha da fatura para fazer um pedido.
 ResponsibleUser=Usuário Responsável dos Débitos Diretos
-WithdrawalsSetup=Configuração do pagamento por Débito direto
 WithdrawStatistics=Estatísticas do pagamento por Débito direto
 WithdrawRejectStatistics=Estatísticas de recusa do pagamento por Débito direto
 LastWithdrawalReceipt=Últimos %s recibos de Débito direto
@@ -30,19 +26,14 @@ ClassCredited=Classificar Acreditados
 ClassCreditedConfirm=Você tem certeza que querer marcar este pagamento como realizado em a sua conta bancaria?
 TransData=Data da transferência
 TransMetod=Método de transferência
-Send=Enviar
-Lines=Linhas
 StandingOrderReject=Emitir uma recusa
 WithdrawalRefused=Retirada recusada
 WithdrawalRefusedConfirm=Você tem certeza que quer entrar com uma rejeição de retirada para a sociedade
-RefusedData=Data de rejeição
-RefusedReason=Motivo da rejeição
 RefusedInvoicing=Cobrança da rejeição
 NoInvoiceRefused=Não carregue a rejeição
 InvoiceRefused=Fatura recusada (Verificar a rejeição junto ao cliente)
 StatusWaiting=Aguardando
 StatusTrans=Enviado
-StatusCredited=Creditado
 StatusRefused=Negado
 StatusMotif0=Não especificado
 StatusMotif1=Saldo insuficiente
@@ -50,18 +41,13 @@ StatusMotif2=Solicitação contestada
 StatusMotif3=Nenhum pedido para pagamento por Débito direto
 StatusMotif4=Pedido do Cliente
 StatusMotif5=RIB inutilizável
-StatusMotif6=Conta sem saldo
-StatusMotif7=Decisão Judicial
 StatusMotif8=Outras razões
 CreateAll=Retirar tudo
 CreateGuichet=Apenas do escritório
-CreateBanque=Apenas banco
 OrderWaiting=Aguardando resolução
 NotifyTransmision=Retirada de Transmissão
 NotifyCredit=Revogação de crédito
 NumeroNationalEmetter=Nacional Número Transmissor
-WithBankUsingRIB=Para contas bancárias usando RIB
-WithBankUsingBANBIC=Para contas bancárias usando IBAN / BIC / SWIFT
 BankToReceiveWithdraw=Conta bancária para receber o Débito direto
 CreditDate=A crédito
 WithdrawalFileNotCapable=Não foi possível gerar arquivos recibo retirada para o seu país %s (O seu país não é suportado)
@@ -72,7 +58,6 @@ WithdrawalFile=Arquivo Retirada
 SetToStatusSent=Defina o status "arquivo enviado"
 ThisWillAlsoAddPaymentOnInvoice=Isto também se aplica aos pagamentos de faturas e classificá-los como "Paid"
 StatisticsByLineStatus=Estatísticas por situação de linhas
-RUM=UMR
 RUMLong=Unique Mandate Reference (Referência Única de Mandato)
 RUMWillBeGenerated=Número UMR a ser gerado uma vez salva a informação da conta bancária
 WithdrawMode=Modo de Débito direto (FRST ou RECUR)
@@ -92,8 +77,6 @@ SEPAFrstOrRecur=Tipo de pagamento
 ModeRECUR=Pagamento recorrente
 ModeFRST=Pagamento único
 PleaseCheckOne=Favor marcar apenas um
-
-### Notifications
 InfoCreditSubject=Pagamento do pedido com pagamento por Débito direto %s pelo banco
 InfoCreditMessage=O pagamento do pedido por Débito direto %s foi feito pelo banco.<br>Dados do pagamento: %s
 InfoTransSubject=Transmissão do pedido com pagamento por Débito direto %s para o banco
diff --git a/htdocs/langs/ru_UA/banks.lang b/htdocs/langs/ru_UA/banks.lang
index 26c1ff35d5965619da52a8d8d3dc8131d5fcf355..4273d5d84ec06068a4a0b92f2dbb6624a475e010 100644
--- a/htdocs/langs/ru_UA/banks.lang
+++ b/htdocs/langs/ru_UA/banks.lang
@@ -11,7 +11,6 @@ AccountStatementShort=Заявление
 AccountStatements=Выписки по счету
 BankAccountOwnerAddress=Адрес Владелец счета
 CreateAccount=Создать учетную запись
-NewAccount=Новый
 LabelBankCashAccount=Банк или наличными этикетке
 AccountType=Тип счета
 BankType1=Текущие или кредитной карты
diff --git a/htdocs/langs/ru_UA/install.lang b/htdocs/langs/ru_UA/install.lang
index 0a8bf92a00d3bdf32b3d90927df6990b6b4f91b5..586cc57734d7c94578c643f403aa3b985add9992 100644
--- a/htdocs/langs/ru_UA/install.lang
+++ b/htdocs/langs/ru_UA/install.lang
@@ -37,7 +37,6 @@ PasswordAgain=Введите пароль еще раз во второй раз
 CheckToCreateUser=Флажок, если владелец базы данных не существует, и должен быть создан. <br> В этом случае, вы должны выбрать его Логин и пароль, а также заполнить Логин / пароль для суперпользователя в нижней части этой страницы. Если этот флажок не установлен, владелец базы данных и ее пароли должны существует.
 DatabaseRootLoginDescription=Войти на пользователя позволили создать новые базы данных или новых пользователей, бесполезны, если ваша база данных и база данных Войти уже существует (например, когда вы организовано провайдера веб-хостинг).
 ServerConnection=Соединение с сервером
-UserCreation=Пользователь создания
 AdminAccountCreation=Администратор Войти создания
 PleaseTypePassword=Пожалуйста, введите пароль, пустые пароли не допускается!
 PleaseTypeALogin=Пожалуйста, введите Войти!
diff --git a/htdocs/langs/ru_UA/other.lang b/htdocs/langs/ru_UA/other.lang
index 67dab62c7cf93a940d617eef5cbe306e7336136f..7cb48758942920aca9fe72a1e6a66aa165ecc471 100644
--- a/htdocs/langs/ru_UA/other.lang
+++ b/htdocs/langs/ru_UA/other.lang
@@ -58,13 +58,6 @@ ResizeDesc=Введите новое значение ширины <b>или</b>
 NewLength=Новые ширина
 NewHeight=Новая высота
 NewSizeAfterCropping=Новый размер после обрезки
-PropalClosedSignedInDolibarr=Предложение %s подписан в Dolibarr
-PropalClosedRefusedInDolibarr=Предложение %s отказано в Dolibarr
-PropalValidatedInDolibarr=Предложение %s подтверждены в Dolibarr
-InvoiceValidatedInDolibarr=Счет %s подтверждены в Dolibarr
-InvoicePaidInDolibarr=Счет %s изменено на выплачиваются в Dolibarr
-InvoiceCanceledInDolibarr=Счет %s отменен в Dolibarr
-MemberValidatedInDolibarr=Член %s подтверждены в Dolibarr
 LibraryUsed=Librairy использоваться
 LibraryVersion=Версия
 ExportableDatas=Экспортные данные
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index d20cbdb15669a1feddc76aba1c2d36acc8443d34..12ed77dd36efe9b4baf761e2bf37b21c611c55e1 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -1040,7 +1040,16 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs
         $ext='version='.urlencode(DOL_VERSION);
         if (GETPOST('version')) $ext='version='.GETPOST('version','int');	// usefull to force no cache on css/js
         if (GETPOST('testmenuhider') || ! empty($conf->global->MAIN_TESTMENUHIDER)) $ext='testmenuhider='.GETPOST('testmenuhider','int');
-
+        
+        $themeparam='?lang='.$langs->defaultlang.'&amp;theme='.$conf->theme.(GETPOST('optioncss')?'&amp;optioncss='.GETPOST('optioncss','alpha',1):'').'&amp;userid='.$user->id.'&amp;entity='.$conf->entity;
+        $themeparam.=($ext?'&amp;'.$ext:'');
+        if (! empty($_SESSION['dol_resetcache'])) $themeparam.='&amp;dol_resetcache='.$_SESSION['dol_resetcache'];
+        if (GETPOST('dol_hide_topmenu'))           { $themeparam.='&amp;dol_hide_topmenu='.GETPOST('dol_hide_topmenu','int'); }
+        if (GETPOST('dol_hide_leftmenu'))          { $themeparam.='&amp;dol_hide_leftmenu='.GETPOST('dol_hide_leftmenu','int'); }
+        if (GETPOST('dol_optimize_smallscreen'))   { $themeparam.='&amp;dol_optimize_smallscreen='.GETPOST('dol_optimize_smallscreen','int'); }
+        if (GETPOST('dol_no_mouse_hover'))         { $themeparam.='&amp;dol_no_mouse_hover='.GETPOST('dol_no_mouse_hover','int'); }
+        if (GETPOST('dol_use_jmobile'))            { $themeparam.='&amp;dol_use_jmobile='.GETPOST('dol_use_jmobile','int'); $conf->dol_use_jmobile=GETPOST('dol_use_jmobile','int'); }
+        
         if (! defined('DISABLE_JQUERY') && ! $disablejs && $conf->use_javascript_ajax)
         {
             print '<!-- Includes CSS for JQuery (Ajax library) -->'."\n";
@@ -1070,7 +1079,11 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs
             // jQuery jMobile
             if (! $disablejmobile && (! empty($conf->global->MAIN_USE_JQUERY_JMOBILE) || defined('REQUIRE_JQUERY_JMOBILE') || ! empty($conf->dol_use_jmobile)))
             {
-            	print '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/includes/jquery/plugins/mobile/jquery.mobile-latest.min.css'.($ext?'?'.$ext:'').'">'."\n";
+                $tmp=basename($_SERVER["PHP_SELF"]);
+                if ($tmp == 'get_menudiv.php' || $conf->dol_use_jmobile == 4)
+                {
+            	   print '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/includes/jquery/plugins/mobile/jquery.mobile-latest.min.css'.($ext?'?'.$ext:'').'">'."\n";
+                }
             }
         }
 
@@ -1091,14 +1104,6 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs
 	        	}
 	        }
         }
-        $themeparam='?lang='.$langs->defaultlang.'&amp;theme='.$conf->theme.(GETPOST('optioncss')?'&amp;optioncss='.GETPOST('optioncss','alpha',1):'').'&amp;userid='.$user->id.'&amp;entity='.$conf->entity;
-        $themeparam.=($ext?'&amp;'.$ext:'');
-        if (! empty($_SESSION['dol_resetcache'])) $themeparam.='&amp;dol_resetcache='.$_SESSION['dol_resetcache'];
-        if (GETPOST('dol_hide_topmenu'))           { $themeparam.='&amp;dol_hide_topmenu='.GETPOST('dol_hide_topmenu','int'); }
-        if (GETPOST('dol_hide_leftmenu'))          { $themeparam.='&amp;dol_hide_leftmenu='.GETPOST('dol_hide_leftmenu','int'); }
-        if (GETPOST('dol_optimize_smallscreen'))   { $themeparam.='&amp;dol_optimize_smallscreen='.GETPOST('dol_optimize_smallscreen','int'); }
-        if (GETPOST('dol_no_mouse_hover'))         { $themeparam.='&amp;dol_no_mouse_hover='.GETPOST('dol_no_mouse_hover','int'); }
-        if (GETPOST('dol_use_jmobile'))            { $themeparam.='&amp;dol_use_jmobile='.GETPOST('dol_use_jmobile','int'); $conf->dol_use_jmobile=GETPOST('dol_use_jmobile','int'); }
         //print 'themepath='.$themepath.' themeparam='.$themeparam;exit;
         print '<link rel="stylesheet" type="text/css" href="'.$themepath.$themeparam.'">'."\n";
 	    if (! empty($conf->global->MAIN_FIX_FLASH_ON_CHROME)) print '<!-- Includes CSS that does not exists as workaround of flash bug of chrome -->'."\n".'<link rel="stylesheet" type="text/css" href="filethatdoesnotexiststosolvechromeflashbug">'."\n";
@@ -1244,32 +1249,36 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs
             	// We must force not using ajax because cache of jquery does not load js of other pages.
             	// This also increase seriously speed onto mobile device where complex js code is very slow and memory very low.
             	// Note: dol_use_jmobile=1 use jmobile without ajax, dol_use_jmobile=2 use jmobile with ajax
-            	if (empty($conf->dol_use_jmobile) || ($conf->dol_use_jmobile != 2 && $conf->dol_use_jmobile != 3))
-            	{
-            		print '<script type="text/javascript">
-	            		$(document).bind("mobileinit", function() {
-            		    ';
-            		if ($conf->theme == 'md')
-            		{
-                		print '
-                		    /* Disabled decoration for some css */
-                		    $.mobile.keepNative = \'input[type="submit"]\';                        /* jQuery Mobile 1.4 and higher */
-                		    $.mobile.page.prototype.options.keepNative = \'input[type="submit"]\'; /* jQuery Mobile 1.4 and lower */
-                		   ';
-            		}
-                    print '
-               				$.extend(  $.mobile , {
-               					autoInitializePage : true,	/* We need this to run jmobile */
-               					/* loadingMessage : \'xxxxx\', */
-               					touchOverflowEnabled : true,
-               					defaultPageTransition : \'none\',
-               					defaultDialogTransition : \'none\',
-               					ajaxEnabled : false			/* old param was ajaxFormsEnabled and ajaxLinksEnabled */
-               					});
-           				});
-            			</script>';
-            	}
-            	if (empty($conf->dol_use_jmobile) || $conf->dol_use_jmobile != 3) print '<script type="text/javascript" src="'.DOL_URL_ROOT.'/includes/jquery/plugins/mobile/jquery.mobile-latest.min.js'.($ext?'?'.$ext:'').'"></script>'."\n";
+            	// 3=???
+            	// 4=all pages, not only menu
+                $tmp=basename($_SERVER["PHP_SELF"]);
+                if ($tmp == 'get_menudiv.php' || $conf->dol_use_jmobile == 4)
+                {
+                    if (empty($conf->dol_use_jmobile) || ($conf->dol_use_jmobile != 2 && $conf->dol_use_jmobile != 3))
+                	{
+                		print '<script type="text/javascript">
+    	            		$(document).bind("mobileinit", function() {
+                		    ';
+                		if ($conf->theme == 'md')
+                		{
+                   		    // Disabled decoration for some css
+                    		print '
+                    		    $.mobile.keepNative = \'input[type="submit"]\';
+                    		   ';
+                		}
+                        print '
+                   				$.extend(  $.mobile , {
+                   					autoInitializePage : true,
+                   					touchOverflowEnabled : true,
+                   					defaultPageTransition : \'none\',
+                   					defaultDialogTransition : \'none\',
+                   					ajaxEnabled : false
+                   					});
+               				});
+                			</script>';
+                	}
+                	if (empty($conf->dol_use_jmobile) || $conf->dol_use_jmobile != 3) print '<script type="text/javascript" src="'.DOL_URL_ROOT.'/includes/jquery/plugins/mobile/jquery.mobile-latest.min.js'.($ext?'?'.$ext:'').'"></script>'."\n";
+                }
             }
         }
 
@@ -1878,7 +1887,7 @@ if (! function_exists("llxFooter"))
                 print '<div class="error">'.$msg.'</div>';
             }
 
-            define("MAIN_CORE_ERROR",0);
+            //define("MAIN_CORE_ERROR",0);      // Constant was defined and we can't change value of a constant
         }
 
         print "\n\n";
@@ -1898,7 +1907,7 @@ if (! function_exists("llxFooter"))
         if (! empty($delayedhtmlcontent)) print $delayedhtmlcontent;
 
 		// Wrapper to show tooltips
-        if ($conf->use_javascript_ajax)
+        if (! empty($conf->use_javascript_ajax) && empty($conf->dol_no_mouse_hover))
         {
     		print "\n<!-- JS CODE TO ENABLE tipTip on all object with class classfortooltip -->\n";
     		print '<script type="text/javascript">
diff --git a/htdocs/product/card.php b/htdocs/product/card.php
index 0a493ef60bc0a8f29e6ece502865094fbf84930a..b4a3f8ab420a413cf7fb21a20b5bb6d1bea38f6d 100644
--- a/htdocs/product/card.php
+++ b/htdocs/product/card.php
@@ -636,7 +636,7 @@ if (empty($reshook))
                         $pu_ht = price($prodcustprice->lines [0]->price);
                         $pu_ttc = price($prodcustprice->lines [0]->price_ttc);
                         $price_base_type = $prodcustprice->lines [0]->price_base_type;
-                        $prod->tva_tx = $prodcustprice->lines [0]->tva_tx;
+                        $tva_tx = $prodcustprice->lines [0]->tva_tx;
                     }
                 }
             }
diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php
index 7e3f337ed3b6f5a458d8b15285cb5c02696eedaa..56a00b2419d939e88124bac8c33728f44d1211a5 100644
--- a/htdocs/product/class/product.class.php
+++ b/htdocs/product/class/product.class.php
@@ -1986,6 +1986,30 @@ class Product extends CommonObject
 			$this->stats_commande['nb']=$obj->nb;
 			$this->stats_commande['rows']=$obj->nb_rows;
 			$this->stats_commande['qty']=$obj->qty?$obj->qty:0;
+
+			// if it's a virtual product, maybe it is in order by extension		
+			if (! empty($conf->global->ORDER_ADD_ORDERS_WITH_PARENT_PROD_IF_INCDEC))
+			{	
+				$TFather = $this->getFather();
+				if (is_array($TFather) && !empty($TFather)) {
+					foreach($TFather as &$fatherData) {
+						$pFather = new Product($this->db);
+						$pFather->id = $fatherData['id'];  
+						$qtyCoef = $fatherData['qty'];
+	
+						if ($fatherData['incdec']) {
+							$pFather->load_stats_commande($socid, $filtrestatut);
+							
+							$this->stats_commande['customers']+=$pFather->stats_commande['customers'];
+							$this->stats_commande['nb']+=$pFather->stats_commande['nb'];
+							$this->stats_commande['rows']+=$pFather->stats_commande['rows'];
+							$this->stats_commande['qty']+=$pFather->stats_commande['qty'] * $qtyCoef;
+							
+						}
+					}
+				}
+			}
+						
 			return 1;
 		}
 		else
@@ -3159,17 +3183,21 @@ class Product extends CommonObject
         if (! empty($this->label))
             $label .= '<br><b>' . $langs->trans('ProductLabel') . ':</b> ' . $this->label;
 
-        $tmptext='';
-		if ($this->weight)  $tmptext.="<br><b>".$langs->trans("Weight").'</b>: '.$this->weight.' '.measuring_units_string($this->weight_units,"weight");
-		if ($this->length)  $tmptext.="<br><b>".$langs->trans("Length").'</b>: '.$this->length.' '.measuring_units_string($this->length_units,'length');
-		if ($this->surface) $tmptext.="<br><b>".$langs->trans("Surface").'</b>: '.$this->surface.' '.measuring_units_string($this->surface_units,'surface');
-		if ($this->volume)  $tmptext.="<br><b>".$langs->trans("Volume").'</b>: '.$this->volume.' '.measuring_units_string($this->volume_units,'volume');
-        if ($tmptext) $label .= $tmptext;
-        if (! empty($conf->productbatch->enabled))
+        if ($this->type == Product::TYPE_PRODUCT)
+        {
+            if ($this->weight)  $label.="<br><b>".$langs->trans("Weight").'</b>: '.$this->weight.' '.measuring_units_string($this->weight_units,"weight");
+    		if ($this->length)  $label.="<br><b>".$langs->trans("Length").'</b>: '.$this->length.' '.measuring_units_string($this->length_units,'length');
+    		if ($this->surface) $label.="<br><b>".$langs->trans("Surface").'</b>: '.$this->surface.' '.measuring_units_string($this->surface_units,'surface');
+    		if ($this->volume)  $label.="<br><b>".$langs->trans("Volume").'</b>: '.$this->volume.' '.measuring_units_string($this->volume_units,'volume');
+            if (! empty($conf->productbatch->enabled))
+            {
+                $label.="<br><b>".$langs->trans("ManageLotSerial").'</b>: '.$this->getLibStatut(0,2);
+            }
+        }
+        if ($this->type == Product::TYPE_SERVICE)
         {
-            $tmptext.="<br><b>".$langs->trans("ManageLotSerial").'</b>: '.$this->getLibStatut(0,2);
+            //
         }
-        $label.=$tmptext;
         if (! empty($this->entity)) $label .= '<br>' . $this->show_photos($conf->product->multidir_output[$this->entity],1,1,0,0,0,80);
 
         
diff --git a/htdocs/product/stock/tpl/stockcorrection.tpl.php b/htdocs/product/stock/tpl/stockcorrection.tpl.php
index 9277de5b49805aa793be8ae4550c6d0478a57433..0b48be2b0d5f38ac0bdd020b6c3ae22034f3c319 100644
--- a/htdocs/product/stock/tpl/stockcorrection.tpl.php
+++ b/htdocs/product/stock/tpl/stockcorrection.tpl.php
@@ -110,7 +110,7 @@
 		print '<td colspan="2">';
 		print '<input type="text" name="label" size="60" value="'.$valformovementlabel.'">';
 		print '</td>';
-		print '<td width="20%">'.$langs->trans("InventoryCode").'</td><td width="20%"><input class="flat" name="inventorycode" id="inventorycode" size="14" value="'.GETPOST("inventorycode").'"></td>';
+		print '<td width="20%">'.$langs->trans("InventoryCode").'</td><td width="20%"><input class="flat maxwidth100onsmartphone" name="inventorycode" id="inventorycode" value="'.GETPOST("inventorycode").'"></td>';
 		print '</tr>';
 
 		print '</table>';
diff --git a/htdocs/product/stock/tpl/stocktransfer.tpl.php b/htdocs/product/stock/tpl/stocktransfer.tpl.php
index 98fe80f7c90a0c8c8ed187915c0a139a98c44ddd..dfddd1e19f1edc1eba75588f5501d80bc039ee12 100644
--- a/htdocs/product/stock/tpl/stocktransfer.tpl.php
+++ b/htdocs/product/stock/tpl/stocktransfer.tpl.php
@@ -117,7 +117,7 @@
 		print '<td colspan="3">';
 		print '<input type="text" name="label" size="60" value="'.dol_escape_htmltag($valformovementlabel).'">';
 		print '</td>';
-		print '<td width="20%">'.$langs->trans("InventoryCode").'</td><td width="20%"><input class="flat" name="inventorycode" id="inventorycode" size="14" value="'.(GETPOST("inventorycode")?GETPOST("inventorycode",'alpha'):dol_print_date(dol_now(),'%y%m%d%H%M%S')).'"></td>';
+		print '<td width="20%">'.$langs->trans("InventoryCode").'</td><td width="20%"><input class="flat maxwidth100onsmartphone" name="inventorycode" id="inventorycode" value="'.(GETPOST("inventorycode")?GETPOST("inventorycode",'alpha'):dol_print_date(dol_now(),'%y%m%d%H%M%S')).'"></td>';
 		print '</tr>';
 
 		print '</table>';
diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php
index f4c5d871fc6c26ccea0571208e706093bbbc487c..5e639f6c92003b423dd53b18385847fd36087f46 100644
--- a/htdocs/projet/card.php
+++ b/htdocs/projet/card.php
@@ -698,7 +698,7 @@ else
 
         // Label
         print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td>';
-        print '<td><input size="80" name="title" value="'.$object->title.'"></td></tr>';
+        print '<td><input class="quatrevingtpercent" name="title" value="'.$object->title.'"></td></tr>';
 
         // Thirdparty
         if ($conf->societe->enabled)
@@ -752,7 +752,7 @@ else
         // Date start
         print '<tr><td>'.$langs->trans("DateStart").'</td><td>';
         print $form->select_date($object->date_start?$object->date_start:-1,'projectstart',0,0,0,'',1,0,1);
-        print ' &nbsp; &nbsp; <input type="checkbox" name="reportdate" value="yes" ';
+        print ' &nbsp; &nbsp; <input type="checkbox" class="valignmiddle" name="reportdate" value="yes" ';
         if ($comefromclone){print ' checked ';}
 		print '/> '. $langs->trans("ProjectReportDate");
         print '</td></tr>';
@@ -829,33 +829,12 @@ else
 
         print '<table class="border" width="100%">';
 
-        // Ref
-        /*
-        print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>';
-        print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref');
-        print '</td></tr>';
-        */
-
-        // Label
-        //print '<tr><td>'.$langs->trans("Label").'</td><td>'.$object->title.'</td></tr>';
-
-        // Third party
-        /*
-        print '<tr><td class="titlefield">'.$langs->trans("ThirdParty").'</td><td>';
-        if ($object->thirdparty->id > 0) print $object->thirdparty->getNomUrl(1, 'project');
-        else print'&nbsp;';
-        print '</td></tr>';
-        */
-
         // Visibility
         print '<tr><td class="titlefield">'.$langs->trans("Visibility").'</td><td>';
         if ($object->public) print $langs->trans('SharedProject');
         else print $langs->trans('PrivateProject');
         print '</td></tr>';
 
-        // Statut
-        //print '<tr><td>'.$langs->trans("Status").'</td><td>'.$object->getLibStatut(4).'</td></tr>';
-
     	if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES))
 	    {
 	        // Opportunity status
@@ -879,7 +858,11 @@ else
         print '<tr><td>'.$langs->trans("DateStart").' - '.$langs->trans("DateEnd").'</td><td>';
         print dol_print_date($object->date_start,'day');
         $end=dol_print_date($object->date_end,'day');
-        if ($end) print ' - '.$end;
+        if ($end) 
+        {
+            print ' - '.$end;
+            if ($object->hasDelay()) print img_warning($langs->trans('Late'));
+        }
         print '</td></tr>';
     	     
         // Budget
diff --git a/htdocs/projet/class/api_projects.class.php b/htdocs/projet/class/api_projects.class.php
new file mode 100644
index 0000000000000000000000000000000000000000..74650407f8728ad54d49bd923010321bdca251ba
--- /dev/null
+++ b/htdocs/projet/class/api_projects.class.php
@@ -0,0 +1,568 @@
+<?php
+/* Copyright (C) 2015   Jean-François Ferry     <jfefe@aternatik.fr>
+ * Copyright (C) 2016	Laurent Destailleur		<eldy@users.sourceforge.net>
+ *
+ * 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
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ use Luracast\Restler\RestException;
+
+ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
+ 
+/**
+ * API class for projects
+ *
+ * @access protected
+ * @class  DolibarrApiAccess {@requires user,external}
+ */
+class Projects extends DolibarrApi
+{
+
+    /**
+     * @var array   $FIELDS     Mandatory fields, checked when create and update object
+     */
+    static $FIELDS = array(
+        'ref',
+        'title'
+    );
+
+    /**
+     * @var Project $project {@type Project}
+     */
+    public $project;
+
+    /**
+     * Constructor
+     */
+    function __construct()
+    {
+		global $db, $conf;
+		$this->db = $db;
+        $this->project = new Project($this->db);
+    }
+
+    /**
+     * Get properties of a project object
+     *
+     * Return an array with project informations
+     *
+     * @param       int         $id         ID of project
+     * @return 	array|mixed data without useless information
+	 *
+     * @throws 	RestException
+     */
+    function get($id)
+    {
+		if(! DolibarrApiAccess::$user->rights->projet->lire) {
+			throw new RestException(401);
+		}
+
+        $result = $this->project->fetch($id);
+        if( ! $result ) {
+            throw new RestException(404, 'Project not found');
+        }
+
+		if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) {
+			throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
+		}
+
+        $this->project->fetchObjectLinked();
+		return $this->_cleanObjectDatas($this->project);
+    }
+
+    
+   
+    /**
+     * List projects
+     *
+     * Get a list of projects
+     *
+     * @param string	       $sortfield	        Sort field
+     * @param string	       $sortorder	        Sort order
+     * @param int		       $limit		        Limit for list
+     * @param int		       $page		        Page number
+     * @param string   	       $thirdparty_ids	    Thirdparty ids to filter projects of. {@example '1' or '1,2,3'} {@pattern /^[0-9,]*$/i}
+     * @param string           $sqlfilters          Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')"
+     * @return  array                               Array of project objects
+     */
+    function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $thirdparty_ids = '', $sqlfilters = '') {
+        global $db, $conf;
+
+        $obj_ret = array();
+        // case of external user, $thirdpartyid param is ignored and replaced by user's socid
+        $socids = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $thirdparty_ids;
+
+        // If the internal user must only see his customers, force searching by him
+        if (! DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) $search_sale = DolibarrApiAccess::$user->id;
+
+        $sql = "SELECT t.rowid";
+        if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
+        $sql.= " FROM ".MAIN_DB_PREFIX."projet as t";
+
+        if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
+
+        $sql.= ' WHERE t.entity IN ('.getEntity('project', 1).')';
+        if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql.= " AND t.fk_soc = sc.fk_soc";
+        if ($socids) $sql.= " AND t.fk_soc IN (".$socids.")";
+        if ($search_sale > 0) $sql.= " AND t.rowid = sc.fk_soc";		// Join for the needed table to filter by sale
+        // Insert sale filter
+        if ($search_sale > 0)
+        {
+            $sql .= " AND sc.fk_user = ".$search_sale;
+        }
+        // Add sql filters
+        if ($sqlfilters) 
+        {
+            if (! DolibarrApi::_checkFilters($sqlfilters))
+            {
+                throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
+            }
+	        $regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
+            $sql.=" AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
+        }
+        
+        $sql.= $db->order($sortfield, $sortorder);
+        if ($limit)	{
+            if ($page < 0)
+            {
+                $page = 0;
+            }
+            $offset = $limit * $page;
+
+            $sql.= $db->plimit($limit + 1, $offset);
+        }
+
+        dol_syslog("API Rest request");
+        $result = $db->query($sql);
+
+        if ($result)
+        {
+            $num = $db->num_rows($result);
+            while ($i < min($num, ($limit <= 0 ? $num : $limit)))
+            {
+                $obj = $db->fetch_object($result);
+                $project_static = new Project($db);
+                if($project_static->fetch($obj->rowid)) {
+                    $obj_ret[] = parent::_cleanObjectDatas($project_static);
+                }
+                $i++;
+            }
+        }
+        else {
+            throw new RestException(503, 'Error when retrieve project list');
+        }
+        if( ! count($obj_ret)) {
+            throw new RestException(404, 'No project found');
+        }
+		return $obj_ret;
+    }
+
+    /**
+     * Create project object
+     *
+     * @param   array   $request_data   Request data
+     * @return  int     ID of project
+     */
+    function post($request_data = NULL)
+    {
+      if(! DolibarrApiAccess::$user->rights->projet->creer) {
+			  throw new RestException(401, "Insuffisant rights");
+		  }
+        // Check mandatory fields
+        $result = $this->_validate($request_data);
+
+        foreach($request_data as $field => $value) {
+            $this->project->$field = $value;
+        }
+        /*if (isset($request_data["lines"])) {
+          $lines = array();
+          foreach ($request_data["lines"] as $line) {
+            array_push($lines, (object) $line);
+          }
+          $this->project->lines = $lines;
+        }*/
+        if ($this->project->create(DolibarrApiAccess::$user) <= 0) {
+            $errormsg = $this->project->error;
+            throw new RestException(500, $errormsg ? $errormsg : "Error while creating project");
+        }
+
+        return $this->project->id;
+    }
+
+    /**
+     * Get tasks of a project
+     *
+     * @param int   $id             Id of project
+     *
+     * @url	GET {id}/tasks
+     *
+     * @return int
+     */
+    function getLines($id) {
+      if(! DolibarrApiAccess::$user->rights->projet->lire) {
+		  	throw new RestException(401);
+		  }
+
+      $result = $this->project->fetch($id);
+      if( ! $result ) {
+         throw new RestException(404, 'Project not found');
+      }
+
+		  if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) {
+			  throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
+      }
+      $this->project->getLinesArray(DolibarrApiAccess::$user);
+      $result = array();
+      foreach ($this->project->lines as $line) {
+        array_push($result,$this->_cleanObjectDatas($line));
+      }
+      return $result;
+    }
+
+    
+    /**
+     * Get users and roles assigned to a project
+     *
+     * @param int   $id             Id of project
+     *
+     * @url	GET {id}/roles
+     *
+     * @return int
+     */
+    function getRoles($id) {
+        if(! DolibarrApiAccess::$user->rights->projet->lire) {
+            throw new RestException(401);
+        }
+    
+        $result = $this->project->fetch($id);
+        if( ! $result ) {
+            throw new RestException(404, 'Project not found');
+        }
+    
+        if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) {
+            throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
+        }
+        
+        require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
+        $taskstatic=new Task($this->db);
+        $this->project->roles = $taskstatic->getUserRolesForProjectsOrTasks(DolibarrApiAccess::$user, 0, $id, 0);
+        $result = array();
+        foreach ($this->project->roles as $line) {
+            array_push($result,$this->_cleanObjectDatas($line));
+        }
+        return $result;
+    }
+    
+    
+    /**
+     * Add a task to given project
+     *
+     * @param int   $id             Id of project to update
+     * @param array $request_data   Projectline data
+     *
+     * @url	POST {id}/tasks
+     *
+     * @return int
+     */
+    /*
+    function postLine($id, $request_data = NULL) {
+      if(! DolibarrApiAccess::$user->rights->projet->creer) {
+		  	throw new RestException(401);
+		  }
+
+      $result = $this->project->fetch($id);
+      if( ! $result ) {
+         throw new RestException(404, 'Project not found');
+      }
+
+		  if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) {
+			  throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
+      }
+			$request_data = (object) $request_data;
+      $updateRes = $this->project->addline(
+                        $request_data->desc,
+                        $request_data->subprice,
+                        $request_data->qty,
+                        $request_data->tva_tx,
+                        $request_data->localtax1_tx,
+                        $request_data->localtax2_tx,
+                        $request_data->fk_product,
+                        $request_data->remise_percent,
+                        $request_data->info_bits,
+                        $request_data->fk_remise_except,
+                        'HT',
+                        0,
+                        $request_data->date_start,
+                        $request_data->date_end,
+                        $request_data->product_type,
+                        $request_data->rang,
+                        $request_data->special_code,
+                        $fk_parent_line,
+                        $request_data->fk_fournprice,
+                        $request_data->pa_ht,
+                        $request_data->label,
+                        $request_data->array_options,
+                        $request_data->fk_unit,
+                        $this->element,
+                        $request_data->id
+      );
+
+      if ($updateRes > 0) {
+        return $this->get($id)->line->rowid;
+
+      }
+      return false;
+    }
+    */
+    
+    /**
+     * Update a task to given project
+     *
+     * @param int   $id             Id of project to update
+     * @param int   $lineid         Id of line to update
+     * @param array $request_data   Projectline data
+     *
+     * @url	PUT {id}/tasks/{lineid}
+     *
+     * @return object
+     */
+    /*
+    function putLine($id, $lineid, $request_data = NULL) {
+      if(! DolibarrApiAccess::$user->rights->projet->creer) {
+		  	throw new RestException(401);
+		  }
+
+      $result = $this->project->fetch($id);
+      if( ! $result ) {
+         throw new RestException(404, 'Project not found');
+      }
+
+		  if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) {
+			  throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
+      }
+			$request_data = (object) $request_data;
+      $updateRes = $this->project->updateline(
+                        $lineid,
+                        $request_data->desc,
+                        $request_data->subprice,
+                        $request_data->qty,
+                        $request_data->remise_percent,
+                        $request_data->tva_tx,
+                        $request_data->localtax1_tx,
+                        $request_data->localtax2_tx,
+                        'HT',
+                        $request_data->info_bits,
+                        $request_data->date_start,
+                        $request_data->date_end,
+                        $request_data->product_type,
+                        $request_data->fk_parent_line,
+                        0,
+                        $request_data->fk_fournprice,
+                        $request_data->pa_ht,
+                        $request_data->label,
+                        $request_data->special_code,
+                        $request_data->array_options,
+                        $request_data->fk_unit
+      );
+
+      if ($updateRes > 0) {
+        $result = $this->get($id);
+        unset($result->line);
+        return $this->_cleanObjectDatas($result);
+      }
+      return false;
+    }*/
+    
+
+    /**
+     * Delete a tasks of given project
+     *
+     *
+     * @param int   $id             Id of project to update
+     * @param int   $taskid         Id of task to delete
+     *
+     * @url	DELETE {id}/tasks/{taskid}
+     *
+     * @return int
+     */
+    function delLine($id, $taskid) {
+      if(! DolibarrApiAccess::$user->rights->projet->creer) {
+		  	throw new RestException(401);
+		  }
+
+      $result = $this->project->fetch($id);
+      if( ! ($result > 0) ) {
+         throw new RestException(404, 'Project not found');
+      }
+
+		  if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) {
+			  throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
+      }
+    
+      require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
+      $taskstatic=new Task($this->db);
+      $result = $taskstatic->fetch($taskid);
+      if( ! ($result > 0) ) {
+          throw new RestException(404, 'Task not found');
+      }
+      
+      $deleteRes = $taskstatic->delete(DolibarrApiAccess::$user);
+      
+      if( ! ($deleteRes > 0)) {
+          throw new RestException(500, 'Error when delete tasks : '.$taskstatic->error);
+      }
+      
+      return array(
+          'success' => array(
+              'code' => 200,
+              'message' => 'Task deleted'
+          )
+      );
+    }
+
+    
+    /**
+     * Update project general fields (won't touch lines of project)
+     *
+     * @param int   $id             Id of project to update
+     * @param array $request_data   Datas
+     *
+     * @return int
+     */
+    function put($id, $request_data = NULL) {
+      if(! DolibarrApiAccess::$user->rights->projet->creer) {
+		  	throw new RestException(401);
+		  }
+
+        $result = $this->project->fetch($id);
+        if( ! $result ) {
+            throw new RestException(404, 'Project not found');
+        }
+
+		if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) {
+			throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
+		}
+        foreach($request_data as $field => $value) {
+            $this->project->$field = $value;
+        }
+
+        if($this->project->update(DolibarrApiAccess::$user, 0))
+            return $this->get($id);
+
+        return false;
+    }
+
+    /**
+     * Delete project
+     *
+     * @param   int     $id         Project ID
+     *
+     * @return  array
+     */
+    function delete($id)
+    {
+        if(! DolibarrApiAccess::$user->rights->projet->supprimer) {
+			throw new RestException(401);
+		}
+        $result = $this->project->fetch($id);
+        if( ! $result ) {
+            throw new RestException(404, 'Project not found');
+        }
+
+		if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) {
+			throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
+		}
+
+        if( ! $this->project->delete(DolibarrApiAccess::$user)) {
+            throw new RestException(500, 'Error when delete project : '.$this->project->error);
+        }
+
+        return array(
+            'success' => array(
+                'code' => 200,
+                'message' => 'Project deleted'
+            )
+        );
+
+    }
+
+    /**
+     * Validate a project
+     *
+     * @param   int $id             Project ID
+     * @param   int $notrigger      1=Does not execute triggers, 0= execute triggers
+     *
+     * @url POST    {id}/validate
+     *
+     * @return  array
+     * FIXME An error 403 is returned if the request has an empty body.
+     * Error message: "Forbidden: Content type `text/plain` is not supported."
+     * Workaround: send this in the body
+     * {
+     *   "notrigger": 0
+     * }
+     */
+    function validate($id, $notrigger=0)
+    {
+        if(! DolibarrApiAccess::$user->rights->projet->creer) {
+			throw new RestException(401);
+		}
+        $result = $this->project->fetch($id);
+        if( ! $result ) {
+            throw new RestException(404, 'Project not found');
+        }
+
+		if( ! DolibarrApi::_checkAccessToResource('project',$this->project->id)) {
+			throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
+		}
+
+		$result = $this->project->setValid(DolibarrApiAccess::$user, $notrigger);
+		if ($result == 0) {
+		    throw new RestException(500, 'Error nothing done. May be object is already validated');
+		}
+		if ($result < 0) {
+		    throw new RestException(500, 'Error when validating Project: '.$this->project->error);
+		}
+
+        return array(
+            'success' => array(
+                'code' => 200,
+                'message' => 'Project validated'
+            )
+        );
+    }
+
+    /**
+     * Validate fields before create or update object
+     *
+     * @param   array           $data   Array with data to verify
+     * @return  array
+     * @throws  RestException
+     */
+    function _validate($data)
+    {
+        $object = array();
+        foreach (self::$FIELDS as $field) {
+            if (!isset($data[$field]))
+                throw new RestException(400, "$field field missing");
+            $object[$field] = $data[$field];
+
+        }
+        return $object;
+    }
+    
+    
+    // TODO
+    // getSummaryOfTimeSpent
+}
diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php
index 4ac568182de6e287a98fc0d5da2376bac73f0620..cdddccbf432b92f5dd09e8e463548da9631d7154 100644
--- a/htdocs/projet/class/project.class.php
+++ b/htdocs/projet/class/project.class.php
@@ -241,7 +241,15 @@ class Project extends CommonObject
         $this->description = trim($this->description);
 		if ($this->opp_amount < 0) $this->opp_amount='';
 		if ($this->opp_percent < 0) $this->opp_percent='';
-
+        if ($this->date_end && $this->date_end < $this->date_start)
+        {
+            $this->error = $langs->trans("ErrorDateEndLowerThanDateStart");
+            $this->errors[] = $this->error;
+            $this->db->rollback();
+            dol_syslog(get_class($this)."::update error -3 " . $this->error, LOG_ERR);
+            return -3;
+        }
+        
         if (dol_strlen(trim($this->ref)) > 0)
         {
             $this->db->begin();
@@ -695,10 +703,11 @@ class Project extends CommonObject
     /**
      * 		Validate a project
      *
-     * 		@param		User	$user		User that validate
-     * 		@return		int					<0 if KO, >0 if OK
+     * 		@param		User	$user		   User that validate
+     *      @param      int     $notrigger     1=Disable triggers
+     * 		@return		int					   <0 if KO, >0 if OK
      */
-    function setValid($user)
+    function setValid($user, $notrigger=0)
     {
         global $langs, $conf;
 
@@ -725,10 +734,13 @@ class Project extends CommonObject
             if ($resql)
             {
                 // Call trigger
-                $result=$this->call_trigger('PROJECT_VALIDATE',$user);
-                if ($result < 0) { $error++; }
-                // End call triggers
-
+                if (empty($notrigger))
+                {
+                    $result=$this->call_trigger('PROJECT_VALIDATE',$user);
+                    if ($result < 0) { $error++; }
+                    // End call triggers
+                }
+                
                 if (!$error)
                 {
                 	$this->statut=1;
@@ -1750,12 +1762,12 @@ class Project extends CommonObject
 	    global $conf;
 
         if (! ($this->statut == 1)) return false;
-        if (! $this->datee) return false;
+        if (! $this->datee && ! $this->date_end) return false;
 
         $now = dol_now();
 
-        return $this->datee < ($now - $conf->projet->warning_delay);
-	}
+        return ($this->datee ? $this->datee : $this->date_end) < ($now - $conf->projet->warning_delay);
+	}	
 
 
 	/**
@@ -1866,5 +1878,20 @@ class Project extends CommonObject
 		return 1;
 	}
 
+	
+	/**
+	 * 	Create an array of tasks of current project
+	 * 
+	 *  @param  User   $user       Object user we want project allowed to
+	 * 	@return int		           >0 if OK, <0 if KO
+	 */
+	function getLinesArray($user)
+	{
+	    require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
+	    $taskstatic = new Task($this->db);
+
+	    $this->lines = $taskstatic->getTasksArray(0, $user, $this->id, 0, 0);
+	}
+	
 }
 
diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php
index ad2f5faecbe751e4665267e1cc8499b7ad3e3b40..2baccfb3382db2d7fcf3b92367d1ed1417667b31 100644
--- a/htdocs/projet/class/task.class.php
+++ b/htdocs/projet/class/task.class.php
@@ -176,7 +176,7 @@ class Task extends CommonObject
      *
      *  @param	int		$id			Id object
      *  @param	int		$ref		ref object
-     *  @return int 		        <0 if KO, >0 if OK
+     *  @return int 		        <0 if KO, 0 if not found, >0 if OK
      */
     function fetch($id,$ref='')
     {
@@ -214,7 +214,9 @@ class Task extends CommonObject
         $resql=$this->db->query($sql);
         if ($resql)
         {
-            if ($this->db->num_rows($resql))
+            $num_rows = $this->db->num_rows($resql);
+            
+            if ($num_rows)
             {
                 $obj = $this->db->fetch_object($resql);
 
@@ -241,7 +243,8 @@ class Task extends CommonObject
 
             $this->db->free($resql);
 
-            return 1;
+            if ($num_rows) return 1;
+            else return 0;
         }
         else
         {
@@ -754,7 +757,7 @@ class Task extends CommonObject
      * Return list of roles for a user for each projects or each tasks (or a particular project or a particular task).
      *
      * @param	User	$userp			      Return roles on project for this internal user. If set, usert and taskid must not be defined.
-     * @param	User	$usert			      Return roles on task for this internal user. If set userp must not be defined.
+     * @param	User	$usert			      Return roles on task for this internal user. If set userp must not be defined. -1 means no filter.
      * @param 	int		$projectid		      Project id list separated with , to filter on project
      * @param 	int		$taskid			      Task id to filter on a task
      * @param	string	$filteronprojstatus	  Filter on project status if userp is set. Not used if userp not defined.
diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php
index e94042f43d3c6eb6e01dd2fb0fa42b0612ad7443..958f0b242a255b5f4ded29dca14ced45942087c2 100644
--- a/htdocs/projet/element.php
+++ b/htdocs/projet/element.php
@@ -506,8 +506,8 @@ foreach ($listofreferent as $key => $value)
 				$element->fetch($idofelement);
 				if ($idofelementuser) $elementuser->fetch($idofelementuser);
 
+                // Special cases				
 				if ($tablename != 'expensereport_det' && method_exists($element, 'fetch_thirdparty')) $element->fetch_thirdparty();
-
 				if ($tablename == 'don') $total_ht_by_line=$element->amount;
 				elseif ($tablename == 'projet_task')
 				{
@@ -737,6 +737,7 @@ foreach ($listofreferent as $key => $value)
 				$element->fetch($idofelement);
 				if ($idofelementuser) $elementuser->fetch($idofelementuser);
 
+				// Special cases
 				if ($tablename != 'expensereport_det')
 				{
 					if(method_exists($element, 'fetch_thirdparty')) $element->fetch_thirdparty();
@@ -787,28 +788,34 @@ foreach ($listofreferent as $key => $value)
 				}
 				else
 				{
+				    // Show ref with link
 					if ($element instanceof Task)
 					{
 						print $element->getNomUrl(1,'withproject','time');
 						print ' - '.dol_trunc($element->label, 48);
 					}
 					else print $element->getNomUrl(1);
-
+						
 					$element_doc = $element->element;
 					$filename=dol_sanitizeFileName($element->ref);
 					$filedir=$conf->{$element_doc}->dir_output . '/' . dol_sanitizeFileName($element->ref);
 
-					if($element_doc === 'order_supplier') {
+					if ($element_doc === 'order_supplier') {
 						$element_doc='commande_fournisseur';
 						$filedir = $conf->fournisseur->commande->dir_output.'/'.dol_sanitizeFileName($element->ref);
 					}
-					else if($element_doc === 'invoice_supplier') {
+					else if ($element_doc === 'invoice_supplier') {
 						$element_doc='facture_fournisseur';
 						$filename = get_exdir($element->id,2,0,0,$this,'product').dol_sanitizeFileName($element->ref);
 						$filedir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($element->id,2,0,0,null,'invoice_supplier').dol_sanitizeFileName($element->ref);
 					}
 
-					print $formfile->getDocumentsLink($element_doc, $filename, $filedir);
+					print '<div class="inline-block valignmiddle">'.$formfile->getDocumentsLink($element_doc, $filename, $filedir).'</div>';
+					
+					// Show supplier ref
+					if (! empty($element->ref_supplier)) print ' - '.$element->ref_supplier;
+					// Show customer ref
+					if (! empty($element->ref_customer)) print ' - '.$element->ref_customer;
 				}
 
 				print "</td>\n";
diff --git a/htdocs/projet/graph_opportunities.inc.php b/htdocs/projet/graph_opportunities.inc.php
index 673fbc973ad61d72837c48cd8f6a737e100d0eae..b763240500fe299c1e43bb2b52be1e2c6ae5f307 100644
--- a/htdocs/projet/graph_opportunities.inc.php
+++ b/htdocs/projet/graph_opportunities.inc.php
@@ -83,8 +83,8 @@ if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES))
 	    }
 	    //if ($totalinprocess != $total)
 	    //print '<tr class="liste_total"><td>'.$langs->trans("Total").' ('.$langs->trans("CustomersOrdersRunning").')</td><td align="right">'.$totalinprocess.'</td></tr>';
-	    print '<tr class="liste_total"><td>'.$langs->trans("OpportunityTotalAmount").' ('.$langs->trans("WonLostExcluded").')</td><td align="right">'.price($totalamount, 0, '', 1, -1, -1, $conf->currency).'</td></tr>';
-	    print '<tr class="liste_total"><td>';
+	    print '<tr class="liste_total"><td class="maxwidth150onsmartphone tdoverflow">'.$langs->trans("OpportunityTotalAmount").' ('.$langs->trans("WonLostExcluded").')</td><td align="right">'.price($totalamount, 0, '', 1, -1, -1, $conf->currency).'</td></tr>';
+	    print '<tr class="liste_total"><td class="minwidth150onsmartphone tdoverflow">';
 	    //print $langs->trans("OpportunityPonderatedAmount").' ('.$langs->trans("WonLostExcluded").')';
 	    print $form->textwithpicto($langs->trans("OpportunityPonderatedAmount").' ('.$langs->trans("WonLostExcluded").')', $langs->trans("OpportunityPonderatedAmountDesc"), 1);
 	    print '</td><td align="right">'.price(price2num($ponderated_opp_amount,'MT'), 0, '', 1, -1, -1, $conf->currency).'</td></tr>';
diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php
index 752e3615464997c7360cd2b0ca134db7860da85a..96f98111c2ee79522fbcc412b56a385b010ef460 100644
--- a/htdocs/projet/index.php
+++ b/htdocs/projet/index.php
@@ -140,7 +140,7 @@ print '</div><div class="fichetwothirdright"><div class="ficheaddleft">';
 
 print '<table class="noborder" width="100%">';
 print '<tr class="liste_titre">';
-print_liste_field_titre($langs->trans("OpenedProjectsByThirdparties"),$_SERVER["PHP_SELF"],"s.nom","","","",$sortfield,$sortorder);
+print_liste_field_titre($langs->trans("OpenedProjectsByThirdparties"),$_SERVER["PHP_SELF"],"s.nom","","",'',$sortfield,$sortorder);
 print_liste_field_titre($langs->trans("NbOfProjects"),"","","","",'align="right"',$sortfield,$sortorder);
 print "</tr>\n";
 
diff --git a/htdocs/projet/info.php b/htdocs/projet/info.php
index 5a975b4ec1e1bf6769d455c7a2217ea76473d402..8b6bf3c02884361a14c583484edddce6ccee07e6 100644
--- a/htdocs/projet/info.php
+++ b/htdocs/projet/info.php
@@ -1,5 +1,5 @@
 <?php
-/* Copyright (C) 2005-2006 Laurent Destailleur  <eldy@users.sourceforge.net>
+/* Copyright (C) 2005-2016 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005-2009 Regis Houssin        <regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -30,6 +30,11 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
 
 $langs->load("projects");
 
+$id     = GETPOST('id','int');
+$ref    = GETPOST('ref','alpha');
+$socid  = GETPOST('socid','int');
+$action = GETPOST('action','alpha');
+
 if (GETPOST('actioncode','array'))
 {
     $actioncode=GETPOST('actioncode','array',3);
@@ -73,16 +78,19 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP
  */
 
 $form = new Form($db);
+$object = new Project($db);
 
 $title=$langs->trans("Project").' - '.$object->ref.' '.$object->name;
 if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->ref.' '.$object->name.' - '.$langs->trans("Info");
 $help_url="EN:Module_Projects|FR:Module_Projets|ES:M&oacute;dulo_Proyectos";
 llxHeader("",$title,$help_url);
 
-$object = new Project($db);
-$object->fetch($id);
-$object->fetch_thirdparty();
-$object->info($id);
+if ($id > 0 || ! empty($ref))
+{
+    $object->fetch($id, $ref);
+    $object->fetch_thirdparty();
+    $object->info($object->id);
+}
 
 $head = project_prepare_head($object);
 
@@ -141,7 +149,7 @@ if (! empty($conf->agenda->enabled))
 {
     if (! empty($user->rights->agenda->myactions->create) || ! empty($user->rights->agenda->allactions->create))
     {
-        print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out.'">'.$langs->trans("AddAction").'</a>';
+        print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id).'">'.$langs->trans("AddAction").'</a>';
     }
     else
     {
diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index 787d902768d9b5c68f9d195a5b0066422a564333..8c2c8909a84bfe214a04ffb01dde1fb98965c25b 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -626,7 +626,7 @@ while ($i < min($num,$limit))
 	$projectstatic->user_author_id = $obj->fk_user_creat;
 	$projectstatic->public = $obj->public;
 	$projectstatic->ref = $obj->ref;
-	$projectstatic->datee = $obj->date_end;
+	$projectstatic->datee = $db->jdate($obj->date_end);
 	$projectstatic->statut = $obj->fk_statut;
 	$projectstatic->opp_status = $obj->fk_opp_status;
 	 
diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php
index 05eaafc3e090a45379b209431ebf50438c5fc3ec..5eaa20003af6bca818b669f040350caf79211857 100644
--- a/htdocs/public/test/test_arrays.php
+++ b/htdocs/public/test/test_arrays.php
@@ -31,6 +31,7 @@ if (empty($usedolheader))
 	<title>Test page</title>
 	<!-- Includes for JQuery (Ajax library) -->
 	<link rel="stylesheet" type="text/css" href="<?php echo DOL_URL_ROOT ?>/includes/jquery/css/smoothness/jquery-ui.css" />
+	<!-- <link rel="stylesheet" type="text/css" href="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/datatables/media/css/jquery.dataTables.css" /> -->
 	<?php if ($_GET["dol_use_jmobile"] == 1) { ?>
 	<link rel="stylesheet" type="text/css" href="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/mobile/jquery.mobile-latest.min.css" />
 	<?php } ?>
@@ -38,6 +39,7 @@ if (empty($usedolheader))
 	<!-- Includes JS for JQuery -->
 	<script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/js/jquery.min.js"></script>
 	<script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/tablednd/jquery.tablednd.0.6.min.js"></script>
+	<!-- <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/datatables/media/js/jquery.dataTables.js"></script> -->
 	<script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/select2/select2.min.js?version=4.0.0-beta"></script>
 	<?php if ($_GET["dol_use_jmobile"] == 1) { ?>
 	<script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/mobile/jquery.mobile-latest.min.js"></script>
@@ -52,9 +54,26 @@ if (empty($usedolheader))
 }
 else
 {
-	$arraycss=array();
-	$arrayjs=array();
-
+    $arraycss=array();
+    $arrayjs=array();
+    /*
+	$arraycss=array('/includes/jquery/plugins/datatables/media/css/jquery.dataTables.css',
+			'/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.dataTables.min.css',
+			'/includes/jquery/plugins/datatables/extensions/ColReorder/css/colReorder.dataTables.min.css'
+	);
+	$arrayjs=array('/includes/jquery/plugins/datatables/media/js/jquery.dataTables.js',
+			'/includes/jquery/plugins/datatables/extensions/Buttons/js/dataTables.buttons.js',
+			'/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.colVis.min.js',
+			'/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.html5.min.js',
+			'/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.flash.min.js',
+			'/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.print.min.js',
+			'/includes/jquery/plugins/datatables/extensions/ColReorder/js/dataTables.colReorder.min.js',
+			'/includes/jszip/jszip.min.js',
+			'/includes/pdfmake/pdfmake.min.js',
+			'/includes/pdfmake/vfs_fonts.js'
+	);
+    */
+    
 	llxHeader('','','','',0,0,$arrayjs,$arraycss);
 }
 
@@ -66,9 +85,9 @@ else
 <h2>
 This page is a sample of page using tables. It is designed to make test with<br>
 - css (add parameter &amp;theme=newtheme to test another theme or edit css of current theme)<br>
-- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&amp;dol_optimize_smallscreen=1</a> and switch to small screen < 960 to enable view with jmobile)<br>
+- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=4&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=4&amp;dol_optimize_smallscreen=1</a> and switch to small screen < 1000 to enable view with jmobile)<br>
+- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&amp;dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br>
 - no javascript / usage for bind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
-- dataTables<br>
 - tablednd<br>
 </h2>
 
@@ -79,10 +98,10 @@ This page is a sample of page using tables. It is designed to make test with<br>
 <div class="tagtable centpercent">
 	<div class="tagtr">
 	<div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
-	<select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
+	<select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
 	</div>
 	<div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
-	<select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
+	<select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
 	</div>
 	</div>
 </div>
@@ -92,10 +111,10 @@ This page is a sample of page using tables. It is designed to make test with<br>
 <div class="tagtable centpercent">
 	<form action="xxx" method="POST" class="tagtr">
 	<div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
-	<select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
+	<select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
 	</div>
 	<div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
-	<select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
+	<select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
 	</div>
 	</form>
 </div>
@@ -105,10 +124,10 @@ This page is a sample of page using tables. It is designed to make test with<br>
 <table class="centpercent">
     <tr>
     <td class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
-	<select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
+	<select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
     </td>
     <td class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
-	<select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
+	<select name="hidedetails" class="centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
     </td>
     </tr>
 </table>
diff --git a/htdocs/public/test/test_forms.php b/htdocs/public/test/test_forms.php
index a697b371438566949db91fe18a3adb59e73777f2..a53f812611a82396338be98c2bee214536aaa46b 100644
--- a/htdocs/public/test/test_forms.php
+++ b/htdocs/public/test/test_forms.php
@@ -17,7 +17,8 @@ llxHeader();
 <h1>
 This page is a sample of page using Dolibarr HTML widget methods. It is designed to make test with<br>
 - css (add parameter &amp;theme=newtheme to test another theme or edit css of current theme)<br>
-- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&amp;dol_optimize_smallscreen=1</a> to enable view with jmobile)<br>
+- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=4&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=4&amp;dol_optimize_smallscreen=1</a> and switch to small screen < 1000 to enable view with jmobile)<br>
+- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&amp;dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br>
 - no javascript / usage for bind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
 </h1>
 <br>
diff --git a/htdocs/societe/rib.php b/htdocs/societe/rib.php
index 1d8e9348f72137964c21dc3b39e9a02ee5656eaf..f6149690b7e40306db950e8d08da13899a132f32 100644
--- a/htdocs/societe/rib.php
+++ b/htdocs/societe/rib.php
@@ -62,6 +62,10 @@ $extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
 $hookmanager->initHooks(array('thirdpartybancard','globalcard'));
 
 
+// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
+$hookmanager->initHooks(array('thirdpartybancard'));
+
+
 
 /*
  *	Actions
diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php
index accff491427a1f6467634533d6354927f7707749..0220f775d7b63fbe092d7b53d6bba6236e3a9fd3 100644
--- a/htdocs/societe/soc.php
+++ b/htdocs/societe/soc.php
@@ -994,10 +994,11 @@ else
         if ($conf->use_javascript_ajax)
         {
             print '<tr class="individualline"><td>'.fieldLabel('FirstName','firstname').'</td>';
-	        print '<td colspan="3"><input type="text" size="60" name="firstname" id="firstname" value="'.$object->firstname.'"></td>';
+	        print '<td colspan="3"><input type="text" class="minwidth300" maxlength="128" name="firstname" id="firstname" value="'.$object->firstname.'"></td>';
             print '</tr>';
-            print '<tr class="individualline"><td>'.fieldLabel('UserTitle','civility_id').'</td><td colspan="3">';
-            print $formcompany->select_civility($object->civility_id).'</td>';
+            // Title
+            print '<tr class="individualline"><td>'.fieldLabel('UserTitle','civility_id').'</td><td colspan="3" class="maxwidthonsmartphone">';
+            print $formcompany->select_civility($object->civility_id, 'civility_id', 'maxwidth100').'</td>';
             print '</tr>';
         }
 
@@ -1070,9 +1071,9 @@ else
 
         // Zip / Town
         print '<tr><td>'.fieldLabel('Zip','zipcode').'</td><td>';
-        print $formcompany->select_ziptown($object->zip,'zipcode',array('town','selectcountry_id','state_id'),6);
+        print $formcompany->select_ziptown($object->zip,'zipcode',array('town','selectcountry_id','state_id'), 0, 0, '', 'maxwidth100 quatrevingtpercent');
         print '</td><td>'.fieldLabel('Town','town').'</td><td>';
-        print $formcompany->select_ziptown($object->town,'town',array('zipcode','selectcountry_id','state_id'));
+        print $formcompany->select_ziptown($object->town,'town',array('zipcode','selectcountry_id','state_id'), 0, 0, '', 'maxwidth100 quatrevingtpercent');
         print '</td></tr>';
 
         // Country
@@ -1092,15 +1093,15 @@ else
 
         // Email web
         print '<tr><td>'.fieldLabel('EMail','email').(! empty($conf->global->SOCIETE_MAIL_REQUIRED)?'*':'').'</td>';
-	    print '<td colspan="3"><input type="text" name="email" id="email" size="32" value="'.$object->email.'"></td></tr>';
+	    print '<td colspan="3"><input type="text" name="email" id="email" value="'.$object->email.'"></td></tr>';
         print '<tr><td>'.fieldLabel('Web','url').'</td>';
-	    print '<td colspan="3"><input type="text" name="url" id="url" size="32" value="'.$object->url.'"></td></tr>';
-
+	    print '<td colspan="3"><input type="text" name="url" id="url" value="'.$object->url.'"></td></tr>';
+	    
         // Skype
         if (! empty($conf->skype->enabled))
         {
             print '<tr><td>'.fieldLabel('Skype','skype').'</td>';
-	        print '<td colspan="3"><input type="text" name="skype" id="skype" size="32" value="'.$object->skype.'"></td></tr>';
+	        print '<td colspan="3"><input type="text" name="skype" id="skype" value="'.$object->skype.'"></td></tr>';
         }
 
         // Phone / Fax
diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php
index 0658416797ed52c2f54f728fab2f51753fc1d90e..3ab1c159545d84feb681fba2f3d7d929692ff812 100644
--- a/htdocs/supplier_proposal/card.php
+++ b/htdocs/supplier_proposal/card.php
@@ -34,7 +34,6 @@
 require '../main.inc.php';
 require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php';
 require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php';
-require_once DOL_DOCUMENT_ROOT . '/core/class/html.formsupplier_proposal.class.php';
 require_once DOL_DOCUMENT_ROOT . '/core/class/html.formmargin.class.php';
 require_once DOL_DOCUMENT_ROOT . '/supplier_proposal/class/supplier_proposal.class.php';
 require_once DOL_DOCUMENT_ROOT . '/comm/action/class/actioncomm.class.php';
@@ -997,7 +996,6 @@ llxHeader('', $langs->trans('CommRequests'), 'EN:Ask_Price_Supplier|FR:Demande_d
 $form = new Form($db);
 $formother = new FormOther($db);
 $formfile = new FormFile($db);
-$formsupplier_proposal = new FormSupplierProposal($db);
 $formmargin = new FormMargin($db);
 $companystatic = new Societe($db);
 if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); }
@@ -1478,41 +1476,6 @@ if ($action == 'create')
 	}
 	print '</td></tr>';
 
-	// Project
-	/*
-	if (! empty($conf->projet->enabled)) {
-		$langs->load("projects");
-		print '<tr><td>';
-		print '<table class="nobordernopadding" width="100%"><tr><td>';
-		print $langs->trans('Project') . '</td>';
-		if ($user->rights->supplier_proposal->creer) {
-			if ($action != 'classify')
-				print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a></td>';
-			print '</tr></table>';
-			print '</td><td colspan="3">';
-			if ($action == 'classify') {
-				$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid');
-			} else {
-				$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none');
-			}
-			print '</td></tr>';
-		} else {
-			print '</td></tr></table>';
-			if (! empty($object->fk_project)) {
-				print '<td colspan="3">';
-				$proj = new Project($db);
-				$proj->fetch($object->fk_project);
-				print '<a href="../projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">';
-				print $proj->ref;
-				print '</a>';
-				print '</td>';
-			} else {
-				print '<td colspan="3">&nbsp;</td>';
-			}
-		}
-		print '</tr>';
-	}*/
-
 	// Multicurrency
 	if (! empty($conf->multicurrency->enabled))
 	{
@@ -1596,14 +1559,32 @@ if ($action == 'create')
 	
 	print '<table class="border centpercent">';
 	
+	if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency))
+	{
+		// Multicurrency Amount HT
+		print '<tr><td height="10" class="titlefieldmiddle">' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '</td>';
+		print '<td>' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
+		print '</tr>';
+
+		// Multicurrency Amount VAT
+		print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '</td>';
+		print '<td>' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
+		print '</tr>';
+
+		// Multicurrency Amount TTC
+		print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '</td>';
+		print '<td>' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
+		print '</tr>';
+	}
+	
 	// Amount HT
-	print '<tr><td class="titlefield">' . $langs->trans('AmountHT') . '</td>';
-	print '<td class="nowrap"><b>' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . '</b></td>';
+	print '<tr><td class="titlefieldmiddle">' . $langs->trans('AmountHT') . '</td>';
+	print '<td>' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . '</td>';
 	print '</tr>';
 
 	// Amount VAT
 	print '<tr><td>' . $langs->trans('AmountVAT') . '</td>';
-	print '<td class="nowrap">' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '</td>';
+	print '<td>' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '</td>';
 	print '</tr>';
 
 	// Amount Local Taxes
@@ -1625,27 +1606,6 @@ if ($action == 'create')
 	print '<td class="nowrap">' . price($object->total_ttc, '', $langs, 0, - 1, - 1, $conf->currency) . '</td>';
 	print '</tr>';
 
-	if (!empty($conf->multicurrency->enabled))
-	{
-		// Multicurrency Amount HT
-		print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '</td>';
-		print '<td class="nowrap">' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
-		print '</tr>';
-
-		// Multicurrency Amount VAT
-		print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '</td>';
-		print '<td class="nowrap">' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
-		print '</tr>';
-
-		// Multicurrency Amount TTC
-		print '<tr><td height="10">' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '</td>';
-		print '<td class="nowrap">' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '</td>';
-		print '</tr>';
-	}
-
-	// Statut
-	//print '<tr><td height="10">' . $langs->trans('Status') . '</td><td align="left">' . $object->getLibStatut(4) . '</td></tr>';
-
 	print '</table>';
 	
 	// Margin Infos
diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php
index 45dacd3805a98aeb8c2e0d9b16c993be361eb2ae..1d249ad627dbeea50310735b36aeeca946811b62 100644
--- a/htdocs/supplier_proposal/class/supplier_proposal.class.php
+++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php
@@ -2095,11 +2095,12 @@ class SupplierProposal extends CommonObject
 
 		if ($mode == 0)	return $this->labelstatut[$statut];
 		if ($mode == 1)	return $this->labelstatut_short[$statut];
-		if ($mode == 2)	return img_picto($this->labelstatut_short[$statut], $statuttrans).' '.$this->labelstatut_short[$statut];
+		if ($mode == 2)	return img_picto($this->labelstatut[$statut], $statuttrans).' '.$this->labelstatut_short[$statut];
 		if ($mode == 3)	return img_picto($this->labelstatut[$statut], $statuttrans);
 		if ($mode == 4)	return img_picto($this->labelstatut[$statut],$statuttrans).' '.$this->labelstatut[$statut];
-		if ($mode == 5)	return '<span class="hideonsmartphone">'.$this->labelstatut_short[$statut].' </span>'.img_picto($this->labelstatut_short[$statut],$statuttrans);
-    }
+		if ($mode == 5)	return '<span class="hideonsmartphone">'.$this->labelstatut_short[$statut].' </span>'.img_picto($this->labelstatut[$statut],$statuttrans);
+		if ($mode == 6)	return '<span class="hideonsmartphone">'.$this->labelstatut[$statut].' </span>'.img_picto($this->labelstatut[$statut],$statuttrans);
+	}
 
 
     /**
diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php
index e51ddfcdceb8bee272c8c641c4e679b891e93fec..a50e8509ba5a210ecb90dec0cb501910f2764166 100644
--- a/htdocs/supplier_proposal/list.php
+++ b/htdocs/supplier_proposal/list.php
@@ -34,8 +34,8 @@
 require '../main.inc.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
-require_once DOL_DOCUMENT_ROOT.'/core/class/html.formsupplier_proposal.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formpropal.class.php';
 require_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php';
 if (! empty($conf->projet->enabled))
 	require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
@@ -191,7 +191,7 @@ llxHeader('',$langs->trans('CommRequest'),'EN:Ask_Price_Supplier|FR:Demande_de_p
 $form = new Form($db);
 $formother = new FormOther($db);
 $formfile = new FormFile($db);
-$formsupplier_proposal = new FormSupplierProposal($db);
+$formpropal = new FormPropal($db);
 $companystatic=new Societe($db);
 
 $now=dol_now();
@@ -388,7 +388,7 @@ if ($result)
 	print '<input class="flat" size="10" type="text" name="search_author" value="'.$search_author.'">';
 	print '</td>';
 	print '<td class="liste_titre" align="right">';
-	$formsupplier_proposal->selectSupplierProposalStatus($viewstatut,1);
+	$formpropal->selectProposalStatus($viewstatut,1,0,1,'supplier');
 	print '</td>';
 	// Check boxes
 	print '<td class="liste_titre" align="right">';
diff --git a/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php b/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php
index 8f72744486a42e4dd1c69fdd5bdf652b5a611b6f..8ba1f95891803c7712a7567001ed9af954bf5e94 100644
--- a/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php
@@ -28,27 +28,44 @@ global $user;
 $langs = $GLOBALS['langs'];
 $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
 
+$total=0; $ilink=0;
 $var=true;
-$total=0;
 foreach($linkedObjectBlock as $key => $objectlink)
 {
-	$var=!$var;
+    $ilink++;
+    $var=!$var;
+    $trclass=($var?'pair':'impair');
+    if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total';
 ?>
-<tr <?php echo $bc[$var]; ?> >
-	<td><?php echo $langs->trans("SupplierProposal"); ?></td>
-	<td><a href="<?php echo DOL_URL_ROOT.'/supplier_proposal/card.php?id='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowSupplierProposal"),"supplier_proposal").' '.$objectlink->ref; ?></a></td>
-	<td></td>
-	<td align="center"><?php echo dol_print_date($objectlink->datec,'day'); ?></td>
-	<td align="right"><?php
-		if ($user->rights->supplier_proposal->lire) {
-			$total = $total + $objectlink->total_ht;
-			echo price($objectlink->total_ht);
-		} ?></td>
-	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
-	<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
-</tr>
+    <tr class="<?php echo $trclass; ?>">
+    	<td><?php echo $langs->trans("SupplierProposal"); ?></td>
+    	<td><a href="<?php echo DOL_URL_ROOT.'/supplier_proposal/card.php?id='.$objectlink->id ?>"><?php echo img_object($langs->trans("ShowSupplierProposal"),"supplier_proposal").' '.$objectlink->ref; ?></a></td>
+    	<td></td>
+    	<td align="center"><?php echo dol_print_date($objectlink->datec,'day'); ?></td>
+    	<td align="right"><?php
+    		if ($user->rights->supplier_proposal->lire) {
+    			$total = $total + $objectlink->total_ht;
+    			echo price($objectlink->total_ht);
+    		} ?></td>
+    	<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
+    	<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
+    </tr>
 <?php
 }
+if (count($linkedObjectBlock) > 1)
+{
+    ?>
+    <tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>">
+        <td><?php echo $langs->trans("Total"); ?></td>
+        <td></td>
+    	<td align="center"></td>
+    	<td align="center"></td>
+    	<td align="right"><?php echo price($total); ?></td>
+    	<td align="right"></td>
+    	<td align="right"></td>
+    </tr>
+    <?php  
+}
 ?>
 
 <!-- END PHP TEMPLATE -->
diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php
index 2db312ee630ca0ec3a45d2ba3d3abdb5ce74819f..869dace222dba665fd568a95a705528a0b649457 100644
--- a/htdocs/support/inc.php
+++ b/htdocs/support/inc.php
@@ -184,7 +184,7 @@ function conf($dolibarr_main_document_root)
 	$conf->db->user = trim($dolibarr_main_db_user);
 	$conf->db->pass = trim($dolibarr_main_db_pass);
 
-	if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_general_ci';
+	if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_unicode_ci';
 
 	return 1;
 }
diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php
index ae45643c9cb36ab635ea67bd5f9d3490dcd8a486..4f7edd144d2506c85d0566e0c7627fcac9130f50 100644
--- a/htdocs/theme/eldy/style.css.php
+++ b/htdocs/theme/eldy/style.css.php
@@ -71,7 +71,6 @@ $dol_hide_topmenu=$conf->dol_hide_topmenu;
 $dol_hide_leftmenu=$conf->dol_hide_leftmenu;
 $dol_optimize_smallscreen=$conf->dol_optimize_smallscreen;
 $dol_no_mouse_hover=$conf->dol_no_mouse_hover;
-$dol_use_jmobile=$conf->dol_use_jmobile;
 
 
 //$conf->global->THEME_ELDY_ENABLE_PERSONALIZED=0;
@@ -221,7 +220,6 @@ print 'dol_hide_topmenu='.$dol_hide_topmenu."\n";
 print 'dol_hide_leftmenu='.$dol_hide_leftmenu."\n";
 print 'dol_optimize_smallscreen='.$dol_optimize_smallscreen."\n";
 print 'dol_no_mouse_hover='.$dol_no_mouse_hover."\n";
-print 'dol_use_jmobile='.$dol_use_jmobile."\n";
 print 'dol_screenwidth='.$_SESSION['dol_screenwidth']."\n";
 print 'dol_screenheight='.$_SESSION['dol_screenheight']."\n";
 print 'fontsize='.$fontsize."\n";
@@ -257,7 +255,9 @@ a.tab { font-weight: bold !important; }
 a:link, a:visited, a:hover, a:active { font-family: <?php print $fontlist ?>; font-weight: normal; color: rgb(<?php print $colortextlink; ?>); text-decoration: none;  }
 a:hover { text-decoration: underline; color: rgb(<?php print $colortextlink; ?>); }
 
-<?php if (empty($dol_use_jmobile)) { ?>
+input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select {
+    background-color: #FFF;
+}
 
 input:focus, textarea:focus, button:focus, select:focus {
     box-shadow: 0 0 4px #8091BF;
@@ -270,8 +270,6 @@ textarea.cke_source:focus
 input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select {
     font-size: <?php print $fontsize ?>px;
     font-family: <?php print $fontlist ?>;
-    background: #FFF;
-    /* color: #111; */
     border: 1px solid #C0C0C0;
     margin: 0px 0px 0px 0px;
 }
@@ -304,7 +302,6 @@ span.timesheetalreadyrecorded input {
     border: none;
     /*background:	transparent;*/
 }
-<?php } ?>
 
 select.flat, form.flat select {
 	font-weight: normal;
@@ -339,9 +336,9 @@ input[type=checkbox] { background-color: transparent; border: none; box-shadow:
 input[type=radio]    { background-color: transparent; border: none; box-shadow: none; }
 input[type=image]    { background-color: transparent; border: none; box-shadow: none; }
 input:-webkit-autofill {
-	background-color: <?php echo empty($dol_use_jmobile)?'#FBFFEA':'#FFFFFF' ?> !important;
+	background-color: #FBFFEA !important;
 	background-image:none !important;
-	-webkit-box-shadow: 0 0 0 50px <?php echo empty($dol_use_jmobile)?'#FBFFEA':'#FFFFFF' ?> inset;
+	-webkit-box-shadow: 0 0 0 50px #FBFFEA inset;
 }
 ::-webkit-input-placeholder { color:#ccc; }
 :-moz-placeholder { color:#bbb; } 			/* firefox 18- */
@@ -349,9 +346,6 @@ input:-webkit-autofill {
 :-ms-input-placeholder { color:#ccc; } 		/* ie */
 input:-moz-placeholder { color:#ccc; }
 
-<?php if (! empty($dol_use_jmobile)) { ?>
-legend { margin-bottom: 8px; }
-<?php } ?>
 fieldset { border: 1px solid #AAAAAA !important; }
 
 
@@ -540,12 +534,13 @@ div.myavailability {
     margin-top: 6px;
     margin-left: 4px;
 }
-.selectlimit {
+.selectlimit, .marginrightonly {
 	margin-right: 10px !important;
 }
 .strikefordisabled {
 	text-decoration: line-through;
 }
+/* using a tdoverflowxxx make the min-with not working */
 .tdoverflow {
     max-width: 0;
     overflow: hidden;
@@ -618,19 +613,22 @@ div.myavailability {
     .minwidth400imp { min-width: 400px !important; }
     .minwidth500imp { min-width: 500px !important; }
 }
+.maxwidth50  { max-width: 50px; }
+.maxwidth75  { max-width: 75px; }
 .maxwidth100 { max-width: 100px; }
 .maxwidth150 { max-width: 150px; }
 .maxwidth200 { max-width: 200px; }
 .maxwidth300 { max-width: 300px; }
 .maxwidth400 { max-width: 400px; }
 .maxwidth500 { max-width: 500px; }
+.maxwidth50imp  { max-width: 50px !important; }
 .minheight20 { min-height: 20px; }
 .minheight40 { min-height: 40px; }
 .titlefieldcreate { width: 20%; }
 .titlefield       { width: 25%; }
 .titlefieldmiddle { width: 50%; }
 
-/* Force values for small screen */
+/* Force values for small screen 1400 */
 @media only screen and (max-width: 1400px)
 {
 	.titlefield { width: 30% !important; }
@@ -643,6 +641,7 @@ div.myavailability {
     .minwidth500imp { min-width: 300px !important; }
 }
 
+/* Force values for small screen 1000 */
 @media only screen and (max-width: 1000px)
 {
     .maxwidthonsmartphone { max-width: 100px; }
@@ -654,16 +653,36 @@ div.myavailability {
     .minwidth500imp { min-width: 100px !important; }
 }
 
-/* Force values for small screen */
+/* Force values for small screen 570 */
 @media only screen and (max-width: 570px)
 {
-	input[type=text]     { min-width: 20px; }
-
+	div.titre {
+		line-height: 2em;
+	}
+    .border tbody tr, .border tbody tr td, div.tabBar table.border tr, div.tabBar table.border tr td, div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar div.border .table-val-border-col {
+    	height: 40px !important;
+    }
+	
+    .quatrevingtpercent, .inputsearch {
+    	width: 95%;
+    }
+	
+	input, input[type=text], input[type=password], select, textarea     { 
+		min-width: 20px; 
+    	min-height: 1.4em;
+    	line-height: 1.4em;
+    	padding: .4em .1em;
+    	border: 1px solid #BBB;
+    	/* max-width: inherit; why this ? */
+     }
+     
     .hideonsmartphone { display: none; }
     .noenlargeonsmartphone { width : 50px !important; display: inline !important; }
     .maxwidthonsmartphone { max-width: 100px; }
-    .maxwidth100onsmartphone { max-width: 100px; }
-    .maxwidth150onsmartphone { max-width: 150px; }
+    .maxwidth50onsmartphone { max-width: 40px; }
+    .maxwidth75onsmartphone { max-width: 50px; }
+    .maxwidth100onsmartphone { max-width: 70px; }
+    .maxwidth150onsmartphone { max-width: 120px; }
     .maxwidth200onsmartphone { max-width: 200px; }
     .maxwidth300onsmartphone { max-width: 300px; }
     .maxwidth400onsmartphone { max-width: 400px; }
@@ -675,6 +694,32 @@ div.myavailability {
     .minwidth500imp { min-width: 50px !important; }
     .titlefield { width: auto; }
     .titlefieldcreate { width: auto; }
+    
+	#tooltip {
+		position: absolute;
+		width: <?php print dol_size(300,'width'); ?>px;
+	}
+	
+	/* intput, input[type=text], */
+	select {
+		width: 98%;
+		min-width: 40px;
+	}
+	
+	div.divphotoref {
+		padding-right: 5px;	
+	}
+    img.photoref, div.photoref {
+    	border: none;
+    	-moz-box-shadow: none;
+        -webkit-box-shadow: none;
+        box-shadow: none;
+        padding: 4px;
+    	height: 20px;
+    	width: 20px;
+        object-fit: contain;
+    }
+    
 }
 .linkobject { cursor: pointer; }
 <?php if (GETPOST("optioncss") == 'print') { ?>
@@ -792,7 +837,7 @@ div.fiche {
 	margin-<?php print $left; ?>: <?php print (GETPOST("optioncss") == 'print'?6:($dol_hide_leftmenu?'6':'20')); ?>px;
 	margin-<?php print $right; ?>: <?php print (GETPOST("optioncss") == 'print'?8:(empty($conf->dol_optimize_smallscreen)?'12':'6')); ?>px;
 	<?php if (! empty($conf->dol_hide_leftmenu) && ! empty($conf->dol_hide_topmenu)) print 'margin-top: 4px;'."\n"; ?>
-	<?php if (! empty($conf->dol_use_jmobile)) print ' margin-bottom: 10px;'."\n"; ?>
+	<?php if (! empty($conf->dol_hide_leftmenu)) print 'margin-bottom: 12px;'."\n"; ?>
 }
 div.fichecenter {
 	width: 100%;
@@ -1888,10 +1933,7 @@ div.tabs {
 }
 div.tabsElem {
 	margin-top: 1px;
-	<?php if (! empty($conf->dol_use_jmobile)) { ?>;
-	margin-bottom: -1px;
-	<?php } ?>
-}		/* To avoid overlap of tabs when not browser */
+}	/* To avoid overlap of tabs when not browser */
 
 div.tabBar {
     color: #<?php echo $colortextbacktab; ?>;
@@ -2316,10 +2358,7 @@ table.border, table.dataTable, .table-border, .table-border-col, .table-key-bord
 table.borderplus {
 	border: 1px solid #BBB;
 }
-.border tbody tr, .border tbody tr td {
-	height: 20px;
-}
-div.tabBar table.border tr, div.tabBar table.border tr td, div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar div.border .table-val-border-col {
+.border tbody tr, .border tbody tr td, div.tabBar table.border tr, div.tabBar table.border tr td, div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar div.border .table-val-border-col {
 	height: 20px;
 }
 div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar .table-val-border-col {
@@ -2449,7 +2488,7 @@ table.listwithfilterbefore {
 
 /* Pagination */
 div.refidpadding  {
-	padding-top: <?php print empty($conf->dol_use_jmobile)?'3':'7'; ?>px;
+	padding-top: 3px;
 }
 div.refid  {
 	font-weight: bold;
@@ -2485,10 +2524,8 @@ div.pagination li {
   display: inline-block;
   padding-left: 0px;
   padding-right: 0px;
-<?php if (empty($conf->dol_use_jmobile)) { ?>
   padding-top: 6px;
   padding-bottom: 5px;
-<?php } ?>
 }
 .pagination {
   display: inline-block;
@@ -2497,22 +2534,12 @@ div.pagination li {
 }
 div.pagination li.pagination a,
 div.pagination li.pagination span {
-<?php if (empty($conf->dol_use_jmobile)) { ?>
   padding: 6px 12px;
   margin-left: -1px;
   line-height: 1.42857143;
   color: #000;
   text-decoration: none;
-  /*
-  border-color: #ccc;
-	background-color: #f5f5f5;
-	background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-	background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-	background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-	background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);*/
-	background-repeat: repeat-x;
-<?php } ?>
+  background-repeat: repeat-x;
 }
 div.pagination li.pagination span.inactive {
   cursor: default;
@@ -2544,13 +2571,6 @@ div.pagination li.litext a:hover {
 	background-color: transparent;
 	background-image: none;
 }
-<?php if (! empty($conf->dol_use_jmobile)) { ?>
-div.pagination li.litext {
-  padding-top: 13px;
-  vertical-align: top;
-}
-<?php } ?>
-<?php if (empty($conf->dol_use_jmobile)) { ?>
 div.pagination li.noborder a:hover {
   border: none;
   background-color: transparent;
@@ -2610,7 +2630,6 @@ div.pagination .disabled a:focus {
   background-color: #fff;
   border-color: #ddd;
 }
-<?php } ?>
 div.pagination li.pagination .active {
   text-decoration: underline;
 }
@@ -2818,7 +2837,7 @@ form.liste_total div {
     border-top: 1px solid #DDDDDD;
 }
 tr.liste_sub_total, tr.liste_sub_total td {
-	border-bottom: 2px solid #aaa;
+	border-bottom: 1px solid #aaa;
 }
 
 .tableforservicepart1 .impair, .tableforservicepart1 .pair, .tableforservicepart2 .impair, .tableforservicepart2 .pair {
@@ -4189,11 +4208,7 @@ a.ui-link, a.ui-link:hover, .ui-btn:hover, span.ui-btn-text:hover, span.ui-btn-i
 	min-width: .4em;
 	padding-left: 6px;
 	padding-right: 6px;
-	<?php if (! empty($dol_use_jmobile)) { ?>
-	font-size: 13px;
-	<?php } else { ?>
 	font-size: <?php print $fontsize ?>px;
-	<?php } ?>
 	/* white-space: normal; */		/* Warning, enable this break the truncate feature */
 }
 .ui-btn-icon-right .ui-btn-inner {
@@ -4623,30 +4638,6 @@ img.demothumb {
 	div.mainmenu {
     	min-width: 20px;
     }
-
-	#tooltip {
-		position: absolute;
-		width: <?php print dol_size(300,'width'); ?>px;
-	}
-	select {
-		width: 100%;
-		max-width: 100px;
-		min-width: 50px;
-	}
-	div.divphotoref {
-		padding-right: 5px;	
-	}
-    img.photoref, div.photoref {
-    	border: none;
-    	-moz-box-shadow: none;
-        -webkit-box-shadow: none;
-        box-shadow: none;
-        padding: 4px;
-    	height: 20px;
-    	width: 20px;
-        object-fit: contain;
-    }
-	
 }
 
 <?php
diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php
index 3922fbf4bef7a8c00dc29e4c99ac94bc282dd20e..7de2c6d9e8212275683996a022a00bfa98c4008b 100644
--- a/htdocs/theme/md/style.css.php
+++ b/htdocs/theme/md/style.css.php
@@ -72,7 +72,6 @@ $dol_hide_topmenu=$conf->dol_hide_topmenu;
 $dol_hide_leftmenu=$conf->dol_hide_leftmenu;
 $dol_optimize_smallscreen=$conf->dol_optimize_smallscreen;
 $dol_no_mouse_hover=$conf->dol_no_mouse_hover;
-$dol_use_jmobile=$conf->dol_use_jmobile;
 
 
 //$conf->global->THEME_ELDY_ENABLE_PERSONALIZED=0;
@@ -163,14 +162,20 @@ $tmppart=explode(',',$colorbackhmenu1);
 $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : '');
 if ($tmpval <= 360) $colortextbackhmenu='FFFFFF';
 else $colortextbackhmenu='000000';
+
 $tmppart=explode(',',$colorbackvmenu1);
 $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : '');
 if ($tmpval <= 360) { $colortextbackvmenu='FFFFFF'; }
 else { $colortextbackvmenu='000000'; }
+
 $tmppart=explode(',',$colorbacktitle1);
-$tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : '');
-if ($tmpval <= 260) { $colortexttitle='FFFFFF'; $colorshadowtitle='888888'; }
-else { $colortexttitle='101010'; $colorshadowtitle='FFFFFF'; }
+if ($colortexttitle == '')
+{
+	$tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : '');
+	if ($tmpval <= 260) { $colortexttitle='FFFFFF'; $colorshadowtitle='888888'; }
+	else { $colortexttitle='101010'; $colorshadowtitle='FFFFFF'; }
+}
+
 $tmppart=explode(',',$colorbacktabcard1);
 $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : '');
 if ($tmpval <= 340) { $colortextbacktab='FFFFFF'; }
@@ -215,7 +220,6 @@ print 'dol_hide_topmenu='.$dol_hide_topmenu."\n";
 print 'dol_hide_leftmenu='.$dol_hide_leftmenu."\n";
 print 'dol_optimize_smallscreen='.$dol_optimize_smallscreen."\n";
 print 'dol_no_mouse_hover='.$dol_no_mouse_hover."\n";
-print 'dol_use_jmobile='.$dol_use_jmobile."\n";
 print 'dol_screenwidth='.$_SESSION['dol_screenwidth']."\n";
 print 'dol_screenheight='.$_SESSION['dol_screenheight']."\n";
 print 'fontsize='.$fontsize."\n";
@@ -251,7 +255,9 @@ a.tab { font-weight: bold !important; }
 a:link, a:visited, a:hover, a:active { font-family: <?php print $fontlist ?>; font-weight: normal; color: rgb(<?php print $colortextlink; ?>); text-decoration: none;  }
 a:hover { text-decoration: underline; color: rgb(<?php print $colortextlink; ?>); }
 
-<?php if (empty($dol_use_jmobile)) { ?>
+input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select {
+    background-color: #FDFDFD;
+}
 
 input:focus, textarea:focus, button:focus, select:focus {
     box-shadow: 0 0 4px #8091BF;
@@ -264,7 +270,6 @@ textarea.cke_source:focus
 input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select {
     font-size: <?php print $fontsize ?>px;
 	font-family: <?php print $fontlist ?>;
-	background: #FDFDFD;
     border: 1px solid #C0C0C0;
     margin: 0px 0px 0px 0px;
 }
@@ -286,7 +291,7 @@ input.removedassigned  {
 	vertical-align: text-bottom;
 	margin-bottom: -3px;
 }
-input.smallpadd {
+input.smallpadd {	/* Used for timesheet input */
 	padding-left: 1px !important;
 	padding-right: 1px !important;
 }
@@ -299,14 +304,9 @@ span.timesheetalreadyrecorded input {
     /*background:	transparent;*/
 }
 
-<?php } ?>
-
 select.flat, form.flat select {
 	font-weight: normal;
 }
-input:disabled {
-	background:#f4f4f4;
-}
 .optiongrey, .opacitymedium {
 	opacity: 0.5;
 }
@@ -316,6 +316,10 @@ input:disabled {
 .opacitytransp {
 	opacity: 0;
 }
+select:invalid { color: gray; }
+input:disabled {
+	background:#f4f4f4;
+}
 
 input.liste_titre {
 	box-shadow: none !important;
@@ -331,14 +335,15 @@ input.removedfile {
 textarea:disabled {
 	background:#f4f4f4;
 }
+input[type=file ]    { background-color: transparent; border-top: none; border-left: none; border-right: none; box-shadow: none; }
 input[type=checkbox] { background-color: transparent; border: none; box-shadow: none; }
 input[type=radio]    { background-color: transparent; border: none; box-shadow: none; }
 input[type=image]    { background-color: transparent; border: none; box-shadow: none; }
 input[type=text]     { min-width: 20px; }
 input:-webkit-autofill {
-	background-color: <?php echo empty($dol_use_jmobile)?'#FBFFEA':'#FFFFFF' ?> !important;
+	background-color: #FBFFEA !important;
 	background-image:none !important;
-	-webkit-box-shadow: 0 0 0 50px <?php echo empty($dol_use_jmobile)?'#FBFFEA':'#FFFFFF' ?> inset;
+	-webkit-box-shadow: 0 0 0 50px #FBFFEA inset;
 }
 ::-webkit-input-placeholder { color:#ccc; }
 :-moz-placeholder { color:#bbb; } 			/* firefox 18- */
@@ -346,9 +351,6 @@ input:-webkit-autofill {
 :-ms-input-placeholder { color:#ccc; } 		/* ie */
 input:-moz-placeholder { color:#ccc; }
 
-<?php if (! empty($dol_use_jmobile)) { ?>
-legend { margin-bottom: 8px; }
-<?php } ?>
 fieldset { border: 1px solid #AAAAAA !important; }
 
 
@@ -538,7 +540,7 @@ div.myavailability {
     margin-top: 6px;	
     margin-left: 4px;	
 }
-.selectlimit {
+.selectlimit, .marginrightonly {
 	margin-right: 10px !important;
 }
 .strikefordisabled {
@@ -600,30 +602,37 @@ div.myavailability {
 .clearboth  { clear:both; }
 .hideobject { display: none; }
 .minwidth50  { min-width: 50px; }
-.minwidth100 { min-width: 100px; }
-.minwidth200 { min-width: 200px; }
-.minwidth300 { min-width: 300px; }
-.minwidth400 { min-width: 400px; }
-.minwidth500 { min-width: 500px; }
-.minwidth50imp  { min-width: 50px !important; }
-.minwidth100imp { min-width: 100px !important; }
-.minwidth200imp { min-width: 200px !important; }
-.minwidth300imp { min-width: 300px !important; }
-.minwidth400imp { min-width: 400px !important; }
-.minwidth500imp { min-width: 500px !important; }
+/* rule to reduce top menu - 3rd reduction */
+@media only screen and (min-width: <?php echo round($nbtopmenuentries * $fontsize * 3.4, 0) + 7; ?>px)
+{
+	.minwidth100 { min-width: 100px; }
+	.minwidth200 { min-width: 200px; }
+	.minwidth300 { min-width: 300px; }
+	.minwidth400 { min-width: 400px; }
+	.minwidth500 { min-width: 500px; }
+	.minwidth50imp  { min-width: 50px !important; }
+	.minwidth100imp { min-width: 100px !important; }
+	.minwidth200imp { min-width: 200px !important; }
+	.minwidth300imp { min-width: 300px !important; }
+	.minwidth400imp { min-width: 400px !important; }
+	.minwidth500imp { min-width: 500px !important; }
+}
+.maxwidth50  { max-width: 50px; }
+.maxwidth75  { max-width: 75px; }
 .maxwidth100 { max-width: 100px; }
 .maxwidth150 { max-width: 150px; }
 .maxwidth200 { max-width: 200px; }
 .maxwidth300 { max-width: 300px; }
 .maxwidth400 { max-width: 400px; }
 .maxwidth500 { max-width: 500px; }
+.maxwidth50imp  { max-width: 50px !important; }
 .minheight20 { min-height: 20px; }
 .minheight40 { min-height: 40px; }
 .titlefieldcreate { width: 20%; }
 .titlefield       { width: 25%; }
 .titlefieldmiddle { width: 50%; }
 
-/* Force values for small screen */
+/* Force values for small screen 1400 */
 @media only screen and (max-width: 1400px)
 {
 	.titlefield { width: 30% !important; }
@@ -636,6 +645,7 @@ div.myavailability {
     .minwidth500imp { min-width: 300px !important; }
 }
 
+/* Force values for small screen 1000 */
 @media only screen and (max-width: 1000px)
 {
     .maxwidthonsmartphone { max-width: 100px; }
@@ -647,14 +657,36 @@ div.myavailability {
     .minwidth500imp { min-width: 100px !important; }
 }
 
-/* Force values for small screen */
+/* Force values for small screen 570 */
 @media only screen and (max-width: 570px)
 {
+	div.titre {
+		line-height: 2em;
+	}
+    .border tbody tr, .border tbody tr td, div.tabBar table.border tr {
+    	height: 40px !important;
+    }
+	
+    .quatrevingtpercent, .inputsearch {
+    	width: 95%;
+    }
+    	
+	input, input[type=text], input[type=password], select, textarea     { 
+		min-width: 20px; 
+    	min-height: 1.4em;
+    	line-height: 1.4em;
+    	padding: .4em .1em;
+    	border: 1px solid #BBB;
+    	/* max-width: inherit; why this */
+     }
+     
     .hideonsmartphone { display: none; }
     .noenlargeonsmartphone { width : 50px !important; display: inline !important; }
     .maxwidthonsmartphone { max-width: 100px; }
-    .maxwidth100onsmartphone { max-width: 100px; }
-    .maxwidth150onsmartphone { max-width: 150px; }
+    .maxwidth50onsmartphone { max-width: 40px; }
+    .maxwidth75onsmartphone { max-width: 50px; }
+    .maxwidth100onsmartphone { max-width: 70px; }
+    .maxwidth150onsmartphone { max-width: 120px; }
     .maxwidth200onsmartphone { max-width: 200px; }
     .maxwidth300onsmartphone { max-width: 300px; }
     .maxwidth400onsmartphone { max-width: 400px; }
@@ -666,6 +698,31 @@ div.myavailability {
     .minwidth500imp { min-width: 50px !important; }
     .titlefield { width: auto; }
     .titlefieldcreate { width: auto; }
+    
+	#tooltip {
+		position: absolute;
+		width: <?php print dol_size(300,'width'); ?>px;
+	}
+	
+	/* intput, input[type=text], */
+	select {
+		width: 98%;
+		min-width: 40px;
+	}
+	
+	div.divphotoref {
+		padding-right: 5px;	
+	}
+    img.photoref, div.photoref {
+    	border: none;
+    	-moz-box-shadow: none;
+        -webkit-box-shadow: none;
+        box-shadow: none;
+        padding: 4px;
+    	height: 20px;
+    	width: 20px;
+        object-fit: contain;
+    }    
 }
 .linkobject { cursor: pointer; }
 <?php if (GETPOST("optioncss") == 'print') { ?>
@@ -2083,13 +2140,11 @@ span.butAction, span.butActionDelete {
 	color: #ffffff !important;
 	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 	background-color: #006dcc;
-	<?php // if (empty($conf->dol_use_jmobile)) { ?>
 	background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
 	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
 	background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
 	background-image: -o-linear-gradient(top, #0088cc, #0044cc);
 	background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-	<?php // } ?>
 	background-repeat: repeat-x;
 	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
 	border-color: #0044cc #0044cc #002a80;
@@ -2214,10 +2269,7 @@ table.borderplus {
 	border: 1px solid #BBB;
 }
 
-.border tbody tr, .border tbody tr td {
-	height: 20px;
-}
-div.tabBar table.border tr {
+.border tbody tr, .border tbody tr td, div.tabBar table.border tr {
 	height: 20px;
 }
 
@@ -2351,7 +2403,7 @@ table.listwithfilterbefore {
 
 /* Pagination */
 div.refidpadding  {
-	padding-top: <?php print empty($conf->dol_use_jmobile)?'3':'14'; ?>px;
+	padding-top: 3px;
 }
 div.refid  {
 	font-weight: bold;
@@ -2387,10 +2439,8 @@ div.pagination li {
   display: inline-block;
   padding-left: 0px;
   padding-right: 0px;
-<?php if (empty($conf->dol_use_jmobile)) { ?>
   padding-top: 6px;
   padding-bottom: 5px;
-<?php } ?>
 }
 .pagination {
   display: inline-block;
@@ -2400,7 +2450,6 @@ div.pagination li {
 
 div.pagination li.pagination a,
 div.pagination li.pagination span {
-<?php if (empty($conf->dol_use_jmobile)) { ?>
   padding: 6px 12px;
   margin-left: -1px;
   line-height: 1.42857143;
@@ -2414,7 +2463,6 @@ div.pagination li.pagination span {
     background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
     background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
     background-repeat: repeat-x;
-<?php } ?>
 }
 div.pagination li.pagination span.inactive {
   cursor: default;
@@ -2427,13 +2475,6 @@ border: none;
   padding-left: 4px;
   font-weight: bold;
 }
-<?php if (! empty($conf->dol_use_jmobile)) { ?>
-div.pagination li.litext {
-  padding-top: 13px;
-  vertical-align: top;
-}
-<?php } ?>
-<?php if (empty($conf->dol_use_jmobile)) { ?>
 div.pagination li.noborder a:hover {
   border: none;
   background-color: transparent;
@@ -2485,7 +2526,6 @@ div.pagination .disabled a:focus {
   background-color: #fff;
   border-color: #ddd;
 }
-<?php } ?>
 div.pagination li.pagination .active {
   text-decoration: underline;
 }
@@ -4083,11 +4123,7 @@ a.ui-link, a.ui-link:hover, .ui-btn:hover, span.ui-btn-text:hover, span.ui-btn-i
 	min-width: .4em;
 	padding-left: 6px;
 	padding-right: 6px;
-	<?php if (! empty($dol_use_jmobile)) { ?>
-	font-size: 13px;
-	<?php } else { ?>
 	font-size: <?php print $fontsize ?>px;
-	<?php } ?>
 	/* white-space: normal; */		/* Warning, enable this break the truncate feature */
 }
 .ui-btn-icon-right .ui-btn-inner {
@@ -4362,6 +4398,8 @@ border-top-right-radius: 6px;
 img.demothumb {
     box-shadow: 2px 2px 8px #888;
 	margin-bottom: 4px;
+    margin-right: 20px;
+    margin-left: 10px;
 }
 
 
@@ -4509,8 +4547,7 @@ img.demothumb {
 		width: <?php print dol_size(300,'width'); ?>px;
 	}
 	select {
-		width: 100%;
-		max-width: 100px;
+		width: 98%;
 		min-width: 0 !important;
 	}
 	div.divphotoref {
diff --git a/htdocs/user/agenda_extsites.php b/htdocs/user/agenda_extsites.php
index 823f5ad307e9fc6af682658935e063ba77785b78..ef7ffd9f70b17ecb34a18e490ed28b154fb3bdf6 100644
--- a/htdocs/user/agenda_extsites.php
+++ b/htdocs/user/agenda_extsites.php
@@ -169,7 +169,7 @@ print "<table class=\"noborder\" width=\"100%\">";
 print "<tr class=\"liste_titre\">";
 print "<td>".$langs->trans("Parameter")."</td>";
 print "<td>".$langs->trans("Name")."</td>";
-print "<td>".$langs->trans("ExtSiteUrlAgenda")." (".$langs->trans("Example").': http://yoursite/agenda/agenda.ics)</td>';
+print "<td>".$langs->trans("ExtSiteUrlAgenda").'<div class="hideonsmartphone">'." (".$langs->trans("Example").': http://yoursite/agenda/agenda.ics)</div></td>';
 print "<td>".$form->textwithpicto($langs->trans("FixTZ"), $langs->trans("FillFixTZOnlyIfRequired"), 1).'</td>';
 print '<td align="right">'.$langs->trans("Color").'</td>';
 print "</tr>";
@@ -187,13 +187,13 @@ while ($i <= $MAXAGENDA)
 	$var=!$var;
 	print "<tr ".$bc[$var].">";
 	// Nb
-	print '<td width="180" class="nowrap">'.$langs->trans("AgendaExtNb",$key)."</td>";
+	print '<td class="maxwidth50onsmartphone">'.$langs->trans("AgendaExtNb",$key)."</td>";
 	// Name
-	print '<td><input type="text" class="flat hideifnotset" name="AGENDA_EXT_NAME_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_NAME_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_NAME_'.$id.'_'.$key):$object->conf->$name) . '" size="28"></td>';
+	print '<td class="maxwidth50onsmartphone"><input type="text" class="flat hideifnotset minwidth100" name="AGENDA_EXT_NAME_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_NAME_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_NAME_'.$id.'_'.$key):$object->conf->$name) . '"></td>';
 	// URL
-	print '<td><input type="url" class="flat hideifnotset" name="AGENDA_EXT_SRC_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_SRC_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_SRC_'.$id.'_'.$key):$object->conf->$src) . '" size="60"></td>';
+	print '<td class="maxwidth50onsmartphone"><input type="url" class="flat hideifnotset" name="AGENDA_EXT_SRC_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_SRC_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_SRC_'.$id.'_'.$key):$object->conf->$src) . '"></td>';
 	// Offset TZ
-	print '<td><input type="text" class="flat hideifnotset" name="AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key):$object->conf->$offsettz) . '" size="2"></td>';
+	print '<td><input type="text" class="flat hideifnotset" name="AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key.'" value="'. (GETPOST('AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key)?GETPOST('AGENDA_EXT_OFFSETTZ_'.$id.'_'.$key):$object->conf->$offsettz) . '" size="1"></td>';
 	// Color (Possible colors are limited by Google)
 	print '<td class="nowrap" align="right">';
 	//print $formadmin->selectColor($conf->global->$color, "google_agenda_color".$key, $colorlist);
diff --git a/htdocs/user/card.php b/htdocs/user/card.php
index d2c96ab7950c1c4566f7f5b6ae66095250bccc3f..0cd5b07799655925c9accf6e919bfe0cb28cf5c3 100644
--- a/htdocs/user/card.php
+++ b/htdocs/user/card.php
@@ -733,7 +733,7 @@ if (($action == 'create') || ($action == 'adduserldap'))
     }
     else
     {
-        print '<input size="30" type="text" id="lastname" name="lastname" value="'.GETPOST('lastname').'">';
+        print '<input class="minwidth100" type="text" id="lastname" name="lastname" value="'.GETPOST('lastname').'">';
     }
     print '</td></tr>';
 
@@ -747,7 +747,7 @@ if (($action == 'create') || ($action == 'adduserldap'))
     }
     else
     {
-        print '<input size="30" type="text" name="firstname" value="'.GETPOST('firstname').'">';
+        print '<input class="minwidth100" type="text" name="firstname" value="'.GETPOST('firstname').'">';
     }
     print '</td></tr>';
 
@@ -1802,7 +1802,7 @@ else
             print '<td>';
             if ($caneditfield && !$object->ldap_sid)
             {
-                print '<input size="30" type="text" class="flat" name="lastname" value="'.$object->lastname.'">';
+                print '<input class="minwidth100" type="text" class="flat" name="lastname" value="'.$object->lastname.'">';
             }
             else
             {
@@ -1817,7 +1817,7 @@ else
             print '<td>';
             if ($caneditfield && !$object->ldap_sid)
             {
-                print '<input size="30" type="text" class="flat" name="firstname" value="'.$object->firstname.'">';
+                print '<input class="minwidth100" type="text" class="flat" name="firstname" value="'.$object->firstname.'">';
             }
             else
             {
@@ -1829,8 +1829,8 @@ else
             // Photo
             print '<tr>';
             print '<td>'.$langs->trans("Photo").'</td>';
-            print '<td valign="middle">';
-            print $form->showphoto('userphoto',$object,100,0,$caneditfield,'photowithmargin','small');
+            print '<td>';
+            print $form->showphoto('userphoto',$object,60,0,$caneditfield,'photowithmargin','small');
             print '</td>';
             print '</tr>';
 
@@ -1902,7 +1902,7 @@ else
             if(! empty($conf->api->enabled) && $user->admin) {
                 print '<tr><td>'.$langs->trans("ApiKey").'</td>';
                 print '<td>';
-                print '<input size="30" maxsize="32" type="text" id="api_key" name="api_key" value="'.$object->api_key.'" autocomplete="off">';
+                print '<input class="minwidth100" maxsize="32" type="text" id="api_key" name="api_key" value="'.$object->api_key.'" autocomplete="off">';
                 if (! empty($conf->use_javascript_ajax))
                     print '&nbsp;'.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_api_key" class="linkobject"');
                 print '</td></tr>';
@@ -1992,7 +1992,7 @@ else
             }
 
            	// Type
-           	print '<tr><td width="25%">'.$langs->trans("Type").'</td>';
+           	print '<tr><td>'.$langs->trans("Type").'</td>';
            	print '<td>';
            	if ($user->id == $object->id || ! $user->admin)
            	{
@@ -2035,7 +2035,7 @@ else
             // State
             if (empty($conf->global->USER_DISABLE_STATE))
             {
-                print '<tr><td>'.fieldLabel('State','state_id').'</td><td>';
+                print '<tr><td class="tdoverflow">'.fieldLabel('State','state_id').'</td><td>';
                 print $formcompany->select_state($object->state_id,$object->country_code, 'state_id');
                 print '</td></tr>';
             }
@@ -2104,7 +2104,7 @@ else
             print '<td>';
             if ($caneditfield  && empty($object->ldap_sid))
             {
-                print '<input size="40" type="text" name="email" class="flat" value="'.$object->email.'">';
+                print '<input class="minwidth100" type="text" name="email" class="flat" value="'.$object->email.'">';
             }
             else
             {
@@ -2135,7 +2135,7 @@ else
                 print '<td>';
                 if ($caneditfield)
                 {
-                    print '<input size="40" type="url" name="openid" class="flat" value="'.$object->openid.'">';
+                    print '<input class="minwidth100" type="url" name="openid" class="flat" value="'.$object->openid.'">';
                 }
                 else
               {
diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php
index 997933e234b03a111ccd2d413f93a48b97a068e7..75af1dae8e3dae56425a54fe35d7c25b4271a4ac 100644
--- a/htdocs/user/class/user.class.php
+++ b/htdocs/user/class/user.class.php
@@ -1659,38 +1659,48 @@ class User extends CommonObject
 		$outputlangs->load("users");
 		$outputlangs->load("other");
 
-		$subject = $outputlangs->transnoentitiesnoconv("SubjectNewPassword");
+		$appli=constant('DOL_APPLICATION_TITLE');
+		if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $appli=$conf->global->MAIN_APPLICATION_TITLE;
+		
+		$subject = $outputlangs->transnoentitiesnoconv("SubjectNewPassword", $appli);
 
 		// Define $urlwithroot
 		//$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
-		//$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT;		// This is to use external domain name found into config file
-		$urlwithroot=DOL_MAIN_URL_ROOT;						// This is to use same domain name than current
+		$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT;		// This is to use external domain name found into config file
+		//$urlwithroot=DOL_MAIN_URL_ROOT;						// This is to use same domain name than current
 
 		if (! $changelater)
 		{
+			$url = $urlwithroot.'/';
+		    
 			$mesg.= $outputlangs->transnoentitiesnoconv("RequestToResetPasswordReceived").".\n";
 			$mesg.= $outputlangs->transnoentitiesnoconv("NewKeyIs")." :\n\n";
 			$mesg.= $outputlangs->transnoentitiesnoconv("Login")." = ".$this->login."\n";
 			$mesg.= $outputlangs->transnoentitiesnoconv("Password")." = ".$password."\n\n";
 			$mesg.= "\n";
-			$url = $urlwithroot.'/';
-			$mesg.= $outputlangs->transnoentitiesnoconv("ClickHereToGoTo", $conf->global->MAIN_APPLICATION_TITLE).': '.$url."\n\n";
+			
+			$mesg.= $outputlangs->transnoentitiesnoconv("ClickHereToGoTo", $appli).': '.$url."\n\n";
 			$mesg.= "--\n";
 			$mesg.= $user->getFullName($outputlangs);	// Username that make then sending
+		
+			dol_syslog(get_class($this)."::send_password changelater is off, url=".$url);
 		}
 		else
 		{
+			$url = $urlwithroot.'/user/passwordforgotten.php?action=validatenewpassword&username='.$this->login."&passwordhash=".dol_hash($password);
+		    
 			$mesg.= $outputlangs->transnoentitiesnoconv("RequestToResetPasswordReceived")."\n";
 			$mesg.= $outputlangs->transnoentitiesnoconv("NewKeyWillBe")." :\n\n";
 			$mesg.= $outputlangs->transnoentitiesnoconv("Login")." = ".$this->login."\n";
 			$mesg.= $outputlangs->transnoentitiesnoconv("Password")." = ".$password."\n\n";
 			$mesg.= "\n";
 			$mesg.= $outputlangs->transnoentitiesnoconv("YouMustClickToChange")." :\n";
-			$url = $urlwithroot.'/user/passwordforgotten.php?action=validatenewpassword&username='.$this->login."&passwordhash=".dol_hash($password);
 			$mesg.= $url."\n\n";
 			$mesg.= $outputlangs->transnoentitiesnoconv("ForgetIfNothing")."\n\n";
-			dol_syslog(get_class($this)."::send_password url=".$url);
+			
+			dol_syslog(get_class($this)."::send_password changelater is on, url=".$url);
 		}
+
         $mailfile = new CMailFile(
             $subject,
             $this->email,
diff --git a/htdocs/user/document.php b/htdocs/user/document.php
index 36338f03e10204f90438c64c716657137380d884..d19223719094c5a3e77d0843a9a97d6dad93b696 100644
--- a/htdocs/user/document.php
+++ b/htdocs/user/document.php
@@ -96,6 +96,7 @@ if ($id > 0 || ! empty($ref))
 // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
 $hookmanager->initHooks(array('usercard','globalcard'));
 
+
 /*
  * Actions
  */
@@ -108,6 +109,7 @@ if (empty($reshook)) {
 	include_once DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php';
 }
 
+
 /*
  * View
  */
@@ -144,20 +146,21 @@ if ($object->id)
 	}
 
 
-	print '<table class="border"width="100%">';
+	print '<table class="border" width="100%">';
 
     // Login
-    print '<tr><td>'.$langs->trans("Login").'</td><td class="valeur" colspan="3">'.$object->login.'&nbsp;</td></tr>';
+    print '<tr><td class="titlefield">'.$langs->trans("Login").'</td><td class="valeur">'.$object->login.'&nbsp;</td></tr>';
 
-	// Nbre fichiers
-	print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
+	// Nbre files
+	print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td>'.count($filearray).'</td></tr>';
 
 	//Total taille
-	print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>';
+	print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td>'.$totalsize.' '.$langs->trans("bytes").'</td></tr>';
 
 	print '</table>';
 
-	print '</div>';
+	dol_fiche_end();
+	
 
 	$modulepart = 'user';
 	$permission = $user->rights->user->user->creer;
diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php
index 3240ae2d5ec6042a1f72f92106087acb9244a40e..87d96a466383b4c7f2ace41d5a7450c1f18bd5e1 100644
--- a/htdocs/user/perms.php
+++ b/htdocs/user/perms.php
@@ -329,8 +329,8 @@ if ($result)
         	{
         		// On affiche ligne pour modifier droits
         		print '<tr '. $bc[$var].'>';
-        		print '<td class="nowrap">'.img_object('',$picto).' '.$objMod->getName();
-        		print '<a name="'.$objMod->getName().'">&nbsp;</a></td>';
+        		print '<td class="maxwidthonsmartphone tdoverflow">'.img_object('',$picto).' '.$objMod->getName();
+        		print '<a name="'.$objMod->getName().'"></a></td>';
         		print '<td align="center" class="nowrap">';
         		print '<a class="reposition" title="'.dol_escape_htmltag($langs->trans("All")).'" alt="'.dol_escape_htmltag($langs->trans("All")).'" href="perms.php?id='.$object->id.'&amp;action=addrights&amp;entity='.$entity.'&amp;module='.$obj->module.'">'.$langs->trans("All")."</a>";
         		print '/';
@@ -344,7 +344,7 @@ if ($result)
 		print '<tr '. $bc[$var].'>';
 
 		// Picto and label of permission
-		print '<td>'.img_object('',$picto).' '.$objMod->getName().'</td>';
+		print '<td class="maxwidthonsmartphone tdoverflow">'.img_object('',$picto).' '.$objMod->getName().'</td>';
 
         // Permission and tick
         if (! empty($object->admin) && ! empty($objMod->rights_admin_allowed))    // Permission own because admin
@@ -403,7 +403,7 @@ if ($result)
         }
 
 		$permlabel=($conf->global->MAIN_USE_ADVANCED_PERMS && ($langs->trans("PermissionAdvanced".$obj->id)!=("PermissionAdvanced".$obj->id))?$langs->trans("PermissionAdvanced".$obj->id):(($langs->trans("Permission".$obj->id)!=("Permission".$obj->id))?$langs->trans("Permission".$obj->id):$langs->trans($obj->libelle)));
-		print '<td>'.$permlabel. '</td>';
+		print '<td class="maxwidthonsmartphone">'.$permlabel.'</td>';
 
 		print '</tr>'."\n";
 
diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php
index b6d33de99aea9dbb9ae43c9b9134e061669cc366..6fa65660df1619a7adf4610ede70d8e8f6b63532 100644
--- a/htdocs/viewimage.php
+++ b/htdocs/viewimage.php
@@ -36,7 +36,13 @@ if (! defined('NOREQUIREAJAX'))		define('NOREQUIREAJAX','1');
 if (! defined('NOREQUIREHOOK'))		define('NOREQUIREHOOK','1');	// Disable "main.inc.php" hooks
 // Some value of modulepart can be used to get resources that are public so no login are required.
 if ((isset($_GET["modulepart"]) && $_GET["modulepart"] == 'companylogo') && ! defined("NOLOGIN")) define("NOLOGIN",'1');
-if ((isset($_GET["modulepart"]) && $_GET["modulepart"] == 'medias') && ! defined("NOLOGIN")) define("NOLOGIN",'1');
+if ((isset($_GET["modulepart"]) && $_GET["modulepart"] == 'medias') && ! defined("NOLOGIN"))
+{
+	define("NOLOGIN",'1');
+	// For multicompany
+	$entity=(! empty($_GET['entity']) ? (int) $_GET['entity'] : (! empty($_POST['entity']) ? (int) $_POST['entity'] : 1));
+	if (is_numeric($entity)) define("DOLENTITY", $entity);
+}
 
 /**
  * Header empty
diff --git a/scripts/cron/cron_run_jobs.php b/scripts/cron/cron_run_jobs.php
index e10d089c2a861362d1f30c7172d4baaa1e38344d..d60218fba22176bd2ee15f918dbed861e17db2e2 100755
--- a/scripts/cron/cron_run_jobs.php
+++ b/scripts/cron/cron_run_jobs.php
@@ -82,7 +82,7 @@ if ($key != $conf->global->CRON_KEY)
 // If param userlogin is reserved word 'firstadmin' 
 if ($userlogin == 'firstadmin')
 {
-    $sql='SELECT login from '.MAIN_DB_PREFIX.'user WHERE admin = 1 ORDER BY entity LIMIT 1';
+    $sql='SELECT login from '.MAIN_DB_PREFIX.'user WHERE admin = 1 and statut = 1 ORDER BY entity LIMIT 1';
     $resql=$db->query($sql);
     if ($resql)
     {