![]() |
|---|
| [ Index ] |
Source Code Reference for V1.00 |
[Summary view] [Print] [Text view]
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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Jan 8 03:00:03 2009 | Cross-referenced by PHPXref 0.7 |