diff --git a/__manifest__.py b/__manifest__.py
index fea4a3ce315df71933d95c388be815516d382654..b3421a03561c4fc0d1a662ec709a7d9104dd45eb 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -3,7 +3,7 @@
     'summary': """Filament - Lien entre commandes et projets""",
     'author': "Le Filament",
     'website': "https://www.le-filament.com",
-    'version': '13.0.1.0.1',
+    'version': '14.0.1.0.1',
     'license': "AGPL-3",
     'category': 'Sale Management',
     'depends': ['sale_timesheet', 'project'],
diff --git a/models/project_overview.py b/models/project_overview.py
index fe1dcde48a72c36021b7e8ee61afa809cb42fbaa..f387b516f302daa7be9430f6003859606b73701f 100644
--- a/models/project_overview.py
+++ b/models/project_overview.py
@@ -30,12 +30,14 @@ class Project(models.Model):
     # ------------------------------------------------------
     # CRUD methods (ORM overrides)
     # ------------------------------------------------------
-    def _table_get_line_values(self):
+    def _table_get_line_values(self, employees=None):
         """ return the header and the rows informations of the table """
         if not self:
             return False
 
         uom_hour = self.env.ref('uom.product_uom_hour')
+        company_uom = self.env.company.timesheet_encode_uom_id
+        is_uom_day = company_uom and company_uom == self.env.ref('uom.product_uom_day')
 
         # build SQL query and fetch raw data
         query, query_params = self._table_rows_sql_query()
@@ -80,9 +82,11 @@ class Project(models.Model):
                 # rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom._compute_quantity(
                 #     sale_line.product_uom_qty, uom_hour, raise_if_failure=False) if sale_line else 0.0
 
+        rows_sale_line_all_data = {}
+        if not employees:
+            employees = self.env['hr.employee'].sudo().search(self.env['account.analytic.line']._domain_employee_id())
         for row_key, row_employee in rows_employee.items():
-            sale_line_id = row_key[1]
-            sale_order_id = row_key[0]
+            sale_order_id, sale_line_id, employee_id = row_key
             # sale line row
             sale_line_row_key = (sale_order_id, sale_line_id)
             if sale_line_row_key not in rows_sale_line:
@@ -100,18 +104,19 @@ class Project(models.Model):
                     # rows_sale_line[sale_line_row_key][-2] = sale_line.product_uom._compute_quantity(
                     #     sale_line.product_uom_qty, uom_hour, raise_if_failure=False) if sale_line else 0.0
 
-            for index in range(len(rows_employee[row_key])):
-                if index != 0:
-                    rows_sale_line[sale_line_row_key][index] += rows_employee[row_key][index]
-                    if not rows_sale_line[sale_line_row_key][0].get('is_milestone'):
-                        rows_sale_line[sale_line_row_key][-1] = rows_sale_line[sale_line_row_key][-2] - \
-                                                                rows_sale_line[sale_line_row_key][5]
-                    else:
-                        rows_sale_line[sale_line_row_key][-1] = 0
+            if sale_line_row_key not in rows_sale_line_all_data:
+                rows_sale_line_all_data[sale_line_row_key] = [0] * len(row_employee)
+            for index in range(1, len(row_employee)):
+                if employee_id in employees.ids:
+                    rows_sale_line[sale_line_row_key][index] += row_employee[index]
+                rows_sale_line_all_data[sale_line_row_key][index] += row_employee[index]
+            if not rows_sale_line[sale_line_row_key][0].get('is_milestone'):
+                rows_sale_line[sale_line_row_key][-1] = rows_sale_line[sale_line_row_key][-2] - \
+                                                        rows_sale_line_all_data[sale_line_row_key][5]
+            else:
+                rows_sale_line[sale_line_row_key][-1] = 0
 
         rows_sale_order = {}  # so -> [INFO, before, M1, M2, M3, Done, M3, M4, M5, After, Forecasted]
-        rows_sale_order_done_sold = {key: dict(sold=0.0, done=0.0) for key in
-                                     set(map_sol_so.values()) | set([None])}  # SO id -> {'sold':0.0, 'done': 0.0}
         for row_key, row_sale_line in rows_sale_line.items():
             sale_order_id = row_key[0]
             # sale order row
@@ -122,19 +127,8 @@ class Project(models.Model):
                                                    'type': 'sale_order'}] + default_row_vals[
                                                                             :]  # INFO, before, M1, M2, M3, Done, M3, M4, M5, After, Forecasted
 
-            for index in range(len(rows_sale_line[row_key])):
-                if index != 0:
-                    rows_sale_order[sale_order_id][index] += rows_sale_line[row_key][index]
-
-            # do not sum the milestone SO line for sold and done (for remaining computation)
-            if not rows_sale_line[row_key][0].get('is_milestone'):
-                rows_sale_order_done_sold[sale_order_id]['sold'] += rows_sale_line[row_key][-2]
-                rows_sale_order_done_sold[sale_order_id]['done'] += rows_sale_line[row_key][5]
-
-        # remaining computation of SO row, as Sold - Done (timesheet total)
-        for sale_order_id, done_sold_vals in rows_sale_order_done_sold.items():
-            if sale_order_id in rows_sale_order:
-                rows_sale_order[sale_order_id][-1] = done_sold_vals['sold'] - done_sold_vals['done']
+            for index in range(1, len(row_sale_line)):
+                rows_sale_order[sale_order_id][index] += row_sale_line[index]
 
         # group rows SO, SOL and their related employee rows.
         timesheet_forecast_table_rows = []
@@ -142,16 +136,25 @@ class Project(models.Model):
             timesheet_forecast_table_rows.append(sale_order_row)
             for sale_line_row_key, sale_line_row in rows_sale_line.items():
                 if sale_order_id == sale_line_row_key[0]:
+                    sale_order_row[0]['has_children'] = True
                     timesheet_forecast_table_rows.append(sale_line_row)
                     for employee_row_key, employee_row in rows_employee.items():
-                        if sale_order_id == employee_row_key[0] and sale_line_row_key[1] == employee_row_key[1]:
+                        if sale_order_id == employee_row_key[0] and sale_line_row_key[1] == employee_row_key[1] and \
+                                employee_row_key[2] in employees.ids:
+                            sale_line_row[0]['has_children'] = True
                             timesheet_forecast_table_rows.append(employee_row)
 
+        if is_uom_day:
+            # convert all values from hours to days
+            for row in timesheet_forecast_table_rows:
+                for index in range(1, len(row)):
+                    row[index] = round(uom_hour._compute_quantity(row[index], company_uom, raise_if_failure=False), 2)
         # complete table data
         return {
             'header': self._table_header(),
             'rows': timesheet_forecast_table_rows
         }
+
     # ------------------------------------------------------
     # Actions
     # ------------------------------------------------------