=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:

=over

=item new ($LedgerSMB object);

=back

The following methods are passed through to stored procedures via Autoload.

=over

=item save

=item get

=item search

=item list_managers

The above list may grow over time, and may depend on other installed modules.

=back

=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.

=cut

package LedgerSMB::Employee;
use base qw(LedgerSMB::DBObject);
use strict;
our $VERSION = '1.0.0';

sub save {
    my $self = shift;
    
    my $person = shift @{ $self->exec_method (procname => 'person_save', 
        args => [] )};
    
    my $hashref = shift @{ $self->exec_method( procname => "employee_save" ) };
    $self->merge( $hashref, 'id' );
}

sub get {
    my $self = shift;
    my $hashref = shift @{ $self->exec_method( procname => "employee_get" ) };
    $self->merge( $hashref, keys %{$hashref} );
}

sub list_managers {
    my $self = shift;
    $self->{manager_list} =
      $self->exec_method( procname => "employee_list_managers" );
}

sub search {
    my $self = shift;
    $self->{search_results} =
      $self->exec_method( procname => "employee_search" );
}

sub set_location {
    
    my $self = shift @_;
    my $location = shift @_;
    
    my $code = $self->exec_method ( procname => 'employee_set_location', 
        args=>[ $self->{id}, $location->{id} ] );
    
    if ($code) {
        
        # good, it worked.
        
        return 1;        
    }
    return 0;
}

1;