Bug 18697: Final polishing
GetFictiveIssueNumber: Returns undef instead of 0 for irregular frequencies. Also added to POD. Removed unused variable $wkno. Adding a return makes the if(unit) unneeded. Replaced (a+b)/b by 1+a/b. _delta_units: Added a comment about its parameters. GetFictiveIssueNumber.t: Adjusted the tests for irregular frequencies accordingly. Test plan: [1] Run t/db_dependent/Serials/GetFictiveIssueNumber.t [2] Run t/db_dependent/Serials/GetNextDate.t Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
parent
8eae966083
commit
4e9701c36a
2 changed files with 14 additions and 14 deletions
|
@ -2270,6 +2270,8 @@ depending on how many rows are in serial table.
|
|||
The issue number calculation is based on subscription frequency, first acquisition
|
||||
date, and $publisheddate.
|
||||
|
||||
Returns undef when called for irregular frequencies.
|
||||
|
||||
The routine is used to skip irregularities when calculating the next issue
|
||||
date (in GetNextDate) or the next issue number (in GetNextSeq).
|
||||
|
||||
|
@ -2280,26 +2282,24 @@ sub GetFictiveIssueNumber {
|
|||
|
||||
my $frequency = GetSubscriptionFrequency($subscription->{'periodicity'});
|
||||
my $unit = $frequency->{unit} ? lc $frequency->{'unit'} : undef;
|
||||
my $issueno = 0;
|
||||
return if !$unit;
|
||||
my $issueno;
|
||||
|
||||
if($unit) {
|
||||
my ($year, $month, $day) = split /-/, $publisheddate;
|
||||
my ($fa_year, $fa_month, $fa_day) = split /-/, $subscription->{'firstacquidate'};
|
||||
my $wkno;
|
||||
my $delta = _delta_units( [$fa_year, $fa_month, $fa_day], [$year, $month, $day], $unit );
|
||||
my ( $year, $month, $day ) = split /-/, $publisheddate;
|
||||
my ( $fa_year, $fa_month, $fa_day ) = split /-/, $subscription->{'firstacquidate'};
|
||||
my $delta = _delta_units( [$fa_year, $fa_month, $fa_day], [$year, $month, $day], $unit );
|
||||
|
||||
if($frequency->{'unitsperissue'} == 1) {
|
||||
$issueno = $delta * $frequency->{'issuesperunit'} + $subscription->{'countissuesperunit'};
|
||||
} else {
|
||||
# Assuming issuesperunit == 1
|
||||
$issueno = int( ($delta + $frequency->{'unitsperissue'}) / $frequency->{'unitsperissue'} );
|
||||
}
|
||||
if( $frequency->{'unitsperissue'} == 1 ) {
|
||||
$issueno = $delta * $frequency->{'issuesperunit'} + $subscription->{'countissuesperunit'};
|
||||
} else { # issuesperunit == 1
|
||||
$issueno = 1 + int( $delta / $frequency->{'unitsperissue'} );
|
||||
}
|
||||
return $issueno;
|
||||
}
|
||||
|
||||
sub _delta_units {
|
||||
my ( $date1, $date2, $unit ) = @_;
|
||||
# date1 and date2 are array refs in the form [ yy, mm, dd ]
|
||||
|
||||
if( $unit eq 'day' ) {
|
||||
return Delta_Days( @$date1, @$date2 );
|
||||
|
|
|
@ -27,8 +27,8 @@ subtest 'Tests for irregular frequency' => sub {
|
|||
periodicity => $freq_irr,
|
||||
firstacquidate => '1972-02-07',
|
||||
};
|
||||
is( C4::Serials::GetFictiveIssueNumber($subscription, '1972-12-31'), 0, 'Irregular: should be zero' );
|
||||
is( C4::Serials::GetFictiveIssueNumber($subscription, '1973-12-31'), 0, 'Irregular: still zero' );
|
||||
is( C4::Serials::GetFictiveIssueNumber($subscription, '1972-12-31'), undef, 'Irregular: should be undef' );
|
||||
is( C4::Serials::GetFictiveIssueNumber($subscription, '1973-12-31'), undef, 'Irregular: still undef' );
|
||||
};
|
||||
|
||||
subtest 'Tests for yearly frequencies' => sub {
|
||||
|
|
Loading…
Reference in a new issue