![]() |
|---|
| [ Index ] |
Source Code Reference for V1.00 |
[Summary view] [Print] [Text view]
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> </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 ?>
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 |