Bug 26604: "Generate next" button gives error on serials-collection.pl

In serials-collection.pl, the line

$frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subscription->{periodicity});

causes the error

Can't use string ("13") as a HASH ref while "strict refs" in use at /usr/share/koha/lib/C4/Serials.pm line 2198.

This function call makes no sense, that subroutine always returns a list and doesn't take any parameters. I think it was meant to be GetSubscriptionFrequency which is in fact already called a few lines down.

Signed-off-by: kelly mcelligott <kelly@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

JD

Test plan:
1. Create a new subscription
  * When there is an irregular issue: Skip issue number
  * Select a frequency (not irregular)
  * Test prediction pattern and mark some "not published" (to fill the subscription.irregular DB field
2. Receive a first serial (mark it arrived, an "expected" one is created)
3. Claim the expected one
=> You have 1 arrived and 1 claimed.
It's the only way to not have an expected one and hit the else block in serials/serials-collection.pl
4. Generate next => boom

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
(cherry picked from commit 9f4b54a6d7)

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 8c527522ec)

Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com>
This commit is contained in:
Kyle M Hall 2020-10-02 12:11:48 -04:00 committed by Aleisha Amohia
parent 3d1d81014d
commit 35cafa56f4
1 changed files with 1 additions and 2 deletions

View File

@ -76,7 +76,7 @@ if($op eq 'gennext' && @subscriptionid){
require C4::Serials::Numberpattern;
my $subscription = GetSubscription($subscriptionid);
my $pattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subscription->{numberpattern});
my $frequency = C4::Serials::Frequency::GetSubscriptionFrequencies($subscription->{periodicity});
my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subscription->{periodicity});
my $expected = GetNextExpected($subscriptionid);
my (
$newserialseq, $newlastvalue1, $newlastvalue2, $newlastvalue3,
@ -84,7 +84,6 @@ if($op eq 'gennext' && @subscriptionid){
) = GetNextSeq($subscription, $pattern, $frequency, $expected->{publisheddate});
## We generate the next publication date
$frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subscription->{periodicity});
my $nextpublisheddate = GetNextDate($subscription, $expected->{publisheddate}, $frequency, 1);
my $planneddate = $date_received_today ? dt_from_string : $nextpublisheddate;
## Creating the new issue