diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index a59d6fca3bb010a5c22b5f51f8f1b13628102cf1..6b290ab8f078223440964767512675fbd72dfa5e 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -843,114 +843,110 @@ if ($mode == 'marketplace')
 
 if ($mode == 'deploy')
 {
-    dol_fiche_head($head, $mode, '', -1);
+	dol_fiche_head($head, $mode, '', -1);
 
+	$dolibarrdataroot=preg_replace('/([\\/]+)$/i','',DOL_DATA_ROOT);
+	$allowonlineinstall=true;
+	$allowfromweb=1;
+	if (dol_is_file($dolibarrdataroot.'/installmodules.lock')) $allowonlineinstall=false;
 
-    $allowonlineinstall=true;
-    $allowfromweb=1;
-    if (dol_is_file($dolibarrdataroot.'/installmodules.lock')) $allowonlineinstall=false;
+	$fullurl='<a href="'.$urldolibarrmodules.'" target="_blank">'.$urldolibarrmodules.'</a>';
+	$message='';
+	if (! empty($allowonlineinstall))
+	{
+		if (! in_array('/custom',explode(',',$dolibarr_main_url_root_alt)))
+		{
+			$message=info_admin($langs->trans("ConfFileMustContainCustom", DOL_DOCUMENT_ROOT.'/custom', DOL_DOCUMENT_ROOT));
+			$allowfromweb=-1;
+		}
+		else
+		{
+			if ($dirins_ok)
+			{
+				if (! is_writable(dol_osencode($dirins)))
+				{
+					$langs->load("errors");
+					$message=info_admin($langs->trans("ErrorFailedToWriteInDir",$dirins));
+					$allowfromweb=0;
+				}
+			}
+			else
+			{
+				$message=info_admin($langs->trans("NotExistsDirect",$dirins).$langs->trans("InfDirAlt").$langs->trans("InfDirExample"));
+				$allowfromweb=0;
+			}
+		}
+	}
+	else
+	{
+		$message=info_admin($langs->trans("InstallModuleFromWebHasBeenDisabledByFile",$dolibarrdataroot.'/installmodules.lock'));
+		$allowfromweb=0;
+	}
 
-    $fullurl='<a href="'.$urldolibarrmodules.'" target="_blank">'.$urldolibarrmodules.'</a>';
-    $message='';
-    if (! empty($allowonlineinstall))
-    {
-        if (! in_array('/custom',explode(',',$dolibarr_main_url_root_alt)))
-        {
-            $message=info_admin($langs->trans("ConfFileMustContainCustom", DOL_DOCUMENT_ROOT.'/custom', DOL_DOCUMENT_ROOT));
-            $allowfromweb=-1;
-        }
-        else
-        {
-            if ($dirins_ok)
-            {
-                if (! is_writable(dol_osencode($dirins)))
-                {
-                    $langs->load("errors");
-                    $message=info_admin($langs->trans("ErrorFailedToWriteInDir",$dirins));
-                    $allowfromweb=0;
-                }
-            }
-            else
-            {
+	if ($allowfromweb < 1)
+	{
+		print $langs->trans("SomethingMakeInstallFromWebNotPossible");
+		print $message;
+		//print $langs->trans("SomethingMakeInstallFromWebNotPossible2");
+		print '<br>';
+	}
 
-                $message=info_admin($langs->trans("NotExistsDirect",$dirins).$langs->trans("InfDirAlt").$langs->trans("InfDirExample"));
-                $allowfromweb=0;
-            }
-        }
-    }
-    else
-    {
-        $message=info_admin($langs->trans("InstallModuleFromWebHasBeenDisabledByFile",$dolibarrdataroot.'/installmodules.lock'));
-        $allowfromweb=0;
-    }
+	print '<br>';
 
-    if ($allowfromweb < 1)
-    {
-    	print $langs->trans("SomethingMakeInstallFromWebNotPossible");
-    	print $message;
-    	//print $langs->trans("SomethingMakeInstallFromWebNotPossible2");
-    	print '<br>';
-    }
+	if ($allowfromweb >= 0)
+	{
+		if ($allowfromweb == 1)
+		{
+			//print $langs->trans("ThisIsProcessToFollow").'<br>';
+		}
+		else
+		{
+			print $langs->trans("ThisIsAlternativeProcessToFollow").'<br>';
+			print '<b>'.$langs->trans("StepNb",1).'</b>: ';
+			print $langs->trans("FindPackageFromWebSite",$fullurl).'<br>';
+			print '<b>'.$langs->trans("StepNb",2).'</b>: ';
+			print $langs->trans("DownloadPackageFromWebSite",$fullurl).'<br>';
+			print '<b>'.$langs->trans("StepNb",3).'</b>: ';
+		}
 
-    print '<br>';
+		if ($allowfromweb == 1)
+		{
+			print $langs->trans("UnpackPackageInModulesRoot",$dirins).'<br>';
 
-    if ($allowfromweb >= 0)
-    {
-    	if ($allowfromweb == 1)
-    	{
-    	    //print $langs->trans("ThisIsProcessToFollow").'<br>';
-    	}
-    	else
-    	{
-    	    print $langs->trans("ThisIsAlternativeProcessToFollow").'<br>';
-        	print '<b>'.$langs->trans("StepNb",1).'</b>: ';
-        	print $langs->trans("FindPackageFromWebSite",$fullurl).'<br>';
-        	print '<b>'.$langs->trans("StepNb",2).'</b>: ';
-        	print $langs->trans("DownloadPackageFromWebSite",$fullurl).'<br>';
-        	print '<b>'.$langs->trans("StepNb",3).'</b>: ';
-    	}
-
-    	if ($allowfromweb == 1)
-    	{
-    		print $langs->trans("UnpackPackageInModulesRoot",$dirins).'<br>';
-
-    		print '<br>';
-
-            print '<form enctype="multipart/form-data" method="POST" class="noborder" action="'.$_SERVER["PHP_SELF"].'" name="forminstall">';
-    		print '<input type="hidden" name="action" value="install">';
-    		print '<input type="hidden" name="mode" value="deploy">';
-    		print $langs->trans("YouCanSubmitFile").' <input type="file" name="fileinstall"> ';
-    		print '<input type="submit" name="send" value="'.dol_escape_htmltag($langs->trans("Send")).'" class="button">';
-    		print '</form>';
-
-            print '<br>';
-            print '<br>';
-
-            print '<div class="center"><div class="logo_setup"></div></div>';
-    	}
-    	else
-    	{
-    		print $langs->trans("UnpackPackageInModulesRoot",$dirins).'<br>';
-    		print '<b>'.$langs->trans("StepNb",4).'</b>: ';
-    		print $langs->trans("SetupIsReadyForUse").'<br>';
-    	}
-    }
+			print '<br>';
 
+			print '<form enctype="multipart/form-data" method="POST" class="noborder" action="'.$_SERVER["PHP_SELF"].'" name="forminstall">';
+			print '<input type="hidden" name="action" value="install">';
+			print '<input type="hidden" name="mode" value="deploy">';
+			print $langs->trans("YouCanSubmitFile").' <input type="file" name="fileinstall"> ';
+			print '<input type="submit" name="send" value="'.dol_escape_htmltag($langs->trans("Send")).'" class="button">';
+			print '</form>';
 
-    if (! empty($result['return']))
-    {
-    	print '<br>';
+			print '<br>';
+			print '<br>';
 
-    	foreach($result['return'] as $value)
-    	{
-    		echo $value.'<br>';
-    	}
-    }
+			print '<div class="center"><div class="logo_setup"></div></div>';
+		}
+		else
+		{
+			print $langs->trans("UnpackPackageInModulesRoot",$dirins).'<br>';
+			print '<b>'.$langs->trans("StepNb",4).'</b>: ';
+			print $langs->trans("SetupIsReadyForUse").'<br>';
+		}
+	}
 
-    dol_fiche_end();
-}
+	if (! empty($result['return']))
+	{
+		print '<br>';
 
+		foreach($result['return'] as $value)
+		{
+			echo $value.'<br>';
+		}
+	}
 
