[ Index ]

Source Code Reference for V1.00

title

Body

[close]

/modules/reports/reports/ -> tasklogs_xp1.php (source)

   1  <?php /* $Id: tasklogs_xp1.php 136 2008-04-04 14:24:17Z pedroix $ $URL: https://web2project.svn.sourceforge.net/svnroot/web2project/trunk/modules/reports/reports/tasklogs_xp1.php $ */
   2  if (!defined('W2P_BASE_DIR')) {
   3      die('You should not access this file directly.');
   4  }
   5  
   6  /**

   7   * Generates a report of the task logs for given dates

   8   */
   9  //error_reporting( E_ALL );

  10  global $AppUI, $cal_sdf;
  11  $AppUI->loadCalendarJS();
  12  
  13  $perms = &$AppUI->acl();
  14  if (!$perms->checkModule('task_log', 'view')) {
  15      $AppUI->redirect('m=public&a=access_denied');
  16  }
  17  $do_report = w2PgetParam($_GET, 'do_report', 0);
  18  $log_all = w2PgetParam($_GET, 'log_all', 0);
  19  $log_pdf = w2PgetParam($_GET, 'log_pdf', 0);
  20  $log_ignore = w2PgetParam($_GET, 'log_ignore', 0);
  21  $log_userfilter = w2PgetParam($_GET, 'log_userfilter', '0');
  22  
  23  $log_start_date = w2PgetParam($_GET, 'log_start_date', 0);
  24  $log_end_date = w2PgetParam($_GET, 'log_end_date', 0);
  25  
  26  // create Date objects from the datetime fields

  27  $start_date = intval($log_start_date) ? new CDate($log_start_date) : new CDate();
  28  $end_date = intval($log_end_date) ? new CDate($log_end_date) : new CDate();
  29  
  30  if (!$log_start_date) {
  31      $start_date->subtractSpan(new Date_Span('14,0,0,0'));
  32  }
  33  $end_date->setTime(23, 59, 59);
  34  
  35  // Lets check cost codes

  36  $q = new DBQuery;
  37  $q->addTable('billingcode');
  38  $q->addQuery('billingcode_id, billingcode_name');
  39  
  40  $task_log_costcodes[0] = $AppUI->_('None');
  41  $rows = $q->loadList();
  42  echo db_error();
  43  $nums = 0;
  44  if ($rows) {
  45      $nums = count($rows);
  46  }
  47  foreach ($rows as $row) {
  48      $task_log_costcodes[$row['billingcode_id']] = $row['billingcode_name'];
  49  }
  50  
  51  ?>
  52  <script language="javascript">
  53  function setDate( frm_name, f_date ) {
  54      fld_date = eval( 'document.' + frm_name + '.' + f_date );
  55      fld_real_date = eval( 'document.' + frm_name + '.' + 'log_' + f_date );
  56      if (fld_date.value.length>0) {
  57        if ((parseDate(fld_date.value))==null) {
  58              alert('The Date/Time you typed does not match your prefered format, please retype.');
  59              fld_real_date.value = '';
  60              fld_date.style.backgroundColor = 'red';
  61          } else {
  62              fld_real_date.value = formatDate(parseDate(fld_date.value), 'yyyyMMdd');
  63              fld_date.value = formatDate(parseDate(fld_date.value), '<?php echo $cal_sdf ?>');
  64              fld_date.style.backgroundColor = '';
  65            }
  66      } else {
  67            fld_real_date.value = '';
  68      }
  69  }
  70  </script>
  71  
  72  <form name="editFrm" action="" method="GET">
  73  <input type="hidden" name="m" value="reports" />
  74  <input type="hidden" name="company_id" value="<?php echo $company_id; ?>" />
  75  <input type="hidden" name="project_id" value="<?php echo $project_id; ?>" />
  76  <input type="hidden" name="report_type" value="<?php echo $report_type; ?>" />
  77  <?php
  78  if (function_exists('styleRenderBoxTop')) {
  79      echo styleRenderBoxTop();
  80  }
  81  ?>
  82  <table cellspacing="0" cellpadding="4" border="0" width="100%" class="std">
  83  <tr>
  84      <td align="right" nowrap="nowrap"><?php echo $AppUI->_('For period'); ?>:</td>
  85      <td nowrap="nowrap">
  86          <input type="hidden" name="log_start_date" id="log_start_date" value="<?php echo $start_date ? $start_date->format(FMT_TIMESTAMP_DATE) : ''; ?>" />
  87          <input type="text" name="start_date" id="start_date" onchange="setDate('editFrm', 'start_date');" value="<?php echo $start_date ? $start_date->format($df) : ''; ?>" class="text" />
  88          <a href="javascript: void(0);" onclick="return showCalendar('start_date', '<?php echo $df ?>', 'editFrm', null, true)">
  89              <img src="<?php echo w2PfindImage('calendar.gif'); ?>" width="24" height="12" alt="<?php echo $AppUI->_('Calendar'); ?>" border="0" />
  90          </a>
  91      </td>
  92      <td align="right" nowrap="nowrap"><?php echo $AppUI->_('to'); ?></td>
  93      <td nowrap="nowrap">
  94          <input type="hidden" name="log_end_date" id="log_end_date" value="<?php echo $end_date ? $end_date->format(FMT_TIMESTAMP_DATE) : ''; ?>" />
  95          <input type="text" name="end_date" id="end_date" onchange="setDate('editFrm', 'end_date');" value="<?php echo $end_date ? $end_date->format($df) : ''; ?>" class="text" />
  96          <a href="javascript: void(0);" onclick="return showCalendar('end_date', '<?php echo $df ?>', 'editFrm', null, true)">
  97              <img src="<?php echo w2PfindImage('calendar.gif'); ?>" width="24" height="12" alt="<?php echo $AppUI->_('Calendar'); ?>" border="0" />
  98          </a>
  99      </td>
 100  
 101      <td nowrap="nowrap">
 102          <?php echo $AppUI->_('User'); ?>:
 103          <select name="log_userfilter" class="text" style="width: 200px">
 104  
 105      <?php
 106  if ($log_userfilter == 0)
 107      echo '<option value="0" selected="selected">' . $AppUI->_('All users');
 108  else
 109      echo '<option value="0">All users';
 110  
 111  if (($log_userfilter_users = w2PgetUsersList())) {
 112      foreach ($log_userfilter_users as $row) {
 113          $selected = '';
 114          if ($log_userfilter == $row['user_id']) {
 115              $selected = ' selected="selected"';
 116          }
 117          echo '<option value="' . $row['user_id'] . '"' . $selected . '>' . $row['contact_first_name'] . ' ' . $row['contact_last_name'];
 118      }
 119  }
 120  
 121  ?>
 122  
 123          </select>
 124      </td>
 125  
 126      <td nowrap="nowrap">
 127          <input type="checkbox" name="log_all" <?php if ($log_all)
 128      echo "checked" ?> />
 129          <?php echo $AppUI->_('Log All'); ?>
 130      </td>
 131  
 132      <td nowrap="nowrap">
 133          <input type="checkbox" name="log_pdf" <?php if ($log_pdf)
 134      echo "checked" ?> />
 135          <?php echo $AppUI->_('Make PDF'); ?>
 136      </td>
 137  
 138      <td nowrap="nowrap">
 139          <input type="checkbox" name="log_ignore" />
 140          <?php echo $AppUI->_('Ignore 0 hours'); ?>
 141      </td>
 142  
 143      <td align="right" width="50%" nowrap="nowrap">
 144          <input class="button" type="submit" name="do_report" value="<?php echo $AppUI->_('submit'); ?>" />
 145      </td>
 146  </tr>
 147  </table>
 148  </form>
 149  <?php
 150  if ($do_report) {
 151  
 152      if (function_exists('styleRenderBoxBottom')) {
 153          echo styleRenderBoxBottom();
 154      }
 155      echo '<br />';
 156      if (function_exists('styleRenderBoxTop')) {
 157          echo styleRenderBoxTop();
 158      }
 159      echo '<table cellspacing="0" cellpadding="4" border="0" width="100%" class="std">
 160      <tr>
 161          <td>';
 162  
 163      $q = new DBQuery;
 164      $q->addTable('task_log', 't');
 165      $q->addQuery('t.*, CONCAT_WS(\' \',contact_first_name,contact_last_name) AS creator, billingcode_value, ROUND((billingcode_value * t.task_log_hours), 2) AS amount, c.company_name, project_name, ts.task_name');
 166  
 167      $q->addJoin('tasks', 'ts', 'ts.task_id = t.task_log_task');
 168      $q->addJoin('projects', '', 'projects.project_id = ts.task_project');
 169      $q->addJoin('users', 'u', 'user_id = task_log_creator');
 170      $q->addJoin('contacts', '', 'user_contact = contact_id');
 171      $q->addJoin('companies', 'c', 'c.company_id = projects.project_company');
 172      $q->addJoin('billingcode', '', 'billingcode_id = task_log_costcode');
 173  
 174      $q->addJoin('project_departments', '', 'project_departments.project_id = projects.project_id');
 175      $q->addJoin('departments', '', 'department_id = dept_id');
 176  
 177      $q->addWhere('task_log_task > 0');
 178  
 179      if ($project_id) {
 180          $q->addWhere('projects.project_id = ' . (int)$project_id);
 181      }
 182      if ($company_id) {
 183          $q->addWhere('c.company_id = ' . (int)$company_id);
 184      }
 185  
 186      if (!$log_all) {
 187          $q->addWhere('task_log_date >= \'' . $start_date->format(FMT_DATETIME_MYSQL) . '\'');
 188          $q->addWhere('task_log_date <= \'' . $end_date->format(FMT_DATETIME_MYSQL) . '\'');
 189      }
 190      if ($log_ignore) {
 191          $q->addWhere('task_log_hours > 0');
 192      }
 193      if ($log_userfilter) {
 194          $q->addWhere('task_log_creator = ' . (int)$log_userfilter);
 195      }
 196  
 197      $proj = &new CProject;
 198      $allowedProjects = $proj->getAllowedSQL($AppUI->user_id, 'task_project');
 199      if (count($allowedProjects)) {
 200          $q->addWhere(implode(' AND ', $allowedProjects));
 201      }
 202  
 203      $q->addOrder('creator');
 204      $q->addOrder('company_name');
 205      $q->addOrder('project_name');
 206      $q->addOrder('task_log_date');
 207  
 208      $logs = $q->loadList();
 209      echo db_error();
 210  ?>
 211      <table cellspacing="1" cellpadding="4" border="0" class="tbl">
 212      <tr>
 213          <th><?php echo $AppUI->_('Creator'); ?></th>
 214          <th><?php echo $AppUI->_('Company'); ?></th>
 215          <th><?php echo $AppUI->_('Project'); ?></th>
 216          <th><?php echo $AppUI->_('Task'); ?></th>
 217          <th><?php echo $AppUI->_('Date'); ?></th>
 218          <th><?php echo $AppUI->_('Description'); ?></th>
 219          <th><?php echo $AppUI->_('Cost Code'); ?></th>
 220          <th><?php echo $AppUI->_('Hours'); ?></th>
 221          <th><?php echo $AppUI->_('Cost'); ?></th>
 222          <th><?php echo $AppUI->_('Amount'); ?></th>
 223      </tr>
 224  <?php
 225      $hours = 0.00;
 226      $tamount = 0.00;
 227      $pdfdata = array();
 228  
 229      foreach ($logs as $log) {
 230          $date = new CDate($log['task_log_date']);
 231          $hours += $log['task_log_hours'];
 232          $tamount += $log['amount'];
 233  
 234          $pdfdata[] = array($log['creator'], $log['company_name'], $log['project_name'], $log['task_name'], $date->format($df), $log['task_log_description'], $task_log_costcodes[$log['task_log_costcode']], sprintf("%.2f", $log['task_log_hours']), sprintf("%.2f", $log['billingcode_value']), sprintf("%.2f", $log['amount']), );
 235  ?>
 236      <tr>
 237          <td><?php echo $log['creator']; ?></td>
 238          <td><?php echo $log['company_name']; ?></td>
 239          <td><?php echo $log['project_name']; ?></td>
 240          <td><?php echo $log['task_name']; ?></td>
 241          <td><?php echo $date->format($df); ?></td>
 242          <td><?php
 243          // dylan_cuthbert: auto-transation system in-progress, leave these lines for time-being

 244          $transbrk = "\n[translation]\n";
 245          $descrip = str_replace("\n", '<br />', $log['task_log_description']);
 246          $tranpos = strpos($descrip, str_replace("\n", '<br />', $transbrk));
 247          if ($tranpos === false)
 248              echo $descrip;
 249          else {
 250              $descrip = substr($descrip, 0, $tranpos);
 251              $tranpos = strpos($log['task_log_description'], $transbrk);
 252              $transla = substr($log['task_log_description'], $tranpos + strlen($transbrk));
 253              $transla = trim(str_replace("'", '"', $transla));
 254              echo $descrip . '<div style="font-weight: bold; text-align: right"><a title="' . $transla . '" class="hilite">[' . $AppUI->_('translation') . ']</a></div>';
 255          }
 256          // dylan_cuthbert; auto-translation end

 257  
 258  ?></td>
 259          <td><?php echo $task_log_costcodes[$log['task_log_costcode']]; ?></td>
 260          <td align="right"><?php printf('%.2f', $log['task_log_hours']); ?></td>
 261          <td align="right"><?php printf('%.2f', $log['billingcode_value']); ?></td>
 262          <td align="right"><?php printf('%.2f', $log['amount']); ?></td>
 263      </tr>
 264  <?php
 265      }
 266      $pdfdata[] = array('', '', '', '', '', '', $AppUI->_('Totals') . ':', sprintf('%.2f', $hours), '', sprintf('%.2f', $tamount), );
 267  ?>
 268      <tr>
 269          <td align="right" colspan="7"><?php echo $AppUI->_('Report Totals'); ?>:</td>
 270          <td align="right"><?php printf('%.2f', $hours); ?></td>
 271          <td>&nbsp;</td>
 272          <td align="right"><?php printf('%.2f', $tamount); ?></td>        
 273      </tr>
 274      </table>
 275  <?php
 276      if ($log_pdf) {
 277          // make the PDF file

 278          if ($project_id) {
 279              $q = new DBQuery;
 280              $q->addTable('projects');
 281              $q->addQuery('project_name');
 282              $q->addWhere('project_id=' . (int)$project_id);
 283              $pname = 'Project: ' . $q->loadResult();
 284          } else {
 285              $pname = 'All Companies and All Projects';
 286          }
 287          echo db_error();
 288  
 289          if ($company_id) {
 290              $q = new DBQuery;
 291              $q->addTable('companies');
 292              $q->addQuery('company_name');
 293              $q->addWhere('company_id=' . (int)$company_id);
 294              $cname = 'Company: ' . $q->loadResult();
 295          } else {
 296              $cname = 'All Companies and All Projects';
 297          }
 298          echo db_error();
 299  
 300          if ($log_userfilter) {
 301              $q = new DBQuery;
 302              $q->addTable('contacts');
 303              $q->addQuery('CONCAT(contact_first_name, \' \', contact_last_name)');
 304              $q->addJoin('users', '', 'user_contact = contact_id', 'inner');
 305              $q->addWhere('user_id =' . (int)$log_userfilter);
 306              $uname = 'User: ' . $q->loadResult();
 307          } else {
 308              $uname = 'All Users';
 309          }
 310  
 311          $font_dir = w2PgetConfig('root_dir') . '/lib/ezpdf/fonts';
 312          $temp_dir = w2PgetConfig('root_dir') . '/files/temp';
 313          $base_url = w2PgetConfig('base_url');
 314          require ($AppUI->getLibraryClass('ezpdf/class.ezpdf'));
 315  
 316          $pdf = &new Cezpdf();
 317          $pdf->ezSetCmMargins(1, 2, 1.5, 1.5);
 318          $pdf->selectFont($font_dir . '/Helvetica.afm');
 319  
 320          $pdf->ezText(w2PgetConfig('company_name'), 12);
 321          // $pdf->ezText( w2PgetConfig( 'company_name' ).' :: '.w2PgetConfig( 'page_title' ), 12 );

 322  
 323          $date = new CDate();
 324          $pdf->ezText("\n" . $date->format($df), 8);
 325  
 326          $pdf->selectFont($font_dir . '/Helvetica-Bold.afm');
 327          $pdf->ezText("\n" . $AppUI->_('Task Log Report'), 12);
 328  
 329          if ($company_id) {
 330              $pdf->ezText($cname, 10);
 331          } else {
 332              $pdf->ezText($pname, 10);
 333          }
 334  
 335          $pdf->ezText($uname, 10);
 336  
 337          if ($log_all) {
 338              $pdf->ezText('All Task Log entries', 9);
 339          } else {
 340              $pdf->ezText('Task Log entries from ' . $start_date->format($df) . ' to ' . $end_date->format($df), 9);
 341          }
 342          $pdf->ezText("\n\n");
 343  
 344          $title = 'Task Logs';
 345  
 346          $pdfheaders = array($AppUI->_('Creator', UI_OUTPUT_JS), $AppUI->_('Company', UI_OUTPUT_JS), $AppUI->_('Project', UI_OUTPUT_JS), $AppUI->_('Task', UI_OUTPUT_JS), $AppUI->_('Date', UI_OUTPUT_JS), $AppUI->_('Description', UI_OUTPUT_JS), $AppUI->_('CCode', UI_OUTPUT_JS), $AppUI->_('Hours', UI_OUTPUT_JS), $AppUI->_('Cost', UI_OUTPUT_JS), $AppUI->_('Amount', UI_OUTPUT_JS));
 347  
 348          $options = array('showLines' => 1, 'fontSize' => 7, 'rowGap' => 1, 'colGap' => 1, 'xPos' => 50, 'xOrientation' => 'right', 'width' => '500', 'cols' => array(0 => array('justification' => 'left', 'width' => 50), 1 => array('justification' => 'left', 'width' => 60), 2 => array('justification' => 'left', 'width' => 60), 3 => array('justification' => 'left', 'width' => 60), 4 => array('justification' => 'center', 'width' => 40), 5 => array('justification' => 'left', 'width' => 110), 6 => array('justification' => 'left', 'width' => 30), 7 => array('justification' => 'right', 'width' => 30), 8 => array('justification' => 'right', 'width' => 30), 9 => array('justification' => 'right', 'width' => 40), ));
 349  
 350          $pdf->ezTable($pdfdata, $pdfheaders, $title, $options);
 351  
 352          if ($fp = fopen($temp_dir . '/temp' . $AppUI->user_id . '.pdf', 'wb')) {
 353              fwrite($fp, $pdf->ezOutput());
 354              fclose($fp);
 355              echo "<a href=\"$base_url/files/temp/temp$AppUI->user_id.pdf\" target=\"pdf\">";
 356              echo $AppUI->_('View PDF File');
 357              echo '</a>';
 358          } else {
 359              echo 'Could not open file to save PDF.  ';
 360              if (!is_writable($temp_dir)) {
 361                  'The files/temp directory is not writable.  Check your file system permissions.';
 362              }
 363          }
 364      }
 365      echo '</td>
 366  </tr>
 367  </table>';
 368  }
 369  ?>


Generated: Thu Jan 8 03:00:03 2009 Cross-referenced by PHPXref 0.7