X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=topdf.php;h=c9120fcf763efd84cfec0305af3e3bb0d013393e;hb=e7d32433a6be7d06b742203ed36a4c93905a9813;hp=15ac1ee92b15b6fa86f79822845035c3fed7c624;hpb=3b4f6b89a71f50d89d816129b27ee819a314620e;p=timetracker.git
diff --git a/topdf.php b/topdf.php
index 15ac1ee9..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,12 +53,16 @@ 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');
@@ -154,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 .= '';
@@ -172,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())
@@ -208,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.
@@ -229,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())
@@ -238,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');
@@ -249,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'];
}
@@ -261,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())
@@ -297,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 .= '';
}
@@ -316,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())
@@ -325,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 .= '';
}