adding address searching for cloned users
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 16 Aug 2006 18:18:23 +0000 (18:18 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 16 Aug 2006 18:18:23 +0000 (18:18 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@5537 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/actor.pm
Open-ILS/src/sql/Pg/005.schema.actors.sql

index 82af76e..aa34401 100644 (file)
@@ -317,11 +317,14 @@ sub patron_search {
 
        my $u_select = "SELECT id as id FROM $u_table u WHERE $usr_where";
        my $a_select = "SELECT usr as id FROM $a_table a WHERE $addr_where";
+       my $clone_select = "SELECT cu.id as id FROM $a_table ca ".
+                          "JOIN $u_table cu ON (cu.mailing_address = ca.id OR cu.billing_address = ca.id) ".
+                          "WHERE $addr_where";
 
        my $select = '';
        if ($usr_where) {
                if ($addr_where) {
-                       $select = "$u_select INTERSECT $a_select";
+                       $select = "$u_select INTERSECT $a_select INTERSECT $clone_select";
                } else {
                        $select = $u_select;
                }
@@ -349,7 +352,7 @@ sub patron_search {
                  LIMIT $limit
        SQL
 
-       return actor::user->db_Main->selectcol_arrayref($select, {}, map {lc($_)} (@usrv,@phonev,@identv,@namev,@addrv));
+       return actor::user->db_Main->selectcol_arrayref($select, {}, map {lc($_)} (@usrv,@phonev,@identv,@namev,@addrv,@addrv));
 }
 __PACKAGE__->register_method(
        api_name        => 'open-ils.storage.actor.user.crazy_search',
index 09da90f..130d240 100644 (file)
@@ -89,8 +89,6 @@ COMMENT ON TABLE actor.usr IS $$
  */
 $$;
 
-CREATE UNIQUE INDEX actor_usr_unique_ident ON actor.usr (ident_type, ident_value);
-
 CREATE INDEX actor_usr_home_ou_idx ON actor.usr (home_ou);
 CREATE INDEX actor_usr_mailing_address_idx ON actor.usr (mailing_address);
 CREATE INDEX actor_usr_billing_address_idx ON actor.usr (billing_address);