View | Details | Raw Unified | Return to bug 9367
Collapse All | Expand All

(-)a/C4/Biblio.pm (-10 / +1 lines)
Lines 785-804 sub GetBiblioData { Link Here
785
    my ($bibnum) = @_;
785
    my ($bibnum) = @_;
786
    my $dbh = C4::Context->dbh;
786
    my $dbh = C4::Context->dbh;
787
787
788
    #  my $query =  C4::Context->preference('item-level_itypes') ?
789
    #   " SELECT * , biblioitems.notes AS bnotes, biblio.notes
790
    #       FROM biblio
791
    #        LEFT JOIN biblioitems ON biblio.biblionumber = biblioitems.biblionumber
792
    #       WHERE biblio.biblionumber = ?
793
    #        AND biblioitems.biblionumber = biblio.biblionumber
794
    #";
795
796
    my $query = " SELECT * , biblioitems.notes AS bnotes, itemtypes.notforloan as bi_notforloan, biblio.notes
788
    my $query = " SELECT * , biblioitems.notes AS bnotes, itemtypes.notforloan as bi_notforloan, biblio.notes
797
            FROM biblio
789
            FROM biblio
798
            LEFT JOIN biblioitems ON biblio.biblionumber = biblioitems.biblionumber
790
            LEFT JOIN biblioitems ON biblio.biblionumber = biblioitems.biblionumber
799
            LEFT JOIN itemtypes ON biblioitems.itemtype = itemtypes.itemtype
791
            LEFT JOIN itemtypes ON biblioitems.itemtype = itemtypes.itemtype
800
            WHERE biblio.biblionumber = ?
792
            WHERE biblio.biblionumber = ?";
801
            AND biblioitems.biblionumber = biblio.biblionumber ";
802
793
803
    my $sth = $dbh->prepare($query);
794
    my $sth = $dbh->prepare($query);
804
    $sth->execute($bibnum);
795
    $sth->execute($bibnum);
(-)a/C4/Circulation.pm (-4 / +3 lines)
Lines 2481-2492 sub CanBookBeRenewed { Link Here
2481
			$error="too_many";
2481
			$error="too_many";
2482
		}
2482
		}
2483
		
2483
		
2484
        my ( $resfound, $resrec, undef ) = C4::Reserves::CheckReserves($itemnumber);
2484
        my $resstatus = C4::Reserves::GetReserveStatus($itemnumber);
2485
        if ($resfound) {
2485
        if ( $resstatus eq "Waiting" or $resstatus eq "Reserved" ) {
2486
            $renewokay = 0;
2486
            $renewokay = 0;
2487
			$error="on_reserve"
2487
            $error->{message} = "on_reserve";
2488
        }
2488
        }
2489
2490
    }
2489
    }
2491
    return ($renewokay,$error);
2490
    return ($renewokay,$error);
