From bd80850ca9e1fdb26a448d4afdbab19610ebd5e6 Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Fri, 17 May 2019 14:40:12 +0200 Subject: [PATCH] Bug 22922: Allow reservedate changes only if AllowHoldDateInFuture is on --- C4/Reserves.pm | 28 ++++++++++--------- .../prog/en/includes/holds_table.inc | 8 +++++- reserve/modrequest.pl | 10 +++++-- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 1a1a543a03..15f71311ff 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -908,8 +908,6 @@ sub ModReserve { my $rank = $params->{'rank'}; my $reserve_id = $params->{'reserve_id'}; - my $reservedate = $params->{reservedate} || undef; - my $expirationdate = $params->{expirationdate} || undef; my $branchcode = $params->{'branchcode'}; my $itemnumber = $params->{'itemnumber'}; my $suspend_until = $params->{'suspend_until'}; @@ -938,17 +936,21 @@ sub ModReserve { logaction( 'HOLDS', 'MODIFY', $hold->reserve_id, Dumper($hold->unblessed) ) if C4::Context->preference('HoldsLog'); - $hold->set( - { - priority => $rank, - reservedate => $reservedate, - expirationdate => $expirationdate, - branchcode => $branchcode, - itemnumber => $itemnumber, - found => undef, - waitingdate => undef - } - )->store(); + my $properties = { + priority => $rank, + branchcode => $branchcode, + itemnumber => $itemnumber, + found => undef, + waitingdate => undef + }; + if (exists $params->{reservedate}) { + $properties->{reservedate} = $params->{reservedate} || undef; + } + if (exists $params->{expirationdate}) { + $properties->{expirationdate} = $params->{expirationdate} || undef; + } + + $hold->set($properties)->store(); if ( defined( $suspend_until ) ) { if ( $suspend_until ) { 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 bb4d534ad5..dbb9ccf632 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc @@ -106,7 +106,13 @@ [% hold.notes | html %] - + + [% IF Koha.Preference('AllowHoldDateInFuture') %] + + [% ELSE %] + [% hold.date | $KohaDates %] + [% END %] + diff --git a/reserve/modrequest.pl b/reserve/modrequest.pl index 7e2c18919f..04c1b7d162 100755 --- a/reserve/modrequest.pl +++ b/reserve/modrequest.pl @@ -69,15 +69,19 @@ if ($CancelBorrowerNumber) { else { for (my $i=0;$i<$count;$i++){ undef $itemnumber[$i] if !$itemnumber[$i]; - ModReserve({ + my $params = { rank => $rank[$i], reserve_id => $reserve_id[$i], - reservedate => $reservedates[$i], expirationdate => $expirationdates[$i], branchcode => $branch[$i], itemnumber => $itemnumber[$i], suspend_until => $suspend_until[$i] - }); + }; + if (C4::Context->preference('AllowHoldDateInFuture')) { + $params->{reservedate} = $reservedates[$i]; + } + + ModReserve($params); } } -- 2.20.1