koha-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Koha-cvs] koha/C4 Date.pm Koha.pm Members.pm


From: paul poulain
Subject: [Koha-cvs] koha/C4 Date.pm Koha.pm Members.pm
Date: Fri, 14 Apr 2006 09:32:57 +0000

CVSROOT:        /cvsroot/koha
Module name:    koha
Branch:         
Changes by:     paul poulain <address@hidden>   06/04/14 09:32:57

Modified files:
        C4             : Date.pm Koha.pm Members.pm 

Log message:
        improvements from SAN Ouest Provence :
        * introducing a category_type into categories. It can be A (adult), C 
(children), P (Professionnal), I (institution/organisation).
        * each category_type has it's own forms to create members.
        * the borrowers table has been heavily modified (many fields changed), 
to get something more logic & readable
        * reintroducing guarantor/guanrantee system that is now independant 
from hardcoded C/A for categories
        * updating templates to fit template rules
        
        (see mail feb, 17 on koha-devel "new features for borrowers" for more 
details)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/koha/C4/Date.pm.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/koha/koha/C4/Koha.pm.diff?tr1=1.30&tr2=1.31&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/koha/koha/C4/Members.pm.diff?tr1=1.13&tr2=1.14&r1=text&r2=text

Patches:
Index: koha/C4/Date.pm
diff -u koha/C4/Date.pm:1.14 koha/C4/Date.pm:1.15
--- koha/C4/Date.pm:1.14        Thu Apr 13 08:36:42 2006
+++ koha/C4/Date.pm     Fri Apr 14 09:32:57 2006
@@ -18,6 +18,7 @@
              &display_date_format
              &format_date
              &format_date_in_iso
+             &today
              get_date_format_string_for_DHTMLcalendar
 );
 
@@ -143,4 +144,22 @@
 
        return $newdate;
 }
+
+#function to return a current date OUEST-PROVENCE
+sub today
+{
+    my ($adddate) address@hidden;
+        my($j,$m,$a)=(localtime)[3,4,5];
+       if ($j<10) {
+               $j= '0'.$j;     
+       }
+       $m=$m+1;
+       if ($m<10){
+               $m= '0'.$m
+       }
+       $a=$a+1900+$adddate;
+       return format_date("$a-$m-$j");
+}
+
+
 1;
Index: koha/C4/Koha.pm
diff -u koha/C4/Koha.pm:1.30 koha/C4/Koha.pm:1.31
--- koha/C4/Koha.pm:1.30        Fri Apr  7 11:10:25 2006
+++ koha/C4/Koha.pm     Fri Apr 14 09:32:57 2006
@@ -35,9 +35,6 @@
 
 
   $date = slashifyDate("01-01-2002")
-  $ethnicity = fixEthnicity('asian');
-  ($categories, $labels) = borrowercategories();
-  ($categories, $labels) = ethnicitycategories();
 
 =head1 DESCRIPTION
 
@@ -51,9 +48,6 @@
 
 @ISA = qw(Exporter);
 @EXPORT = qw(
-                       &fixEthnicity
-                       &borrowercategories &getborrowercategory
-                       &ethnicitycategories
                        &subfield_is_koha_internal_p
                        &getbranches &getbranch &getbranchdetail
                        &getprinters &getprinter
@@ -66,109 +60,14 @@
                         getitemtypeimagedir
                         getitemtypeimagesrc
                         getitemtypeimagesrcfromurl
+                       &getcities
+                       &getroadtypes
                        $DEBUG);
 
 use vars qw();
 
 my $DEBUG = 0;
 
