Merge remote-tracking branch 'origin/new/bug_6328'
authorPaul Poulain <paul.poulain@biblibre.com>
Thu, 19 Jan 2012 15:50:49 +0000 (16:50 +0100)
committerPaul Poulain <paul.poulain@biblibre.com>
Thu, 19 Jan 2012 15:50:49 +0000 (16:50 +0100)
1  2 
C4/Circulation.pm

diff --combined C4/Circulation.pm
@@@ -43,6 -43,7 +43,7 @@@ use Date::Calc qw
    Day_of_Week
    Add_Delta_Days      
    check_date
+   Delta_Days
  );
  use POSIX qw(strftime);
  use C4::Branch; # GetBranches
@@@ -319,7 -320,7 +320,7 @@@ sub transferbook 
  
      # find reserves.....
      # That'll save a database query.
 -    my ( $resfound, $resrec ) =
 +    my ( $resfound, $resrec, undef ) =
        CheckReserves( $itemnumber );
      if ( $resfound and not $ignoreRs ) {
          $resrec->{'ResFound'} = $resfound;
@@@ -869,7 -870,7 +870,7 @@@ sub CanBookBeIssued 
      }
  
      # See if the item is on reserve.
 -    my ( $restype, $res ) = C4::Reserves::CheckReserves( $item->{'itemnumber'} );
 +    my ( $restype, $res, undef ) = C4::Reserves::CheckReserves( $item->{'itemnumber'} );
      if ($restype) {
                my $resbor = $res->{'borrowernumber'};
                my ( $resborrower ) = C4::Members::GetMember( borrowernumber => $resbor );
@@@ -983,7 -984,39 +984,7 @@@ sub AddIssue 
                                );
                        }
  
 -                      # See if the item is on reserve.
 -                      my ( $restype, $res ) =
 -                        C4::Reserves::CheckReserves( $item->{'itemnumber'} );
 -                      if ($restype) {
 -                              my $resbor = $res->{'borrowernumber'};
 -                              if ( $resbor eq $borrower->{'borrowernumber'} ) {
 -                                      # The item is reserved by the current patron
 -                                      ModReserveFill($res);
 -                              }
 -                              elsif ( $restype eq "Waiting" ) {
 -                                      # warn "Waiting";
 -                                      # The item is on reserve and waiting, but has been
 -                                      # reserved by some other patron.
 -                              }
 -                              elsif ( $restype eq "Reserved" ) {
 -                                      # warn "Reserved";
 -                                      # The item is reserved by someone else.
 -                                      if ($cancelreserve) { # cancel reserves on this item
 -                                              CancelReserve(0, $res->{'itemnumber'}, $res->{'borrowernumber'});
 -                                      }
 -                              }
 -                              if ($cancelreserve) {
 -                                      CancelReserve($res->{'biblionumber'}, 0, $res->{'borrowernumber'});
 -                              }
 -                              else {
 -                                      # set waiting reserve to first in reserve queue as book isn't waiting now
 -                                      ModReserve(1,
 -                                              $res->{'biblionumber'},
 -                                              $res->{'borrowernumber'},
 -                                              $res->{'branchcode'}
 -                                      );
 -                              }
 -                      }
 +            MoveReserve( $item->{'itemnumber'}, $borrower->{'borrowernumber'}, $cancelreserve );
  
                        # Starting process for transfer job (checking transfert and validate it if we have one)
              my ($datesent) = GetTransfers($item->{'itemnumber'});
@@@ -1608,7 -1641,7 +1609,7 @@@ sub AddReturn 
  
      # find reserves.....
      # if we don't have a reserve with the status W, we launch the Checkreserves routine
 -    my ($resfound, $resrec) = C4::Reserves::CheckReserves( $item->{'itemnumber'} );
 +    my ($resfound, $resrec, undef) = C4::Reserves::CheckReserves( $item->{'itemnumber'} );
      if ($resfound) {
            $resrec->{'ResFound'} = $resfound;
          $messages->{'ResFound'} = $resrec;
@@@ -2226,7 -2259,7 +2227,7 @@@ sub CanBookBeRenewed 
                        $error="too_many";
                }
                
 -        my ( $resfound, $resrec ) = C4::Reserves::CheckReserves($itemnumber);
 +        my ( $resfound, $resrec, undef ) = C4::Reserves::CheckReserves($itemnumber);
          if ($resfound) {
              $renewokay = 0;
                        $error="on_reserve"
@@@ -2989,7 -3022,7 +2990,7 @@@ sub ReturnLostItem
  
  
  sub LostItem{
 -    my ($itemnumber, $mark_returned) = @_;
 +    my ($itemnumber, $mark_returned, $charge_fee) = @_;
  
      my $dbh = C4::Context->dbh();
      my $sth=$dbh->prepare("SELECT issues.*,items.*,biblio.title 
      # if a borrower lost the item, add a replacement cost to the their record
      if ( my $borrowernumber = $issues->{borrowernumber} ){
  
 -        C4::Accounts::chargelostitem($borrowernumber, $itemnumber, $issues->{'replacementprice'}, "Lost Item $issues->{'title'} $issues->{'barcode'}");
 +        C4::Accounts::chargelostitem($borrowernumber, $itemnumber, $issues->{'replacementprice'}, "Lost Item $issues->{'title'} $issues->{'barcode'}")
 +          if $charge_fee;
          #FIXME : Should probably have a way to distinguish this from an item that really was returned.
          #warn " $issues->{'borrowernumber'}  /  $itemnumber ";
          MarkIssueReturned($borrowernumber,$itemnumber) if $mark_returned;