From ccaee9cc6abdbf1684b25e771b0dca35659e4a55 Mon Sep 17 00:00:00 2001 From: Nik Okuntseff Date: Sat, 15 Dec 2018 14:17:03 +0000 Subject: [PATCH] Some more refactoring. --- WEB-INF/lib/ttReportHelper.class.php | 47 ++++++++++------------------ WEB-INF/templates/footer.tpl | 2 +- 2 files changed, 18 insertions(+), 31 deletions(-) diff --git a/WEB-INF/lib/ttReportHelper.class.php b/WEB-INF/lib/ttReportHelper.class.php index 8e8b312e..068ae9db 100644 --- a/WEB-INF/lib/ttReportHelper.class.php +++ b/WEB-INF/lib/ttReportHelper.class.php @@ -411,53 +411,40 @@ class ttReportHelper { $concat_part = ttReportHelper::makeConcatPart($options); $join_part = ttReportHelper::makeJoinPart($options); + + // TODO: Consider moving this block out into a separate function. + $workUnits = $options['show_work_units']; + if ($workUnits) { + $unitTotalsOnly = $user->getConfigOption('unit_totals_only'); + $firstUnitThreshold = $user->getConfigInt('1st_unit_threshold'); + $minutesInUnit = $user->getConfigInt('minutes_in_unit', 15); + if ($unitTotalsOnly) + $work_unit_part = ", if (sum(l.billable * time_to_sec(l.duration)/60) < $firstUnitThreshold, 0, ceil(sum(l.billable * time_to_sec(l.duration)/60/$minutesInUnit))) as units"; + else + $work_unit_part = ", sum(if(l.billable = 0 or time_to_sec(l.duration)/60 < $firstUnitThreshold, 0, ceil(time_to_sec(l.duration)/60/$minutesInUnit))) as units"; + } + // End of TODO. + $where = ttReportHelper::getWhere($options); $group_by_part = ttReportHelper::makeGroupByPart($options); if ($options['show_cost']) { - - $workUnits = $options['show_work_units']; - if ($workUnits) { - $unitTotalsOnly = $user->getConfigOption('unit_totals_only'); - $firstUnitThreshold = $user->getConfigInt('1st_unit_threshold'); - $minutesInUnit = $user->getConfigInt('minutes_in_unit', 15); - } - if (MODE_TIME == $user->getTrackingMode()) { if (!ttReportHelper::groupingBy('user', $options)) $left_join = 'left join tt_users u on (l.user_id = u.id)'; - $sql = "select $concat_part, sum(time_to_sec(l.duration)) as time"; - if ($workUnits) { - if ($unitTotalsOnly) - $sql .= ", if (sum(l.billable * time_to_sec(l.duration)/60) < $firstUnitThreshold, 0, ceil(sum(l.billable * time_to_sec(l.duration)/60/$minutesInUnit))) as units"; - else - $sql .= ", sum(if(l.billable = 0 or time_to_sec(l.duration)/60 < $firstUnitThreshold, 0, ceil(time_to_sec(l.duration)/60/$minutesInUnit))) as units"; - } + $sql = "select $concat_part, sum(time_to_sec(l.duration)) as time".$work_unit_part; $sql .= ", sum(cast(l.billable * coalesce(u.rate, 0) * time_to_sec(l.duration)/3600 as decimal(10, 2))) as cost, null as expenses from tt_log l $join_part $left_join $where $group_by_part"; } else { // If we are including cost and tracking projects, our query (the same as above) needs to join the tt_user_project_binds table. - $sql = "select $concat_part, sum(time_to_sec(l.duration)) as time"; - if ($workUnits) { - if ($unitTotalsOnly) - $sql .= ", if (sum(l.billable * time_to_sec(l.duration)/60) < $firstUnitThreshold, 0, ceil(sum(l.billable * time_to_sec(l.duration)/60/$minutesInUnit))) as units"; - else - $sql .= ", sum(if(l.billable = 0 or time_to_sec(l.duration)/60 < $firstUnitThreshold, 0, ceil(time_to_sec(l.duration)/60/$minutesInUnit))) as units"; - } + $sql = "select $concat_part, sum(time_to_sec(l.duration)) as time".$work_unit_part; $sql .= ", sum(cast(l.billable * coalesce(upb.rate, 0) * time_to_sec(l.duration)/3600 as decimal(10,2))) as cost, null as expenses from tt_log l $join_part left join tt_user_project_binds upb on (l.user_id = upb.user_id and l.project_id = upb.project_id) $where $group_by_part"; } } else { - // $sql = "select $group_field as group_field, sum(time_to_sec(l.duration)) as time"; - $sql = "select $concat_part, sum(time_to_sec(l.duration)) as time"; - if ($workUnits) { - if ($unitTotalsOnly) - $sql .= ", if (sum(l.billable * time_to_sec(l.duration)/60) < $firstUnitThreshold, 0, ceil(sum(l.billable * time_to_sec(l.duration)/60/$minutesInUnit))) as units"; - else - $sql .= ", sum(if(l.billable = 0 or time_to_sec(l.duration)/60 < $firstUnitThreshold, 0, ceil(time_to_sec(l.duration)/60/$minutesInUnit))) as units"; - } + $sql = "select $concat_part, sum(time_to_sec(l.duration)) as time".$work_unit_part; $sql .= ", null as expenses from tt_log l $join_part $where $group_by_part"; } diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index 63b1c9cc..ae8c6333 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.18.31.4654 | Copyright © Anuko | +  Anuko Time Tracker 1.18.31.4655 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} -- 2.20.1