Bugzilla – Attachment 13881 Details for
Bug 9206
Only allow place holds in records that the patron don't have in his possession
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
BUG 9206 - Only allow place holds in records that the patron don't have in his possession
BUG-9206---Only-allow-place-holds-in-records-that-.patch (text/plain), 8.15 KB, created by
Vitor Fernandes
on 2012-12-04 15:58:36 UTC
(
hide
)
Description:
BUG 9206 - Only allow place holds in records that the patron don't have in his possession
Filename:
MIME Type:
Creator:
Vitor Fernandes
Created:
2012-12-04 15:58:36 UTC
Size:
8.15 KB
patch
obsolete
>From 21142e0e8790ef6ba6e478f7b8e0bfd93a5b30e6 Mon Sep 17 00:00:00 2001 >From: Vitor FERNANDES <vfernandes@keep.pt> >Date: Tue, 4 Dec 2012 15:57:35 +0000 >Subject: [PATCH] BUG 9206 - Only allow place holds in records that the patron > don't have in his possession > >Added a system preference to turn on/off this feature. >By default the system allow the patron to place holds even if it is in his possession. >Script to place holds check if the system preference is off and if patron has at least one item to block holds. >Messages to say that are already in patron possession added to templates. >Method to check if patron has one issue from one record added to C4::Circulation >wq >--- > C4/Circulation.pm | 21 ++++++++++++++++++++ > installer/data/mysql/sysprefs.sql | 1 + > installer/data/mysql/updatedatabase.pl | 8 ++++++++ > .../en/modules/admin/preferences/circulation.pref | 6 ++++++ > .../prog/en/modules/reserve/request.tt | 3 +++ > .../opac-tmpl/prog/en/modules/opac-reserve.tt | 8 ++++++-- > opac/opac-reserve.pl | 5 +++++ > reserve/request.pl | 8 +++++++- > 8 files changed, 57 insertions(+), 3 deletions(-) > >diff --git a/C4/Circulation.pm b/C4/Circulation.pm >index afe7a6a..dd99b91 100644 >--- a/C4/Circulation.pm >+++ b/C4/Circulation.pm >@@ -3423,6 +3423,27 @@ sub TransferSlip { > ); > } > >+=head2 CheckIfIssuedToPatron >+ >+ CheckIfIssuedToPatron($borrowernumber, $biblionumber) >+ >+ Return 1 if any record item is issued to patron, otherwise return 0 >+ >+=cut >+ >+sub CheckIfIssuedToPatron { >+ my ($borrowernumber, $biblionumber) = @_; >+ my $isissued = 0; >+ >+ my $items = GetItemsByBiblioitemnumber($biblionumber); >+ >+ foreach my $item (@{$items}) { >+ $isissued = 1 if ($item->{borrowernumber} && $item->{borrowernumber} eq $borrowernumber); >+ } >+ >+ return $isissued; >+} >+ > > 1; > >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index 0cc5a54..0c62241 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -388,3 +388,4 @@ INSERT INTO systempreferences (variable, value, options, explanation, type) VALU > INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('HoldsToPullStartDate','2','Set the default start date for the Holds to pull list to this many days ago',NULL,'Integer'); > INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('alphabet','A B C D E F G H I J K L M N O P Q R S T U V W X Y Z','Alphabet than can be expanded into browse links, e.g. on Home > Patrons',NULL,'free'); > INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('RefundLostItemFeeOnReturn', '1', 'If enabled, the lost item fee charged to a borrower will be refunded when the lost item is returned.', NULL, 'YesNo'); >+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowHoldsOnPatronsPossessions', '1', 'Allow holds on records that patron have items of it',NULL,'YesNo'); >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index a6af263..01492a6 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -6113,6 +6113,14 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { > print "Upgrade to $DBversion done (Bug 8782: Add field subscription.closed)\n"; > SetVersion($DBversion); > } >+$DBversion = "XXX"; >+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { >+ $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowHoldsOnPatronsPossessions', '1', 'Allow holds on records that patron have items of it',NULL,'YesNo')" >+ print "Upgrade to $DBversion done (Bug 9206: Only allow place holds in records that the patron don't have in his possession)\n"; >+ SetVersion($DBversion); >+} >+ >+ > > =head1 FUNCTIONS > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >index c188d80..6a8c2da 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >@@ -435,6 +435,12 @@ Circulation: > - pref: decreaseLoanHighHoldsValue > class: integer > - holds. >+ - >+ - pref: AllowHoldsOnPatronsPossessions >+ choices: >+ yes: Allow >+ no: "Don't allow" >+ - patrons to place holds on records that he already have any item of it in his possession. > Fines Policy: > - > - Calculate fines based on days overdue >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >index 0ad5d23..ace2709 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >@@ -213,6 +213,9 @@ function checkMultiHold() { > [% IF ( none_available ) %] > <li> <strong>No copies are available</strong> to be placed on hold</li> > [% END %] >+ [% IF ( alreadypossession ) %] >+ <li> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a> <strong>is already in possesion</strong> of one item</li> >+ [% END %] > </ul> > [% ELSE %] > <h3>Cannot place hold on some items</h3> >diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt >index 8096baf..06e45e3 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt >+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt >@@ -292,8 +292,12 @@ > [% UNLESS ( bibitemloo.bib_available ) %] > <div class="bibmessage">No available items.</div> > [% ELSE %] >- <div class="bibmessage">This title cannot be requested.</div> >- [% END %] >+ [% IF ( bibitemloo.already_patron_possession ) %] >+ <div class="bibmessage">This title cannot be requested because it's already in your possession.</div> >+ [% ELSE %] >+ <div class="bibmessage">This title cannot be requested.</div> >+ [% END %] >+ [% END %] > [% END %] > > >diff --git a/opac/opac-reserve.pl b/opac/opac-reserve.pl >index fbc9dd7..4ff9478 100755 >--- a/opac/opac-reserve.pl >+++ b/opac/opac-reserve.pl >@@ -537,6 +537,11 @@ foreach my $biblioNum (@biblionumbers) { > $biblioLoopIter{holdable} = undef; > $anyholdable = undef; > } >+ if(not C4::Context->preference('AllowHoldsOnPatronsPossessions') and CheckIfIssuedToPatron($borrowernumber,$biblioNum)) { >+ $biblioLoopIter{holdable} = undef; >+ $biblioLoopIter{already_patron_possession} = 1; >+ $anyholdable = undef; >+ } > > push @$biblioLoop, \%biblioLoopIter; > } >diff --git a/reserve/request.pl b/reserve/request.pl >index c34a614..bae1949 100755 >--- a/reserve/request.pl >+++ b/reserve/request.pl >@@ -247,6 +247,11 @@ foreach my $biblionumber (@biblionumbers) { > $warnings = 1; > $maxreserves = 1; > } >+ if (not C4::Context->preference('AllowHoldsOnPatronsPossessions') and CheckIfIssuedToPatron($borrowerinfo->{borrowernumber},$biblionumber)) { >+ $warnings = 1; >+ $alreadypossession = 1; >+ } >+ > # get existing reserves ..... > my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1); > my $totalcount = $count; >@@ -268,7 +273,8 @@ foreach my $biblionumber (@biblionumbers) { > $template->param( alreadyreserved => $alreadyreserved, > messages => $messages, > warnings => $warnings, >- maxreserves=>$maxreserves >+ maxreserves=>$maxreserves, >+ alreadypossession => $alreadypossession, > ); > > >-- >1.7.9.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 9206
:
13881
|
14126
|
14127
|
14266
|
14267
|
14268