diff --git a/htdocs/compta/hrm.php b/htdocs/compta/hrm.php
index 4122f8507234c74fa838600f5be4d54567b6eafd..d463994752974383eb422990168d3c60d36c44cb 100644
--- a/htdocs/compta/hrm.php
+++ b/htdocs/compta/hrm.php
@@ -140,7 +140,82 @@ $max=10;
 
 $langs->load("boxes");
 
-// Last trips
+
+
+// Last expense report (new module)
+if (! empty($conf->holiday->enabled) && $user->rights->holiday->read)
+{
+    $sql = "SELECT u.rowid as uid, u.lastname, u.firstname, x.rowid, x.rowid as ref, x.fk_type, x.date_debut as date_start, x.date_fin as date_end, x.halfday, x.tms as dm, x.statut as status";
+    $sql.= " FROM ".MAIN_DB_PREFIX."holiday as x, ".MAIN_DB_PREFIX."user as u";
+    $sql.= " WHERE u.rowid = x.fk_user";
+    $sql.= " AND x.entity = ".$conf->entity;
+    if (empty($user->rights->holiday->read_all)) $sql.=' AND x.fk_user IN ('.join(',',$childids).')';
+    //if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND x.fk_soc = s. rowid AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
+    //if (!empty($socid)) $sql.= " AND x.fk_soc = ".$socid;
+    $sql.= $db->order("x.tms","DESC");
+    $sql.= $db->plimit($max, 0);
+
+    $result = $db->query($sql);
+    if ($result)
+    {
+        $var=false;
+        $num = $db->num_rows($result);
+
+        $holidaystatic=new Holiday($db);
+        $userstatic=new User($db);
+        
+        $listhalfday=array('morning'=>$langs->trans("Morning"),"afternoon"=>$langs->trans("Afternoon"));
+        $typeleaves=$holidaystatic->getTypes(1,-1);
+        
+        $i = 0;
+
+        print '<table class="noborder" width="100%">';
+        print '<tr class="liste_titre">';
+        print '<td colspan="3">'.$langs->trans("BoxTitleLastLeaveRequests",min($max,$num)).'</td>';
+        print '<td>'.$langs->trans("from").'</td>';
+        print '<td>'.$langs->trans("to").'</td>';
+        print '<td align="right">'.$langs->trans("DateModificationShort").'</td>';
+        print '<td width="16">&nbsp;</td>';
+        print '</tr>';
+        if ($num)
+        {
+            while ($i < $num && $i < $max)
+            {
+                $obj = $db->fetch_object($result);
+                $holidaystatic->id=$obj->rowid;
+                $holidaystatic->ref=$obj->ref;
+                $userstatic->id=$obj->uid;
+                $userstatic->lastname=$obj->lastname;
+                $userstatic->firstname=$obj->firstname;
+                print '<tr '.$bc[$var].'>';
+                print '<td>'.$holidaystatic->getNomUrl(1).'</td>';
+                print '<td>'.$userstatic->getNomUrl(1).'</td>';
+                print '<td>'.$typeleaves[$obj->fk_type]['label'].'</td>';
+                
+                $starthalfday=($obj->halfday == -1 || $obj->halfday == 2)?'afternoon':'morning';
+                $endhalfday=($obj->halfday == 1 || $obj->halfday == 2)?'morning':'afternoon';
+                
+                print '<td>'.dol_print_date($obj->date_start,'day').' '.$langs->trans($listhalfday[$endhalfday]);
+                print '<td>'.dol_print_date($obj->date_end,'day').' '.$langs->trans($listhalfday[$endhalfday]);
+                print '<td align="right">'.dol_print_date($db->jdate($obj->dm),'day').'</td>';
+                print '<td>'.$holidaystatic->LibStatut($obj->status,3).'</td>';
+                print '</tr>';
+                $var=!$var;
+                $i++;
+            }
+
+        }
+        else
+        {
+            print '<tr '.$bc[$var].'><td colspan="5">'.$langs->trans("None").'</td></tr>';
+        }
+        print '</table><br>';
+    }
+    else dol_print_error($db);
+}
+
+
+// Last expense report (old module)
 if (! empty($conf->deplacement->enabled) && $user->rights->deplacement->lire)
 {
 	$sql = "SELECT u.rowid as uid, u.lastname, u.firstname, d.rowid, d.dated as date, d.tms as dm, d.km, d.fk_statut";
@@ -204,6 +279,7 @@ if (! empty($conf->deplacement->enabled) && $user->rights->deplacement->lire)
 	else dol_print_error($db);
 }
 
