diff options
author | aurynn_cmd <aurynn_cmd@4979c152-3d1c-0410-bac9-87ea11338e46> | 2007-11-15 23:10:31 +0000 |
---|---|---|
committer | aurynn_cmd <aurynn_cmd@4979c152-3d1c-0410-bac9-87ea11338e46> | 2007-11-15 23:10:31 +0000 |
commit | d340ccd5ecbb731c273a07876ad0dfc0a9b33379 (patch) | |
tree | 15acb5cc66a14c787ef49a6bab8910cdca0f82c9 /LedgerSMB | |
parent | c366b783a65dfdd7dadb105962ae0807cddaa6b9 (diff) |
Significant work on the Entity and Administrative code. It's buggy, so please test, etc. thoroughly.
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@1869 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'LedgerSMB')
-rw-r--r-- | LedgerSMB/DBObject/Admin.pm | 24 | ||||
-rw-r--r-- | LedgerSMB/DBObject/Customer.pm | 54 | ||||
-rw-r--r-- | LedgerSMB/DBObject/User.pm | 38 | ||||
-rw-r--r-- | LedgerSMB/Employee.pm | 5 | ||||
-rw-r--r-- | LedgerSMB/Entity.pm | 43 | ||||
-rw-r--r-- | LedgerSMB/Vendor.pm | 46 |
6 files changed, 153 insertions, 57 deletions
diff --git a/LedgerSMB/DBObject/Admin.pm b/LedgerSMB/DBObject/Admin.pm index 51620c47..6b54a7d4 100644 --- a/LedgerSMB/DBObject/Admin.pm +++ b/LedgerSMB/DBObject/Admin.pm @@ -5,6 +5,7 @@ use base LedgerSMB::DBObject; use LedgerSMB::Location; use LedgerSMB::DBObject::Employee; use LedgerSMB::Contact; +use LedgerSMB::Entity; #[18:00:31] <aurynn> I'd like to split them employee/user and roles/prefs #[18:00:44] <aurynn> edit/create employee and add user features if needed. @@ -18,19 +19,27 @@ sub save_employee { my $self = shift @_; - my $entity_id = shift @{ $self->exec_method( procname => "save_user" ) }; - $self->merge($entity_id); + my $entity = LedgerSMB::DBObject::Entity->new(base=>$self, copy=>'none'); - my $person = LedgerSMB::DBObject::Person->new(base=>$self, copy=>'list', + $entity->set(name=>$self->{first_name}." ".$self->{last_name}); + $entity->save(); + + $self->{entity_id} = $entity->{id}; + + + my $user_id = shift @{ $self->exec_method( procname => "admin_save_user" ) }; + $self->merge($user_id); + + my $person = LedgerSMB::DBObject::Person->new( base=>$self, copy=>'list', merge=>[ 'salutation', 'first_name', 'last_name', ] ); - my $employee = LedgerSMB::DBObject::Employee->new(base=>$self, copy=>'list', + my $employee = LedgerSMB::DBObject::Employee->new( base=>$self, copy=>'list', merge=>[ - '', + 'salutation', 'first_name', 'last_name', 'employeenumber', @@ -76,16 +85,15 @@ sub save_employee { 'is_a_user' ] ); - $user->get(); $user->save(); } -sub save_roles { +sub save_roles_preferences { my $self = shift @_; - my $user = LedgerSMB::DBObject::User->new(base=>$self, copy=>'all'); + my $user = LedgerSMB::DBObject::User->new( base=>$self, copy=>'all' ); my $roles = $self->exec_method( procname => "admin_all_roles" ); my $user_roles = $self->exec_method(procname => "admin_get_user_roles", args=>[ $self->{ username } ] ); diff --git a/LedgerSMB/DBObject/Customer.pm b/LedgerSMB/DBObject/Customer.pm index ef25c4a1..36b4ed62 100644 --- a/LedgerSMB/DBObject/Customer.pm +++ b/LedgerSMB/DBObject/Customer.pm @@ -1,33 +1,47 @@ package LedgerSMB::DBObject::Customer; -use base qw(LedgerSMB); +use base qw(LedgerSMB::DBObject::Company); use LedgerSMB::DBObject; +use LedgerSMB::Entity; -sub save_to_db { +sub save { + + # this is doing way too much. my $self = shift @_; - my $id; - if ($self->{id} >= 1) { - $id = $self->{id}; + my $entity; + + # this is a fairly effective way of telling if we need to create a new + # entity or not. + + if (!$self->{entity_id}) { + + $entity = LedgerSMB::Entity->new(base=>$request); } else { - $id = $self->next_customer_id(); + + $entity = LedgerSMB::Entity->get(id=>$self->{entity_id}); } - $id = $self->save($id, $self->{discount}, $self->{tax_included}, - $self->{creditlimit}, $self->{terms}, $self->{customernumber}, - $self->{cc}, $self->{bcc}, $self->{business_id}, $self->{language}, - $self->{pricegroup}, $self->{currency}, $self->{startdate}, - $self->{enddate} - ); - - # Undef in the created field causes the system to use now() as the current - # creation date. - $self->location_save( - $id, 1, $self->{line_one}, $self->{line_two}, $self->{line_three}, - $self->{city_province}, $self->{mailing_code}, $self->{country}, undef + + $entity->set(name=> $reqeust->{first_name}." ".$request->{last_name} ); + $entity->set(entity_class=>2); + + $self->set(entity_id=>$entity->{id}); + $self->set(entity_class=> 2); + + $entity->save(); + if (!self->{entity_id}) { - ); - return $id; + $self->{entity_id} = $entity->{id}; + } + $self->SUPER::save(); + + return $self->{id}; +} + +sub search { + + } 1;
\ No newline at end of file diff --git a/LedgerSMB/DBObject/User.pm b/LedgerSMB/DBObject/User.pm index 62ae4e0b..3486fbd6 100644 --- a/LedgerSMB/DBObject/User.pm +++ b/LedgerSMB/DBObject/User.pm @@ -8,13 +8,13 @@ sub save { my $user = $self->get(); - if ($user->{id} && $self->{is_a_user}) { + if ( $user->{id} && $self->{is_a_user} ) { # doesn't check for the password - that's done in the sproc. - $self->{id} = @{ $self->exec_method(procname=>'admin_save_user', - args=>[$user->{id}, $self->{username}, $self->{password}] ) }[0]; - else { - + $self->{id} = shift @{ $self->exec_method(procname=>'admin_save_user', + args=>[$user->{id}, $self->{username}, $self->{password}] ) }; + if (!$self->{id}) { + return 0; } } @@ -26,6 +26,12 @@ sub save { return $self->remove(); } + elsif ($self->{is_a_user}) { + + # No user ID, meaning, creating a new one. + $self->{id} = shift @{ $self->exec_method(procname=>'admin_save_user', + args=>[undef, $self->{username}, $self->{password}] ) }; + } return 1; } @@ -49,4 +55,26 @@ sub remove { return $code->[0]; } +sub save_prefs { + + my $self = shift @_; + + my $pref_id = $self->exec_method(procname=>"admin_save_preferences", + args=>[ + 'language', + 'stylesheet', + 'printer', + 'dateformat', + 'numberformat' + ] + ); +} + +sub get_all_users { + + my $self = shift @_; + + $self->{users} = $self->exec_method( procname=>"user_get_all_users" ); +} + 1;
\ No newline at end of file diff --git a/LedgerSMB/Employee.pm b/LedgerSMB/Employee.pm index 59a550f2..e792aa84 100644 --- a/LedgerSMB/Employee.pm +++ b/LedgerSMB/Employee.pm @@ -48,10 +48,7 @@ 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' ); } diff --git a/LedgerSMB/Entity.pm b/LedgerSMB/Entity.pm new file mode 100644 index 00000000..4c01b804 --- /dev/null +++ b/LedgerSMB/Entity.pm @@ -0,0 +1,43 @@ +package LedgerSMB::Entity; + +use base qw/LedgerSMB::DBObject/; + +sub save { + + my $self = shift @_; + + my $id = @{ $self->exec_method(procname=>'entity_save', + args=>[ + $self->{name}, + $self->{entity_class}, + ] + )}; + + $self->{id} = shift @{ $id }; + return $self->{id}; +} + +sub get { + + my $self = shift @_; + + my $hashref = $self->exec_method(procname=>'entity_get', args=>[$self->{id}]); + $self->merge($hashref); + return $self->{id}; + +} + +sub search { + + # Shouldn't really be necessary.. + + # anyway, Search on name. + my $self = shift @_; + + my @list = @{ $self->exec_method( procname=>'entity_search', + args=>[ + $self->{name} + ] + ) }; +} +1;
\ No newline at end of file diff --git a/LedgerSMB/Vendor.pm b/LedgerSMB/Vendor.pm index 52aa4944..fe58b79f 100644 --- a/LedgerSMB/Vendor.pm +++ b/LedgerSMB/Vendor.pm @@ -1,33 +1,39 @@ package LedgerSMB::DBObject::Vendor; -use base qw(LedgerSMB); +use base qw(LedgerSMB::DBObject::Company); use LedgerSMB::DBObject; -sub save_to_db { - +sub save { my $self = shift @_; - my $id; - if ($self->{id} >= 1) { - $id = $self->{id}; + my $entity; + + # this is a fairly effective way of telling if we need to create a new + # entity or not. + + if (!$self->{entity_id}) { + + $entity = LedgerSMB::Entity->new(base=>$request); } else { - $id = $self->next_vendor_id(); + + $entity = LedgerSMB::Entity->get(id=>$self->{entity_id}); } - $id = $self->save($id, $self->{discount}, $self->{tax_included}, - $self->{creditlimit}, $self->{terms}, $self->{vendornumber}, - $self->{cc}, $self->{bcc}, $self->{business_id}, $self->{language}, - $self->{pricegroup}, $self->{currency}, $self->{startdate}, - $self->{enddate} - ); - # Undef in the created field causes the system to use now() as the current - # creation date. - $self->location_save( - $id, 1, $self->{line_one}, $self->{line_two}, $self->{line_three}, - $self->{city_province}, $self->{mailing_code}, $self->{country}, undef + $entity->set(name=> $reqeust->{first_name}." ".$request->{last_name} ); + $entity->set(entity_class=>2); + + $self->set(entity_id=>$entity->{id}); + $self->set(entity_class=> 1); + + $entity->save(); + if (!self->{entity_id}) { - ); - return $id; + $self->{entity_id} = $entity->{id}; + } + $self->SUPER::save(); + + return $self->{id}; + } 1;
\ No newline at end of file |