2492
}
2491
}
(-)a/C4/Reserves.pm (-9 / +24 lines)
Lines 736-750 sub GetReservesForBranch { Link Here
736
}
736
}
737
737
738
sub GetReserveStatus {
738
sub GetReserveStatus {
739
    my ($itemnumber) = @_;
739
    my ($itemnumber, $biblionumber) = @_;
740
    
740
741
    my $dbh = C4::Context->dbh;
741
    my $dbh = C4::Context->dbh;
742
    
742
743
    my $itemstatus = $dbh->prepare("SELECT found FROM reserves WHERE itemnumber = ?");
743
    my ($sth, $found, $priority);
744
    
744
    if ( $itemnumber ) {
745
    $itemstatus->execute($itemnumber);
745
        $sth = $dbh->prepare("SELECT found, priority FROM reserves WHERE itemnumber = ? order by priority LIMIT 1");
746
    my ($found) = $itemstatus->fetchrow_array;
746
        $sth->execute($itemnumber);
747
    return $found;
747
        ($found, $priority) = $sth->fetchrow_array;
748
    }
749
750
    if ( $biblionumber and not defined $found and not defined $priority ) {
751
        $sth = $dbh->prepare("SELECT found, priority FROM reserves WHERE biblionumber = ? order by priority LIMIT 1");
752
        $sth->execute($biblionumber);
753
    } else {
754
        return;
755
    }
756
    ($found, $priority) = $sth->fetchrow_array;
757
758
    return 'Waiting'  if $found eq 'W' and $priority == 0;
759
    return 'Finished' if $found eq 'F';
760
    return 'Reserved' if $priority > 0;
761
    return;
748
}
762
}
749
763
750
=head2 CheckReserves
764
=head2 CheckReserves
Lines 1441-1447 sub IsAvailableForItemLevelRequest { Link Here
1441
    if (C4::Context->preference('AllowOnShelfHolds')) {
1455
    if (C4::Context->preference('AllowOnShelfHolds')) {
1442
        return $available_per_item;
1456
        return $available_per_item;
1443
    } else {
1457
    } else {
1444
        return ($available_per_item and ($item->{onloan} or GetReserveStatus($itemnumber) eq "W")); 
1458
        my $status = GetReserveStatus($itemnumber);
1459
        return ($available_per_item and ($item->{onloan} or $status eq "Waiting" or $status = "Reserved"));
1445
    }
1460
    }
1446
}
1461
}
1447
1462
(-)a/C4/Search.pm (-6 / +5 lines)
Lines 28-34 use C4::Dates qw(format_date); Link Here
28
use C4::Members qw(GetHideLostItemsPreference);
28
use C4::Members qw(GetHideLostItemsPreference);
29
use C4::XSLT;
29
use C4::XSLT;
30
use C4::Branch;
30
use C4::Branch;
31
use C4::Reserves;    # CheckReserves
31
use C4::Reserves;    # GetReserveStatus
32
use C4::Debug;
32
use C4::Debug;
33
use C4::Charset;
33
use C4::Charset;
34
use YAML;
34
use YAML;
Lines 1854-1861 sub searchResults { Link Here
1854
                my ($transfertfrom, $transfertto);
1854
                my ($transfertfrom, $transfertto);
1855
1855
1856
                # is item on the reserve shelf?
1856
                # is item on the reserve shelf?
1857
		my $reservestatus = '';
1857
                my $reservestatus = '';
1858
		my $reserveitem;
1859
1858
1860
                unless ($item->{wthdrawn}
1859
                unless ($item->{wthdrawn}
1861
                        || $item->{itemlost}
1860
                        || $item->{itemlost}
Lines 1876-1882 sub searchResults { Link Here
1876
                    #        should map transit status to record indexed in Zebra.
1875
                    #        should map transit status to record indexed in Zebra.
1877
                    #
1876
                    #
1878
                    ($transfertwhen, $transfertfrom, $transfertto) = C4::Circulation::GetTransfers($item->{itemnumber});
1877
                    ($transfertwhen, $transfertfrom, $transfertto) = C4::Circulation::GetTransfers($item->{itemnumber});
1879
		    ($reservestatus, $reserveitem, undef) = C4::Reserves::CheckReserves($item->{itemnumber});
1878
                    $reservestatus = C4::Reserves::GetReserveStatus( $item->{itemnumber}, $oldbiblio->{biblionumber} );
1880
                }
1879
                }
1881
1880
1882
                # item is withdrawn, lost, damaged, not for loan, reserved or in transit
1881
                # item is withdrawn, lost, damaged, not for loan, reserved or in transit
Lines 1884-1897 sub searchResults { Link Here
1884
                    || $item->{itemlost}
1883
                    || $item->{itemlost}
1885
                    || $item->{damaged}
1884
                    || $item->{damaged}
1886
                    || $item->{notforloan}
1885
                    || $item->{notforloan}
1887
		    || $reservestatus eq 'Waiting'
1886
                    || $reservestatus eq 'Waiting'
1888
                    || ($transfertwhen ne ''))
1887
                    || ($transfertwhen ne ''))
1889
                {
1888
                {
1890
                    $wthdrawn_count++        if $item->{wthdrawn};
1889
                    $wthdrawn_count++        if $item->{wthdrawn};
1891
                    $itemlost_count++        if $item->{itemlost};
1890
                    $itemlost_count++        if $item->{itemlost};
1892
                    $itemdamaged_count++     if $item->{damaged};
1891
                    $itemdamaged_count++     if $item->{damaged};
1893
                    $item_in_transit_count++ if $transfertwhen ne '';
1892
                    $item_in_transit_count++ if $transfertwhen ne '';
1894
		    $item_onhold_count++     if $reservestatus eq 'Waiting';
1893
                    $item_onhold_count++     if $reservestatus eq 'Waiting';
1895
                    $item->{status} = $item->{wthdrawn} . "-" . $item->{itemlost} . "-" . $item->{damaged} . "-" . $item->{notforloan};
1894
                    $item->{status} = $item->{wthdrawn} . "-" . $item->{itemlost} . "-" . $item->{damaged} . "-" . $item->{notforloan};
1896
1895
1897
                    # can place hold on item ?
1896
                    # can place hold on item ?
(-)a/C4/XSLT.pm (-1 / +1 lines)
Lines 247-253 sub buildKohaItemsNamespace { Link Here
247
247
248
        my ( $transfertwhen, $transfertfrom, $transfertto ) = C4::Circulation::GetTransfers($item->{itemnumber});
248
        my ( $transfertwhen, $transfertfrom, $transfertto ) = C4::Circulation::GetTransfers($item->{itemnumber});
249
249
250
	my ( $reservestatus, $reserveitem, undef ) = C4::Reserves::CheckReserves($item->{itemnumber});
250
        my $reservestatus = C4::Reserves::GetReserveStatus( $item->{itemnumber} );
251
251
252
        if ( $itemtypes->{ $item->{itype} }->{notforloan} || $item->{notforloan} || $item->{onloan} || $item->{wthdrawn} || $item->{itemlost} || $item->{damaged} || 
252
        if ( $itemtypes->{ $item->{itype} }->{notforloan} || $item->{notforloan} || $item->{onloan} || $item->{wthdrawn} || $item->{itemlost} || $item->{damaged} || 
253
             (defined $transfertwhen && $transfertwhen ne '') || $item->{itemnotforloan} || (defined $reservestatus && $reservestatus eq "Waiting") ){ 
253
             (defined $transfertwhen && $transfertwhen ne '') || $item->{itemnotforloan} || (defined $reservestatus && $reservestatus eq "Waiting") ){ 
(-)a/circ/circulation.pl (-2 / +2 lines)
Lines 448-457 sub build_issue_data { Link Here
448
            $it->{'borrowernumber'},$it->{'itemnumber'}
448
            $it->{'borrowernumber'},$it->{'itemnumber'}
449
        );
449
        );
450
        $it->{"renew_error_${can_renew_error}"} = 1 if defined $can_renew_error;
450
        $it->{"renew_error_${can_renew_error}"} = 1 if defined $can_renew_error;
451
        my ( $restype, $reserves, undef ) = CheckReserves( $it->{'itemnumber'} );
451
        my $restype = C4::Reserves::GetReserveStatus( $it->{'itemnumber'} );
452
        $it->{'can_renew'} = $can_renew;
452
        $it->{'can_renew'} = $can_renew;
453
        $it->{'can_confirm'} = !$can_renew && !$restype;
453
        $it->{'can_confirm'} = !$can_renew && !$restype;
454
        $it->{'renew_error'} = $restype;
454
        $it->{'renew_error'} = ( $restype eq "Waiting" or $restype eq "Reserved" ) ? 1 : 0;
455
        $it->{'checkoutdate'} = C4::Dates->new($it->{'issuedate'},'iso')->output('syspref');
455
        $it->{'checkoutdate'} = C4::Dates->new($it->{'issuedate'},'iso')->output('syspref');
456
        $it->{'issuingbranchname'} = GetBranchName($it->{'branchcode'});
456
        $it->{'issuingbranchname'} = GetBranchName($it->{'branchcode'});
457
457
(-)a/members/moremember.pl (-1 lines)
Lines 47-53 use C4::Circulation; Link Here
47
use C4::Koha;
47
use C4::Koha;
48
use C4::Letters;
48
use C4::Letters;
49
use C4::Biblio;
49
use C4::Biblio;
50
use C4::Reserves;
51
use C4::Branch; # GetBranchName
50
use C4::Branch; # GetBranchName
52
use C4::Overdues qw/CheckBorrowerDebarred/;
51
use C4::Overdues qw/CheckBorrowerDebarred/;
53
use C4::Form::MessagingPreferences;
52
use C4::Form::MessagingPreferences;
(-)a/opac/opac-detail.pl (-1 / +1 lines)
Lines 554-560 for my $itm (@items) { Link Here
554
         $itm->{'lostimageurl'}   = $lostimageinfo->{ 'imageurl' };
554
         $itm->{'lostimageurl'}   = $lostimageinfo->{ 'imageurl' };
555
         $itm->{'lostimagelabel'} = $lostimageinfo->{ 'label' };
555
         $itm->{'lostimagelabel'} = $lostimageinfo->{ 'label' };
556
     }
556
     }
557
     my ($reserve_status) = C4::Reserves::CheckReserves($itm->{itemnumber});
557
     my $reserve_status = C4::Reserves::GetReserveStatus($itm->{itemnumber});
558
      if( $reserve_status eq "Waiting"){ $itm->{'waiting'} = 1; }
558
      if( $reserve_status eq "Waiting"){ $itm->{'waiting'} = 1; }
559
      if( $reserve_status eq "Reserved"){ $itm->{'onhold'} = 1; }
559
      if( $reserve_status eq "Reserved"){ $itm->{'onhold'} = 1; }
560
    
560
    
(-)a/opac/opac-user.pl (-2 / +1 lines)
Lines 158-164 my $issues = GetPendingIssues($borrowernumber); Link Here
158
if ($issues){
158
if ($issues){
159
    foreach my $issue ( sort { $b->{date_due}->datetime() cmp $a->{date_due}->datetime() } @{$issues} ) {
159
    foreach my $issue ( sort { $b->{date_due}->datetime() cmp $a->{date_due}->datetime() } @{$issues} ) {
160
        # check for reserves
160
        # check for reserves
161
        my ( $restype, $res, undef ) = CheckReserves( $issue->{'itemnumber'} );
161
        my $restype = GetReserveStatus( $issue->{'itemnumber'} );
162
        if ( $restype ) {
162
        if ( $restype ) {
163
            $issue->{'reserved'} = 1;
163
            $issue->{'reserved'} = 1;
164
        }
164
        }
165
- 

Return to bug 9367