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

(-)a/t/db_dependent/Accounts.t (-133 / +174 lines)
Lines 18-24 Link Here
18
18
19
use Modern::Perl;
19
use Modern::Perl;
20
20
21
use Test::More tests => 36;
21
use Test::More tests => 33;
22
use Test::MockModule;
22
use Test::MockModule;
23
use Test::Warn;
23
use Test::Warn;
24
24
Lines 71-98 $context->mock( 'userenv', sub { Link Here
71
});
71
});
72
my $userenv_branchcode = $branchcode;
72
my $userenv_branchcode = $branchcode;
73
73
74
# Test chargelostitem
74
# Test manualinvoice
75
my $itemtype = $builder->build( { source => 'Itemtype' } );
75
my $itemtype = $builder->build( { source => 'Itemtype' } );
76
my $item   = $builder->build( { source => 'Item', value => { itype => $itemtype->{itemtype} } } );
76
my $item   = $builder->build( { source => 'Item', value => { itype => $itemtype->{itemtype} } } );
77
my $patron = $builder->build( { source => 'Borrower' } );
77
my $patron = $builder->build( { source => 'Borrower' } );
78
my $amount = '5.000000';
78
my $amount = '5.000000';
79
my $description = "Test fee!";
79
my $description = "Test fee!";
80
chargelostitem( $patron->{borrowernumber}, $item->{itemnumber}, $amount, $description );
81
my ($accountline) = Koha::Account::Lines->search(
82
    {
83
        borrowernumber => $patron->{borrowernumber}
84
    }
85
);
86
is( $accountline->amount, $amount, 'Accountline amount set correctly for chargelostitem' );
87
is( $accountline->description, $description, 'Accountline description set correctly for chargelostitem' );
88
is( $accountline->branchcode, $branchcode, 'Accountline branchcode set correctly for chargelostitem' );
89
$dbh->do(q|DELETE FROM accountlines|);
90
91
# Test manualinvoice, reuse some of the vars from testing chargelostitem
92
my $type = 'L';
80
my $type = 'L';
93
my $note = 'Test note!';
81
my $note = 'Test note!';
94
manualinvoice( $patron->{borrowernumber}, $item->{itemnumber}, $description, $type, $amount, $note );
82
manualinvoice( $patron->{borrowernumber}, $item->{itemnumber}, $description, $type, $amount, $note );
95
($accountline) = Koha::Account::Lines->search(
83
my ($accountline) = Koha::Account::Lines->search(
96
    {
84
    {
97
        borrowernumber => $patron->{borrowernumber}
85
        borrowernumber => $patron->{borrowernumber}
98
    }
86
    }
Lines 524-534 subtest 'balance' => sub { Link Here
524
    $patron->delete;
512
    $patron->delete;
525
};
513
};
526
514
527
subtest "Koha::Account::chargelostitem tests" => sub {
515
subtest "C4::Accounts::chargelostitem tests" => sub {
528
    plan tests => 40;
516
    plan tests => 2;
529
517
530
    my $lostfine;
518
    my $branch = $builder->build( { source => 'Branch' } );
531
    my $procfee;
519
    my $branchcode = $branch->{branchcode};
520
521
    my $staff = $builder->build( { source => 'Borrower' } );
522
    my $staff_id = $staff->{borrowernumber};
523
524
    my $module = Test::MockModule->new('C4::Context');
525
    $module->mock(
526
        'userenv',
527
        sub {
528
            return {
529
                flags  => 1,
530
                number => $staff_id,
531
                branch => $branchcode,
532
            };
533
        }
534
    );
532
535
533
    my $itype_no_replace_no_fee = $builder->build({ source => 'Itemtype', value => {
536
    my $itype_no_replace_no_fee = $builder->build({ source => 'Itemtype', value => {
534
            rentalcharge => 0,
537
            rentalcharge => 0,
Lines 561-680 subtest "Koha::Account::chargelostitem tests" => sub { Link Here
561
    my $cli_issue_id_3 = $builder->build({ source => 'Issue', value => { borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3 } })->{issue_id};
564
    my $cli_issue_id_3 = $builder->build({ source => 'Issue', value => { borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3 } })->{issue_id};
562
    my $cli_issue_id_4 = $builder->build({ source => 'Issue', value => { borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4 } })->{issue_id};
565
    my $cli_issue_id_4 = $builder->build({ source => 'Issue', value => { borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4 } })->{issue_id};
563
566
564
    my $duck = Koha::Items->find({itemnumber=>$cli_itemnumber1});
567
    my $lostfine;
565
568
    my $procfee;
566
    t::lib::Mocks::mock_preference('item-level_itypes', '1');
569
567
    t::lib::Mocks::mock_preference('useDefaultReplacementCost', '0');
570
    subtest "fee application tests" => sub {
568
571
        plan tests => 40;
569
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 0, "Perdedor");
572
   
570
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'L' });
573
        t::lib::Mocks::mock_preference('item-level_itypes', '1');
571
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
574
        t::lib::Mocks::mock_preference('useDefaultReplacementCost', '0');
572
    ok( !$lostfine, "No lost fine if no replacementcost or default when pref off");
575
   
573
    ok( !$procfee,  "No processing fee if no processing fee");
576
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 0, "Perdedor");
574
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 6.12, "Perdedor");
577
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'L' });
575
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'L' });
578
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
576
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
579
        ok( !$lostfine, "No lost fine if no replacementcost or default when pref off");
577
    ok( $lostfine->amount == 6.12, "Lost fine equals replacementcost when pref off and no default set");
580
        ok( !$procfee,  "No processing fee if no processing fee");
578
    ok( !$procfee,  "No processing fee if no processing fee");
581
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 6.12, "Perdedor");
579
    $lostfine->delete();
582
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'L' });
580
583
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
581
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 0, "Perdedor");
584
        ok( $lostfine->amount == 6.12, "Lost fine equals replacementcost when pref off and no default set");
