@@ -, +, @@
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 | 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(-)
--- 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
@@ -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,
--- a/Koha/Hold.pm
+++ a/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
--- 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);
@@ -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(
--- 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,7 @@
[% USE Koha %]
[% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
[% USE AuthorisedValues %]
+[% USE Desks %]
[% IF ( CAN_user_reserveforothers_modify_holds_priority ) %]
@@ -122,7 +123,7 @@
[% IF ( hold.found ) %]
[% IF ( hold.atdestination ) %]
- 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 %]
[% ELSIF (hold.intransit) %]
Item being transferred to [% hold.wbrname | html %]
[% ELSIF (hold.inprocessing) %]
--- 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 %]
@@ -37,7 +38,7 @@
[% END %]
[% 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.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => reserveloo.item.location) | html %]
[% reserveloo.item.itemcallnumber | html %]
[% reserveloo.item.copynumber | html %]
--- 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' %]
@@ -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 %]
- 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 %]
@@ -501,7 +502,7 @@
-
+
Confirm hold
--- a/koha-tmpl/intranet-tmpl/prog/js/holds.js
+++ a/koha-tmpl/intranet-tmpl/prog/js/holds.js
@@ -161,9 +161,16 @@ $(document).ready(function() {
if ( oObj.waiting_here ) {
data += __("Item is waiting here ");
+ if (oObj.desk_name) {
+ data += ", " + __("at %s").format( oObj.desk_name );
+ }
} else {
data += __("Item is waiting ");
data += " " + __("at %s").format(oObj.waiting_at);
+ if (oObj.desk_name) {
+ data += ", " + __("at %s").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 %]
[% PROCESS 'i18n.inc' %]
@@ -100,6 +101,7 @@
[% IF ( HOLD.is_at_destination ) %]
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
@@ -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();
--- 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(),
--