[ Index ]

Source Code Reference for V1.00

title

Body

[close]

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

   1  <?php /* $Id: overall.php 135 2008-04-04 13:49:13Z pedroix $ $URL: https://web2project.svn.sourceforge.net/svnroot/web2project/trunk/modules/reports/reports/overall.php $ */
   2  if (!defined('W2P_BASE_DIR')) {
   3      die('You should not access this file directly.');
   4  }
   5  global $AppUI, $cal_sdf;
   6  $AppUI->loadCalendarJS();
   7  
   8  /**

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

  10   */
  11  $do_report = w2PgetParam($_POST, 'do_report', 0);
  12  $log_pdf = w2PgetParam($_POST, 'log_pdf', 0);
  13  
  14  $log_start_date = w2PgetParam($_POST, 'log_start_date', 0);
  15  $log_end_date = w2PgetParam($_POST, 'log_end_date', 0);
  16  $log_all = w2PgetParam($_POST, 'log_all', 0);
  17  
  18  // create Date objects from the datetime fields

  19  $start_date = intval($log_start_date) ? new CDate($log_start_date) : new CDate();
  20  $end_date = intval($log_end_date) ? new CDate($log_end_date) : new CDate();
  21  
  22  if (!$log_start_date) {
  23      $start_date->subtractSpan(new Date_Span('14,0,0,0'));
  24  }
  25  $end_date->setTime(23, 59, 59);
  26  
  27  $fullaccess = ($AppUI->user_type == 1);
  28  ?>
  29  <script language="javascript">
  30  function setDate( frm_name, f_date ) {
  31      fld_date = eval( 'document.' + frm_name + '.' + f_date );
  32      fld_real_date = eval( 'document.' + frm_name + '.' + 'log_' + f_date );
  33      if (fld_date.value.length>0) {
  34        if ((parseDate(fld_date.value))==null) {
  35              alert('The Date/Time you typed does not match your prefered format, please retype.');
  36              fld_real_date.value = '';
  37              fld_date.style.backgroundColor = 'red';
  38          } else {
  39              fld_real_date.value = formatDate(parseDate(fld_date.value), 'yyyyMMdd');
  40              fld_date.value = formatDate(parseDate(fld_date.value), '<?php echo $cal_sdf ?>');
  41              fld_date.style.backgroundColor = '';
  42            }
  43      } else {
  44            fld_real_date.value = '';
  45      }
  46  }
  47  </script>
  48  
  49  <form name="editFrm" action="index.php?m=reports" method="post">
  50  <input type="hidden" name="project_id" value="<?php echo $project_id; ?>" />
  51  <input type="hidden" name="report_type" value="<?php echo $report_type; ?>" />
  52  <?php
  53  if (function_exists('styleRenderBoxTop')) {
  54      echo styleRenderBoxTop();
  55  }
  56  ?>
  57  <table cellspacing="0" cellpadding="4" border="0" width="100%" class="std">
  58  <tr>
  59      <td align="right" nowrap="nowrap"><?php echo $AppUI->_('For period'); ?>:</td>
  60      <td nowrap="nowrap">
  61          <input type="hidden" name="log_start_date" id="log_start_date" value="<?php echo $start_date ? $start_date->format(FMT_TIMESTAMP_DATE) : ''; ?>" />
  62          <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" />
  63          <a href="javascript: void(0);" onclick="return showCalendar('start_date', '<?php echo $df ?>', 'editFrm', null, true)">
  64              <img src="<?php echo w2PfindImage('calendar.gif'); ?>" width="24" height="12" alt="<?php echo $AppUI->_('Calendar'); ?>" border="0" />
  65          </a>
  66      </td>
  67      <td align="right" nowrap="nowrap"><?php echo $AppUI->_('to'); ?></td>
  68      <td nowrap="nowrap">
  69          <input type="hidden" name="log_end_date" id="log_end_date" value="<?php echo $end_date ? $end_date->format(FMT_TIMESTAMP_DATE) : ''; ?>" />
  70          <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" />
  71          <a href="javascript: void(0);" onclick="return showCalendar('end_date', '<?php echo $df ?>', 'editFrm', null, true)">
  72              <img src="<?php echo w2PfindImage('calendar.gif'); ?>" width="24" height="12" alt="<?php echo $AppUI->_('Calendar'); ?>" border="0" />
  73          </a>
  74      </td>
  75  
  76      <td nowrap="nowrap">
  77          <input type="checkbox" name="log_all" id="log_all" <?php if ($log_all)
  78      echo 'checked="checked"' ?> />
  79          <label for="log_all"><?php echo $AppUI->_('Log All'); ?></label>
  80      </td>
  81      <td nowrap="nowrap">
  82          <input type="checkbox" name="log_pdf" id="log_pdf" <?php if ($log_pdf)
  83      echo 'checked="checked"' ?> />
  84          <label for="log_pdf"><?php echo $AppUI->_('Make PDF'); ?></label>
  85      </td>
  86  
  87      <td align="right" width="50%" nowrap="nowrap">
  88          <input class="button" type="submit" name="do_report" value="<?php echo $AppUI->_('submit'); ?>" />
  89      </td>
  90  </tr>
  91  </table>
  92  </form>
  93  <?php
  94  $allpdfdata = array();
  95  function showcompany($company, $restricted = false) {
  96      global $AppUI, $allpdfdata, $log_start_date, $log_end_date, $log_all;
  97      $q = new DBQuery;
  98      $q->addTable('projects');
  99      $q->addQuery('project_id, project_name');
 100      $q->addWhere('project_company = ' . (int)$company);
 101      $projects = $q->loadHashList();
 102      $q->clear();
 103  
 104      $q->addTable('companies');
 105      $q->addQuery('company_name');
 106      $q->addWhere('company_id = ' . (int)$company);
 107      $company_name = $q->loadResult();
 108      $q->clear();
 109  
 110      $table = '<h2>Company: ' . $company_name . '</h2>
 111          <table cellspacing="1" cellpadding="4" border="0" class="tbl">';
 112      $project_row = '
 113          <tr>
 114                  <th>' . $AppUI->_('Project') . '</th>';
 115  
 116      $pdfth[] = $AppUI->_('Project');
 117      $project_row .= '<th>' . $AppUI->_('Total') . '</th></tr>';
 118      $pdfth[] = $AppUI->_('Total');
 119      $pdfdata[] = $pdfth;
 120  
 121      $hours = 0.0;
 122      $table .= $project_row;
 123  
 124      foreach ($projects as $project => $name) {
 125          $pdfproject = array();
 126          $pdfproject[] = $name;
 127          $project_hours = 0;
 128          $project_row = '<tr><td>' . $name . '</td>';
 129  
 130          $q->addTable('projects');
 131          $q->addTable('tasks');
 132          $q->addTable('task_log');
 133          $q->addQuery('task_log_costcode, SUM(task_log_hours) as hours');
 134          $q->addWhere('project_id = ' . (int)$project);
 135          $q->addWhere('project_active = 1');
 136          if (($template_status = w2PgetConfig('template_projects_status_id')) != '') {
 137              $q->addWhere('project_status <> ' . (int)$template_status);
 138          }
 139  
 140          if ($log_start_date != 0 && !$log_all) {
 141              $q->addWhere('task_log_date >=' . $log_start_date);
 142          }
 143          if ($log_end_date != 0 && !$log_all) {
 144              $q->addWhere('task_log_date <=' . $log_end_date);
 145          }
 146          if ($restricted) {
 147              $q->addWhere('task_log_creator = ' . (int)$AppUI->user_id);
 148          }
 149  
 150          $q->addWhere('project_id = task_project');
 151          $q->addWhere('task_id = task_log_task');
 152          $q->addGroup('project_id');
 153  
 154          $task_logs = $q->loadHashList();
 155          $q->clear();
 156  
 157          foreach ($task_logs as $task_log) {
 158              $project_hours += $task_log;
 159          }
 160          $project_row .= '<td style="text-align:right;">' . sprintf('%.2f', round($project_hours, 2)) . '</td></tr>';
 161          $pdfproject[] = round($project_hours, 2);
 162          $hours += $project_hours;
 163          if ($project_hours > 0) {
 164              $table .= $project_row;
 165              $pdfdata[] = $pdfproject;
 166          }
 167      }
 168      if ($hours > 0) {
 169          $allpdfdata[$company_name] = $pdfdata;
 170          echo $table;
 171          echo '<tr><td>' . $AppUI->_('Total') . '</td><td style="text-align:right;">' . sprintf('%.2f', round($hours, 2)) . '</td></tr></table>';
 172      }
 173  
 174      return $hours;
 175  }
 176  
 177  if ($do_report) {
 178  
 179      if (function_exists('styleRenderBoxBottom')) {
 180          echo styleRenderBoxBottom();
 181      }
 182      echo '<br />';
 183      if (function_exists('styleRenderBoxTop')) {
 184          echo styleRenderBoxTop();
 185      }
 186      echo '<table cellspacing="0" cellpadding="4" border="0" width="100%" class="std">
 187      <tr>
 188          <td>';
 189  
 190      $total = 0;
 191  
 192      $q = new DBQuery;
 193      if ($fullaccess) {
 194          $q->addTable('companies');
 195          $q->addQuery('company_id');
 196      } else {
 197          $q->addTable('companies');
 198          $q->addQuery('company_id');
 199          $q->addWhere('company_owner = ' . (int)$AppUI->user_id);
 200      }
 201  
 202      $companies = $q->loadColumn();
 203      $q->clear();
 204  
 205      if (!empty($companies)) {
 206          foreach ($companies as $company) {
 207              $total += showcompany($company);
 208          }
 209      } else {
 210          $q->addTable('companies');
 211          $q->addQuery('company_id');
 212          foreach ($q->loadColumn() as $company) {
 213              $total += showcompany($company, true);
 214          }
 215      }
 216  
 217      echo '<h2>' . $AppUI->_('Total Hours') . ': ';
 218      printf("%.2f", $total);
 219      echo '</h2>';
 220  
 221      if ($log_pdf) {
 222          // make the PDF file

 223  
 224          $font_dir = W2P_BASE_DIR . '/lib/ezpdf/fonts';
 225          $temp_dir = W2P_BASE_DIR . '/files/temp';
 226  
 227          require ($AppUI->getLibraryClass('ezpdf/class.ezpdf'));
 228  
 229          $pdf = &new Cezpdf();
 230          $pdf->ezSetCmMargins(1, 2, 1.5, 1.5);
 231          $pdf->selectFont($font_dir . '/Helvetica.afm');
 232  
 233          $pdf->ezText(w2PgetConfig('company_name'), 12);
 234          // $pdf->ezText( w2PgetConfig( 'company_name' ).' :: '.$AppUI->getConfig( 'page_title' ), 12 );

 235  
 236          if ($log_all) {
 237              $date = new CDate();
 238              $pdf->ezText("\nAll hours as of " . $date->format($df), 8);
 239          } else {
 240              $sdate = new CDate($log_start_date);
 241              $edate = new CDate($log_end_date);
 242              $pdf->ezText("\nHours from " . $sdate->format($df) . ' to ' . $edate->format($df), 8);
 243          }
 244  
 245          $pdf->selectFont($font_dir . '/Helvetica-Bold.afm');
 246          $pdf->ezText("\n" . $AppUI->_('Overall Report'), 12);
 247  
 248          foreach ($allpdfdata as $company => $data) {
 249              $title = $company;
 250              $options = array('showLines' => 1, 'showHeadings' => 0, 'fontSize' => 8, 'rowGap' => 2, 'colGap' => 5, 'xPos' => 50, 'xOrientation' => 'right', 'width' => '500', 'cols' => array(0 => array('justification' => 'left', 'width' => 250), 1 => array('justification' => 'right', 'width' => 120)));
 251  
 252              $pdf->ezTable($data, null, $title, $options);
 253          }
 254          if ($fp = fopen($temp_dir . '/temp' . $AppUI->user_id . '.pdf', 'wb')) {
 255              fwrite($fp, $pdf->ezOutput());
 256              fclose($fp);
 257              echo '<a href="' . W2P_BASE_URL . '/files/temp/temp' . $AppUI->user_id . '.pdf" target="pdf">';
 258              echo $AppUI->_('View PDF File');
 259              echo '</a>';
 260          } else {
 261              echo 'Could not open file to save PDF.  ';
 262              if (!is_writable($temp_dir)) {
 263                  'The files/temp directory is not writable.  Check your file system permissions.';
 264              }
 265          }
 266      }
 267      echo '</td>
 268  </tr>
 269  </table>';
 270  }
 271  ?>


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