View | Details | Raw Unified | Return to bug 17656
Collapse All | Expand All

(-)a/C4/Serials.pm (-4 / +4 lines)
Lines 20-26 package C4::Serials; Link Here
20
20
21
use Modern::Perl;
21
use Modern::Perl;
22
22
23
use Carp qw( croak );
23
use Carp       qw( croak );
24
use Date::Calc qw(
24
use Date::Calc qw(
25
    Add_Delta_Days
25
    Add_Delta_Days
26
    Add_Delta_YM
26
    Add_Delta_YM
Lines 30-43 use Date::Calc qw( Link Here
30
    Today
30
    Today
31
);
31
);
32
use DateTime;
32
use DateTime;
33
use POSIX qw( strftime );
33
use POSIX        qw( strftime );
34
use Scalar::Util qw( looks_like_number );
34
use Scalar::Util qw( looks_like_number );
35
use Try::Tiny;
35
use Try::Tiny;
36
36
37
use C4::Auth qw( haspermission );
37
use C4::Auth   qw( haspermission );
38
use C4::Biblio qw( GetMarcFromKohaField ModBiblio );
38
use C4::Biblio qw( GetMarcFromKohaField ModBiblio );
39
use C4::Context;
39
use C4::Context;
40
use C4::Log qw( logaction );    # logaction
40
use C4::Log                qw( logaction );                  # logaction
41
use C4::Serials::Frequency qw( GetSubscriptionFrequency );
41
use C4::Serials::Frequency qw( GetSubscriptionFrequency );
42
use C4::Serials::Numberpattern;
42
use C4::Serials::Numberpattern;
43
use Koha::AdditionalFieldValues;
43
use Koha::AdditionalFieldValues;
(-)a/Koha/Subscription.pm (-7 / +5 lines)
Lines 28-34 use Koha::Biblioitems; Link Here
28
use Koha::Subscriptions;
28
use Koha::Subscriptions;
29
use Koha::Subscription::Frequencies;
29
use Koha::Subscription::Frequencies;
30
use Koha::Subscription::Numberpatterns;
30
use Koha::Subscription::Numberpatterns;
31
use Koha::DateUtils;
31
use Koha::DateUtils qw( dt_from_string );
32
use JSON;
32
use JSON;
33
use Date::Calc qw( Delta_Days Add_Delta_Days Add_Delta_YM );
33
use Date::Calc qw( Delta_Days Add_Delta_Days Add_Delta_YM );
34
34
Lines 254-276 sub guess_irregularities { Link Here
254
    my @irregularities;
254
    my @irregularities;
255
    my %permanent_irregularities = map { $_ => 1 } $self->permanent_irregularities;
255
    my %permanent_irregularities = map { $_ => 1 } $self->permanent_irregularities;
256
256
257
    my $schema    = Koha::Database->new->schema;
257
    my $frequency    = $self->frequency;
258
    my $frequency = $schema->resultset('SubscriptionFrequency')->find( $self->periodicity );
259
260
    my $enddate      = $self->enddate;
258
    my $enddate      = $self->enddate;
261
    my $nextexpected = C4::Serials::GetNextExpected( $self->id );
259
    my $nextexpected = C4::Serials::GetNextExpected( $self->id );
262
    my $date         = $nextexpected->{planneddate};
260
    my $date         = $nextexpected->{planneddate};
263
261
264
    my ($issuenumber) = C4::Serials::GetFictiveIssueNumber( $self->unblessed, $date );
262
    my ($issuenumber) = C4::Serials::GetFictiveIssueNumber( $self->unblessed, $date, $frequency->unblessed );
265
    my $dow = C4::Serials::issue_number( dt_from_string($date), $frequency->unit );
263
    my $dow = C4::Serials::issue_number( dt_from_string($date), $frequency->unit );
266
264
267
    if ( defined( $permanent_irregularities{$dow} ) ) {
265
    if ( defined( $permanent_irregularities{$dow} ) ) {
268
        push @irregularities, $issuenumber;
266
        push @irregularities, $issuenumber;
269
    }
267
    }
270
268
271
    while ( Delta_Days( split( /-/, $date ), split( /-/, $enddate ) ) >= 0 ) {
269
    while ( $date && Delta_Days( split( /-/, $date ), split( /-/, $enddate ) ) >= 0 ) {
272
        $issuenumber++;
270
        $issuenumber++;
273
        $date = C4::Serials::GetNextDate( $self->unblessed, $date );
271
        $date = C4::Serials::GetNextDate( $self->unblessed, $date, $frequency->unblessed );
274
        $dow  = C4::Serials::issue_number( dt_from_string($date), $frequency->unit );
272
        $dow  = C4::Serials::issue_number( dt_from_string($date), $frequency->unit );
275
273
276
        if ( defined( $permanent_irregularities{$dow} ) ) {
274
        if ( defined( $permanent_irregularities{$dow} ) ) {
(-)a/serials/showpredictionpattern.pl (-2 / +2 lines)
Lines 30-38 publication date, based on frequency and first publication date. Link Here
30
30
31
use Modern::Perl;
31
use Modern::Perl;
32
32
33
use CGI qw ( -utf8 );
33
use CGI        qw ( -utf8 );
34
use Date::Calc qw( Add_Delta_Days Add_Delta_YM Day_of_Week Delta_Days );
34
use Date::Calc qw( Add_Delta_Days Add_Delta_YM Day_of_Week Delta_Days );
35
use C4::Auth qw( get_template_and_user );
35
use C4::Auth   qw( get_template_and_user );
36
use C4::Output qw( output_html_with_http_headers );
36
use C4::Output qw( output_html_with_http_headers );
37
use C4::Serials
37
use C4::Serials
38
    qw( GetSubscription GetFictiveIssueNumber GetSeq GetSubscriptionIrregularities GetNextDate GetNextSeq issue_number );
38
    qw( GetSubscription GetFictiveIssueNumber GetSeq GetSubscriptionIrregularities GetNextDate GetNextSeq issue_number );
(-)a/serials/subscription-add.pl (-3 / +3 lines)
Lines 17-26 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use CGI qw ( -utf8 );
20
use CGI        qw ( -utf8 );
21
use Date::Calc qw( Add_Delta_Days Add_Delta_YM );
21
use Date::Calc qw( Add_Delta_Days Add_Delta_YM );
22
use C4::Koha qw( GetAuthorisedValues );
22
use C4::Koha   qw( GetAuthorisedValues );
23
use C4::Auth qw( get_template_and_user );
23
use C4::Auth   qw( get_template_and_user );
24
use C4::Output qw( output_and_exit output_html_with_http_headers );
24
use C4::Output qw( output_and_exit output_html_with_http_headers );
25
use C4::Context;
25
use C4::Context;
26
use C4::Serials
26
use C4::Serials
(-)a/serials/subscription-renew.pl (-9 / +6 lines)
Lines 44-61 Id of the subscription this script has to renew Link Here
44
44
45
use Modern::Perl;
45
use Modern::Perl;
46
46
47
use CGI qw ( -utf8 );
47
use CGI  qw ( -utf8 );
48
use Carp qw( carp );
48
use Carp qw( carp );
49
use C4::Koha;
49
use C4::Koha;
50
use C4::Auth qw( get_template_and_user );
50
use C4::Auth qw( get_template_and_user );
51
use C4::Context;
51
use C4::Context;
52
use C4::Auth qw( get_template_and_user );
52
use C4::Auth    qw( get_template_and_user );
53
use C4::Output qw( output_and_exit output_html_with_http_headers );
53
use C4::Output  qw( output_and_exit output_html_with_http_headers );
54
use C4::Serials qw( GetSubscription GetSubscriptionLength NewSubscription ReNewSubscription GetSerials GetNextExpected);
54
use C4::Serials qw( GetSubscription GetSubscriptionLength NewSubscription ReNewSubscription GetSerials GetNextExpected);
55
use C4::Serials::Frequency;
55
use C4::Serials::Frequency;
56
use C4::Serials::Numberpattern;
56
use C4::Serials::Numberpattern;
57
use Koha::DateUtils qw( dt_from_string output_pref );
57
use Koha::DateUtils qw( dt_from_string output_pref );
58
use Date::Calc qw(Today Day_of_Year Week_of_Year Add_Delta_Days Add_Delta_YM);
58
use Date::Calc      qw(Today Day_of_Year Week_of_Year Add_Delta_Days Add_Delta_YM);
59
59
60
my $query = CGI->new;
60
my $query = CGI->new;
61
my $dbh   = C4::Context->dbh;
61
my $dbh   = C4::Context->dbh;
Lines 148-156 if ( $op eq "cud-renew" ) { Link Here
148
        print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
148
        print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
149
    }
149
    }
150
150
151
    my $newstartdate = output_pref( { str => $subscription->{enddate}, dateonly => 1 } )
151
    my $newstartdate = output_pref( { str => $subscription->{enddate}, dateonly => 1, dateformat => 'iso' } )
152
        or output_pref( { dt => dt_from_string, dateonly => 1 } );
152
        or output_pref( { dt => dt_from_string, dateonly => 1, dateformat => 'iso' } );
153
154
    my ($serials_number) = GetSerials($subscriptionid);
153
    my ($serials_number) = GetSerials($subscriptionid);
155
    if ( $serials_number > 1 ) {
154
    if ( $serials_number > 1 ) {
156
        $template->param( more_than_one_serial => 1 );
155
        $template->param( more_than_one_serial => 1 );
Lines 181-187 if ( $op eq "cud-renew" ) { Link Here
181
    my $numberpattern = GetSubscriptionNumberpattern( $subscription->{numberpattern} );
180
    my $numberpattern = GetSubscriptionNumberpattern( $subscription->{numberpattern} );
182
181
183
    $template->param(
182
    $template->param(
184
        startdate     => $newstartdate,
185
        subscription  => $subscription,
183
        subscription  => $subscription,
186
        numberpattern => $numberpattern,
184
        numberpattern => $numberpattern,
187
        startdate     => $newstartdate,
185
        startdate     => $newstartdate,
188
- 

Return to bug 17656