📄 allocateduserhours.php
字号:
<?phpif (!defined('DP_BASE_DIR')){ die('You should not access this file directly.');}$coarseness = dPgetParam( $_POST, "coarseness", 1 );$do_report = dPgetParam( $_POST, "do_report", 0 );$hideNonWd = dPgetParam($_POST, "hideNonWd", 0);$log_start_date = dPgetParam( $_POST, "log_start_date", 0 );$log_end_date = dPgetParam( $_POST, "log_end_date", 0 );$use_assigned_percentage = dPgetParam($_POST, "use_assigned_percentage", 0);$user_id = dPgetParam($_POST, "user_id", $AppUI->user_id);// create Date objects from the datetime fields$start_date = intval( $log_start_date ) ? new CDate( $log_start_date ) : new CDate(date("Y-m-01"));$end_date = intval( $log_end_date ) ? new CDate( $log_end_date ) : new CDate();$end_date->setTime( 23, 59, 59 );?><script language="javascript">var calendarField = '';function popCalendar( field ){ calendarField = field; idate = eval( 'document.editFrm.log_' + field + '.value' ); window.open( 'index.php?m=public&a=calendar&dialog=1&callback=setCalendar&date=' + idate, 'calwin', 'width=250, height=220, scrollbars=no' );}/** * @param string Input date in the format YYYYMMDD * @param string Formatted date */function setCalendar( idate, fdate ) { fld_date = eval( 'document.editFrm.log_' + calendarField ); fld_fdate = eval( 'document.editFrm.' + calendarField ); fld_date.value = idate; fld_fdate.value = fdate;}</script><form name="editFrm" action="index.php?m=projects&a=reports" method="post"><input type="hidden" name="project_id" value="<?php echo $project_id;?>" /><input type="hidden" name="report_category" value="<?php echo $report_category;?>" /><input type="hidden" name="report_type" value="<?php echo $report_type;?>" /><table cellspacing="0" cellpadding="4" border="0" width="100%" class="std"><tr> <td nowrap="nowrap"><?php echo $AppUI->_('For period');?>: <input type="hidden" name="log_start_date" value="<?php echo $start_date->format( FMT_TIMESTAMP_DATE );?>" /> <input type="text" name="start_date" value="<?php echo $start_date->format( $df );?>" class="text" disabled="disabled" /> <a href="#" onClick="popCalendar('start_date')"> <img src="./images/calendar.gif" width="24" height="12" alt="<?php echo $AppUI->_('Calendar');?>" border="0" /> </a> </td> <td nowrap="nowrap"><?php echo $AppUI->_('to');?> <input type="hidden" name="log_end_date" value="<?php echo $end_date ? $end_date->format( FMT_TIMESTAMP_DATE ) : '';?>" /> <input type="text" name="end_date" value="<?php echo $end_date ? $end_date->format( $df ) : '';?>" class="text" disabled="disabled" /> <a href="#" onClick="popCalendar('end_date')"> <img src="./images/calendar.gif" width="24" height="12" alt="<?php echo $AppUI->_('Calendar');?>" border="0" /> </a> </td> <td nowrap='nowrap'> <input type="radio" name="coarseness" value="1" <?php if ($coarseness == 1) echo "checked" ?> /> <?php echo $AppUI->_( 'Days' );?> <input type="radio" name="coarseness" value="7" <?php if ($coarseness == 7) echo "checked" ?> /> <?php echo $AppUI->_( 'Weeks' );?></td> <td nowrap='nowrap'> <?php echo $AppUI->_( 'Tasks created by' ); echo " "; echo getUsersCombo($user_id); ?> </td></tr><tr> <td nowrap="nowrap" colspan="3" align="center"> <input type="checkbox" name="log_all_projects" <?php if ($log_all_projects) echo "checked" ?> /> <?php echo $AppUI->_( 'Log All Projects' );?> <input type="checkbox" name="use_assigned_percentage" <?php if ($use_assigned_percentage) echo "checked" ?> /> <?php echo $AppUI->_( 'Use assigned percentage' );?> <input type="checkbox" name="hideNonWd" <?php if ($hideNonWd) echo "checked" ?> /> <?php echo $AppUI->_( 'Hide non-working days' );?> </td> <td align="left" width="50%" nowrap="nowrap"> <input class="button" type="submit" name="do_report" value="<?php echo $AppUI->_('submit');?>" /> </td></tr></table></form><?phpif($do_report) { // Let's figure out which users we have $q = new DBQuery; $q->addTable('users', 'u'); $q->addQuery('u.user_id, u.user_username, contact_first_name, contact_last_name'); $q->addJoin('contacts', 'c', 'u.user_contact = contact_id'); $user_list = $q->loadHashList('user_id'); $q->clear(); $q = new DBQuery; $q->addTable('tasks', 't'); $q->addTable('user_tasks', 'ut'); $q->addTable('projects', 'p'); $q->addQuery('t.*, ut.*, p.project_name'); $q->addWhere("( task_start_date BETWEEN \"".$start_date->format( FMT_DATETIME_MYSQL )."\" AND \"".$end_date->format( FMT_DATETIME_MYSQL )."\" OR task_end_date BETWEEN \"".$start_date->format( FMT_DATETIME_MYSQL )."\" AND \"".$end_date->format( FMT_DATETIME_MYSQL )."\" OR ( task_start_date <= \"".$start_date->format( FMT_DATETIME_MYSQL )."\" AND task_end_date >= \"".$end_date->format( FMT_DATETIME_MYSQL )."\") )"); $q->addWhere('task_end_date IS NOT NULL'); $q->addWhere("task_end_date != '0000-00-00 00:00:00'"); $q->addWhere('task_start_date IS NOT NULL'); $q->addWhere("task_start_date != '0000-00-00 00:00:00'"); $q->addWhere("task_dynamic !='1'"); $q->addWhere("task_milestone = '0'"); $q->addWhere('task_duration > 0'); $q->addWhere('t.task_project = p.project_id'); $q->addWhere('t.task_id = ut.task_id'); if($user_id){ $q->addWhere("t.task_owner = '$user_id'"); } if($project_id != 0){ $q->addWhere("t.task_project='$project_id'"); } $proj =& new CProject; $proj->setAllowedSQL($AppUI->user_id, $q); $obj =& new CTask; $obj->setAllowedSQL($AppUI->user_id, $q); $task_list_hash = $q->loadHashList('task_id'); $q->clear(); $task_list = array(); $fetched_projects = array(); foreach($task_list_hash as $task_id => $task_data){ $task = new CTask(); $task->bind($task_data); $task_list[] = $task; $fetched_projects[$task->task_project] = $task_data["project_name"]; } $user_usage = array(); $task_dates = array(); $actual_date = $start_date; $days_header = ""; // we will save days title here $user_tasks_counted_in = array(); $user_names = array(); if ( count($task_list) == 0 ) { echo "<p>" . $AppUI->_( 'No data available' ) ."</p>"; }else { foreach($task_list as $task) { $task_start_date = new CDate($task->task_start_date); $task_end_date = new CDate($task->task_end_date); $day_difference = $task_end_date->dateDiff($task_start_date); $actual_date = $task_start_date; $users = $task->getAssignedUsers(); if ($coarseness == 1) userUsageDays(); elseif ($coarseness == 7) userUsageWeeks(); } if ($coarseness == 1) showDays(); elseif ($coarseness == 7) showWeeks(); ?> <center><table class="std"> <?php echo $table_header . $table_rows; ?> </table> <table width="100%"><tr><td align="center"> <?php echo '<h4>' . $AppUI->_("Total capacity for shown users") . '</h4>'; echo $AppUI->_("Allocated hours").": ".number_format($allocated_hours_sum,2)."<br />"; echo $AppUI->_("Total capacity").": ".number_format($total_hours_capacity,2)."<br />"; echo $AppUI->_("Percentage used").": ". (($total_hours_capacity > 0) ? number_format($allocated_hours_sum/$total_hours_capacity,2)*100 : 0) ."%<br />"; ?> </td> <td align="center"> <?php echo '<h4>' . $AppUI->_("Total capacity for all users") . '</h4>'; echo $AppUI->_("Allocated hours").": ".number_format($allocated_hours_sum,2)."<br />"; echo $AppUI->_("Total capacity").": ".number_format($total_hours_capacity_all,2)."<br />"; echo $AppUI->_("Percentage used").": ".(($total_hours_capacity_all > 0) ? number_format($allocated_hours_sum/$total_hours_capacity_all,2)*100 : 0)."%<br />"; } ?> </td></tr> </table> </center><?phpforeach($user_tasks_counted_in as $user_id => $project_information) { echo "<b>".$user_names[$user_id]."</b><br /><blockquote>"; echo "<table width='50%' border='1' class='std'>"; foreach ($project_information as $project_id => $task_information) { echo "<tr><th colspan='3'><span style='font-weight:bold; font-size:110%'>".$fetched_projects[$project_id]."</span></th></tr>"; $project_total = 0; foreach($task_information as $task_id => $hours_assigned){ echo "<tr><td> </td><td>".$task_list_hash[$task_id]["task_name"]."</td><td>".round($hours_assigned,2)." hrs</td></tr>"; $project_total += round($hours_assigned,2); } echo "<tr><td colspan='2' align='right'><b>".$AppUI->_("Total assigned")."</b></td><td><b>$project_total hrs</b></td></tr>"; } echo "</table></blockquote>"; } }function userUsageWeeks() {GLOBAL $task_start_date, $task_end_date, $day_difference, $hours_added, $actual_date, $users, $user_data, $user_usage,$use_assigned_percentage, $user_tasks_counted_in, $task, $start_date, $end_date;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -