X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttReportHelper.class.php;h=5e8f799f0cdd034fd4239b270ff0187e7c35fb87;hb=d47f034f5d1b5e70185507046dc09df7c1299d81;hp=abb5ab9e60cf05efbd08a19fc13bf826db89081a;hpb=7aced3f6210fcd9bad8db0f6ff7d12d1f9daf62e;p=timetracker.git diff --git a/WEB-INF/lib/ttReportHelper.class.php b/WEB-INF/lib/ttReportHelper.class.php index abb5ab9e..5e8f799f 100644 --- a/WEB-INF/lib/ttReportHelper.class.php +++ b/WEB-INF/lib/ttReportHelper.class.php @@ -629,6 +629,37 @@ class ttReportHelper { } } + // The assignToTimesheet assigns a set of tt_log records to a specific timesheet. + static function assignToTimesheet($timesheet_id, $time_log_ids) { + global $user; + $mdb2 = getConnection(); + + $user_id = $user->getUser(); + $group_id = $user->getGroup(); + $org_id = $user->org_id; + + if ($time_log_ids) { + // Use inner join as a protection mechanism not to do anything with "acted upon" timesheets. + // Allow oprations only with pending timesheets. + if ($timesheet_id) { + // Assigning a timesheet to records. + $inner_join = " inner join tt_timesheets ts on (ts.id = $timesheet_id". + " and ts.user_id = $user_id and ts.approve_status is null". // Timesheet to assign to is pending. + // Part below: existing timesheet either not exists or is also pending. + " and (l.timesheet_id is null or (l.timesheet_id = ts.id and ts.approve_status is null)))"; + } else { + $inner_join = " inner join tt_timesheets ts on (ts.id = l.timesheet_id". + " and ts.user_id = $user_id and ts.approve_status is null)"; // Do not deassign from acted-upon timesheets. + } + + $sql = "update tt_log l $inner_join". + " set l.timesheet_id = ".$mdb2->quote($timesheet_id). + " where l.id in(".join(', ', $time_log_ids).") and l.user_id = $user_id and l.group_id = $group_id and l.org_id = $org_id"; + $affected = $mdb2->exec($sql); + if (is_a($affected, 'PEAR_Error')) die($affected->getMessage()); + } + } + // The markApproved marks a set of records as either approved or unapproved. static function markApproved($time_log_ids, $expense_item_ids, $approved = true) { global $user; @@ -707,6 +738,24 @@ class ttReportHelper { $cellLeftAlignedSubtotal = 'font-weight: bold; text-align: left; vertical-align: top;'; $cellRightAlignedSubtotal = 'font-weight: bold; text-align: right; vertical-align: top;'; + // Determine column span for note field. + $colspan = 1; + if ($user->can('view_reports') || $user->can('view_all_reports') || $user->isClient()) $colspan++; + if ($options['show_client']) $colspan++; + if ($options['show_project']) $colspan++; + if ($options['show_task']) $colspan++; + if ($options['show_custom_field_1']) $colspan++; + if ($options['show_start']) $colspan++; + if ($options['show_end']) $colspan++; + if ($options['show_duration']) $colspan++; + if ($options['show_work_units']) $colspan++; + if ($options['show_cost']) $colspan++; + if ($options['show_approved']) $colspan++; + if ($options['show_paid']) $colspan++; + if ($options['show_ip']) $colspan++; + if ($options['show_invoice']) $colspan++; + if ($options['show_timesheet']) $colspan++; + // Start creating email body. $body = ''; $body .= ''; @@ -800,8 +849,6 @@ class ttReportHelper { $body .= ''.$i18n->get('label.duration').''; if ($options['show_work_units']) $body .= ''.$i18n->get('label.work_units_short').''; - if ($options['show_note']) - $body .= ''.$i18n->get('label.note').''; if ($options['show_cost']) $body .= ''.$i18n->get('label.cost').''; if ($options['show_approved']) @@ -848,7 +895,6 @@ class ttReportHelper { if ($options['show_end']) $body .= ''; if ($options['show_duration']) $body .= ''.$subtotals[$prev_grouped_by]['time'].''; if ($options['show_work_units']) $body .= ''.$subtotals[$prev_grouped_by]['units'].''; - if ($options['show_note']) $body .= ''; if ($options['show_cost']) { $body .= ''; $body .= ($canViewReports || $isClient) ? $subtotals[$prev_grouped_by]['cost'] : $subtotals[$prev_grouped_by]['expenses']; @@ -888,8 +934,6 @@ class ttReportHelper { $body .= ''.$record['duration'].''; if ($options['show_work_units']) $body .= ''.$record['units'].''; - if ($options['show_note']) - $body .= ''.htmlspecialchars($record['note']).''; if ($options['show_cost']) $body .= ''.$record['cost'].''; if ($options['show_approved']) { @@ -912,7 +956,12 @@ class ttReportHelper { if ($options['show_timesheet']) $body .= ''.htmlspecialchars($record['timesheet']).''; $body .= ''; - + if ($options['show_note'] && $record['note']) { + $body .= ''; + $body .= ''.$i18n->get('label.note').':'; + $body .= ''.$record['note'].''; + $body .= ''; + } $prev_date = $record['date']; if ($print_subtotals) $prev_grouped_by = $record['grouped_by']; @@ -933,7 +982,6 @@ class ttReportHelper { if ($options['show_end']) $body .= ''; if ($options['show_duration']) $body .= ''.$subtotals[$cur_grouped_by]['time'].''; if ($options['show_work_units']) $body .= ''.$subtotals[$cur_grouped_by]['units'].''; - if ($options['show_note']) $body .= ''; if ($options['show_cost']) { $body .= ''; $body .= ($canViewReports || $isClient) ? $subtotals[$cur_grouped_by]['cost'] : $subtotals[$cur_grouped_by]['expenses']; @@ -960,7 +1008,6 @@ class ttReportHelper { if ($options['show_end']) $body .= ''; if ($options['show_duration']) $body .= ''.$totals['time'].''; if ($options['show_work_units']) $body .= ''.$totals['units'].''; - if ($options['show_note']) $body .= ''; if ($options['show_cost']) { $body .= ''.htmlspecialchars($user->currency).' '; $body .= ($canViewReports || $isClient) ? $totals['cost'] : $totals['expenses'];