-# removed slashifyDate => useless
-
-=head2 fixEthnicity
-
-  $ethn_name = &fixEthnicity($ethn_code);
-
-Takes an ethnicity code (e.g., "european" or "pi") and returns the
-corresponding descriptive name from the C<ethnicity> table in the
-Koha database ("European" or "Pacific Islander").
-
-=cut
-#'
-
-sub fixEthnicity($) {
-
-    my $ethnicity = shift;
-    my $dbh = C4::Context->dbh;
-    my $sth=$dbh->prepare("Select name from ethnicity where code = ?");
-    $sth->execute($ethnicity);
-    my $data=$sth->fetchrow_hashref;
-    $sth->finish;
-    return $data->{'name'};
-}
-
-=head2 borrowercategories
-
-  ($codes_arrayref, $labels_hashref) = &borrowercategories();
-
-Looks up the different types of borrowers in the database. Returns two
-elements: a reference-to-array, which lists the borrower category
-codes, and a reference-to-hash, which maps the borrower category codes
-to category descriptions.
-
-=cut
-#'
-
-sub borrowercategories {
-    my $dbh = C4::Context->dbh;
-    my $sth=$dbh->prepare("Select categorycode,description from categories 
order by description");
-    $sth->execute;
-    my %labels;
-    my @codes;
-    while (my $data=$sth->fetchrow_hashref){
-      push @codes,$data->{'categorycode'};
-      $labels{$data->{'categorycode'}}=$data->{'description'};
-    }
-    $sth->finish;
-    return(address@hidden,\%labels);
-}
-
-=item getborrowercategory
-
-  $description = &getborrowercategory($categorycode);
-
-Given the borrower's category code, the function returns the corresponding
-description for a comprehensive information display.
-
-=cut
-
-sub getborrowercategory
-{
-       my ($catcode) = @_;
-       my $dbh = C4::Context->dbh;
-       my $sth = $dbh->prepare("SELECT description FROM categories WHERE 
categorycode = ?");
-       $sth->execute($catcode);
-       my $description = $sth->fetchrow();
-       $sth->finish();
-       return $description;
-} # sub getborrowercategory
-
-
-=head2 ethnicitycategories
-
-  ($codes_arrayref, $labels_hashref) = &ethnicitycategories();
-
-Looks up the different ethnic types in the database. Returns two
-elements: a reference-to-array, which lists the ethnicity codes, and a
-reference-to-hash, which maps the ethnicity codes to ethnicity
-descriptions.
-
-=cut
-#'
-
-sub ethnicitycategories {
-    my $dbh = C4::Context->dbh;
-    my $sth=$dbh->prepare("Select code,name from ethnicity order by name");
-    $sth->execute;
-    my %labels;
-    my @codes;
-    while (my $data=$sth->fetchrow_hashref){
-      push @codes,$data->{'code'};
-      $labels{$data->{'code'}}=$data->{'name'};
-    }
-    $sth->finish;
-    return(address@hidden,\%labels);
-}
-
 # FIXME.. this should be moved to a MARC-specific module
 sub subfield_is_koha_internal_p ($) {
     my($subfield) = @_;
@@ -655,90 +554,102 @@
 =cut
 
 sub getalllanguages {
-    my $type=shift;
-    my $theme=shift;
-    my $htdocs;
-    my @languages;
-    if ($type eq 'opac') {
-       $htdocs=C4::Context->config('opachtdocs');
-       if ($theme and -d "$htdocs/$theme") {
-           opendir D, "$htdocs/$theme";
-           foreach my $language (readdir D) {
-               next if $language=~/^\./;
-               next if $language eq 'all';
-               next if $language=~ /png$/;
-               next if $language=~ /css$/;
-               push @languages, $language;
-           }
-           return sort @languages;
-       } else {
-           my $lang;
-           foreach my $theme (getallthemes('opac')) {
-               opendir D, "$htdocs/$theme";
-               foreach my $language (readdir D) {
-                   next if $language=~/^\./;
-                   next if $language eq 'all';
-                       next if $language=~ /png$/;
-                       next if $language=~ /css$/;
-                   $lang->{$language}=1;
+       my $type=shift;
+       my $theme=shift;
+       my $htdocs;
+       my @languages;
+       if ($type eq 'opac') {
+               $htdocs=C4::Context->config('opachtdocs');
+               if ($theme and -d "$htdocs/$theme") {
+                       opendir D, "$htdocs/$theme";
+                       foreach my $language (readdir D) {
+                               next if $language=~/^\./;
+                               next if $language eq 'all';
+                               next if $language=~ /png$/;
+                               next if $language=~ /css$/;
+                               next if $language=~ /CVS$/;
+                               next if $language=~ /itemtypeimg$/;
+                               push @languages, $language;
+                       }
+                       return sort @languages;
+               } else {
+                       my $lang;
+                       foreach my $theme (getallthemes('opac')) {
+                               opendir D, "$htdocs/$theme";
+                               foreach my $language (readdir D) {
+                                       next if $language=~/^\./;
+                                       next if $language eq 'all';
+                                       next if $language=~ /png$/;
+                                       next if $language=~ /css$/;
+                                       next if $language=~ /CVS$/;
+                                       next if $language=~ /itemtypeimg$/;
+                                       $lang->{$language}=1;
+                               }
+                       }
+                       @languages=keys %$lang;
+                       return sort @languages;
                }
-           }
-           @languages=keys %$lang;
-           return sort @languages;
-       }
-    } elsif ($type eq 'intranet') {
-       $htdocs=C4::Context->config('intrahtdocs');
-       if ($theme and -d "$htdocs/$theme") {
-           opendir D, "$htdocs/$theme";
-           foreach my $language (readdir D) {
-               next if $language=~/^\./;
-               next if $language eq 'all';
-               next if $language=~ /png$/;
-               next if $language=~ /css$/;
-               push @languages, $language;
-           }
-           return sort @languages;
-       } else {
-           my $lang;
-           foreach my $theme (getallthemes('opac')) {
+       } elsif ($type eq 'intranet') {
+               $htdocs=C4::Context->config('intrahtdocs');
+               if ($theme and -d "$htdocs/$theme") {
+                       opendir D, "$htdocs/$theme";
+                       foreach my $language (readdir D) {
+                               next if $language=~/^\./;
+                               next if $language eq 'all';
+                               next if $language=~ /png$/;
+                               next if $language=~ /css$/;
+                               next if $language=~ /CVS$/;
+                               next if $language=~ /itemtypeimg$/;
+                               push @languages, $language;
+                       }
+                       return sort @languages;
+               } else {
+                       my $lang;
+                       foreach my $theme (getallthemes('opac')) {
+                               opendir D, "$htdocs/$theme";
+                               foreach my $language (readdir D) {
+                                       next if $language=~/^\./;
+                                       next if $language eq 'all';
+                                       next if $language=~ /png$/;
+                                       next if $language=~ /css$/;
+                                       next if $language=~ /CVS$/;
+                                       next if $language=~ /itemtypeimg$/;
+                                       $lang->{$language}=1;
+                               }
+                       }
+                       @languages=keys %$lang;
+                       return sort @languages;
+               }
+    } else {
+               my $lang;
+               my $htdocs=C4::Context->config('intrahtdocs');
+               foreach my $theme (getallthemes('intranet')) {
+                       opendir D, "$htdocs/$theme";
+                       foreach my $language (readdir D) {
+                               next if $language=~/^\./;
+                               next if $language eq 'all';
+                               next if $language=~ /png$/;
+                               next if $language=~ /css$/;
+                               next if $language=~ /CVS$/;
+                               next if $language=~ /itemtypeimg$/;
+                               $lang->{$language}=1;
+                       }
+               }
+               $htdocs=C4::Context->config('opachtdocs');
+               foreach my $theme (getallthemes('opac')) {
                opendir D, "$htdocs/$theme";
                foreach my $language (readdir D) {
-                   next if $language=~/^\./;
-                   next if $language eq 'all';
+                       next if $language=~/^\./;
+                       next if $language eq 'all';
                        next if $language=~ /png$/;
                        next if $language=~ /css$/;
-                   $lang->{$language}=1;
+                       next if $language=~ /CVS$/;
+                       next if $language=~ /itemtypeimg$/;
+                       $lang->{$language}=1;
+                       }
                }
-           }
-           @languages=keys %$lang;
-           return sort @languages;
-       }
-    } else {
-       my $lang;
-       my $htdocs=C4::Context->config('intrahtdocs');
-       foreach my $theme (getallthemes('intranet')) {
-           opendir D, "$htdocs/$theme";
-           foreach my $language (readdir D) {
-               next if $language=~/^\./;
-               next if $language eq 'all';
-               next if $language=~ /png$/;
-               next if $language=~ /css$/;
-               $lang->{$language}=1;
-           }
-       }
-       $htdocs=C4::Context->config('opachtdocs');
-       foreach my $theme (getallthemes('opac')) {
-           opendir D, "$htdocs/$theme";
-           foreach my $language (readdir D) {
-               next if $language=~/^\./;
-               next if $language eq 'all';
-               next if $language=~ /png$/;
-               next if $language=~ /css$/;
-               $lang->{$language}=1;
-           }
-       }
-       @languages=keys %$lang;
-       return sort @languages;
+               @languages=keys %$lang;
+               return sort @languages;
     }
 }
 
@@ -781,6 +692,81 @@
     return int(($nb_items - 1) / $nb_items_per_page) + 1;
 }
 
+
+=head2 getcities (OUEST-PROVENCE)
+
+  ($id_cityarrayref, $city_hashref) = &getcities();
+
+Looks up the different city and zip in the database. Returns two
+elements: a reference-to-array, which lists the zip city
+codes, and a reference-to-hash, which maps the name of the city.
+WHERE =>OUEST PROVENCE OR EXTERIEUR
+
+=cut
+sub getcities {
+    #my ($type_city) = @_;
+    my $dbh = C4::Context->dbh;
+    my $sth=$dbh->prepare("Select cityid,city_name from cities order by cityid 
 ");
+    #$sth->execute($type_city);
+    $sth->execute();    
+    my %city;
+    my @id;
+#    insert empty value to create a empty choice in cgi popup 
+        
+while (my $data=$sth->fetchrow_hashref){
+      
+       push @id,$data->{'cityid'};
+      $city{$data->{'cityid'}}=$data->{'city_name'};
+    }
+       
+       #test to know if the table contain some records if no the function 
return nothing
+       my address@hidden;
+       $sth->finish;
+       if ($id eq 0)
+       {
+       return();
+       }
+       else{
+       unshift (@id ,"");
+       return(address@hidden,\%city);
+       }
+}
+
+
+=head2 getroadtypes (OUEST-PROVENCE)
+
+  ($idroadtypearrayref, $roadttype_hashref) = &getroadtypes();
+
+Looks up the different road type . Returns two
+elements: a reference-to-array, which lists the id_roadtype
+codes, and a reference-to-hash, which maps the road type of the road .
+
+
+=cut
+sub getroadtypes {
+    my $dbh = C4::Context->dbh;
+    my $sth=$dbh->prepare("Select roadtypeid,road_type from roadtype order by 
road_type  ");
+    $sth->execute();
+    my %roadtype;
+    my @id;
+#    insert empty value to create a empty choice in cgi popup 
+while (my $data=$sth->fetchrow_hashref){
+       push @id,$data->{'roadtypeid'};
+      $roadtype{$data->{'roadtypeid'}}=$data->{'road_type'};
+    }
+       #test to know if the table contain some records if no the function 
return nothing
+       my address@hidden;
+       $sth->finish;
+       if ($id eq 0)
+       {
+       return();
+       }
+       else{
+               unshift (@id ,"");
+               return(address@hidden,\%roadtype);
+       }
+}
+
 1;
 __END__
 
Index: koha/C4/Members.pm
diff -u koha/C4/Members.pm:1.13 koha/C4/Members.pm:1.14
--- koha/C4/Members.pm:1.13     Mon Apr  3 23:45:00 2006
+++ koha/C4/Members.pm  Fri Apr 14 09:32:57 2006
@@ -24,6 +24,7 @@
 use C4::Context;
 use Date::Manip;
 use C4::Date;
+use Digest::MD5 qw(md5_base64);
 
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
 
@@ -49,8 +50,13 @@
 @EXPORT = qw();
 
 @EXPORT = qw(
-       &BornameSearch &getmember &borrdata &borrdata2 &fixup_cardnumber 
&findguarantees &findguarantor &NewBorrowerNumber &modmember &newmember 
&changepassword &borrissues &allissues
+       &BornameSearch &getmember &borrdata &borrdata2 &fixup_cardnumber 
&findguarantees &findguarantor &GuarantornameSearch &NewBorrowerNumber 
&modmember &newmember &changepassword &borrissues &allissues
+       &checkuniquemember &getzipnamecity &getidcity &getguarantordata 
&getcategorytype
+       &calcexpirydate &checkuserpassword
        &getboracctrecord
+       &borrowercategories &getborrowercategory
+       &fixEthnicity
+       &ethnicitycategories
     );
 
 
@@ -187,19 +193,20 @@
   my $dbh = C4::Context->dbh;
   my $sth;
   if ($bornum eq ''){
-    $sth=$dbh->prepare("Select * from borrowers where cardnumber=?");
+    $sth=$dbh->prepare("Select borrowers.*,categories.category_type from 
borrowers left join categories on 
borrowers.categorycode=categories.categorycode where cardnumber=?");
     $sth->execute($cardnumber);
   } else {
-    $sth=$dbh->prepare("Select * from borrowers where borrowernumber=?");
+    $sth=$dbh->prepare("Select borrowers.*,categories.category_type from 
borrowers left join categories on 
borrowers.categorycode=categories.categorycode where borrowernumber=?");
   $sth->execute($bornum);
   }
   my $data=$sth->fetchrow_hashref;
+  warn "DATA".$data->{category_type};
   $sth->finish;
   if ($data) {
        return($data);
        } else { # try with firstname
                if ($cardnumber) {
-                       my $sth=$dbh->prepare("select * from borrowers where 
firstname=?");
+                       my $sth=$dbh->prepare("Select 
borrowers.*,categories.category_type from borrowers left join categories on 
borrowers.categorycode=categories.categorycode  where firstname=?");
                        $sth->execute($cardnumber);
                        my $data=$sth->fetchrow_hashref;
                        $sth->finish;
@@ -283,34 +290,59 @@
 sub newmember {
        my (%data) = @_;
        my $dbh = C4::Context->dbh;
+       $data{'userid'}='' unless $data{'password'};
+       $data{'password'}=md5_base64($data{'password'}) if $data{'password'};
        $data{'dateofbirth'}=format_date_in_iso($data{'dateofbirth'});
-       $data{'joining'} = &ParseDate("today") unless $data{'joining'};
-       $data{'joining'}=format_date_in_iso($data{'joining'});
-       # if expirydate is not set, calculate it from borrower category 
subscription duration
-       unless ($data{'expiry'}) {
-               my $sth = $dbh->prepare("select enrolmentperiod from categories 
where categorycode=?");
-               $sth->execute($data{'categorycode'});
-               my ($enrolmentperiod) = $sth->fetchrow;
-               $enrolmentperiod = 12 unless ($enrolmentperiod);
-               $data{'expiry'} = &DateCalc($data{'joining'},"$enrolmentperiod 
years");
-       }
-       $data{'expiry'}=format_date_in_iso($data{'expiry'});
-#      $data{'borrowernumber'}=NewBorrowerNumber();
-       my $query="insert into borrowers 
(title,expiry,cardnumber,sex,ethnotes,streetaddress,faxnumber,
-       
firstname,altnotes,dateofbirth,contactname,emailaddress,textmessaging,dateenrolled,streetcity,
-       
altrelationship,othernames,phoneday,categorycode,city,area,phone,borrowernotes,altphone,surname,
-       
initials,ethnicity,physstreet,branchcode,zipcode,homezipcode,sort1,sort2) 
values ('$data{'title'}','$data{'expiry'}','$data{'cardnumber'}',
-       
'$data{'sex'}','$data{'ethnotes'}','$data{'streetaddress'}','$data{'faxnumber'}',
-       
'$data{'firstname'}','$data{'altnotes'}','$data{'dateofbirth'}','$data{'contactname'}','$data{'emailaddress'}','$data{'textmessaging'}',
-       
'$data{'joining'}','$data{'streetcity'}','$data{'altrelationship'}','$data{'othernames'}',
-       
'$data{'phoneday'}','$data{'categorycode'}','$data{'city'}','$data{'area'}','$data{'phone'}',
-       
'$data{'borrowernotes'}','$data{'altphone'}','$data{'surname'}','$data{'initials'}',
-       
'$data{'ethnicity'}','$data{'physstreet'}','$data{'branchcode'}','$data{'zipcode'}','$data{'homezipcode'}','$data{'sort1'}','$data{'sort2'}')";
+       $data{'dateenrolled'}=format_date_in_iso($data{'dateenrolled'});
+       $data{expiry}=format_date_in_iso($data{expiry});
+my $query="insert into borrowers set 
cardnumber=".$dbh->quote($data{'cardnumber'}).
+                                                                       
",surname=".$dbh->quote($data{'surname'}).
+                                                                       
",firstname=".$dbh->quote($data{'firstname'}).
+                                                                       
",title=".$dbh->quote($data{'title'}).
+                                                                       
",othernames=".$dbh->quote($data{'othernames'}).
+                                                                       
",initials=".$dbh->quote($data{'initials'}).
+                                                                       
",streetnumber=".$dbh->quote($data{'streetnumber'}).
+                                                                       
",streettype=".$dbh->quote($data{'streettype'}).
+                                                                       
",address=".$dbh->quote($data{'address'}).
+                                                                       
",address2=".$dbh->quote($data{'address2'}).
+                                                                       
",zipcode=".$dbh->quote($data{'zipcode'}).
+                                                                       
",city=".$dbh->quote($data{'city'}).
+                                                                       
",phone=".$dbh->quote($data{'phone'}).
+                                                                       
",email=".$dbh->quote($data{'email'}).
+                                                                       
",mobile=".$dbh->quote($data{'mobile'}).
+                                                                       
",phonepro=".$dbh->quote($data{'phonepro'}).
+                                                                       
",opacnote=".$dbh->quote($data{'opacnote'}).
+                                                                       
",guarantorid=".$dbh->quote($data{'guarantorid'}).
+                                                                       
",dateofbirth=".$dbh->quote($data{'dateofbirth'}).
+                                                                       
",branchcode=".$dbh->quote($data{'branchcode'}).
+                                                                       
",categorycode=".$dbh->quote($data{'categorycode'}).
+                                                                       
",dateenrolled=".$dbh->quote($data{'dateenrolled'}).
+                                                                       
",contactname=".$dbh->quote($data{'contactname'}).
+                                                                       
",borrowernotes=".$dbh->quote($data{'borrowernotes'}).
+                                                                       
",dateexpiry=".$dbh->quote($data{'dateexpiry'}).
+                                                                       
",contactnote=".$dbh->quote($data{'contactnote'}).
+                                                                       
",b_address=".$dbh->quote($data{'b_address'}).
+                                                                       
",b_zipcode=".$dbh->quote($data{'b_zipcode'}).
+                                                                       
",b_city=".$dbh->quote($data{'b_city'}).
+                                                                       
",b_phone=".$dbh->quote($data{'b_phone'}).
+                                                                       
",b_email=".$dbh->quote($data{'b_email'},).
+                                                                       
",password=".$dbh->quote($data{'password'}).
+                                                                       
",userid=".$dbh->quote($data{'userid'}).
+                                                                       
",sort1=".$dbh->quote($data{'sort1'}).
+                                                                       
",sort2=".$dbh->quote($data{'sort2'}).
+                                                                       
",contacttitle=".$dbh->quote($data{'contacttitle'}).
+                                                                       
",emailpro=".$dbh->quote($data{'emailpro'}).
+                                                                       
",contactfirstname=".$dbh->quote($data{'contactfirstname'}).
+                                                                       
",sex=".$dbh->quote($data{'sex'}).
+                                                                       
",fax=".$dbh->quote($data{'fax'}).
+                                                                       
",flags=".$dbh->quote($data{'flags'}).
+                                                                       
",relationship=".$dbh->quote($data{'relationship'})
+                                                                       ;
        my $sth=$dbh->prepare($query);
        $sth->execute;
        $sth->finish;
-       $data{borrowernumber} =$dbh->{'mysql_insertid'};
-       return $data{borrowernumber};
+       $data{'borrowerid'} =$dbh->{'mysql_insertid'};
+       return $data{'borrowerid'};
 }
 
 sub changepassword {
@@ -433,7 +465,7 @@
   my ($bornum)address@hidden;
   my $dbh = C4::Context->dbh;
   my $sth=$dbh->prepare("select cardnumber,borrowernumber from borrowers where
-  guarantor=?");
+  guarantorid=?");
   $sth->execute($bornum);
   my @dat;
   my $i=0;
@@ -464,17 +496,87 @@
 sub findguarantor{
   my ($bornum)address@hidden;
   my $dbh = C4::Context->dbh;
-  my $sth=$dbh->prepare("select guarantor from borrowers where 
borrowernumber=?");
+  my $sth=$dbh->prepare("Select * from borrowers where borrowernumber=?");
   $sth->execute($bornum);
   my $data=$sth->fetchrow_hashref;
   $sth->finish;
-  $sth=$dbh->prepare("Select * from borrowers where borrowernumber=?");
-  $sth->execute($data->{'guarantor'});
-  $data=$sth->fetchrow_hashref;
-  $sth->finish;
   return($data);
 }
 
+=item GuarantornameSearch
+
+  ($count, $borrowers) = &GuarantornameSearch($env, $searchstring, $type);
+
+Looks up guarantor  by name.
+
+C<$env> is ignored.
+
+BUGFIX 499: C<$type> is now used to determine type of search.
+if $type is "simple", search is performed on the first letter of the
+surname only.
+
+C<$searchstring> is a space-separated list of search terms. Each term
+must match the beginning a borrower's surname, first name, or other
+name.
+
+C<&GuarantornameSearch> returns a two-element list. C<$borrowers> is a
+reference-to-array; each element is a reference-to-hash, whose keys
+are the fields of the C<borrowers> table in the Koha database.
+C<$count> is the number of elements in C<$borrowers>.
+
+return all info from guarantor =>only category_type A
+
+=cut
+#'
+#used by member enquiries from the intranet
+#called by guarantor_search.pl
+sub GuarantornameSearch  {
+       my ($env,$searchstring,$orderby,$type)address@hidden;
+       my $dbh = C4::Context->dbh;
+       my $query = ""; my $count; my @data;
+       my @bind=();
+
+       if($type eq "simple")   # simple search for one letter only
+       {
+               $query="Select * from borrowers,categories  where 
borrowers.categorycode=categories.categorycode and category_type='A'  and  
surname like ? order by $orderby";
+               @bind=("$searchstring%");
+       }
+       else    # advanced search looking in surname, firstname and othernames
+       {
+               @data=split(' ',$searchstring);
+               address@hidden;
+               $query="Select * from borrowers,categories
+               where ((surname like ? or surname like ?
+               or firstname  like ? or firstname like ?
+               or othernames like ? or othernames like ?) and 
borrowers.categorycode=categories.categorycode and category_type='A' 
+               ";
+               @bind=("$data[0]%","% $data[0]%","$data[0]%","% 
$data[0]%","$data[0]%","% $data[0]%");
+               for (my $i=1;$i<$count;$i++){
+                       $query=$query." and (".
+                       " surname like ? or surname like ?
+                        or firstname  like ? or firstname like ?
+                       or othernames like ? or othernames like ?)";
+                       push(@bind,"$data[$i]%","% $data[$i]%","$data[$i]%","% 
$data[$i]%","$data[$i]%","% $data[$i]%");
+                                       # FIXME - .= <<EOT;
+               }
+               $query=$query.") or cardnumber like ?
+               order by $orderby";
+               push(@bind,$searchstring);
+                                       # FIXME - .= <<EOT;
+       }
+
+       my $sth=$dbh->prepare($query);
+       $sth->execute(@bind);
+       my @results;
+       my $cnt=$sth->rows;
+       while (my $data=$sth->fetchrow_hashref){
+       push(@results,$data);
+       }
+       #  $sth->execute;
+       $sth->finish;
+       return ($cnt,address@hidden);
+}
+
 =item NewBorrowerNumber
 
   $num = &NewBorrowerNumber();
@@ -619,4 +721,232 @@
    return ($numlines,address@hidden,$total);
 }
 
+
+=head2 checkuniquemember (OUEST-PROVENCE)
+
+  $result = 
&checkuniquemember($collectivity,$surname,$categorycode,$firstname,$dateofbirth);
+
+Checks that a member exists or not in the database.
+
+C<&result> is 1 (=exist) or 0 (=does not exist)
+C<&collectivity> is 1 (= we add a collectivity) or 0 (= we add a physical 
member)
+C<&surname> is the surname
+C<&categorycode> is from categorycode table
+C<&firstname> is the firstname (only if collectivity=0)
+C<&dateofbirth> is the date of birth (only if collectivity=0)
+
+=cut
+
+sub checkuniquemember{
+       my ($collectivity,$surname,$firstname,$dateofbirth)address@hidden;
+       my $dbh = C4::Context->dbh;
+       my $request;
+       if ($collectivity ) {
+#                              $request="select count(*) from borrowers where 
surname=? and categorycode=?";
+               $request="select borrowernumber,categorycode from borrowers 
where surname=? ";
+       } else {
+#                              $request="select count(*) from borrowers where 
surname=? and categorycode=? and firstname=? and dateofbirth=?";
+               $request="select borrowernumber,categorycode from borrowers 
where surname=?  and firstname=? and dateofbirth=?";
+       }
+       my $sth=$dbh->prepare($request);
+       if ($collectivity) {
+               $sth->execute(uc($surname));
+       } else {
+               $sth->execute(uc($surname),ucfirst($firstname),$dateofbirth);
+       }
+       my @data= $sth->fetchrow; 
+       if ($data[0]){
+               $sth->finish;
+       return $data[0],$data[1];                               
+#                      
+       }else{
+               $sth->finish;
+       return 0;
+       }
+}
+
+=head2 getzipnamecity (OUEST-PROVENCE)
+
+take all info from table city for the fields city and  zip
+check for the name and the zip code of the city selected
+
+=cut
+sub getzipnamecity {
+       my ($cityid)address@hidden;
+       my $dbh = C4::Context->dbh;
+       my $sth=$dbh->prepare("select city_name,city_zipcode from cities where 
cityid=? ");
+       $sth->execute($cityid);
+       my @data = $sth->fetchrow;
+       return $data[0],$data[1];
+}
+
+=head2 updatechildguarantor (OUEST-PROVENCE)
+
+check for title,firstname,surname,adress,zip code and city  from guarantor to 
+guarantorchild
+
+=cut
+sub getguarantordata{
+       my ($borrowerid)address@hidden;
+       my $dbh = C4::Context->dbh;
+       my $sth=$dbh->prepare("Select 
title,firstname,surname,streetnumber,address,streettype,address2,zipcode,city,phone,phonepro,mobile,email,emailpro
  from borrowers where borrowernumber =? ");
+       $sth->execute($borrowerid);
+       my $guarantor_data=$sth->fetchrow_hashref;
+       $sth->finish;  
+       return $guarantor_data;                 
+}
+
+=head2 getdcity (OUEST-PROVENCE)
+recover cityid  with city_name condition
+=cut
+sub getidcity {
+       my ($city_name)address@hidden;
+       my $dbh = C4::Context->dbh;
+       my $sth=$dbh->prepare("select cityid from cities where city_name=? ");
+       $sth->execute($city_name);
+       my $data = $sth->fetchrow;
+       return $data;
+}
+
+
+=head2 getcategorytype (OUEST-PROVENCE)
+
+check for the category_type with categorycode
+and return the category_type 
+
+=cut
+sub getcategorytype {
+                       my ($categorycode)address@hidden;
+                       my $dbh = C4::Context->dbh;
+                       my $sth=$dbh->prepare("Select category_type,description 
from categories where categorycode=?  ");
+                       $sth->execute($categorycode);
+                       my ($category_type,$description) = $sth->fetchrow;
+                       return $category_type,$description;
+}
+
+sub calcexpirydate {
+       my ($categorycode,$dateenrolled)address@hidden;
+       my $dbh=C4::Context->dbh;
+       my $sth = $dbh->prepare("select enrolmentperiod from categories where 
categorycode=?");
+       $sth->execute($categorycode);
+       my ($enrolmentperiod) = $sth->fetchrow;
+       $enrolmentperiod = 12 unless ($enrolmentperiod);
+       return format_date_in_iso(&DateCalc($dateenrolled,"$enrolmentperiod 
months"));
+}
+
+=head2 checkuserpassword (OUEST-PROVENCE)
+
+check for the password and login are not used
+return the number of record 
+0=> NOT USED 1=> USED
+
+=cut
+sub checkuserpassword{
+                       my ($borrowerid,$userid,$password)address@hidden;
+                       $password=md5_base64($password);
+                       my $dbh = C4::Context->dbh;
+                       my $sth=$dbh->prepare("Select count(*) from borrowers 
where borrowernumber !=? and userid =? and password=? ");
+                       $sth->execute($borrowerid,$userid,$password);
+                       my $number_rows=$sth->fetchrow;
+  return $number_rows;                 
+                       
+}
+
+=head2 borrowercategories
+
+  ($codes_arrayref, $labels_hashref) = &borrowercategories();
+
+Looks up the different types of borrowers in the database. Returns two
+elements: a reference-to-array, which lists the borrower category
+codes, and a reference-to-hash, which maps the borrower category codes
+to category descriptions.
+
+=cut
+#'
+sub borrowercategories {
+       my ($category_type,$action)address@hidden;
+       my $dbh = C4::Context->dbh;
+       my $request;
+       $request="Select categorycode,description from categories where 
category_type=? order by categorycode";         
+       my $sth=$dbh->prepare($request);
+       $sth->execute($category_type);
+       my %labels;
+       my @codes;
+       while (my $data=$sth->fetchrow_hashref){
+               push @codes,$data->{'categorycode'};
+               $labels{$data->{'categorycode'}}=$data->{'description'};
+       }
+       $sth->finish;
+       return(address@hidden,\%labels);
+}
+
+=item getborrowercategory
+
+  $description = &getborrowercategory($categorycode);
+
+Given the borrower's category code, the function returns the corresponding
+description for a comprehensive information display.
+
+=cut
+
+sub getborrowercategory
+{
+       my ($catcode) = @_;
+       my $dbh = C4::Context->dbh;
+       my $sth = $dbh->prepare("SELECT description FROM categories WHERE 
categorycode = ?");
+       $sth->execute($catcode);
+       my $description = $sth->fetchrow();
+       $sth->finish();
+       return $description;
+} # sub getborrowercategory
+
+
+=head2 ethnicitycategories
+
+  ($codes_arrayref, $labels_hashref) = &ethnicitycategories();
+
+Looks up the different ethnic types in the database. Returns two
+elements: a reference-to-array, which lists the ethnicity codes, and a
+reference-to-hash, which maps the ethnicity codes to ethnicity
+descriptions.
+
+=cut
+#'
+
+sub ethnicitycategories {
+    my $dbh = C4::Context->dbh;
+    my $sth=$dbh->prepare("Select code,name from ethnicity order by name");
+    $sth->execute;
+    my %labels;
+    my @codes;
+    while (my $data=$sth->fetchrow_hashref){
+      push @codes,$data->{'code'};
+      $labels{$data->{'code'}}=$data->{'name'};
+    }
+    $sth->finish;
+    return(address@hidden,\%labels);
+}
+
+=head2 fixEthnicity
+
+  $ethn_name = &fixEthnicity($ethn_code);
+
+Takes an ethnicity code (e.g., "european" or "pi") and returns the
+corresponding descriptive name from the C<ethnicity> table in the
+Koha database ("European" or "Pacific Islander").
+
+=cut
+#'
+
+sub fixEthnicity($) {
+
+    my $ethnicity = shift;
+    my $dbh = C4::Context->dbh;
+    my $sth=$dbh->prepare("Select name from ethnicity where code = ?");
+    $sth->execute($ethnicity);
+    my $data=$sth->fetchrow_hashref;
+    $sth->finish;
+    return $data->{'name'};
+}
+
 1;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]