Commit 4a5a46e4 authored by cvs2svn's avatar cvs2svn

This commit was manufactured by cvs2svn to create tag 'v3-0-0-2-1'.

Sprout from master 2005-05-03 14:04:16 UTC Frank Bergmann  <frank.bergmann@project-open.com> '- moved upgrade file and added upgrade subdirectory'
Delete:
    catalog/intranet-hr.de_DE.ISO-8859-1.xml
    catalog/intranet-hr.en_US.ISO-8859-1.xml
    intranet-hr.info
    sql/common/intranet-hr-backup.sql
    sql/common/intranet-hr-common.sql
    sql/oracle/intranet-hr-create.sql
    sql/oracle/intranet-hr-drop.sql
    sql/postgresql/intranet-hr-create.sql
    sql/postgresql/intranet-hr-drop.sql
    tcl/intranet-hr-procs.tcl
    www/index.adp
    www/index.tcl
    www/new.adp
    www/new.tcl
    www/org-chart.adp
    www/org-chart.tcl
parent 649da6c9
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="intranet-hr" package_version="3.0.0" locale="de_DE" charset="ISO-8859-1">
<msg key="add_supervisor">Neuer Vorgesetzter</msg>
<msg key="Availability_">Verfgbarkeit %</msg>
<msg key="Birthdate">Geburtstag</msg>
<msg key="Cell_Phone">Handy</msg>
<msg key="Currency">Whrung</msg>
<msg key="Department">Abteilung</msg>
<msg key="Edit">Bearbeiten</msg>
<msg key="Email">E-Mail</msg>
<msg key="Employee_Information">Mitarbeiterinformationen</msg>
<msg key="Employee_Own_Supervisor">Ein Mitarbeiter kann nicht sein eigener Vorgesetzter sein.</msg>
<msg key="Employee_Status">Mitarbeiterstatus</msg>
<msg key="End_date">Enddatum</msg>
<msg key="Filter_Employees">Mitarbeiter filtern</msg>
<msg key="Go">Los</msg>
<msg key="Home_Phone">Home Telefon</msg>
<msg key="Hourly_Cost">Kosten pro Stunde</msg>
<msg key="Insurance">Versicherung</msg>
<msg key="Job_Description">Beschreibung der Position</msg>
<msg key="Job_Title">Title</msg>
<msg key="lt_Employee_Information_">Mitarbeiterinformation fr %employee_name%</msg>
<msg key="lt_Employees_without_sup">Mitarbeiter ohne Vorgesetzte</msg>
<msg key="lt_Error_creating_a_new_">Fehler bei der erstellung neuer wiederkehrenden Kosten fr Mitarbeiter \#%employee_id%: </msg>
<msg key="lt_Error_inserting_emplo">Fehler beim Eintrag der Mitarbeiter Kosteninformation:</msg>
<msg key="lt_Internal_error_unknow">Interner Fehler: Unbekannter View '%view_name%' </msg>
<msg key="lt_Monthly_Social_Securi">Monatliche Sozialversicherung</msg>
<msg key="lt_Please_notify_your_sy">Bitte wenden sie sich an ihren Systemadministrator.</msg>
<msg key="lt_Recruiting_Test_Resul">Ergebnis Einstellungstest</msg>
<msg key="lt_Salary_Payments_per_Y">Jhrliches Gehalt</msg>
<msg key="lt_There_are_currently_n">Keine Eintrge gefunden, die den gewhlten Kriterien entsprechen.</msg>
<msg key="lt_Voluntary_Termination">Einverstndliche Beendigung des Arbeitsverhltnisses</msg>
<msg key="lt_You_dont_have_permiss">Sie haben nicht die Berechtigung, diese Seite zu sehen</msg>
<msg key="lt_You_dont_have_permiss_1">Sie haben nicht die Berechtigung, diese Benutzer zu sehen</msg>
<msg key="lt_You_have_insufficient">Sie haben nicht die Berechtigung, diese Seite zu sehen</msg>
<msg key="Monthly_Insurance">Monatliche Versicherung</msg>
<msg key="Monthly_Others">Monatliche andere Kosten</msg>
<msg key="Monthly_Salary">Monatliches Gehalt</msg>
<msg key="Name">Name</msg>
<msg key="NDA_Signed">Vertraulichkeitsvereinbarung unterschrieben?</msg>
<msg key="No">Nein</msg>
<msg key="No_Big_Kahuna">Kein Geschftsfhrer definiert</msg>
<msg key="Nothing_defined_yet">Bisher nichts definiert</msg>
<msg key="Other_Costs">Andere Kosten</msg>
<msg key="Recruiting_Status">Status Einstellungsprozess</msg>
<msg key="Salaries_per_Year">Anzahl Gehlter pro Jahr</msg>
<msg key="Salary">Gehalt</msg>
<msg key="Salary_Period">Gehaltsperiode</msg>
<msg key="Social_Security">Sozialversicherung</msg>
<msg key="Social_Security_">Sozialversicherungsnr.</msg>
<msg key="Social_Security_nr">Sozialversicherungsnr.</msg>
<msg key="Start_Date">Startdatum</msg>
<msg key="Start_date">Startdatum</msg>
<msg key="Status">Status</msg>
<msg key="Supervisor">Vorgesetzter</msg>
<msg key="Termination_Date">Beendigungsdatum</msg>
<msg key="Termination_Reason">Beendigungsgrund</msg>
<msg key="Users">Benutzer</msg>
<msg key="Work_Phone">Arbeit Telefon</msg>
<msg key="Yes">Ja</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="intranet-hr" package_version="3.0.0" locale="en_US" charset="ISO-8859-1">
<msg key="add_supervisor">add supervisor</msg>
<msg key="Availability_">Availability %</msg>
<msg key="Birthdate">Birthdate</msg>
<msg key="Cell_Phone">Cell Phone</msg>
<msg key="Currency">Currency</msg>
<msg key="Department">Department</msg>
<msg key="Edit">Edit</msg>
<msg key="Email">Email</msg>
<msg key="Employee_Information">Employee Information</msg>
<msg key="Employee_Own_Supervisor">An Employee can't be his own supervisor.</msg>
<msg key="Employee_Status">Employee Status</msg>
<msg key="End_date">End date</msg>
<msg key="Filter_Employees">Filter Employees</msg>
<msg key="Go">Go</msg>
<msg key="Home_Phone">Home Phone</msg>
<msg key="Hourly_Cost">Hourly Cost</msg>
<msg key="Insurance">Insurance</msg>
<msg key="Job_Description">Job Description</msg>
<msg key="Job_Title">Job Title</msg>
<msg key="lt_Employee_Information_">Employee Information of %employee_name%</msg>
<msg key="lt_Employees_without_sup">Employees without supervisors</msg>
<msg key="lt_Error_creating_a_new_">Error creating a new repeating cost item for employee \#%employee_id%:</msg>
<msg key="lt_Error_inserting_emplo">Error inserting employee cost information:</msg>
<msg key="lt_For_the_org_chart_pag">For the org chart page to work, you need to have set up the \&quot;who supervises whom\&quot; relationships so that there is only one person (the CEO) who has no supervisor and no subordinates.</msg>
<msg key="lt_Internal_error_unknow">Internal error: unknown view '%view_name%'</msg>
<msg key="lt_Monthly_Social_Securi">Monthly Social Security</msg>
<msg key="lt_Please_notify_your_sy">Please notify your system administrator.</msg>
<msg key="lt_Recruiting_Test_Resul">Recruiting Test Result:</msg>
<msg key="lt_Salary_Payments_per_Y">Salary Payments per Year</msg>
<msg key="lt_There_are_currently_n">There are currently no entries matching the selected criteria</msg>
<msg key="lt_Voluntary_Termination">Voluntary Termination</msg>
<msg key="lt_You_are_trying_to_acc">You are trying to access a view that has not been defined in the database.</msg>
<msg key="lt_You_dont_have_permiss">You don't have permissions to view this page</msg>
<msg key="lt_You_dont_have_permiss_1">You don't have permissions to view users</msg>
<msg key="lt_You_have_insufficient">You have insufficient privileges to use this page</msg>
<msg key="Monthly_Insurance">Monthly Insurance</msg>
<msg key="Monthly_Others">Monthly Others</msg>
<msg key="Monthly_Salary">Monthly Salary</msg>
<msg key="Name">Name</msg>
<msg key="NDA_Signed">NDA Signed?</msg>
<msg key="No">No</msg>
<msg key="No_Big_Kahuna">No Big Kahuna</msg>
<msg key="Nothing_defined_yet">Nothing defined yet</msg>
<msg key="Other_Costs">Other Costs</msg>
<msg key="Recruiting_Status">Recruiting Status:</msg>
<msg key="Salaries_per_Year">Salaries per Year</msg>
<msg key="Salary">Salary</msg>
<msg key="Salary_Period">Salary Period</msg>
<msg key="Social_Security">Social Security</msg>
<msg key="Social_Security_">Social Security \#</msg>
<msg key="Social_Security_nr">Social Security nr</msg>
<msg key="Start_Date">Start Date</msg>
<msg key="Start_date">Start date</msg>
<msg key="Status">Status</msg>
<msg key="Supervisor">Supervisor</msg>
<msg key="Termination_Date">Termination Date</msg>
<msg key="Termination_Reason">Termination Reason</msg>
<msg key="Users">Users</msg>
<msg key="Work_Phone">Work Phone</msg>
<msg key="Yes">Yes</msg>
</message_catalog>
<?xml version="1.0"?>
<!-- Generated by the OpenACS Package Manager -->
<package key="intranet-hr" url="http://openacs.org/repository/apm/packages/intranet-hr" type="apm_application">
<package-name>Project/Open HR</package-name>
<pretty-plural>Project/Open HR</pretty-plural>
<initial-install-p>f</initial-install-p>
<singleton-p>t</singleton-p>
<auto-mount>intranet-hr</auto-mount>
<version name="3.0.0.0.4" url="http://projop.dnsalias.com/download/apm/intranet-hr-3.0.0.0.4.apm">
<owner url="mailto:fraber@fraber.de">Frank Bergmann</owner>
<summary>Employees, Salaries, OrgChart</summary>
<vendor url="http://www.project-open.com/">Project/Open</vendor>
<description format="text/plain">Human Resources module consisting mainly of the &quot;employee&quot; business object. Employee information include payroll, corporate hierarchy (who manages whom) and demographics.</description>
<provides url="intranet-hr" version="3.0.0"/>
<requires url="intranet-core" version="3.0.0"/>
<requires url="intranet-cost" version="3.0.0"/>
<callbacks>
</callbacks>
<parameters>
<!-- No version parameters -->
</parameters>
</version>
</package>
-- /packages/intranet-hr/sql/oracle/intranet-hr-backup.sql
--
-- Copyright (C) 2004 Project/Open
--
-- This program is free software. You can redistribute it
-- and/or modify it under the terms of the GNU General
-- Public License as published by the Free Software Foundation;
-- either version 2 of the License, or (at your option)
-- any later version. This program is distributed in the
-- hope that it will be useful, but WITHOUT ANY WARRANTY;
-- without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE.
-- See the GNU General Public License for more details.
--
-- @author frank.bergmann@project-open.com
-- 100 im_projects
-- 101 im_project_roles
-- 102 im_customers
-- 103 im_customer_roles
-- 104 im_offices
-- 105 im_office_roles
-- 106 im_categories
--
-- 110 users
-- 111 im_profiles
-- 115 im_employees
--
-- 120 im_freelancers
--
-- 130 im_forums
--
-- 140 im_filestorage
--
-- 150 im_translation
--
-- 160 im_quality
--
-- 170 im_marketplace
--
-- 180 im_hours
--
-- 190 im_invoices
--
-- 200
---------------------------------------------------------
-- Backup Employees
--
delete from im_view_columns where view_id = 107;
delete from im_views where view_id = 107;
insert into im_views (
view_id, view_name, view_type_id, sort_order, view_sql
) values (107, 'im_employees', 1410, 120, '
SELECT
e.*,
cc.cost_center_label as department_label,
im_email_from_user_id(e.employee_id) as employee_email,
im_email_from_user_id(e.supervisor_id) as supervisor_email,
im_category_from_id(e.employee_status_id) as employee_status,
im_email_from_user_id(e.referred_by) as referred_by_email,
im_category_from_id(e.experience_id) as experience,
im_category_from_id(e.source_id) as source,
im_category_from_id(e.original_job_id) as original_job,
im_category_from_id(e.current_job_id) as current_job,
im_category_from_id(e.qualification_id) as qualification
FROM
im_employees e,
im_cost_centers cc
WHERE
e.department_id = cc.cost_center_id
');
delete from im_view_columns where column_id > 10700 and column_id < 10799;
--
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10701,107,NULL,'employee_email','$employee_email','','',1,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10703,107,NULL,'department_label','$department_label','','',3,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10705,107,NULL,'job_title','[ns_urlencode $job_title]','','',5,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10707,107,NULL,'job_description','[ns_urlencode $job_description]','','',7,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10709,107,NULL,'availability','$availability','','',9,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10711,107,NULL,'supervisor_email','$supervisor_email','','',11,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10713,107,NULL,'ss_number','$ss_number','','',13,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10714,107,NULL,'salary','$salary','','',14,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10717,107,NULL,'social_security','$social_security','','',17,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10719,107,NULL,'insurance','$insurance','','',19,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10721,107,NULL,'other_costs','$other_costs','','',21,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10723,107,NULL,'currency','$currency','','',23,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10725,107,NULL,'salary_period','$salary_period','','',25,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10727,107,NULL,'salary_payments_per_year','$salary_payments_per_year',
'','',27,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10729,107,NULL,'dependant_p','$dependant_p','','',29,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10731,107,NULL,'only_job_p','$only_job_p','','',31,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10733,107,NULL,'married_p','$married_p','','',33,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10735,107,NULL,'dependants','$dependants','','',35,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10737,107,NULL,'head_of_household_p','$head_of_household_p',
'','',37,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10739,107,NULL,'birthdate','$birthdate','','',39,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10741,107,NULL,'skills','[ns_urlencode $skills]','','',41,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10743,107,NULL,'first_experience',
'$first_experience','','',43,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10745,107,NULL,'years_experience',
'$years_experience','','',45,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10747,107,NULL,'educational_history',
'[ns_urlencode $educational_history]','','',47,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10749,107,NULL,'last_degree_completed','$last_degree_completed',
'','',49,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10751,107,NULL,'employee_status','$employee_status','','',51,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10753,107,NULL,'termination_reason',
'[ns_urlencode $termination_reason]','','',53,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10755,107,NULL,'voluntary_termination_p',
'$voluntary_termination_p','','',55,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10757,107,NULL,'signed_nda_p','$signed_nda_p','','',57,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10759,107,NULL,'referred_by_email',
'$referred_by_email','','',59,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10761,107,NULL,'experience','$experience','','',61,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10763,107,NULL,'source','$source','','',63,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10765,107,NULL,'original_job','$original_job','','',65,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10767,107,NULL,'current_job','$current_job','','',67,'');
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_where, sort_order, visible_for)
values (10769,107,NULL,'qualification','$qualification','','',69,'');
--
commit;
-- /packages/intranet-hr/sql/common/intranet-hr-create.sql
--
-- Project/Open HR Module, fraber@fraber.de, 030828
-- A complete revision of June 1999 by dvr@arsdigita.com
--
-- Copyright (C) 1999-2004 ArsDigita, Frank Bergmann and others
--
-- This program is free software. You can redistribute it
-- and/or modify it under the terms of the GNU General
-- Public License as published by the Free Software Foundation;
-- either version 2 of the License, or (at your option)
-- any later version. This program is distributed in the
-- hope that it will be useful, but WITHOUT ANY WARRANTY;
-- without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE.
-- See the GNU General Public License for more details.
-- Employee Pipeline State
delete from im_categories where category_id >= 450 and category_id <= 455;
insert into im_categories (category_id, category, category_type) values
(450, 'Potential', 'Intranet Employee Pipeline State');
insert into im_categories (category_id, category, category_type) values
(451, 'Received Test', 'Intranet Employee Pipeline State');
insert into im_categories (category_id, category, category_type) values
(452, 'Failed Test', 'Intranet Employee Pipeline State');
insert into im_categories (category_id, category, category_type) values
(453, 'Approved Test', 'Intranet Employee Pipeline State');
insert into im_categories (category_id, category, category_type) values
(454, 'Active', 'Intranet Employee Pipeline State');
insert into im_categories (category_id, category, category_type) values
(455, 'Past', 'Intranet Employee Pipeline State');
------------------------------------------------------
-- HR Views
--
create or replace view im_prior_experiences as
select category_id as experience_id, category as experience
from im_categories
where category_type = 'Intranet Prior Experience';
create or replace view im_hiring_sources as
select category_id as source_id, category as source
from im_categories
where category_type = 'Intranet Hiring Source';
create or replace view im_job_titles as
select category_id as job_title_id, category as job_title
from im_categories
where category_type = 'Intranet Job Title';
create or replace view im_qualification_processes as
select category_id as qualification_id, category as qualification
from im_categories
where category_type = 'Intranet Qualification Process';
create or replace view im_employee_pipeline_states as
select category_id as state_id, category as state
from im_categories
where category_type = 'Intranet Employee Pipeline State';
-- prompt *** Creating im_views
insert into im_views (view_id, view_name, visible_for) values (55, 'employees_list', 'view_users');
insert into im_views (view_id, view_name, visible_for) values (56, 'employees_view', 'view_users');
-- prompt *** Creating im_view_columns for employees_list
delete from im_view_columns where column_id >= 5500 and column_id < 5599;
insert into im_view_columns (column_id, view_id, group_id, column_name,
column_render_tcl, extra_select, extra_from, extra_where, sort_order, visible_for
) values (5500,55,NULL,'Name',
'"<a href=/intranet/users/view?user_id=$user_id>$name</a>"',
'e.supervisor_id, im_name_from_user_id(e.supervisor_id) as supervisor_name',
'im_employees e',
'u.user_id = e.employee_id',
0,
''
);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5501,55,'Email','"<a href=mailto:$email>$email</a>"',3);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5502,55,'Supervisor',
'"<a href=/intranet/users/view?user_id=$supervisor_id>$supervisor_name</a>"',3);
-- insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
-- sort_order)values (5502,55,'Status','$status','','',4,'');
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5504,55,'Work Phone','$work_phone',6);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5505,55,'Cell Phone','$cell_phone',7);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5506,55,'Home Phone','$home_phone',8);
--
-- commit;
-- prompt *** Creating im_view_columns for employees_view
delete from im_view_columns where column_id >= 5600 and column_id < 5699;
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5600,56,'Department',
'"<a href=${department_url}$department_id>$department_name</a>"',0);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5602,56,'Job Title','$job_title',02);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5604,56,'Job Description','$job_description',04);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5606,56,'Availability %','$availability',06);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5607,56,'Hourly Cost','$hourly_cost_formatted',07);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5608,56,'Supervisor',
'"<a href=${user_url}$supervisor_id>$supervisor_name</a>"',08);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5610,56,'Social Security nr','$ss_number',10);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5612,56,'Salary','$salary_formatted',12);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5614,56,'Social Security','$social_security_formatted',14);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5616,56,'Insurance','$insurance_formatted',16);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5618,56,'Other Costs','$other_costs_formatted',18);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5620,56,'Salary Period','$salary_period',20);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5622,56,'Salaries per Year','$salary_payments_per_year',22);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5624,56,'Birthdate','$birthdate_formatted',24);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5626,56,'Start Date','$start_date_formatted',26);
insert into im_view_columns (column_id, view_id, column_name, column_render_tcl,
sort_order) values (5628,56,'Termination_Date','$end_date_formatted',28);
-- commit;
-- /packages/intranet-hr/sql/oracle/intranet-hr-create.sql
--
-- Project/Open HR Module, fraber@fraber.de, 030828
-- A complete revision of June 1999 by dvr@arsdigita.com
--
-- Copyright (C) 1999-2004 ArsDigita, Frank Bergmann and others
--
-- This program is free software. You can redistribute it
-- and/or modify it under the terms of the GNU General
-- Public License as published by the Free Software Foundation;
-- either version 2 of the License, or (at your option)
-- any later version. This program is distributed in the
-- hope that it will be useful, but WITHOUT ANY WARRANTY;
-- without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE.
-- See the GNU General Public License for more details.
----------------------------------------------------
-- Employees
--
-- Employees is a subclass of Users
-- So according to the AC conventions, there is an
-- additional table *_info which contains the additional
-- fields.
--
prompt *** Creating im_employees
create table im_employees (
employee_id integer
constraint im_employees_pk
primary key
constraint im_employees_id_fk
references parties,
department_id integer
constraint im_employees_department_fk
references im_cost_centers,
job_title varchar(200),
job_description varchar(4000),
-- part_time = 50% availability
availability integer,
supervisor_id integer
constraint im_employees_supervisor_fk
references parties,
ss_number varchar(20),
salary number(12,3),
social_security number(12,3),
insurance number(12,3),
other_costs number(12,3),
currency char(3)
constraint im_employees_currency_fk
references currency_codes,
salary_period varchar(12) default 'month'
constraint im_employees_salary_period_ck
check (salary_period in ('hour','day','week','month','year')),
salary_payments_per_year integer default 12,
--- W2 information
dependant_p char(1)
constraint im_employees_dependant_p_con
check (dependant_p in ('t','f')),
only_job_p char(1)
constraint im_employees_only_job_p_con
check (only_job_p in ('t','f')),
married_p char(1)
constraint im_employees_married_p_con
check (married_p in ('t','f')),
dependants integer,
head_of_household_p char(1)
constraint im_employees_head_of_house_con
check (head_of_household_p in ('t','f')),
birthdate date,
skills varchar(2000),
first_experience date,
years_experience number(5,2),
educational_history varchar(4000),
last_degree_completed varchar(100),
-- employee lifecycle management
employee_status_id integer
constraint im_employees_rec_state_fk
references im_categories,
termination_reason varchar(4000),
voluntary_termination_p char(1) default 'f'
constraint im_employees_vol_term_ck
check (voluntary_termination_p in ('t','f')),
-- did s/he sign non disclosure agreement?
signed_nda_p char(1)
constraint im_employees_conf_p_con
check(signed_nda_p in ('t','f')),
referred_by integer
constraint im_employees_referred_fk
references parties,
experience_id integer
constraint im_employees_experience_fk
references im_categories,
source_id integer
constraint im_employees_source_fk
references im_categories,
original_job_id integer
constraint im_employees_org_job_fk
references im_categories,
current_job_id integer
constraint im_employees_current_job_fk
references im_categories,
qualification_id integer
constraint im_employees_qualification_fk
references im_categories
);
create index im_employees_referred_idx on im_employees(referred_by);
alter table im_employees
add constraint im_employees_superv_ck
check (supervisor_id != employee_id);
-- Select all information for active employees
-- (member of Employees group).
--
create or replace view im_employees_active as
select
u.*,
e.*,
pa.*,
pe.*
from
users u,
parties pa,
persons pe,
im_employees e,
groups g,
group_distinct_member_map gdmm
where
u.user_id = pa.party_id
and u.user_id = pe.person_id
and u.user_id = e.employee_id(+)
and g.group_name = 'Employees'
and gdmm.group_id = g.group_id
and gdmm.member_id = u.user_id
;
-- stuff we need for the Org Chart
-- Oracle will pop a cap in our bitch ass if do CONNECT BY queries
-- on im_users without these indices
create index im_employees_idx1 on im_employees(employee_id, supervisor_id);
create index im_employees_idx2 on im_employees(supervisor_id, employee_id);
prompt *** Creating im_supervises_p
create or replace function im_supervises_p(
v_supervisor_id IN integer,
v_user_id IN integer)
return varchar
is
v_exists_p char;
BEGIN
select decode(count(1),0,'f','t') into v_exists_p
from im_employees
where employee_id = v_user_id
and level > 1
start with employee_id = v_supervisor_id
connect by supervisor_id = PRIOR employee_id;
return v_exists_p;
END im_supervises_p;
/
show errors
-- at given stages in the employee cycle, certain checkpoints
-- must be competed. For example, the employee should receive
-- an offer letter and it should be put in the employee folder
prompt *** Creating im_employee_checkpoints
create sequence im_employee_checkpoint_id_seq;
create table im_employee_checkpoints (
checkpoint_id integer
constraint im_emp_checkp_pk
primary key,
stage varchar(100) not null,
checkpoint varchar(500) not null
);
create table im_emp_checkpoint_checkoffs (
checkpoint_id integer
constraint im_emp_checkpoff_checkp_fk
references im_employee_checkpoints,
checkee integer not null
constraint im_emp_checkpoff_checkee_fk
references parties,
checker integer not null
constraint im_emp_checkpoff_checker_fk
references parties,
check_date date,
check_note varchar(1000),
constraint im_emp_checkpoff_pk
primary key (checkee, checkpoint_id)
);
prompt *** Creating User Freelance Component plugin
-- Show the freelance information in users view page
--
declare
v_plugin integer;
begin
v_plugin := im_component_plugin.new (
plugin_name => 'User Employee Component',
package_name => 'intranet-hr',
page_url => '/intranet/users/view',
location => 'left',
sort_order => 60,
component_tcl =>
'im_employee_info_component \
$user_id \
$return_url \
[im_opt_val employee_view_name]'
);
end;
/
prompt *** Creating OrgChart menu entry
-- Add OrgChart to Users menu
declare
v_user_orgchart_menu integer;
v_user_menu integer;
-- Groups
v_employees integer;
v_accounting integer;
v_senman integer;
v_companies integer;
v_freelancers integer;
v_proman integer;
v_admins integer;
begin
select group_id into v_admins from groups where group_name = 'P/O Admins';
select group_id into v_senman from groups where group_name = 'Senior Managers';
select group_id into v_proman from groups where group_name = 'Project Managers';
select group_id into v_accounting from groups where group_name = 'Accounting';
select group_id into v_employees from groups where group_name = 'Employees';
select group_id into v_companies from groups where group_name = 'Customers';
select group_id into v_freelancers from groups where group_name = 'Freelancers';
select menu_id
into v_user_menu
from im_menus
where label='users';
v_user_orgchart_menu := im_menu.new (
package_name => 'intranet-hr',
name => 'Org Chart',
label => 'users_org_chart',
url => '/intranet-hr/org-chart?company_id=0',
sort_order => 5,
parent_menu_id => v_user_menu
);
acs_permission.grant_permission(v_user_orgchart_menu, v_admins, 'read');
acs_permission.grant_permission(v_user_orgchart_menu, v_senman, 'read');
acs_permission.grant_permission(v_user_orgchart_menu, v_proman, 'read');
acs_permission.grant_permission(v_user_orgchart_menu, v_accounting, 'read');
acs_permission.grant_permission(v_user_orgchart_menu, v_employees, 'read');
end;
/
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');
acs_privilege.add_child('admin', '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');
im_priv_create('view_hr', 'Accounting');
END;
/
commit;
------------------------------------------------------
-- Load common definitions and backup
@../common/intranet-hr-common.sql
@../common/intranet-hr-backup.sql
-- /packages/intranet-hr/sql/oracle/intranet-hr-drop.sql
--
-- Project/Open HR Module, fraber@fraber.de, 030828
-- A complete revision of June 1999 by dvr@arsdigita.com
--
-- Copyright (C) 1999-2004 ArsDigita, Frank Bergmann and others
--
-- This program is free software. You can redistribute it
-- and/or modify it under the terms of the GNU General
-- Public License as published by the Free Software Foundation;
-- either version 2 of the License, or (at your option)
-- any later version. This program is distributed in the
-- hope that it will be useful, but WITHOUT ANY WARRANTY;
-- without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE.
-- See the GNU General Public License for more details.
-----------------------------------------------------
-- Drop menus and components defined by the module
BEGIN
im_menu.del_module(module_name => 'intranet-hr');
im_component_plugin.del_module(module_name => 'intranet-hr');
END;
/
show errors;
-- Delete the employees_list view so that /intranet/users/ is going
-- to show the regular users_list view again.
delete from im_view_columns where view_id >= 55 and view_id <= 59;
delete from im_views where view_id >= 55 and view_id <= 59;
drop table im_emp_checkpoint_checkoffs;
drop table im_employee_checkpoints;
drop sequence im_employee_checkpoint_id_seq;
drop table im_employees;
drop function im_supervises_p;
commit;
-- /packages/intranet-hr/sql/oracle/intranet-hr-create.sql
--
-- Project/Open HR Module, fraber@fraber.de, 030828
-- A complete revision of June 1999 by dvr@arsdigita.com
--
-- Copyright (C) 1999-2004 ArsDigita, Frank Bergmann and others
--
-- This program is free software. You can redistribute it
-- and/or modify it under the terms of the GNU General
-- Public License as published by the Free Software Foundation;
-- either version 2 of the License, or (at your option)
-- any later version. This program is distributed in the
-- hope that it will be useful, but WITHOUT ANY WARRANTY;
-- without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE.
-- See the GNU General Public License for more details.
----------------------------------------------------
-- Employees
--
-- Employees is a subclass of Users
-- So according to the AC conventions, there is an
-- additional table *_info which contains the additional
-- fields.
--
-- prompt *** Creating im_employees
create table im_employees (
employee_id integer
constraint im_employees_pk
primary key
constraint im_employees_id_fk
references parties,
department_id integer
constraint im_employees_department_fk
references im_cost_centers,
job_title varchar(200),
job_description varchar(4000),
-- part_time = 50% availability
availability integer,
supervisor_id integer
constraint im_employees_supervisor_fk
references parties,
ss_number varchar(20),
salary numeric(12,3),
social_security numeric(12,3),
insurance numeric(12,3),
other_costs numeric(12,3),
hourly_cost numeric(12,3),
currency char(3)
constraint im_employees_currency_fk
references currency_codes,
salary_period varchar(12) default 'month'
constraint im_employees_salary_period_ck
check (salary_period in ('hour','day','week','month','year')),
salary_payments_per_year integer default 12,
--- W2 information
dependant_p char(1)
constraint im_employees_dependant_p_con
check (dependant_p in ('t','f')),
only_job_p char(1)
constraint im_employees_only_job_p_con
check (only_job_p in ('t','f')),
married_p char(1)
constraint im_employees_married_p_con
check (married_p in ('t','f')),
dependants integer,
head_of_household_p char(1)
constraint im_employees_head_of_house_con
check (head_of_household_p in ('t','f')),
birthdate timestamptz,
skills varchar(2000),
first_experience timestamptz,
years_experience numeric(5,2),
educational_history varchar(4000),
last_degree_completed varchar(100),
-- employee lifecycle management
employee_status_id integer
constraint im_employees_rec_state_fk
references im_categories,
termination_reason varchar(4000),
voluntary_termination_p char(1) default 'f'
constraint im_employees_vol_term_ck
check (voluntary_termination_p in ('t','f')),
-- did s/he sign non disclosure agreement?
signed_nda_p char(1)
constraint im_employees_conf_p_con
check(signed_nda_p in ('t','f')),
referred_by integer
constraint im_employees_referred_fk
references parties,
experience_id integer
constraint im_employees_experience_fk
references im_categories,
source_id integer
constraint im_employees_source_fk
references im_categories,
original_job_id integer
constraint im_employees_org_job_fk
references im_categories,
current_job_id integer
constraint im_employees_current_job_fk
references im_categories,
qualification_id integer
constraint im_employees_qualification_fk
references im_categories
);
create index im_employees_referred_idx on im_employees(referred_by);
alter table im_employees
add constraint im_employees_superv_ck
check (supervisor_id != employee_id);
-- Select all information for active employees
-- (member of Employees group).
--
create or replace view im_employees_active as
select
u.*,
e.*,
pa.*,
pe.*
from
users u,
parties pa,
persons pe,
im_employees e,
groups g,
group_distinct_member_map gdmm
where
u.user_id = pa.party_id
and u.user_id = pe.person_id
and u.user_id = e.employee_id
and g.group_name = 'Employees'
and gdmm.group_id = g.group_id
and gdmm.member_id = u.user_id
;
-- stuff we need for the Org Chart
-- Oracle will pop a cap in our bitch ass if do CONNECT BY queries
-- on im_users without these indices
create index im_employees_idx1 on im_employees(employee_id, supervisor_id);
create index im_employees_idx2 on im_employees(supervisor_id, employee_id);
-- prompt *** Creating im_supervises_p
create or replace function im_supervises_p (
integer,
integer
)
returns char as '
DECLARE
p_supervisor_id alias for $1; -- supervisor_id
p_user_id alias for $2; -- user_id
v_exists_p char;
BEGIN
select decode(count(1),0,''f'',''t'') into v_exists_p
from im_employees
where employee_id = v_user_id
and level > 1
start with employee_id = v_supervisor_id
connect by supervisor_id = PRIOR employee_id;
return v_exists_p;
END;' language 'plpgsql';
-- at given stages in the employee cycle, certain checkpoints
-- must be competed. For example, the employee should receive
-- an offer letter and it should be put in the employee folder
create sequence im_employee_checkpoint_id_seq;
create table im_employee_checkpoints (
checkpoint_id integer
constraint im_emp_checkp_pk
primary key,
stage varchar(100) not null,
checkpoint varchar(500) not null
);
create table im_emp_checkpoint_checkoffs (
checkpoint_id integer
constraint im_emp_checkpoff_checkp_fk
references im_employee_checkpoints,
checkee integer not null
constraint im_emp_checkpoff_checkee_fk
references parties,
checker integer not null
constraint im_emp_checkpoff_checker_fk
references parties,
check_date timestamptz,
check_note varchar(1000),
constraint im_emp_checkpoff_pk
primary key (checkee, checkpoint_id)
);
-- Show the freelance information in users view page
--
select im_component_plugin__new (
null, -- plugin_id
'acs_object', -- object_type
now(), -- creation_date
null, -- creation_user
null, -- creattion_ip
null, -- context_id
'User Employee Component', -- plugin_name
'intranet-hr', -- package_name
'left', -- location
'/intranet/users/view', -- page_url
null, -- view_name
60, -- sort_order
'im_employee_info_component $user_id $return_url [im_opt_val employee_view_name]'
);
-- prompt *** Creating OrgChart menu entry
-- Add OrgChart to Users menu
create or replace function inline_0 ()
returns integer as '
declare
v_user_orgchart_menu integer;
v_user_menu integer;
-- Groups
v_employees integer;
v_accounting integer;
v_senman integer;
v_customers integer;
v_freelancers integer;
v_proman integer;
v_admins integer;
begin
select group_id into v_admins from groups where group_name = ''P/O Admins'';
select group_id into v_senman from groups where group_name = ''Senior Managers'';
select group_id into v_proman from groups where group_name = ''Project Managers'';
select group_id into v_accounting from groups where group_name = ''Accounting'';
select group_id into v_employees from groups where group_name = ''Employees'';
select group_id into v_customers from groups where group_name = ''Customers'';
select group_id into v_freelancers from groups where group_name = ''Freelancers'';
select menu_id
into v_user_menu
from im_menus
where label=''users'';
v_user_orgchart_menu := im_menu__new (
null, -- menu_id
''acs_object'', -- object_type
now(), -- creation_date
null, -- creation_user
null, -- creation_ip
null, -- context_id
''intranet-hr'', -- package_name
''users_org_chart'', -- label
''Org Chart'', -- name
''/intranet-hr/org-chart?company_id=0'', -- url
5, -- sort_order
v_user_menu, -- parent_menu_id
null -- visible_tcl
);
PERFORM acs_permission__grant_permission(v_user_orgchart_menu, v_admins, ''read'');
PERFORM acs_permission__grant_permission(v_user_orgchart_menu, v_senman, ''read'');
PERFORM acs_permission__grant_permission(v_user_orgchart_menu, v_proman, ''read'');
PERFORM acs_permission__grant_permission(v_user_orgchart_menu, v_accounting, ''read'');
PERFORM acs_permission__grant_permission(v_user_orgchart_menu, v_employees, ''read'');
return 0;
end;' language 'plpgsql';
select inline_0 ();
drop function inline_0 ();
------------------------------------------------------
-- HR Permissions
--
select im_create_profile ('HR Managers','profile');
select acs_privilege__create_privilege('view_hr','View HR','View HR');
select acs_privilege__add_child('admin', 'view_hr');
select im_priv_create('view_hr', 'HR Managers');
select im_priv_create('view_hr', 'P/O Admins');
select im_priv_create('view_hr', 'Senior Managers');
select im_priv_create('view_hr', 'Accounting');
------------------------------------------------------
-- Load common definitions and backup
\i ../common/intranet-hr-common.sql
\i ../common/intranet-hr-backup.sql
-- /packages/intranet-hr/sql/oracle/intranet-hr-drop.sql
--
-- Project/Open HR Module, fraber@fraber.de, 030828
-- A complete revision of June 1999 by dvr@arsdigita.com
--
-- Copyright (C) 1999-2004 ArsDigita, Frank Bergmann and others
--
-- This program is free software. You can redistribute it
-- and/or modify it under the terms of the GNU General
-- Public License as published by the Free Software Foundation;
-- either version 2 of the License, or (at your option)
-- any later version. This program is distributed in the
-- hope that it will be useful, but WITHOUT ANY WARRANTY;
-- without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE.
-- See the GNU General Public License for more details.
-----------------------------------------------------
-- Drop menus and components defined by the module
-- BEGIN
select im_menu__del_module('intranet-hr');
select im_component_plugin__del_module('intranet-hr');
-- END;
-- show errors;
-- Delete the employees_list view so that /intranet/users/ is going
-- to show the regular users_list view again.
delete from im_view_columns where view_id >= 55 and view_id <= 59;
delete from im_views where view_id >= 55 and view_id <= 59;
drop table im_emp_checkpoint_checkoffs;
drop table im_employee_checkpoints;
drop sequence im_employee_checkpoint_id_seq;
drop view im_employees_active;
drop table im_employees;
drop function im_supervises_p(integer, integer);
-- before remove priviliges remove granted permissions
create or replace function inline_revoke_permission (varchar)
returns integer as '
DECLARE
p_priv_name alias for $1;
BEGIN
lock table acs_permissions_lock;
delete from acs_permissions
where privilege = p_priv_name;
delete from acs_privilege_hierarchy
where child_privilege = p_priv_name;
return 0;
end;' language 'plpgsql';
-- begin
select inline_revoke_permission ('view_hr');
select acs_privilege__drop_privilege ('view_hr');
-- commit;
-- delete categories from 450 to 455
delete from im_category_hierarchy where (parent_id >= 3700 and parent_id < 3799) or (child_id >= 3700 and child_id < 3799);
delete from im_categories where category_id >= 3700 and category_id < 3799;
\ No newline at end of file
# /packages/intranet-hr/tcl/intranet-hr-procs.tcl
#
# Copyright (C) 2003-2004 Project/Open
#
# All rights reserved. Please check
# http://www.project-open.com/license/ for details.
ad_library {
Common procedures to implement employee specific functions:
@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
# Some simple extension data for employeers
# ----------------------------------------------------------------------
ad_proc im_employee_info_component { employee_id return_url {view_name ""} } {
Show some simple information about a employeer
} {
if {"" == $view_name} { set view_name "employees_view" }
ns_log Notice "im_employee_info_component: employee_id=$employee_id, view_name=$view_name"
set current_user_id [ad_get_user_id]
set date_format "YYYY-MM-DD"
set number_format "9999990D99"
set department_url "/intranet-cost/cost-centers/new?cost_center_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 read 0
set write 0
set admin 0
im_user_permissions $current_user_id $employee_id view read write admin
ns_log Notice "im_employee_info_component: view=$view, read=$read, write=$write, admin=$admin"
if {!$read} { return "" }
# Check if the current_user is a HR manager
if {![im_permission $current_user_id view_hr]} { return "" }
# Finally: Show this component only for employees
if {![im_user_is_employee_p $employee_id]} { return "" }
# --------------- Select all values --------------------------
set employee_info_exists [db_0or1row employee_info "
select
pe.first_names||' '||pe.last_name as user_name,
p.email,
e.*,
rc.*,
to_char(rc.start_date,:date_format) as start_date_formatted,
to_char(rc.end_date,:date_format) as end_date_formatted,
to_char(e.birthdate,:date_format) as birthdate_formatted,
to_char(salary, :number_format) as salary_formatted,
to_char(hourly_cost, :number_format) as hourly_cost_formatted,
to_char(other_costs, :number_format) as other_costs_formatted,
to_char(insurance, :number_format) as insurance_formatted,
to_char(social_security, :number_format) as social_security_formatted,
u.user_id,
cc.cost_center_name as department_name,
im_name_from_user_id(e.supervisor_id) as supervisor_name
from
users u,
im_employees e,
im_repeating_costs rc,
im_costs ci,
parties p,
persons pe,
im_cost_centers cc
where
pe.person_id = u.user_id
and p.party_id = u.user_id
and u.user_id = ci.cause_object_id
and ci.cost_id = rc.rep_cost_id
and u.user_id = :employee_id
and u.user_id = e.employee_id
and e.department_id = cc.cost_center_id
"]
set view_id [db_string get_view "select view_id from im_views where view_name=:view_name" -default 0]
ns_log Notice "im_employee_info_component: view_id=$view_id"
set column_sql "
select c.column_name,
c.column_render_tcl,
c.visible_for
from im_view_columns c
where c.view_id=:view_id
order by sort_order"
set employee_id $org_employee_id
set employee_html "
<form method=POST action=/intranet-hr/new>
[export_form_vars employee_id return_url]
<table cellpadding=1 cellspacing=1 border=0>
<tr>
<td colspan=2 class=rowtitle align=center>[_ intranet-hr.Employee_Information]</td>
</tr>\n"
set ctr 1
if {$employee_info_exists} {
# if the row makes references to "private Note" and the user isn't
# adminstrator, this row don't appear in the browser.
db_foreach column_list_sql $column_sql {
if {"" == $visible_for || [eval $visible_for]} {
append employee_html "
<tr $td_class([expr $ctr % 2])>
<td>[_ "intranet-hr.[lang::util::suggest_key $column_name]"] &nbsp;</td><td>"
set cmd "append employee_html $column_render_tcl"
eval $cmd
append employee_html "</td></tr>\n"
incr ctr
}
}
} else {
append employee_html "<tr><td colspan=2><i>[_ intranet-hr.Nothing_defined_yet]</i></tr></td>\n"
}
if {$admin } {
append employee_html "
<tr $td_class([expr $ctr % 2])>
<td></td><td><input type=submit value='[_ intranet-hr.Edit]'></td></tr>\n"
}
append employee_html "</table></form>\n"
return $employee_html
return [im_table_with_title "[_ intranet-hr.Employee_Information]" $employee_html]
}
<master src="../../intranet-core/www/master">
<property name="title">Companies</property>
<property name="context">context</property>
<property name="main_navbar_label">user</property>
<%= $filter_html %>
<%= $navbar_html %>
<table width=100% cellpadding=2 cellspacing=2 border=0>
<%= $table_header_html %>
<%= $table_body_html %>
<%= $table_continuation_html %>
</table>
This diff is collapsed.
<master src="../../intranet-core/www/master">
<property name="title">@page_title@</property>
<property name="context">@context;noquote@</property>
<property name="main_navbar_label">user</property>
<h2>@page_title@</h2>
<if @message@ not nil>
<div class="general-message">@message@</div>
</if>
<property name="focus">@focus;noquote@</property>
<formtemplate id="cost"></formtemplate>
This diff is collapsed.
<master src="../../intranet-core/www/master">
<property name="title">Companies</property>
<property name="context">context</property>
<property name="main_navbar_label">user</property>
@page_body@
\ No newline at end of file
# /www/intranet/employees/org-chart.tcl
ad_page_contract {
by philg@mit.edu on July 6, 1999
uses CONNECT BY on the supervisor column in im_employees to query
out the org chart for a company
than one person without a supervisor. We figure the Big Kahuna
is the person with no supervisor AND no subordinates
Changed display style from indented list to nested table.
May 11, 2000
@param starting_user_id if exists: starting user of org chart
@author Mark Dettinger <dettinger@arsdigita.com>
@creation-date
@cvs-id org-chart.tcl,v 3.15.2.8 2000/09/22 01:38:30 kevin Exp
} {
{ starting_user_id:integer "" }
}
set user_id [ad_maybe_redirect_for_registration]
set context_bar [im_context_bar [list /intranet/users/ "Users"] "Org Chart"]
set page_title "[_ intranet-hr.Users]"
set page_focus "im_header_form.keywords"
set user_admin_p [im_is_user_site_wide_or_intranet_admin $user_id]
set return_url [im_url_with_query]
if {![im_permission $user_id view_hr]} {
ad_return_complaint 1 "[_ intranet-hr.lt_You_dont_have_permiss_1]"
return
}
# Need to find the true big kahuna
# Note that the following query requires! that employees also exist in the
# im_employees - basically, until you say This user is supervised by nobody
# or by her, that user won't show up in the query
set big_kahuna_list [db_list kahuna_find "
select
info.employee_id
from
im_employees_active info
where
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 } {
ad_return_error "[_ intranet-hr.No_Big_Kahuna]" "<blockquote>[_ intranet-hr.lt_For_the_org_chart_pag]</blockquote>"
return
}
if { ![exists_and_not_null starting_employee_id] } {
set starting_employee_id [lindex $big_kahuna_list 0]
}
set page_body "<blockquote>\n"
# this is kind of inefficient in that we do a subquery to make
# sure the employee hasn't left the company, but you can't do a
# JOIN with a CONNECT BY
#
# there's a weird case when a manager has left the company.
# we can't just leave him blank because
# it screws the chart up, therefore put in a placeholder "vacant"
#
set last_level 0 ;#level of last employee
set vacant_position ""
set nodes_sql "
select
employee_id,
im_name_from_user_id(employee_id) as employee_name,
ad_group_member_p(employee_id, [im_employee_group_id]) as currently_employed_p
from
im_employees
start with
employee_id = :starting_employee_id
connect by
supervisor_id = PRIOR employee_id"
set bind_vars [ns_set create]
ns_set put $bind_vars starting_employee_id $starting_employee_id
# 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]
# Now pull out the people who don't get included because they
# aren't starting_employee_id and they don't have supervisors
set employee_listing_sql "
select u.employee_id, u.first_names || ' ' || u.last_name as employee_name
from im_employees_active u
where u.employee_id <> :starting_employee_id
and u.supervisor_id is null
order by lower(employee_name)"
set homeless_employees ""
db_foreach employee_listing $employee_listing_sql {
append homeless_employees " <li> <a href=../users/view?[export_url_vars employee_id]>$employee_name</a>"
if { $user_admin_p } {
append homeless_employees " (<a href=admin/update-supervisor?[export_url_vars employee_id return_url]>[_ intranet-hr.add_supervisor]</a>)"
}
append homeless_employees "\n"
}
if { ![empty_string_p $homeless_employees] } {
append page_body "<p><h3>[_ intranet-hr.lt_Employees_without_sup]</h3>
<ul>
$homeless_employees
</ul>
"
}
append page_body "</blockquote>\n"
set page_body "
<BR>
[im_user_navbar "none" "/intranet/users/index" "" "" [list starting_employee_id]]
$page_body
"
db_release_unused_handles
doc_return 200 text/html [im_return_template]
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