From 3f116c01b5fdce5770258e5a35b82f5d05e8c99a Mon Sep 17 00:00:00 2001 From: einhverfr Date: Thu, 8 Mar 2007 03:22:22 +0000 Subject: 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 --- LedgerSMB/Employee.pm | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 LedgerSMB/Employee.pm (limited to 'LedgerSMB/Employee.pm') 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"); +} -- cgit v1.2.3