Bugzilla – Attachment 14126 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]
[SIGNED-OFF] 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.38 KB, created by
Kyle M Hall (khall)
on 2012-12-14 14:34:13 UTC
(
hide
)
Description:
[SIGNED-OFF] Bug 9206 - Only allow place holds in records that the patron don't have in his possession
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2012-12-14 14:34:13 UTC
Size:
8.38 KB
patch
obsolete
>From 08ec7d8879ce79dc98ffe13c6b94cf9a12751b99 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 > >Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> >--- > 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 2fb5bd4..cf4b3db 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -395,3 +395,4 @@ INSERT INTO systempreferences (`variable`, `value`, `options`, `explanation`, `t > ('PatronSelfRegistrationExpireTemporaryAccountsDelay', '0', NULL, 'If PatronSelfRegistrationDefaultCategory is enabled, this system preference controls how long a patron can have a temporary status before the account is deleted automatically. It is an integer value representing a number of days to wait before deleting a temporary patron account. Setting it to 0 disables the deleting of temporary accounts.', 'Integer'), > ('PatronSelfRegistrationBorrowerMandatoryField', 'surname|firstname', NULL , 'Choose the mandatory fields for a patron''s account, when registering via the OPAC.', 'free'), > ('PatronSelfRegistrationBorrowerUnwantedField', '', NULL , 'Name the fields you don''t want to display when registering a new patron via the OPAC.', 'free'); >+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 cdc53cb..997b4b5 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -6112,6 +6112,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); >+} >+ >+ > > $DBversion = "3.11.00.005"; > if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { >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..05470eb 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..5449b37 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..d8c99d7 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.2.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