# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
-# $Id$
use strict;
require Exporter;
our ($VERSION,@ISA,@EXPORT,@EXPORT_OK);
-$VERSION = do { my @v = '$Revision$' =~ /\d+/g; shift(@v) . "." . join( "_", map { sprintf "%03d", $_ } @v ); };
+$VERSION = 3.00;
=head1 NAME
#'
#used by member enquiries from the intranet
-#called by member.pl
+#called by member.pl and circ/circulation.pl
sub SearchMember {
my ($searchstring, $orderby, $type,$category_type,$filter,$showallbranches ) = @_;
my $dbh = C4::Context->dbh;
my $count;
my @data;
my @bind = ();
-
+
+ # this is used by circulation everytime a new borrowers cardnumber is scanned
+ # so we can check an exact match first, if that works return, otherwise do the rest
+ $query = "SELECT * FROM borrowers
+ LEFT JOIN categories ON borrowers.categorycode=categories.categorycode
+ WHERE cardnumber = ?";
+ my $sth = $dbh->prepare($query);
+ $sth->execute($searchstring);
+ my $data = $sth->fetchall_arrayref({});
+ if (@$data){
+ return ( scalar(@$data), $data );
+ }
+ $sth->finish;
+
if ( $type eq "simple" ) # simple search for one letter only
{
- $query =
- "SELECT *
- FROM borrowers
- LEFT JOIN categories ON borrowers.categorycode=categories.categorycode ".
- ($category_type?" AND category_type = ".$dbh->quote($category_type):"");
+ $query = "SELECT *
+ FROM borrowers
+ LEFT JOIN categories ON borrowers.categorycode=categories.categorycode ".
+ ($category_type?" AND category_type = ".$dbh->quote($category_type):"");
+
$query .=
" WHERE (surname LIKE ? OR cardnumber like ?) ";
if (C4::Context->preference("IndependantBranches") && !$showallbranches){
$data{'dateofbirth'} = format_date_in_iso( $data{'dateofbirth'} ) if ($data{'dateofbirth'} );
$data{'dateexpiry'} = format_date_in_iso( $data{'dateexpiry'} ) if ($data{'dateexpiry'} );
$data{'dateenrolled'} = format_date_in_iso( $data{'dateenrolled'} ) if ($data{'dateenrolled'} );
-# warn Data::Dumper::Dumper(%data);
- # warn "num user".$data{'borrowernumber'};
my $qborrower=$dbh->prepare("SHOW columns from borrowers");
$qborrower->execute;
my %hashborrowerfields;
}
my $query;
my $sth;
- $data{'userid'} = '' if ( $data{'password'} eq '' );
my @parameters;
# test to know if u must update or not the borrower password
if ( $data{'password'} eq '****' ) {
delete $data{'password'};
foreach (keys %data)
- {push @parameters,"$_ = ".$dbh->quote($data{$_}) if ($_ ne "borrowernumber" and $hashborrowerfields{$_}) } ;
+ {push @parameters,"$_ = ".$dbh->quote($data{$_}) if ($_ ne "borrowernumber" and $_ ne "flags" and $hashborrowerfields{$_}) } ;
$query = "UPDATE borrowers SET ".join (",",@parameters)
." WHERE borrowernumber=$data{'borrowernumber'}";
# warn "$query";
$data{'password'} = md5_base64( $data{'password'} ) if ( $data{'password'} ne '' );
delete $data{'password'} if ($data{password} eq "");
foreach (keys %data)
- {push @parameters,"$_ = ".$dbh->quote($data{$_}) if ($_ ne "borrowernumber" and $hashborrowerfields{$_})} ;
+ {push @parameters,"$_ = ".$dbh->quote($data{$_}) if ($_ ne "borrowernumber" and $_ ne "flags" and $hashborrowerfields{$_})} ;
$query = "UPDATE borrowers SET ".join (",",@parameters)." WHERE borrowernumber=$data{'borrowernumber'}";
# warn "$query";
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{'dateenrolled'} = format_date_in_iso( $data{'dateenrolled'} );
- $data{'dateexpiry'} = format_date_in_iso( $data{'dateexpiry'} );
+ $data{'dateofbirth'} = format_date_in_iso( $data{'dateofbirth'} );
+ $data{'dateenrolled'} = format_date_in_iso( $data{'dateenrolled'});
+ $data{'dateexpiry'} = format_date_in_iso( $data{'dateexpiry'} );
my $query =
"insert into borrowers set cardnumber="
. $dbh->quote( $data{'cardnumber'} )
. ",B_phone="
. $dbh->quote( $data{'B_phone'} )
. ",B_email="
- . $dbh->quote( $data{'B_email'}, )
+ . $dbh->quote( $data{'B_email'} )
. ",password="
. $dbh->quote( $data{'password'} )
. ",userid="
my @acctlines;
my $numlines = 0;
my $strsth = qq(
-SELECT *
-FROM accountlines
-WHERE borrowernumber=?);
+ SELECT *
+ FROM accountlines
+ WHERE borrowernumber=?);
my @bind = ($borrowernumber);
if ($date && $date ne ''){
- $strsth.="
-AND date < ? ";
- push(@bind,$date);
+ $strsth.=" AND date < ? ";
+ push(@bind,$date);
}
- $strsth.="
-ORDER BY date desc,timestamp DESC";
+ $strsth.=" ORDER BY date desc,timestamp DESC";
my $sth= $dbh->prepare( $strsth );
$sth->execute( @bind );
my $total = 0;
my $dbh = C4::Context->dbh;
my @acctlines;
my $numlines = 0;
- my $query = qq| SELECT *
- FROM accountlines
- WHERE borrowernumber=?
- AND notify_id=?
- AND (accounttype='FU' OR accounttype='N' OR accounttype='M'OR accounttype='A'OR accounttype='F'OR accounttype='L' OR accounttype='IP' OR accounttype='CH' OR accounttype='RE' OR accounttype='RL')
- AND amountoutstanding != '0'
- ORDER BY notify_id,accounttype
- |;
- my $sth = $dbh->prepare($query);
-
+ my $sth = $dbh->prepare(
+ "SELECT *
+ FROM accountlines
+ WHERE borrowernumber=?
+ AND notify_id=?
+ AND (accounttype='FU' OR accounttype='N' OR accounttype='M'OR accounttype='A'OR accounttype='F'OR accounttype='L' OR accounttype='IP' OR accounttype='CH' OR accounttype='RE' OR accounttype='RL')
+ AND amountoutstanding != '0'
+ ORDER BY notify_id,accounttype
+ ");
$sth->execute( $borrowernumber, $notifyid );
my $total = 0;
while ( my $data = $sth->fetchrow_hashref ) {
}
sub checkcardnumber {
- my ($cardnumber) = @_;
+ my ($cardnumber,$borrowernumber) = @_;
my $dbh = C4::Context->dbh;
my $query = "SELECT * FROM borrowers WHERE cardnumber=?";
- my $sth = $dbh->prepare($query);
- $sth->execute($cardnumber);
+ $query .= " AND borrowernumber <> ?" if ($borrowernumber);
+ my $sth = $dbh->prepare($query);
+ if ($borrowernumber) {
+ $sth->execute($cardnumber,$borrowernumber);
+ } else {
+ $sth->execute($cardnumber);
+ }
if (my $data= $sth->fetchrow_hashref()){
return 1;
}