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

(-)a/C4/Reserves.pm (+2 lines)
Lines 2332-2337 sub GetReserveId { Link Here
2332
2332
2333
    my $hold = Koha::Holds->search( $params )->next();
2333
    my $hold = Koha::Holds->search( $params )->next();
2334
2334
2335
    return unless $hold;
2336
2335
    return $hold->id();
2337
    return $hold->id();
2336
}
2338
}
2337
2339
(-)a/Koha/Holds.pm (-9 / +3 lines)
Lines 71-85 that would prevent one or the other. Link Here
71
sub forced_hold_level {
71
sub forced_hold_level {
72
    my ($self) = @_;
72
    my ($self) = @_;
73
73
74
    my $force_hold_level;
74
    return $self->search( { itemnumber => { '!=' => undef } } )->count()
75
75
      ? 'item'
76
    if ( $self->count() ) {
76
      : 'record';
77
        my $has_item_level_holds;
78
        map { $has_item_level_holds ||= $_->itemnumber } $self->as_list();
79
        $force_hold_level = $has_item_level_holds ? 'item' : 'record';
80
    }
81
82
    return $force_hold_level;
83
}
77
}
84
78
85
=head3 type
79
=head3 type
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt (-2 lines)
Lines 309-315 $(document).ready(function () { Link Here
309
                    <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
309
                    <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
310
                    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
310
                    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
311
                    <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
311
                    <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
312
                    <input type="hidden" name="resbarcode" value="[% barcode | html %]" />
313
                    <input type="hidden" name="reserve_id" value="[% reserve_id %]" />
312
                    <input type="hidden" name="reserve_id" value="[% reserve_id %]" />
314
                    <input type="hidden" name="diffBranch" value="[% destbranch %]" />
313
                    <input type="hidden" name="diffBranch" value="[% destbranch %]" />
315
                    <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
314
                    <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
Lines 526-532 $(document).ready(function () { Link Here
526
                    <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
525
                    <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
527
                    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
526
                    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
528
                    <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
527
                    <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
529
                    <input type="hidden" name="resbarcode" value="[% barcode %]" />
530
                    <input type="hidden" name="reserve_id" value="[% reserve_id %]" />
528
                    <input type="hidden" name="reserve_id" value="[% reserve_id %]" />
531
                    <input type="hidden" name="diffBranch" value="[% destbranch %]" />
529
                    <input type="hidden" name="diffBranch" value="[% destbranch %]" />
532
                    <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
530
                    <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt (-3 / +3 lines)
Lines 276-288 function checkMultiHold() { Link Here
276
        [% ELSIF ( exceeded_holds_per_record ) %]
276
        [% ELSIF ( exceeded_holds_per_record ) %]
277
          <li><strong>Too many holds for this record: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %] </a> can only place a maximum of [% max_holds_for_record %] hold(s) on this record.</li>
277
          <li><strong>Too many holds for this record: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %] </a> can only place a maximum of [% max_holds_for_record %] hold(s) on this record.</li>
278
        [% ELSIF ( alreadypossession ) %]
278
        [% ELSIF ( alreadypossession ) %]
279
          <li> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a> <strong>is already in possession</strong> of one item</lie
279
          <li> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a> <strong>is already in possession</strong> of one item.</li>
280
        [% ELSIF ( alreadyreserved ) %]
280
        [% ELSIF ( alreadyreserved ) %]
281
          <li><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a> <strong>already has a hold</strong> on this item </li>
281
          <li><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a> <strong>already has a hold</strong> on this item.</li>
282
        [% ELSIF ( ageRestricted ) %]
282
        [% ELSIF ( ageRestricted ) %]
283
          <li><strong>Age restricted</strong></li>
283
          <li><strong>Age restricted</strong></li>
284
        [% ELSIF ( none_available ) %]
284
        [% ELSIF ( none_available ) %]
285
          <li> <strong>No items are available</strong> to be placed on hold</li>
285
          <li> <strong>No items are available</strong> to be placed on hold.</li>
286
        [% ELSIF ( maxreserves ) %]
286
        [% ELSIF ( maxreserves ) %]
287
          <li><strong>Too many holds: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %] </a> has too many holds.</li>
287
          <li><strong>Too many holds: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %] </a> has too many holds.</li>
288
        [% END %]
288
        [% END %]
(-)a/t/db_dependent/Holds.t (-2 / +14 lines)
Lines 8-14 use t::lib::TestBuilder; Link Here
8
use C4::Context;
8
use C4::Context;
9
use C4::Branch;
9
use C4::Branch;
10
10
11
use Test::More tests => 60;
11
use Test::More tests => 61;
12
use MARC::Record;
12
use MARC::Record;
13
use C4::Biblio;
13
use C4::Biblio;
14
use C4::Items;
14
use C4::Items;
Lines 339-344 ModItem({ damaged => 1 }, $item_bibnum, $itemnumber); Link Here
339
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 );
339
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 );
340
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber), 'OK', "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" );
340
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber), 'OK', "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" );
341
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" );
341
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" );
342
343
$hold = Koha::Hold->new(
344
    {
345
        borrowernumber => $borrowernumbers[0],
346
        itemnumber     => $itemnumber,
347
        biblionumber   => $item_bibnum,
348
    }
349
)->store();
350
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber ),
351
    'itemAlreadyOnHold',
352
    "Patron cannot place a second item level hold for a given item" );
353
$hold->delete();
354
342
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 0 );
355
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 0 );
343
ok( CanItemBeReserved( $borrowernumbers[0], $itemnumber) eq 'damaged', "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" );
356
ok( CanItemBeReserved( $borrowernumbers[0], $itemnumber) eq 'damaged', "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" );
344
ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" );
357
ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" );
345
- 

Return to bug 14695