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

(-)a/t/db_dependent/Circulation.t (-2 / +228 lines)
Lines 18-24 Link Here
18
use Modern::Perl;
18
use Modern::Perl;
19
use utf8;
19
use utf8;
20
20
21
use Test::More tests => 70;
21
use Test::More tests => 73;
22
use Test::Exception;
22
use Test::Exception;
23
use Test::MockModule;
23
use Test::MockModule;
24
use Test::Deep qw( cmp_deeply );
24
use Test::Deep qw( cmp_deeply );
Lines 5429-5434 subtest 'Do not return on renewal (LOST charge)' => sub { Link Here
5429
    );
5429
    );
5430
};
5430
};
5431
5431
5432
subtest 'Lost status does not change when preferences are set to 0' => sub {
5433
    plan tests => 2;
5434
5435
    my $library = $builder->build_object( { class => "Koha::Libraries" } );
5436
    my $manager = $builder->build_object( { class => "Koha::Patrons" } );
5437
    t::lib::Mocks::mock_userenv( { patron => $manager, branchcode => $manager->branchcode } );
5438
5439
    my $biblio = $builder->build_sample_biblio;
5440
    my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
5441
5442
    my $item = $builder->build_sample_item(
5443
        {
5444
            biblionumber     => $biblio->biblionumber,
5445
            library          => $library->branchcode,
5446
            replacementprice => 99,
5447
            itype            => $itemtype,
5448
            itemlost         => 1,
5449
        }
5450
    );
5451
5452
    my $debitCharge = Koha::Account::Line->new(
5453
        {
5454
            borrowernumber    => $patron->borrowernumber,
5455
            debit_type_code   => 'LOST',
5456
            status            => undef,
5457
            itemnumber        => $item->itemnumber,
5458
            amount            => 12,
5459
            amountoutstanding => 12,
5460
            interface         => 'something',
5461
        }
5462
    )->store();
5463
5464
    # Test for UpdateItemLostStatusWhenPaid
5465
    t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenPaid', 0 );
5466
5467
    my $paymentLine = Koha::Account::Line->new(
5468
        {
5469
            borrowernumber    => $patron->borrowernumber,
5470
            credit_type_code  => 'CREDIT',
5471
            status            => undef,
5472
            itemnumber        => $item->itemnumber,
5473
            amountoutstanding => 0 - 12,
5474
            amount            => 0 - 12,
5475
            interface         => 'something',
5476
        }
5477
    )->store();
5478
5479
    my $offset = Koha::Account::Offset->new(
5480
        {
5481
            credit_id => $paymentLine->id,
5482
            debit_id  => $debitCharge->id,
5483
            type      => 'APPLY',
5484
            amount    => 0
5485
        }
5486
    )->store();
5487
5488
    $paymentLine->apply( { debits => [$debitCharge] } );
5489
5490
    is(
5491
        Koha::Items->find( $item->itemnumber )->itemlost, 1,
5492
        "Payment should not change itemlost status when UpdateItemLostStatusWhenPaid is 0"
5493
    );
5494
5495
    # Test for UpdateItemLostStatusWhenWriteOff
5496
    t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenWriteOff', 0 );
5497
5498
    my $writeOffLine = Koha::Account::Line->new(
5499
        {
5500
            borrowernumber    => $patron->borrowernumber,
5501
            credit_type_code  => 'WRITEOFF',
5502
            status            => undef,
5503
            itemnumber        => $item->itemnumber,
5504
            amountoutstanding => 0 - 12,
5505
            amount            => 0 - 12,
5506
            interface         => 'something',
5507
        }
5508
    )->store();
5509
5510
    $offset = Koha::Account::Offset->new(
5511
        {
5512
            credit_id => $writeOffLine->id,
5513
            debit_id  => $debitCharge->id,
5514
            type      => 'APPLY',
5515
            amount    => 0
5516
        }
5517
    )->store();
5518
5519
    $writeOffLine->apply( { debits => [$debitCharge] } );
5520
5521
    is(
5522
        Koha::Items->find( $item->itemnumber )->itemlost, 1,
5523
        "Write-off should not change itemlost status when UpdateItemLostStatusWhenWriteOff is 0"
5524
    );
5525
};
5526
5527
# Test for UpdateItemLostStatusWhenPaid
5528
subtest 'Update lost item to authorized value on payment of balance' => sub {
5529
    plan tests => 5;
5530
5531
    my $library = $builder->build_object( { class => "Koha::Libraries" } );
5532
    my $manager = $builder->build_object( { class => "Koha::Patrons" } );
5533
    t::lib::Mocks::mock_userenv( { patron => $manager, branchcode => $manager->branchcode } );
5534
5535
    my $biblio = $builder->build_sample_biblio;
5536
    my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
5537
5538
    for my $status ( 2 .. 6 ) {
5539
        t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenPaid', $status );
5540
5541
        my $item = $builder->build_sample_item(
5542
            {
5543
                biblionumber     => $biblio->biblionumber,
5544
                library          => $library->branchcode,
5545
                replacementprice => 99,
5546
                itype            => $itemtype,
5547
                itemlost         => 1,
5548
            }
5549
        );
5550
5551
        my $debitCharge = Koha::Account::Line->new(
5552
            {
5553
                borrowernumber    => $patron->borrowernumber,
5554
                debit_type_code   => 'LOST',
5555
                status            => undef,
5556
                itemnumber        => $item->itemnumber,
5557
                amount            => 12,
5558
                amountoutstanding => 12,
5559
                interface         => 'something',
5560
            }
5561
        )->store();
5562
5563
        my $paymentLine = Koha::Account::Line->new(
5564
            {
5565
                borrowernumber    => $patron->borrowernumber,
5566
                credit_type_code  => 'CREDIT',
5567
                status            => undef,
5568
                itemnumber        => $item->itemnumber,
5569
                amountoutstanding => 0 - 12,
5570
                amount            => 0 - 12,
5571
                interface         => 'something',
5572
            }
5573
        )->store();
5574
5575
        my $offset = Koha::Account::Offset->new(
5576
            {
5577
                credit_id => $paymentLine->id,
5578
                debit_id  => $debitCharge->id,
5579
                type      => 'APPLY',
5580
                amount    => 0
5581
            }
5582
        )->store();
5583
5584
        $paymentLine->apply( { debits => [$debitCharge] } );
5585
5586
        is(
5587
            Koha::Items->find( $item->itemnumber )->itemlost, $status,
5588
            "Payment should set itemlost to status $status"
5589
        );
5590
    }
5591
};
5592
5593
# Test for UpdateItemLostStatusWhenWriteOff
5594
subtest 'Update lost item to authorized value on write-off of balance' => sub {
5595
    plan tests => 5;
5596
5597
    my $library = $builder->build_object( { class => "Koha::Libraries" } );
5598
    my $manager = $builder->build_object( { class => "Koha::Patrons" } );
5599
    t::lib::Mocks::mock_userenv( { patron => $manager, branchcode => $manager->branchcode } );
5600
5601
    my $biblio = $builder->build_sample_biblio;
5602
    my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
5603
5604
    for my $status ( 2 .. 6 ) {
5605
        t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenWriteOff', $status );
5606
5607
        my $item = $builder->build_sample_item(
5608
            {
5609
                biblionumber     => $biblio->biblionumber,
5610
                library          => $library->branchcode,
5611
                replacementprice => 99,
5612
                itype            => $itemtype,
5613
                itemlost         => 1,
5614
            }
5615
        );
5616
5617
        my $debitCharge = Koha::Account::Line->new(
5618
            {
5619
                borrowernumber    => $patron->borrowernumber,
5620
                debit_type_code   => 'LOST',
5621
                status            => undef,
5622
                itemnumber        => $item->itemnumber,
5623
                amount            => 12,
5624
                amountoutstanding => 12,
5625
                interface         => 'something',
5626
            }
5627
        )->store();
5628
5629
        my $writeOffLine = Koha::Account::Line->new(
5630
            {
5631
                borrowernumber    => $patron->borrowernumber,
5632
                credit_type_code  => 'WRITEOFF',
5633
                status            => undef,
5634
                itemnumber        => $item->itemnumber,
5635
                amountoutstanding => 0 - 12,
5636
                amount            => 0 - 12,
5637
                interface         => 'something',
5638
            }
5639
        )->store();
5640
5641
        my $offset = Koha::Account::Offset->new(
5642
            {
5643
                credit_id => $writeOffLine->id,
5644
                debit_id  => $debitCharge->id,
5645
                type      => 'APPLY',
5646
                amount    => 0
5647
            }
5648
        )->store();
5649
5650
        $writeOffLine->apply( { debits => [$debitCharge] } );
5651
5652
        is(
5653
            Koha::Items->find( $item->itemnumber )->itemlost, $status,
5654
            "Write-off should set itemlost to status $status"
5655
        );
5656
    }
5657
};
5658
5432
subtest 'Filling a hold should cancel existing transfer' => sub {
5659
subtest 'Filling a hold should cancel existing transfer' => sub {
5433
    plan tests => 4;
5660
    plan tests => 4;
5434
5661
5435
- 

Return to bug 22740