Bug 36762: Allow to ignore hold when creating a transfer

When one tries to transfer an item that could fill a pending hold
to a library that is not the holds pickup library, Koha gives only
a option to transfer item to pickup library. This patch adds
new option to ignore hold and transfer item to the library user
selected in transfer tool.

To test:
1. Log into Library A.
2. Find or create a biblio with 1 holdable item at Library A.
3. Place a hold for the biblio with pickup at Library B.
4. Navigate to Circulation > Transfers.
5. Attempt to transfer item to Library C.
=> Note that Koha only allows to transfer item to Library B,
cancel hold and attempt transfer or return to the transfer tool.
6. Apply this patch.
7. Attempt to transfer item again.
=> Note that there is now an option to ignore the hold and transfer
item to Library C.
=> When option to transfer item to the Library C is selected, confirm
that Koha tells that transfer was made to Library C and a new transfer
was made to database.

Sponsored-by: Koha-Suomi Oy
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Andrew Fuerste Henry <andrew@bywatersolutions.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Emmi Takkinen 2026-05-15 15:16:19 +03:00 committed by Lucas Gass
parent b7c0e28bb6
commit 0a9d8bf111
No known key found for this signature in database
GPG Key ID: 60B447398B0D36CA
2 changed files with 17 additions and 0 deletions

View File

@ -98,6 +98,10 @@ if ( $op eq "cud-KillWaiting" ) {
$cancelled = 1;
$reqmessage = 1;
} # FIXME else?
} elsif ( $op eq "cud-IgnoreHold" ) {
$ignoreRs = 1;
$settransit = 1;
$op = 'cud-transfer';
} elsif ( $op eq "cud-SetTransit" ) {
my $item = $query->param('itemnumber');
my $reserve_id = $query->param('reserve_id');

View File

@ -138,6 +138,19 @@
</form>
</div>
[% IF ( reserved && hold.branchcode != tobranchcd ) %]
<div>
<form method="post" action="branchtransfers.pl">
[% INCLUDE 'csrf-token.inc' %]
[% PROCESS transfer_hidden_fields %]
<input type="hidden" name="tobranchcd" value="[% tobranchcd | html %]" />
<input type="hidden" name="barcode" value="[% barcode | html %]" />
<input type="hidden" name="op" value="cud-IgnoreHold" />
<button type="submit" class="btn btn-default"><i class="fa fa-ban"></i> Ignore hold and transfer to [% Branches.GetName( tobranchcd ) | html %]</button>
</form>
</div>
[% END %]
[% IF ( reserved ) %]
<div>
<form method="post" action="branchtransfers.pl">