Bug 24434: Reinstate updateWrongTransfer
This patch re-instates the call to updateWrongTransfer to ensure the
transfer line is updated to reflect the new frombranch.
Test plan
note: when applying the patches, also update the database
1/ Check an item out from it's home library
2/ Check the item in at another library
(with AutomaticItemReturn system preferences enabled)
2a/ Accept the transfer and note we now have a transfer present from the
items check-in library to it's home library
3/ Check the item in at a third library
3a/ Note you are asked to return the item to it's home library.
3b/ With the patch applied, the modal title should highlight that a
'Wrong transfer' was detected.
4/ Go to the item record and note the holding library has been updated
to reflect where the item was most recently checked in.
4a/ With the patch applied the item status should reflect the last
checked in branch as the 'from' branch of the transfer.
5/ check-in from a 4th library, but use the 'Print slip' option for
accepting the transfer and confirm that also works.
6/ check-in from a 5th library, but use the 'Cancel' option and check
that this results in the item staying at it's current location and the
final transfer having been cancelled.
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
parent
b0f9033f13
commit
b031ec5845
|
|
@ -2175,6 +2175,7 @@ sub AddReturn {
|
|||
else {
|
||||
$messages->{'WrongTransfer'} = $transfer->tobranch;
|
||||
$messages->{'WrongTransferItem'} = $item->itemnumber;
|
||||
$messages->{'TransferTrigger'} = $transfer->reason;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
@ -3589,19 +3590,24 @@ This function validate the line of brachtransfer but with the wrong destination
|
|||
|
||||
sub updateWrongTransfer {
|
||||
my ( $itemNumber,$waitingAtLibrary,$FromLibrary ) = @_;
|
||||
my $dbh = C4::Context->dbh;
|
||||
# first step validate the actual line of transfert .
|
||||
my $sth =
|
||||
$dbh->prepare(
|
||||
"update branchtransfers set datearrived = now(),tobranch=?,comments='wrongtransfer' where itemnumber= ? AND datearrived IS NULL"
|
||||
);
|
||||
$sth->execute($FromLibrary,$itemNumber);
|
||||
|
||||
# second step create a new line of branchtransfer to the right location .
|
||||
ModItemTransfer($itemNumber, $FromLibrary, $waitingAtLibrary);
|
||||
# first step: cancel the original transfer
|
||||
my $item = Koha::Items->find($itemNumber);
|
||||
my $transfer = $item->get_transfer;
|
||||
$transfer->set({ datecancelled => dt_from_string, cancellation_reason => 'WrongTransfer' })->store();
|
||||
|
||||
#third step changing holdingbranch of item
|
||||
my $item = Koha::Items->find($itemNumber)->holdingbranch($FromLibrary)->store;
|
||||
# second step: create a new transfer to the right location
|
||||
my $new_transfer = $item->request_transfer(
|
||||
{
|
||||
to => $transfer->to_library,
|
||||
reason => $transfer->reason,
|
||||
comment => $transfer->comments,
|
||||
ignore_limits => 1,
|
||||
enqueue => 1
|
||||
}
|
||||
);
|
||||
|
||||
return $new_transfer;
|
||||
}
|
||||
|
||||
=head2 CalcDateDue
|
||||
|
|
|
|||
|
|
@ -66,6 +66,20 @@ sub from_library {
|
|||
return Koha::Library->_new_from_dbic($from_library_rs);
|
||||
}
|
||||
|
||||
=head3 to_library
|
||||
|
||||
my $to_library = $transfer->to_library;
|
||||
|
||||
Returns the associated to_library for this transfer.
|
||||
|
||||
=cut
|
||||
|
||||
sub to_library {
|
||||
my ($self) = @_;
|
||||
my $to_library_rs = $self->_result->tobranch;
|
||||
return Koha::Library->_new_from_dbic($to_library_rs);
|
||||
}
|
||||
|
||||
=head3 transit
|
||||
|
||||
Set the transfer as in transit by updating the datesent time.
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ use Koha::Checkouts;
|
|||
use Koha::DateUtils;
|
||||
use Koha::Holds;
|
||||
use Koha::Items;
|
||||
use Koha::Item::Transfers;
|
||||
use Koha::Patrons;
|
||||
|
||||
my $query = CGI->new;
|
||||
|
|
@ -132,11 +133,6 @@ foreach ( $query->param ) {
|
|||
|
||||
############
|
||||
# Deal with the requests....
|
||||
|
||||
if ($query->param('WT-itemNumber')){
|
||||
updateWrongTransfer ($query->param('WT-itemNumber'),$query->param('WT-waitingAt'),$query->param('WT-From'));
|
||||
}
|
||||
|
||||
my $itemnumber = $query->param('itemnumber');
|
||||
if ( $query->param('reserve_id') ) {
|
||||
my $borrowernumber = $query->param('borrowernumber');
|
||||
|
|
@ -190,6 +186,7 @@ if (
|
|||
my $dropboxmode = $query->param('dropboxmode');
|
||||
my $dotransfer = $query->param('dotransfer');
|
||||
my $canceltransfer = $query->param('canceltransfer');
|
||||
my $transit = $query->param('transit');
|
||||
my $dest = $query->param('dest');
|
||||
#dropbox: get last open day (today - 1)
|
||||
my $dropboxdate = Koha::Checkouts::calculate_dropbox_date();
|
||||
|
|
@ -227,7 +224,15 @@ if ($dotransfer){
|
|||
ModItemTransfer($transferitem, $userenv_branch, $tobranch, $trigger);
|
||||
}
|
||||
|
||||
if ($canceltransfer){
|
||||
if ($transit) {
|
||||
my $transfer = Koha::Item::Transfers->find($transit);
|
||||
if ( $canceltransfer ) {
|
||||
$transfer->cancel({ reason => 'Manual', force => 1});
|
||||
$template->param( transfercancelled => 1);
|
||||
} else {
|
||||
$transfer->transit;
|
||||
}
|
||||
} elsif ($canceltransfer){
|
||||
my $item = Koha::Items->find($itemnumber);
|
||||
my $transfer = $item->get_transfer;
|
||||
$transfer->cancel({ reason => 'Manual', force => 1});
|
||||
|
|
@ -239,6 +244,7 @@ if ($canceltransfer){
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
# actually return book and prepare item table.....
|
||||
my $returnbranch;
|
||||
if ($barcode) {
|
||||
|
|
@ -389,10 +395,19 @@ if ( $messages->{'Wrongbranch'} ){
|
|||
# case of wrong transfert, if the document wasn't transferred to the right library (according to branchtransfer (tobranch) BDD)
|
||||
|
||||
if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) {
|
||||
|
||||
# Trigger modal to prompt librarian
|
||||
$template->param(
|
||||
WrongTransfer => 1,
|
||||
TransferWaitingAt => $messages->{'WrongTransfer'},
|
||||
WrongTransferItem => $messages->{'WrongTransferItem'},
|
||||
trigger => $messages->{'TransferTrigger'},
|
||||
);
|
||||
|
||||
# Update the transfer to reflect the new item holdingbranch
|
||||
my $new_transfer = updateWrongTransfer($messages->{'WrongTransferItem'},$messages->{'WrongTransfer'}, $userenv_branch);
|
||||
$template->param(
|
||||
NewTransfer => $new_transfer->id
|
||||
);
|
||||
|
||||
my $reserve = $messages->{'ResFound'};
|
||||
|
|
@ -402,9 +417,6 @@ if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) {
|
|||
patron => $patron,
|
||||
);
|
||||
}
|
||||
$template->param(
|
||||
wtransfertFrom => $userenv_branch,
|
||||
);
|
||||
}
|
||||
|
||||
#
|
||||
|
|
|
|||
|
|
@ -430,38 +430,40 @@
|
|||
[% END %]
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3>
|
||||
Please return item to: [% Branches.GetName( TransferWaitingAt ) | html %]
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>
|
||||
<a href="/cgi-bin/koha/catalogue/detail.pl?type=intra&biblionumber=[% itembiblionumber | uri %]">
|
||||
[% item.barcode | html %]: [% title | html %]
|
||||
</a>
|
||||
</p>
|
||||
[% INCLUDE all_checkin_messages %]
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<!-- CONFIRM -->
|
||||
<button type="button" data-dismiss="modal" class="btn btn-default approve"><i class="fa fa-check"></i> OK</button>
|
||||
<!-- PRINT SLIP -->
|
||||
<button type="button" data-dismiss="modal" class="btn btn-default openWin" data-url="transfer-slip.pl?transferitem=[% itemnumber | uri %]&&branchcode=[% TransferWaitingAt | uri %]&op=slip"><i class="fa fa-print"></i> Print transfer slip</button>
|
||||
<!-- CANCEL TRANSFER -->
|
||||
<form method="post" action="returns.pl" name="mainform">
|
||||
<button class="btn btn-default deny" type="submit"><i class="fa fa-times"></i> Cancel transfer</button>
|
||||
<input type="hidden" name="return_date_override" value="[% return_date_override | html %]" />
|
||||
<input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
|
||||
<input type="hidden" name="itemnumber" value="[% itemnumber | html %]" />
|
||||
<input type="hidden" name="canceltransfer" value="1" />
|
||||
[% FOREACH inputloo IN inputloop %]
|
||||
<input type="hidden" name="ri-[% inputloo.counter | html %]" value="[% inputloo.barcode | html %]" />
|
||||
<input type="hidden" name="dd-[% inputloo.counter | html %]" value="[% inputloo.duedate | html %]" />
|
||||
<input type="hidden" name="bn-[% inputloo.counter | html %]" value="[% inputloo.borrowernumber | html %]" />
|
||||
[% END %]
|
||||
</form> <!-- /mainform -->
|
||||
</div> <!-- /.modal-footer -->
|
||||
<form method="post" action="returns.pl" name="wrongtransferform" id="wrongtransferform">
|
||||
<input type="hidden" name="return_date_override" value="[% return_date_override | html %]" />
|
||||
<input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
|
||||
<input type="hidden" name="itemnumber" value="[% itemnumber | html %]" />
|
||||
<input type="hidden" name="transit" value="[% NewTransfer | html %]" />
|
||||
[% FOREACH inputloo IN inputloop %]
|
||||
<input type="hidden" name="ri-[% inputloo.counter | html %]" value="[% inputloo.barcode | html %]" />
|
||||
<input type="hidden" name="dd-[% inputloo.counter | html %]" value="[% inputloo.duedate | html %]" />
|
||||
<input type="hidden" name="bn-[% inputloo.counter | html %]" value="[% inputloo.borrowernumber | html %]" />
|
||||
[% END %]
|
||||
|
||||
<div class="modal-header">
|
||||
<h3>
|
||||
Wrong transfer detected, please return item to: [% Branches.GetName( TransferWaitingAt ) | html %]
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<p>
|
||||
<a href="/cgi-bin/koha/catalogue/detail.pl?type=intra&biblionumber=[% itembiblionumber | uri %]">[% item.barcode | html %]: [% title | html %]</a>
|
||||
</p>
|
||||
|
||||
[% INCLUDE all_checkin_messages %]
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<!-- CONFIRM -->
|
||||
<button class="btn btn-default approve" type="submit"><i class="fa fa-check"></i> OK</button>
|
||||
<!-- PRINT SLIP -->
|
||||
<button type="button" data-dismiss="modal" class="btn btn-default transit openWin" data-transfer="[% NewTransfer | html %]" data-url="transfer-slip.pl?transferitem=[% itemnumber | uri %]&&branchcode=[% TransferWaitingAt | uri %]&op=slip"><i class="fa fa-print"></i> Print transfer slip</button>
|
||||
<!-- CANCEL TRANSFER -->
|
||||
<button type="button" data-dismiss="modal" class="btn btn-default deny cancel"><i class="fa fa-times"></i> Cancel transfer</button>
|
||||
</div> <!-- /.modal-footer -->
|
||||
</form> <!-- /wrongtransferform -->
|
||||
</div> <!-- /.modal-content -->
|
||||
</div> <!-- /.modal-dialog -->
|
||||
</div> <!-- /#wrong-transfer-modal -->
|
||||
|
|
@ -1126,6 +1128,12 @@
|
|||
Dopop( $(this).data("url") );
|
||||
});
|
||||
|
||||
$('.cancel').on("click",function(e){
|
||||
var docancel = $("<input>").attr("type", "hidden").attr("name", "canceltransfer").val(1);
|
||||
$('#wrongtransferform').append(docancel);
|
||||
this.form.submit();
|
||||
});
|
||||
|
||||
$('.print').on("click",function(e){
|
||||
this.form.print_slip.value = 1;
|
||||
let barcode = document.getElementById('confirm-hold-barcode');
|
||||
|
|
|
|||
Loading…
Reference in New Issue