summaryrefslogtreecommitdiff
path: root/LedgerSMB/Employee.pm
diff options
context:
space:
mode:
authoreinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2007-03-08 03:22:22 +0000
committereinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2007-03-08 03:22:22 +0000
commit3f116c01b5fdce5770258e5a35b82f5d05e8c99a (patch)
tree89c73ba47772d1871899c4836d86fdcfec1f59b5 /LedgerSMB/Employee.pm
parente3938391654168316f393f55a688df29a9a38c48 (diff)
More ORM changes and HR rewrite
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@861 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'LedgerSMB/Employee.pm')
-rw-r--r--LedgerSMB/Employee.pm84
1 files changed, 84 insertions, 0 deletions
diff --git a/LedgerSMB/Employee.pm b/LedgerSMB/Employee.pm
new file mode 100644
index 00000000..007b44d5
--- /dev/null
+++ b/LedgerSMB/Employee.pm
@@ -0,0 +1,84 @@
+=head1 NAME
+
+LedgerSMB::Employee - LedgerSMB class for managing Employees
+
+=head1 SYOPSIS
+
+This module creates object instances based on LedgerSMB's in-database ORM.
+
+=head1 METHODS
+
+The following method is static:
+=item new ($LedgerSMB object);
+
+=item merge ($hashref, @attrs)
+copies @attrs from $hashref to $self.
+
+The following methods are passed through to stored procedures via Autoload.
+=item save
+=item get
+=item search
+=item list_managers
+
+The above list may grow over time, and may depend on other installed modules.
+
+=head1 Copyright (C) 2007, The LedgerSMB core team.
+This file is licensed under the Gnu General Public License version 2, or at your
+option any later version. A copy of the license should have been included with
+your software.
+
+=back
+
+=cut
+
+package LedgerSMB::Employee;
+use LedgerSMB;
+use LedgerSMB::DBObject;
+@ISA = (LedgerSMB, LedgerSMB::DBObject);
+
+sub AUTOLOAD {
+ my $procname = "employee_$LedgerSMB::Employee::Autoload";
+ $self->exec_method($procname);
+}
+
+sub new {
+ my $lsmb = shift @_;
+ if (! $lsmb->isa(LedgerSMB)){
+ $self->error("Employee called without LedgerSMB object arg");
+ my $self = {};
+ for $attr (keys $lsmb){
+ $self->{$attr} = $lsmb->{$attr};
+ }
+ bless $self;
+}
+
+
+sub merge {
+ my $self = shift @_;
+ my $src = shift @_;
+ for $arg (@_){
+ $self->{$arg} = $src->{$arg};
+ }
+}
+
+sub save {
+ my $hashref = shift ($self->exec_method("employee_save"));
+ $self->merge($hashref, 'id');
+}
+
+sub get {
+ my $hashref = shift ($self->exec_method("employee_get"));
+ $self->merge($hashref, keys $hashref);
+}
+
+sub delete {
+ $self->exec_method("employee_delete");
+}
+
+sub list_managers {
+ $self->{manager_list} = $self->exec_method("employee_list_managers");
+}
+
+sub search {
+ $self->{search_results} = $self->exec_method("employee_search");
+}