[Koha-patches] [PATCH] Bug 5873 : build_holds_queue.pl : patch to fixup with IssuingRules

Chris Cormack chrisc at catalyst.net.nz
Wed Mar 16 01:55:05 CET 2011


From: Paul Poulain <paul.poulain at biblibre.com>

---
 misc/cronjobs/holds/build_holds_queue.pl |    8 +++++---
 opac/opac-ISBDdetail.pl                  |   13 +++++++++++--
 opac/opac-MARCdetail.pl                  |    4 ++++
 opac/opac-user.pl                        |   13 ++++++++++---
 4 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/misc/cronjobs/holds/build_holds_queue.pl b/misc/cronjobs/holds/build_holds_queue.pl
index b02ab60..edbc4a7 100755
--- a/misc/cronjobs/holds/build_holds_queue.pl
+++ b/misc/cronjobs/holds/build_holds_queue.pl
@@ -21,6 +21,7 @@ use C4::Search;
 use C4::Items;
 use C4::Branch;
 use C4::Circulation;
+use C4::IssuingRules;
 use C4::Members;
 use C4::Biblio;
 
@@ -188,9 +189,10 @@ sub GetItemsAvailableToFillHoldRequestsForBib {
     $sth->execute(@params);
 
     my $items = $sth->fetchall_arrayref({});
-    $items = [ grep { my @transfers = GetTransfers($_->{itemnumber}); $#transfers == -1; } @$items ]; 
-    map { my $rule = GetBranchItemRule($_->{homebranch}, $_->{itype}); $_->{holdallowed} = $rule->{holdallowed}; $rule->{holdallowed} != 0 } @$items;
-    return [ grep { $_->{holdallowed} != 0 } @$items ];
+
+    my $branchfield = C4::Context->preference('HomeOrHoldingBranch');
+
+    return [ grep { my $rule = GetIssuingRule('*', $_->{itype}, $_->{$branchfield}); $_->{reservesallowed} = $rule->{reservesallowed}; $_->{reservesallowed} != 0 } @$items ];
 }
 
 =head2 MapItemsToHoldRequests
diff --git a/opac/opac-ISBDdetail.pl b/opac/opac-ISBDdetail.pl
index e022497..02ed41e 100755
--- a/opac/opac-ISBDdetail.pl
+++ b/opac/opac-ISBDdetail.pl
@@ -53,6 +53,8 @@ use C4::Review;
 use C4::Serials;    # uses getsubscriptionfrom biblionumber
 use C4::Koha;
 use C4::Members;    # GetMember
+use C4::Items;
+use C4::Reserves;
 use C4::External::Amazon;
 
 my $query = CGI->new();
@@ -68,7 +70,6 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
 
 my $biblionumber = $query->param('biblionumber');
 
-$template->param( 'AllowOnShelfHolds' => C4::Context->preference('AllowOnShelfHolds') );
 $template->param( 'ItemsIssued' => CountItemsIssued( $biblionumber ) );
 
 my $marcflavour      = C4::Context->preference("marcflavour");
@@ -122,6 +123,15 @@ $template->param(
 );
 
 my $norequests = 1;
+## Check if an item Can be holds on shelf
+$template->param(C4::Search::enabled_opac_search_views);
+my @all_items = &GetItemsInfo( $biblionumber, 'opac' );
+my $allowonshelfholds = 0;
+for my $item (@all_items){
+    $allowonshelfholds = 1 if(CanHoldOnShelf($item->{itemnumber}) and not $allowonshelfholds);
+}
+$template->param( 'AllowOnShelfHolds' => $allowonshelfholds );
+
 my $res = GetISBDView($biblionumber, "opac");
 my @items = &GetItemsInfo($biblionumber, 'opac');
 
@@ -148,7 +158,6 @@ foreach ( @$reviews ) {
 
 $template->param(
     RequestOnOpac       => C4::Context->preference("RequestOnOpac"),
-    AllowOnShelfHolds   => C4::Context->preference('AllowOnShelfHolds'),
     norequests   => $norequests,
     ISBD         => $res,
     biblionumber => $biblionumber,
diff --git a/opac/opac-MARCdetail.pl b/opac/opac-MARCdetail.pl
index fd909f5..bfd288f 100755
--- a/opac/opac-MARCdetail.pl
+++ b/opac/opac-MARCdetail.pl
@@ -49,6 +49,8 @@ use C4::Output;
 use CGI;
 use MARC::Record;
 use C4::Biblio;
+use C4::Items; #qw/GetItemsInfo GetItemsCount/;
+use C4::Reserves qw/CanHoldOnShelf/;
 use C4::Acquisition;
 use C4::Koha;
 
@@ -82,6 +84,8 @@ $template->param(
 
 $template->param( 'AllowOnShelfHolds' => C4::Context->preference('AllowOnShelfHolds') );
 $template->param( 'ItemsIssued' => CountItemsIssued( $biblionumber ) );
+$template->param( 'ItemsCount' => GetItemsCount( $biblionumber ) );
+$template->param(C4::Search::enabled_opac_search_views);
 
 # adding the $RequestOnOpac param
 my $RequestOnOpac;
diff --git a/opac/opac-user.pl b/opac/opac-user.pl
index 634b77a..7c2910e 100755
--- a/opac/opac-user.pl
+++ b/opac/opac-user.pl
@@ -24,7 +24,7 @@ use CGI;
 use C4::Auth;
 use C4::Koha;
 use C4::Circulation;
-use C4::Reserves;
+use C4::Reserves;# qw/GetMaxPickupDate GetReservesFromBorrowernumber/; 
 use C4::Members;
 use C4::Output;
 use C4::Biblio;
@@ -32,6 +32,7 @@ use C4::Items;
 use C4::Dates qw/format_date/;
 use C4::Letters;
 use C4::Branch; # GetBranches
+use C4::Overdues qw/CheckBorrowerDebarred/;
 
 my $query = new CGI;
 
@@ -64,7 +65,7 @@ for (qw(dateenrolled dateexpiry dateofbirth)) {
 }
 $borr->{'ethnicity'} = fixEthnicity( $borr->{'ethnicity'} );
 
-if ( $borr->{'debarred'} || $borr->{'gonenoaddress'} || $borr->{'lost'} ) {
+if ( CheckBorrowerDebarred($borrowernumber) || $borr->{'gonenoaddress'} || $borr->{'lost'} ) {
     $borr->{'flagged'} = 1;
 }
 
@@ -183,6 +184,7 @@ $template->param( branchloop => \@branch_loop );
 # now the reserved items....
 my @reserves  = GetReservesFromBorrowernumber( $borrowernumber );
 foreach my $res (@reserves) {
+    warn $res->{'waitingdate'};
     $res->{'reservedate'} = format_date( $res->{'reservedate'} );
 
     if ( $res->{'expirationdate'} ne '0000-00-00' ) {
@@ -193,7 +195,12 @@ foreach my $res (@reserves) {
     
     my $publictype = $res->{'publictype'};
     $res->{$publictype} = 1;
-    $res->{'waiting'} = 1 if $res->{'found'} eq 'W';
+    if ($res->{'found'} eq 'W'){
+        $res->{'waiting'} = 1;
+        my @maxpickupdate = $res->{'waitingdate'} ? GetMaxPickupDate( $res->{'waitingdate'}, $borrowernumber, $res ) : '';
+        $res->{'maxpickupdate'} = sprintf("%d-%02d-%02d", @maxpickupdate);
+        $res->{'formattedwaitingdate'} = format_date($res->{'maxpickupdate'});
+    }
     $res->{'branch'} = $branches->{ $res->{'branchcode'} }->{'branchname'};
     my $biblioData = GetBiblioData($res->{'biblionumber'});
     $res->{'reserves_title'} = $biblioData->{'title'};
-- 
1.7.1



More information about the Koha-patches mailing list