@@ -, +, @@
their branch.
---
C4/Serials.pm | 13 ++++++++
.../prog/en/modules/serials/claims.tt | 2 ++
serials/claims.pl | 4 +++
t/db_dependent/Serials_2.t | 32 +++++++++++++++++++-
4 files changed, 50 insertions(+), 1 deletion(-)
--- a/C4/Serials.pm
+++ a/C4/Serials.pm
@@ -2733,6 +2733,19 @@ sub subscriptionCurrentlyOnOrder {
return $sth->fetchrow_array;
}
+=head2 can_claim_subscription
+
+ $can = can_claim_subscription( $subscriptionid[, $userid] );
+
+Return 1 if the subscription can be claimed by the current logged user (or a given $userid), else 0.
+
+=cut
+
+sub can_claim_subscription {
+ my ( $subscription, $userid ) = @_;
+ return _can_do_on_subscription( $subscription, $userid, 'claim_serials' );
+}
+
=head2 can_edit_subscription
$can = can_edit_subscription( $subscriptionid[, $userid] );
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/claims.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/claims.tt
@@ -273,7 +273,9 @@
[% FOREACH missingissue IN missingissues %]
+ [% UNLESS missingissue.cannot_claim %]
+ [% END %]
[% missingissue.name %]
--- a/serials/claims.pl
+++ a/serials/claims.pl
@@ -85,6 +85,10 @@ my $letters = GetLetters({ module => 'claimissues' });
my @missingissues;
if ($supplierid) {
@missingissues = GetLateOrMissingIssues($supplierid);
+ foreach my $issue (@missingissues) {
+ $issue->{cannot_claim} = 1
+ unless C4::Serials::can_claim_subscription($issue);
+ }
}
$template->param(
--- a/t/db_dependent/Serials_2.t
+++ a/t/db_dependent/Serials_2.t
@@ -1,7 +1,7 @@
#!/usr/bin/perl
use Modern::Perl;
-use Test::More tests => 36;
+use Test::More tests => 46;
use MARC::Record;
@@ -65,6 +65,7 @@ my $subscriptionid_from_another_branch = NewSubscription(
my $subscription_from_my_branch = GetSubscription( $subscriptionid_from_my_branch );
is( C4::Serials::can_edit_subscription($subscription_from_my_branch), 0, "cannot edit a subscription without userenv set");
+is( C4::Serials::can_claim_subscription($subscription_from_my_branch), 0, "cannot edit a subscription without userenv set");
my $userid = 'my_userid';
my $borrowernumber = C4::Members::AddMember(
@@ -80,6 +81,7 @@ $userenv = { flags => 1, id => $borrowernumber, branch => '' };
# Can edit a subscription
is( C4::Serials::can_edit_subscription($subscription_from_my_branch), 1, "User can edit a subscription with an empty branchcode");
+is( C4::Serials::can_claim_subscription($subscription_from_my_branch), 1, "User can edit a subscription with an empty branchcode");
my $subscription_from_another_branch = GetSubscription( $subscriptionid_from_another_branch );
@@ -101,6 +103,13 @@ is( C4::Serials::can_show_subscription($subscription_from_my_branch), 1,
is( C4::Serials::can_show_subscription($subscription_from_another_branch), 1,
"With IndependentBranches, superlibrarian can show a subscription from another branch"
);
+is( C4::Serials::can_claim_subscription($subscription_from_my_branch), 1,
+"With IndependentBranches, superlibrarian can claim a subscription from his branch"
+);
+is( C4::Serials::can_claim_subscription($subscription_from_another_branch), 1,
+"With IndependentBranches, superlibrarian can claim a subscription from another branch"
+);
+
set_flags( 'superserials', $borrowernumber );
is( C4::Serials::can_edit_subscription($subscription_from_my_branch), 1,
@@ -115,6 +124,13 @@ is( C4::Serials::can_show_subscription($subscription_from_my_branch), 1,
is( C4::Serials::can_show_subscription($subscription_from_another_branch), 1,
"With IndependentBranches, superserials can show a subscription from another branch"
);
+is( C4::Serials::can_claim_subscription($subscription_from_my_branch), 1,
+"With IndependentBranches, superserials can claim a subscription from his branch"
+);
+is( C4::Serials::can_claim_subscription($subscription_from_another_branch), 1,
+"With IndependentBranches, superserials can claim a subscription from another branch"
+);
+
set_flags( 'edit_subscription', $borrowernumber );
@@ -130,6 +146,13 @@ is( C4::Serials::can_show_subscription($subscription_from_my_branch), 1,
is( C4::Serials::can_show_subscription($subscription_from_another_branch), 0,
"With IndependentBranches, show_subscription cannot show a subscription from another branch"
);
+is( C4::Serials::can_claim_subscription($subscription_from_my_branch), 0,
+"With IndependentBranches, claim_subscription cannot claim a subscription from his branch with the edit_subscription permission"
+);
+is( C4::Serials::can_claim_subscription($subscription_from_another_branch), 0,
+"With IndependentBranches, claim_subscription cannot claim a subscription from another branch"
+);
+
set_flags( 'renew_subscription', $borrowernumber );
is( C4::Serials::can_edit_subscription($subscription_from_my_branch), 0,
@@ -145,6 +168,13 @@ is( C4::Serials::can_show_subscription($subscription_from_another_branch), 0,
"With IndependentBranches, renew_subscription cannot show a subscription from another branch"
);
+set_flags( 'claim_serials', $borrowernumber );
+is( C4::Serials::can_claim_subscription($subscription_from_my_branch), 1,
+"With IndependentBranches, claim_subscription can claim a subscription from his branch with the edit_subscription permission"
+);
+is( C4::Serials::can_claim_subscription($subscription_from_another_branch), 0,
+"With IndependentBranches, claim_subscription cannot claim a subscription from another branch"
+);
# Branches are not independent
t::lib::Mocks::mock_preference( "IndependentBranches", 0 );
--