X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/cb0478b58a3e34cfffcf41e4e89de5a75685460d..a7b601e885915db17770998a3ef366f64ccad8c7:/report.php diff --git a/report.php b/report.php index aacb889a..b31394e2 100644 --- a/report.php +++ b/report.php @@ -73,20 +73,29 @@ if ($request->isPost()) $bean->loadBean(); $client_id = $bean->getAttribute('client'); -// Do we need to show checkboxes? We show them if we allow setting approved or paid status, -// and also when we can assign / deassign records to invoces. +// Do we need to show checkboxes? We show them in the following 4 situations: +// - We can approve items. +// - We can mark items as paid. +// - We can sssign items to invoices. +// - We can assign items to a timesheet. +// Determine these conditions separately. if ($bean->getAttribute('chapproved') && ($user->can('approve_reports') || $user->can('approve_all_eports'))) - $showForApproved = true; -if ($bean->getAttribute('chpaid') || - ($client_id && $bean->getAttribute('chinvoice') && ('no_grouping' == $bean->getAttribute('group_by1')) && !$user->isClient())) { - if ($user->can('manage_invoices')) - $showForInvoicesOrPaid = true; -} -if ($showForApproved || $showForInvoicesOrPaid) + $useMarkApproved = true; +if ($bean->getAttribute('chpaid') && $user->can('manage_invoices')) + $useMarkPaid = true; +if ($bean->getAttribute('chinvoice') && $client_id && 'no_grouping' == $bean->getAttribute('group_by1') && !$user->isClient() && $user->can('manage_invoices')) + $useAssignToInvoice = true; +//if ($bean->getAttribute('chtimesheet') && ($user->can('track_own_time') || $user->can('track_time'))) +// $useAssignToTimesheet = true; // TODO: add a check for timesheet capability. +//if (ttTimesheetHelper::canAssign($options)) +// $useAssignToTimesheet = true; + +$use_checkboxes = $useMarkApproved || $useMarkPaid || $useAssignToInvoice || $useAssignToTimesheet; +if ($use_checkboxes) $smarty->assign('use_checkboxes', true); // Controls for "Mark approved" block. -if ($showForApproved) { +if ($useMarkApproved) { $mark_approved_select_options = array('1'=>$i18n->get('dropdown.all'),'2'=>$i18n->get('dropdown.select')); $form->addInput(array('type'=>'combobox', 'name'=>'mark_approved_select_options', @@ -102,7 +111,7 @@ if ($showForApproved) { } // Controls for "Mark paid" block. -if ($user->can('manage_invoices') && $bean->getAttribute('chpaid')) { +if ($useMarkPaid) { $mark_paid_select_options = array('1'=>$i18n->get('dropdown.all'),'2'=>$i18n->get('dropdown.select')); $form->addInput(array('type'=>'combobox', 'name'=>'mark_paid_select_options', @@ -118,8 +127,7 @@ if ($user->can('manage_invoices') && $bean->getAttribute('chpaid')) { } // Controls for "Assign to invoice" block. -if ($user->can('manage_invoices') && - ($client_id && $bean->getAttribute('chinvoice') && ('no_grouping' == $bean->getAttribute('group_by1')) && !$user->isClient())) { +if ($useAssignToInvoice) { // Client is selected and we are displaying the invoice column. $recent_invoices = ttGroupHelper::getRecentInvoices($client_id); if ($recent_invoices) { @@ -218,7 +226,7 @@ $options = ttReportHelper::getReportOptions($bean); $report_items = ttReportHelper::getItems($options); // Store record ids in session in case user wants to act on records such as marking them all paid. -if ($request->isGet() && $user->isPluginEnabled('ps')) +if ($request->isGet() && $use_checkboxes) ttReportHelper::putInSession($report_items); if (ttReportHelper::grouping($options)) { @@ -227,39 +235,6 @@ if (ttReportHelper::grouping($options)) { } $totals = ttReportHelper::getTotals($options); -// TODO: Determine if we can create a timesheet out of this report. -// There must be only one user, and nothing assigned to existing timesheets. -$canCreateTimesheet = false; -if ($user->isPluginEnabled('ts') && count($report_items) > 0 && - ($user->can('manage_own_timesheets') || $user->can('manage_timesheets'))) { - - $canCreateTimesheet = true; // Start with true and reset if we can't. - $first_user_id = null; - foreach ($report_items as $report_item) { - // Check user id. - if (!$first_user_id) - $first_user_id = $report_item['user_id']; - else { - if ($report_item['user_id'] != $first_user_id) { - // We have items for multiple users. - $canCreateTimesheet = false; - break; - } - } - // Check timesheet id. - if ($report_item['timesheet_id']) { - // We have an item already assigned to a timesheet. - $canCreateTimesheet = false; - break; - } - } - // Save user_id in session. - $bean->saveDetachedAttribute('timesheet_user_id', $first_user_id); - - // TODO: Improve this for "view_all_reports" situation. - // We may need to add "manage_all_timesheets" right. -} - // Assign variables that are used to print subtotals. if ($report_items) { $smarty->assign('print_subtotals', true); @@ -276,7 +251,6 @@ $smarty->assign('forms', array($form->getName()=>$form->toArray())); $smarty->assign('report_items', $report_items); $smarty->assign('subtotals', $subtotals); $smarty->assign('totals', $totals); -$smarty->assign('can_create_timesheet', $canCreateTimesheet); $smarty->assign('bean', $bean); $smarty->assign('title', $i18n->get('title.report').": ".$totals['start_date']." - ".$totals['end_date']); $smarty->assign('content_page_name', 'report.tpl');