582
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'L' });
585
        ok( !$procfee,  "No processing fee if no processing fee");
583
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
586
        $lostfine->delete();
584
    ok( !$lostfine, "No lost fine if no replacementcost but default set when pref off");
587
    
585
    ok( !$procfee,  "No processing fee if no processing fee");
588
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 0, "Perdedor");
586
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 6.12, "Perdedor");
589
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'L' });
587
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'L' });
590
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
588
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
591
        ok( !$lostfine, "No lost fine if no replacementcost but default set when pref off");
589
    ok( $lostfine->amount == 6.12 , "Lost fine equals replacementcost when pref off and default set");
592
        ok( !$procfee,  "No processing fee if no processing fee");
590
    ok( !$procfee,  "No processing fee if no processing fee");
593
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 6.12, "Perdedor");
591
    $lostfine->delete();
594
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'L' });
592
595
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
593
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 0, "Perdedor");
596
        ok( $lostfine->amount == 6.12 , "Lost fine equals replacementcost when pref off and default set");
594
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'L' });
597
        ok( !$procfee,  "No processing fee if no processing fee");
595
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
598
        $lostfine->delete();
596
    ok( !$lostfine, "No lost fine if no replacementcost and no default set when pref off");
599
    
597
    ok( $procfee->amount == 8.16,  "Processing fee if processing fee");
600
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 0, "Perdedor");
598
    is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
601
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'L' });
599
    $procfee->delete();
602
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
600
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 6.12, "Perdedor");
603
        ok( !$lostfine, "No lost fine if no replacementcost and no default set when pref off");
601
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'L' });
604
        ok( $procfee->amount == 8.16,  "Processing fee if processing fee");
602
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
605
        is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
603
    ok( $lostfine->amount == 6.12 , "Lost fine equals replacementcost when pref off and no default set");
606
        $procfee->delete();
604
    ok( $procfee->amount == 8.16,  "Processing fee if processing fee");
607
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 6.12, "Perdedor");
605
    is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
