]> wagnertech.de Git - timetracker.git/commitdiff
Some more work in progress on timesheet reporting.
authorNik Okuntseff <support@anuko.com>
Sat, 23 Feb 2019 18:45:44 +0000 (18:45 +0000)
committerNik Okuntseff <support@anuko.com>
Sat, 23 Feb 2019 18:45:44 +0000 (18:45 +0000)
33 files changed:
WEB-INF/lib/ttReportHelper.class.php
WEB-INF/resources/ca.lang.php
WEB-INF/resources/cs.lang.php
WEB-INF/resources/da.lang.php
WEB-INF/resources/de.lang.php
WEB-INF/resources/en.lang.php
WEB-INF/resources/es.lang.php
WEB-INF/resources/et.lang.php
WEB-INF/resources/fa.lang.php
WEB-INF/resources/fi.lang.php
WEB-INF/resources/fr.lang.php
WEB-INF/resources/gr.lang.php
WEB-INF/resources/he.lang.php
WEB-INF/resources/hu.lang.php
WEB-INF/resources/it.lang.php
WEB-INF/resources/ja.lang.php
WEB-INF/resources/ko.lang.php
WEB-INF/resources/nl.lang.php
WEB-INF/resources/no.lang.php
WEB-INF/resources/pl.lang.php
WEB-INF/resources/pt-br.lang.php
WEB-INF/resources/pt.lang.php
WEB-INF/resources/ro.lang.php
WEB-INF/resources/ru.lang.php
WEB-INF/resources/sk.lang.php
WEB-INF/resources/sl.lang.php
WEB-INF/resources/sr.lang.php
WEB-INF/resources/sv.lang.php
WEB-INF/resources/tr.lang.php
WEB-INF/resources/zh-cn.lang.php
WEB-INF/resources/zh-tw.lang.php
WEB-INF/templates/footer.tpl
reports.php

index c96f0f4dc52181a3e6db47aeb30a6a6cac68013a..a14313b35c9bf9a03eafe97544488b3faa7bd47e 100644 (file)
@@ -33,6 +33,14 @@ import('ttTimeHelper');
 
 require_once(dirname(__FILE__).'/../../plugins/CustomFields.class.php');
 
 
 require_once(dirname(__FILE__).'/../../plugins/CustomFields.class.php');
 
