https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=34756 --- Comment #23 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- (In reply to Baptiste Wojtkowski (bwoj) from comment #22)
(In reply to Tomás Cohen Arazi (tcohen) from comment #21)
Maybe I didn’t explain the whole idea well enough.
I think the cancel() method needs to be added a parameter controlling the behavior. And the controller would pass it if conditions are met.
Oh.. I missread, very sorry.
I still don't get your point, I'm using transfer->cancel but I have no clue on how I would change it... Do you mean hold->cancel(), that would refuse cancelling if there is no explicit reference to the existing transfer ?
I mean something like ``` diff --git a/Koha/Hold.pm b/Koha/Hold.pm index b3bf4a02b76..b4d185901e1 100644 --- a/Koha/Hold.pm +++ b/Koha/Hold.pm @@ -675,6 +675,8 @@ my $cancel_hold = $hold->cancel( [ charge_cancel_fee => 1||0, ] [ cancellation_reason => $cancellation_reason, ] [ skip_holds_queue => 1||0 ] + [ cancel_transfer => 1||0 ] + [ cancel_transfer_reason => 'some valid transfer' ] } ); @@ -703,6 +705,14 @@ sub cancel { $self->cancellation_reason( $params->{cancellation_reason} ); $self->store(); + my $item = $self->item; + + if ( $params->{cancel_transfer} ) { + my $transfer = $item->get_transfer(); + $transfer->cancel( $params->{cancel_transfer_reason} // 'Manual' ) + if $transfer; + } + my $dbh = $self->_result->result_source->schema->storage->dbh; $dbh->do( q{ @@ -766,7 +776,6 @@ sub cancel { # and, if desired, charge a cancel fee if ( $params->{'charge_cancel_fee'} ) { - my $item = $self->item; my $charge = Koha::CirculationRules->get_effective_expire_reserves_charge( { itemtype => $item->effective_itemtype, ``` -- You are receiving this mail because: You are watching all bug changes.