608
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'L' });
606
    $lostfine->delete();
609
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
607
    $procfee->delete();
610
        ok( $lostfine->amount == 6.12 , "Lost fine equals replacementcost when pref off and no default set");
608
611
        ok( $procfee->amount == 8.16,  "Processing fee if processing fee");
609
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 0, "Perdedor");
612
        is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
610
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'L' });
613
        $lostfine->delete();
611
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
614
        $procfee->delete();
612
    ok( !$lostfine, "No lost fine if no replacementcost but default set when pref off");
615
    
613
    ok( $procfee->amount == 2.04,  "Processing fee if processing fee");
616
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 0, "Perdedor");
614
    is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
617
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'L' });
615
    $procfee->delete();
618
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
616
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 6.12, "Perdedor");
619
        ok( !$lostfine, "No lost fine if no replacementcost but default set when pref off");
617
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'L' });
620
        ok( $procfee->amount == 2.04,  "Processing fee if processing fee");
618
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
621
        is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
619
    ok( $lostfine->amount == 6.12 , "Lost fine equals replacementcost when pref off and default set");
622
        $procfee->delete();
620
    ok( $procfee->amount == 2.04,  "Processing fee if processing fee");
623
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 6.12, "Perdedor");
621
    is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
624
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'L' });
622
    $lostfine->delete();
625
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
623
    $procfee->delete();
626
        ok( $lostfine->amount == 6.12 , "Lost fine equals replacementcost when pref off and default set");
624
627
        ok( $procfee->amount == 2.04,  "Processing fee if processing fee");
625
    t::lib::Mocks::mock_preference('useDefaultReplacementCost', '1');
628
        is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
626
629
        $lostfine->delete();
627
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 0, "Perdedor");
630
        $procfee->delete();
628
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'L' });
631
    
629
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
632
        t::lib::Mocks::mock_preference('useDefaultReplacementCost', '1');
630
    ok( !$lostfine, "No lost fine if no replacementcost or default when pref on");
633
    
631
    ok( !$procfee,  "No processing fee if no processing fee");
634
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 0, "Perdedor");
632
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 6.12, "Perdedor");
635
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'L' });
633
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'L' });
636
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
634
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
637
        ok( !$lostfine, "No lost fine if no replacementcost or default when pref on");
635
    is( $lostfine->amount, "6.120000", "Lost fine equals replacementcost when pref on and no default set");
638
        ok( !$procfee,  "No processing fee if no processing fee");
636
    ok( !$procfee,  "No processing fee if no processing fee");
639
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 6.12, "Perdedor");
637
640
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'L' });
638
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 0, "Perdedor");
641
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
639
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'L' });
642
        is( $lostfine->amount, "6.120000", "Lost fine equals replacementcost when pref on and no default set");
640
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
643
        ok( !$procfee,  "No processing fee if no processing fee");
641
    is( $lostfine->amount(), "16.320000", "Lost fine is default if no replacementcost but default set when pref on");
644
    
642
    ok( !$procfee,  "No processing fee if no processing fee");
645
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 0, "Perdedor");
643
    $lostfine->delete();
646
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'L' });
644
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 6.12, "Perdedor");
647
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
645
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'L' });
648
        is( $lostfine->amount(), "16.320000", "Lost fine is default if no replacementcost but default set when pref on");
646
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
649
        ok( !$procfee,  "No processing fee if no processing fee");
647
    is( $lostfine->amount, "6.120000" , "Lost fine equals replacementcost when pref on and default set");
650
        $lostfine->delete();
648
    ok( !$procfee,  "No processing fee if no processing fee");
651
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 6.12, "Perdedor");
649
652
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'L' });
650
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 0, "Perdedor");
653
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
651
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'L' });
654
        is( $lostfine->amount, "6.120000" , "Lost fine equals replacementcost when pref on and default set");
652
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
655
        ok( !$procfee,  "No processing fee if no processing fee");
653
    ok( !$lostfine, "No lost fine if no replacementcost and default not set when pref on");
656
    
