Calculate totals all the time

This commit is contained in:
Nathan Gray 2016-05-03 22:18:49 +00:00
parent dafe7d484d
commit d9f99b9fe4

View File

@ -471,47 +471,45 @@ class timesheet_ui extends timesheet_bo
function get_rows(&$query_in,&$rows,&$readonlys,$id_only=false) function get_rows(&$query_in,&$rows,&$readonlys,$id_only=false)
{ {
$this->show_sums = false; $this->show_sums = false;
if ($query_in['filter'])
$query_in['enddate'] = $query_in['enddate'] ? $query_in['enddate'] : time();
$date_filter = $this->date_filter($query_in['filter'],$query_in['startdate'],$query_in['enddate']);
if ($query_in['startdate'])
{ {
$query_in['enddate'] = $query_in['enddate'] ? $query_in['enddate'] : time(); $start = explode('-',date('Y-m-d',$query_in['startdate']+12*60*60));
$date_filter = $this->date_filter($query_in['filter'],$query_in['startdate'],$query_in['enddate']); $end = explode('-',date('Y-m-d',$query_in['enddate'] ? $query_in['enddate'] : $query_in['startdate']+7.5*24*60*60));
if ($query_in['startdate']) // show year-sums, if we are year-aligned (show full years)?
if ((int)$start[2] == 1 && (int)$start[1] == 1 && (int)$end[2] == 31 && (int)$end[1] == 12)
{ {
$start = explode('-',date('Y-m-d',$query_in['startdate']+12*60*60)); $this->show_sums[] = 'year';
$end = explode('-',date('Y-m-d',$query_in['enddate'] ? $query_in['enddate'] : $query_in['startdate']+7.5*24*60*60)); }
// show month-sums, if we are month-aligned (show full monthes)?
// show year-sums, if we are year-aligned (show full years)? if ((int)$start[2] == 1 && (int)$end[2] == (int)date('d',mktime(12,0,0,$end[1]+1,0,$end[0])))
if ((int)$start[2] == 1 && (int)$start[1] == 1 && (int)$end[2] == 31 && (int)$end[1] == 12) {
{ $this->show_sums[] = 'month';
$this->show_sums[] = 'year'; }
} // show week-sums, if we are week-aligned (show full weeks)?
// show month-sums, if we are month-aligned (show full monthes)? $week_start_day = $GLOBALS['egw_info']['user']['preferences']['calendar']['weekdaystarts'];
if ((int)$start[2] == 1 && (int)$end[2] == (int)date('d',mktime(12,0,0,$end[1]+1,0,$end[0]))) if (!$week_start_day) $week_start_day = 'Sunday';
{ switch($week_start_day)
$this->show_sums[] = 'month'; {
} case 'Sunday': $week_end_day = 'Saturday'; break;
// show week-sums, if we are week-aligned (show full weeks)? case 'Monday': $week_end_day = 'Sunday'; break;
$week_start_day = $GLOBALS['egw_info']['user']['preferences']['calendar']['weekdaystarts']; case 'Saturday': $week_end_day = 'Friday'; break;
if (!$week_start_day) $week_start_day = 'Sunday'; }
switch($week_start_day) $filter_start_day = date('l',$query_in['startdate']+12*60*60);
{ $filter_end_day = $query_in['enddate'] ? date('l',$query_in['enddate']+12*60*60) : false;
case 'Sunday': $week_end_day = 'Saturday'; break; //echo "<p align=right>prefs: $week_start_day - $week_end_day, filter: $filter_start_day - $filter_end_day</p>\n";
case 'Monday': $week_end_day = 'Sunday'; break; if ($filter_start_day == $week_start_day && (!$filter_end_day || $filter_end_day == $week_end_day))
case 'Saturday': $week_end_day = 'Friday'; break; {
} $this->show_sums[] = 'week';
$filter_start_day = date('l',$query_in['startdate']+12*60*60); }
$filter_end_day = $query_in['enddate'] ? date('l',$query_in['enddate']+12*60*60) : false; // show day-sums, if range <= 5 weeks
//echo "<p align=right>prefs: $week_start_day - $week_end_day, filter: $filter_start_day - $filter_end_day</p>\n"; if (!$query_in['enddate'] || $query_in['enddate'] - $query_in['startdate'] < 36*24*60*60)
if ($filter_start_day == $week_start_day && (!$filter_end_day || $filter_end_day == $week_end_day)) {
{ $this->show_sums[] = 'day';
$this->show_sums[] = 'week';
}
// show day-sums, if range <= 5 weeks
if (!$query_in['enddate'] || $query_in['enddate'] - $query_in['startdate'] < 36*24*60*60)
{
$this->show_sums[] = 'day';
}
} }
} }
//echo "<p align=right>show_sums=".print_r($this->show_sums,true)."</p>\n"; //echo "<p align=right>show_sums=".print_r($this->show_sums,true)."</p>\n";
@ -785,15 +783,9 @@ class timesheet_ui extends timesheet_bo
if ($query['col_filter']['ts_owner']) $rows['ownerClass'] = 'noPrint'; if ($query['col_filter']['ts_owner']) $rows['ownerClass'] = 'noPrint';
$rows['no_owner_col'] = $query['no_owner_col']; $rows['no_owner_col'] = $query['no_owner_col'];
if (!$rows['no_owner_col'] && $query['selectcols'] && !strpos($query['selectcols'],'ts_owner')) $rows['no_owner_col'] = 1; if (!$rows['no_owner_col'] && $query['selectcols'] && !strpos($query['selectcols'],'ts_owner')) $rows['no_owner_col'] = 1;
if ($query['filter'])
{ $rows += $this->summary;
$rows += $this->summary;
}
else
{
// Clear summary
$rows += array('duration'=>'','price'=>'','quantity'=>'');
}
$rows['pm_integration'] = $this->pm_integration; $rows['pm_integration'] = $this->pm_integration;
$rows['ts_viewtype'] = $rows['no_ts_quantity'] = $rows['no_ts_unitprice'] = $rows['no_ts_total'] = $this->ts_viewtype == 'short'; $rows['ts_viewtype'] = $rows['no_ts_quantity'] = $rows['no_ts_unitprice'] = $rows['no_ts_total'] = $this->ts_viewtype == 'short';
if (!$rows['ts_viewtype']) if (!$rows['ts_viewtype'])