summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LedgerSMB/DBObject/Employee.pm22
-rw-r--r--UI/Contact/contact.css4
-rw-r--r--UI/Contact/contact.html124
-rw-r--r--sql/modules/Person.sql80
4 files changed, 190 insertions, 40 deletions
diff --git a/LedgerSMB/DBObject/Employee.pm b/LedgerSMB/DBObject/Employee.pm
index ddc453a6..af08ed61 100644
--- a/LedgerSMB/DBObject/Employee.pm
+++ b/LedgerSMB/DBObject/Employee.pm
@@ -1,6 +1,6 @@
package LedgerSMB::DBObject::Employee;
-use base qw(LedgerSMB::DBObject::Company);
+use base qw(LedgerSMB::DBObject);
use strict;
my $ENTITY_CLASS = 3;
@@ -9,5 +9,25 @@ sub set_entity_class {
my $self = shift @_;
$self->{entity_class} = $ENTITY_CLASS;
}
+
+sub save {
+ my ($self) = @_;
+ $self->set_entity_class();
+ $self->{entity_id} = $self->exec_method(funcname => 'person_save');
+ $self->exec_method(funcname => 'employee__save');
+ $self->{dbh}->commit;
+}
+
+sub save_location {
+}
+
+sub save_contact {
+}
+
+sub save_bank_account {
+}
+
+sub save_note {
+}
1;
diff --git a/UI/Contact/contact.css b/UI/Contact/contact.css
index e93cd0bd..b1c41d42 100644
--- a/UI/Contact/contact.css
+++ b/UI/Contact/contact.css
@@ -18,3 +18,7 @@ ul.navigation li {
margin-left: 1em;
margin-bottom: 0em;
}
+
+div label {
+ margin-left: 1em;
+}
diff --git a/UI/Contact/contact.html b/UI/Contact/contact.html
index 0f3d6af5..bceea462 100644
--- a/UI/Contact/contact.html
+++ b/UI/Contact/contact.html
@@ -35,13 +35,109 @@
</ul>
</div>
<?lsmb IF entity_class == 3 ?>
+<div id="hr_div" class="container">
+ <div class="listtop"><strong><?lsmb text("$operation Employee") ?></strong></div>
+<form name="hr" action="<?lsmb script ?>" method="post">
+<?lsmb PROCESS input element_data = {
+ type = "hidden"
+ name = "entity_id"
+ value = entity_id
+ } ?>
+<div class="input" id="person_name_div"><?lsmb text('Name:')?>&nbsp;
+<!-- TODO: Add Saluatation -->
+<?lsmb PROCESS input element_data = {
+ label = text('First')
+ name = "first_name"
+ value = first_name
+ type = "text"
+ size = 20
+} ?>
+<?lsmb PROCESS input element_data = {
+ label = text('Middle')
+ name = "middle_name"
+ value = middle_name
+ type = "text"
+ size = 20
+} ?>
+<?lsmb PROCESS input element_data = {
+ label = text('Last')
+ name = "last_name"
+ value = last_name
+ type = "text"
+ size = 20
+} ?>
+</div>
+<div id="job_title_div">
+<!-- Note that the strange # ' constructs are only necessary to help VIM avoid
+problems with multi-word single-quoted constructs in PI tags. -CT -->
+<?lsmb PROCESS input element_data = {
+ label = text('Job Title:')
+ name = "role"
+ value = role
+ type = "text"
+ size = 20
+} # ' ?>
+<?lsmb PROCESS input element_data = {
+ label = text('Sales:')
+ value = 1
+ type = "checkbox"
+ checked = sales
+ name = "sales"
+} ?>
+<?lsmb PROCESS input element_data = {
+ label = text('Employee Number')
+ value = employee_number
+ name = "employee_number"
+ type = "text"
+ size = 20
+} # ' ?>
+<label for="manager_select"><?lsmb text('Manager:') ?></label>
+<select id="manager_select" name="manager_id">
+<?lsmb FOREACH e = employee ?>
+<option value = e.entity_id <?lsmb (manager_id == e.entity_id) ? "SELECTED" : ""?><?lsmb e.name ?></option>
+<?lsmb END ?>
+</select>
+<div>
+<?lsmb PROCESS input element_data = {
+ label = text('DOB:')
+ name = "dob"
+ value = dob
+ type = "text"
+ class = "date"
+ size = 10
+} ?>
+<?lsmb PROCESS input element_data = {
+ label = text('Start Date:')
+ name = "start_date"
+ value = start_date
+ type = "text"
+ class = "date"
+ size = 10
+} # ' ?>
+<?lsmb PROCESS input element_data = {
+ label = text('End Date:')
+ name = "end_date"
+ value = end_date
+ class = "text"
+ type = "text"
+ size = 10
+} # ' ?>
+<div>
+<?lsmb PROCESS button element_data = {
+ text = text('Save')
+ class = "submit"
+ type = "submit"
+ value = "save_employee"
+} ?>
+</div>
+</form>
<?lsmb ELSE ?>
<div class="container" id="customer_div">
<?lsmb SWITCH entity_class
?><?lsmb CASE 1 ?><?lsmb entity_classname = "Vendor"
?><?lsmb CASE 2 ?><?lsmb entity_classname = "Customer"
-?><?lsmb END ?>
-<div class="listtop"><strong><?lsmb text("$operation $entity_classname") ?></strong></div>
+ ?><?lsmb END ?>
+ <div class="listtop"><strong><?lsmb text("$operation $entity_classname") ?></strong></div>
<?lsmb FOREACH n = notes ?>
<div class="entity_note"><?lsmb n.note ?></div>
<?lsmb END ?>
@@ -64,7 +160,7 @@
name = "meta_number",
value = meta_number,
size = "20"
- } ?><br/>
+ } # ' ?><br/>
<table>
<tr>
<td>
@@ -76,7 +172,7 @@
type = "text",
size = "12",
maxlength = "10"
- } ?>
+ } #' ?>
</td>
<td>
<?lsmb PROCESS input element_data = {
@@ -87,7 +183,7 @@
type = "text",
size = "12",
maxlength = "10"
- } ?>
+ } #' ?>
</td>
</tr>
<tr>
@@ -98,7 +194,7 @@
value = creditlimit,
type = "text",
size = "20"
- } ?>
+ } #' ?>
</td>
<td>
<?lsmb PROCESS input element_data = {
@@ -119,7 +215,7 @@
value = taxnumber,
type = "text",
size = "19"
- } ?>
+ } #' ?>
</td>
<td>
<?lsmb PROCESS input element_data = {
@@ -128,7 +224,7 @@
value = gifi_accno,
type = "text",
size = "19"
- } ?>
+ } #' ?>
</td>
</tr>
<tr>
@@ -332,7 +428,7 @@
value = mail_code,
type = "text",
size = "20"
- } ?>
+ } #' ?>
</div>
<div> <!-- TODO: Move to elements.html -CT -->
<label for="country"><?lsmb text('Country:') ?></label>
@@ -348,7 +444,7 @@
value = "add_location"
id = "loc_save_location"
text = text('Save Location')
- } ?>
+ } #' ?>
</div>
</form>
</div>
@@ -403,14 +499,14 @@
value = contact
type = "text"
size = "20"
- } ?>
+ } #' ?>
</div>
<div><?lsmb PROCESS button element_data = {
name = "action",
value = "save_contact",
text = text('Save Contact'),
class = "submit"
- } ?>
+ } #' ?>
</div>
</form>
@@ -456,7 +552,7 @@
name="bic"
value=bic
size=20
- } ?>
+ } #' ?>
</div>
<div><label for="iban">
<?lsmb PROCESS input element_data = {
@@ -465,7 +561,7 @@
name="iban"
value=iban
size=20
- } ?>
+ } #' ?>
</div>
<div><?lsmb PROCESS button element_data = {
name="action"
diff --git a/sql/modules/Person.sql b/sql/modules/Person.sql
index 0426045d..28e3d4e4 100644
--- a/sql/modules/Person.sql
+++ b/sql/modules/Person.sql
@@ -1,9 +1,8 @@
begin;
CREATE OR REPLACE FUNCTION person_save
-
-(in_id integer, in_salutation int,
-in_first_name text, in_last_name text
+(in_entity_id integer, in_salutation_id int,
+in_first_name text, in_middle_name text, in_last_name text
)
RETURNS INT AS $$
@@ -12,41 +11,72 @@ RETURNS INT AS $$
e entity;
loc location;
l_id int;
- per person;
p_id int;
BEGIN
- select * into e from entity where id = in_id and entity_class = 3;
+ select * into e from entity where id = in_entity_id and entity_class = 3;
+ e_id := in_entity_id;
IF NOT FOUND THEN
- RAISE EXCEPTION 'No entity found for ID %', in_id;
+ INSERT INTO entity (name, entity_class)
+ values (in_first_name || ' ' || in_last_name, 3);
+ e_id := currval('entity_id_seq');
+
END IF;
- select * into per FROM person WHERE entity_id = in_id;
-
- IF FOUND THEN
-
- -- do an update
-
- UPDATE person SET
- salutation = in_salutation,
+
+ UPDATE person SET
+ salutation_id = in_salutation_id,
first_name = in_first_name,
- last_name = in_last_name
- WHERE
- entity_id = in_id
- AND
- id = per.id;
-
- ELSE
-
+ last_name = in_last_name,
+ middle_name = in_middle_name
+ WHERE
+ entity_id = in_entity_id;
+ IF FOUND THEN
+ RETURN in_entity_id;
+ ELSE
-- Do an insert
- INSERT INTO person (salutation, first_name, last_name) VALUES
- (in_salutation, in_first_name, in_last_name);
-
+ INSERT INTO person (salutation_id, first_name, last_name, entity_id)
+ VALUES (in_salutation_id, in_first_name, in_last_name, e_id);
+ RETURN e_id;
END IF;
END;
$$ language plpgsql;
+CREATE OR REPLACE FUNCTION employee__save
+(in_entity_id int, in_start_date date, in_end_date date, in_dob date,
+ in_role text, in_ssn text, in_sales bool, in_manager_id int, in_employee_number text)
+RETURNS int AS $$
+DECLARE out_id INT;
+BEGIN
+ UPDATE entity_employee
+ SET startdate = in_start_date,
+ enddate = in_end_date,
+ dob = in_dob,
+ role = in_role,
+ ssn = in_ssn,
+ manager_id = in_manager_id,
+ employeenumber = in_employee_number,
+ person_id = (select id FROM person
+ WHERE entity_id = in_entity_id)
+ WHERE entity_id = in_entity_id;
+
+ out_id = in_entity_id;
+
+ IF NOT FOUND THEN
+ INSERT INTO entity_employee
+ (startdate, enddate, dob, role, ssn, manager_id,
+ employeenumber, entity_id, person_id)
+ VALUES
+ (in_start_date, in_end_date, in_dob, in_role, in_ssn,
+ in_manager_id, in_employee_number, in_entity_id,
+ (SELECT id FROM person
+ WHERE entity_id = in_entity_id));
+ RETURN in_entity_id;
+ END IF;
+END;
+$$ LANGUAGE PLPGSQL;
+
commit;