| Lines 3-8
          
      
      
        Link Here | 
        
          | 3 | use Modern::Perl; | 3 | use Modern::Perl; | 
        
          | 4 |  | 4 |  | 
        
          | 5 | use t::lib::Mocks; | 5 | use t::lib::Mocks; | 
            
              |  |  | 6 | use t::lib::TestBuilder; | 
            
              | 7 |  | 
        
          | 6 | use C4::Context; | 8 | use C4::Context; | 
        
          | 7 | use C4::Branch; | 9 | use C4::Branch; | 
        
          | 8 |  | 10 |  | 
  
    | Lines 23-34
          BEGIN {
      
      
        Link Here | 
        
          | 23 |     use_ok('C4::Reserves'); | 25 |     use_ok('C4::Reserves'); | 
        
          | 24 | } | 26 | } | 
        
          | 25 |  | 27 |  | 
            
              |  |  | 28 | my $builder = t::lib::TestBuilder->new(); | 
        
          | 26 | my $dbh = C4::Context->dbh; | 29 | my $dbh = C4::Context->dbh; | 
        
          | 27 |  | 30 |  | 
        
          | 28 | # Start transaction | 31 | # Start transaction | 
        
          | 29 | $dbh->{AutoCommit} = 0; | 32 | $dbh->{AutoCommit} = 0; | 
        
          | 30 | $dbh->{RaiseError} = 1; | 33 | $dbh->{RaiseError} = 1; | 
        
          | 31 |  | 34 |  | 
            
              |  |  | 35 | # Create two random branches | 
            
              | 36 | my $branch_1 = $builder->build({ source => 'Branch' })->{ branchcode }; | 
            
              | 37 | my $branch_2 = $builder->build({ source => 'Branch' })->{ branchcode }; | 
            
              | 38 |  | 
        
          | 32 | my $borrowers_count = 5; | 39 | my $borrowers_count = 5; | 
        
          | 33 |  | 40 |  | 
        
          | 34 | $dbh->do('DELETE FROM itemtypes'); | 41 | $dbh->do('DELETE FROM itemtypes'); | 
  
    | Lines 44-50
          $insert_sth->execute('ONLY1');
      
      
        Link Here | 
        
          | 44 | my ($bibnum, $title, $bibitemnum) = create_helper_biblio('DUMMY'); | 51 | my ($bibnum, $title, $bibitemnum) = create_helper_biblio('DUMMY'); | 
        
          | 45 |  | 52 |  | 
        
          | 46 | # Create item instance for testing. | 53 | # Create item instance for testing. | 
          
            
              | 47 | my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL' } , $bibnum); | 54 | my ($item_bibnum, $item_bibitemnum, $itemnumber) | 
            
              |  |  | 55 |     = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $bibnum); | 
        
          | 48 |  | 56 |  | 
        
          | 49 | # Create some borrowers | 57 | # Create some borrowers | 
        
          | 50 | my @borrowernumbers; | 58 | my @borrowernumbers; | 
  
    | Lines 53-72
          foreach (1..$borrowers_count) {
      
      
        Link Here | 
        
          | 53 |         firstname =>  'my firstname', | 61 |         firstname =>  'my firstname', | 
        
          | 54 |         surname => 'my surname ' . $_, | 62 |         surname => 'my surname ' . $_, | 
        
          | 55 |         categorycode => 'S', | 63 |         categorycode => 'S', | 
          
            
              | 56 |         branchcode => 'CPL', | 64 |         branchcode => $branch_1, | 
        
          | 57 |     ); | 65 |     ); | 
        
          | 58 |     push @borrowernumbers, $borrowernumber; | 66 |     push @borrowernumbers, $borrowernumber; | 
        
          | 59 | } | 67 | } | 
        
          | 60 |  | 68 |  | 
          
            
              | 61 | my $biblionumber   = $bibnum; | 69 | my $biblionumber = $bibnum; | 
            
              | 62 |  |  |  | 
            
              | 63 | my @branches = GetBranchesLoop(); | 
            
              | 64 | my $branch = $branches[0][0]{value}; | 
        
          | 65 |  | 70 |  | 
        
          | 66 | # Create five item level holds | 71 | # Create five item level holds | 
        
          | 67 | foreach my $borrowernumber ( @borrowernumbers ) { | 72 | foreach my $borrowernumber ( @borrowernumbers ) { | 
        
          | 68 |     AddReserve( | 73 |     AddReserve( | 
          
            
              | 69 |         $branch, | 74 |         $branch_1, | 
        
          | 70 |         $borrowernumber, | 75 |         $borrowernumber, | 
        
          | 71 |         $biblionumber, | 76 |         $biblionumber, | 
        
          | 72 |         my $bibitems = q{}, | 77 |         my $bibitems = q{}, | 
  
    | Lines 89-98
          is( $reserves->[2]->{priority}, 3, "Reserve 3 has a priority of 3" );
      
      
        Link Here | 
        
          | 89 | is( $reserves->[3]->{priority}, 4, "Reserve 4 has a priority of 4" ); | 94 | is( $reserves->[3]->{priority}, 4, "Reserve 4 has a priority of 4" ); | 
        
          | 90 | is( $reserves->[4]->{priority}, 5, "Reserve 5 has a priority of 5" ); | 95 | is( $reserves->[4]->{priority}, 5, "Reserve 5 has a priority of 5" ); | 
        
          | 91 |  | 96 |  | 
          
            
              | 92 | my ( $reservedate, $borrowernumber, $branchcode, $reserve_id ) = GetReservesFromItemnumber($itemnumber); | 97 | my ( $reservedate, $borrowernumber, $branch_1code, $reserve_id ) = GetReservesFromItemnumber($itemnumber); | 
        
          | 93 | is( $reservedate, output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }), "GetReservesFromItemnumber should return a valid reserve date"); | 98 | is( $reservedate, output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }), "GetReservesFromItemnumber should return a valid reserve date"); | 
        
          | 94 | is( $borrowernumber, $borrowernumbers[0], "GetReservesFromItemnumber should return a valid borrowernumber"); | 99 | is( $borrowernumber, $borrowernumbers[0], "GetReservesFromItemnumber should return a valid borrowernumber"); | 
          
            
              | 95 | is( $branchcode, 'CPL', "GetReservesFromItemnumber should return a valid branchcode"); | 100 | is( $branch_1code, $branch_1, "GetReservesFromItemnumber should return a valid branchcode"); | 
        
          | 96 | ok($reserve_id, "Test GetReservesFromItemnumber()"); | 101 | ok($reserve_id, "Test GetReservesFromItemnumber()"); | 
        
          | 97 |  | 102 |  | 
        
          | 98 | my $hold = Koha::Holds->find( $reserve_id ); | 103 | my $hold = Koha::Holds->find( $reserve_id ); | 
  
    | Lines 122-132
          $reserves = GetReservesFromBiblionumber({ biblionumber => $biblionumber });
      
      
        Link Here | 
        
          | 122 | is( scalar(@$reserves), $borrowers_count - 1, "Test CancelReserve()" ); | 127 | is( scalar(@$reserves), $borrowers_count - 1, "Test CancelReserve()" ); | 
        
          | 123 |  | 128 |  | 
        
          | 124 |  | 129 |  | 
          
            
              | 125 | ( $reservedate, $borrowernumber, $branchcode, $reserve_id ) = GetReservesFromItemnumber($itemnumber); | 130 | ( $reservedate, $borrowernumber, $branch_1code, $reserve_id ) = GetReservesFromItemnumber($itemnumber); | 
        
          | 126 | ModReserve({ | 131 | ModReserve({ | 
        
          | 127 |     reserve_id    => $reserve_id, | 132 |     reserve_id    => $reserve_id, | 
        
          | 128 |     rank          => '4', | 133 |     rank          => '4', | 
          
            
              | 129 |     branchcode    => $branch, | 134 |     branchcode    => $branch_1, | 
        
          | 130 |     itemnumber    => $itemnumber, | 135 |     itemnumber    => $itemnumber, | 
        
          | 131 |     suspend_until => C4::Dates->new("2013-01-01","iso")->output(), | 136 |     suspend_until => C4::Dates->new("2013-01-01","iso")->output(), | 
        
          | 132 | }); | 137 | }); | 
  
    | Lines 149-155
          ok( !$reserve->{'suspend'}, "Test AutoUnsuspendReserves()" );
      
      
        Link Here | 
        
          | 149 |  | 154 |  | 
        
          | 150 | # Add a new hold for the borrower whose hold we canceled earlier, this time at the bib level | 155 | # Add a new hold for the borrower whose hold we canceled earlier, this time at the bib level | 
        
          | 151 | AddReserve( | 156 | AddReserve( | 
          
            
              | 152 |     $branch, | 157 |     $branch_1, | 
        
          | 153 |     $borrowernumber, | 158 |     $borrowernumber, | 
        
          | 154 |     $biblionumber, | 159 |     $biblionumber, | 
        
          | 155 |     my $bibitems = q{}, | 160 |     my $bibitems = q{}, | 
  
    | Lines 209-215
          ok( $reserve->{'priority'} eq '5', "Test AlterPriority(), move to bottom" );
      
      
        Link Here | 
        
          | 209 |  | 214 |  | 
        
          | 210 | my ($foreign_bibnum, $foreign_title, $foreign_bibitemnum) = create_helper_biblio('DUMMY'); | 215 | my ($foreign_bibnum, $foreign_title, $foreign_bibitemnum) = create_helper_biblio('DUMMY'); | 
        
          | 211 | my ($foreign_item_bibnum, $foreign_item_bibitemnum, $foreign_itemnumber) | 216 | my ($foreign_item_bibnum, $foreign_item_bibitemnum, $foreign_itemnumber) | 
          
            
              | 212 |   = AddItem({ homebranch => 'MPL', holdingbranch => 'MPL' } , $foreign_bibnum); | 217 |   = AddItem({ homebranch => $branch_2, holdingbranch => $branch_2 } , $foreign_bibnum); | 
        
          | 213 | $dbh->do('DELETE FROM issuingrules'); | 218 | $dbh->do('DELETE FROM issuingrules'); | 
        
          | 214 | $dbh->do( | 219 | $dbh->do( | 
        
          | 215 |     q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed) | 220 |     q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed) | 
  
    | Lines 228-246
          $dbh->do(
      
      
        Link Here | 
        
          | 228 | t::lib::Mocks::mock_preference('ReservesControlBranch', 'ItemHomeLibrary'); | 233 | t::lib::Mocks::mock_preference('ReservesControlBranch', 'ItemHomeLibrary'); | 
        
          | 229 | t::lib::Mocks::mock_preference('item-level_itypes', 1); | 234 | t::lib::Mocks::mock_preference('item-level_itypes', 1); | 
        
          | 230 |  | 235 |  | 
          
            
              | 231 | # if IndependentBranches is OFF, a CPL patron can reserve an MPL item | 236 | # if IndependentBranches is OFF, a $branch_1 patron can reserve an $branch_2 item | 
        
          | 232 | t::lib::Mocks::mock_preference('IndependentBranches', 0); | 237 | t::lib::Mocks::mock_preference('IndependentBranches', 0); | 
        
          | 233 | ok( | 238 | ok( | 
        
          | 234 |     CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber) eq 'OK', | 239 |     CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber) eq 'OK', | 
          
            
              | 235 |     'CPL patron allowed to reserve MPL item with IndependentBranches OFF (bug 2394)' | 240 |     '$branch_1 patron allowed to reserve $branch_2 item with IndependentBranches OFF (bug 2394)' | 
        
          | 236 | ); | 241 | ); | 
        
          | 237 |  | 242 |  | 
          
            
              | 238 | # if IndependentBranches is OFF, a CPL patron cannot reserve an MPL item | 243 | # if IndependentBranches is OFF, a $branch_1 patron cannot reserve an $branch_2 item | 
        
          | 239 | t::lib::Mocks::mock_preference('IndependentBranches', 1); | 244 | t::lib::Mocks::mock_preference('IndependentBranches', 1); | 
        
          | 240 | t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); | 245 | t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); | 
        
          | 241 | ok( | 246 | ok( | 
        
          | 242 |     CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber) eq 'cannotReserveFromOtherBranches', | 247 |     CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber) eq 'cannotReserveFromOtherBranches', | 
          
            
              | 243 |     'CPL patron NOT allowed to reserve MPL item with IndependentBranches ON ... (bug 2394)' | 248 |     '$branch_1 patron NOT allowed to reserve $branch_2 item with IndependentBranches ON ... (bug 2394)' | 
        
          | 244 | ); | 249 | ); | 
        
          | 245 |  | 250 |  | 
        
          | 246 | # ... unless canreservefromotherbranches is ON | 251 | # ... unless canreservefromotherbranches is ON | 
  
    | Lines 252-260
          ok(
      
      
        Link Here | 
        
          | 252 |  | 257 |  | 
        
          | 253 | # Regression test for bug 11336 | 258 | # Regression test for bug 11336 | 
        
          | 254 | ($bibnum, $title, $bibitemnum) = create_helper_biblio('DUMMY'); | 259 | ($bibnum, $title, $bibitemnum) = create_helper_biblio('DUMMY'); | 
          
            
              | 255 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL' } , $bibnum); | 260 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $bibnum); | 
        
          | 256 | AddReserve( | 261 | AddReserve( | 
          
            
              | 257 |     $branch, | 262 |     $branch_1, | 
        
          | 258 |     $borrowernumbers[0], | 263 |     $borrowernumbers[0], | 
        
          | 259 |     $bibnum, | 264 |     $bibnum, | 
        
          | 260 |     '', | 265 |     '', | 
  
    | Lines 268-276
          my $reserveid1 = C4::Reserves::GetReserveId(
      
      
        Link Here | 
        
          | 268 |     } | 273 |     } | 
        
          | 269 | ); | 274 | ); | 
        
          | 270 |  | 275 |  | 
          
            
              | 271 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL' } , $bibnum); | 276 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $bibnum); | 
        
          | 272 | AddReserve( | 277 | AddReserve( | 
          
            
              | 273 |     $branch, | 278 |     $branch_1, | 
        
          | 274 |     $borrowernumbers[1], | 279 |     $borrowernumbers[1], | 
        
          | 275 |     $bibnum, | 280 |     $bibnum, | 
        
          | 276 |     '', | 281 |     '', | 
  
    | Lines 288-296
          CancelReserve({ reserve_id => $reserveid1 });
      
      
        Link Here | 
        
          | 288 | $reserve2 = GetReserve( $reserveid2 ); | 293 | $reserve2 = GetReserve( $reserveid2 ); | 
        
          | 289 | is( $reserve2->{priority}, 1, "After cancelreserve, the 2nd reserve becomes the first on the waiting list" ); | 294 | is( $reserve2->{priority}, 1, "After cancelreserve, the 2nd reserve becomes the first on the waiting list" ); | 
        
          | 290 |  | 295 |  | 
          
            
              | 291 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL' } , $bibnum); | 296 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $bibnum); | 
        
          | 292 | AddReserve( | 297 | AddReserve( | 
          
            
              | 293 |     $branch, | 298 |     $branch_1, | 
        
          | 294 |     $borrowernumbers[0], | 299 |     $borrowernumbers[0], | 
        
          | 295 |     $bibnum, | 300 |     $bibnum, | 
        
          | 296 |     '', | 301 |     '', | 
  
    | Lines 320-328
          ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for d
      
      
        Link Here | 
        
          | 320 |  | 325 |  | 
        
          | 321 | # Regression test for bug 9532 | 326 | # Regression test for bug 9532 | 
        
          | 322 | ($bibnum, $title, $bibitemnum) = create_helper_biblio('CANNOT'); | 327 | ($bibnum, $title, $bibitemnum) = create_helper_biblio('CANNOT'); | 
          
            
              | 323 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL', itype => 'CANNOT' } , $bibnum); | 328 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $bibnum); | 
        
          | 324 | AddReserve( | 329 | AddReserve( | 
          
            
              | 325 |     $branch, | 330 |     $branch_1, | 
        
          | 326 |     $borrowernumbers[0], | 331 |     $borrowernumbers[0], | 
        
          | 327 |     $bibnum, | 332 |     $bibnum, | 
        
          | 328 |     '', | 333 |     '', | 
  
    | Lines 362-386
          $dbh->do('DELETE FROM default_circ_rules');
      
      
        Link Here | 
        
          | 362 | $dbh->do(q{ | 367 | $dbh->do(q{ | 
        
          | 363 |     INSERT INTO branch_item_rules (branchcode, itemtype, holdallowed, returnbranch) | 368 |     INSERT INTO branch_item_rules (branchcode, itemtype, holdallowed, returnbranch) | 
        
          | 364 |     VALUES (?, ?, ?, ?) | 369 |     VALUES (?, ?, ?, ?) | 
          
            
              | 365 | }, {}, 'CPL', 'CANNOT', 0, 'homebranch'); | 370 | }, {}, $branch_1, 'CANNOT', 0, 'homebranch'); | 
        
          | 366 | $dbh->do(q{ | 371 | $dbh->do(q{ | 
        
          | 367 |     INSERT INTO branch_item_rules (branchcode, itemtype, holdallowed, returnbranch) | 372 |     INSERT INTO branch_item_rules (branchcode, itemtype, holdallowed, returnbranch) | 
        
          | 368 |     VALUES (?, ?, ?, ?) | 373 |     VALUES (?, ?, ?, ?) | 
          
            
              | 369 | }, {}, 'CPL', 'CAN', 1, 'homebranch'); | 374 | }, {}, $branch_1, 'CAN', 1, 'homebranch'); | 
        
          | 370 | ($bibnum, $title, $bibitemnum) = create_helper_biblio('CANNOT'); | 375 | ($bibnum, $title, $bibitemnum) = create_helper_biblio('CANNOT'); | 
        
          | 371 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem( | 376 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem( | 
          
            
              | 372 |     { homebranch => 'CPL', holdingbranch => 'CPL', itype => 'CANNOT' } , $bibnum); | 377 |     { homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $bibnum); | 
        
          | 373 | is(CanItemBeReserved($borrowernumbers[0], $itemnumber), 'notReservable', | 378 | is(CanItemBeReserved($borrowernumbers[0], $itemnumber), 'notReservable', | 
        
          | 374 |     "CanItemBeReserved should returns 'notReservable'"); | 379 |     "CanItemBeReserved should returns 'notReservable'"); | 
        
          | 375 |  | 380 |  | 
        
          | 376 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem( | 381 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem( | 
          
            
              | 377 |     { homebranch => 'MPL', holdingbranch => 'CPL', itype => 'CAN' } , $bibnum); | 382 |     { homebranch => $branch_2, holdingbranch => $branch_1, itype => 'CAN' } , $bibnum); | 
        
          | 378 | is(CanItemBeReserved($borrowernumbers[0], $itemnumber), | 383 | is(CanItemBeReserved($borrowernumbers[0], $itemnumber), | 
        
          | 379 |     'cannotReserveFromOtherBranches', | 384 |     'cannotReserveFromOtherBranches', | 
        
          | 380 |     "CanItemBeReserved should returns 'cannotReserveFromOtherBranches'"); | 385 |     "CanItemBeReserved should returns 'cannotReserveFromOtherBranches'"); | 
        
          | 381 |  | 386 |  | 
        
          | 382 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem( | 387 | ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem( | 
          
            
              | 383 |     { homebranch => 'CPL', holdingbranch => 'CPL', itype => 'CAN' } , $bibnum); | 388 |     { homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CAN' } , $bibnum); | 
        
          | 384 | is(CanItemBeReserved($borrowernumbers[0], $itemnumber), 'OK', | 389 | is(CanItemBeReserved($borrowernumbers[0], $itemnumber), 'OK', | 
        
          | 385 |     "CanItemBeReserved should returns 'OK'"); | 390 |     "CanItemBeReserved should returns 'OK'"); | 
        
          | 386 |  | 391 |  | 
  
    | Lines 431-437
          $dbh->do('DELETE FROM items');
      
      
        Link Here | 
        
          | 431 | $dbh->do('DELETE FROM biblio'); | 436 | $dbh->do('DELETE FROM biblio'); | 
        
          | 432 |  | 437 |  | 
        
          | 433 | ( $bibnum, $title, $bibitemnum ) = create_helper_biblio('ONLY1'); | 438 | ( $bibnum, $title, $bibitemnum ) = create_helper_biblio('ONLY1'); | 
          
            
              | 434 | ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem( { homebranch => 'CPL', holdingbranch => 'CPL' }, $bibnum ); | 439 | ( $item_bibnum, $item_bibitemnum, $itemnumber ) | 
            
              |  |  | 440 |     = AddItem( { homebranch => $branch_1, holdingbranch => $branch_1 }, $bibnum ); | 
        
          | 435 |  | 441 |  | 
        
          | 436 | $dbh->do( | 442 | $dbh->do( | 
        
          | 437 |     q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed) | 443 |     q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed) | 
  
    | Lines 442-448
          $dbh->do(
      
      
        Link Here | 
        
          | 442 | is( CanItemBeReserved( $borrowernumbers[0], $itemnumber ), | 448 | is( CanItemBeReserved( $borrowernumbers[0], $itemnumber ), | 
        
          | 443 |     'OK', 'Patron can reserve item with hold limit of 1, no holds placed' ); | 449 |     'OK', 'Patron can reserve item with hold limit of 1, no holds placed' ); | 
        
          | 444 |  | 450 |  | 
          
            
              | 445 | my $res_id = AddReserve( $branch, $borrowernumbers[0], $bibnum, '', 1, ); | 451 | my $res_id = AddReserve( $branch_1, $borrowernumbers[0], $bibnum, '', 1, ); | 
        
          | 446 |  | 452 |  | 
        
          | 447 | is( CanItemBeReserved( $borrowernumbers[0], $itemnumber ), | 453 | is( CanItemBeReserved( $borrowernumbers[0], $itemnumber ), | 
        
          | 448 |     'tooManyReserves', 'Patron cannot reserve item with hold limit of 1, 1 bib level hold placed' ); | 454 |     'tooManyReserves', 'Patron cannot reserve item with hold limit of 1, 1 bib level hold placed' ); | 
            
              | 449 | -  |  |  |