654
    is( $procfee->amount, "8.160000",  "Processing fee if processing fee");
657
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 0, "Perdedor");
655
    is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
658
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'L' });
656
    $procfee->delete();
659
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
657
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 6.12, "Perdedor");
660
        ok( !$lostfine, "No lost fine if no replacementcost and default not set when pref on");
658
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'L' });
661
        is( $procfee->amount, "8.160000",  "Processing fee if processing fee");
659
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
662
        is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
660
    is( $lostfine->amount, "6.120000", "Lost fine equals replacementcost when pref on and no default set");
663
        $procfee->delete();
661
    is( $procfee->amount, "8.160000",  "Processing fee if processing fee");
664
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 6.12, "Perdedor");
662
    is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
665
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'L' });
663
666
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
664
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 0, "Perdedor");
667
        is( $lostfine->amount, "6.120000", "Lost fine equals replacementcost when pref on and no default set");
665
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'L' });
668
        is( $procfee->amount, "8.160000",  "Processing fee if processing fee");
666
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
669
        is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
667
    is( $lostfine->amount, "4.080000", "Lost fine is default if no replacementcost but default set when pref on");
670
    
668
    is( $procfee->amount, "2.040000",  "Processing fee if processing fee");
671
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 0, "Perdedor");
669
    is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
672
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'L' });
670
    $lostfine->delete();
673
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
671
    $procfee->delete();
674
        is( $lostfine->amount, "4.080000", "Lost fine is default if no replacementcost but default set when pref on");
672
    C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 6.12, "Perdedor");
675
        is( $procfee->amount, "2.040000",  "Processing fee if processing fee");
673
    $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'L' });
676
        is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
674
    $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
677
        $lostfine->delete();
675
    is( $lostfine->amount, "6.120000", "Lost fine equals replacementcost when pref on and default set");
678
        $procfee->delete();
676
    is( $procfee->amount, "2.040000",  "Processing fee if processing fee");
679
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 6.12, "Perdedor");
677
    is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
680
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'L' });
681
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
682
        is( $lostfine->amount, "6.120000", "Lost fine equals replacementcost when pref on and default set");
683
        is( $procfee->amount, "2.040000",  "Processing fee if processing fee");
684
        is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
685
    
686
        # Cleanup - this must be replaced with a transaction per subtest
687
        $lostfine->delete();
688
        $procfee->delete();
689
    };
690
691
    subtest "basic fields tests" => sub {
692
        plan tests => 12;
693
694
        t::lib::Mocks::mock_preference('ProcessingFeeNote', 'Test Note');
695
        C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, '1.99', "Perdedor");
696
697
        # Lost Item Fee
698
        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'L' });
699
        ok($lostfine, "Lost fine created");
700
        is($lostfine->manager_id, $staff_id, "Lost fine manager_id set correctly");
701
        is($lostfine->issue_id, $cli_issue_id_4, "Lost fine issue_id set correctly");
702
        is($lostfine->description, "Perdedor", "Lost fine issue_id set correctly");
703
        is($lostfine->note, '', "Lost fine does not contain a note");
704
        is($lostfine->branchcode, $branchcode, "Lost fine branchcode set correctly");
705
       
706
        # Processing Fee
707
        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
708
        ok($procfee, "Processing fee created");
709
        is($procfee->manager_id, $staff_id, "Processing fee manager_id set correctly");
710
        is($procfee->issue_id, $cli_issue_id_4, "Processing fee issue_id set correctly");
711
        is($procfee->description, "Perdedor", "Processing fee issue_id set correctly");
712
        is($procfee->note, C4::Context->preference("ProcessingFeeNote"), "Processing fee contains note matching ProcessingFeeNote");
713
        is($procfee->branchcode, $branchcode, "Processing fee branchcode set correctly");
714
715
        # Cleanup - this must be replaced with a transaction per subtest
716
        $lostfine->delete();
717
        $procfee->delete();
718
    };
678
719
679
    # Cleanup - this must be replaced with a transaction per subtest
