@@ -, +, @@ 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. --- 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 | 6 +++++- .../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 | 8 +++++++- .../opac-tmpl/bootstrap/en/includes/holds-table.inc | 5 ++++- reserve/request.pl | 1 + svc/holds | 1 + 12 files changed, 62 insertions(+), 12 deletions(-) --- a/C4/Reserves.pm +++ a/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 @@ -1161,7 +1161,7 @@ sub ModReserveAffect { my $already_on_shelf = $hold->found && $hold->found eq 'W'; $hold->itemnumber($itemnumber); - $hold->set_waiting($transferToDo); + $hold->set_waiting($transferToDo, $desk_id); if( !$transferToDo ){ _koha_notify_reserve( $hold->reserve_id ) unless $already_on_shelf; --- a/Koha/Hold.pm +++ a/Koha/Hold.pm @@ -158,7 +158,7 @@ sub delete { =cut sub set_waiting { - my ( $self, $transferToDo ) = @_; + my ( $self, $transferToDo, $desk_id ) = @_; $self->priority(0); @@ -171,8 +171,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); @@ -321,6 +324,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 --- a/Koha/Template/Plugin/Desks.pm +++ a/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 %] --- a/circ/returns.pl +++ a/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); @@ -414,7 +415,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( hold_auto_filled => 1, --- a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc @@ -1,6 +1,10 @@ [% USE Koha %] +<<<<<<< HEAD [% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %] [% USE AuthorisedValues %] +======= +[% USE Desks %] +>>>>>>> Bug 24412: Attach waiting reserve to desk [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %] @@ -121,7 +125,7 @@ [% IF ( hold.found ) %] [% IF ( hold.atdestination ) %] [% IF ( hold.found ) %] - Item waiting at [% hold.wbrname | html %] since [% hold.waiting_date | $KohaDates %] + Item waiting at [% hold.wbrname | html %][% IF hold.desk_name %], [% hold.desk_name | html %],[% END %] since [% hold.waiting_date | $KohaDates %] [% ELSE %] Waiting to be pulled [% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/includes/waiting_holds.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/waiting_holds.inc @@ -1,4 +1,5 @@ [% USE ItemTypes %] +[% USE Desks %] [% USE AuthorisedValues %]
@@ -38,7 +39,7 @@ [% END %] - + --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt +++ a/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' %] @@ -443,7 +444,7 @@ Note that permanent location is a code, and location may be an authval. [% SET hold = item.first_hold %] [% IF hold %] [% IF hold.waitingdate %] - Waiting at [% Branches.GetName( hold.branchcode ) | html %] since [% hold.waitingdate | $KohaDates %]. + Waiting at [% Branches.GetName( hold.branchcode ) | html %][% IF ( hold.desk_id ) %], [% Desks.GetName ( hold.desk_id ) | html %][% END %] since [% hold.waitingdate | $KohaDates %]. [% IF canreservefromotherbranches AND ( hold.waitingdate OR hold.priority == 1 ) %] Hold for: [% INCLUDE 'patron-title.inc' patron=hold.borrower hide_patron_infos_if_needed=1 %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ a/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 %] @@ -461,7 +462,7 @@ - --- a/koha-tmpl/intranet-tmpl/prog/js/holds.js +++ a/koha-tmpl/intranet-tmpl/prog/js/holds.js @@ -159,9 +159,15 @@ $(document).ready(function() { if ( oObj.waiting_here ) { data += ITEM_IS_WAITING_HERE; + if (oObj.desk_name) { + data += ", " + AT.format( oObj.desk_name ); + } } else { data += ITEM_IS_WAITING; - data += " " + AT.format( oObj.waiting_at ); + data += AT.format( oObj.waiting_at ); + if (oObj.desk_name) { + data += ", " + AT.format( oObj.desk_name ); + } } } else if ( oObj.transferred ) { --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc +++ a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc @@ -1,4 +1,5 @@ [% USE Branches %] +[% USE Desks %] [% USE ItemTypes %] [% USE KohaDates %] @@ -105,7 +106,9 @@ [% IF ( HOLD.is_at_destination ) %] [% IF ( HOLD.found ) %] - Item waiting at [% HOLD.branch.branchname | html %] + + Item waiting at [% HOLD.branch.branchname | html %][% IF ( HOLD.desk_id ) %], [% Desks.GetName ( HOLD.desk_id ) | html %],[% END %] + [% IF ( HOLD.waitingdate ) %] since [% HOLD.waitingdate | $KohaDates %] [% IF HOLD.expirationdate %] --- a/reserve/request.pl +++ a/reserve/request.pl @@ -663,6 +663,7 @@ foreach my $biblionumber (@biblionumbers) { $reserve{'wbrcode'} = $res->branchcode(); $reserve{'itemnumber'} = $res->itemnumber(); $reserve{'wbrname'} = $res->branch()->branchname(); + $reserve{'desk_name'} = $res->desk()->desk_name(); if ( $reserve{'holdingbranch'} eq $reserve{'wbrcode'} ) { --- a/svc/holds +++ a/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(), --
[% Branches.GetName( reserveloo.item.homebranch ) | html %][% Branches.GetName( reserveloo.item.holdingbranch ) | html %][% Branches.GetName( reserveloo.item.holdingbranch ) | html %][% IF (reserveloo.desk_id ) %], [% Desks.GetName (reserveloo.desk_id) | html %][% END %] [% AuthorisedValues.GetByCode('LOC', reserveloo.item.location) | html %] [% reserveloo.item.itemcallnumber | html %] [% reserveloo.item.copynumber | html %]