Commit e0affcb0 authored by Frank Bergmann's avatar Frank Bergmann

- changes from baselkb

parent e13f5066
......@@ -7,7 +7,7 @@
<msg key="Absence_Type">Abwesenheitstyp</msg>
<msg key="Absence_Type_1">Abwesenheitstyp</msg>
<msg key="Absences">Abwesenheiten</msg>
<msg key="absences">Abwesehnheiten</msg>
<msg key="absences">Abwesenheiten</msg>
<msg key="Absent">Abwesend</msg>
<msg key="Absent_1">Abwesend</msg>
<msg key="Add_a_new_Absence">Neue Abwesenheit</msg>
......@@ -110,7 +110,7 @@
<msg key="log_dedication">Stunden erfassen</msg>
<msg key="log_hours">Stunden erfassen</msg>
<msg key="Log_your_hours">Erfassen sie ihre Stunden</msg>
<msg key="lt_A_total_of_total_hour">Es wurden insgesamt %total_hours_str% Sunden auf diesem Projekt erfat.</msg>
<msg key="lt_A_total_of_total_hour">Es wurden insgesamt %total_hours_str% Stunden auf diesem Projekt erfat.</msg>
<msg key="lt_Add_hours_on_other_pr">Stunden erfassen auf anderen Projekten</msg>
<msg key="lt_based_select_hours_pe">%based_select% Stunden pro Woche</msg>
<msg key="lt_Choose_an_employee_to">Whlen sie einen Miterbeiter, um seine erfaten Stunden zu sehen</msg>
......@@ -153,7 +153,7 @@
<msg key="lt_Weekly_total_by_user_">Wchentliche Summe von %user_name% </msg>
<msg key="lt_You_have_loged_total_">Sie haben %total_hours_str% auf diesem Projekt erfat</msg>
<msg key="lt_You_have_no_rights_to">Sie haben unzureichende Berechtigungen, um diese Seite zu sehen.</msg>
<msg key="lt_You_havent_logged_you">Sie haben in der letzen Woche keine Zeit erfat, bitte %log_them_now_link% tuen sie das jetzt</msg>
<msg key="lt_You_havent_logged_you">Sie haben in der letzen Woche keine Stunden erfat, bitte %log_them_now_link% tun Sie das jetzt</msg>
<msg key="lt_You_logged_num_hours_">Sie haben %num_hours% Stunden in den letzten 7 Tagen erfat.</msg>
<msg key="M">M</msg>
<msg key="March">Mrz</msg>
......
......@@ -112,6 +112,7 @@
<msg key="L">L</msg>
<msg key="Last_3_months">Last 3 months</msg>
<msg key="Local">Local</msg>
<msg key="Log_Absences">Log Absences</msg>
<msg key="log_dedication">log dedication</msg>
<msg key="log_hours">log hours</msg>
<msg key="Log_your_hours">Log your hours</msg>
......
......@@ -15,7 +15,7 @@
<msg key="Add_lines">Aadir lneas</msg>
<msg key="Add_more_lines">Aadir ms lneas</msg>
<msg key="Admin">Administrador</msg>
<msg key="Admin_Absences">Administrar ausencias</msg>
<msg key="Admin_Absences">Administracin de Ausencias</msg>
<msg key="Administration">Administracin</msg>
<msg key="All">Todo</msg>
<msg key="All_dates">Todas las fechas</msg>
......@@ -280,7 +280,6 @@
<msg key="user_not_logged_in">el usuario no ha iniciado sesin</msg>
<msg key="Users">Usuarios</msg>
<msg key="V">V</msg>
<msg key="View">Ver</msg>
<msg key="View_Absence">Ver ausencia</msg>
<msg key="View_all_Absences">Ver todas las ausencias</msg>
<msg key="View_employees_hours">Ver horas de empleados</msg>
......
......@@ -27,6 +27,7 @@
<parameter datatype="number" min_n_values="1" max_n_values="1" name="SyncHoursP" default="1" description="Should we create im_cost Cost-Items for each timesheet hour? This is usually the case, unless the profit &amp; loss function is not being used."/>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="TimesheetHoursPerAbsence" default="8" description="Specifies the equivalent hours of a day of absences. 8 by default."/>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="TimesheetLastMonthClosingDay" default="0" description="Should an Employee be able to edit his or her hours of the last month? Default is &quot;0&quot;, indicating that there is no closing date. Please enter a number from 1 to 27 (for example: &quot;5&quot;) to activate a closing day functionality, indicate that the last month becomes &quot;closed&quot; at the 5th of the current month."/>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="TimesheetLogHoursOnPotentialProjectsP" default="1" description="Are users allowed to log hours on potential projects? That makes sense for presales guys in a consulting company, but not for IT staff in an IT department."/>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="TimesheetRedirectHomeIfEmptyHoursP" default="0" description="Redirect the user from the Home page to the timesheet if there are not enough hours logged?"/>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="TimesheetRedirectNumDays" default="7" description="The number of days to check for redirection"/>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="TimesheetRedirectNumHoursInDays" default="32" description="The number of hours that should be logged in NumDays (see above)"/>
......
This diff is collapsed.
......@@ -151,6 +151,9 @@ ad_proc -public im_timesheet_home_component {user_id} {
set redirect_p [parameter::get -package_id [im_package_timesheet2_id] -parameter "TimesheetRedirectHomeIfEmptyHoursP" -default 0]
set num_days [parameter::get -package_id [im_package_timesheet2_id] -parameter "TimesheetRedirectNumDays" -default 7]
set expected_hours [parameter::get -package_id [im_package_timesheet2_id] -parameter "TimesheetRedirectNumHoursInDays" -default 32]
set available_perc [util_memoize "db_string percent_available \"select availability from im_employees where employee_id = $user_id\" -default 100" 60]
if {"" == $available_perc} { set available_perc 100 }
set expected_hours [expr $expected_hours * $available_perc / 100]
set hours_html ""
set log_them_now_link "<a href=/intranet-timesheet2/hours/index>"
......@@ -173,10 +176,8 @@ ad_proc -public im_timesheet_home_component {user_id} {
if { $num_hours < $expected_hours && $add_hours } {
set default_message "
<b>You have logged %num_hours% hours in the last %num_days% days.
However, you are expected to log atleast %expected_hours% hours
or an equivalent amount of absences.
Please log your hours now or consult with your supervisor.</b>
<b>Sie haben bisher lediglich %num_hours% von erforderlichen %expected_hours% Stunden in den letzten %num_days% Tagen erfasst.
Bitte aktualisieren Sie ihre Stunden oder setzen Sie sich mit Ihrem Vorgesetzten in Verbindung.</b>
"
set message [lang::message::lookup "" intranet-timesheet2.You_need_to_log_hours $default_message]
......@@ -215,7 +216,6 @@ ad_proc -public im_timesheet_home_component {user_id} {
</a>\n"
}
if {$add_hours} {
set log_hours_link "<a href=/intranet-timesheet2/hours/index>"
set add_html "<li>[_ intranet-timesheet2.lt_Log_your_log_hours_li]</a>\n"
......@@ -226,7 +226,20 @@ ad_proc -public im_timesheet_home_component {user_id} {
if {$add_absences} {
append add_html "/ <a href=/intranet-timesheet2/absences/new>[_ intranet-timesheet2.absences]</a>\n"
}
append hours_html "$add_html</ul>"
append hours_html "$add_html"
append hours_html "</ul>"
# Add the <ul>-List of associated menus
set bind_vars [ad_tcl_vars_to_ns_set]
set menu_html [im_menu_ul_list "reporting-timesheet" $bind_vars]
if {"" != $menu_html} {
append hours_html "
[lang::message::lookup "" intranet-timesheet2.Associated_reports "Associated Reports"]
$menu_html
"
}
return $hours_html
}
......@@ -239,12 +252,16 @@ ad_proc -public im_timesheet_project_component {user_id project_id} {
set return_url "[ad_conn url]?[ad_conn query]"
}
# disable the component for users who can neither see stuff nor add stuff
set add_hours [im_permission $user_id "add_hours"]
set view_hours_all [im_permission $user_id "add_hours"]
if {!$add_hours & !$view_hours_all} { return "" }
set hours_logged "<ul>"
set info_html ""
if {$admin} {
# fraber 2007-01-31: Admin doesn't make sense.
if {$write} {
set total_hours [hours_sum $project_id]
set total_hours_str "[util_commify_number $total_hours]"
set info_html "[_ intranet-timesheet2.lt_A_total_of_total_hour]"
......@@ -255,7 +272,7 @@ ad_proc -public im_timesheet_project_component {user_id project_id} {
[_ intranet-timesheet2.lt_See_the_breakdown_by_]
</a>\n"
}
append hours_logged "<li><a href=\"/intranet-timesheet2/weekly_report?project_id=$project_id\">[_ intranet-timesheet2.lt_View_hours_logged_by_]</a>"
# append hours_logged "<li><a href=\"/intranet-timesheet2/weekly_report?project_id=$project_id\">[_ intranet-timesheet2.lt_View_hours_logged_by_]</a>"
}
......@@ -271,6 +288,9 @@ ad_proc -public im_timesheet_project_component {user_id project_id} {
set redirect_p [parameter::get -package_id [im_package_timesheet2_id] -parameter "TimesheetRedirectProjectIfEmptyHoursP" -default 0]
set num_days [parameter::get -package_id [im_package_timesheet2_id] -parameter "TimesheetRedirectNumDays" -default 7]
set expected_hours [parameter::get -package_id [im_package_timesheet2_id] -parameter "TimesheetRedirectNumHoursInDays" -default 32]
set available_perc [util_memoize "db_string percent_available \"select availability from im_employees where employee_id = $user_id\" -default 100" 60]
if {"" == $available_perc} { set available_perc 100 }
set expected_hours [expr $expected_hours * $available_perc / 100]
set num_hours [hours_sum_for_user $user_id "" $num_days]
if { $redirect_p && $num_hours < $expected_hours && $add_hours } {
......@@ -305,6 +325,36 @@ Please log your hours now or consult with your supervisor."
}
append info_html "$hours_logged</ul>"
# Add the <ul>-List of associated menus
set start_date "2000-01-01"
set end_date "2100-01-01"
set menu_select_sql "
select m.*
from im_menus m
where label = 'reporting-timesheet-customer-project'
and im_object_permission_p(m.menu_id, :user_id, 'read') = 't'
"
set menu_html "<ul>\n"
set ctr 0
db_foreach menu_select $menu_select_sql {
regsub -all " " $name "_" name_key
append url "project_id=$project_id&level_of_detail=3&start_date=$start_date&end_date=$end_date"
append menu_html "<li><a href=\"$url\">[lang::message::lookup "" intranet-invoices.$name_key $name]</a></li>\n"
incr ctr
}
append menu_html "</ul>\n"
if {$ctr > 0} {
append info_html "
[lang::message::lookup "" intranet-timesheet2.Associated_reports "Associated Reports"]
$menu_html
"
}
return $info_html
}
......
......@@ -43,6 +43,20 @@ ad_page_contract {
set exception_count 0
set exception_text ""
# Check that Start & End-Date have correct format
if {![regexp {^[0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9]$} $start_date]} {
ad_return_complaint 1 "Start Date doesn't have the right format.<br>
Current value: '$start_date'<br>
Expected format: 'YYYY-MM-DD'"
}
if {![regexp {^[0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9]$} $end_date]} {
ad_return_complaint 1 "End Date doesn't have the right format.<br>
Current value: '$end_date'<br>
Expected format: 'YYYY-MM-DD'"
}
regexp {[0-9]*-[0-9]*-[0-9]*} $start_date start_date_int
regexp {[0-9]*-[0-9]*-[0-9]*} $end_date end_date_int
......
......@@ -129,14 +129,10 @@ for { set current_date $first_julian_date
} {
if { [info exists users_hours($current_date)] && ![empty_string_p $users_hours($current_date)] } {
set html "$users_hours($current_date) hours"
if {1 == $hours} { set html "1 hour" }
set hours_for_this_week [expr $hours_for_this_week + $users_hours($current_date)]
set hours_for_this_week [expr $hours_for_this_week + $users_hours($current_date)]
} else {
set curr_absence [lindex $absence_list $absence_index]
set html ""
#if { [string equal $html work] } {
set html "<font color=#666666><em>[_ intranet-timesheet2.log_hours]</em></font>"
#}
set curr_absence [lindex $absence_list $absence_index]
set html "<font color=#666666><em>[_ intranet-timesheet2.log_hours]</em></font>"
}
if {$user_admin_p } {
......
......@@ -69,6 +69,14 @@ set context_bar [im_context_bar [list index "[_ intranet-timesheet2.Hours]"] "[_
set permissive_logging [parameter::get_from_package_key -package_key intranet-timesheet2 -parameter PermissiveHourLogging -default "permissive"]
set log_hours_on_potential_project_p [parameter::get_from_package_key -package_key intranet-timesheet2 -parameter TimesheetLogHoursOnPotentialProjectsP -default 1]
# What is a closed status?
set closed_stati_select "select * from im_sub_categories([im_project_status_closed])"
if {!$log_hours_on_potential_project_p} {
append closed_stati_select " UNION select * from im_sub_categories([im_project_status_potential])"
}
# ---------------------------------------------------------
......@@ -78,7 +86,8 @@ set permissive_logging [parameter::get_from_package_key -package_key intranet-ti
set edit_hours_p "t"
# When should we consider the last month to be closed?
set last_month_closing_day [parameter::get_from_package_key -package_key intranet-timesheet2 -parameter TimesheetLastMonthClosingDay -default 0]
set last_month_closing_day [parameter::get_from_package_key -package_key intranet-timesheet2 -parameter TimesheetLastMonthClosingDay -default 5]
if {0 != $last_month_closing_day && "" != $last_month_closing_day} {
......@@ -87,7 +96,7 @@ if {0 != $last_month_closing_day && "" != $last_month_closing_day} {
set first_of_last_month [db_string last_month "
select to_char(now()::date - :last_month_closing_day::integer + '0 Month'::interval, 'YYYY-MM-01')
"]
set edit_hours_p [db_string e "select to_date(:julian_date, 'J') > :first_of_last_month::date"]
set edit_hours_p [db_string e "select to_date(:julian_date, 'J') >= :first_of_last_month::date"]
}
......@@ -201,9 +210,7 @@ if {0 != $project_id} {
where h.user_id = :user_id
and h.day = to_date(:julian_date, 'J')
)
and p.project_status_id not in (
select * from im_sub_categories([im_project_status_closed])
)
and p.project_status_id not in ($closed_stati_select)
"
}
......@@ -220,6 +227,13 @@ if {![string equal "permissive" $permissive_logging]} {
from im_hours h
where h.user_id = :user_id
and h.day = to_date(:julian_date, 'J')
UNION
select project_id from im_projects where project_id = :project_id
UNION
select p.project_id
from im_projects p
where p.project_id in ([join [lappend project_id_list 0] ","])
and p.parent_id is null
)
"
}
......@@ -271,15 +285,9 @@ set sql "
and children.tree_sortkey between
parent.tree_sortkey and
tree_right(parent.tree_sortkey)
and parent.project_status_id not in (
select * from im_sub_categories([im_project_status_closed])
)
and children.project_status_id not in (
select * from im_sub_categories([im_project_status_closed])
)
and parent.project_id in (
$project_sql
)
and parent.project_status_id not in ($closed_stati_select)
and children.project_status_id not in ($closed_stati_select)
and parent.project_id in ($project_sql)
$children_sql
order by
lower(parent.project_name),
......@@ -297,7 +305,7 @@ set sql "
# Determine all the members of the "closed" super-status
set closed_stati [db_list closed_stati "select * from im_sub_categories([im_project_status_closed])"]
set closed_stati [db_list closed_stati $closed_stati_select]
set results ""
set ctr 0
......
......@@ -35,16 +35,14 @@ if { [empty_string_p $user_id] } {
set rows_found_p 0
set sql "
select
u.user_id,
im_name_from_user_id(u.user_id) as user_name
from
users u
where
exists (select 1 from im_hours where user_id = u.user_id)
order by user_name"
select
u.*,
im_name_from_user_id(u.user_id) as user_name
from
(select distinct user_id from im_hours) u
order by user_name
"
#order by lower(user_name)
db_foreach users_who_logged_hours $sql {
append page_body "<li><a href=projects?[export_url_vars user_id]>$user_name</a>\n"
} if_no_rows {
......@@ -67,22 +65,22 @@ order by user_name"
set page_body "<ul>\n"
set sql "
select
p.project_name,
p.project_id,
round(sum(h.hours)) as total_hours,
min(h.day) as first_day,
max(h.day) as last_day
from
im_projects p,
im_hours h
where
p.project_id = h.project_id
and h.user_id = :user_id
group by
p.project_name,
p.project_id
"
select
p.project_name,
p.project_id,
sum(h.hours) as total_hours,
min(h.day) as first_day,
max(h.day) as last_day
from
im_projects p,
im_hours h
where
p.project_id = h.project_id
and h.user_id = :user_id
group by
p.project_name,
p.project_id
"
db_foreach hours_on_project $sql {
set first_day_str "[util_AnsiDatetoPrettyDate $first_day]"
......
<master src="../../intranet-core/www/master">
<property name="title">Absences</property>
<property name="title">Weekly Hours</property>
<property name="context">context</property>
<property name="main_navbar_label">finance</property>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment