@@ -, +, @@ can_edit_subscription --- C4/Serials.pm | 9 +++++++ t/db_dependent/Serials_2.t | 63 +++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 68 insertions(+), 4 deletions(-) --- a/C4/Serials.pm +++ a/C4/Serials.pm @@ -20,6 +20,7 @@ package C4::Serials; use strict; use warnings; +use C4::Auth qw(haspermission); use C4::Context; use C4::Dates qw(format_date format_date_in_iso); use Date::Calc qw(:all); @@ -2521,6 +2522,14 @@ sub subscriptionCurrentlyOnOrder { return $sth->fetchrow_array; } +=head2 can_edit_subscription + + $can = can_edit_subscription( $subscriptionid[, $userid] ); + +Return 1 if the subscription is editable by the current logged user (or a given $userid), else 0. + +=cut + sub can_edit_subscription { my ( $subscription, $userid ) = @_; my $flags = C4::Context->userenv->{flags}; --- a/t/db_dependent/Serials_2.t +++ a/t/db_dependent/Serials_2.t @@ -1,10 +1,65 @@ #!/usr/bin/perl -use strict; -use warnings; +use Modern::Perl; -use Test::More; +use Test::More tests => 4; use_ok('C4::Serials'); +use_ok('C4::Budgets'); + my $supplierlist=eval{GetSuppliersWithLateIssues()}; ok(length($@)==0,"No SQL problem in GetSuppliersWithLateIssues"); -done_testing(); + +my $biblionumber = 1; +my $budgetid; +my $bpid = AddBudgetPeriod({ + budget_period_startdate => '01-01-2015', + budget_period_enddate => '31-12-2015', + budget_description => "budget desc" +}); + +my $budget_id = AddBudget({ + budget_code => "ABCD", + budget_amount => "123.132", + budget_name => "Périodiques", + budget_notes => "This is a note", + budget_description => "Serials", + budget_active => 1, + budget_period_id => $bpid +}); + +my $subscriptionid = NewSubscription( + undef, "", undef, undef, $budget_id, $biblionumber, '01-01-2013',undef, + undef, undef, undef, undef, undef, undef, undef, undef, + undef, undef, undef, undef, undef, undef, undef, undef, + undef, undef, undef, undef, undef, undef, undef, 1, + "notes", undef, undef, undef, undef, undef, undef, 0, + "intnotes", 0, undef, undef, 0, undef, '31-12-2013', +); +die unless $subscriptionid; + +# Can edit a subscription +my @USERENV = ( + 1, + 'test', + 'MASTERTEST', + 'Test', + 'Test', + 't', + 0, + 0, +); + +C4::Context->_new_userenv ('DUMMY_SESSION_ID'); +C4::Context->set_userenv ( @USERENV ); +my $userenv = C4::Context->userenv; + +my $subscription = GetSubscription( $subscriptionid ); + +is( C4::Serials::can_edit_subscription($subscription), 1, "User can edit a subscription with an empty branchcode"); +#TODO add UT when C4::Auth->set_permissions (or setuserflags) will exist. + + +# cleaning +DelSubscription( $subscription->{subscriptionid} ); +DelBudgetPeriod($bpid); +DelBudget($budget_id); --