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

(-)a/C4/Serials.pm (-7 / +27 lines)
Lines 862-869 sub GetNextSeq { Link Here
862
        }
862
        }
863
    }
863
    }
864
864
865
    my $numberingmethod = $pattern->{numberingmethod};
866
    my $calculated = "";
865
    my $calculated = "";
866
    my $numberingmethod = "";
867
    if ($pattern eq "pubdate"){
868
        $calculated = dt_from_string( $planneddate )->strftime( '%Y %B %d' );
869
    } else {
870
        $numberingmethod = $pattern->{numberingmethod};
871
    }
867
    if ($numberingmethod) {
872
    if ($numberingmethod) {
868
        $calculated    = $numberingmethod;
873
        $calculated    = $numberingmethod;
869
        my $locale = $subscription->{locale};
874
        my $locale = $subscription->{locale};
Lines 943-948 the sequence in string format Link Here
943
sub GetSeq {
948
sub GetSeq {
944
    my ($subscription, $pattern) = @_;
949
    my ($subscription, $pattern) = @_;
945
950
951
    if ($pattern->{numberingmethod} eq ''){
952
        return "pubdate";
953
    }
954
946
    return unless ($subscription and $pattern);
955
    return unless ($subscription and $pattern);
947
956
948
    my $locale = $subscription->{locale};
957
    my $locale = $subscription->{locale};
Lines 1150-1164 sub ModSerialStatus { Link Here
1150
        my $subscription = GetSubscription($subscriptionid);
1159
        my $subscription = GetSubscription($subscriptionid);
1151
        my $pattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subscription->{numberpattern});
1160
        my $pattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subscription->{numberpattern});
1152
1161
1162
        my $nextpublisheddate = GetNextDate($subscription, $publisheddate, 1);
1163
        my ( $newserialseq,  $newlastvalue1, $newlastvalue2, $newlastvalue3,
1164
             $newinnerloop1, $newinnerloop2, $newinnerloop3 );
1165
1166
        if (!defined $pattern){
1167
            $pattern = "pubdate";
1168
            ( $newserialseq,  $newlastvalue1, $newlastvalue2, $newlastvalue3,
1169
              $newinnerloop1, $newinnerloop2, $newinnerloop3 ) = GetNextSeq( $subscription, $pattern, $nextpublisheddate );
1170
        } else {
1171
            ( $newserialseq,  $newlastvalue1, $newlastvalue2, $newlastvalue3,
1172
              $newinnerloop1, $newinnerloop2, $newinnerloop3 ) = GetNextSeq( $subscription, $pattern, $publisheddate );
1173
        }
1174
1153
        # next issue number
1175
        # next issue number
1154
        my (
1155
            $newserialseq,  $newlastvalue1, $newlastvalue2, $newlastvalue3,
1156
            $newinnerloop1, $newinnerloop2, $newinnerloop3
1157
          )
1158
          = GetNextSeq( $subscription, $pattern, $publisheddate );
1159
1176
1160
        # next date (calculated from actual date & frequency parameters)
1177
        # next date (calculated from actual date & frequency parameters)
1161
        my $nextpublisheddate = GetNextDate($subscription, $publisheddate, 1);
1162
        my $nextpubdate = $nextpublisheddate;
1178
        my $nextpubdate = $nextpublisheddate;
1163
        $query = "UPDATE subscription SET lastvalue1=?, lastvalue2=?, lastvalue3=?, innerloop1=?, innerloop2=?, innerloop3=?
1179
        $query = "UPDATE subscription SET lastvalue1=?, lastvalue2=?, lastvalue3=?, innerloop1=?, innerloop2=?, innerloop3=?
1164
                    WHERE  subscriptionid = ?";
1180
                    WHERE  subscriptionid = ?";
Lines 1424-1429 sub NewSubscription { Link Here
1424
    # calculate issue number
1440
    # calculate issue number
1425
    my $serialseq = GetSeq($subscription, $pattern) || q{};
1441
    my $serialseq = GetSeq($subscription, $pattern) || q{};
1426
1442
1443
    if ($serialseq eq "pubdate"){
1444
        $serialseq = dt_from_string( $firstacquidate )->strftime('%Y %B %d');
1445
    }
1446
1427
    Koha::Serial->new(
1447
    Koha::Serial->new(
1428
        {
1448
        {
1429
            serialseq      => $serialseq,
1449
            serialseq      => $serialseq,
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt (+1 lines)
Lines 302-307 fieldset.rows li.radio { width: 100%; } /* override staff-global.css */ Link Here
302
                                                    [% numberpattern.label | html %]
302
                                                    [% numberpattern.label | html %]
303
                                                </option>
303
                                                </option>
304
                                            [% END %]
304
                                            [% END %]
305
                                            <option value="0">Use publication date</option>
305
                                        </select>
306
                                        </select>
306
                                    </li>
307
                                    </li>
307
                                    <li>
308
                                    <li>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt (-1 / +7 lines)
Lines 168-175 Link Here
168
                [% END %]
168
                [% END %]
169
            </li>
169
            </li>
170
            <li><span class="label">Number pattern:</span>
170
            <li><span class="label">Number pattern:</span>
171
                [% numberpattern.label | html %]
171
                [% IF ( numberpattern ) %]
172
                    [% numberpattern.label | html %]
173
                [% ELSE %]
174
                    Uses publication date
175
                [% END %]
172
            </li>
176
            </li>
177
            [% IF ( numberpattern ) %]
173
            <li><table>
178
            <li><table>
174
            <tr>
179
            <tr>
175
                <td>Starting with:</td>
180
                <td>Starting with:</td>
Lines 196-201 Link Here
196
                [% END %]
201
                [% END %]
197
            </tr>
202
            </tr>
198
            </table></li>
203
            </table></li>
204
            [% END %]
199
            [% IF ( irregular_issues ) %]
205
            [% IF ( irregular_issues ) %]
200
            <li><span class="label">Irregularity:</span> [% irregular_issues | html %] issues
206
            <li><span class="label">Irregularity:</span> [% irregular_issues | html %] issues
201
            </li>
207
            </li>
(-)a/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js (-3 / +35 lines)
Lines 198-203 function modifyAdvancedPattern() { Link Here
198
    advancedpatternlocked = 0;
198
    advancedpatternlocked = 0;
199
}
199
}
200
200
201
function clearAdvancedPattern() {
202
    $("#patternname").prop('readOnly', false).val('');
203
    $("#numberingmethod").prop('readOnly', false).val('');
204
205
    $("#advancedpredictionpatternt input").each(function() {
206
        $(this).prop('readOnly', false).val('');
207
    });
208
    $("#advancedpredictionpatternt select").each(function() {
209
        $(this).prop('disabled', false).val('');
210
    });
211
212
    $("#restoreadvancedpatternbutton").hide();
213
    $("#saveadvancedpatternbutton").hide();
214
    $("#modifyadvancedpatternbutton").hide();
215
216
    advancedpatternlocked = 1;
217
}
218
201
function restoreAdvancedPattern() {
219
function restoreAdvancedPattern() {
202
    $("#patternname").prop('readOnly', true).val(globalnumpatterndata.label);
220
    $("#patternname").prop('readOnly', true).val(globalnumpatterndata.label);
203
    $("#numberingmethod").prop('readOnly', true).val(globalnumpatterndata.numberingmethod);
221
    $("#numberingmethod").prop('readOnly', true).val(globalnumpatterndata.numberingmethod);
Lines 362-367 function show_page_2() { Link Here
362
    displaymoreoptions();
380
    displaymoreoptions();
363
}
381
}
364
382
383
function usedatepattern() {
384
    $("#more_options").hide();
385
    clearAdvancedPattern();
386
    if ($("#advancedpredictionpattern").is(":visible")){
387
        $("#advancedpredictionpattern").toggle();
388
        $(".toggle_advanced_pattern").toggle();
389
    }
390
}
391
365
392
366
$(document).ready(function() {
393
$(document).ready(function() {
367
    $("#aqbooksellerid").on('keypress', function(e) {
394
    $("#aqbooksellerid").on('keypress', function(e) {
Lines 383-389 $(document).ready(function() { Link Here
383
    });
410
    });
384
    $("select#numberpattern").change(function(){
411
    $("select#numberpattern").change(function(){
385
        patternneedtobetested = 1;
412
        patternneedtobetested = 1;
386
        numberpatternload();
413
        console.log($("select#numberpattern").val());
414
        if ($("select#numberpattern").val() == "0"){
415
            usedatepattern();
416
        } else {
417
            numberpatternload();
418
        }
387
    });
419
    });
388
    $("#subtype").change(function(){
420
    $("#subtype").change(function(){
389
        $("input[name='enddate']").val('');
421
        $("input[name='enddate']").val('');
Lines 432-438 $(document).ready(function() { Link Here
432
    if($("#frequency").val() != ""){
464
    if($("#frequency").val() != ""){
433
        frequencyload();
465
        frequencyload();
434
    }
466
    }
435
    if($("#numberpattern").val() != ""){
467
    if($("#numberpattern").val() != "0" && $("#numberpattern").val() != ""){
436
        numberpatternload();
468
        numberpatternload();
437
    }
469
    }
438
470
Lines 496-499 $(document).ready(function() { Link Here
496
        e.preventDefault();
528
        e.preventDefault();
497
        testPredictionPattern();
529
        testPredictionPattern();
498
    });
530
    });
499
});
531
});
(-)a/serials/serials-collection.pl (-2 / +13 lines)
Lines 83-88 if($op eq 'gennext' && @subscriptionid){ Link Here
83
                 $newinnerloop1, $newinnerloop2, $newinnerloop3
83
                 $newinnerloop1, $newinnerloop2, $newinnerloop3
84
            ) = GetNextSeq($subscription, $pattern, $expected->{publisheddate});
84
            ) = GetNextSeq($subscription, $pattern, $expected->{publisheddate});
85
85
86
            if (!defined $pattern && !defined $newserialseq){
87
                $newserialseq = $expected->{publisheddate};
88
            }
89
86
             ## We generate the next publication date
90
             ## We generate the next publication date
87
             my $nextpublisheddate = GetNextDate($subscription, $expected->{publisheddate}, 1);
91
             my $nextpublisheddate = GetNextDate($subscription, $expected->{publisheddate}, 1);
88
             my $planneddate = $date_received_today ? dt_from_string : $nextpublisheddate;
92
             my $planneddate = $date_received_today ? dt_from_string : $nextpublisheddate;
Lines 128-135 if (@subscriptionid){ Link Here
128
    $location = $subs->{'location'};
132
    $location = $subs->{'location'};
129
	$callnumber = $subs->{callnumber};
133
	$callnumber = $subs->{callnumber};
130
    my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subs->{periodicity});
134
    my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subs->{periodicity});
131
    my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subs->{numberpattern});
132
    $subs->{frequency} = $frequency;
135
    $subs->{frequency} = $frequency;
136
    my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subs->{numberpattern});
137
    if (!defined $numberpattern){
138
        $numberpattern->{label} = "Uses publication date";
139
    }
133
    $subs->{numberpattern} = $numberpattern;
140
    $subs->{numberpattern} = $numberpattern;
134
    $subs->{'hasRouting'} = check_routing($subscriptionid);
141
    $subs->{'hasRouting'} = check_routing($subscriptionid);
135
    push @$subscriptiondescs,$subs;
142
    push @$subscriptiondescs,$subs;
Lines 148-154 if (@subscriptionid){ Link Here
148
    my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($s->{periodicity});
155
    my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($s->{periodicity});
149
    my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($s->{numberpattern});
156
    my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($s->{numberpattern});
150
    $s->{frequency} = $frequency;
157
    $s->{frequency} = $frequency;
151
    $s->{numberpattern} = $numberpattern;
158
    if (!defined $numberpattern){
159
        $numberpattern->{label} = "pubdate";
160
    } else {
161
        $s->{numberpattern} = $numberpattern;
162
    }
152
  }
163
  }
153
  my $subscriptioninformation = GetFullSubscriptionsFromBiblionumber($biblionumber);
164
  my $subscriptioninformation = GetFullSubscriptionsFromBiblionumber($biblionumber);
154
  $subscriptions=PrepareSerialsData($subscriptioninformation);
165
  $subscriptions=PrepareSerialsData($subscriptioninformation);
(-)a/serials/showpredictionpattern.pl (+9 lines)
Lines 31-36 publication date, based on frequency and first publication date. Link Here
31
use Modern::Perl;
31
use Modern::Perl;
32
32
33
use CGI qw ( -utf8 );
33
use CGI qw ( -utf8 );
34
use POSIX qw(strftime);
34
use Date::Calc qw(Today Day_of_Year Week_of_Year Day_of_Week Days_in_Year Delta_Days Add_Delta_Days Add_Delta_YM);
35
use Date::Calc qw(Today Day_of_Year Week_of_Year Day_of_Week Days_in_Year Delta_Days Add_Delta_Days Add_Delta_YM);
35
use C4::Auth;
36
use C4::Auth;
36
use C4::Output;
37
use C4::Output;
Lines 112-117 if(defined $subscriptionid) { Link Here
112
113
113
my @predictions_loop;
114
my @predictions_loop;
114
my ($calculated) = GetSeq(\%subscription, \%pattern);
115
my ($calculated) = GetSeq(\%subscription, \%pattern);
116
117
if ($calculated eq "pubdate"){
118
    $calculated = dt_from_string( $date )->strftime('%Y %B %d');
119
}
120
115
push @predictions_loop, {
121
push @predictions_loop, {
116
    number => $calculated,
122
    number => $calculated,
117
    publicationdate => $date,
123
    publicationdate => $date,
Lines 159-164 while( $i < 1000 ) { Link Here
159
    ($calculated, $subscription{'lastvalue1'}, $subscription{'lastvalue2'}, $subscription{'lastvalue3'}, $subscription{'innerloop1'}, $subscription{'innerloop2'}, $subscription{'innerloop3'}) = GetNextSeq(\%subscription, \%pattern);
165
    ($calculated, $subscription{'lastvalue1'}, $subscription{'lastvalue2'}, $subscription{'lastvalue3'}, $subscription{'innerloop1'}, $subscription{'innerloop2'}, $subscription{'innerloop3'}) = GetNextSeq(\%subscription, \%pattern);
160
    $issuenumber++;
166
    $issuenumber++;
161
    $line{'number'} = $calculated;
167
    $line{'number'} = $calculated;
168
    if ($calculated eq ''){
169
        $line{'number'} = dt_from_string( $date )->strftime('%Y %B %d');
170
    }
162
    $line{'issuenumber'} = $issuenumber;
171
    $line{'issuenumber'} = $issuenumber;
163
    if(@irreg && $issuenumber == $irreg[0]){
172
    if(@irreg && $issuenumber == $irreg[0]){
164
        $line{'not_published'} = 1;
173
        $line{'not_published'} = 1;
(-)a/serials/subscription-add.pl (-1 / +8 lines)
Lines 338-343 sub redirect_add_subscription { Link Here
338
        }
338
        }
339
    }
339
    }
340
340
341
    if ($numberpattern == "0"){ # using publication date as numbering pattern
342
        $numberpattern = undef;
343
    }
344
341
    my $subscriptionid = NewSubscription(
345
    my $subscriptionid = NewSubscription(
342
        $auser, $branchcode, $aqbooksellerid, $cost, $aqbudgetid, $biblionumber,
346
        $auser, $branchcode, $aqbooksellerid, $cost, $aqbudgetid, $biblionumber,
343
        $startdate, $periodicity, $numberlength, $weeklength,
347
        $startdate, $periodicity, $numberlength, $weeklength,
Lines 422-427 sub redirect_mod_subscription { Link Here
422
        $firstissuedate = $nextacquidate if($nextexpected->{isfirstissue});
426
        $firstissuedate = $nextacquidate if($nextexpected->{isfirstissue});
423
    }
427
    }
424
428
429
    if ($numberpattern == "0"){ # using publication date as numbering pattern
430
        $numberpattern = undef;
431
    }
432
425
    ModSubscription(
433
    ModSubscription(
426
        $auser, $branchcode, $aqbooksellerid, $cost, $aqbudgetid, $startdate,
434
        $auser, $branchcode, $aqbooksellerid, $cost, $aqbudgetid, $startdate,
427
        $periodicity, $firstacquidate, join(";",@irregularity),
435
        $periodicity, $firstacquidate, join(";",@irregularity),
428
- 

Return to bug 22188