Commit a483ebbd authored by Frank Bergmann's avatar Frank Bergmann

- debugged intranet-hr

- orgchart now working
- added old ACS files ad-tree and and ad-functional as intranet-*
parent 0581ca74
Pipeline #19 failed with stages
...@@ -161,8 +161,6 @@ insert into im_categories (category_id, category, category_type) values ...@@ -161,8 +161,6 @@ insert into im_categories (category_id, category, category_type) values
(454, 'Active', 'Intranet Employee Pipeline State'); (454, 'Active', 'Intranet Employee Pipeline State');
insert into im_categories (category_id, category, category_type) values insert into im_categories (category_id, category, category_type) values
(455, 'Past', 'Intranet Employee Pipeline State'); (455, 'Past', 'Intranet Employee Pipeline State');
insert into im_categories (category_id, category, category_type) values
(456, 'Potential Employee', 'Intranet Employee Pipeline State');
------------------------------------------------------ ------------------------------------------------------
...@@ -195,9 +193,6 @@ where category_type = 'Intranet Employee Pipeline State'; ...@@ -195,9 +193,6 @@ where category_type = 'Intranet Employee Pipeline State';
prompt *** Creating im_supervises_p prompt *** Creating im_supervises_p
create or replace function im_supervises_p( create or replace function im_supervises_p(
v_supervisor_id IN integer, v_supervisor_id IN integer,
...@@ -404,3 +399,31 @@ begin ...@@ -404,3 +399,31 @@ begin
end; end;
/ /
show errors; show errors;
------------------------------------------------------
-- HR Permissions
--
prompt *** Creating HR Profiles
begin
im_create_profile ('HR Managers','profile');
end;
/
show errors;
prompt *** Creating Privileges
begin
acs_privilege.create_privilege('view_hr','View HR','View HR');
end;
/
prompt Initializing HR Permissions
BEGIN
im_priv_create('view_hr', 'HR Managers');
im_priv_create('view_hr', 'P/O Admins');
im_priv_create('view_hr', 'Senior Managers');
END;
/
commit;
...@@ -11,6 +11,19 @@ ad_library { ...@@ -11,6 +11,19 @@ ad_library {
@author frank.bergmann@project-open.com @author frank.bergmann@project-open.com
} }
# ----------------------------------------------------------------------
# Constant Functions
# ----------------------------------------------------------------------
ad_proc -public im_employee_status_potential {} { return 450 }
ad_proc -public im_employee_status_received_test {} { return 451 }
ad_proc -public im_employee_status_failed_test {} { return 452 }
ad_proc -public im_employee_status_approved_test {} { return 453 }
ad_proc -public im_employee_status_active {} { return 454 }
ad_proc -public im_employee_status_past {} { return 455 }
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# Employee Info Component # Employee Info Component
# Some simple extension data for employeers # Some simple extension data for employeers
...@@ -19,23 +32,35 @@ ad_library { ...@@ -19,23 +32,35 @@ ad_library {
ad_proc im_employee_info_component { employee_id return_url {view_name ""} } { ad_proc im_employee_info_component { employee_id return_url {view_name ""} } {
Show some simple information about a employeer Show some simple information about a employeer
} { } {
ns_log Notice "im_employee_info_component: employee_id=$employee_id, view_name=$view_name"
set current_user_id [ad_get_user_id] set current_user_id [ad_get_user_id]
if {"" == $view_name} { set view_name "employees_view" } if {"" == $view_name} { set view_name "employees_view" }
ns_log Notice "im_employee_info_component: employee_id=$employee_id, view_name=$view_name"
set department_url "/intranet/intranet-cost/cost_centers/view?cost_center_id=" set department_url "/intranet/intranet-cost/cost_centers/view?cost_center_id="
set user_url "/intranet/users/view?user_id=" set user_url "/intranet/users/view?user_id="
set td_class(0) "class=roweven"
set td_class(1) "class=rowodd"
# employee_id gets modified by the SQl ... :-(
set org_employee_id $employee_id
# --------------- Security --------------------------
set view 0 set view 0
set read 0 set read 0
set write 0 set write 0
set admin 0 set admin 0
im_user_permissions $current_user_id $employee_id view read write admin im_user_permissions $current_user_id $employee_id view read write admin
if {!$read} { return "" }
set td_class(0) "class=roweven" # Check if the current_user is a HR manager
set td_class(1) "class=rowodd" if {![im_permission $current_user_id view_hr]} { return "" }
# employee_id gets modified by the SQl ... :-( # Finally: Show this component only for employees
set org_employee_id $employee_id if {![im_user_is_employee_p $employee_id]} { return "" }
# --------------- Security --------------------------
db_1row employee_info " db_1row employee_info "
select select
......
...@@ -25,8 +25,6 @@ ad_page_contract { ...@@ -25,8 +25,6 @@ ad_page_contract {
# ------------------------------------------------------------------ # ------------------------------------------------------------------
set user_id [ad_maybe_redirect_for_registration] set user_id [ad_maybe_redirect_for_registration]
set page_title "Edit Employee Information"
set context [ad_context_bar $page_title]
set today [db_string birthday_today "select sysdate from dual"] set today [db_string birthday_today "select sysdate from dual"]
if {![im_permission $user_id view_users]} { if {![im_permission $user_id view_users]} {
...@@ -38,6 +36,8 @@ set action_url "/intranet-hr/new" ...@@ -38,6 +36,8 @@ set action_url "/intranet-hr/new"
set focus "cost.var_name" set focus "cost.var_name"
set employee_name "" set employee_name ""
set form_mode "edit"
if {[info exists employee_id]} { if {[info exists employee_id]} {
set employee_name [db_string employee_name "select im_name_from_user_id(:employee_id) from dual"] set employee_name [db_string employee_name "select im_name_from_user_id(:employee_id) from dual"]
ns_log Notice "/intranet-hr/new/: employee_id=$employee_id" ns_log Notice "/intranet-hr/new/: employee_id=$employee_id"
...@@ -45,26 +45,39 @@ if {[info exists employee_id]} { ...@@ -45,26 +45,39 @@ if {[info exists employee_id]} {
ns_log Notice "/intranet-hr/new/: employee_id doesn't exist" ns_log Notice "/intranet-hr/new/: employee_id doesn't exist"
} }
# ------------------------------------------------------------------ set page_title "Employee Information of $employee_name"
# Get everything about the employee set context [ad_context_bar $page_title]
# ------------------------------------------------------------------
if {![exists_and_not_null item_id]} {
# New variable: setup some reasonable defaults
set form_mode "edit"
}
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Build the form # Insert default information if the record doesn't exist
# ------------------------------------------------------------------ # ------------------------------------------------------------------
set availability "100" set availability "100"
set birthdate $today set birthdate $today
set currency [ad_parameter -package_id [im_package_cost_id] "DefaultCurrency" "" "EUR"] set currency [ad_parameter -package_id [im_package_cost_id] "DefaultCurrency" "" "EUR"]
set exists_p [db_string exists_employee "select count(*) from im_employees where employee_id=:employee_id"]
if {!$exists_p} {
db_dml insert_employee_record "
insert into im_employees (
employee_id,
availability,
currency,
employee_status_id
) values (
:employee_id,
100,
:currency,
[im_employee_status_active]
)"
}
# ------------------------------------------------------------------
# Build the form
# ------------------------------------------------------------------
set currency_options [im_cost_currency_options] set currency_options [im_currency_options]
set department_options [im_department_options] set department_options [im_department_options]
......
...@@ -25,9 +25,8 @@ set page_focus "im_header_form.keywords" ...@@ -25,9 +25,8 @@ set page_focus "im_header_form.keywords"
set user_admin_p [im_is_user_site_wide_or_intranet_admin $user_id] set user_admin_p [im_is_user_site_wide_or_intranet_admin $user_id]
set return_url [im_url_with_query] set return_url [im_url_with_query]
if {![im_permission $user_id view_users]} { if {![im_permission $user_id view_hr]} {
set err_msg "You don't have permissions to view users" ad_return_complaint 1 "You don't have permissions to view users"
ad_returnredirect "/error?error=$err_msg"
return return
} }
...@@ -36,21 +35,27 @@ if {![im_permission $user_id view_users]} { ...@@ -36,21 +35,27 @@ if {![im_permission $user_id view_users]} {
# im_employees - basically, until you say This user is supervised by nobody # im_employees - basically, until you say This user is supervised by nobody
# or by her, that user won't show up in the query # or by her, that user won't show up in the query
set big_kahuna_list [db_list kahuna_find \ set big_kahuna_list [db_list kahuna_find "
"select info.user_id select
from im_employees_active info info.employee_id
where supervisor_id is null from
and exists (select 1 im_employees_active info
from im_employees_active info2 where
where info2.supervisor_id = info.user_id)"] supervisor_id is null
and exists (
select 1
from im_employees_active info2
where info2.supervisor_id = info.employee_id
)
"]
if { [llength $big_kahuna_list] == 0 || [llength $big_kahuna_list] > 1 } { if { [llength $big_kahuna_list] == 0 || [llength $big_kahuna_list] > 1 } {
ad_return_error "No Big Kahuna" "<blockquote>For the org chart page to work, you need to have set up the \"who supervises whom\" relationships so that there is only one person (the CEO) who has no supervisor and no subordinates.</blockquote>" ad_return_error "No Big Kahuna" "<blockquote>For the org chart page to work, you need to have set up the \"who supervises whom\" relationships so that there is only one person (the CEO) who has no supervisor and no subordinates.</blockquote>"
return return
} }
if { ![exists_and_not_null starting_user_id] } { if { ![exists_and_not_null starting_employee_id] } {
set starting_user_id [lindex $big_kahuna_list 0] set starting_employee_id [lindex $big_kahuna_list 0]
} }
set page_body "<blockquote>\n" set page_body "<blockquote>\n"
...@@ -70,39 +75,39 @@ set vacant_position "" ...@@ -70,39 +75,39 @@ set vacant_position ""
set nodes_sql " set nodes_sql "
select select
user_id, employee_id,
im_name_from_user_id(user_id) as employee_name, im_name_from_user_id(employee_id) as employee_name,
ad_group_member_p(user_id, [im_employee_group_id]) as currently_employed_p ad_group_member_p(employee_id, [im_employee_group_id]) as currently_employed_p
from from
im_employees im_employees
start with start with
user_id = :starting_user_id employee_id = :starting_employee_id
connect by connect by
supervisor_id = PRIOR user_id" supervisor_id = PRIOR employee_id"
set bind_vars [ns_set create] set bind_vars [ns_set create]
ns_set put $bind_vars starting_user_id $starting_user_id ns_set put $bind_vars starting_employee_id $starting_employee_id
# generate the org chart # generate the org chart
append page_body [tree_to_horizontal_table [im_prune_org_chart [db_tree nodes_display $nodes_sql -bind $bind_vars]] im_print_employee] append page_body [tree_to_horizontal_table [im_prune_org_chart [db_tree nodes_display $nodes_sql -bind $bind_vars]] im_print_employee]
# Now pull out the people who don't get included because they # Now pull out the people who don't get included because they
# aren't starting_user_id and they don't have supervisors # aren't starting_employee_id and they don't have supervisors
set employee_listing_sql " set employee_listing_sql "
select u.user_id, u.first_names || ' ' || u.last_name as employee_name select u.employee_id, u.first_names || ' ' || u.last_name as employee_name
from im_employees_active u from im_employees_active u
where u.user_id <> :starting_user_id where u.employee_id <> :starting_employee_id
and u.supervisor_id is null and u.supervisor_id is null
order by lower(employee_name)" order by lower(employee_name)"
set homeless_employees "" set homeless_employees ""
db_foreach employee_listing $employee_listing_sql { db_foreach employee_listing $employee_listing_sql {
append homeless_employees " <li> <a href=../users/view?[export_url_vars user_id]>$employee_name</a>" append homeless_employees " <li> <a href=../users/view?[export_url_vars employee_id]>$employee_name</a>"
if { $user_admin_p } { if { $user_admin_p } {
append homeless_employees " (<a href=admin/update-supervisor?[export_url_vars user_id return_url]>add supervisor</a>)" append homeless_employees " (<a href=admin/update-supervisor?[export_url_vars employee_id return_url]>add supervisor</a>)"
} }
append homeless_employees "\n" append homeless_employees "\n"
} }
...@@ -119,7 +124,7 @@ append page_body "</blockquote>\n" ...@@ -119,7 +124,7 @@ append page_body "</blockquote>\n"
set page_body " set page_body "
<BR> <BR>
[im_user_navbar "none" "/intranet/users/index" "" "" [list starting_user_id]] [im_user_navbar "none" "/intranet/users/index" "" "" [list starting_employee_id]]
$page_body $page_body
" "
......
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