diff --git a/htdocs/compta/sociales/card.php b/htdocs/compta/sociales/card.php
index 8c21bf32ceb7ff7d139363b0bdbfb552c3eef03d..5b8409c0ddb03fad95c21bbecd23bf3ee54f7199 100644
--- a/htdocs/compta/sociales/card.php
+++ b/htdocs/compta/sociales/card.php
@@ -72,6 +72,14 @@ if ($action == 'reopen' && $user->rights->tax->charges->creer) {
     }
 }
 
+if ($action == 'setlib' && $user->rights->tax->charges->creer)
+{
+    $object->fetch($id);
+    $result = $object->setValueFrom('libelle', GETPOST('lib'), '', '', 'text', '', $user, 'TAX_MODIFY');
+    if ($result < 0)
+        setEventMessages($object->error, $object->errors, 'errors');
+}
+
 // payment mode
 if ($action == 'setmode' && $user->rights->tax->charges->creer) {
     $object->fetch($id);
@@ -356,6 +364,8 @@ if ($id > 0)
 	{
 		$head=tax_prepare_head($object);
 
+		$totalpaye = $object->getSommePaiement();
+		
 		// Clone confirmation
 		if ($action === 'clone')
 		{
@@ -389,17 +399,34 @@ if ($id > 0)
 		
 		dol_fiche_head($head, 'card', $langs->trans("SocialContribution"),0,'bill');
 		
-		print '<table class="border" width="100%">';
-
+		
+		$morehtmlref='<div class="refidno">';
+		// Ref customer
+		$morehtmlref.=$form->editfieldkey("Label", 'lib', $object->lib, $object, $user->rights->tax->charges->creer, 'string', '', 0, 1);
+		$morehtmlref.=$form->editfieldval("Label", 'lib', $object->lib, $object, $user->rights->tax->charges->creer, 'string', '', null, null, '', 1);
+		$morehtmlref.='</div>';
+		
 		$linkback = '<a href="' . DOL_URL_ROOT . '/compta/sociales/index.php">' . $langs->trans("BackToList") . '</a>';
 		
+		$object->totalpaye = $totalpaye;   // To give a chance to dol_banner_tab to use already paid amount to show correct status
+		
+		dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref, '', 0, '', $morehtmlright);
+		
+		print '<div class="fichecenter">';
+		print '<div class="fichehalfleft">';
+		print '<div class="underbanner clearboth"></div>';
+		
+		print '<table class="border" width="100%">';
+
+        /*		
 		// Ref
 		print '<tr><td class="fieldtitle">'.$langs->trans("Ref").'</td><td colspan="2">';
 		print $form->showrefnav($object,'id',$linkback);
 		print "</td></tr>";
+        */
 
 		// Label
-		if ($action == 'edit')
+		/*if ($action == 'edit')
 		{
 			print '<tr><td>'.$langs->trans("Label").'</td><td colspan="2">';
 			print '<input type="text" name="label" size="40" value="'.$object->lib.'">';
@@ -408,79 +435,10 @@ if ($id > 0)
 		else
 		{
 			print '<tr><td>'.$langs->trans("Label").'</td><td colspan="2">'.$object->lib.'</td></tr>';
-		}
-
+		}*/
+		
 		// Type
 		print "<tr><td>".$langs->trans("Type")."</td><td>".$object->type_libelle."</td>";
-
-		$rowspan=6;
-        if (! empty($conf->banque->enabled)) $rowspan++;
-		print '<td rowspan="'.$rowspan.'" valign="top">';
-
-		/*
-		 * Payments
-		 */
-		$sql = "SELECT p.rowid, p.num_paiement, datep as dp, p.amount,";
-		$sql.= "c.code as type_code,c.libelle as paiement_type";
-		$sql.= " FROM ".MAIN_DB_PREFIX."paiementcharge as p";
-		$sql.= ", ".MAIN_DB_PREFIX."c_paiement as c ";
-		$sql.= ", ".MAIN_DB_PREFIX."chargesociales as cs";
-		$sql.= " WHERE p.fk_charge = ".$id;
-		$sql.= " AND p.fk_charge = cs.rowid";
-		$sql.= " AND cs.entity = ".$conf->entity;
-		$sql.= " AND p.fk_typepaiement = c.id";
-		$sql.= " ORDER BY dp DESC";
-
-		//print $sql;
-		$resql = $db->query($sql);
-		if ($resql)
-		{
-			$num = $db->num_rows($resql);
-			$i = 0; $total = 0;
-			print '<table class="nobordernopadding paymenttable" width="100%">';
-			print '<tr class="liste_titre">';
-			print '<td>'.$langs->trans("RefPayment").'</td>';
-			print '<td>'.$langs->trans("Date").'</td>';
-			print '<td>'.$langs->trans("Type").'</td>';
-      		print '<td align="right">'.$langs->trans("Amount").'</td>';
-      		print '<td>&nbsp;</td>';
-      		print '</tr>';
-
-			$var=True;
-			while ($i < $num)
-			{
-				$objp = $db->fetch_object($resql);
-				$var=!$var;
-				print "<tr ".$bc[$var]."><td>";
-				print '<a href="'.DOL_URL_ROOT.'/compta/payment_sc/card.php?id='.$objp->rowid.'">'.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.'</a></td>';
-				print '<td>'.dol_print_date($db->jdate($objp->dp),'day')."</td>\n";
-                $labeltype=$langs->trans("PaymentType".$objp->type_code)!=("PaymentType".$objp->type_code)?$langs->trans("PaymentType".$objp->type_code):$objp->paiement_type;
-                print "<td>".$labeltype.' '.$objp->num_paiement."</td>\n";
-				print '<td align="right">'.price($objp->amount)."</td><td>&nbsp;".$langs->trans("Currency".$conf->currency)."</td>\n";
-				print "</tr>";
-				$totalpaye += $objp->amount;
-				$i++;
-			}
-
-			if ($object->paye == 0)
-			{
-				print "<tr><td colspan=\"3\" align=\"right\">".$langs->trans("AlreadyPaid")." :</td><td align=\"right\"><b>".price($totalpaye)."</b></td><td>&nbsp;".$langs->trans("Currency".$conf->currency)."</td></tr>\n";
-				print "<tr><td colspan=\"3\" align=\"right\">".$langs->trans("AmountExpected")." :</td><td align=\"right\" bgcolor=\"#d0d0d0\">".price($object->amount)."</td><td bgcolor=\"#d0d0d0\">&nbsp;".$langs->trans("Currency".$conf->currency)."</td></tr>\n";
-
-				$resteapayer = $object->amount - $totalpaye;
-
-				print "<tr><td colspan=\"3\" align=\"right\">".$langs->trans("RemainderToPay")." :</td>";
-				print "<td align=\"right\" bgcolor=\"#f0f0f0\"><b>".price($resteapayer)."</b></td><td bgcolor=\"#f0f0f0\">&nbsp;".$langs->trans("Currency".$conf->currency)."</td></tr>\n";
-			}
-			print "</table>";
-			$db->free($resql);
-		}
-		else
-		{
-			dol_print_error($db);
-		}
-		print "</td>";
-
 		print "</tr>";
 
     	// Period end date
@@ -555,10 +513,83 @@ if ($id > 0)
         }
 
 		// Status
-		print '<tr><td>'.$langs->trans("Status").'</td><td>'.$object->getLibStatut(4, $totalpaye).'</td></tr>';
+		//print '<tr><td>'.$langs->trans("Status").'</td><td>'.$object->getLibStatut(4, $totalpaye).'</td></tr>';
 
 		print '</table>';
 
+		print '</div>';
+		print '<div class="fichehalfright">';
+		print '<div class="ficheaddleft">';
+		
+		/*
+		 * Payments
+		 */
+		$sql = "SELECT p.rowid, p.num_paiement, datep as dp, p.amount,";
+		$sql.= "c.code as type_code,c.libelle as paiement_type";
+		$sql.= " FROM ".MAIN_DB_PREFIX."paiementcharge as p";
+		$sql.= ", ".MAIN_DB_PREFIX."c_paiement as c ";
+		$sql.= ", ".MAIN_DB_PREFIX."chargesociales as cs";
+		$sql.= " WHERE p.fk_charge = ".$id;
+		$sql.= " AND p.fk_charge = cs.rowid";
+		$sql.= " AND cs.entity = ".$conf->entity;
+		$sql.= " AND p.fk_typepaiement = c.id";
+		$sql.= " ORDER BY dp DESC";
+		
+		//print $sql;
+		$resql = $db->query($sql);
+		if ($resql)
+		{
+		    $num = $db->num_rows($resql);
+		    $i = 0; $total = 0;
+		    print '<table class="noborder paymenttable">';
+		    print '<tr class="liste_titre">';
+		    print '<td>'.$langs->trans("RefPayment").'</td>';
+		    print '<td>'.$langs->trans("Date").'</td>';
+		    print '<td>'.$langs->trans("Type").'</td>';
+		    print '<td align="right">'.$langs->trans("Amount").'</td>';
+		    print '<td>&nbsp;</td>';
+		    print '</tr>';
+		
+		    $var=True;
+		    while ($i < $num)
+		    {
+		        $objp = $db->fetch_object($resql);
+		        $var=!$var;
+		        print "<tr ".$bc[$var]."><td>";
+		        print '<a href="'.DOL_URL_ROOT.'/compta/payment_sc/card.php?id='.$objp->rowid.'">'.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.'</a></td>';
+		        print '<td>'.dol_print_date($db->jdate($objp->dp),'day')."</td>\n";
+		        $labeltype=$langs->trans("PaymentType".$objp->type_code)!=("PaymentType".$objp->type_code)?$langs->trans("PaymentType".$objp->type_code):$objp->paiement_type;
+		        print "<td>".$labeltype.' '.$objp->num_paiement."</td>\n";
+		        print '<td align="right">'.price($objp->amount)."</td><td>&nbsp;".$langs->trans("Currency".$conf->currency)."</td>\n";
+		        print "</tr>";
+		        $totalpaye += $objp->amount;
+		        $i++;
+		    }
+		
+		    if ($object->paye == 0)
+		    {
+		        print "<tr><td colspan=\"3\" align=\"right\">".$langs->trans("AlreadyPaid")." :</td><td align=\"right\"><b>".price($totalpaye)."</b></td><td>&nbsp;".$langs->trans("Currency".$conf->currency)."</td></tr>\n";
+		        print "<tr><td colspan=\"3\" align=\"right\">".$langs->trans("AmountExpected")." :</td><td align=\"right\" bgcolor=\"#d0d0d0\">".price($object->amount)."</td><td bgcolor=\"#d0d0d0\">&nbsp;".$langs->trans("Currency".$conf->currency)."</td></tr>\n";
+		
+		        $resteapayer = $object->amount - $totalpaye;
+		
+		        print "<tr><td colspan=\"3\" align=\"right\">".$langs->trans("RemainderToPay")." :</td>";
+		        print "<td align=\"right\" bgcolor=\"#f0f0f0\"><b>".price($resteapayer)."</b></td><td bgcolor=\"#f0f0f0\">&nbsp;".$langs->trans("Currency".$conf->currency)."</td></tr>\n";
+		    }
+		    print "</table>";
+		    $db->free($resql);
+		}
+		else
+		{
+		    dol_print_error($db);
+		}		
+		
+		print '</div>';
+		print '</div>';
+		print '</div>';
+		
+		print '<div class="clearboth"></div>';
+		
 		dol_fiche_end();
 		
 		
diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php
index ca9af96575868ca044692a92e25f8f9e7207e6c5..1ba0773affff1ed5788cea42c72a67dea17c80fe 100644
--- a/htdocs/compta/sociales/class/chargesociales.class.php
+++ b/htdocs/compta/sociales/class/chargesociales.class.php
@@ -34,7 +34,8 @@ class ChargeSociales extends CommonObject
     public $element='chargesociales';
     public $table='chargesociales';
     public $table_element='chargesociales';
-
+    public $picto = 'bill';
+    
     /**
      * {@inheritdoc}
      */
@@ -371,7 +372,7 @@ class ChargeSociales extends CommonObject
     /**
      *  Retourne le libelle du statut d'une charge (impaye, payee)
      *
-     *  @param	int		$mode       	0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long
+     *  @param	int		$mode       	0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=short label + picto, 6=Long label + picto
 	 *  @param  double	$alreadypaid	0=No payment already done, >0=Some payments were already done (we recommand to put here amount payed if you have it, 1 otherwise)
      *  @return	string        			Label
      */
@@ -384,7 +385,7 @@ class ChargeSociales extends CommonObject
      *  Renvoi le libelle d'un statut donne
      *
      *  @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  int		$mode          	0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=short label + picto, 6=Long label + picto
 	 *  @param  double	$alreadypaid	0=No payment already done, >0=Some payments were already done (we recommand to put here amount payed if you have it, 1 otherwise)
      *  @return string        			Label
      */
@@ -428,7 +429,13 @@ class ChargeSociales extends CommonObject
             if ($statut ==  0 && $alreadypaid > 0) return $langs->trans("BillStatusStarted").' '.img_picto($langs->trans("BillStatusStarted"), 'statut3');
             if ($statut ==  1) return $langs->trans("Paid").' '.img_picto($langs->trans("Paid"), 'statut6');
         }
