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

(-)a/t/db_dependent/Accounts.t (-3 / +171 lines)
Lines 18-34 Link Here
18
18
19
use Modern::Perl;
19
use Modern::Perl;
20
20
21
use Test::More tests => 23;
21
use Test::More tests => 24;
22
use Test::MockModule;
22
use Test::MockModule;
23
use Test::Warn;
23
use Test::Warn;
24
24
25
use t::lib::TestBuilder;
25
use t::lib::TestBuilder;
26
use t::lib::Mocks;
26
use t::lib::Mocks;
27
27
28
use C4::Members;
28
use Koha::Account;
29
use Koha::Account;
29
use Koha::Account::Lines;
30
use Koha::Account::Lines;
30
use Koha::Account::Line;
31
use Koha::Account::Offsets;
31
use Koha::Account::Offsets;
32
use Koha::DateUtils qw( dt_from_string );
32
33
33
BEGIN {
34
BEGIN {
34
    use_ok('C4::Accounts');
35
    use_ok('C4::Accounts');
Lines 627-630 subtest "Koha::Account::chargelostitem tests" => sub { Link Here
627
    is( $procfee->amount, "2.040000",  "Processing fee if processing fee");
628
    is( $procfee->amount, "2.040000",  "Processing fee if processing fee");
628
};
629
};
629
630
631
subtest "Koha::Account::non_issues_charges tests" => sub {
632
    plan tests => 21;
633
634
    my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
635
636
    my $today  = dt_from_string;
637
    my $res    = 3;
638
    my $rent   = 5;
639
    my $manual = 7;
640
    Koha::Account::Line->new(
641
        {
642
            borrowernumber    => $patron->borrowernumber,
643
            accountno         => 1,
644
            date              => $today,
645
            description       => 'a Res fee',
646
            accounttype       => 'Res',
647
            amountoutstanding => $res,
648
        }
649
    )->store;
650
    Koha::Account::Line->new(
651
        {
652
            borrowernumber    => $patron->borrowernumber,
653
            accountno         => 2,
654
            date              => $today,
655
            description       => 'a Rental fee',
656
            accounttype       => 'Rent',
657
            amountoutstanding => $rent,
658
        }
659
    )->store;
660
    Koha::Account::Line->new(
661
        {
662
            borrowernumber    => $patron->borrowernumber,
663
            accountno         => 3,
664
            date              => $today,
665
            description       => 'a Manual invoice fee',
666
            accounttype       => 'Copie',
667
            amountoutstanding => $manual,
668
        }
669
    )->store;
670
    Koha::AuthorisedValue->new(
671
        {
672
            category         => 'MANUAL_INV',
673
            authorised_value => 'Copie',
674
            lib              => 'Fee for copie',
675
        }
676
    )->store;
677
678
    t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge',   0 );
679
    t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 0 );
680
    t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge',  0 );
681
    my ( $total, $non_issues_charges, $other_charges ) =
682
      C4::Members::GetMemberAccountBalance( $patron->borrowernumber );
683
    is(
684
        $total,
685
        $res + $rent + $manual,
686
        'Total charges should be Res + Rent + Manual'
687
    );
688
    is( $non_issues_charges, 0,
689
        'If 0|0|0 there should not have non issues charges' );
690
    is( $other_charges, 15, 'If 0|0|0 there should only have other charges' );
691
692
    t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge',   0 );
693
    t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 0 );
694
    t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge',  1 );
695
    ( $total, $non_issues_charges, $other_charges ) =
696
      C4::Members::GetMemberAccountBalance( $patron->borrowernumber );
697
    is(
698
        $total,
699
        $res + $rent + $manual,
700
        'Total charges should be Res + Rent + Manual'
701
    );
702
    is( $non_issues_charges, $manual,
703
        'If 0|0|1 Only Manual should be a non issue charge' );
704
    is(
705
        $other_charges,
706
        $res + $rent,
707
        'If 0|0|1 Res + Rent should be other charges'
708
    );
709
710
    t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge',   0 );
711
    t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 1 );
712
    t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge',  0 );
713
    ( $total, $non_issues_charges, $other_charges ) =
714
      C4::Members::GetMemberAccountBalance( $patron->borrowernumber );
715
    is(
716
        $total,
717
        $res + $rent + $manual,
718
        'Total charges should be Res + Rent + Manual'
719
    );
720
    is( $non_issues_charges, $rent,
721
        'If 0|1|0 Only Rental should be a non issue charge' );
722
    is(
723
        $other_charges,
724
        $res + $manual,
725
        'If 0|1|0 Rent + Manual should be other charges'
726
    );
727
728
    t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge',   0 );
729
    t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 1 );
730
    t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge',  1 );
731
    ( $total, $non_issues_charges, $other_charges ) =
732
      C4::Members::GetMemberAccountBalance( $patron->borrowernumber );
733
    is(
734
        $total,
735
        $res + $rent + $manual,
736
        'Total charges should be Res + Rent + Manual'
737
    );
738
    is(
739
        $non_issues_charges,
740
        $rent + $manual,
741
        'If 0|1|1 Rent + Manual should be non issues charges'
742
    );
743
    is( $other_charges, $res, 'If 0|1|1 there should only have other charges' );
744
745
    t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge',   1 );
746
    t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 0 );
747
    t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge',  0 );
748
    ( $total, $non_issues_charges, $other_charges ) =
749
      C4::Members::GetMemberAccountBalance( $patron->borrowernumber );
750
    is(
751
        $total,
752
        $res + $rent + $manual,
753
        'Total charges should be Res + Rent + Manual'
754
    );
755
    is( $non_issues_charges, $res,
756
        'If 1|0|0 Only Res should be non issues charges' );
757
    is(
758
        $other_charges,
759
        $rent + $manual,
760
        'If 1|0|0 Rent + Manual should be other charges'
761
    );
762
763
    t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge',   1 );
764
    t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 1 );
765
    t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge',  0 );
766
    ( $total, $non_issues_charges, $other_charges ) =
767
      C4::Members::GetMemberAccountBalance( $patron->borrowernumber );
768
    is(
769
        $total,
770
        $res + $rent + $manual,
771
        'Total charges should be Res + Rent + Manual'
772
    );
773
    is(
774
        $non_issues_charges,
775
        $res + $rent,
776
        'If 1|1|0 Res + Rent should be non issues charges'
777
    );
778
    is( $other_charges, $manual,
779
        'If 1|1|0 Only Manual should be other charges' );
780
781
    t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge',   1 );
782
    t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 1 );
783
    t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge',  1 );
784
    ( $total, $non_issues_charges, $other_charges ) =
785
      C4::Members::GetMemberAccountBalance( $patron->borrowernumber );
786
    is(
787
        $total,
788
        $res + $rent + $manual,
789
        'Total charges should be Res + Rent + Manual'
790
    );
791
    is(
792
        $non_issues_charges,
793
        $res + $rent + $manual,
794
        'If 1|1|1 Res + Rent + Manual should be non issues charges'
795
    );
796
    is( $other_charges, 0, 'If 1|1|1 there should not have any other charges' );
797
};
798
630
1;
799
1;
631
- 

Return to bug 12001