diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/sci/sci-main.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/sci/sci-main.tt
index d719cc07bc..2472c31f9a 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/sci/sci-main.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/sci/sci-main.tt
@@ -14,6 +14,8 @@
(Item is withdrawn and check-in blocked by policy, please see library staff for assistance)
[% ELSIF messages.NotIssued %]
(The book is not currently on loan, please see library staff for assistance)
+ [% ELSIF messages.additional_materials %]
+ (The item cannot be returned at a self service terminal, please see library staff for assistance)
[% ELSE %]
(There was a problem returning this item, please see library staff for assistance)
[% END %]
diff --git a/opac/sci/sci-main.pl b/opac/sci/sci-main.pl
index 0128873487..e62f6a5c2f 100755
--- a/opac/sci/sci-main.pl
+++ b/opac/sci/sci-main.pl
@@ -22,6 +22,7 @@ use CGI qw ( -utf8 );
use C4::Auth qw(get_template_and_user checkpw);
use C4::Circulation;
use C4::Output;
+use Koha::Items;
use List::MoreUtils qw( uniq );
use Try::Tiny;
@@ -64,8 +65,20 @@ if ( $op eq 'check_in' ) {
# Return items
foreach my $barcode (@barcodes) {
try {
- my ( $success, $messages, $checkout, $patron ) =
- AddReturn( $barcode, $library );
+ my ( $success, $messages, $checkout, $patron );
+ my $item = Koha::Items->find( { barcode => $barcode } );
+ my $human_required = 0;
+ if ( C4::Context->preference("CircConfirmItemParts")
+ && defined($item)
+ && $item->materials )
+ {
+ $human_required = 1;
+ $success = 0;
+ $messages->{additional_materials} = 1;
+ }
+
+ ( $success, $messages, $checkout, $patron ) =
+ AddReturn( $barcode, $library ) unless $human_required;
if ($success) {
push @success,
{