📄 allocateduserhours.php
字号:
$task_duration_per_week = $task->getTaskDurationPerWeek($use_assigned_percentage); $ted = new CDate(Date_Calc::endOfWeek($task_end_date->day,$task_end_date->month,$task_end_date->year)); $tsd = new CDate(Date_Calc::beginOfWeek($task_start_date->day,$task_start_date->month,$task_start_date->year)); $ed = new CDate(Date_Calc::endOfWeek($end_date->day,$end_date->month,$end_date->year)); $sd = new CDate(Date_Calc::beginOfWeek($start_date->day,$start_date->month,$start_date->year)); $week_difference = $end_date->workingDaysInSpan($start_date)/count(explode(",",dPgetConfig("cal_working_days"))); $actual_date = $start_date; for($i = 0; $i<=$week_difference; $i++){ if(!$actual_date->before($tsd) && !$actual_date->after($ted)) { $awoy = $actual_date->year.Date_Calc::weekOfYear($actual_date->day,$actual_date->month,$actual_date->year); foreach($users as $user_id => $user_data){ if(!isset($user_usage[$user_id][$awoy])){ $user_usage[$user_id][$awoy] = 0; } $percentage_assigned = $use_assigned_percentage ? ($user_data["perc_assignment"]/100) : 1; $hours_added = $task_duration_per_week * $percentage_assigned; $user_usage[$user_id][$awoy] += $hours_added; if($user_usage[$user_id][$awoy] < 0.005){ //We want to show at least 0.01 even when the assigned time is very small so we know //that at that time the user has a running task $user_usage[$user_id][$awoy] += 0.006; $hours_added += 0.006; } // Let's register the tasks counted in for calculation if(!array_key_exists($user_id, $user_tasks_counted_in)){ $user_tasks_counted_in[$user_id] = array(); } if(!array_key_exists($task->task_project, $user_tasks_counted_in[$user_id])) { $user_tasks_counted_in[$user_id][$task->task_project] = array(); } if(!array_key_exists($task->task_id, $user_tasks_counted_in[$user_id][$task->task_project])){ $user_tasks_counted_in[$user_id][$task->task_project][$task->task_id] = 0; } // We add it up $user_tasks_counted_in[$user_id][$task->task_project][$task->task_id] += $hours_added; } } $actual_date->addSeconds(168*3600); // + one week }}function showWeeks(){GLOBAL $allocated_hours_sum, $end_date, $start_date, $AppUI, $user_list, $user_names, $user_usage, $hideNonWd, $table_header, $table_rows, $df, $working_days_count, $total_hours_capacity, $total_hours_capacity_all; $working_days_count = 0; $allocated_hours_sum = 0; $ed = new CDate(Date_Calc::endOfWeek($end_date->day,$end_date->month,$end_date->year)); $sd = new CDate(Date_Calc::beginOfWeek($start_date->day,$start_date->month,$start_date->year)); $week_difference = ceil($ed->workingDaysInSpan($sd)/count(explode(",",dPgetConfig("cal_working_days")))); $actual_date = $sd; $table_header = "<tr><th>".$AppUI->_("User")."</th>"; for($i=0; $i<$week_difference; $i++){ $table_header .= "<th>".Date_Calc::weekOfYear($actual_date->day, $actual_date->month, $actual_date->year)."<br><table><td style='font-weight:normal; font-size:70%'>".$actual_date->format( $df )."</td></table></th>"; $actual_date->addSeconds(168*3600); // + one week } $table_header .= "<th nowrap='nowrap' colspan='2'>".$AppUI->_("Allocated")."</th></tr>"; $table_rows = ""; foreach($user_list as $user_id => $user_data){ @$user_names[$user_id] = $user_data["user_username"]; if(isset($user_usage[$user_id])) { $table_rows .= "<tr><td nowrap='nowrap'>(".$user_data["user_username"].") ".$user_data["contact_first_name"]." ".$user_data["contact_last_name"]."</td>"; $actual_date = $sd; for($i=0; $i<$week_difference; $i++){ $awoy = $actual_date->year.Date_Calc::weekOfYear($actual_date->day,$actual_date->month,$actual_date->year); $table_rows .= "<td align='right'>"; if(isset($user_usage[$user_id][$awoy])){ $hours = number_format($user_usage[$user_id][$awoy],2); $table_rows .= $hours; $percentage_used = round(($hours/(dPgetConfig("daily_working_hours")*count(explode(",",dPgetConfig("cal_working_days")))) )*100); $bar_color = "blue"; if($percentage_used > 100){ $bar_color = "red"; $percentage_used = 100; } $table_rows .= "<div style='height:2px;width:$percentage_used%; background-color:$bar_color'> </div>"; } else { $table_rows .= " "; } $table_rows .= "</td>"; $actual_date->addSeconds(168*3600); // + one week } $array_sum = array_sum($user_usage[$user_id]); $average_user_usage = number_format( ($array_sum/( $week_difference * count(explode(",",dPgetConfig("cal_working_days")))*dPgetConfig("daily_working_hours")))*100, 2); $allocated_hours_sum += $array_sum; $bar_color = "blue"; if($average_user_usage > 100){ $bar_color = "red"; $average_user_usage = 100; } $table_rows .= "<td ><div align='left'>".round($array_sum, 2)." ".$AppUI->_("hours")."</td> <td align='right'> ".$average_user_usage ; $table_rows .= "%</div>"; $table_rows .= "<div align='left' style='height:2px;width:$average_user_usage%; background-color:$bar_color'> </div></td>"; $table_rows .= "</tr>"; } } $total_hours_capacity = $week_difference * count(explode(",",dPgetConfig("cal_working_days"))) * dPgetConfig("daily_working_hours") * count($user_usage); $total_hours_capacity_all = $week_difference * count(explode(",",dPgetConfig("cal_working_days"))) *dPgetConfig("daily_working_hours") * count($user_list);}function userUsageDays() {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; $task_duration_per_day = $task->getTaskDurationPerDay($use_assigned_percentage); for($i = 0; $i<=$day_difference; $i++){ if(!$actual_date->before($start_date) && !$actual_date->after($end_date) && $actual_date->isWorkingDay()) { foreach($users as $user_id => $user_data){ if(!isset($user_usage[$user_id][$actual_date->format("%Y%m%d")])){ $user_usage[$user_id][$actual_date->format("%Y%m%d")] = 0; } $percentage_assigned = $use_assigned_percentage ? ($user_data["perc_assignment"]/100) : 1; $hours_added = $task_duration_per_day * $percentage_assigned; $user_usage[$user_id][$actual_date->format("%Y%m%d")] += $hours_added; if($user_usage[$user_id][$actual_date->format("%Y%m%d")] < 0.005){ //We want to show at least 0.01 even when the assigned time is very small so we know //that at that time the user has a running task $user_usage[$user_id][$actual_date->format("%Y%m%d")] += 0.006; $hours_added += 0.006; } // Let's register the tasks counted in for calculation if(!array_key_exists($user_id, $user_tasks_counted_in)){ $user_tasks_counted_in[$user_id] = array(); } if(!array_key_exists($task->task_project, $user_tasks_counted_in[$user_id])) { $user_tasks_counted_in[$user_id][$task->task_project] = array(); } if(!array_key_exists($task->task_id, $user_tasks_counted_in[$user_id][$task->task_project])){ $user_tasks_counted_in[$user_id][$task->task_project][$task->task_id] = 0; } // We add it up $user_tasks_counted_in[$user_id][$task->task_project][$task->task_id] += $hours_added; } } $actual_date->addDays(1); }}function showDays(){GLOBAL $allocated_hours_sum, $end_date, $start_date, $AppUI, $user_list, $user_names, $user_usage, $hideNonWd, $table_header, $table_rows, $df, $working_days_count, $total_hours_capacity, $total_hours_capacity_all; $days_difference = $end_date->dateDiff($start_date); $actual_date = $start_date; $working_days_count = 0; $allocated_hours_sum = 0; $table_header = "<tr><th>".$AppUI->_("User")."</th>"; for($i=0; $i<=$days_difference; $i++){ if(($actual_date->isWorkingDay()) || (!$actual_date->isWorkingDay() && !$hideNonWd)) { $table_header .= "<th>".utf8_encode(Date_Calc::getWeekdayAbbrname($actual_date->day, $actual_date->month, $actual_date->year, 3))."<br><table><td style='font-weight:normal; font-size:70%'>".$actual_date->format( $df )."</td></table></th>"; } if($actual_date->isWorkingDay()){ $working_days_count++; } $actual_date->addDays(1); } $table_header .= "<th nowrap='nowrap' colspan='2'>".$AppUI->_("Allocated")."</th></tr>"; $table_rows = ""; foreach($user_list as $user_id => $user_data){ @$user_names[$user_id] = $user_data["user_username"]; if(isset($user_usage[$user_id])) { $table_rows .= "<tr><td nowrap='nowrap'>(".$user_data["user_username"].") ".$user_data["contact_first_name"]." ".$user_data["contact_last_name"]."</td>"; $actual_date = $start_date; for($i=0; $i<=$days_difference; $i++){ if(($actual_date->isWorkingDay()) || (!$actual_date->isWorkingDay() && !$hideNonWd)) { $table_rows .= "<td>"; if(isset($user_usage[$user_id][$actual_date->format("%Y%m%d")])){ $hours = number_format($user_usage[$user_id][$actual_date->format("%Y%m%d")],2); $table_rows .= $hours; $percentage_used = round($hours/dPgetConfig("daily_working_hours")*100); $bar_color = "blue"; if($percentage_used > 100){ $bar_color = "red"; $percentage_used = 100; } $table_rows .= "<div style='height:2px;width:$percentage_used%; background-color:$bar_color'> </div>"; } else { $table_rows .= " "; } $table_rows .= "</td>";} $actual_date->addDays(1); } $array_sum = array_sum($user_usage[$user_id]); $average_user_usage = number_format( ($array_sum/($working_days_count*dPgetConfig("daily_working_hours")))*100, 2); $allocated_hours_sum += $array_sum; $bar_color = "blue"; if($average_user_usage > 100){ $bar_color = "red"; $average_user_usage = 100; } $table_rows .= "<td ><div align='left'>".round($array_sum, 2)." ".$AppUI->_("hours")."</td> <td align='right'> ".$average_user_usage ; $table_rows .= "%</div>"; $table_rows .= "<div align='left' style='height:2px;width:$average_user_usage%; background-color:$bar_color'> </div></td>"; $table_rows .= "</tr>"; } } $total_hours_capacity = $working_days_count*dPgetConfig("daily_working_hours")*count($user_usage); $total_hours_capacity_all = $working_days_count*dPgetConfig("daily_working_hours")*count($user_list);}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -