summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraurynn_cmd <aurynn_cmd@4979c152-3d1c-0410-bac9-87ea11338e46>2008-09-17 23:22:02 +0000
committeraurynn_cmd <aurynn_cmd@4979c152-3d1c-0410-bac9-87ea11338e46>2008-09-17 23:22:02 +0000
commit9e2e27bda4a44c0303cea5bc774d566e2e9f40df (patch)
tree3d991af2d844ed9940cf78085252454e8c7f5419
parentc4ff29592269fdc248c0a27736dcad1227c3a998 (diff)
Further fixes to Reconciliation, the new Admin interface, and a small change to Company.sql
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@2327 4979c152-3d1c-0410-bac9-87ea11338e46
-rw-r--r--LedgerSMB/Admin.pm7
-rw-r--r--LedgerSMB/DBObject.pm26
-rw-r--r--LedgerSMB/DBObject/Admin.pm14
-rw-r--r--LedgerSMB/DBObject/User.pm55
-rw-r--r--UI/Admin/edit_user.html116
-rw-r--r--UI/Admin/main.html8
-rw-r--r--scripts/admin.pl15
-rw-r--r--sql/modules/Company.sql1
-rw-r--r--sql/modules/Employee.sql4
-rw-r--r--sql/modules/Person.sql4
-rw-r--r--sql/modules/admin.sql8
11 files changed, 130 insertions, 128 deletions
diff --git a/LedgerSMB/Admin.pm b/LedgerSMB/Admin.pm
index 98a466bf..d2c303fd 100644
--- a/LedgerSMB/Admin.pm
+++ b/LedgerSMB/Admin.pm
@@ -192,11 +192,4 @@ sub get_entire_user {
return $user;
}
-sub get_roles {
-
- my $self = shift @_;
-
- return $self->exec_method(funcname=>'get_roles',args=>[$self->{company}]);
-}
-
1; \ No newline at end of file
diff --git a/LedgerSMB/DBObject.pm b/LedgerSMB/DBObject.pm
index f7f16c7d..de14b2e3 100644
--- a/LedgerSMB/DBObject.pm
+++ b/LedgerSMB/DBObject.pm
@@ -125,24 +125,28 @@ sub exec_method {
my @proc_args;
if ( !$ref->{proname} ) { # no such function
-
+ # If the function doesn't exist, $funcname gets zeroed?
$self->error( "No such function: $funcname");
# die;
}
$ref->{pronargs} = 0 unless defined $ref->{pronargs};
-
- @proc_args = $self->_parse_array($args);
- if (@proc_args) {
- for my $arg (@proc_args) {
- if ( $arg =~ s/^in_// ) {
- push @call_args, $self->{$arg};
+ # If the user provided args..
+ if (length(@in_args) == 0) {
+ @proc_args = $self->_parse_array($args);
+ if (@proc_args) {
+ for my $arg (@proc_args) {
+ if ( $arg =~ s/^in_// ) {
+ push @call_args, $self->{$arg};
+ }
}
}
+ for (@in_args) { push @call_args, $_ } ;
+ $self->{call_args} = \@call_args;
+ return $self->call_procedure( procname => $funcname, args => \@call_args );
+ }
+ else {
+ return $self->call_procedure( procname => $funcname, args => \@in_args );
}
-
- for (@in_args) { push @call_args, $_ } ;
- $self->{call_args} = \@call_args;
- return $self->call_procedure( procname => $funcname, args => \@call_args );
}
sub run_custom_queries {
diff --git a/LedgerSMB/DBObject/Admin.pm b/LedgerSMB/DBObject/Admin.pm
index 52e1d8b3..e6e519ac 100644
--- a/LedgerSMB/DBObject/Admin.pm
+++ b/LedgerSMB/DBObject/Admin.pm
@@ -241,9 +241,15 @@ sub get_salutations {
sub get_roles {
- # These are direct, assignable roles.
- my $self = shift;
-
- return $self->exec_method( procname => "admin__all_roles" );
+ my $self = shift @_;
+# print STDERR "attempting to get roles";
+ my @s_rows = $self->call_procedure(procname=>'admin__get_roles',args=>[$self->{company}]);
+ my @rows;
+ for my $role (@s_rows) {
+ my $rolname = $role->{'admin__get_roles'};
+ $rolname =~ s/lsmb_ledgersmb_13__//gi;
+ push @rows, $rolname;
+ }
+ return \@rows;
}
1;
diff --git a/LedgerSMB/DBObject/User.pm b/LedgerSMB/DBObject/User.pm
index af02e7ff..18bfca9a 100644
--- a/LedgerSMB/DBObject/User.pm
+++ b/LedgerSMB/DBObject/User.pm
@@ -40,36 +40,53 @@ sub get {
my $self = shift @_;
my $id = shift;
- $self->{user} = @{ $self->exec_method(
+ my @users = $self->exec_method(
funcname=>'admin__get_user',
args=>[$id]
- )
- }[0];
- $self->{pref} = @{ $self->exec_method(
+ );
+ $self->{user} = $users[0];
+ my @prefs = $self->exec_method(
funcname=>'admin__user_preferences',
args=>[$id]
- )
- }[0];
- $self->{person} = @{ $self->exec_method(
- funcname=>'admin__user_preferences',
- args=>[$self->{user}->{entity_id}]
- )
- }[0];
- $self->{employee} = @{ $self->exec_method(
+ );
+ $self->{pref} = $prefs[0];
+# $self->{person} = @{ $self->exec_method(
+# funcname=>'admin__user_preferences',
+# args=>[$self->{user}->{entity_id}]
+# )
+# }[0];
+ my @emp = $self->exec_method(
funcname=>'employee__get',
- args=>[$id]
- )
- }[0];
- $self->{entity} = @{ $self->exec_method(
+ args=>[$self->{user}->{entity_id}]
+ );
+ $self->{employee} = $emp[0];
+ my @ent = $self->exec_method(
funcname=>'entity__get_entity',
args=>[ $self->{user}->{entity_id} ]
- )
- }[0];
- $self->{roles} = $self->exec_method(
+ );
+ $self->{entity} = $ent[0];
+ my @roles = $self->exec_method(
funcname=>'admin__get_roles_for_user',
args=>[$id]
);
+ # Now, location and stuff.
+ my @loc = $self->exec_method(
+ funcname=>'person__list_locations',
+ args=>[ $self->{user}->{entity_id} ]
+ );
+ $self->{location} = \@loc;
+ my @contacts = $self->exec_method(
+ funcname=>"person__list_contacts",
+ args=>[$self->{user}->{entity_id} ]
+ );
+ my @rolstore;
+
+ for my $role (@roles) {
+ push @rolstore, $role->{'admin__get_roles_for_user'}; # Only one key=>value pair
+ }
+ $self->{roles} = \@rolstore;
+ print STDERR "Got all user information";
#$user->{user} = $u->get($id);
#$user->{pref} = $u->preferences($id);
diff --git a/UI/Admin/edit_user.html b/UI/Admin/edit_user.html
index 4602f8fa..71b86226 100644
--- a/UI/Admin/edit_user.html
+++ b/UI/Admin/edit_user.html
@@ -1,8 +1,8 @@
<div id="modify_user">
<font size="15">
<strong>
- <?lsmb IF user.username ?>
- Edit User <?lsmb user.username ?>
+ <?lsmb IF user.user.username ?>
+ Editing User <?lsmb user.user.username ?>
<?lsmb ELSE?>
New User
<?lsmb END?>
@@ -26,28 +26,28 @@
<tr>
<td>First Name</td>
<td>
- <input type="textarea" name="first_name" value="<?lsmb user.first_name?>"/>
+ <input type="textarea" name="first_name" value="<?lsmb user.employee.first_name?>"/>
</td>
</tr>
<tr>
<td>Last Name</td>
<td>
- <input type="textarea" name="last_name" value="<?lsmb user.last_name?>"/>
+ <input type="textarea" name="last_name" value="<?lsmb user.employee.last_name?>"/>
</td>
</tr>
<tr>
<td>Employee #</td>
<td>
- <input type="textarea" name="employeenumber" value="<?lsmb user.employeenumber?>"/>
+ <input type="textarea" name="employeenumber" value="<?lsmb user.employee.employeenumber?>"/>
</td>
</tr>
<hr/>
- <?lsmb UNLESS user.username?>
+ <?lsmb UNLESS user.user.username?>
<tr>
<td>Username</td>
<td>
- <input type="textarea" name="username" value="<?lsmb user.last_name?>"/>
+ <input type="textarea" name="username" value="<?lsmb user.user.username?>"/>
</td>
</tr>
<?lsmb END?>
@@ -65,83 +65,63 @@
<input type="textarea" name="companyname" value="<?lsmb user.companyname?>"/>
</td>
</tr>
+
+
<tr>
<td>
- Address
- </td>
- <td>
- <input type="textarea" name="address1" value="<?lsmb user.address1?>"/>
- </td>
- </tr>
- <tr>
- <td></td>
- <td>
- <input type="textarea" name="address2" value="<?lsmb user.address2?>"/>
+ Address
</td>
- </tr>
- <tr>
- <td></td>
<td>
- <input type="textarea" name="address3" value="<?lsmb user.address3?>"/>
+ City
</td>
- </tr>
- <tr>
- <td>City</td>
<td>
- <input type="textarea" name="city" value="<?lsmb user.city?>"/>
+ State/Province
</td>
- </tr>
- <tr>
- <td>City</td>
<td>
- <input type="textarea" name="city" value="<?lsmb user.city?>"/>
+ Zip/Postal Code
</td>
- </tr>
- <tr>
- <td>State/Province</td>
<td>
- <input type="textarea" name="state" value="<?lsmb user.state?>"/>
+ Country
</td>
</tr>
- <tr>
- <td>Zip/Postal code</td>
- <td>
- <input type="textarea" name="zipcode" value="<?lsmb user.zipcode?>"/>
- </td>
- </tr>
- <tr>
- <td>Country</td>
- <td>
- <input type="textarea" name="country" value="<?lsmb user.city?>"/>
- </td>
- </tr>
+ <?lsmb FOR location IN user.locations ?>
+
+ <tr>
+ <td>
+ <input type="textarea" name="address1" value="<?lsmb location.lineone?>"/>
+ <input type="textarea" name="address2" value="<?lsmb location.linetwo?>"/>
+ <input type="textarea" name="address3" value="<?lsmb location.linethree?>"/>
+ </td>
+ <td>
+ <input type="textarea" name="city" value="<?lsmb location.city?>"/>
+ </td>
+ <td>
+ <input type="textarea" name="state" value="<?lsmb location.state?>"/>
+ </td>
+ <td>
+ <input type="textarea" name="zipcode" value="<?lsmb location.zipcode?>"/>
+ </td>
+ <td>
+ <input type="textarea" name="country" value="<?lsmb location.country?>"/>
+ </td>
+ </tr>
+
+ <?lsmb END?>
+
<tr>
<td><br/></td>
<td><hr/></td>
</tr>
- <tr>
- <td>Home Phone</td>
- <td>
- <input type="textarea" name="homephone" value="<?lsmb user.homephone?>"/>
- </td>
- </tr>
-
- <tr>
- <td>Work Phone</td>
- <td>
- <input type="textarea" name="workphone" value="<?lsmb user.workphone?>"/>
- </td>
- </tr>
-
- <tr>
- <td>Email</td>
- <td>
- <input type="textarea" name="e_mail" value="<?lsmb user.e_mail?>"/>
- </td>
- </tr>
+ <?lsmb FOR contact IN user.contacts?>
+
+ <tr>
+ <td><?lsmb contact.class?></td>
+ <td><?lsmb contact.contact?></td>
+ </tr>
+ <?lsmb END?>
</table>
@@ -149,12 +129,12 @@
<!-- Groups section -->
<tr>
- <?lsmb FOREACH group IN groups ?>
- <?lsmb IF loop.count % 8 == 0?>
+ <?lsmb FOREACH role IN roles ?>
+ <?lsmb IF loop.count % 2 == 0?>
</tr>
<tr>
<?lsmb END?>
- <td><input type="checkbox" name="<?lsmb loop.index?>" value="1"/><?lsmb group.rolname?></td>
+ <td><input type="checkbox" name="<?lsmb loop.index?>" value="1"/><?lsmb role?></td>
<?lsmb END?>
</tr>
</table>
diff --git a/UI/Admin/main.html b/UI/Admin/main.html
index 219e70e4..96c90db7 100644
--- a/UI/Admin/main.html
+++ b/UI/Admin/main.html
@@ -13,7 +13,6 @@
<table>
<tr>
<td></td>
- <td>User ID</td>
<td>Username</td>
<td>Active</td>
<td>Date Added</td>
@@ -24,12 +23,9 @@
<tr>
<td></td>
<td>
- <a href="admin.pl?action=edit_user&amp;user=<?lsmb user.id?>">
- <?lsmb user.id?>
- </a>
- </td>
- <td>
+ <a href="admin.pl?action=edit_user&amp;user_id=<?lsmb user.id?>">
<?lsmb user.username?>
+ </a>
</td>
<td>
<?lsmb user.active?>
diff --git a/scripts/admin.pl b/scripts/admin.pl
index 9db47f88..7ba5a40e 100644
--- a/scripts/admin.pl
+++ b/scripts/admin.pl
@@ -63,9 +63,9 @@ sub edit_user {
my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
$user->get($request->{user_id});
-
- my $all_roles = $admin->get_roles();
+ my @all_roles = $admin->get_roles();
+
my $template = LedgerSMB::Template->new(
user => $user,
template => 'Admin/edit_user',
@@ -82,16 +82,21 @@ sub edit_user {
{
user=>$admin->get_entire_user(),
roles=>$all_roles,
- user_roles=>$admin->get_user_roles($request->{username})
+ user_roles=>$admin->get_user_roles($request->{username}),
+ salutations=>$admin->get_salutations(),
}
);
}
else {
+# print STDERR Dumper($user);
+# print STDERR Dumper(@all_roles);
+# print STDERR Dumper($user->{roles});
$template->render(
{
user=>$user,
- roles=>$all_roles,
- user_roles=>$admin->get_user_roles($request->{user})
+ roles=>@all_roles,
+ user_roles=>$user->{roles},
+ salutations=>$admin->get_salutations(),
}
);
}
diff --git a/sql/modules/Company.sql b/sql/modules/Company.sql
index 7d9dd747..a102fa1c 100644
--- a/sql/modules/Company.sql
+++ b/sql/modules/Company.sql
@@ -463,7 +463,6 @@ $$ LANGUAGE PLPGSQL;
CREATE TYPE contact_list AS (
class text,
class_id int,
- description text,
contact text
);
diff --git a/sql/modules/Employee.sql b/sql/modules/Employee.sql
index 78920ea6..ae2efc86 100644
--- a/sql/modules/Employee.sql
+++ b/sql/modules/Employee.sql
@@ -17,13 +17,13 @@ returns int AS $$
select * into e from entity where id = in_entity and entity_class = 3;
IF NOT FOUND THEN
- RAISE EXCEPTION 'No entity found for ID %', in_id;
+ RAISE EXCEPTION 'No entity found for ID %', in_entity;
END IF;
select * into p from person where id = in_person;
IF NOT FOUND THEN
- RAISE EXCEPTION 'No person found for ID %', in_id;
+ RAISE EXCEPTION 'No person found for ID %', in_person;
END IF;
-- Okay, we're good. Check to see if we update or insert.
diff --git a/sql/modules/Person.sql b/sql/modules/Person.sql
index cd84fefc..9eda8335 100644
--- a/sql/modules/Person.sql
+++ b/sql/modules/Person.sql
@@ -1,6 +1,6 @@
begin;
-CREATE OR REPLACE FUNCTION person_save
+CREATE OR REPLACE FUNCTION person__save
(in_entity_id integer, in_salutation_id int,
in_first_name text, in_middle_name text, in_last_name text
)
@@ -106,7 +106,7 @@ $$
DECLARE out_row RECORD;
BEGIN
FOR out_row IN
- SELECT cc.class, cc.id, c.description, c.contact
+ SELECT cc.class, cc.id, c.contact
FROM person_to_contact c
JOIN contact_class cc ON (c.contact_class_id = cc.id)
JOIN person p ON (c.person_id = p.id)
diff --git a/sql/modules/admin.sql b/sql/modules/admin.sql
index c7dc3d9b..f590aa94 100644
--- a/sql/modules/admin.sql
+++ b/sql/modules/admin.sql
@@ -481,15 +481,17 @@ $$ language plpgsql;
create or replace function admin__user_preferences (in_user int) returns setof user_preference as $$
declare
- v_row user_preferences;
+ v_row user_preference;
BEGIN
- select * into v_row from user_preference where user_id = in_user;
+ select * into v_row from user_preference where id = in_user;
IF NOT FOUND THEN
- RAISE EXCEPTION "Could not find user preferences for id %", in_user;
+ RAISE EXCEPTION 'Could not find user preferences for id %', in_user;
ELSE
return next v_row;
END IF;
+END;
+$$ language plpgsql;
commit; \ No newline at end of file