- #!/usr/bin/perl
- =pod
- =head1 NAME
- LedgerSMB::Scripts::employee - LedgerSMB class defining the Controller
- functions, template instantiation and rendering for employee editing and display.
- =head1 SYOPSIS
- This module is the UI controller for the employee DB access; it provides the
- View interface, as well as defines the Save employee.
- Save employee will update or create as needed.
- =head1 METHODS
- =cut
- package LedgerSMB::Scripts::employee;
- use LedgerSMB::Template;
- use LedgerSMB::DBObject::Employee;
- require 'lsmb-request.pl';
- =pod
- =over
- =item get($self, $request, $user)
- Requires form var: id
- Extracts a single employee from the database, using its company ID as the primary
- point of uniqueness. Shows (appropriate to user privileges) and allows editing
- of the employee informations.
- =back
- =cut
- sub get {
-
- my ($request) = @_;
- my $employee = LedgerSMB::DBObject::Employee->new(base => $request, copy => 'all');
-
- $employee->set( entity_class=> '3' );
- my $result = $employee->get();
-
- my $template = LedgerSMB::Template->new( user => $user,
- template => 'contact', language => $user->{language},
- path => 'UI/Contact',
- format => 'HTML');
- $template->render($results);
-
- }
- sub add_location {
- my ($request) = @_;
- my $employee= LedgerSMB::DBObject::Employee->new({base => $request, copy => 'all'});
- $employee->set( entity_class=> '3' );
- $employee->save_location();
- $employee->get();
-
- $employee->get_metadata();
- _render_main_screen($employee);
-
- }
- =pod
- =over
- =item add
- This method creates a blank screen for entering a employee's information.
- =back
- =cut
- sub add {
- my ($request) = @_;
- my $employee= LedgerSMB::DBObject::Employee->new(base => $request, copy => 'all');
- $employee->set( entity_class=> '3' );
- _render_main_screen($employee);
- }
- =pod
- =over
- =item search($self, $request, $user)
- Requires form var: search_pattern
- Directly calls the database function search, and returns a set of all employees
- found that match the search parameters. Search parameters search over address
- as well as employee/Company name.
- =back
- =cut
- sub search {
- my ($request) = @_;
-
- if ($request->type() eq 'POST') {
- # assume it's asking us to do the search, now
-
- my $employee = LedgerSMB::DBObject::Employee->new(base => $request, copy => 'all');
- $employee->set(entity_class=>3);
- my $results = $employee->search($employee->{search_pattern});
- my $template = LedgerSMB::Template->new( user => $user,
- template => 'Contact/employee', language => $user->{language},
- format => 'HTML');
- $template->render($results);
-
- }
- else {
-
- # grab the happy search page out.
-
- my $template = LedgerSMB::Template->new(
- user => $user,
- path => 'UI/Contact' ,
- template => 'employee_search',
- locale => $request->{_locale},
- format => 'HTML');
-
- $template->render();
- }
- }
- =pod
- =over
- =item save($self, $request, $user)
- Saves a employee to the database. The function will update or insert a new
- employee as needed, and will generate a new Company ID for the employee if needed.
- =back
- =cut
- sub save {
-
- my ($request) = @_;
- my $employee = LedgerSMB::DBObject::Employee->new({base => $request});
- $employee->save();
- _render_main_screen($employee);
- }
- sub edit{
- my $request = shift @_;
- my $employee = LedgerSMB::DBObject::Employee->new({base => $request});
- $employee->get();
- _render_main_screen($employee);
- }
- sub _render_main_screen{
- my $employee = shift @_;
- $employee->get_metadata();
- $employee->{creditlimit} = "$employee->{creditlimit}";
- $employee->{discount} = "$employee->{discount}";
- $employee->{script} = "employee.pl";
- my $template = LedgerSMB::Template->new(
- user => $employee->{_user},
- template => 'contact',
- locale => $employee->{_locale},
- path => 'UI/Contact',
- format => 'HTML'
- );
- $template->render($employee);
- }
- sub save_contact {
- my ($request) = @_;
- my $employee = LedgerSMB::DBObject::Employee->new({base => $request});
- $employee->save_contact();
- $employee->get;
- _render_main_screen($employee );
- }
- sub save_bank_account {
- my ($request) = @_;
- my $employee = LedgerSMB::DBObject::Employee->new({base => $request});
- $employee->save_bank_account();
- $employee->get;
- _render_main_screen($employee);
- }
- sub save_notes {
- my ($request) = @_;
- my $employee = LedgerSMB::DBObject::Employee->new({base => $request});
- $employee->save_notes();
- $employee->get();
- _render_main_screen($employee);
- }
-
- eval { do "scripts/custom/employee.pl"};
- 1;
|