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 5487-5492 subtest 'Do not return on renewal (LOST charge)' => sub { Link Here
5487
    );
5487
    );
5488
};
5488
};
5489
5489
5490
subtest 'Lost status does not change when preferences are set to 0' => sub {
5491
    plan tests => 2;
5492
5493
    my $library = $builder->build_object( { class => "Koha::Libraries" } );
5494
    my $manager = $builder->build_object( { class => "Koha::Patrons" } );
5495
    t::lib::Mocks::mock_userenv( { patron => $manager, branchcode => $manager->branchcode } );
5496
5497
    my $biblio = $builder->build_sample_biblio;
5498
    my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
5499
5500
    my $item = $builder->build_sample_item(
5501
        {
5502
            biblionumber     => $biblio->biblionumber,
5503
            library          => $library->branchcode,
5504
            replacementprice => 99,
5505
            itype            => $itemtype,
5506
            itemlost         => 1,
5507
        }
5508
    );
5509
5510
    my $debitCharge = Koha::Account::Line->new(
5511
        {
5512
            borrowernumber    => $patron->borrowernumber,
5513
            debit_type_code   => 'LOST',
5514
            status            => undef,
5515
            itemnumber        => $item->itemnumber,
5516
            amount            => 12,
5517
            amountoutstanding => 12,
5518
            interface         => 'something',
5519
        }
5520
    )->store();
5521
5522
    # Test for UpdateItemLostStatusWhenPaid
5523
    t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenPaid', 0 );
5524
5525
    my $paymentLine = Koha::Account::Line->new(
5526
        {
5527
            borrowernumber    => $patron->borrowernumber,
5528
            credit_type_code  => 'CREDIT',
5529
            status            => undef,
5530
            itemnumber        => $item->itemnumber,
5531
            amountoutstanding => 0 - 12,
5532
            amount            => 0 - 12,
5533
            interface         => 'something',
5534
        }
5535
    )->store();
5536
5537
    my $offset = Koha::Account::Offset->new(
5538
        {
5539
            credit_id => $paymentLine->id,
5540
            debit_id  => $debitCharge->id,
5541
            type      => 'APPLY',
5542
            amount    => 0
5543
        }
5544
    )->store();
5545
5546
    $paymentLine->apply( { debits => [$debitCharge] } );
5547
5548
    is(
5549
        Koha::Items->find( $item->itemnumber )->itemlost, 1,
5550
        "Payment should not change itemlost status when UpdateItemLostStatusWhenPaid is 0"
5551
    );
5552
5553
    # Test for UpdateItemLostStatusWhenWriteOff
5554
    t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenWriteOff', 0 );
5555
5556
    my $writeOffLine = Koha::Account::Line->new(
5557
        {
5558
            borrowernumber    => $patron->borrowernumber,
5559
            credit_type_code  => 'WRITEOFF',
5560
            status            => undef,
5561
            itemnumber        => $item->itemnumber,
5562
            amountoutstanding => 0 - 12,
5563
            amount            => 0 - 12,
5564
            interface         => 'something',
5565
        }
5566
    )->store();
5567
5568
    $offset = Koha::Account::Offset->new(
5569
        {
5570
            credit_id => $writeOffLine->id,
5571
            debit_id  => $debitCharge->id,
5572
            type      => 'APPLY',
5573
            amount    => 0
5574
        }
5575
    )->store();
5576
5577
    $writeOffLine->apply( { debits => [$debitCharge] } );
5578
5579
    is(
5580
        Koha::Items->find( $item->itemnumber )->itemlost, 1,
5581
        "Write-off should not change itemlost status when UpdateItemLostStatusWhenWriteOff is 0"
5582
    );
5583
};
5584
5585
# Test for UpdateItemLostStatusWhenPaid
5586
subtest 'Update lost item to authorized value on payment of balance' => sub {
5587
    plan tests => 5;
5588
5589
    my $library = $builder->build_object( { class => "Koha::Libraries" } );
5590
    my $manager = $builder->build_object( { class => "Koha::Patrons" } );
5591
    t::lib::Mocks::mock_userenv( { patron => $manager, branchcode => $manager->branchcode } );
5592
5593
    my $biblio = $builder->build_sample_biblio;
5594
    my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
5595
5596
    for my $status ( 2 .. 6 ) {
5597
        t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenPaid', $status );
5598
5599
        my $item = $builder->build_sample_item(
5600
            {
5601
                biblionumber     => $biblio->biblionumber,
5602
                library          => $library->branchcode,
5603
                replacementprice => 99,
5604
                itype            => $itemtype,
5605
                itemlost         => 1,
5606
            }
5607
        );
5608
5609
        my $debitCharge = Koha::Account::Line->new(
5610
            {
5611
                borrowernumber    => $patron->borrowernumber,
5612
                debit_type_code   => 'LOST',
5613
                status            => undef,
5614
                itemnumber        => $item->itemnumber,
5615
                amount            => 12,
5616
                amountoutstanding => 12,
5617
                interface         => 'something',
5618
            }
5619
        )->store();
5620
5621
        my $paymentLine = Koha::Account::Line->new(
5622
            {
5623
                borrowernumber    => $patron->borrowernumber,
5624
                credit_type_code  => 'CREDIT',
5625
                status            => undef,
5626
                itemnumber        => $item->itemnumber,
5627
                amountoutstanding => 0 - 12,
5628
                amount            => 0 - 12,
5629
                interface         => 'something',
5630
            }
5631
        )->store();
5632
5633
        my $offset = Koha::Account::Offset->new(
5634
            {
5635
                credit_id => $paymentLine->id,
5636
                debit_id  => $debitCharge->id,
5637
                type      => 'APPLY',
5638
                amount    => 0
5639
            }
5640
        )->store();
5641
5642
        $paymentLine->apply( { debits => [$debitCharge] } );
5643
5644
        is(
5645
            Koha::Items->find( $item->itemnumber )->itemlost, $status,
5646
            "Payment should set itemlost to status $status"
5647
        );
5648
    }
5649
};
5650
5651
# Test for UpdateItemLostStatusWhenWriteOff
5652
subtest 'Update lost item to authorized value on write-off of balance' => sub {
5653
    plan tests => 5;
5654
5655
    my $library = $builder->build_object( { class => "Koha::Libraries" } );
5656
    my $manager = $builder->build_object( { class => "Koha::Patrons" } );
5657
    t::lib::Mocks::mock_userenv( { patron => $manager, branchcode => $manager->branchcode } );
5658
5659
    my $biblio = $builder->build_sample_biblio;
5660
    my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
5661
5662
    for my $status ( 2 .. 6 ) {
5663
        t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenWriteOff', $status );
5664
5665
        my $item = $builder->build_sample_item(
5666
            {
5667
                biblionumber     => $biblio->biblionumber,
5668
                library          => $library->branchcode,
5669
                replacementprice => 99,
5670
                itype            => $itemtype,
5671
                itemlost         => 1,
5672
            }
5673
        );
5674
5675
        my $debitCharge = Koha::Account::Line->new(
5676
            {
5677
                borrowernumber    => $patron->borrowernumber,
5678
                debit_type_code   => 'LOST',
5679
                status            => undef,
5680
                itemnumber        => $item->itemnumber,
5681
                amount            => 12,
5682
                amountoutstanding => 12,
5683
                interface         => 'something',
5684
            }
5685
        )->store();
5686
5687
        my $writeOffLine = Koha::Account::Line->new(
5688
            {
5689
                borrowernumber    => $patron->borrowernumber,
5690
                credit_type_code  => 'WRITEOFF',
5691
                status            => undef,
5692
                itemnumber        => $item->itemnumber,
5693
                amountoutstanding => 0 - 12,
5694
                amount            => 0 - 12,
5695
                interface         => 'something',
5696
            }
5697
        )->store();
5698
5699
        my $offset = Koha::Account::Offset->new(
5700
            {
5701
                credit_id => $writeOffLine->id,
5702
                debit_id  => $debitCharge->id,
5703
                type      => 'APPLY',
5704
                amount    => 0
5705
            }
5706
        )->store();
5707
5708
        $writeOffLine->apply( { debits => [$debitCharge] } );
5709
5710
        is(
5711
            Koha::Items->find( $item->itemnumber )->itemlost, $status,
5712
            "Write-off should set itemlost to status $status"
5713
        );
5714
    }
5715
};
5716
5490
subtest 'Filling a hold should cancel existing transfer' => sub {
5717
subtest 'Filling a hold should cancel existing transfer' => sub {
5491
    plan tests => 4;
5718
    plan tests => 4;
5492
5719
5493
- 

Return to bug 22740