Bugzilla – Attachment 112166 Details for
Bug 24412
Attach waiting hold to desk
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 24412: Attach waiting reserve to desk
Bug-24412-Attach-waiting-reserve-to-desk.patch (text/plain), 14.56 KB, created by
Nicolas Legrand
on 2020-10-22 11:39:47 UTC
(
hide
)
Description:
Bug 24412: Attach waiting reserve to desk
Filename:
MIME Type:
Creator:
Nicolas Legrand
Created:
2020-10-22 11:39:47 UTC
Size:
14.56 KB
patch
obsolete
>From 3646437c5c7572bc889a2fcd1c46efd4c9b4878c Mon Sep 17 00:00:00 2001 >From: Nicolas Legrand <nicolas.legrand@bulac.fr> >Date: Mon, 13 Jan 2020 17:56:41 +0100 >Subject: [PATCH] Bug 24412: Attach waiting reserve to desk > >When an item is checked in and marked 'Waiting' or already 'Waiting' >and there is a desk attached to the session, the item is marked >waiting at the current desk of the current library. > >The information is displayed on the OPAC and on the intranet. The >patron can then know at which desk he can retrieve his document. > >Desk Management (Bug 13881) is now useful. > >Test plan : > >1. apply Bug 24201 >2. $KOHA_PATH/installer/data/mysql/updatedatabase.pl >3. Check out some document to someone >4. make another one reserve this document >5. check in the document >6. you can see the document is attach to the current library >7. create some desks and attach one to your session (see Bug 13881 and >Bug 24201) >8. cancel the preceding reserve and redo steps 3 to 5 >9. you should see the document is waiting at the current library and >current desk on: > a. the intranet document request page > b. the intranet borrower holds tab > c. the item list where the document is listed on the bibliographic > details > d. the borrower's OPAC holds tab. > >Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> >--- > C4/Reserves.pm | 6 +++--- > Koha/Hold.pm | 19 ++++++++++++++++++- > Koha/Template/Plugin/Desks.pm | 14 ++++++++++++++ > circ/returns.pl | 5 +++-- > .../intranet-tmpl/prog/en/includes/holds_table.inc | 3 ++- > .../intranet-tmpl/prog/en/includes/waiting_holds.inc | 3 ++- > .../intranet-tmpl/prog/en/modules/catalogue/detail.tt | 3 ++- > .../intranet-tmpl/prog/en/modules/circ/returns.tt | 3 ++- > koha-tmpl/intranet-tmpl/prog/js/holds.js | 7 +++++++ > .../opac-tmpl/bootstrap/en/includes/holds-table.inc | 2 ++ > reserve/request.pl | 1 + > svc/holds | 1 + > 12 files changed, 57 insertions(+), 10 deletions(-) > >diff --git a/C4/Reserves.pm b/C4/Reserves.pm >index d971324..d36b4a3 100644 >--- a/C4/Reserves.pm >+++ b/C4/Reserves.pm >@@ -1122,7 +1122,7 @@ sub ModReserveStatus { > > =head2 ModReserveAffect > >- &ModReserveAffect($itemnumber,$borrowernumber,$diffBranchSend,$reserve_id); >+ &ModReserveAffect($itemnumber,$borrowernumber,$diffBranchSend,$reserve_id, $desk_id); > > This function affect an item and a status for a given reserve, either fetched directly > by record_id, or by borrowernumber and itemnumber or biblionumber. If only biblionumber >@@ -1136,7 +1136,7 @@ take care of the waiting status > =cut > > sub ModReserveAffect { >- my ( $itemnumber, $borrowernumber, $transferToDo, $reserve_id ) = @_; >+ my ( $itemnumber, $borrowernumber, $transferToDo, $reserve_id, $desk_id ) = @_; > my $dbh = C4::Context->dbh; > > # we want to attach $itemnumber to $borrowernumber, find the biblionumber >@@ -1169,7 +1169,7 @@ sub ModReserveAffect { > && !$already_on_shelf) { > $hold->set_processing(); > } else { >- $hold->set_waiting(); >+ $hold->set_waiting($desk_id); > _koha_notify_reserve( $hold->reserve_id ) unless $already_on_shelf; > my $transfers = Koha::Item::Transfers->search({ > itemnumber => $itemnumber, >diff --git a/Koha/Hold.pm b/Koha/Hold.pm >index 921906a..522bfc1 100644 >--- a/Koha/Hold.pm >+++ b/Koha/Hold.pm >@@ -175,7 +175,7 @@ sub set_transfer { > =cut > > sub set_waiting { >- my ( $self ) = @_; >+ my ( $self, $desk_id ) = @_; > > $self->priority(0); > >@@ -183,8 +183,11 @@ sub set_waiting { > my $values = { > found => 'W', > waitingdate => $today->ymd, >+ desk_id => $desk_id, > }; > >+ if (defined $desk_id) { $values->{'desk_id'} = $desk_id }; >+ > my $requested_expiration; > if ($self->expirationdate) { > $requested_expiration = dt_from_string($self->expirationdate); >@@ -365,6 +368,20 @@ sub branch { > return $self->{_branch}; > } > >+=head3 desk >+ >+Returns the related Koha::Library object for this Hold >+ >+=cut >+ >+sub desk { >+ my ($self) = @_; >+ >+ $self->{_desk} ||= Koha::Desks->find( $self->desk_id() ); >+ >+ return $self->{_desk}; >+} >+ > =head3 borrower > > Returns the related Koha::Patron object for this Hold >diff --git a/Koha/Template/Plugin/Desks.pm b/Koha/Template/Plugin/Desks.pm >index 58e1001..0817948 100644 >--- a/Koha/Template/Plugin/Desks.pm >+++ b/Koha/Template/Plugin/Desks.pm >@@ -36,6 +36,20 @@ got or the current one. > > =head2 Methods > >+=head3 GetName >+ >+[% Desk.GetName(desk_id) %] >+ >+return desk name or empty string >+ >+=cut >+ >+sub GetName { >+ my ( $self, $desk_id ) = @_; >+ my $d = Koha::Desks->find( $desk_id ); >+ return (defined $d) ? $d->unblessed->{'desk_name'} : q{}; >+} >+ > =head3 GetLoggedInDeskId > > [% Desks.GetLoggedInDeskId %] >diff --git a/circ/returns.pl b/circ/returns.pl >index bd59f6c..d9a5dc0 100755 >--- a/circ/returns.pl >+++ b/circ/returns.pl >@@ -71,6 +71,7 @@ my ( $template, $librarian, $cookie, $flags ) = get_template_and_user( > > my $sessionID = $query->cookie("CGISESSID"); > my $session = get_session($sessionID); >+my $desk_id = C4::Context->userenv->{"desk_id"} || ''; > > # Print a reserve slip on this page > if ( $query->param('print_slip') ) { >@@ -155,7 +156,7 @@ if ( $query->param('reserve_id') ) { > my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef; > # diffBranchSend tells ModReserveAffect whether document is expected in this library or not, > # i.e., whether to apply waiting status >- ModReserveAffect( $itemnumber, $borrowernumber, $diffBranchSend, $reserve_id ); >+ ModReserveAffect( $itemnumber, $borrowernumber, $diffBranchSend, $reserve_id, $desk_id ); > } > # check if we have other reserves for this document, if we have a return send the message of transfer > my ( $messages, $nextreservinfo ) = GetOtherReserves($itemnumber); >@@ -422,7 +423,7 @@ if ( $messages->{'ResFound'}) { > my $biblio = $item->biblio; > > my $diffBranchSend = !$branchCheck ? $reserve->{branchcode} : undef; >- ModReserveAffect( $reserve->{itemnumber}, $reserve->{borrowernumber}, $diffBranchSend, $reserve->{reserve_id} ); >+ ModReserveAffect( $reserve->{itemnumber}, $reserve->{borrowernumber}, $diffBranchSend, $reserve->{reserve_id}, $desk_id ); > my ( $messages, $nextreservinfo ) = GetOtherReserves($reserve->{itemnumber}); > > $template->param( >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc >index 40b28e3..5aae39c 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc >@@ -1,6 +1,7 @@ > [% USE Koha %] > [% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %] > [% USE AuthorisedValues %] >+[% USE Desks %] > <table> > <tr> > [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %] >@@ -122,7 +123,7 @@ > <td> > [% IF ( hold.found ) %] > [% IF ( hold.atdestination ) %] >- Item waiting at <strong> [% hold.wbrname | html %]</strong> <input type="hidden" name="pickup" value="[% hold.wbrcode | html %]" /> since [% hold.waiting_date | $KohaDates %] >+ Item waiting at <strong> [% hold.wbrname | html %]</strong>[% IF hold.desk_name %], [% hold.desk_name | html %],[% END %] <input type="hidden" name="pickup" value="[% hold.wbrcode | html %]" /> since [% hold.waiting_date | $KohaDates %] > [% ELSIF (hold.intransit) %] > Item being transferred to <strong> [% hold.wbrname | html %]</strong> <input type="hidden" name="pickup" value="[% hold.wbrcode | html %]" /> > [% ELSIF (hold.inprocessing) %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/waiting_holds.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/waiting_holds.inc >index 4b294d3..5c7922d 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/waiting_holds.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/waiting_holds.inc >@@ -1,4 +1,5 @@ > [% USE ItemTypes %] >+[% USE Desks %] > [% USE AuthorisedValues %] > <table id="[% table_name | html %]"> > <thead> >@@ -37,7 +38,7 @@ > [% END %] > </td> > <td>[% Branches.GetName( reserveloo.item.homebranch ) | html %]</td> >- <td>[% Branches.GetName( reserveloo.item.holdingbranch ) | html %]</td> >+ <td>[% Branches.GetName( reserveloo.item.holdingbranch ) | html %][% IF (reserveloo.desk_id ) %], [% Desks.GetName (reserveloo.desk_id) | html %][% END %]</td> > <td>[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => reserveloo.item.location) | html %]</td> > <td>[% reserveloo.item.itemcallnumber | html %]</td> > <td>[% reserveloo.item.copynumber | html %]</td> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >index 296b2ee..45f60f3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >@@ -4,6 +4,7 @@ > [% USE KohaDates %] > [% USE AuthorisedValues %] > [% USE Branches %] >+[% USE Desks %] > [% USE Biblio %] > [% USE TablesSettings %] > [% PROCESS 'i18n.inc' %] >@@ -460,7 +461,7 @@ Note that permanent location is a code, and location may be an authval. > [% SET hold = item.first_hold %] > [% IF hold %] > [% IF hold.waitingdate %] >- <span class="waitingat">Waiting at [% Branches.GetName( hold.branchcode ) | html %] since [% hold.waitingdate | $KohaDates %].</span> >+ <span class="waitingat">Waiting at [% Branches.GetName( hold.branchcode ) | html %][% IF ( hold.desk_id ) %], [% Desks.GetName ( hold.desk_id ) | html %][% END %] since [% hold.waitingdate | $KohaDates %].</span> > [% IF canreservefromotherbranches AND ( hold.waitingdate OR hold.priority == 1 ) %] > <span class="heldfor">Hold for:</span> > [% INCLUDE 'patron-title.inc' patron=hold.borrower hide_patron_infos_if_needed=1 %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >index b96eafa..6079948 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >@@ -2,6 +2,7 @@ > [% USE Asset %] > [% USE KohaDates %] > [% USE Branches %] >+[% USE Desks %] > [% USE Koha %] > [% USE ItemTypes %] > [% USE AuthorisedValues %] >@@ -501,7 +502,7 @@ > <input type="hidden" name="cancel_reserve" value="0" /> > <input type="hidden" name="barcode" value="[% barcode | html %]" /> > >- <button type="submit" class="btn btn-default approve" data-dismiss="modal"> >+ <button type="submit" class="btn btn-default approve" [% IF ( Desks.ListForLibrary ) %]data-dismiss="modal" [% END %]> > <i class="fa fa-check"></i> Confirm hold > </button> > >diff --git a/koha-tmpl/intranet-tmpl/prog/js/holds.js b/koha-tmpl/intranet-tmpl/prog/js/holds.js >index 673494d..0ebc0d6 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/holds.js >+++ b/koha-tmpl/intranet-tmpl/prog/js/holds.js >@@ -161,9 +161,16 @@ $(document).ready(function() { > > if ( oObj.waiting_here ) { > data += __("Item is <strong>waiting here</strong>"); >+ if (oObj.desk_name) { >+ data += ", " + __("at %s").format( oObj.desk_name ); >+ } > } else { > data += __("Item is <strong>waiting</strong>"); > data += " " + __("at %s").format(oObj.waiting_at); >+ if (oObj.desk_name) { >+ data += ", " + __("at %s").format( oObj.desk_name ); >+ } >+ > } > > } else if ( oObj.transferred ) { >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc >index 1be9599..1bb3739 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc >@@ -1,4 +1,5 @@ > [% USE Branches %] >+[% USE Desks %] > [% USE ItemTypes %] > [% USE KohaDates %] > [% PROCESS 'i18n.inc' %] >@@ -100,6 +101,7 @@ > <i class="fa fa-exclamation-circle text-warning" aria-hidden="true"></i> > [% IF ( HOLD.is_at_destination ) %] > Item waiting at <strong> [% HOLD.branch.branchname | html %]</strong> >+ [% IF ( HOLD.desk_id ) %], [% Desks.GetName ( HOLD.desk_id ) | html %],[% END %] > [% IF ( HOLD.waitingdate ) %] > since [% HOLD.waitingdate | $KohaDates %] > [% IF HOLD.expirationdate %] >diff --git a/reserve/request.pl b/reserve/request.pl >index 503a676..a6aebaf 100755 >--- a/reserve/request.pl >+++ b/reserve/request.pl >@@ -664,6 +664,7 @@ foreach my $biblionumber (@biblionumbers) { > $reserve{'itemnumber'} = $res->itemnumber(); > $reserve{'wbrname'} = $res->branch()->branchname(); > $reserve{'atdestination'} = $res->is_at_destination(); >+ $reserve{'desk_name'} = $res->desk()->desk_name(); > $reserve{'found'} = $res->is_found(); > $reserve{'inprocessing'} = $res->is_in_processing(); > $reserve{'intransit'} = $res->is_in_transit(); >diff --git a/svc/holds b/svc/holds >index 1a2fc33..5a60f3c 100755 >--- a/svc/holds >+++ b/svc/holds >@@ -97,6 +97,7 @@ while ( my $h = $holds_rs->next() ) { > reserve_id => $h->reserve_id(), > branchcode => $h->branch()->branchname(), > branches => $libraries, >+ desk_name => $h->desk()->desk_name(), > reservedate => $h->reservedate(), > expirationdate => $h->expirationdate(), > suspend => $h->suspend(), >-- >2.1.4
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 24412
:
97328
|
97329
|
97330
|
101625
|
101626
|
101627
|
101628
|
101629
|
101630
|
101721
|
101722
|
101723
|
101825
|
101884
|
101885
|
101886
|
101898
|
101899
|
101900
|
101955
|
101956
|
101957
|
106586
|
106648
|
110067
|
110068
|
110069
|
110070
|
110450
|
110451
|
110452
|
110453
|
110454
|
110455
|
110582
|
110583
|
110584
|
110585
|
110586
|
112046
|
112047
|
112048
|
112049
|
112050
|
112092
|
112099
|
112165
|
112166
|
112167
|
112168
|
112169
|
112170
|
112171
|
112172
|
112201
|
112202
|
112203
|
112204
|
112205
|
112206
|
112207
|
112208
|
112209
|
112210
|
112211
|
112212
|
112213
|
112214
|
112215
|
112216
|
112217
|
112218
|
112219
|
112264
|
112265
|
112266
|
112267
|
112268
|
112269
|
112270
|
112271
|
112272
|
112292
|
112293
|
113108
|
113109
|
113116
|
113228
|
113229
|
113230
|
113231
|
113232
|
113233
|
113234
|
113235
|
113236