X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=WEB-INF%2Flib%2FttReportHelper.class.php;h=c455486104d63537e73a6a9b489966d3dae6a188;hb=9857411f4fd9eb9275d0df54565db6aa7edcd029;hp=ac3582e68b378437d0c8352757ea142706f96714;hpb=a6f6687b468a81a0f96c108faefbfc69dd607acf;p=timetracker.git
diff --git a/WEB-INF/lib/ttReportHelper.class.php b/WEB-INF/lib/ttReportHelper.class.php
index ac3582e6..c4554861 100644
--- a/WEB-INF/lib/ttReportHelper.class.php
+++ b/WEB-INF/lib/ttReportHelper.class.php
@@ -72,6 +72,8 @@ class ttReportHelper {
if ($options['invoice']=='2') $dropdown_parts .= ' and l.invoice_id is null';
if ($options['timesheet']==TIMESHEET_NOT_ASSIGNED) $dropdown_parts .= ' and l.timesheet_id is null';
if ($options['timesheet']==TIMESHEET_ASSIGNED) $dropdown_parts .= ' and l.timesheet_id is not null';
+ if ($options['approved']=='1') $dropdown_parts .= ' and l.approved = 1';
+ if ($options['approved']=='2') $dropdown_parts .= ' and l.approved = 0';
if ($options['paid_status']=='1') $dropdown_parts .= ' and l.paid = 1';
if ($options['paid_status']=='2') $dropdown_parts .= ' and l.paid = 0';
@@ -122,6 +124,8 @@ class ttReportHelper {
if ($options['invoice']=='2') $dropdown_parts .= ' and ei.invoice_id is null';
if ($options['timesheet']==TIMESHEET_NOT_ASSIGNED) $dropdown_parts .= ' and ei.timesheet_id is null';
if ($options['timesheet']==TIMESHEET_ASSIGNED) $dropdown_parts .= ' and ei.timesheet_id is not null';
+ if ($options['approved']=='1') $dropdown_parts .= ' and ei.approved = 1';
+ if ($options['approved']=='2') $dropdown_parts .= ' and ei.approved = 0';
if ($options['paid_status']=='1') $dropdown_parts .= ' and ei.paid = 1';
if ($options['paid_status']=='2') $dropdown_parts .= ' and ei.paid = 0';
@@ -233,6 +237,9 @@ class ttReportHelper {
array_push($fields, "cast(l.billable * coalesce(upb.rate, 0) * time_to_sec(l.duration)/3600 as decimal(10,2)) as cost"); // Use project rate for user.
array_push($fields, "null as expense");
}
+ // Add approved.
+ if ($options['show_approved'])
+ array_push($fields, 'l.approved');
// Add paid status.
if ($canViewReports && $options['show_paid'])
array_push($fields, 'l.paid');
@@ -329,6 +336,9 @@ class ttReportHelper {
array_push($fields, 'ei.name as note');
array_push($fields, 'ei.cost as cost');
array_push($fields, 'ei.cost as expense');
+ // Add approved.
+ if ($options['show_approved'])
+ array_push($fields, 'ei.approved');
// Add paid status.
if ($canViewReports && $options['show_paid'])
array_push($fields, 'ei.paid');
@@ -649,6 +659,29 @@ class ttReportHelper {
}
}
+ // 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;
+ $mdb2 = getConnection();
+
+ $group_id = $user->getGroup();
+ $org_id = $user->org_id;
+
+ $approved_val = (int) $approved;
+ if ($time_log_ids) {
+ $sql = "update tt_log set approved = $approved_val".
+ " where id in(".join(', ', $time_log_ids).") and group_id = $group_id and org_id = $org_id";
+ $affected = $mdb2->exec($sql);
+ if (is_a($affected, 'PEAR_Error')) die($affected->getMessage());
+ }
+ if ($expense_item_ids) {
+ $sql = "update tt_expense_items set approved = $approved_val".
+ " where id in(".join(', ', $expense_item_ids).") and group_id = $group_id and org_id = $org_id";
+ $affected = $mdb2->exec($sql);
+ if (is_a($affected, 'PEAR_Error')) die($affected->getMessage());
+ }
+ }
+
// The markPaid marks a set of records as either paid or unpaid.
static function markPaid($time_log_ids, $expense_item_ids, $paid = true) {
global $user;
@@ -801,12 +834,16 @@ class ttReportHelper {
$body .= '
'.$i18n->get('label.note').' | ';
if ($options['show_cost'])
$body .= ''.$i18n->get('label.cost').' | ';
+ if ($options['show_approved'])
+ $body .= ''.$i18n->get('label.approved').' | ';
if ($options['show_paid'])
$body .= ''.$i18n->get('label.paid').' | ';
if ($options['show_ip'])
$body .= ''.$i18n->get('label.ip').' | ';
if ($options['show_invoice'])
$body .= ''.$i18n->get('label.invoice').' | ';
+ if ($options['show_timesheet'])
+ $body .= ''.$i18n->get('label.timesheet').' | ';
$body .= '';
// Initialize variables to print subtotals.
@@ -847,9 +884,11 @@ class ttReportHelper {
$body .= ($canViewReports || $isClient) ? $subtotals[$prev_grouped_by]['cost'] : $subtotals[$prev_grouped_by]['expenses'];
$body .= '';
}
+ if ($options['show_approved']) $body .= ' | ';
if ($options['show_paid']) $body .= ' | ';
if ($options['show_ip']) $body .= ' | ';
if ($options['show_invoice']) $body .= ' | ';
+ if ($options['show_timesheet']) $body .= ' | ';
$body .= '';
$body .= ' |
';
}
@@ -883,6 +922,11 @@ class ttReportHelper {
$body .= ''.htmlspecialchars($record['note']).' | ';
if ($options['show_cost'])
$body .= ''.$record['cost'].' | ';
+ if ($options['show_approved']) {
+ $body .= '';
+ $body .= $record['approved'] == 1 ? $i18n->get('label.yes') : $i18n->get('label.no');
+ $body .= ' | ';
+ }
if ($options['show_paid']) {
$body .= '';
$body .= $record['paid'] == 1 ? $i18n->get('label.yes') : $i18n->get('label.no');
@@ -895,6 +939,8 @@ class ttReportHelper {
}
if ($options['show_invoice'])
$body .= ' | '.htmlspecialchars($record['invoice']).' | ';
+ if ($options['show_timesheet'])
+ $body .= ''.htmlspecialchars($record['timesheet']).' | ';
$body .= '';
$prev_date = $record['date'];
@@ -923,9 +969,11 @@ class ttReportHelper {
$body .= ($canViewReports || $isClient) ? $subtotals[$cur_grouped_by]['cost'] : $subtotals[$cur_grouped_by]['expenses'];
$body .= '';
}
+ if ($options['show_approved']) $body .= ' | ';
if ($options['show_paid']) $body .= ' | ';
if ($options['show_ip']) $body .= ' | ';
if ($options['show_invoice']) $body .= ' | ';
+ if ($options['show_timesheet']) $body .= ' | ';
$body .= '';
}
@@ -948,9 +996,11 @@ class ttReportHelper {
$body .= ($canViewReports || $isClient) ? $totals['cost'] : $totals['expenses'];
$body .= '';
}
+ if ($options['show_approved']) $body .= ' | ';
if ($options['show_paid']) $body .= ' | ';
if ($options['show_ip']) $body .= ' | ';
if ($options['show_invoice']) $body .= ' | ';
+ if ($options['show_timesheet']) $body .= ' | ';
$body .= '';
$body .= '';
@@ -1053,15 +1103,17 @@ class ttReportHelper {
$options['billable'] = $bean->getAttribute('include_records');
$options['invoice'] = $bean->getAttribute('invoice');
$options['paid_status'] = $bean->getAttribute('paid_status');
+ $options['approved'] = $bean->getAttribute('approved');
+ if ($user->isPluginEnabled('ap') && $user->isClient() && !$user->can('view_client_unapproved'))
+ $options['approved'] = 1; // Restrict clients to approved records only.
$options['timesheet'] = $bean->getAttribute('timesheet');
- if ($user->isPluginEnabled('ts') && $user->isClient() && !$user->can('view_client_unapproved'))
- $options['timesheet'] = TIMESHEET_APPROVED; // Restrict clients to approved timesheet records only.
if (is_array($bean->getAttribute('users'))) $options['users'] = join(',', $bean->getAttribute('users'));
$options['period'] = $bean->getAttribute('period');
$options['period_start'] = $bean->getAttribute('start_date');
$options['period_end'] = $bean->getAttribute('end_date');
$options['show_client'] = $bean->getAttribute('chclient');
$options['show_invoice'] = $bean->getAttribute('chinvoice');
+ $options['show_approved'] = $bean->getAttribute('chapproved');
$options['show_paid'] = $bean->getAttribute('chpaid');
$options['show_ip'] = $bean->getAttribute('chip');
$options['show_project'] = $bean->getAttribute('chproject');