X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=report.php;h=93720cb27e69abb756c0b36afe081c93339854ac;hb=1e2a1839bd4b4530a43dfcdc3f0582623edd5486;hp=190dff8ee24772d41b80f2d39fd4ce2280497fde;hpb=fd0872d9e582113346fa1e93557f370286c5c9f2;p=timetracker.git diff --git a/report.php b/report.php index 190dff8e..93720cb2 100644 --- a/report.php +++ b/report.php @@ -30,10 +30,10 @@ require_once('initialize.php'); import('form.Form'); import('form.ActionForm'); import('ttReportHelper'); -import('ttTeamHelper'); +import('ttGroupHelper'); // Access check. -if (!ttAccessAllowed('view_own_reports')) { +if (!(ttAccessAllowed('view_own_reports') || ttAccessAllowed('view_reports') || ttAccessAllowed('view_all_reports') || ttAccessAllowed('view_client_reports'))) { header('Location: access_denied.php'); exit(); } @@ -54,14 +54,14 @@ if ($user->isPluginEnabled('iv')) { // Use custom fields plugin if it is enabled. if ($user->isPluginEnabled('cf')) { require_once('plugins/CustomFields.class.php'); - $custom_fields = new CustomFields($user->team_id); + $custom_fields = new CustomFields(); $smarty->assign('custom_fields', $custom_fields); } -$form = new Form('reportForm'); +$form = new Form('reportViewForm'); // Report settings are stored in session bean before we get here from reports.php. -$bean = new ActionForm('reportBean', $form, $request); +$bean = new ActionForm('reportBean', new Form('reportForm'), $request); // If we are in post, load the bean from session, as the constructor does it only in get. if ($request->isPost()) $bean->loadBean(); @@ -69,12 +69,13 @@ $client_id = $bean->getAttribute('client'); // Do we need to show checkboxes? if ($bean->getAttribute('chpaid') || - ($client_id && $bean->getAttribute('chinvoice') && ('no_grouping' == $bean->getAttribute('group_by')) && !$user->isClient())) { - $smarty->assign('use_checkboxes', true); + ($client_id && $bean->getAttribute('chinvoice') && ('no_grouping' == $bean->getAttribute('group_by1')) && !$user->isClient())) { + if ($user->can('manage_invoices')) + $smarty->assign('use_checkboxes', true); } // Controls for "Mark paid" block. -if ($bean->getAttribute('chpaid')) { +if ($user->can('manage_invoices') && $bean->getAttribute('chpaid')) { $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', @@ -90,9 +91,10 @@ if ($bean->getAttribute('chpaid')) { } // Controls for "Assign to invoice" block. -if ($client_id && $bean->getAttribute('chinvoice') && ('no_grouping' == $bean->getAttribute('group_by')) && !$user->isClient()) { +if ($user->can('manage_invoices') && + ($client_id && $bean->getAttribute('chinvoice') && ('no_grouping' == $bean->getAttribute('group_by1')) && !$user->isClient())) { // Client is selected and we are displaying the invoice column. - $recent_invoices = ttTeamHelper::getRecentInvoices($user->team_id, $client_id); + $recent_invoices = ttGroupHelper::getRecentInvoices($client_id); if ($recent_invoices) { $assign_invoice_select_options = array('1'=>$i18n->get('dropdown.all'),'2'=>$i18n->get('dropdown.select')); $form->addInput(array('type'=>'combobox', @@ -168,44 +170,69 @@ if ($request->isPost()) { } } // isPost -$group_by = $bean->getAttribute('group_by'); +$options = ttReportHelper::getReportOptions($bean); -$report_items = ttReportHelper::getItems($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')) ttReportHelper::putInSession($report_items); -if ('no_grouping' != $group_by) - $subtotals = ttReportHelper::getSubtotals($bean); -$totals = ttReportHelper::getTotals($bean); +if (ttReportHelper::grouping($options)) { + $subtotals = ttReportHelper::getSubtotals($options); + $smarty->assign('group_by_header', ttReportHelper::makeGroupByHeader($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 && 'no_grouping' != $group_by) { +if ($report_items) { $smarty->assign('print_subtotals', true); $smarty->assign('first_pass', true); - $smarty->assign('group_by', $group_by); $smarty->assign('prev_grouped_by', ''); $smarty->assign('cur_grouped_by', ''); } -// Determine group by header. -if ('no_grouping' != $group_by) { - if ('cf_1' == $group_by) - $smarty->assign('group_by_header', $custom_fields->fields[0]['label']); - else { - $key = 'label.'.$group_by; - $smarty->assign('group_by_header', $i18n->get($key)); - } -} + // Assign variables that are used to alternate color of rows for different dates. $smarty->assign('prev_date', ''); $smarty->assign('cur_date', ''); $smarty->assign('report_row_class', 'rowReportItem'); - $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');