+// Last expense report (new module)
 if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->lire)
 {
 	$sql = "SELECT u.rowid as uid, u.lastname, u.firstname, x.rowid, x.ref, x.date_debut as date, x.tms as dm, x.total_ttc, x.fk_statut as status";
diff --git a/htdocs/holiday/card.php b/htdocs/holiday/card.php
index 80d06fdb446325f87e71f555e06bf6b159a46be3..608c2af1b24b81e3ef7c377808f58acbc0457240 100644
--- a/htdocs/holiday/card.php
+++ b/htdocs/holiday/card.php
@@ -84,7 +84,7 @@ if ($action == 'create')
 	    $description = trim(GETPOST('description'));
 	    $userID = GETPOST('userID');
 
-    	// If no start date
+    	// If no type
 	    if ($type <= 0)
 	    {
 	        setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), null, 'errors');
@@ -136,12 +136,6 @@ if ($action == 'create')
 
 	    $result = 0;
 
-        if ($type < 1)
-	    {
-	        setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Type")), null, 'errors');
-	        $error++;
-	    }
-
 	    if (! $error)
 	    {
     	    $cp->fk_user = $userid;
@@ -769,7 +763,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create
         dol_fiche_head();
 
         $out='';
-        $typeleaves=$cp->getTypes(1,1);
+        $typeleaves=$cp->getTypes(1,-1);
     	foreach($typeleaves as $key => $val)
 		{
 			$nb_type = $cp->getCPforUser($user->id, $val['rowid']);
@@ -806,7 +800,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create
         print '<tr>';
         print '<td class="fieldrequired">'.$langs->trans("Type").'</td>';
         print '<td>';
-        $typeleaves=$cp->getTypes(1,1);
+        $typeleaves=$cp->getTypes(1,-1);
         $arraytypeleaves=array();
         foreach($typeleaves as $key => $val)
         {
@@ -1019,7 +1013,7 @@ else
 		        print '<tr>';
 		        print '<td>'.$langs->trans("Type").'</td>';
 		        print '<td>';
-		        $typeleaves=$cp->getTypes(1,1);
+		        $typeleaves=$cp->getTypes(1,-1);
 		        print $typeleaves[$cp->fk_type]['label'];
 		        print '</td>';
 		        print '</tr>';
diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php
index 6bb253319e0dd38a085a439ad22550d8e0c90dfb..21c36574ea9982a3f8a5dcef8156fce9a99b682f 100644
--- a/htdocs/holiday/class/holiday.class.php
+++ b/htdocs/holiday/class/holiday.class.php
@@ -732,6 +732,16 @@ class Holiday extends CommonObject
 			if ($statut == 4) return img_picto($langs->trans('CancelCP'),'statut5').' '.$langs->trans('CancelCP');
 			if ($statut == 5) return img_picto($langs->trans('RefuseCP'),'statut5').' '.$langs->trans('RefuseCP');
 		}
+		if ($mode == 3)
+		{
+			$pictoapproved='statut6';
+			if (! empty($startdate) && $startdate > dol_now()) $pictoapproved='statut4';
+			if ($statut == 1) return img_picto($langs->trans('DraftCP'),'statut0');
+			if ($statut == 2) return img_picto($langs->trans('ToReviewCP'),'statut1');
+			if ($statut == 3) return img_picto($langs->trans('ApprovedCP'),$pictoapproved);
+			if ($statut == 4) return img_picto($langs->trans('CancelCP'),'statut5');
+			if ($statut == 5) return img_picto($langs->trans('RefuseCP'),'statut5');
+		}
 		if ($mode == 5)
 		{
 			$pictoapproved='statut6';
@@ -1795,7 +1805,7 @@ class Holiday extends CommonObject
      *  Return array with list of types
      *
      *  @param		int		$active		Status of type
-     *  @param		int		$affect		Filter on affect
+     *  @param		int		$affect		Filter on affect (a request will change sold or not)
      *  @return     array	    		Return array with list of types
      */
     function getTypes($active=-1, $affect=-1)
diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php
index 1c82288973e5bbbc3ea87bdb248d93feb3bfd3b7..87b442c45313bfb3cd6f5205300b4b3b4f1b7a13 100644
--- a/htdocs/holiday/list.php
+++ b/htdocs/holiday/list.php
@@ -102,6 +102,9 @@ $holiday = new Holiday($db);
 $holidaystatic=new Holiday($db);
 $fuser = new User($db);
 
+$childids = $user->getAllChildIds();
+$childids[]=$user->id;
+
 // Update sold
 $result = $holiday->updateBalance();
 
@@ -184,6 +187,7 @@ if (!empty($sall))
 	$filter.= natural_search(array_keys($fieldstosearchall), $sall);
 }
 
+if (empty($user->rights->holiday->read_all)) $filter.=' AND cp.fk_user IN ('.join(',',$childids).')';
 
 /*************************************
  * Fin des filtres de recherche
diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql
index 5e53d2593766c104d0ec278f8e404a773259810f..80759ffe9d8e114daaaa38f430c665b75761a91b 100755
--- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql
+++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql
@@ -573,3 +573,5 @@ insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays
 
 ALTER TABLE llx_accounting_bookkeeping MODIFY COLUMN doc_ref varchar(255) NOT NULL;
 
+ALTER TABLE llx_holiday ADD COLUMN tms timestamp;
+ALTER TABLE llx_holiday ADD COLUMN entity integer DEFAULT 1 NOT NULL;
diff --git a/htdocs/install/mysql/tables/llx_holiday.sql b/htdocs/install/mysql/tables/llx_holiday.sql
index 3f61b893bd4f2a9a4e1461543b288c42bf58bb25..0af8b35b041b8af24d8567a02bf3564677724201 100644
--- a/htdocs/install/mysql/tables/llx_holiday.sql
+++ b/htdocs/install/mysql/tables/llx_holiday.sql
@@ -19,6 +19,7 @@
 CREATE TABLE llx_holiday 
 (
 rowid          integer NOT NULL AUTO_INCREMENT PRIMARY KEY,
+entity         integer DEFAULT 1 NOT NULL,		-- Multi company id
 fk_user        integer NOT NULL,
 fk_user_create integer,
 fk_type        integer NOT NULL,
@@ -26,7 +27,7 @@ date_create    DATETIME NOT NULL,
 description    VARCHAR( 255 ) NOT NULL,
 date_debut     DATE NOT NULL,
 date_fin       DATE NOT NULL,
-halfday        integer DEFAULT 0,
+halfday        integer DEFAULT 0,				-- 0=start morning and end afternoon, -1=start afternoon end afternoon, 1=start morning and end morning, 2=start afternoon and end morning
 statut         integer NOT NULL DEFAULT '1',
 fk_validator   integer NOT NULL,
 date_valid     DATETIME DEFAULT NULL,
@@ -37,6 +38,7 @@ date_cancel    DATETIME DEFAULT NULL,
 fk_user_cancel integer DEFAULT NULL,
 detail_refuse  varchar( 250 ) DEFAULT NULL,
 note_private   text,
-note_public    text
+note_public    text,
+tms            timestamp
 ) 
 ENGINE=innodb;
diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang
index 725336d8790414dfbce8decff19bea9188da0776..4b8c9507b92a06849a6aa4286e4519e9c2a85672 100644
--- a/htdocs/langs/en_US/holiday.lang
+++ b/htdocs/langs/en_US/holiday.lang
@@ -82,6 +82,7 @@ UserName=Name
 Employee=Employee
 FirstDayOfHoliday=First day of vacation
 LastDayOfHoliday=Last day of vacation
+BoxTitleLastLeaveRequests=Last %s modified leave requests 
 HolidaysMonthlyUpdate=Monthly update
 ManualUpdate=Manual update
 HolidaysCancelation=Leave request cancelation