This commit fixes a bug in biblio encoding. things were mixed up when reporting item...
[koha.git] / C4 / Members.pm
index 3c95f88..508618d 100644 (file)
@@ -29,7 +29,7 @@ use C4::Log; # logaction
 use C4::Overdues;
 use C4::Reserves;
 
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
+our ($VERSION,@ISA,@EXPORT,@EXPORT_OK);
 
 $VERSION = do { my @v = '$Revision$' =~ /\d+/g; shift(@v) . "." . join( "_", map { sprintf "%03d", $_ } @v ); };
 
@@ -86,7 +86,6 @@ push @EXPORT, qw(
   &GetBorrowersWhoHaveNotBorrowedSince
   &GetBorrowersWhoHaveNeverBorrowed
   &GetBorrowersWithIssuesHistoryOlderThan
-  &GetMembersFromSurname 
   
   &GetExpiryDate
 );
@@ -117,7 +116,9 @@ push @EXPORT, qw(
   &fixEthnicity
   &ethnicitycategories 
   &fixup_cardnumber
+       &checkcardnumber
 );
+
 =item SearchMember
 
   ($count, $borrowers) = &SearchMember($searchstring, $type,$category_type);
@@ -440,8 +441,7 @@ sub patronflags {
         }
         $flags{'ODUES'} = \%flaginfo;
     }
-    my @itemswaiting =
-      GetReservesFromBorrowernumber( $patroninformation->{'borrowernumber'},'W' );
+    my @itemswaiting = GetReservesFromBorrowernumber( $patroninformation->{'borrowernumber'},'W' );
     my $nowaiting = scalar @itemswaiting;
     if ( $nowaiting > 0 ) {
         my %flaginfo;
@@ -994,14 +994,28 @@ C<$issues>.
 sub GetPendingIssues {
     my ($borrowernumber) = @_;
     my $dbh              = C4::Context->dbh;
+
     my $sth              = $dbh->prepare(
-        "Select * from issues,biblio,items where borrowernumber=?
-        and items.itemnumber=issues.itemnumber
-       and items.biblionumber=biblio.biblionumber
-       and issues.returndate is NULL order by date_due"
+   "SELECT * FROM issues 
+      LEFT JOIN items ON issues.itemnumber=items.itemnumber
+      LEFT JOIN biblio ON     items.biblionumber=biblio.biblionumber 
+      LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber
+    WHERE
+      borrowernumber=? 
+      AND returndate IS NULL
+    ORDER BY issues.date_due"
     );
     $sth->execute($borrowernumber);
     my $data = $sth->fetchall_arrayref({});
+    my $today = POSIX::strftime("%Y%m%d", localtime);
+    foreach( @$data ) {
+        my $datedue = $_->{'date_due'};
+        $datedue =~ s/-//g;
+        if ( $datedue < $today ) {
+            $_->{'overdue'} = 1;
+        }
+    }
+    $sth->finish;
     return ( scalar(@$data), $data );
 }
 
@@ -1221,6 +1235,22 @@ sub checkuniquemember {
     }
 }
 
+sub checkcardnumber {
+       my ($cardnumber) = @_;
+       my $dbh = C4::Context->dbh;
+       my $query = "SELECT * FROM borrowers WHERE cardnumber=?";
+       my $sth = $dbh->prepare($query);
+       $sth->execute($cardnumber);
+       if (my $data= $sth->fetchrow_hashref()){
+               return 1;
+       }
+       else {
+               return 0;
+       }
+       $sth->finish();
+}  
+
+
 =head2 getzipnamecity (OUEST-PROVENCE)
 
 take all info from table city for the fields city and  zip
@@ -1484,8 +1514,6 @@ sub add_member_orgs {
 
 }    # sub add_member_orgs
 
-=head2 GetMembersFromSurname
-
 =head2 GetCities (OUEST-PROVENCE)
 
   ($id_cityarrayref, $city_hashref) = &GetCities();
@@ -1595,6 +1623,7 @@ This function remove directly a borrower whitout writing it on deleteborrower.
 sub DelMember {
     my $dbh            = C4::Context->dbh;
     my $borrowernumber = shift;
+       warn "in delmember with $borrowernumber";
     return unless $borrowernumber;    # borrowernumber is mandatory.
 
     my $query = qq|DELETE 
@@ -1608,7 +1637,9 @@ sub DelMember {
        FROM borrowers
        WHERE borrowernumber = ?
    ";
-    my $sth = $dbh->prepare($query);
+    $sth = $dbh->prepare($query);
+    $sth->execute($borrowernumber);
+    $sth->finish;
     &logaction(C4::Context->userenv->{'number'},"MEMBERS","DELETE",$borrowernumber,"") 
         if C4::Context->preference("BorrowersLog");
     return $sth->rows;
@@ -1626,7 +1657,7 @@ sub ExtendMemberSubscriptionTo {
     my $dbh = C4::Context->dbh;
     unless ($date){
       $date=POSIX::strftime("%Y-%m-%d",localtime(time));
-      my $borrower = GetBorrower($borrowerid,'borrowernumber');
+      my $borrower = GetMember($borrowerid,'borrowernumber');
       $date = GetExpiryDate( $borrower->{'categorycode'}, $date );
     }
     my $sth = $dbh->do(<<EOF);