720
    # Cleanup - this must be replaced with a transaction per subtest
680
    Koha::Patrons->find($cli_borrowernumber)->checkouts->delete;
721
    Koha::Patrons->find($cli_borrowernumber)->checkouts->delete;
(-)a/t/db_dependent/Circulation/Chargelostitem.t (-86 lines)
Lines 1-85 Link Here
1
#!/usr/bin/perl
2
3
use Modern::Perl;
4
5
use Test::More tests => 6;
6
use Test::MockModule;
7
use t::lib::Mocks;
8
use t::lib::TestBuilder;
9
10
use C4::Circulation;
11
use C4::Biblio;
12
use C4::Items;
13
use Koha::Patrons;
14
use MARC::Record;
15
16
BEGIN {
17
    use_ok('C4::Accounts');
18
}
19
20
my $schema = Koha::Database->schema;
21
$schema->storage->txn_begin;
22
my $builder = t::lib::TestBuilder->new;
23
my $dbh = C4::Context->dbh;
24
25
$dbh->do(q|DELETE FROM accountlines|);
26
27
t::lib::Mocks::mock_preference('ProcessingFeeNote', 'Test Note');
28
29
my $library = $builder->build({
30
    source => 'Branch',
31
});
32
my $branchcode = $library->{branchcode};
33
34
my $itemtype = $builder->build({
35
    source => 'Itemtype',
36
    value => {
37
        processfee => 42,
38
    }
39
});
40
41
my %item_branch_infos = (
42
    homebranch => $branchcode,
43
    holdingbranch => $branchcode,
44
    itype => $itemtype->{itemtype},
45
);
46
47
my ($biblionumber1) = AddBiblio(MARC::Record->new, '');
48
my $itemnumber1 = AddItem({ barcode => '0101', %item_branch_infos }, $biblionumber1);
49
my $itemnumber2 = AddItem({ barcode => '0102', %item_branch_infos }, $biblionumber1);
50
51
my ($biblionumber2) = AddBiblio(MARC::Record->new, '');
52
my $itemnumber3 = AddItem({ barcode => '0203', %item_branch_infos }, $biblionumber2);
53
54
my $categorycode = $builder->build({
55
    source => 'Category'
56
})->{categorycode};
57
58
my $borrowernumber = Koha::Patron->new({categorycode => $categorycode, branchcode => $branchcode})->store->borrowernumber;
59
# TODO following code must be simplified to use the Koha::Patron object
60
my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed();
61
62
# Need to mock userenv for AddIssue
63
my $module = new Test::MockModule('C4::Context');
64
$module->mock('userenv', sub { { branch => $branchcode } });
65
AddIssue($borrower, '0101');
66
AddIssue($borrower, '0203');
67
68
# Begin tests...
69
Koha::Account::Offsets->delete();
70
my $issue = Koha::Checkouts->search( { borrowernumber => $borrowernumber } )->next()->unblessed();
71
C4::Accounts::chargelostitem( $borrowernumber, $issue->{itemnumber}, '1.00');
72
73
my $accountline = Koha::Account::Lines->search( { borrowernumber => $borrowernumber, accounttype => 'PF' } )->next();
74
75
is( int($accountline->amount), int($itemtype->{processfee}), "The accountline amount should be processfee value " );
76
is( $accountline->itemnumber, $itemnumber1, "The accountline itemnumber should be linked with barcode '0101'" );
77
is( $accountline->note, C4::Context->preference("ProcessingFeeNote"), "The accountline description should be 'test'" );
78
79
my $lost_ao = Koha::Account::Offsets->search( { type => 'Lost Item' } );
80
is( $lost_ao->count, 1, 'Account offset of type "Lost Item" created' );
81
82
my $processing_fee_ao = Koha::Account::Offsets->search( { type => 'Processing Fee' } );
83
is( $processing_fee_ao->count, 1, 'Account offset of type "Processing Fee" created' );
84
85
$schema->storage->txn_rollback;
86
- 

Return to bug 21722