X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=topdf.php;h=c9120fcf763efd84cfec0305af3e3bb0d013393e;hb=44e4bbe10c7f66ab47ce298009009e6627432bc5;hp=23f29d5084c3ef0905652faf3809681d2ec1839c;hpb=913eba1427598741fcfb8d1e53746923c1f9e0e4;p=timetracker.git
diff --git a/topdf.php b/topdf.php
index 23f29d50..c9120fcf 100644
--- a/topdf.php
+++ b/topdf.php
@@ -31,12 +31,13 @@
* If installed, it is expected to be in WEB-INF/lib/tcpdf/ folder.
*/
require_once('initialize.php');
+import('ttConfigHelper');
import('form.Form');
import('form.ActionForm');
import('ttReportHelper');
// Access checks.
-if (!(ttAccessAllowed('view_own_reports') || ttAccessAllowed('view_reports'))) {
+if (!(ttAccessAllowed('view_own_reports') || ttAccessAllowed('view_reports') || ttAccessAllowed('view_all_reports') || ttAccessAllowed('view_client_reports'))) {
header('Location: access_denied.php');
exit();
}
@@ -52,26 +53,31 @@ require_once('WEB-INF/lib/tcpdf/tcpdf.php');
// Use custom fields plugin if it is enabled.
if ($user->isPluginEnabled('cf')) {
require_once('plugins/CustomFields.class.php');
- $custom_fields = new CustomFields($user->group_id);
+ $custom_fields = new CustomFields();
}
// Report settings are stored in session bean before we get here.
$bean = new ActionForm('reportBean', new Form('reportForm'), $request);
+$config = new ttConfigHelper($user->getConfig());
+$show_note_column = $bean->getAttribute('chnote') && !$config->getDefinedValue('report_note_on_separate_row');
+$show_note_row = $bean->getAttribute('chnote') && $config->getDefinedValue('report_note_on_separate_row');
+
// There are 2 variations of report: totals only, or normal. Totals only means that the report
// is grouped by either date, user, client, project, task or cf_1 and user only needs to see subtotals by group.
$totals_only = ($bean->getAttribute('chtotalsonly') == '1');
// Obtain items for report.
$options = ttReportHelper::getReportOptions($bean);
+$grouping = ttReportHelper::grouping($options);
if (!$totals_only)
$items = ttReportHelper::getItems($options); // Individual entries.
-if ($totals_only || ttReportHelper::grouping($options))
+if ($totals_only || $grouping)
$subtotals = ttReportHelper::getSubtotals($options); // Subtotals for groups of items.
$totals = ttReportHelper::getTotals($options); // Totals for the entire report.
// Assign variables that are used to print subtotals.
-if ($items && 'no_grouping' != $group_by1) {
+if ($items && $grouping) {
$print_subtotals = true;
$first_pass = true;
$prev_grouped_by = '';
@@ -153,11 +159,13 @@ if ($totals_only) {
if ($bean->getAttribute('chfinish')) { $colspan++; $html .= "
".$i18n->get('label.finish').' | '; }
if ($bean->getAttribute('chduration')) { $colspan++; $html .= "".$i18n->get('label.duration').' | '; }
if ($bean->getAttribute('chunits')) { $colspan++; $html .= "".$i18n->get('label.work_units_short').' | '; }
- if ($bean->getAttribute('chnote')) { $colspan++; $html .= ''.$i18n->get('label.note').' | '; }
+ if ($show_note_column) { $colspan++; $html .= ''.$i18n->get('label.note').' | '; }
if ($bean->getAttribute('chcost')) { $colspan++; $html .= "".$i18n->get('label.cost').' | '; }
+ if ($bean->getAttribute('chapproved')) { $colspan++; $html .= "".$i18n->get('label.approved').' | '; }
if ($bean->getAttribute('chpaid')) { $colspan++; $html .= "".$i18n->get('label.paid').' | '; }
if ($bean->getAttribute('chip')) { $colspan++; $html .= "".$i18n->get('label.ip').' | '; }
if ($bean->getAttribute('chinvoice')) { $colspan++; $html .= ''.$i18n->get('label.invoice').' | '; }
+ if ($bean->getAttribute('chtimesheet')) { $colspan++; $html .= ''.$i18n->get('label.timesheet').' | '; }
$html .= '';
$html .= '';
@@ -171,34 +179,34 @@ if ($totals_only) {
$html .= ''.$i18n->get('label.subtotal').' | ';
if ($user->can('view_reports') || $user->can('view_all_reports') || $user->isClient()) {
$html .= '';
- if ($group_by1 == 'user') $html .= htmlspecialchars($subtotals[$prev_grouped_by]['name']);
+ $html .= htmlspecialchars($subtotals[$prev_grouped_by]['user']);
$html .= ' | ';
}
if ($bean->getAttribute('chclient')) {
$html .= '';
- if ($group_by1 == 'client') $html .= htmlspecialchars($subtotals[$prev_grouped_by]['name']);
+ $html .= htmlspecialchars($subtotals[$prev_grouped_by]['client']);
$html .= ' | ';
}
if ($bean->getAttribute('chproject')) {
$html .= '';
- if ($group_by1 == 'project') $html .= htmlspecialchars($subtotals[$prev_grouped_by]['name']);
+ $html .= htmlspecialchars($subtotals[$prev_grouped_by]['project']);
$html .= ' | ';
}
if ($bean->getAttribute('chtask')) {
$html .= '';
- if ($group_by1 == 'task') $html .= htmlspecialchars($subtotals[$prev_grouped_by]['name']);
+ $html .= htmlspecialchars($subtotals[$prev_grouped_by]['task']);
$html .= ' | ';
}
if ($bean->getAttribute('chcf_1')) {
$html .= '';
- if ($group_by1 == 'cf_1') $html .= htmlspecialchars($subtotals[$prev_grouped_by]['name']);
+ $html .= htmlspecialchars($subtotals[$prev_grouped_by]['cf_1']);
$html .= ' | ';
}
if ($bean->getAttribute('chstart')) $html .= ' | ';
if ($bean->getAttribute('chfinish')) $html .= ' | ';
if ($bean->getAttribute('chduration')) $html .= "".$subtotals[$prev_grouped_by]['time'].' | ';
if ($bean->getAttribute('chunits')) $html .= "".$subtotals[$prev_grouped_by]['units'].' | ';
- if ($bean->getAttribute('chnote')) $html .= ' | ';
+ if ($show_note_column) $html .= ' | ';
if ($bean->getAttribute('chcost')) {
$html .= "";
if ($user->can('manage_invoices') || $user->isClient())
@@ -207,13 +215,24 @@ if ($totals_only) {
$html .= $subtotals[$prev_grouped_by]['expenses'];
$html .= ' | ';
}
+ if ($bean->getAttribute('chapproved')) $html .= ' | ';
if ($bean->getAttribute('chpaid')) $html .= ' | ';
if ($bean->getAttribute('chip')) $html .= ' | ';
if ($bean->getAttribute('chinvoice')) $html .= ' | ';
+ if ($bean->getAttribute('chtimesheet')) $html .= ' | ';
$html .= '';
$html .= ' |
';
+ // TODO: page breaks on PDF reports is a rarely used feature.
+ // Currently without configuration capability.
+ // Consider adding an option to user profile instead.
+ if (isTrue('PDF_REPORT_PAGE_BREAKS')) {
+ import('ttUserConfig');
+ $uc = new ttUserConfig();
+ $use_breaks = $uc->getValue(SYSC_PDF_REPORT_PAGE_BREAKS);
+ if ($use_breaks) $html .= '
';
+ }
}
- $first_pass = false;
+ $first_pass = false;
}
// Print a regular row.
@@ -228,7 +247,7 @@ if ($totals_only) {
if ($bean->getAttribute('chfinish')) $html .= "".$item['finish'].' | ';
if ($bean->getAttribute('chduration')) $html .= "".$item['duration'].' | ';
if ($bean->getAttribute('chunits')) $html .= "".$item['units'].' | ';
- if ($bean->getAttribute('chnote')) $html .= ''.htmlspecialchars($item['note']).' | ';
+ if ($show_note_column) $html .= ''.htmlspecialchars($item['note']).' | ';
if ($bean->getAttribute('chcost')) {
$html .= "";
if ($user->can('manage_invoices') || $user->isClient())
@@ -237,6 +256,11 @@ if ($totals_only) {
$html .= $item['expense'];
$html .= ' | ';
}
+ if ($bean->getAttribute('chapproved')) {
+ $html .= '';
+ $html .= $item['approved'] == 1 ? $i18n->get('label.yes') : $i18n->get('label.no');
+ $html .= ' | ';
+ }
if ($bean->getAttribute('chpaid')) {
$html .= '';
$html .= $item['paid'] == 1 ? $i18n->get('label.yes') : $i18n->get('label.no');
@@ -248,8 +272,17 @@ if ($totals_only) {
$html .= ' | ';
}
if ($bean->getAttribute('chinvoice')) $html .= ''.htmlspecialchars($item['invoice']).' | ';
+ if ($bean->getAttribute('chtimesheet')) $html .= ''.htmlspecialchars($item['timesheet_name']).' | ';
$html .= '';
+ if ($show_note_row && $item['note']) {
+ $html .= '';
+ $html .= "".$i18n->get('label.note').' | ';
+ $noteSpan = $colspan-1;
+ $html .= ''.htmlspecialchars($item['note']).' | ';
+ $html .= '
';
+ }
+
$prev_date = $item['date'];
if ($print_subtotals) $prev_grouped_by = $item['grouped_by'];
}
@@ -260,34 +293,34 @@ if ($totals_only) {
$html .= ''.$i18n->get('label.subtotal').' | ';
if ($user->can('view_reports') || $user->can('view_all_reports') || $user->isClient()) {
$html .= '';
- if ($group_by1 == 'user') $html .= htmlspecialchars($subtotals[$prev_grouped_by]['name']);
+ $html .= htmlspecialchars($subtotals[$prev_grouped_by]['user']);
$html .= ' | ';
}
if ($bean->getAttribute('chclient')) {
$html .= '';
- if ($group_by1 == 'client') $html .= htmlspecialchars($subtotals[$prev_grouped_by]['name']);
+ $html .= htmlspecialchars($subtotals[$prev_grouped_by]['client']);
$html .= ' | ';
}
if ($bean->getAttribute('chproject')) {
$html .= '';
- if ($group_by1 == 'project') $html .= htmlspecialchars($subtotals[$prev_grouped_by]['name']);
+ $html .= htmlspecialchars($subtotals[$prev_grouped_by]['project']);
$html .= ' | ';
}
if ($bean->getAttribute('chtask')) {
$html .= '';
- if ($group_by1 == 'task') $html .= htmlspecialchars($subtotals[$prev_grouped_by]['name']);
+ $html .= htmlspecialchars($subtotals[$prev_grouped_by]['task']);
$html .= ' | ';
}
if ($bean->getAttribute('chcf_1')) {
$html .= '';
- if ($group_by1 == 'cf_1') $html .= htmlspecialchars($subtotals[$prev_grouped_by]['name']);
+ $html .= htmlspecialchars($subtotals[$prev_grouped_by]['cf_1']);
$html .= ' | ';
}
if ($bean->getAttribute('chstart')) $html .= ' | ';
if ($bean->getAttribute('chfinish')) $html .= ' | ';
if ($bean->getAttribute('chduration')) $html .= "".$subtotals[$prev_grouped_by]['time'].' | ';
if ($bean->getAttribute('chunits')) $html .= "".$subtotals[$prev_grouped_by]['units'].' | ';
- if ($bean->getAttribute('chnote')) $html .= ' | ';
+ if ($show_note_column) $html .= ' | ';
if ($bean->getAttribute('chcost')) {
$html .= "";
if ($user->can('manage_invoices') || $user->isClient())
@@ -296,9 +329,11 @@ if ($totals_only) {
$html .= $subtotals[$prev_grouped_by]['expenses'];
$html .= ' | ';
}
+ if ($bean->getAttribute('chapproved')) $html .= ' | ';
if ($bean->getAttribute('chpaid')) $html .= ' | ';
if ($bean->getAttribute('chip')) $html .= ' | ';
if ($bean->getAttribute('chinvoice')) $html .= ' | ';
+ if ($bean->getAttribute('chtimesheet')) $html .= ' | ';
$html .= '';
}
@@ -315,7 +350,7 @@ if ($totals_only) {
if ($bean->getAttribute('chfinish')) $html .= ' | ';
if ($bean->getAttribute('chduration')) $html .= "".$totals['time'].' | ';
if ($bean->getAttribute('chunits')) $html .= "".$totals['units'].' | ';
- if ($bean->getAttribute('chnote')) $html .= ' | ';
+ if ($show_note_column) $html .= ' | ';
if ($bean->getAttribute('chcost')) {
$html .= "".htmlspecialchars($user->currency).' ';
if ($user->can('manage_invoices') || $user->isClient())
@@ -324,9 +359,11 @@ if ($totals_only) {
$html .= $totals['expenses'];
$html .= ' | ';
}
+ if ($bean->getAttribute('chapproved')) $html .= ' | ';
if ($bean->getAttribute('chpaid')) $html .= ' | ';
if ($bean->getAttribute('chip')) $html .= ' | ';
if ($bean->getAttribute('chinvoice')) $html .= ' | ';
+ if ($bean->getAttribute('chtimesheet')) $html .= ' | ';
$html .= '';
$html .= '';
}