+	dol_fiche_end();
+}
 
 llxFooter();
 
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index b8544ee3edad74e59f22c9ab703858e7014a38df..d5cbd14c11d9b9356a760ac54cc1b95bb9b48b64 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -794,6 +794,7 @@ TitleSetToDraft=Go back to draft
 ConfirmSetToDraft=Are you sure you want to go back to Draft status ?
 ImportId=Import id
 Websites=Web sites
+Events=Events
 # Week day
 Monday=Monday
 Tuesday=Tuesday
diff --git a/htdocs/margin/customerMargins.php b/htdocs/margin/customerMargins.php
index 85f13a881abb4f35d9d21e125d5aaf04db5622f7..c83ca40634747bcda9996d527029b97f20670cf2 100644
--- a/htdocs/margin/customerMargins.php
+++ b/htdocs/margin/customerMargins.php
@@ -180,26 +180,27 @@ $sql = "SELECT";
 $sql.= " s.rowid as socid, s.nom as name, s.code_client, s.client,";
 if ($client) $sql.= " f.rowid as facid, f.facnumber, f.total as total_ht, f.datef, f.paye, f.fk_statut as statut,";
 $sql.= " sum(d.total_ht) as selling_price,";
-// Note: qty and buy_price_ht is always positive (if not your database may be corrupted, you can update this)
+// Note: qty and buy_price_ht is always positive (if not, your database may be corrupted, you can update this)
 $sql.= " sum(".$db->ifsql('d.total_ht < 0','d.qty * d.buy_price_ht * -1','d.qty * d.buy_price_ht').") as buying_price,";
 $sql.= " sum(".$db->ifsql('d.total_ht < 0','-1 * (abs(d.total_ht) - (d.buy_price_ht * d.qty))','d.total_ht - (d.buy_price_ht * d.qty)').") as marge";
 $sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
 $sql.= ", ".MAIN_DB_PREFIX."facture as f";
 $sql.= ", ".MAIN_DB_PREFIX."facturedet as d";