-
+        if ($mode == 6)
+        {
+            if ($statut ==  0 && $alreadypaid <= 0) return $langs->trans("Unpaid").' '.img_picto($langs->trans("Unpaid"), 'statut1');
+            if ($statut ==  0 && $alreadypaid > 0) return $langs->trans("BillStatusStarted").' '.img_picto($langs->trans("BillStatusStarted"), 'statut3');
+            if ($statut ==  1) return $langs->trans("Paid").' '.img_picto($langs->trans("Paid"), 'statut6');
+        }
+        
         return "Error, mode/status not found";
     }
 
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 7b69b17f89da408f7168b5049c681a610414c20c..33be611442e2ae379567d624f7f4c4ec786b695d 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -1055,6 +1055,12 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
 	    if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3) || $conf->browser->layout=='phone') $tmptxt=$object->getLibStatut(5, $object->totalpaye); 
 		$morehtmlstatus.=$tmptxt;
 	}
+	elseif ($object->element == 'chargesociales')
+	{
+	    $tmptxt=$object->getLibStatut(6, $object->totalpaye);
+	    if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3) || $conf->browser->layout=='phone') $tmptxt=$object->getLibStatut(5, $object->totalpaye); 
+		$morehtmlstatus.=$tmptxt;
+	}
 	elseif ($object->element == 'facturerec') 
 	{
 	    $morehtmlstatus.='<!-- No status for recurring invoice -->';
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 b602f5c1bf6bb4b7228a3754e536a6b56e5358a7..4d653644f39d3e69644373a8bf02b645214f6ba0 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
@@ -64,6 +64,10 @@ ALTER TABLE llx_website ADD COLUMN virtualhost varchar(255) after fk_default_hom
 
 ALTER TABLE llx_chargesociales ADD COLUMN fk_account integer after fk_type;
 ALTER TABLE llx_chargesociales ADD COLUMN fk_mode_reglement integer after fk_account;
+ALTER TABLE llx_chargesociales ADD COLUMN fk_user_author		integer;
+ALTER TABLE llx_chargesociales ADD COLUMN fk_user_modif         integer;
+ALTER TABLE llx_chargesociales ADD COLUMN fk_user_valid			integer;
+
 
 ALTER TABLE llx_ecm_files ADD COLUMN gen_or_uploaded varchar(12) after cover; 
 
diff --git a/htdocs/install/mysql/tables/llx_chargesociales.sql b/htdocs/install/mysql/tables/llx_chargesociales.sql
index 0514811eb154cac5456f025c112de45b0fd43e89..95ab50661b650555c285cc808745d4d348aac4ca 100644
--- a/htdocs/install/mysql/tables/llx_chargesociales.sql
+++ b/htdocs/install/mysql/tables/llx_chargesociales.sql
@@ -26,6 +26,9 @@ create table llx_chargesociales
   tms                   timestamp,
   date_creation         datetime,						-- date de creation 
   date_valid            datetime,						-- date de validation
+  fk_user_author		integer,						-- user making creation
+  fk_user_modif         integer,                        -- user making last change
+  fk_user_valid			integer,						-- user validating
   fk_type    integer NOT NULL,
   fk_account integer,                       -- bank account
   fk_mode_reglement integer,                -- mode de reglement
diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang
index dedd187db6daa905b49dd1949603ca0b653a0247..ecf61d17d36dd429fdf2dc81d42ae29d82edd598 100644
--- a/htdocs/langs/en_US/projects.lang
+++ b/htdocs/langs/en_US/projects.lang
@@ -20,8 +20,8 @@ OnlyOpenedProject=Only open projects are visible (projects in draft or closed st
 ClosedProjectsAreHidden=Closed projects are not visible.
 TasksPublicDesc=This view presents all projects and tasks you are allowed to read.
 TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything).
-AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on. Assign task to you if you want to enter time on it.
-OnlyYourTaskAreVisible=Only tasks you are assigned on are visible. Assign task to you if you want to enter time on it.
+AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task assigned to you. Assign task to yourself if you need to enter time on it.
+OnlyYourTaskAreVisible=Only tasks assigned to you are visible. Assign task to yourself if it is not visible and you need to enter time on it.
 ImportDatasetTasks=Tasks of projects
 NewProject=New project
 AddProject=Create project