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

(-)a/Koha/Hold.pm (-7 / +10 lines)
Lines 231-243 sub set_waiting { Link Here
231
    my $max_pickup_delay = C4::Context->preference("ReservesMaxPickUpDelay");
231
    my $max_pickup_delay = C4::Context->preference("ReservesMaxPickUpDelay");
232
    my $cancel_on_holidays = C4::Context->preference('ExpireReservesOnHolidays');
232
    my $cancel_on_holidays = C4::Context->preference('ExpireReservesOnHolidays');
233
233
234
    my $rule = Koha::CirculationRules->get_effective_rule({
234
    my $rule = Koha::CirculationRules->get_effective_rule(
235
        categorycode => $self->borrower->categorycode,
235
        {
236
        itemtype => $self->item->effective_itemtype,
236
            categorycode => $self->borrower->categorycode,
237
        branchcode => $self->branchcode,
237
            itemtype     => $self->item->effective_itemtype,
238
        rule_name => 'holds_pickup_period',
238
            branchcode   => $self->branchcode,
239
    });
239
            rule_name    => 'holds_pickup_period',
240
    if ( defined($rule) and $rule->rule_value ne '' ){
240
        }
241
    );
242
    if ( defined($rule) and $rule->rule_value ne '' ) {
243
241
        # circulation rule overrides ReservesMaxPickUpDelay
244
        # circulation rule overrides ReservesMaxPickUpDelay
242
        $max_pickup_delay = $rule->rule_value;
245
        $max_pickup_delay = $rule->rule_value;
243
    }
246
    }
(-)a/admin/smart-rules.pl (-80 / +82 lines)
Lines 74-81 if ($op eq 'delete') { Link Here
74
    Koha::CirculationRules->set_rules(
74
    Koha::CirculationRules->set_rules(
75
        {
75
        {
76
            categorycode => $categorycode eq '*' ? undef : $categorycode,
76
            categorycode => $categorycode eq '*' ? undef : $categorycode,
77
            branchcode   => $branch eq '*' ? undef : $branch,
77
            branchcode   => $branch eq '*'       ? undef : $branch,
78
            itemtype     => $itemtype eq '*' ? undef : $itemtype,
78
            itemtype     => $itemtype eq '*'     ? undef : $itemtype,
79
            rules        => {
79
            rules        => {
80
                maxissueqty                      => undef,
80
                maxissueqty                      => undef,
81
                maxonsiteissueqty                => undef,
81
                maxonsiteissueqty                => undef,
Lines 252-351 elsif ($op eq 'delete-branch-item') { Link Here
252
    }
252
    }
253
}
253
}
254
# save the values entered
254
# save the values entered
255
elsif ($op eq 'add') {
255
elsif ( $op eq 'add' ) {
256
    my $br = $branch; # branch
256
    my $br                      = $branch;                          # branch
257
    my $bor  = $input->param('categorycode'); # borrower category
257
    my $bor                     = $input->param('categorycode');    # borrower category
258
    my $itemtype  = $input->param('itemtype');     # item type
258
    my $itemtype                = $input->param('itemtype');        # item type
259
    my $fine = $input->param('fine');
259
    my $fine                    = $input->param('fine');
260
    my $finedays     = $input->param('finedays');
260
    my $finedays                = $input->param('finedays');
261
    my $maxsuspensiondays = $input->param('maxsuspensiondays') || q{};
261
    my $maxsuspensiondays       = $input->param('maxsuspensiondays')       || q{};
262
    my $suspension_chargeperiod = $input->param('suspension_chargeperiod') || 1;
262
    my $suspension_chargeperiod = $input->param('suspension_chargeperiod') || 1;
263
    my $firstremind  = $input->param('firstremind');
263
    my $firstremind             = $input->param('firstremind');
264
    my $chargeperiod = $input->param('chargeperiod');
264
    my $chargeperiod            = $input->param('chargeperiod');
265
    my $chargeperiod_charge_at = $input->param('chargeperiod_charge_at');
265
    my $chargeperiod_charge_at  = $input->param('chargeperiod_charge_at');
266
    my $maxissueqty = strip_non_numeric( scalar $input->param('maxissueqty') );
266
    my $maxissueqty             = strip_non_numeric( scalar $input->param('maxissueqty') );
267
    my $maxonsiteissueqty = strip_non_numeric( scalar $input->param('maxonsiteissueqty') );
267
    my $maxonsiteissueqty       = strip_non_numeric( scalar $input->param('maxonsiteissueqty') );
268
    my $renewalsallowed  = $input->param('renewalsallowed');
268
    my $renewalsallowed         = $input->param('renewalsallowed');
269
    my $unseen_renewals_allowed  = defined $input->param('unseen_renewals_allowed') ? strip_non_numeric( scalar $input->param('unseen_renewals_allowed') ) : q{};
269
    my $unseen_renewals_allowed =
270
        defined $input->param('unseen_renewals_allowed')
271
        ? strip_non_numeric( scalar $input->param('unseen_renewals_allowed') )
272
        : q{};
270
    my $renewalperiod   = $input->param('renewalperiod');
273
    my $renewalperiod   = $input->param('renewalperiod');
271
    my $norenewalbefore = $input->param('norenewalbefore');
274
    my $norenewalbefore = $input->param('norenewalbefore');
272
    $norenewalbefore = q{} if $norenewalbefore =~ /^\s*$/;
275
    $norenewalbefore = q{} if $norenewalbefore =~ /^\s*$/;
273
    my $noautorenewalbefore = $input->param('noautorenewalbefore');
276
    my $noautorenewalbefore = $input->param('noautorenewalbefore');
274
    $noautorenewalbefore = q{} if $noautorenewalbefore =~ /^\s*$/;
277
    my $auto_renew            = $input->param('auto_renew') eq 'yes' ? 1 : 0;
275
    my $auto_renew = $input->param('auto_renew') eq 'yes' ? 1 : 0;
276
    my $no_auto_renewal_after = $input->param('no_auto_renewal_after');
278
    my $no_auto_renewal_after = $input->param('no_auto_renewal_after');
277
    $no_auto_renewal_after = q{} if $no_auto_renewal_after =~ /^\s*$/;
279
    $no_auto_renewal_after = q{} if $no_auto_renewal_after =~ /^\s*$/;
278
    my $no_auto_renewal_after_hard_limit = $input->param('no_auto_renewal_after_hard_limit') || q{};
280
    my $no_auto_renewal_after_hard_limit = $input->param('no_auto_renewal_after_hard_limit') || q{};
279
    my $reservesallowed  = strip_non_numeric( scalar $input->param('reservesallowed') );
281
    my $reservesallowed                  = strip_non_numeric( scalar $input->param('reservesallowed') );
280
    my $holds_per_record = strip_non_numeric( scalar $input->param('holds_per_record') );
282
    my $holds_per_record                 = strip_non_numeric( scalar $input->param('holds_per_record') );
281
    my $holds_per_day    = strip_non_numeric( scalar $input->param('holds_per_day') );
283
    my $holds_per_day                    = strip_non_numeric( scalar $input->param('holds_per_day') );
282
    my $onshelfholds     = $input->param('onshelfholds') || 0;
284
    my $onshelfholds                     = $input->param('onshelfholds') || 0;
283
    my $issuelength  = $input->param('issuelength') || 0;
285
    my $issuelength                      = $input->param('issuelength')  || 0;
284
    my $daysmode = $input->param('daysmode');
286
    my $daysmode                         = $input->param('daysmode');
285
    my $lengthunit  = $input->param('lengthunit');
287
    my $lengthunit                       = $input->param('lengthunit');
286
    my $hardduedate = $input->param('hardduedate') || q{};
288
    my $hardduedate                      = $input->param('hardduedate') || q{};
287
    my $hardduedatecompare = $input->param('hardduedatecompare');
289
    my $hardduedatecompare               = $input->param('hardduedatecompare');
288
    my $rentaldiscount = $input->param('rentaldiscount') || 0;
290
    my $rentaldiscount                   = $input->param('rentaldiscount')   || 0;
289
    my $opacitemholds = $input->param('opacitemholds') || 0;
291
    my $opacitemholds                    = $input->param('opacitemholds')    || 0;
290
    my $article_requests = $input->param('article_requests') || 'no';
292
    my $article_requests                 = $input->param('article_requests') || 'no';
291
    my $overduefinescap = $input->param('overduefinescap')
293
    my $overduefinescap                  = $input->param('overduefinescap')
292
        && ( $input->param('overduefinescap') + 0 ) > 0 ? sprintf( "%.02f", $input->param('overduefinescap') ) : q{};
294
        && ( $input->param('overduefinescap') + 0 ) > 0 ? sprintf( "%.02f", $input->param('overduefinescap') ) : q{};
293
    my $cap_fine_to_replacement_price = ($input->param('cap_fine_to_replacement_price') || q{}) eq 'on';
295
    my $cap_fine_to_replacement_price = ( $input->param('cap_fine_to_replacement_price') || q{} ) eq 'on';
294
    my $note = $input->param('note');
296
    my $note                          = $input->param('note');
295
    my $decreaseloanholds = $input->param('decreaseloanholds') || q{};
297
    my $decreaseloanholds             = $input->param('decreaseloanholds') || q{};
296
    my $recalls_allowed = $input->param('recalls_allowed');
298
    my $recalls_allowed               = $input->param('recalls_allowed');
297
    my $recalls_per_record = $input->param('recalls_per_record');
299
    my $recalls_per_record            = $input->param('recalls_per_record');
298
    my $on_shelf_recalls = $input->param('on_shelf_recalls');
300
    my $on_shelf_recalls              = $input->param('on_shelf_recalls');
299
    my $recall_due_date_interval = $input->param('recall_due_date_interval');
301
    my $recall_due_date_interval      = $input->param('recall_due_date_interval');
300
    my $recall_overdue_fine = $input->param('recall_overdue_fine');
302
    my $recall_overdue_fine           = $input->param('recall_overdue_fine');
301
    my $recall_shelf_time = $input->param('recall_shelf_time');
303
    my $recall_shelf_time             = $input->param('recall_shelf_time');
302
    my $holds_pickup_period = strip_non_numeric( scalar $input->param('holds_pickup_period') );
304
    my $holds_pickup_period           = strip_non_numeric( scalar $input->param('holds_pickup_period') );
303
305
304
    my $rules = {
306
    my $rules = {
305
        maxissueqty                          => $maxissueqty,
307
        maxissueqty                      => $maxissueqty,
306
            maxonsiteissueqty                => $maxonsiteissueqty,
308
        maxonsiteissueqty                => $maxonsiteissueqty,
307
            rentaldiscount                   => $rentaldiscount,
309
        rentaldiscount                   => $rentaldiscount,
308
            fine                             => $fine,
310
        fine                             => $fine,
309
            finedays                         => $finedays,
311
        finedays                         => $finedays,
310
            maxsuspensiondays                => $maxsuspensiondays,
312
        maxsuspensiondays                => $maxsuspensiondays,
311
            suspension_chargeperiod          => $suspension_chargeperiod,
313
        suspension_chargeperiod          => $suspension_chargeperiod,
312
            firstremind                      => $firstremind,
314
        firstremind                      => $firstremind,
313
            chargeperiod                     => $chargeperiod,
315
        chargeperiod                     => $chargeperiod,
314
            chargeperiod_charge_at           => $chargeperiod_charge_at,
316
        chargeperiod_charge_at           => $chargeperiod_charge_at,
315
            issuelength                      => $issuelength,
317
        issuelength                      => $issuelength,
316
            daysmode                         => $daysmode,
318
        daysmode                         => $daysmode,
317
            lengthunit                       => $lengthunit,
319
        lengthunit                       => $lengthunit,
318
            hardduedate                      => $hardduedate,
320
        hardduedate                      => $hardduedate,
319
            hardduedatecompare               => $hardduedatecompare,
321
        hardduedatecompare               => $hardduedatecompare,
320
            renewalsallowed                  => $renewalsallowed,
322
        renewalsallowed                  => $renewalsallowed,
321
            unseen_renewals_allowed          => $unseen_renewals_allowed,
323
        unseen_renewals_allowed          => $unseen_renewals_allowed,
322
            renewalperiod                    => $renewalperiod,
324
        renewalperiod                    => $renewalperiod,
323
            norenewalbefore                  => $norenewalbefore,
325
        norenewalbefore                  => $norenewalbefore,
324
            noautorenewalbefore              => $noautorenewalbefore,
326
        noautorenewalbefore              => $noautorenewalbefore,
325
            auto_renew                       => $auto_renew,
327
        auto_renew                       => $auto_renew,
326
            no_auto_renewal_after            => $no_auto_renewal_after,
328
        no_auto_renewal_after            => $no_auto_renewal_after,
327
            no_auto_renewal_after_hard_limit => $no_auto_renewal_after_hard_limit,
329
        no_auto_renewal_after_hard_limit => $no_auto_renewal_after_hard_limit,
328
            onshelfholds                     => $onshelfholds,
330
        onshelfholds                     => $onshelfholds,
329
            opacitemholds                    => $opacitemholds,
331
        opacitemholds                    => $opacitemholds,
330
            overduefinescap                  => $overduefinescap,
332
        overduefinescap                  => $overduefinescap,
331
            cap_fine_to_replacement_price    => $cap_fine_to_replacement_price,
333
        cap_fine_to_replacement_price    => $cap_fine_to_replacement_price,
332
            article_requests                 => $article_requests,
334
        article_requests                 => $article_requests,
333
            note                             => $note,
335
        note                             => $note,
334
            decreaseloanholds                => $decreaseloanholds,
336
        decreaseloanholds                => $decreaseloanholds,
335
            recalls_allowed                  => $recalls_allowed,
337
        recalls_allowed                  => $recalls_allowed,
336
            recalls_per_record               => $recalls_per_record,
338
        recalls_per_record               => $recalls_per_record,
337
            on_shelf_recalls                 => $on_shelf_recalls,
339
        on_shelf_recalls                 => $on_shelf_recalls,
338
            recall_due_date_interval         => $recall_due_date_interval,
340
        recall_due_date_interval         => $recall_due_date_interval,
339
            recall_overdue_fine              => $recall_overdue_fine,
341
        recall_overdue_fine              => $recall_overdue_fine,
340
            recall_shelf_time                => $recall_shelf_time,
342
        recall_shelf_time                => $recall_shelf_time,
341
            holds_pickup_period              => $holds_pickup_period,
343
        holds_pickup_period              => $holds_pickup_period,
342
    };
344
    };
343
345
344
    Koha::CirculationRules->set_rules(
346
    Koha::CirculationRules->set_rules(
345
        {
347
        {
346
            categorycode => $bor eq '*' ? undef : $bor,
348
            categorycode => $bor eq '*'      ? undef : $bor,
347
            itemtype     => $itemtype eq '*' ? undef : $itemtype,
349
            itemtype     => $itemtype eq '*' ? undef : $itemtype,
348
            branchcode   => $br eq '*' ? undef : $br,
350
            branchcode   => $br eq '*'       ? undef : $br,
349
            rules        => $rules,
351
            rules        => $rules,
350
        }
352
        }
351
    );
353
    );
(-)a/installer/data/mysql/atomicupdate/bug_8367-add_holds_pickup_period_circrule.pl (-5 / +7 lines)
Lines 1-17 Link Here
1
use Modern::Perl;
1
use Modern::Perl;
2
2
3
return {
3
return {
4
    bug_number => "8367",
4
    bug_number  => "8367",
5
    description => "Set hold pickup period circulation rule",
5
    description => "Set hold pickup period circulation rule",
6
    up => sub {
6
    up          => sub {
7
        my ($args) = @_;
7
        my ($args) = @_;
8
        my ($dbh, $out) = @$args{qw(dbh out)};
8
        my ( $dbh, $out ) = @$args{qw(dbh out)};
9
9
10
        $dbh->do(q{
10
        $dbh->do(
11
            q{
11
            INSERT IGNORE INTO circulation_rules ( branchcode, categorycode, itemtype, rule_name, rule_value )
12
            INSERT IGNORE INTO circulation_rules ( branchcode, categorycode, itemtype, rule_name, rule_value )
12
            SELECT u.* FROM (SELECT NULL as branchcode, NULL as categorycode, NULL as itemtype, 'holds_pickup_period' as rule_name, '' as rule_value) u
13
            SELECT u.* FROM (SELECT NULL as branchcode, NULL as categorycode, NULL as itemtype, 'holds_pickup_period' as rule_name, '' as rule_value) u
13
            WHERE NOT EXISTS ( SELECT rule_name FROM circulation_rules where rule_name = 'holds_pickup_period' )
14
            WHERE NOT EXISTS ( SELECT rule_name FROM circulation_rules where rule_name = 'holds_pickup_period' )
14
        });
15
        }
16
        );
15
17
16
        say $out "Added default circulation rule for holds_pickup_period";
18
        say $out "Added default circulation rule for holds_pickup_period";
17
    },
19
    },
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/waitingreserves.tt (-1 / +1 lines)
Lines 99-105 Link Here
99
                                        <span>Holds waiting:</span> [% reservecount | html %]
99
                                        <span>Holds waiting:</span> [% reservecount | html %]
100
                                    [% END %]
100
                                    [% END %]
101
                                    [% WRAPPER tab_item tabname= "holdsover" %]
101
                                    [% WRAPPER tab_item tabname= "holdsover" %]
102
                                        Holds waiting past their expiration date: [% overcount | html %]
102
                                        <span>Holds waiting past their expiration date:</span> [% overcount | html %]
103
                                    [% END %]
103
                                    [% END %]
104
                                    [% WRAPPER tab_item tabname= "holdscancelled" %]
104
                                    [% WRAPPER tab_item tabname= "holdscancelled" %]
105
                                        <span>Holds with cancellation requests:</span> [% cancel_reqs_count | html %]
105
                                        <span>Holds with cancellation requests:</span> [% cancel_reqs_count | html %]
(-)a/t/db_dependent/Holds/WaitingReserves.t (-64 / +78 lines)
Lines 66-86 my $biblio4 = $builder->build_sample_biblio; Link Here
66
my $biblio5 = $builder->build_sample_biblio;
66
my $biblio5 = $builder->build_sample_biblio;
67
my $biblio6 = $builder->build_sample_biblio;
67
my $biblio6 = $builder->build_sample_biblio;
68
68
69
my $item1 = $builder->build_sample_item({biblionumber => $biblio->biblionumber});
69
my $item1 = $builder->build_sample_item( { biblionumber => $biblio->biblionumber } );
70
my $item2 = $builder->build_sample_item({biblionumber => $biblio2->biblionumber});
70
my $item2 = $builder->build_sample_item( { biblionumber => $biblio2->biblionumber } );
71
my $item3 = $builder->build_sample_item({biblionumber => $biblio3->biblionumber});
71
my $item3 = $builder->build_sample_item( { biblionumber => $biblio3->biblionumber } );
72
my $item4 = $builder->build_sample_item({biblionumber => $biblio4->biblionumber});
72
my $item4 = $builder->build_sample_item( { biblionumber => $biblio4->biblionumber } );
73
my $item5 = $builder->build_sample_item({biblionumber => $biblio5->biblionumber});
73
my $item5 = $builder->build_sample_item( { biblionumber => $biblio5->biblionumber } );
74
my $item6 = $builder->build_sample_item({biblionumber => $biblio6->biblionumber});
74
my $item6 = $builder->build_sample_item( { biblionumber => $biblio6->biblionumber } );
75
75
76
Koha::CirculationRules->set_rules({
76
Koha::CirculationRules->set_rules(
77
    categorycode => undef,
77
    {
78
    itemtype => undef,
78
        categorycode => undef,
79
    branchcode => undef,
79
        itemtype     => undef,
80
    rules => {
80
        branchcode   => undef,
81
        holds_pickup_period => undef,
81
        rules        => {
82
            holds_pickup_period => undef,
83
        }
82
    }
84
    }
83
});
85
);
84
86
85
my $today = dt_from_string();
87
my $today = dt_from_string();
86
88
Lines 209-270 my $reserve4 = $builder->build({ Link Here
209
t::lib::Mocks::mock_preference('ReservesMaxPickUpDelay', 10);
211
t::lib::Mocks::mock_preference('ReservesMaxPickUpDelay', 10);
210
ModReserveAffect( $item4->itemnumber, $patron2->{borrowernumber}, 0, $reserve4->{reserve_id});
212
ModReserveAffect( $item4->itemnumber, $patron2->{borrowernumber}, 0, $reserve4->{reserve_id});
211
213
212
my $r4 = Koha::Holds->find($reserve4->{reserve_id});
214
my $r4 = Koha::Holds->find( $reserve4->{reserve_id} );
213
is($r4->expirationdate, $requested_expiredate->ymd, 'Requested expiration date should be kept' );
215
is( $r4->expirationdate, $requested_expiredate->ymd, 'Requested expiration date should be kept' );
214
216
215
Koha::CirculationRules->set_rules({
217
Koha::CirculationRules->set_rules(
216
    categorycode => $patron1->{categorycode},
218
    {
217
    itemtype => undef,
219
        categorycode => $patron1->{categorycode},
218
    branchcode => undef,
220
        itemtype     => undef,
219
    rules => {
221
        branchcode   => undef,
220
        holds_pickup_period => '3',
222
        rules        => {
223
            holds_pickup_period => '3',
224
        }
221
    }
225
    }
222
});
226
);
223
t::lib::Mocks::mock_preference('ReservesMaxPickUpDelay', 7);
227
t::lib::Mocks::mock_preference( 'ReservesMaxPickUpDelay', 7 );
224
228
225
my $reserve5_reservedate = $today->clone;
229
my $reserve5_reservedate    = $today->clone;
226
my $reserve5_expirationdate = $reserve5_reservedate->add(days => 3);
230
my $reserve5_expirationdate = $reserve5_reservedate->add( days => 3 );
227
231
228
my $reserve5 = $builder->build({
232
my $reserve5 = $builder->build(
229
    source => 'Reserve',
233
    {
230
    value => {
234
        source => 'Reserve',
231
        borrowernumber => $patron1->{borrowernumber},
235
        value  => {
232
        reservedate => $reserve5_reservedate->ymd,
236
            borrowernumber         => $patron1->{borrowernumber},
233
        expirationdate => undef,
237
            reservedate            => $reserve5_reservedate->ymd,
234
        biblionumber => $biblio5->biblionumber,
238
            expirationdate         => undef,
235
        branchcode => 'LIB2',
239
            biblionumber           => $biblio5->biblionumber,
236
        priority => 1,
240
            branchcode             => 'LIB2',
237
        found => '',
241
            priority               => 1,
238
        patron_expiration_date => undef,
242
            found                  => '',
239
    },
243
            patron_expiration_date => undef,
240
});
244
        },
245
    }
246
);
241
247
242
ModReserveAffect( $item5->itemnumber, $patron1->{borrowernumber});
248
ModReserveAffect( $item5->itemnumber, $patron1->{borrowernumber} );
243
my $r5 = Koha::Holds->find($reserve5->{reserve_id});
249
my $r5 = Koha::Holds->find( $reserve5->{reserve_id} );
244
250
245
is($r5->expirationdate, $reserve5_expirationdate->ymd, 'Expiration date should be set to today + 3 based on circulation rules' );
251
is(
252
    $r5->expirationdate, $reserve5_expirationdate->ymd,
253
    'Expiration date should be set to today + 3 based on circulation rules'
254
);
246
255
247
my $reserve6_reservedate = $today->clone;
256
my $reserve6_reservedate = $today->clone;
248
# add 3 days of pickup + 1 day of holiday
249
my $reserve6_expirationdate = $reserve6_reservedate->add(days => 5);
250
257
251
my $reserve6 = $builder->build({
258
# add 3 days of pickup + 1 day of holiday
252
    source => 'Reserve',
259
my $reserve6_expirationdate = $reserve6_reservedate->add( days => 5 );
253
    value => {
260
254
        borrowernumber => $patron1->{borrowernumber},
261
my $reserve6 = $builder->build(
255
        reservedate => $reserve6_reservedate->ymd,
262
    {
256
        expirationdate => undef,
263
        source => 'Reserve',
257
        biblionumber => $biblio6->biblionumber,
264
        value  => {
258
        branchcode => 'LIB1',
265
            borrowernumber         => $patron1->{borrowernumber},
259
        priority => 1,
266
            reservedate            => $reserve6_reservedate->ymd,
260
        found => '',
267
            expirationdate         => undef,
261
        patron_expiration_date => undef,
268
            biblionumber           => $biblio6->biblionumber,
262
    },
269
            branchcode             => 'LIB1',
263
});
270
            priority               => 1,
271
            found                  => '',
272
            patron_expiration_date => undef,
273
        },
274
    }
275
);
264
276
265
ModReserveAffect( $item6->itemnumber, $patron1->{borrowernumber});
277
ModReserveAffect( $item6->itemnumber, $patron1->{borrowernumber} );
266
my $r6 = Koha::Holds->find($reserve6->{reserve_id});
278
my $r6 = Koha::Holds->find( $reserve6->{reserve_id} );
267
279
268
is($r6->expirationdate, $reserve6_expirationdate->ymd, 'Expiration date should be set to today + 4 based on circulation rules and including a holiday' );
280
is(
281
    $r6->expirationdate, $reserve6_expirationdate->ymd,
282
    'Expiration date should be set to today + 4 based on circulation rules and including a holiday'
283
);
269
284
270
$schema->storage->txn_rollback;
285
$schema->storage->txn_rollback;
271
- 

Return to bug 8367