+// Definitions of types for timesheet dropdown.
+define('TIMESHEET_ALL', 0); // Include all records.
+define('TIMESHEET_NOT_ASSIGNED', 1); // Include records not assigned to timesheets.
+define('TIMESHEET_ASSIGNED', 2); // Include records assigned to timesheets.
+define('TIMESHEET_PENDING', 3); // Include records in submitted timesheets that are pending manager approval.
+define('TIMESHEET_APPROVED', 4); // Include records in approved timesheets.
+define('TIMESHEET_NOT_APPROVED', 5); // Include records in disapproved timesheets.
+
 // Class ttReportHelper is used for help with reports.
 class ttReportHelper {
 
 // Class ttReportHelper is used for help with reports.
 class ttReportHelper {
 
@@ -62,8 +70,8 @@ class ttReportHelper {
     if ($options['billable']=='2') $dropdown_parts .= ' and l.billable = 0';
     if ($options['invoice']=='1') $dropdown_parts .= ' and l.invoice_id is not null';
     if ($options['invoice']=='2') $dropdown_parts .= ' and l.invoice_id is null';
     if ($options['billable']=='2') $dropdown_parts .= ' and l.billable = 0';
     if ($options['invoice']=='1') $dropdown_parts .= ' and l.invoice_id is not null';
     if ($options['invoice']=='2') $dropdown_parts .= ' and l.invoice_id is null';
-    if ($options['timesheet']=='1') $dropdown_parts .= ' and l.timesheet_id is not null';
-    if ($options['timesheet']=='2') $dropdown_parts .= ' and l.timesheet_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['paid_status']=='1') $dropdown_parts .= ' and l.paid = 1';
     if ($options['paid_status']=='2') $dropdown_parts .= ' and l.paid = 0';
 
     if ($options['paid_status']=='1') $dropdown_parts .= ' and l.paid = 1';
     if ($options['paid_status']=='2') $dropdown_parts .= ' and l.paid = 0';
 
@@ -112,8 +120,8 @@ class ttReportHelper {
     if ($options['project_id']) $dropdown_parts .= ' and ei.project_id = '.$options['project_id'];
     if ($options['invoice']=='1') $dropdown_parts .= ' and ei.invoice_id is not null';
     if ($options['invoice']=='2') $dropdown_parts .= ' and ei.invoice_id is null';
     if ($options['project_id']) $dropdown_parts .= ' and ei.project_id = '.$options['project_id'];
     if ($options['invoice']=='1') $dropdown_parts .= ' and ei.invoice_id is not null';
     if ($options['invoice']=='2') $dropdown_parts .= ' and ei.invoice_id is null';
-    if ($options['timesheet']=='1') $dropdown_parts .= ' and ei.timesheet_id is not null';
-    if ($options['timesheet']=='2') $dropdown_parts .= ' and ei.timesheet_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['paid_status']=='1') $dropdown_parts .= ' and ei.paid = 1';
     if ($options['paid_status']=='2') $dropdown_parts .= ' and ei.paid = 0';
 
     if ($options['paid_status']=='1') $dropdown_parts .= ' and ei.paid = 1';
     if ($options['paid_status']=='2') $dropdown_parts .= ' and ei.paid = 0';
 
@@ -264,13 +272,25 @@ class ttReportHelper {
     }
     if ($includeCost && MODE_TIME != $trackingMode)
       $left_joins .= " left join tt_user_project_binds upb on (l.user_id = upb.user_id and l.project_id = upb.project_id)";
     }
     if ($includeCost && MODE_TIME != $trackingMode)
       $left_joins .= " left join tt_user_project_binds upb on (l.user_id = upb.user_id and l.project_id = upb.project_id)";
-    if ($options['show_timesheet'])
-      $left_joins .= " left join tt_timesheets ts on (l.timesheet_id = ts.id)";
+
+    // Prepare sql query part for inner joins.
+    $inner_joins = null;
+    if ($user->isPluginEnabled('ts')) {
+      $timesheet_option = $options['timesheet'];
+      if ($timesheet_option == TIMESHEET_PENDING)
+        $inner_joins .= " inner join tt_timesheets ts on (l.timesheet_id = ts.id and ts.submit_status = 1 and ts.approval_status is null)";
+      else if ($timesheet_option == TIMESHEET_APPROVED)
+        $inner_joins .= " inner join tt_timesheets ts on (l.timesheet_id = ts.id and ts.approval_status = 1)";
+      else if ($timesheet_option == TIMESHEET_NOT_APPROVED)
+        $inner_joins .= " inner join tt_timesheets ts on (l.timesheet_id = ts.id and ts.approval_status = 0)";
+      else if ($options['show_timesheet'])
+        $inner_joins .= " left join tt_timesheets ts on (l.timesheet_id = ts.id)"; // Left join for timesheet nme.
+    }
 
     $where = ttReportHelper::getWhere($options);
 
     // Construct sql query for tt_log items.
 
     $where = ttReportHelper::getWhere($options);
 
     // Construct sql query for tt_log items.
-    $sql = "select ".join(', ', $fields)." from tt_log l $left_joins $where";
+    $sql = "select ".join(', ', $fields)." from tt_log l $left_joins $inner_joins $where";
     // If we don't have expense items (such as when the Expenses plugin is disabled), the above is all sql we need,
     // with an exception of sorting part, that is added in the end.
 
     // If we don't have expense items (such as when the Expenses plugin is disabled), the above is all sql we need,
     // with an exception of sorting part, that is added in the end.
 
@@ -335,13 +355,25 @@ class ttReportHelper {
         $left_joins .= " left join tt_projects p on (p.id = ei.project_id)";
       if (($canViewReports || $isClient) && $options['show_invoice'])
         $left_joins .= " left join tt_invoices i on (i.id = ei.invoice_id and i.status = 1)";
         $left_joins .= " left join tt_projects p on (p.id = ei.project_id)";
       if (($canViewReports || $isClient) && $options['show_invoice'])
         $left_joins .= " left join tt_invoices i on (i.id = ei.invoice_id and i.status = 1)";
-      if ($options['show_timesheet'])
-        $left_joins .= " left join tt_timesheets ts on (ei.timesheet_id = ts.id)";
+
+      // Prepare sql query part for inner joins.
+      $inner_joins = null;
+      if ($user->isPluginEnabled('ts')) {
+        $timesheet_option = $options['timesheet'];
+        if ($timesheet_option == TIMESHEET_PENDING)
+          $inner_joins .= " inner join tt_timesheets ts on (ei.timesheet_id = ts.id and ts.submit_status = 1 and ts.approval_status is null)";
+        else if ($timesheet_option == TIMESHEET_APPROVED)
+          $inner_joins .= " inner join tt_timesheets ts on (ei.timesheet_id = ts.id and ts.approval_status = 1)";
+        else if ($timesheet_option == TIMESHEET_NOT_APPROVED)
+          $inner_joins .= " inner join tt_timesheets ts on (ei.timesheet_id = ts.id and ts.approval_status = 0)";
+        else if ($options['show_timesheet'])
+          $inner_joins .= " left join tt_timesheets ts on (ei.timesheet_id = ts.id)"; // Left join for timesheet name.
+      }
 
       $where = ttReportHelper::getExpenseWhere($options);
 
       // Construct sql query for expense items.
 
       $where = ttReportHelper::getExpenseWhere($options);
 
       // Construct sql query for expense items.
-      $sql_for_expense_items = "select ".join(', ', $fields)." from tt_expense_items ei $left_joins $where";
+      $sql_for_expense_items = "select ".join(', ', $fields)." from tt_expense_items ei $left_joins $inner_joins $where";
 
       // Construct a union.
       $sql = "($sql) union all ($sql_for_expense_items)";
 
       // Construct a union.
       $sql = "($sql) union all ($sql_for_expense_items)";
@@ -519,15 +551,37 @@ class ttReportHelper {
         $left_joins = "left join tt_user_project_binds upb on (l.user_id = upb.user_id and l.project_id = upb.project_id)";
       }
     }
         $left_joins = "left join tt_user_project_binds upb on (l.user_id = upb.user_id and l.project_id = upb.project_id)";
       }
     }
+    // Prepare sql query part for inner joins.
+    $inner_joins = null;
+    if ($user->isPluginEnabled('ts') && $options['timesheet']) {
+      $timesheet_option = $options['timesheet'];
+      if ($timesheet_option == TIMESHEET_PENDING)
+        $inner_joins .= " inner join tt_timesheets ts on (l.timesheet_id = ts.id and ts.submit_status = 1 and ts.approval_status is null)";
+      else if ($timesheet_option == TIMESHEET_APPROVED)
+        $inner_joins .= " inner join tt_timesheets ts on (l.timesheet_id = ts.id and ts.approval_status = 1)";
+      else if ($timesheet_option == TIMESHEET_NOT_APPROVED)
+        $inner_joins .= " inner join tt_timesheets ts on (l.timesheet_id = ts.id and ts.approval_status = 0)";
+    }
     // Prepare a query for time items.
     // Prepare a query for time items.
-    $sql = "select $time_part $units_part $cost_part from tt_log l $left_joins $where";
+    $sql = "select $time_part $units_part $cost_part from tt_log l $left_joins $inner_joins $where";
 
     // If we have expenses, query becomes a bit more complex.
     if ($options['show_cost'] && $user->isPluginEnabled('ex')) {
 
     // If we have expenses, query becomes a bit more complex.
     if ($options['show_cost'] && $user->isPluginEnabled('ex')) {
+      // Prepare sql query part for inner joins.
+      $inner_joins = null;
+      if ($user->isPluginEnabled('ts') && $options['timesheet']) {
+        $timesheet_option = $options['timesheet'];
+        if ($timesheet_option == TIMESHEET_PENDING)
+          $inner_joins .= " inner join tt_timesheets ts on (ei.timesheet_id = ts.id and ts.submit_status = 1 and ts.approval_status is null)";
+        else if ($timesheet_option == TIMESHEET_APPROVED)
+          $inner_joins .= " inner join tt_timesheets ts on (ei.timesheet_id = ts.id and ts.approval_status = 1)";
+        else if ($timesheet_option == TIMESHEET_NOT_APPROVED)
+          $inner_joins .= " inner join tt_timesheets ts on (ei.timesheet_id = ts.id and ts.approval_status = 0)";
+      }
       $where = ttReportHelper::getExpenseWhere($options);
       $sql_for_expenses = "select null as time";
       if ($options['show_work_units']) $sql_for_expenses .= ", null as units";
       $where = ttReportHelper::getExpenseWhere($options);
       $sql_for_expenses = "select null as time";
       if ($options['show_work_units']) $sql_for_expenses .= ", null as units";
-      $sql_for_expenses .= ", sum(cost) as cost, sum(cost) as expenses from tt_expense_items ei $where";
+      $sql_for_expenses .= ", sum(cost) as cost, sum(cost) as expenses from tt_expense_items ei $inner_joins $where";
 
       // Create a combined query.
       $combined = "select sum(time) as time";
 
       // Create a combined query.
       $combined = "select sum(time) as time";
index e303805ead8a555e6ea7e39f488d1a1b487f02a0..8b3d5d6f71a3f616ebfa02454a7377dd61ec62d2 100644 (file)
@@ -441,6 +441,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Seleccionar període de temps',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Seleccionar període de temps',
index e85a739716c4367800af70f8b0c59f33caec5dc5..17ea3e2610e8153f846acd766bee00844c7a9de7 100644 (file)
@@ -451,6 +451,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Výberte období',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Výberte období',
index 3946cd5cfac9e1479bbc37b95d5fafd143d512d7..2a786b143bfa99a9d4da3e28d21d93571f4afa20 100644 (file)
@@ -417,6 +417,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Vælg en periode',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Vælg en periode',
index 3a10a70700ab07b30eb1e50a26fe405283860ab3..5e72116ba8a9b471b8cf777fa5f888ddadf713a3 100644 (file)
@@ -396,6 +396,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Zeitraum auswählen',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Zeitraum auswählen',
index 4e6a8efa501280206c19121ab37451f9316aec35..1fdd6111aedf5747ad73a1b82d5212571c3a2b6c 100644 (file)
@@ -234,7 +234,7 @@ $i18n_key_words = array(
 'label.quota' => 'Quota',
 'label.timesheet' => 'Timesheet',
 'label.submitted' => 'Submitted',
 'label.quota' => 'Quota',
 'label.timesheet' => 'Timesheet',
 'label.submitted' => 'Submitted',
-'label.form' => 'Approved',
+'label.approved' => 'Approved',
 
 // Form titles.
 'title.error' => 'Error',
 
 // Form titles.
 'title.error' => 'Error',
@@ -392,6 +392,7 @@ $i18n_key_words = array(
 'form.reports.include_not_invoiced' => 'not invoiced',
 'form.reports.include_assigned' => 'assigned',
 'form.reports.include_not_assigned' => 'not assigned',
 'form.reports.include_not_invoiced' => 'not invoiced',
 'form.reports.include_assigned' => 'assigned',
 'form.reports.include_not_assigned' => 'not assigned',
+'form.reports.include_pending' => 'pending',
 'form.reports.include_approved' => 'approved',
 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Select time period',
 'form.reports.include_approved' => 'approved',
 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Select time period',
index 87aff87cbed8e10c98fa1d8c96ea6112137311a7..559e3286cb92257361d59aa1306654dfbd574498 100644 (file)
@@ -454,6 +454,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Seleccionar período de tiempo',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Seleccionar período de tiempo',
index cf2151af7b56f6e5e70d0de954737b85ab9f8846..71a1288c55aa1b48158a98aca56b0fb1fc5da2dd 100644 (file)
@@ -421,6 +421,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'arveldamata', // TODO: fix as per the above comment, if needed.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'arveldamata', // TODO: fix as per the above comment, if needed.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 
index 1f4fd0ed44f5d78def370d29d046c4763822d0b6..b5bed52c64b9bebdc848a62f15dd4eabd3601d22 100644 (file)
@@ -437,6 +437,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'انتخاب بازه زمانی',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'انتخاب بازه زمانی',
index 442ce15701fb32da4cf61d3eb05418342494d8e0..c10ca5ea1ee68dd27e0b3a79bfa9a105d7ae2488 100644 (file)
@@ -422,6 +422,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Valitse ajanjakso',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Valitse ajanjakso',
index 37d0a0f45c5ffcc88e2f2276ef2dabde2fdd453d..b937b771b9a0b33a1a63dd12b94af33ee0054339 100644 (file)
@@ -414,6 +414,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Sélectionner la période de temps',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Sélectionner la période de temps',
index ecaea1c154cd26016e8709e0482de8a77784f93f..c5e8d5e8619982ad1e2fd0068e0fc30aa7772d7b 100644 (file)
@@ -405,6 +405,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Επιλογή χρονικής περιόδου',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Επιλογή χρονικής περιόδου',
index 4c24586df9a692e161de070f7ddd2cbe3dbd172e..b2a7dfd1c53d12775734bc3837c7230a13cde840 100644 (file)
@@ -443,6 +443,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'בחר תקופת זמן',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'בחר תקופת זמן',
index 50ba1b3e2cd806e843261b904620f7bf430bdbc7..f6bceaeeb38401837fb6123a830251cebcb3cec3 100644 (file)
@@ -443,6 +443,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Jelölj meg egy időszakot',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Jelölj meg egy időszakot',
index 3a47774223fa5d607a27324ac89258f533ff9912..fc8a0815786a5b874f4745defbfb0366f0f9e145 100644 (file)
@@ -418,6 +418,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Seleziona il periodo di tempo',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Seleziona il periodo di tempo',
index 55b8ee09d404a956a0b24aaef2cbd76dcb62e063..7f83a7677458c85e0e16ad55657e2e0c561c1483 100644 (file)
@@ -449,6 +449,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => '時間期間の選択',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => '時間期間の選択',
index d50f8170e946b2c9d02d8520ad4e69f66da217ae..aa40a0945f3cb3c8230162ea77aeafe409b18bda 100644 (file)
@@ -447,6 +447,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => '시간 기간을 선택',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => '시간 기간을 선택',
index 8f4954052837c77aee3f12775fe4b0c8e084577f..ee170ceed75e2071d2d6e5d63a83fa93496d1506 100644 (file)
@@ -392,6 +392,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Kies periode',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Kies periode',
index 95bf5e2bf4d36b4625a1001701c047c01d9b2e9b..e43dad9b4ead760de1765c2f94f050bb68a26c47 100644 (file)
@@ -447,6 +447,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Velg tidsperiode',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Velg tidsperiode',
index 2b63f06bd308bdbc4d2e9a0e1f2a0876d19df423..9b243eefa7f0f7abc7541ceeffe1399013dd60f5 100644 (file)
@@ -425,6 +425,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Wybierz okres',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Wybierz okres',
index 964c55d9bc8b6b0ec7f958a8315d0a54deb36e8c..71fcef6f9f113c24d91b894743895b220e32d6c1 100644 (file)
@@ -420,6 +420,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Selecione o período de tempo',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Selecione o período de tempo',
index c51af296a56f1e2bc494bc78e687c052e3a8be45..0723acffa28d09b6e6d9e7cb489cd27e7eea0141 100644 (file)
@@ -427,6 +427,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Selecione o período de tempo',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Selecione o período de tempo',
index 2e1d2f273c72ab7b4775e69ad944609790dfa0b2..b94bcd988cc53ccf891102d50f1590b7cb1b0725 100644 (file)
@@ -450,6 +450,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Alege perioada',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Alege perioada',
index 77c90653fb2ec84880f330cac1a369c1e2beddd3..19bedf9b418c8841711fd5a8541ab069f4d2f83c 100644 (file)
@@ -384,6 +384,7 @@ $i18n_key_words = array(
 'form.reports.include_not_invoiced' => 'не внесённые в счёт',
 'form.reports.include_assigned' => 'присвоена',
 'form.reports.include_not_assigned' => 'не присвоена',
 'form.reports.include_not_invoiced' => 'не внесённые в счёт',
 'form.reports.include_assigned' => 'присвоена',
 'form.reports.include_not_assigned' => 'не присвоена',
+'form.reports.include_pending' => 'в ожидании',
 'form.reports.include_approved' => 'одобрена',
 'form.reports.include_not_approved' => 'не одобрена',
 'form.reports.select_period' => 'Выберите интервал времени',
 'form.reports.include_approved' => 'одобрена',
 'form.reports.include_not_approved' => 'не одобрена',
 'form.reports.select_period' => 'Выберите интервал времени',
index bd62020020c72acf480248e534ac9c7994fb96ca..d3525c0d65b6ac43094286960e5e56b42437e0fa 100644 (file)
@@ -433,6 +433,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Vyberte časový rozsah',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Vyberte časový rozsah',
index 66992c49b30b8b3057127d285f912c7a14a72683..fedc796ab6a5c9b9ac0097e1a06829daf81ffaaa 100644 (file)
@@ -424,6 +424,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 // 'form.reports.select_period' => 'Select time period',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 // 'form.reports.select_period' => 'Select time period',
index 73966ca861a615ca0a30a0325cab7899c5c6dace..229100788daad4d32841b8fdfa2a7cbf6ecd7d8a 100644 (file)
@@ -423,6 +423,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Odaberi vremenski raspon',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Odaberi vremenski raspon',
index 410a64f5c2f33b11041903042e26205be436d2ee..480650e4af35b549fa6fe2c8bc19f1301b95a15f 100644 (file)
@@ -421,6 +421,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // TODO: translate the following.
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Välj intervall',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Välj intervall',
index e5387283e66a1458b8a5cb8c073d300faef4e4ab..87b44ca09a7263156b092f8926f0e882b7b202f2 100644 (file)
@@ -460,6 +460,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Zaman aralığını seç',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => 'Zaman aralığını seç',
index 4406831d8a8abc8a3cd92f5eefed86260ca47cf0..9d03e7b0fcddfca909373fa07e57c33f491468b7 100644 (file)
@@ -432,6 +432,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => '选择时间段',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => '选择时间段',
index 47d2cfbc6212ca1eb4e8d4e527a05e87ee26fdf2..e488dbd685ecacfce1b178cde4286761ae04af86 100644 (file)
@@ -440,6 +440,7 @@ $i18n_key_words = array(
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
 // 'form.reports.include_not_invoiced' => 'not invoiced',
 // 'form.reports.include_assigned' => 'assigned',
 // 'form.reports.include_not_assigned' => 'not assigned',
+// 'form.reports.include_pending' => 'pending',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => '選擇時間段',
 // 'form.reports.include_approved' => 'approved',
 // 'form.reports.include_not_approved' => 'not approved',
 'form.reports.select_period' => '選擇時間段',
index 7bd156421439468ecf2d09626a948abf1000855e..b8f56833c07a13db50e42669f74275ee842e6aef 100644 (file)
@@ -12,7 +12,7 @@
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
-          <td align="center">&nbsp;Anuko Time Tracker 1.18.37.4760 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.18.37.4761 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
             <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
             <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
             <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>
             <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
             <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
             <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>
index 264e5645c9e7477a8eed39a5b470d28507781ce7..f652027b1008acfd2fe8537b19f7dbd69ddea598 100644 (file)
@@ -186,7 +186,11 @@ if ($showTimesheet) {
   $form->addInput(array('type'=>'combobox',
    'name'=>'timesheet',
    'style'=>'width: 250px;',
   $form->addInput(array('type'=>'combobox',
    'name'=>'timesheet',
    'style'=>'width: 250px;',
-   'data'=>array('1'=>$i18n->get('form.reports.include_assigned'),'2'=>$i18n->get('form.reports.include_not_assigned')),
+   'data'=>array(TIMESHEET_NOT_ASSIGNED=>$i18n->get('form.reports.include_not_assigned'),
+     TIMESHEET_ASSIGNED=>$i18n->get('form.reports.include_assigned'),
+     TIMESHEET_PENDING=>$i18n->get('form.reports.include_pending'),
+     TIMESHEET_APPROVED=>$i18n->get('form.reports.include_approved'),
+     TIMESHEET_NOT_APPROVED=>$i18n->get('form.reports.include_not_approved')),
    'empty'=>array(''=>$i18n->get('dropdown.all'))
   ));
 }
    'empty'=>array(''=>$i18n->get('dropdown.all'))
   ));
 }