# 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;
use C4::Log; # logaction
use C4::Overdues;
use C4::Reserves;
+use C4::Accounts;
-our ($VERSION,@ISA,@EXPORT,@EXPORT_OK);
+our ($VERSION,@ISA,@EXPORT,@EXPORT_OK,$debug);
-$VERSION = do { my @v = '$Revision$' =~ /\d+/g; shift(@v) . "." . join( "_", map { sprintf "%03d", $_ } @v ); };
+BEGIN {
+ $VERSION = 3.01;
+ $debug = $ENV{DEBUG} || 0;
+}
=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 $query = "";
- my $count;
- my @data;
- my @bind = ();
+ my ($searchstring, $orderby, $type,$category_type,$filter,$showallbranches ) = @_;
+ my $dbh = C4::Context->dbh;
+ my $query = "";
+ 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
+ ";
+ my $sth = $dbh->prepare("$query WHERE cardnumber = ?");
+ $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 .=
- " WHERE (surname LIKE ? OR cardnumber like ?) ";
+ $query .= ($category_type ? " AND category_type = ".$dbh->quote($category_type) : "");
+ $query .= " WHERE (surname LIKE ? OR cardnumber like ?) ";
if (C4::Context->preference("IndependantBranches") && !$showallbranches){
if (C4::Context->userenv && C4::Context->userenv->{flags}!=1 && C4::Context->userenv->{'branch'}){
$query.=" AND borrowers.branchcode =".$dbh->quote(C4::Context->userenv->{'branch'}) unless (C4::Context->userenv->{'branch'} eq "insecure");
- }
- }
+ }
+ }
$query.=" ORDER BY $orderby";
@bind = ("$searchstring%","$searchstring");
}
{
@data = split( ' ', $searchstring );
$count = @data;
- $query = "SELECT * FROM borrowers
- LEFT JOIN categories ON borrowers.categorycode=categories.categorycode
- WHERE ";
+ $query .= " WHERE ";
if (C4::Context->preference("IndependantBranches") && !$showallbranches){
if (C4::Context->userenv && C4::Context->userenv->{flags}!=1 && C4::Context->userenv->{'branch'}){
$query.=" borrowers.branchcode =".$dbh->quote(C4::Context->userenv->{'branch'})." AND " unless (C4::Context->userenv->{'branch'} eq "insecure");
}
- }
- $query.="((surname LIKE ? OR surname LIKE ?
- OR firstname LIKE ? OR firstname LIKE ?
- OR othernames LIKE ? OR othernames LIKE ?)
- ".
- ($category_type?" AND category_type = ".$dbh->quote($category_type):"");
- @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 ?
+ }
+ $query.="((surname LIKE ? OR surname LIKE ?
+ OR firstname LIKE ? OR firstname LIKE ?
+ OR othernames LIKE ? OR othernames LIKE ?)
+ " .
+ ($category_type?" AND category_type = ".$dbh->quote($category_type):"");
+ @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 );
+ push( @bind, $searchstring );
- # FIXME - .= <<EOT;
+ # FIXME - .= <<EOT;
}
- my $sth = $dbh->prepare($query);
+ $sth = $dbh->prepare($query);
-# warn "Q $orderby : $query";
+ $debug and print STDERR "Q $orderby : $query\n";
$sth->execute(@bind);
my @results;
- my $data = $sth->fetchall_arrayref({});
+ $data = $sth->fetchall_arrayref({});
$sth->finish;
return ( scalar(@$data), $data );
my $query;
my $sth;
if ($borrowernumber) {
- $sth = $dbh->prepare("select * from borrowers where borrowernumber=?");
+ $sth = $dbh->prepare("select borrowers.*,category_type from borrowers left join categories on borrowers.categorycode=categories.categorycode where borrowernumber=?");
$sth->execute($borrowernumber);
}
elsif ($cardnumber) {
- $sth = $dbh->prepare("select * from borrowers where cardnumber=?");
+ $sth = $dbh->prepare("select borrowers.*,category_type from borrowers left join categories on borrowers.categorycode=categories.categorycode where cardnumber=?");
$sth->execute($cardnumber);
}
else {
my $borrower = $sth->fetchrow_hashref;
my ($amount) = GetMemberAccountRecords( $borrowernumber);
$borrower->{'amountoutstanding'} = $amount;
+ # FIXME - patronflags calls GetMemberAccountRecords... just have patronflags return $amount
my $flags = patronflags( $borrower);
my $accessflagshash;
{itemlist} ref-to-array: list of available items
=cut
-
+# FIXME rename this function.
sub patronflags {
my %flags;
my ( $patroninformation) = @_;
my %flaginfo;
my $noissuescharge = C4::Context->preference("noissuescharge");
$flaginfo{'message'} = sprintf "Patron owes \$%.02f", $amount;
+ $flaginfo{'amount'} = sprintf "%.02f",$amount;
if ( $amount > $noissuescharge ) {
$flaginfo{'noissues'} = 1;
}
my ( $information, $type ) = @_;
my $dbh = C4::Context->dbh;
my $sth;
- if ($type eq 'cardnumber' || $type eq 'firstname'|| $type eq 'userid'|| $type eq 'borrowernumber'){
- $information = uc $information;
- $sth =
- $dbh->prepare(
-"Select borrowers.*,categories.category_type,categories.description from borrowers left join categories on borrowers.categorycode=categories.categorycode where $type=?"
- );
- $sth->execute($information);
- }
- else {
- $sth =
- $dbh->prepare(
-"Select borrowers.*,categories.category_type, categories.description from borrowers left join categories on borrowers.categorycode=categories.categorycode where borrowernumber=?"
- );
- $sth->execute($information);
- }
+ my $select = "
+SELECT borrowers.*, categories.category_type, categories.description
+FROM borrowers
+LEFT JOIN categories on borrowers.categorycode=categories.categorycode
+";
+ if ($type eq 'cardnumber' || $type eq 'firstname'|| $type eq 'userid'|| $type eq 'borrowernumber'){
+ $information = uc $information;
+ $sth = $dbh->prepare("$select WHERE $type=?");
+ } else {
+ $sth = $dbh->prepare("$select WHERE borrowernumber=?");
+ }
+ $sth->execute($information);
my $data = $sth->fetchrow_hashref;
-
$sth->finish;
- if ($data) {
- return ($data);
- }
- elsif ($type eq 'cardnumber' ||$type eq 'firstname') { # try with firstname
- my $sth =
- $dbh->prepare(
-"Select borrowers.*,categories.category_type,categories.description from borrowers left join categories on borrowers.categorycode=categories.categorycode where firstname like ?"
- );
- $sth->execute($information);
- my $data = $sth->fetchrow_hashref;
- $sth->finish;
- return ($data);
- }
- else {
- return undef;
+ ($data) and return ($data);
+
+ if ($type eq 'cardnumber' || $type eq 'firstname') { # otherwise, try with firstname
+ $sth = $dbh->prepare("$select WHERE firstname like ?");
+ $sth->execute($information);
+ $data = $sth->fetchrow_hashref;
+ $sth->finish;
+ return ($data);
}
+ return undef;
}
=item GetMemberIssuesAndFines
"Select count(*) from issues where borrowernumber='$borrowernumber' and
returndate is NULL";
- # print $query;
+ $debug and print $query, "\n";
my $sth = $dbh->prepare($query);
$sth->execute;
my $data = $sth->fetchrow_hashref;
sub ModMember {
my (%data) = @_;
my $dbh = C4::Context->dbh;
- $data{'dateofbirth'} = format_date_in_iso( $data{'dateofbirth'} ) if ($data{'dateofbirth'} );
- $data{'dateexpiry'} = format_date_in_iso( $data{'dateexpiry'} ) if ($data{'dateexpiry'} );
+ $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;
while (my ($field)=$qborrower->fetchrow){
$hashborrowerfields{$field}=1;
}
- my $query;
+ my $query = "UPDATE borrowers SET \n";
my $sth;
- $data{'userid'} = '' if ( $data{'password'} eq '' );
my @parameters;
- # test to know if u must update or not the borrower password
+ # test to know if you 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 $_ ne "flags" and $hashborrowerfields{$_}) } ;
- $query = "UPDATE borrowers SET ".join (",",@parameters)
- ." WHERE borrowernumber=$data{'borrowernumber'}";
-# warn "$query";
- $sth = $dbh->prepare($query);
- $sth->execute;
- }
- else {
- $data{'password'} = md5_base64( $data{'password'} ) if ( $data{'password'} ne '' );
+ } else {
+ $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 $_ ne "flags" and $hashborrowerfields{$_})} ;
-
- $query = "UPDATE borrowers SET ".join (",",@parameters)." WHERE borrowernumber=$data{'borrowernumber'}";
-# warn "$query";
- $sth = $dbh->prepare($query);
- $sth->execute;
}
- $sth->finish;
+ foreach (keys %data)
+ { push @parameters,"$_ = ".$dbh->quote($data{$_}) if ($_ ne 'borrowernumber' and $_ ne 'flags' and $hashborrowerfields{$_}); }
+ $query .= join (',',@parameters) . "\n WHERE borrowernumber=? \n";
+ $debug and print STDERR "$query (executed w/ arg: $data{'borrowernumber'})";
+ $sth = $dbh->prepare($query);
+ $sth->execute($data{'borrowernumber'});
+ $sth->finish;
# ok if its an adult (type) it may have borrowers that depend on it as a guarantor
# so when we update information for an adult we should check for guarantees and update the relevant part
# of their records, ie addresses and phone numbers
my $borrowercategory= GetBorrowercategory( $data{'category_type'} );
- if ( $borrowercategory->{'category_type'} eq 'A' ) {
+ if ( $borrowercategory->{'category_type'} eq ('A' || 'S') ) {
# is adult check guarantees;
UpdateGuarantees(%data);
-
}
&logaction(C4::Context->userenv->{'number'},"MEMBERS","MODIFY",$data{'borrowernumber'},"")
if C4::Context->preference("BorrowersLog");
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'} );
+ # This query should be rewritten to use "?" at execute.
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'} )
- . ",relationship="
- . $dbh->quote( $data{'relationship'} )
- . ",B_streetnumber="
- . $dbh->quote( $data{'B_streetnumber'} )
- . ",B_streettype="
- . $dbh->quote( $data{'B_streettype'} )
- . ",gonenoaddress="
- . $dbh->quote( $data{'gonenoaddress'} )
- . ",lost="
- . $dbh->quote( $data{'lost'} )
- . ",debarred="
- . $dbh->quote( $data{'debarred'} )
- . ",ethnicity="
- . $dbh->quote( $data{'ethnicity'} )
- . ",ethnotes="
- . $dbh->quote( $data{'ethnotes'} );
-
+ "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'} )
+ . ",relationship=" . $dbh->quote( $data{'relationship'} )
+ . ",B_streetnumber=" . $dbh->quote( $data{'B_streetnumber'} )
+ . ",B_streettype=" . $dbh->quote( $data{'B_streettype'} )
+ . ",gonenoaddress=" . $dbh->quote( $data{'gonenoaddress'} )
+ . ",lost=" . $dbh->quote( $data{'lost'} )
+ . ",debarred=" . $dbh->quote( $data{'debarred'} )
+ . ",ethnicity=" . $dbh->quote( $data{'ethnicity'} )
+ . ",ethnotes=" . $dbh->quote( $data{'ethnotes'} );
my $sth = $dbh->prepare($query);
+# print "Executing SQL: $query\n";
$sth->execute;
$sth->finish;
$data{'borrowernumber'} = $dbh->{'mysql_insertid'};
&logaction(C4::Context->userenv->{'number'},"MEMBERS","CREATE",$data{'borrowernumber'},"")
if C4::Context->preference("BorrowersLog");
-
+
+ # check for enrollment fee & add it if needed
+ $sth = $dbh->prepare("SELECT enrolmentfee FROM categories WHERE categorycode=?");
+ $sth->execute($data{'categorycode'});
+ my ($enrolmentfee) = $sth->fetchrow;
+ if ($enrolmentfee) {
+ # insert fee in patron debts
+ manualinvoice($data{'borrowernumber'}, '', '', 'A', $enrolmentfee);
+ }
return $data{'borrowernumber'};
}
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;
}
#my ($type_city) = @_;
my $dbh = C4::Context->dbh;
- my $query = qq|SELECT cityid,city_name
+ my $query = qq|SELECT cityid,city_zipcode,city_name
FROM cities
ORDER BY city_name|;
my $sth = $dbh->prepare($query);
$sth->execute();
my %city;
my @id;
-
# insert empty value to create a empty choice in cgi popup
-
+ push @id, " ";
+ $city{""} = "";
while ( my $data = $sth->fetchrow_hashref ) {
-
- push @id, $data->{'cityid'};
- $city{ $data->{'cityid'} } = $data->{'city_name'};
+ push @id, $data->{'city_zipcode'}."|".$data->{'city_name'};
+ $city{ $data->{'city_zipcode'}."|".$data->{'city_name'} } = $data->{'city_name'};
}
#test to know if the table contain some records if no the function return nothing