+if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
 $sql.= " WHERE f.fk_soc = s.rowid";
+if ($socid > 0) $sql.= ' AND s.rowid = '.$socid;
+if (!$user->rights->societe->client->voir && ! $socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
 $sql.= " AND f.fk_statut > 0";
 $sql.= ' AND s.entity IN ('.getEntity('societe').')';
 $sql.= " AND d.fk_facture = f.rowid";
 $sql.= " AND (d.product_type = 0 OR d.product_type = 1)";
-if ($client)
-  $sql.= " AND f.fk_soc = ".$socid;
 if (!empty($startdate))
-  $sql.= " AND f.datef >= '".$db->idate($startdate)."'";
+$sql.= " AND f.datef >= '".$db->idate($startdate)."'";
 if (!empty($enddate))
-  $sql.= " AND f.datef <= '".$db->idate($enddate)."'";
+$sql.= " AND f.datef <= '".$db->idate($enddate)."'";
 $sql .= " AND d.buy_price_ht IS NOT NULL";
 if (isset($conf->global->ForceBuyingPriceIfNull) && $conf->global->ForceBuyingPriceIfNull == 1)
-	$sql .= " AND d.buy_price_ht <> 0";
+$sql .= " AND d.buy_price_ht <> 0";
 if ($client) $sql.= " GROUP BY s.rowid, s.nom, s.code_client, s.client, f.rowid, f.facnumber, f.total, f.datef, f.paye, f.fk_statut";
 else $sql.= " GROUP BY s.rowid, s.nom, s.code_client, s.client";
 $sql.=$db->order($sortfield,$sortorder);
diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php
index 204b393cc6d14591d9f1bf5825a56ac5fb532820..c00e93e239f0b2d7a2ab348571ea3be11e87906a 100644
--- a/htdocs/projet/tasks.php
+++ b/htdocs/projet/tasks.php
@@ -1,7 +1,7 @@
 <?php
 /* Copyright (C) 2005      Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2004-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2017 Regis Houssin        <regis.houssin@capnetworks.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
@@ -70,7 +70,9 @@ $hookmanager->initHooks(array('projecttaskcard','globalcard'));
 $progress=GETPOST('progress', 'int');
 $label=GETPOST('label', 'alpha');
 $description=GETPOST('description');
-$planned_workload=GETPOST('planned_workloadhour')*3600+GETPOST('planned_workloadmin')*60;
+$planned_workloadhour=(GETPOST('planned_workloadhour','int')?GETPOST('planned_workloadhour','int'):0);
+$planned_workloadmin=(GETPOST('planned_workloadmin','int')?GETPOST('planned_workloadmin','int'):0);
+$planned_workload=$planned_workloadhour*3600+$planned_workloadmin*60;
 
 $userAccess=0;