diff --git a/Koha/ILL/Request.pm b/Koha/ILL/Request.pm index 3816afce85..d9ab8297a0 100644 --- a/Koha/ILL/Request.pm +++ b/Koha/ILL/Request.pm @@ -910,17 +910,38 @@ Mark a request as completed (status = COMP). =cut sub mark_completed { - my ($self) = @_; - $self->status('COMP')->store; - $self->completed( dt_from_string() )->store; - return { - error => 0, - status => '', - message => '', - method => 'mark_completed', - stage => 'commit', - next => 'illview', - }; + my ( $self, $params ) = @_; + + my $stage = $params->{stage}; + + my $status_aliases_exist = Koha::AuthorisedValues->search( { category => 'ILL_STATUS_ALIAS' } )->count; + + if ( ( !$stage || $stage eq 'init' ) && $status_aliases_exist ) { + return { + method => 'mark_completed', + }; + } elsif ( !$stage || $stage eq 'complete' ) { + + $self->status('COMP'); + $self->status_alias( $params->{status_alias} ) if $params->{status_alias}; + $self->completed( dt_from_string() ); + $self->store; + return { + stage => 'commit', + next => 'illview', + }; + } else { + + # Invalid stage, return error. + return { + error => 1, + status => 'unknown_stage', + message => '', + method => 'confirm', + stage => $params->{stage}, + value => {}, + }; + } } =head2 backend_illview diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/ill/ill-requests.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/ill/ill-requests.tt index 26ba077ed9..63974c3f9d 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/ill/ill-requests.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/ill/ill-requests.tt @@ -45,6 +45,8 @@ Manage request [% request.id_prefix _ request.illrequest_id | html %] [% ELSIF op == 'confirm' %] Confirm request [% request.id_prefix _ request.illrequest_id | html %] + [% ELSIF op == 'mark_completed' %] + Complete request request [% request.id_prefix _ request.illrequest_id | html %] [% ELSIF op == 'delete_confirm' %] Delete request [% request.id_prefix _ request.illrequest_id | html %] [% ELSIF op == 'generic_confirm' %] @@ -115,6 +117,29 @@ [% ELSIF op == 'confirm' %]

Confirm ILL request

[% PROCESS $whole.template %] + [% ELSIF op == 'mark_completed' %] +

Complete ILL request

+

Proceeding with this action will set this request to 'Completed'.

+

You can select a status alias from the available options:

+

+ [% base_url = "/cgi-bin/koha/ill/ill-requests.pl" %] + [% proceed_url = base_url _ "?method=mark_completed&stage=complete" _ "&illrequest_id=" _ request.illrequest_id %] +

+ + + + +
+ + Cancel +
+
+

[% ELSIF op == 'cud-cancel' and !whole.error %]

Cancel a confirmed request

[% PROCESS $whole.template %]