summaryrefslogtreecommitdiff
path: root/scripts/employee.pl
diff options
context:
space:
mode:
authoreinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2007-11-25 22:49:51 +0000
committereinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2007-11-25 22:49:51 +0000
commit75bbfc4e3007318afcd8368e091ca3c13c5a3352 (patch)
treecae2406bbb5fe6df32edc9a17c7b9e4728bc0d70 /scripts/employee.pl
parent9e80fcdc9cba524a7407f01c92a0e6188247c7df (diff)
Adding employee workflow scripts
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@1907 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'scripts/employee.pl')
-rw-r--r--scripts/employee.pl205
1 files changed, 205 insertions, 0 deletions
diff --git a/scripts/employee.pl b/scripts/employee.pl
new file mode 100644
index 00000000..bcfea191
--- /dev/null
+++ b/scripts/employee.pl
@@ -0,0 +1,205 @@
+#!/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=> '1' );
+ 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=> '1' );
+ $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=> '1' );
+ _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=>1);
+ 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);
+}
+
+1;