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

(-)a/C4/ILSDI/Services.pm (-4 / +6 lines)
Lines 663-669 sub HoldTitle { Link Here
663
    my $title = $biblio ? $biblio->title : '';
663
    my $title = $biblio ? $biblio->title : '';
664
664
665
    # Check if the biblio can be reserved
665
    # Check if the biblio can be reserved
666
    return { code => 'NotHoldable' } unless CanBookBeReserved( $borrowernumber, $biblionumber )->{status} eq 'OK';
666
    my $code = CanBookBeReserved( $borrowernumber, $biblionumber )->{status};
667
    return { code => $code } unless ( $code eq 'OK' );
667
668
668
    my $branch;
669
    my $branch;
669
670
Lines 739-747 sub HoldItem { Link Here
739
    return { code => 'RecordNotFound' } if $$item{biblionumber} ne $biblio->biblionumber;
740
    return { code => 'RecordNotFound' } if $$item{biblionumber} ne $biblio->biblionumber;
740
741
741
    # Check for item disponibility
742
    # Check for item disponibility
742
    my $canitembereserved = C4::Reserves::CanItemBeReserved( $borrowernumber, $itemnumber );
743
    my $canitembereserved = C4::Reserves::CanItemBeReserved( $borrowernumber, $itemnumber )->{status};
743
    my $canbookbereserved = C4::Reserves::CanBookBeReserved( $borrowernumber, $biblionumber );
744
    my $canbookbereserved = C4::Reserves::CanBookBeReserved( $borrowernumber, $biblionumber )->{status};
744
    return { code => 'NotHoldable' } unless $canbookbereserved->{status} eq 'OK' and $canitembereserved->{status} eq 'OK';
745
    return { code => $canitembereserved } unless $canitembereserved eq 'OK';
746
    return { code => $canbookbereserved } unless $canbookbereserved eq 'OK';
745
747
746
    # Pickup branch management
748
    # Pickup branch management
747
    my $branch;
749
    my $branch;
(-)a/t/db_dependent/ILSDI_Services.t (-19 / +73 lines)
Lines 297-337 subtest 'LookupPatron test' => sub { Link Here
297
    $schema->storage->txn_rollback;
297
    $schema->storage->txn_rollback;
298
};
298
};
299
299
300
# This is a stub, as it merely is for triggering the GetMarcBiblio call.
300
subtest 'Holds test' => sub {
301
subtest 'GetRecords' => sub {
302
301
303
    plan tests => 1;
302
    plan tests => 3;
304
303
305
    $schema->storage->txn_begin;
304
    $schema->storage->txn_begin;
306
305
306
    t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 0 );
307
308
    my $patron = $builder->build({
309
        source => 'Borrower',
310
    });
311
307
    my $biblio = $builder->build({
312
    my $biblio = $builder->build({
308
        source => 'Biblio',
313
        source => 'Biblio',
309
        value  => {
314
    });
310
            title => 'Title 1',    },
315
316
    my $biblioitems = $builder->build({
317
        source => 'Biblioitem',
318
        value => {
319
            biblionumber => $biblio->{biblionumber},
320
        }
311
    });
321
    });
312
322
313
    my $item = $builder->build({
323
    my $item = $builder->build({
314
        source => 'Item',
324
        source => 'Item',
315
        value  => {
325
        value => {
316
            biblionumber => $biblio->{biblionumber},
326
            biblionumber => $biblio->{biblionumber},
317
        },
327
            damaged => 1
328
        }
318
    });
329
    });
319
330
320
    my $biblioitem = $builder->build({
331
    my $query = new CGI;
321
        source => 'Biblioitem',
332
    $query->param( 'patron_id', $patron->{borrowernumber});
322
        value  => {
333
    $query->param( 'bib_id', $biblio->{biblionumber});
334
335
    my $reply = C4::ILSDI::Services::HoldTitle( $query );
336
    is( $reply->{code}, 'damaged', "Item damaged" );
337
338
    my $item_o = Koha::Items->find($item->{itemnumber});
339
    $item_o->damaged(0)->store;
340
341
    my $hold = $builder->build({
342
        source => 'Reserve',
343
        value => {
344
            borrowernumber => $patron->{borrowernumber},
323
            biblionumber => $biblio->{biblionumber},
345
            biblionumber => $biblio->{biblionumber},
324
            itemnumber   => $item->{itemnumber},
346
            itemnumber => $item->{itemnumber}
325
        },
347
        }
348
    });
349
350
    $reply = C4::ILSDI::Services::HoldTitle( $query );
351
    is( $reply->{code}, 'itemAlreadyOnHold', "Item already on hold" );
352
353
    my $biblio2 = $builder->build({
354
        source => 'Biblio',
355
    });
356
357
    my $biblioitems2 = $builder->build({
358
        source => 'Biblioitem',
359
        value => {
360
            biblionumber => $biblio2->{biblionumber},
361
        }
326
    });
362
    });
327
363
328
    my $query = CGI->new({
364
    my $item2 = $builder->build({
329
        'schema' => 'MARCXML',
365
        source => 'Item',
330
        'id'     => [ $biblio->{biblionumber} ]
366
        value => {
367
            biblionumber => $biblio2->{biblionumber},
368
            damaged => 0
369
        }
370
    });
371
372
    t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'PatronLibrary' );
373
    my $issuingrule = $builder->build({
374
        source => 'Issuingrule',
375
        value => {
376
            categorycode => $patron->{categorycode},
377
            itemtype => $item2->{itype},
378
            branchcode => $patron->{branchcode},
379
            reservesallowed => 0,
380
        }
331
    });
381
    });
332
382
333
    my $result = C4::ILSDI::Services::GetRecords($query);
383
    $query = new CGI;
334
    ok($result,'There is a result');
384
    $query->param( 'patron_id', $patron->{borrowernumber});
385
    $query->param( 'bib_id', $biblio2->{biblionumber});
386
    $query->param( 'item_id', $item2->{itemnumber});
387
388
    $reply = C4::ILSDI::Services::HoldItem( $query );
389
    is( $reply->{code}, 'tooManyReserves', "Too many reserves" );
335
390
336
    $schema->storage->txn_rollback;
391
    $schema->storage->txn_rollback;
337
}
392
};
338
- 

Return to bug 19945