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

(-)a/C4/Serials.pm (-28 / +38 lines)
Lines 2433-2443 sub GetFictiveIssueNumber { Link Here
2433
sub _get_next_date_day {
2433
sub _get_next_date_day {
2434
    my ($subscription, $freqdata, $year, $month, $day) = @_;
2434
    my ($subscription, $freqdata, $year, $month, $day) = @_;
2435
2435
2436
    if ($subscription->{'countissuesperunit'} + 1 > $freqdata->{'issuesperunit'}){
2436
    if ($subscription->{countissuesperunit} + 1 > $freqdata->{issuesperunit}){
2437
        ($year,$month,$day) = Add_Delta_Days($year,$month, $day , $freqdata->{'unitsperissue'} );
2437
        ($year,$month,$day) = Add_Delta_Days($year,$month, $day , $freqdata->{unitsperissue} );
2438
        $subscription->{'countissuesperunit'} = 1;
2438
        $subscription->{countissuesperunit} = 1;
2439
    } else {
2439
    } else {
2440
        $subscription->{'countissuesperunit'}++;
2440
        $subscription->{countissuesperunit}++;
2441
    }
2441
    }
2442
2442
2443
    return ($year, $month, $day);
2443
    return ($year, $month, $day);
Lines 2447-2467 sub _get_next_date_week { Link Here
2447
    my ($subscription, $freqdata, $year, $month, $day) = @_;
2447
    my ($subscription, $freqdata, $year, $month, $day) = @_;
2448
2448
2449
    my ($wkno, $yr) = Week_of_Year($year, $month, $day);
2449
    my ($wkno, $yr) = Week_of_Year($year, $month, $day);
2450
    my $fa_dow = Day_of_Week(split /-/, $subscription->{firstacquidate});
2450
2451
2451
    if ($subscription->{'countissuesperunit'} + 1 > $freqdata->{'issuesperunit'}){
2452
    if ($subscription->{countissuesperunit} + 1 > $freqdata->{issuesperunit}){
2452
        $subscription->{'countissuesperunit'} = 1;
2453
        $subscription->{countissuesperunit} = 1;
2453
        $wkno += $freqdata->{"unitsperissue"};
2454
        $wkno += $freqdata->{unitsperissue};
2454
        if($wkno > 52){
2455
        if($wkno > 52){
2455
            $wkno = $wkno % 52;
2456
            $wkno = $wkno % 52;
2456
            $yr++;
2457
            $yr++;
2457
        }
2458
        }
2458
        my $dow = Day_of_Week($year, $month, $day);
2459
        ($year,$month,$day) = Monday_of_Week($wkno, $yr);
2459
        ($year,$month,$day) = Monday_of_Week($wkno, $yr);
2460
        if($freqdata->{'issuesperunit'} == 1) {
2460
        ($year,$month,$day) = Add_Delta_Days($year, $month, $day, $fa_dow - 1);
2461
            ($year, $month, $day) = Add_Delta_Days($year, $month, $day, $dow - 1);
2462
        }
2463
    } else {
2461
    } else {
2464
        $subscription->{'countissuesperunit'}++;
2462
        # Try to guess the next day of week
2463
        my $delta_days = int((7 - ($fa_dow - 1)) / $freqdata->{issuesperunit});
2464
        ($year,$month,$day) = Add_Delta_Days($year, $month, $day, $delta_days);
2465
        $subscription->{countissuesperunit}++;
2465
    }
2466
    }
2466
2467
2467
    return ($year, $month, $day);
2468
    return ($year, $month, $day);
Lines 2470-2483 sub _get_next_date_week { Link Here
2470
sub _get_next_date_month {
2471
sub _get_next_date_month {
2471
    my ($subscription, $freqdata, $year, $month, $day) = @_;
2472
    my ($subscription, $freqdata, $year, $month, $day) = @_;
2472
2473
2473
    if ($subscription->{'countissuesperunit'} + 1 > $freqdata->{'issuesperunit'}){
2474
    my $fa_day;
2474
        $subscription->{'countissuesperunit'} = 1;
2475
    (undef, undef, $fa_day) = split /-/, $subscription->{firstacquidate};
2475
        ($year,$month,$day) = Add_Delta_YM($year,$month,$day, 0,$freqdata->{"unitsperissue"});
2476
2476
        unless($freqdata->{'issuesperunit'} == 1) {
2477
    if ($subscription->{countissuesperunit} + 1 > $freqdata->{issuesperunit}){
2477
            $day = 1;   # Jumping to the first day of month, because we don't know what day is expected
2478
        $subscription->{countissuesperunit} = 1;
2478
        }
2479
        ($year,$month,$day) = Add_Delta_YM($year,$month,$day, 0,
2480
            $freqdata->{unitsperissue});
2481
        my $days_in_month = Days_in_Month($year, $month);
2482
        $day = $fa_day <= $days_in_month ? $fa_day : $days_in_month;
2479
    } else {
2483
    } else {
2480
        $subscription->{'countissuesperunit'}++;
2484
        # Try to guess the next day in month
2485
        my $delta_days = int((28 - ($fa_day - 1)) / $freqdata->{issuesperunit});
2486
        ($year,$month,$day) = Add_Delta_Days($year, $month, $day, $delta_days);
2487
        $subscription->{countissuesperunit}++;
2481
    }
2488
    }
2482
2489
2483
    return ($year, $month, $day);
2490
    return ($year, $month, $day);
Lines 2486-2501 sub _get_next_date_month { Link Here
2486
sub _get_next_date_year {
2493
sub _get_next_date_year {
2487
    my ($subscription, $freqdata, $year, $month, $day) = @_;
2494
    my ($subscription, $freqdata, $year, $month, $day) = @_;
2488
2495
2489
    if ($subscription->{'countissuesperunit'} + 1 > $freqdata->{'issuesperunit'}){
2496
    my ($fa_year, $fa_month, $fa_day) = split /-/, $subscription->{firstacquidate};
2490
        $subscription->{'countissuesperunit'} = 1;
2497
2491
        ($year,$month,$day) = Add_Delta_YM($year,$month,$day, $freqdata->{"unitsperissue"},0);
2498
    if ($subscription->{countissuesperunit} + 1 > $freqdata->{issuesperunit}){
2492
        unless($freqdata->{'issuesperunit'} == 1) {
2499
        $subscription->{countissuesperunit} = 1;
2493
            # Jumping to the first day of year, because we don't know what day is expected
2500
        ($year) = Add_Delta_YM($year,$month,$day, $freqdata->{"unitsperissue"},0);
2494
            $month = 1;
2501
        $month = $fa_month;
2495
            $day = 1;
2502
        my $days_in_month = Days_in_Month($year, $month);
2496
        }
2503
        $day = $fa_day <= $days_in_month ? $fa_day : $days_in_month;
2497
    } else {
2504
    } else {
2498
        $subscription->{'countissuesperunit'}++;
2505
        # Try to guess the next day in year
2506
        my $delta_days = int((365 - ($fa_day - 1)) / $freqdata->{issuesperunit});
2507
        ($year,$month,$day) = Add_Delta_Days($year, $month, $day, $delta_days);
2508
        $subscription->{countissuesperunit}++;
2499
    }
2509
    }
2500
2510
2501
    return ($year, $month, $day);
2511
    return ($year, $month, $day);
(-)a/t/db_dependent/Serials/GetNextDate.t (-48 / +91 lines)
Lines 1-7 Link Here
1
#!/usr/bin/perl
1
#!/usr/bin/perl
2
2
3
use C4::Context;
3
use C4::Context;
4
use Test::More tests => 86;
4
use Test::More tests => 96;
5
use Modern::Perl;
5
use Modern::Perl;
6
6
7
my $dbh = C4::Context->dbh;
7
my $dbh = C4::Context->dbh;
Lines 11-17 $dbh->{AutoCommit} = 0; Link Here
11
use C4::Serials::Frequency;
11
use C4::Serials::Frequency;
12
use C4::Serials;
12
use C4::Serials;
13
13
14
# TEST CASE 1 - 1 issue per day, no irregularities
14
# TEST CASE - 1 issue per day, no irregularities
15
my $frequency = {
15
my $frequency = {
16
    description => "One issue per day",
16
    description => "One issue per day",
17
    unit => 'day',
17
    unit => 'day',
Lines 35-41 is($publisheddate, '1970-01-03'); Link Here
35
$publisheddate = GetNextDate($subscription, $publisheddate);
35
$publisheddate = GetNextDate($subscription, $publisheddate);
36
is($publisheddate, '1970-01-04');
36
is($publisheddate, '1970-01-04');
37
37
38
# TEST CASE 2 - 1 issue per day, irregularities
38
# TEST CASE - 1 issue per day, irregularities
39
$subscription = {
39
$subscription = {
40
    periodicity => $id,
40
    periodicity => $id,
41
    firstacquidate => '1970-01-01',
41
    firstacquidate => '1970-01-01',
Lines 50-56 is($publisheddate, '1970-01-05'); Link Here
50
$publisheddate = GetNextDate($subscription, $publisheddate);
50
$publisheddate = GetNextDate($subscription, $publisheddate);
51
is($publisheddate, '1970-01-06');
51
is($publisheddate, '1970-01-06');
52
52
53
# TEST CASE 3 - 2 issues per day, no irregularity
53
# TEST CASE - 2 issues per day, no irregularity
54
$id = AddSubscriptionFrequency({
54
$id = AddSubscriptionFrequency({
55
    description => "Two issues per day",
55
    description => "Two issues per day",
56
    unit => 'day',
56
    unit => 'day',
Lines 73-79 is($publisheddate, '1970-01-02'); Link Here
73
$publisheddate = GetNextDate($subscription, $publisheddate);
73
$publisheddate = GetNextDate($subscription, $publisheddate);
74
is($publisheddate, '1970-01-03');
74
is($publisheddate, '1970-01-03');
75
75
76
# TEST CASE 4 - 2 issues per day, irregularities
76
# TEST CASE - 2 issues per day, irregularities
77
$subscription = {
77
$subscription = {
78
    periodicity => $id,
78
    periodicity => $id,
79
    firstacquidate => '1970-01-01',
79
    firstacquidate => '1970-01-01',
Lines 92-98 is($publisheddate, '1970-01-04'); Link Here
92
$publisheddate = GetNextDate($subscription, $publisheddate);
92
$publisheddate = GetNextDate($subscription, $publisheddate);
93
is($publisheddate, '1970-01-05');
93
is($publisheddate, '1970-01-05');
94
94
95
# TEST CASE 5 - 1 issue every 2 days, no irregularity
95
# TEST CASE - 1 issue every 2 days, no irregularity
96
$id = AddSubscriptionFrequency({
96
$id = AddSubscriptionFrequency({
97
    description => "one issue every two days",
97
    description => "one issue every two days",
98
    unit => 'day',
98
    unit => 'day',
Lines 111-117 is($publisheddate, '1970-01-03'); Link Here
111
$publisheddate = GetNextDate($subscription, $publisheddate);
111
$publisheddate = GetNextDate($subscription, $publisheddate);
112
is($publisheddate, '1970-01-05');
112
is($publisheddate, '1970-01-05');
113
113
114
# TEST CASE 6 - 1 issue every 2 days, irregularities
114
# TEST CASE - 1 issue every 2 days, irregularities
115
$subscription = {
115
$subscription = {
116
    periodicity => $id,
116
    periodicity => $id,
117
    firstacquidate => '1970-01-01',
117
    firstacquidate => '1970-01-01',
Lines 126-132 is($publisheddate, '1970-01-07'); Link Here
126
$publisheddate = GetNextDate($subscription, $publisheddate);
126
$publisheddate = GetNextDate($subscription, $publisheddate);
127
is($publisheddate, '1970-01-09');
127
is($publisheddate, '1970-01-09');
128
128
129
# TEST CASE 7 - 1 issue per week, no irregularity
129
# TEST CASE - 1 issue per week, no irregularity
130
$id = AddSubscriptionFrequency({
130
$id = AddSubscriptionFrequency({
131
    description => "one issue per week",
131
    description => "one issue per week",
132
    unit => 'week',
132
    unit => 'week',
Lines 145-151 is($publisheddate, '1970-01-08'); Link Here
145
$publisheddate = GetNextDate($subscription, $publisheddate);
145
$publisheddate = GetNextDate($subscription, $publisheddate);
146
is($publisheddate, '1970-01-15');
146
is($publisheddate, '1970-01-15');
147
147
148
# TEST CASE 8 - 1 issue per week, irregularities
148
# TEST CASE - 1 issue per week, irregularities
149
$subscription = {
149
$subscription = {
150
    periodicity => $id,
150
    periodicity => $id,
151
    firstacquidate => '1970-01-01',
151
    firstacquidate => '1970-01-01',
Lines 160-166 is($publisheddate, '1970-01-22'); Link Here
160
$publisheddate = GetNextDate($subscription, $publisheddate);
160
$publisheddate = GetNextDate($subscription, $publisheddate);
161
is($publisheddate, '1970-01-29');
161
is($publisheddate, '1970-01-29');
162
162
163
# TEST CASE 9 - 1 issue every 2 weeks, no irregularity
163
# TEST CASE - 1 issue every 2 weeks, no irregularity
164
$id = AddSubscriptionFrequency({
164
$id = AddSubscriptionFrequency({
165
    description => "one issue every 2 weeks",
165
    description => "one issue every 2 weeks",
166
    unit => 'week',
166
    unit => 'week',
Lines 181-187 is($publisheddate, '1970-01-29'); Link Here
181
$publisheddate = GetNextDate($subscription, $publisheddate);
181
$publisheddate = GetNextDate($subscription, $publisheddate);
182
is($publisheddate, '1970-02-12');
182
is($publisheddate, '1970-02-12');
183
183
184
# TEST CASE 10 - 1 issue every 2 weeks, irregularities
184
# TEST CASE - 1 issue every 2 weeks, irregularities
185
$subscription = {
185
$subscription = {
186
    periodicity => $id,
186
    periodicity => $id,
187
    firstacquidate => '1970-01-01',
187
    firstacquidate => '1970-01-01',
Lines 196-202 is($publisheddate, '1970-02-12'); Link Here
196
$publisheddate = GetNextDate($subscription, $publisheddate);
196
$publisheddate = GetNextDate($subscription, $publisheddate);
197
is($publisheddate, '1970-02-26');
197
is($publisheddate, '1970-02-26');
198
198
199
# TEST CASE 11 - 2 issues per week, no irregularity
199
# TEST CASE - 2 issues per week, no irregularity
200
$id = AddSubscriptionFrequency({
200
$id = AddSubscriptionFrequency({
201
    description => "two issues per week",
201
    description => "two issues per week",
202
    unit => 'week',
202
    unit => 'week',
Lines 211-227 $subscription = { Link Here
211
};
211
};
212
$publisheddate = $subscription->{firstacquidate};
212
$publisheddate = $subscription->{firstacquidate};
213
$publisheddate = GetNextDate($subscription, $publisheddate);
213
$publisheddate = GetNextDate($subscription, $publisheddate);
214
is($publisheddate, '1970-01-01');
214
is($publisheddate, '1970-01-03');
215
# when more than 1 issue per week, date is automatically set to monday
215
# when more than 1 issue per week, date is automatically set to the same day of
216
# because we can't guess the right day
216
# week as firstacquidate
217
$publisheddate = GetNextDate($subscription, $publisheddate);
217
$publisheddate = GetNextDate($subscription, $publisheddate);
218
is($publisheddate, '1970-01-05');
218
is($publisheddate, '1970-01-08');
219
$publisheddate = GetNextDate($subscription, $publisheddate);
219
$publisheddate = GetNextDate($subscription, $publisheddate);
220
is($publisheddate, '1970-01-05');
220
is($publisheddate, '1970-01-10');
221
$publisheddate = GetNextDate($subscription, $publisheddate);
221
$publisheddate = GetNextDate($subscription, $publisheddate);
222
is($publisheddate, '1970-01-12');
222
is($publisheddate, '1970-01-15');
223
223
224
# TEST CASE 12 - 2 issues per week, irregularities
224
# TEST CASE - 2 issues per week, irregularities
225
$subscription = {
225
$subscription = {
226
    periodicity => $id,
226
    periodicity => $id,
227
    firstacquidate => '1970-01-01',
227
    firstacquidate => '1970-01-01',
Lines 230-246 $subscription = { Link Here
230
};
230
};
231
$publisheddate = $subscription->{firstacquidate};
231
$publisheddate = $subscription->{firstacquidate};
232
$publisheddate = GetNextDate($subscription, $publisheddate);
232
$publisheddate = GetNextDate($subscription, $publisheddate);
233
is($publisheddate, '1970-01-01');
233
is($publisheddate, '1970-01-03');
234
$publisheddate = GetNextDate($subscription, $publisheddate);
234
$publisheddate = GetNextDate($subscription, $publisheddate);
235
is($publisheddate, '1970-01-05');
235
is($publisheddate, '1970-01-10');
236
$publisheddate = GetNextDate($subscription, $publisheddate);
237
is($publisheddate, '1970-01-22');
238
$publisheddate = GetNextDate($subscription, $publisheddate);
239
is($publisheddate, '1970-01-24');
240
$publisheddate = GetNextDate($subscription, $publisheddate);
241
is($publisheddate, '1970-01-29');
242
243
# TEST CASE - 6 issues per week, no irregularity
244
$id = AddSubscriptionFrequency({
245
    description => "six issues per week",
246
    unit => 'week',
247
    issuesperunit => 6,
248
    unitsperissue => 1,
249
});
250
$subscription = {
251
    periodicity => $id,
252
    firstacquidate => '1970-01-06',
253
    irregularity => '',
254
    countissuesperunit => 1,
255
};
256
$publisheddate = $subscription->{firstacquidate};
257
$publisheddate = GetNextDate($subscription, $publisheddate);
258
is($publisheddate, '1970-01-07');
259
$publisheddate = GetNextDate($subscription, $publisheddate);
260
is($publisheddate, '1970-01-08');
261
$publisheddate = GetNextDate($subscription, $publisheddate);
262
is($publisheddate, '1970-01-09');
263
$publisheddate = GetNextDate($subscription, $publisheddate);
264
is($publisheddate, '1970-01-10');
265
$publisheddate = GetNextDate($subscription, $publisheddate);
266
is($publisheddate, '1970-01-11');
267
$publisheddate = GetNextDate($subscription, $publisheddate);
268
is($publisheddate, '1970-01-13');
269
270
# TEST CASE - 6 issues per week, irregularities
271
$subscription = {
272
    periodicity => $id,
273
    firstacquidate => '1970-01-06',
274
    irregularity => '3;5;6',
275
    countissuesperunit => 1,
276
};
277
$publisheddate = $subscription->{firstacquidate};
278
$publisheddate = GetNextDate($subscription, $publisheddate);
279
is($publisheddate, '1970-01-07');
236
$publisheddate = GetNextDate($subscription, $publisheddate);
280
$publisheddate = GetNextDate($subscription, $publisheddate);
237
is($publisheddate, '1970-01-19');
281
is($publisheddate, '1970-01-09');
238
$publisheddate = GetNextDate($subscription, $publisheddate);
282
$publisheddate = GetNextDate($subscription, $publisheddate);
239
is($publisheddate, '1970-01-19');
283
is($publisheddate, '1970-01-13');
240
$publisheddate = GetNextDate($subscription, $publisheddate);
284
$publisheddate = GetNextDate($subscription, $publisheddate);
241
is($publisheddate, '1970-01-26');
285
is($publisheddate, '1970-01-14');
242
286
243
# TEST CASE 13 - 1 issue per month, no irregularity
287
# TEST CASE - 1 issue per month, no irregularity
244
$id = AddSubscriptionFrequency({
288
$id = AddSubscriptionFrequency({
245
    description => "1 issue per month",
289
    description => "1 issue per month",
246
    unit => 'month',
290
    unit => 'month',
Lines 261-267 is($publisheddate, '1970-03-01'); Link Here
261
$publisheddate = GetNextDate($subscription, $publisheddate);
305
$publisheddate = GetNextDate($subscription, $publisheddate);
262
is($publisheddate, '1970-04-01');
306
is($publisheddate, '1970-04-01');
263
307
264
# TEST CASE 14 - 1 issue per month, irregularities
308
# TEST CASE - 1 issue per month, irregularities
265
$subscription = {
309
$subscription = {
266
    periodicity => $id,
310
    periodicity => $id,
267
    firstacquidate => '1970-01-01',
311
    firstacquidate => '1970-01-01',
Lines 276-282 is($publisheddate, '1970-05-01'); Link Here
276
$publisheddate = GetNextDate($subscription, $publisheddate);
320
$publisheddate = GetNextDate($subscription, $publisheddate);
277
is($publisheddate, '1970-06-01');
321
is($publisheddate, '1970-06-01');
278
322
279
# TEST CASE 15 - 1 issue every 2 months, no irregularity
323
# TEST CASE - 1 issue every 2 months, no irregularity
280
$id = AddSubscriptionFrequency({
324
$id = AddSubscriptionFrequency({
281
    description => "1 issue every 2 months",
325
    description => "1 issue every 2 months",
282
    unit => 'month',
326
    unit => 'month',
Lines 297-303 is($publisheddate, '1970-05-01'); Link Here
297
$publisheddate = GetNextDate($subscription, $publisheddate);
341
$publisheddate = GetNextDate($subscription, $publisheddate);
298
is($publisheddate, '1970-07-01');
342
is($publisheddate, '1970-07-01');
299
343
300
# TEST CASE 16 - 1 issue every 2 months, irregularities
344
# TEST CASE - 1 issue every 2 months, irregularities
301
$subscription = {
345
$subscription = {
302
    periodicity => $id,
346
    periodicity => $id,
303
    firstacquidate => '1970-01-01',
347
    firstacquidate => '1970-01-01',
Lines 312-318 is($publisheddate, '1970-09-01'); Link Here
312
$publisheddate = GetNextDate($subscription, $publisheddate);
356
$publisheddate = GetNextDate($subscription, $publisheddate);
313
is($publisheddate, '1970-11-01');
357
is($publisheddate, '1970-11-01');
314
358
315
# TEST CASE 17 - 2 issues per month, no irregularity
359
# TEST CASE - 2 issues per month, no irregularity
316
$id = AddSubscriptionFrequency({
360
$id = AddSubscriptionFrequency({
317
    description => "2 issues per month",
361
    description => "2 issues per month",
318
    unit => 'month',
362
    unit => 'month',
Lines 327-341 $subscription = { Link Here
327
};
371
};
328
$publisheddate = $subscription->{firstacquidate};
372
$publisheddate = $subscription->{firstacquidate};
329
$publisheddate = GetNextDate($subscription, $publisheddate);
373
$publisheddate = GetNextDate($subscription, $publisheddate);
330
is($publisheddate, '1970-01-01');
374
is($publisheddate, '1970-01-15');
331
$publisheddate = GetNextDate($subscription, $publisheddate);
375
$publisheddate = GetNextDate($subscription, $publisheddate);
332
is($publisheddate, '1970-02-01');
376
is($publisheddate, '1970-02-01');
333
$publisheddate = GetNextDate($subscription, $publisheddate);
377
$publisheddate = GetNextDate($subscription, $publisheddate);
334
is($publisheddate, '1970-02-01');
378
is($publisheddate, '1970-02-15');
335
$publisheddate = GetNextDate($subscription, $publisheddate);
379
$publisheddate = GetNextDate($subscription, $publisheddate);
336
is($publisheddate, '1970-03-01');
380
is($publisheddate, '1970-03-01');
337
381
338
# TEST CASE 18 - 2 issues per month, irregularities
382
# TEST CASE - 2 issues per month, irregularities
339
$subscription = {
383
$subscription = {
340
    periodicity => $id,
384
    periodicity => $id,
341
    firstacquidate => '1970-01-01',
385
    firstacquidate => '1970-01-01',
Lines 344-360 $subscription = { Link Here
344
};
388
};
345
$publisheddate = $subscription->{firstacquidate};
389
$publisheddate = $subscription->{firstacquidate};
346
$publisheddate = GetNextDate($subscription, $publisheddate);
390
$publisheddate = GetNextDate($subscription, $publisheddate);
347
is($publisheddate, '1970-01-01');
391
is($publisheddate, '1970-01-15');
348
$publisheddate = GetNextDate($subscription, $publisheddate);
392
$publisheddate = GetNextDate($subscription, $publisheddate);
349
is($publisheddate, '1970-02-01');
393
is($publisheddate, '1970-02-15');
350
$publisheddate = GetNextDate($subscription, $publisheddate);
394
$publisheddate = GetNextDate($subscription, $publisheddate);
351
is($publisheddate, '1970-04-01');
395
is($publisheddate, '1970-04-01');
352
$publisheddate = GetNextDate($subscription, $publisheddate);
396
$publisheddate = GetNextDate($subscription, $publisheddate);
353
is($publisheddate, '1970-04-01');
397
is($publisheddate, '1970-04-15');
354
$publisheddate = GetNextDate($subscription, $publisheddate);
398
$publisheddate = GetNextDate($subscription, $publisheddate);
355
is($publisheddate, '1970-05-01');
399
is($publisheddate, '1970-05-01');
356
400
357
# TEST CASE 19 - 1 issue per year, no irregularity
401
# TEST CASE - 1 issue per year, no irregularity
358
$id = AddSubscriptionFrequency({
402
$id = AddSubscriptionFrequency({
359
    description => "1 issue per year",
403
    description => "1 issue per year",
360
    unit => 'year',
404
    unit => 'year',
Lines 375-381 is($publisheddate, '1972-01-01'); Link Here
375
$publisheddate = GetNextDate($subscription, $publisheddate);
419
$publisheddate = GetNextDate($subscription, $publisheddate);
376
is($publisheddate, '1973-01-01');
420
is($publisheddate, '1973-01-01');
377
421
378
# TEST CASE 20 - 1 issue per year, irregularities
422
# TEST CASE - 1 issue per year, irregularities
379
$subscription = {
423
$subscription = {
380
    periodicity => $id,
424
    periodicity => $id,
381
    firstacquidate => '1970-01-01',
425
    firstacquidate => '1970-01-01',
Lines 390-396 is($publisheddate, '1974-01-01'); Link Here
390
$publisheddate = GetNextDate($subscription, $publisheddate);
434
$publisheddate = GetNextDate($subscription, $publisheddate);
391
is($publisheddate, '1975-01-01');
435
is($publisheddate, '1975-01-01');
392
436
393
# TEST CASE 21 - 1 issue every 2 years, no irregularity
437
# TEST CASE - 1 issue every 2 years, no irregularity
394
$id = AddSubscriptionFrequency({
438
$id = AddSubscriptionFrequency({
395
    description => "1 issue every 2 years",
439
    description => "1 issue every 2 years",
396
    unit => 'year',
440
    unit => 'year',
Lines 411-417 is($publisheddate, '1974-01-01'); Link Here
411
$publisheddate = GetNextDate($subscription, $publisheddate);
455
$publisheddate = GetNextDate($subscription, $publisheddate);
412
is($publisheddate, '1976-01-01');
456
is($publisheddate, '1976-01-01');
413
457
414
# TEST CASE 22 - 1 issue every 2 years, irregularities
458
# TEST CASE - 1 issue every 2 years, irregularities
415
$subscription = {
459
$subscription = {
416
    periodicity => $id,
460
    periodicity => $id,
417
    firstacquidate => '1970-01-01',
461
    firstacquidate => '1970-01-01',
Lines 426-432 is($publisheddate, '1978-01-01'); Link Here
426
$publisheddate = GetNextDate($subscription, $publisheddate);
470
$publisheddate = GetNextDate($subscription, $publisheddate);
427
is($publisheddate, '1980-01-01');
471
is($publisheddate, '1980-01-01');
428
472
429
# TEST CASE 23 - 2 issues per year, no irregularity
473
# TEST CASE - 2 issues per year, no irregularity
430
$id = AddSubscriptionFrequency({
474
$id = AddSubscriptionFrequency({
431
    description => "1 issue every 2 years",
475
    description => "1 issue every 2 years",
432
    unit => 'year',
476
    unit => 'year',
Lines 441-455 $subscription = { Link Here
441
};
485
};
442
$publisheddate = $subscription->{firstacquidate};
486
$publisheddate = $subscription->{firstacquidate};
443
$publisheddate = GetNextDate($subscription, $publisheddate);
487
$publisheddate = GetNextDate($subscription, $publisheddate);
444
is($publisheddate, '1970-01-01');
488
is($publisheddate, '1970-07-02');
445
$publisheddate = GetNextDate($subscription, $publisheddate);
489
$publisheddate = GetNextDate($subscription, $publisheddate);
446
is($publisheddate, '1971-01-01');
490
is($publisheddate, '1971-01-01');
447
$publisheddate = GetNextDate($subscription, $publisheddate);
491
$publisheddate = GetNextDate($subscription, $publisheddate);
448
is($publisheddate, '1971-01-01');
492
is($publisheddate, '1971-07-02');
449
$publisheddate = GetNextDate($subscription, $publisheddate);
493
$publisheddate = GetNextDate($subscription, $publisheddate);
450
is($publisheddate, '1972-01-01');
494
is($publisheddate, '1972-01-01');
451
495
452
# TEST CASE 24 - 2 issues per year, irregularities
496
# TEST CASE - 2 issues per year, irregularities
453
$subscription = {
497
$subscription = {
454
    periodicity => $id,
498
    periodicity => $id,
455
    firstacquidate => '1970-01-01',
499
    firstacquidate => '1970-01-01',
Lines 458-474 $subscription = { Link Here
458
};
502
};
459
$publisheddate = $subscription->{firstacquidate};
503
$publisheddate = $subscription->{firstacquidate};
460
$publisheddate = GetNextDate($subscription, $publisheddate);
504
$publisheddate = GetNextDate($subscription, $publisheddate);
461
is($publisheddate, '1970-01-01');
505
is($publisheddate, '1970-07-02');
462
$publisheddate = GetNextDate($subscription, $publisheddate);
506
$publisheddate = GetNextDate($subscription, $publisheddate);
463
is($publisheddate, '1971-01-01');
507
is($publisheddate, '1971-07-02');
464
$publisheddate = GetNextDate($subscription, $publisheddate);
508
$publisheddate = GetNextDate($subscription, $publisheddate);
465
is($publisheddate, '1973-01-01');
509
is($publisheddate, '1973-01-01');
466
$publisheddate = GetNextDate($subscription, $publisheddate);
510
$publisheddate = GetNextDate($subscription, $publisheddate);
467
is($publisheddate, '1973-01-01');
511
is($publisheddate, '1973-07-02');
468
$publisheddate = GetNextDate($subscription, $publisheddate);
512
$publisheddate = GetNextDate($subscription, $publisheddate);
469
is($publisheddate, '1974-01-01');
513
is($publisheddate, '1974-01-01');
470
514
471
# TEST CASE 25 - Irregular
515
# TEST CASE - Irregular
472
$id = AddSubscriptionFrequency({
516
$id = AddSubscriptionFrequency({
473
    description => "Irregular",
517
    description => "Irregular",
474
    unit => undef,
518
    unit => undef,
475
- 

Return to bug 12671