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

(-)a/t/db_dependent/Accounts.t (-3 / +186 lines)
Lines 1-16 Link Here
1
#!/usr/bin/perl
1
#!/usr/bin/perl
2
#
2
#
3
# This Koha test module is a stub!  
3
# This Koha test module is a stub!
4
# Add more tests here!!!
4
# Add more tests here!!!
5
5
6
use strict;
6
use strict;
7
use warnings;
7
use warnings;
8
8
9
use Test::More tests => 1;
9
use Test::More tests => 19;
10
11
use C4::Context;
10
12
11
BEGIN {
13
BEGIN {
12
        use_ok('C4::Accounts');
14
    use_ok('Koha::Database');
15
    use_ok('Koha::Accounts');
16
    use_ok('Koha::Accounts::DebitTypes');
17
    use_ok('Koha::Accounts::CreditTypes');
13
}
18
}
14
19
20
## Intial Setup ##
21
my $borrower = Koha::Database->new()->schema->resultset('Borrower')->create(
22
    {
23
        surname         => 'Test',
24
        categorycode    => 'S',
25
        branchcode      => 'MPL',
26
        account_balance => 0,
27
    }
28
);
29
30
my $biblio =
31
  Koha::Database->new()->schema->resultset('Biblio')
32
  ->create( { title => "Test Record" } );
33
my $biblioitem =
34
  Koha::Database->new()->schema->resultset('Biblioitem')
35
  ->create( { biblionumber => $biblio->biblionumber() } );
36
my $item = Koha::Database->new()->schema->resultset('Item')->create(
37
    {
38
        biblionumber     => $biblio->biblionumber(),
39
        biblioitemnumber => $biblioitem->biblioitemnumber(),
40
        replacementprice => 25.00,
41
        barcode          => q{TEST_ITEM_BARCODE}
42
    }
43
);
44
45
my $issue = Koha::Database->new()->schema->resultset('Issue')->create(
46
    {
47
        borrowernumber => $borrower->borrowernumber(),
48
        itemnumber     => $item->itemnumber(),
49
    }
50
);
51
## END initial setup
52
53
ok( Koha::Accounts::DebitTypes::Fine eq 'FINE', 'Test DebitTypes::Fine' );
54
ok( Koha::Accounts::DebitTypes::Lost eq 'LOST', 'Test DebitTypes::Lost' );
55
ok(
56
    Koha::Accounts::DebitTypes::IsValid('FINE'),
57
    'Test DebitTypes::IsValid with valid debit type'
58
);
59
ok(
60
    !Koha::Accounts::DebitTypes::IsValid('Not A Valid Fee Type'),
61
    'Test DebitTypes::IsValid with an invalid debit type'
62
);
63
my $authorised_value =
64
  Koha::Database->new()->schema->resultset('AuthorisedValue')->create(
65
    {
66
        category         => 'MANUAL_INV',
67
        authorised_value => 'TEST',
68
        lib              => 'Test',
69
    }
70
  );
71
ok( Koha::Accounts::DebitTypes::IsValid('TEST'),
72
    'Test DebitTypes::IsValid with valid authorised value debit type' );
73
$authorised_value->delete();
74
75
my $debit = AddDebit(
76
    {
77
        borrower   => $borrower,
78
        amount     => 5.00,
79
        type       => Koha::Accounts::DebitTypes::Fine,
80
        branchcode => 'MPL',
81
    }
82
);
83
ok( $debit, "AddDebit returned a valid debit id " . $debit->id() );
84
85
ok(
86
    $borrower->account_balance() == 5.00,
87
    "Borrower's account balance updated correctly. Should be 5.00, is " . $borrower->account_balance()
88
);
89
90
my $debit2 = AddDebit(
91
    {
92
        borrower   => $borrower,
93
        amount     => 7.00,
94
        type       => Koha::Accounts::DebitTypes::Fine,
95
        branchcode => 'MPL',
96
    }
97
);
98
99
my $credit = AddCredit(
100
    {
101
        borrower   => $borrower,
102
        type       => Koha::Accounts::CreditTypes::Payment,
103
        amount     => 9.00,
104
        branchcode => 'MPL',
105
    }
106
);
107
108
RecalculateAccountBalance( { borrower => $borrower } );
109
ok(
110
    sprintf( "%.2f", $borrower->account_balance() ) eq "3.00",
111
    "RecalculateAccountBalance updated balance correctly."
112
);
113
114
Koha::Database->new()->schema->resultset('AccountCredit')->create(
115
    {
116
        borrowernumber   => $borrower->borrowernumber(),
117
        type             => Koha::Accounts::CreditTypes::Payment,
118
        amount_paid      => 3.00,
119
        amount_remaining => 3.00,
120
    }
121
);
122
NormalizeBalances( { borrower => $borrower } );
123
ok(
124
    $borrower->account_balance() == 0.00,
125
    "NormalizeBalances updated balance correctly."
126
);
127
128
# Adding advance credit with no balance due
129
$credit = AddCredit(
130
    {
131
        borrower   => $borrower,
132
        type       => Koha::Accounts::CreditTypes::Payment,
133
        amount     => 9.00,
134
        branchcode => 'MPL',
135
    }
136
);
137
ok(
138
    $borrower->account_balance() == -9,
139
'Adding a $9 credit for borrower with 0 balance results in a -9 dollar account balance'
140
);
141
142
my $debit3 = AddDebit(
143
    {
144
        borrower   => $borrower,
145
        amount     => 5.00,
146
        type       => Koha::Accounts::DebitTypes::Fine,
147
        branchcode => 'MPL',
148
    }
149
);
150
ok(
151
    $borrower->account_balance() == -4,
152
'Adding a $5 debit when the balance is negative results in the debit being automatically paid, resulting in a balance of -4'
153
);
154
155
my $debit4 = AddDebit(
156
    {
157
        borrower   => $borrower,
158
        amount     => 6.00,
159
        type       => Koha::Accounts::DebitTypes::Fine,
160
        branchcode => 'MPL',
161
    }
162
);
163
ok(
164
    $borrower->account_balance() == 2,
165
'Adding another debit ( 6.00 ) more than the negative account balance results in a partial credit and a balance due of 2.00'
166
);
167
$credit = AddCredit(
168
    {
169
        borrower   => $borrower,
170
        type       => Koha::Accounts::CreditTypes::WriteOff,
171
        amount     => 2.00,
172
        branchcode => 'MPL',
173
        debit_id   => $debit4->debit_id(),
174
    }
175
);
176
ok( $borrower->account_balance() == 0,
177
    'WriteOff of remaining 2.00 balance succeeds' );
178
179
my $debit5 = DebitLostItem(
180
    {
181
        borrower => $borrower,
182
        issue    => $issue,
183
    }
184
);
185
ok( $borrower->account_balance() == 25,
186
    'DebitLostItem adds debit for replacement price of item' );
15
187
188
my $lost_credit =
189
  CreditLostItem( { borrower => $borrower, debit => $debit5 } );
190
ok(
191
    $borrower->account_balance() == 0,
192
    'CreditLostItem adds credit for same about as the debit for the lost tiem'
193
);
16
194
195
## Post test cleanup ##
196
$issue->delete();
197
$item->delete();
198
$biblio->delete();
199
$borrower->delete();
(-)a/t/db_dependent/Circulation.t (-10 / +26 lines)
Lines 164-170 $dbh->do( Link Here
164
);
164
);
165
165
166
# Test C4::Circulation::ProcessOfflinePayment
166
# Test C4::Circulation::ProcessOfflinePayment
167
my $sth = C4::Context->dbh->prepare("SELECT COUNT(*) FROM accountlines WHERE amount = '-123.45' AND accounttype = 'Pay'");
167
my $sth = C4::Context->dbh->prepare("SELECT COUNT(*) FROM account_credits WHERE amount_paid = '123.45' AND type = 'PAYMENT'");
168
$sth->execute();
168
$sth->execute();
169
my ( $original_count ) = $sth->fetchrow_array();
169
my ( $original_count ) = $sth->fetchrow_array();
170
170
Lines 177-185 my ( $new_count ) = $sth->fetchrow_array(); Link Here
177
177
178
ok( $new_count == $original_count  + 1, 'ProcessOfflinePayment makes payment correctly' );
178
ok( $new_count == $original_count  + 1, 'ProcessOfflinePayment makes payment correctly' );
179
179
180
C4::Context->dbh->do("DELETE FROM accountlines WHERE borrowernumber IN ( SELECT borrowernumber FROM borrowers WHERE cardnumber = '99999999999' )");
180
C4::Context->dbh->do("DELETE FROM account_credits");
181
C4::Context->dbh->do("DELETE FROM account_debits");
181
C4::Context->dbh->do("DELETE FROM borrowers WHERE cardnumber = '99999999999'");
182
C4::Context->dbh->do("DELETE FROM borrowers WHERE cardnumber = '99999999999'");
182
C4::Context->dbh->do("DELETE FROM accountlines");
183
{
183
{
184
# CanBookBeRenewed tests
184
# CanBookBeRenewed tests
185
185
Lines 346-375 C4::Context->dbh->do("DELETE FROM accountlines"); Link Here
346
    C4::Context->set_preference('WhenLostForgiveFine','1');
346
    C4::Context->set_preference('WhenLostForgiveFine','1');
347
    C4::Context->set_preference('WhenLostChargeReplacementFee','1');
347
    C4::Context->set_preference('WhenLostChargeReplacementFee','1');
348
348
349
    C4::Overdues::UpdateFine( $itemnumber, $renewing_borrower->{borrowernumber},
349
    C4::Overdues::UpdateFine(
350
        15.00, q{}, Koha::DateUtils::output_pref($datedue) );
350
        {
351
            itemnumber     => $itemnumber,
352
            borrowernumber => $renewing_borrower->{borrowernumber},
353
            amount         => 15.00,
354
            due            => Koha::DateUtils::output_pref($datedue),
355
            issue_id       => GetItemIssue($itemnumber)->{issue_id}
356
        }
357
    );
351
358
352
    LostItem( $itemnumber, 1 );
359
    LostItem( $itemnumber, 1 );
353
360
354
    my $total_due = $dbh->selectrow_array(
361
    my $total_due = $dbh->selectrow_array(
355
        'SELECT SUM( amountoutstanding ) FROM accountlines WHERE borrowernumber = ?',
362
        'SELECT account_balance FROM borrowers WHERE borrowernumber = ?',
356
        undef, $renewing_borrower->{borrowernumber}
363
        undef, $renewing_borrower->{borrowernumber}
357
    );
364
    );
358
365
359
    ok( $total_due == 12, 'Borrower only charged replacement fee with both WhenLostForgiveFine and WhenLostChargeReplacementFee enabled' );
366
    ok( $total_due == 12, 'Borrower only charged replacement fee with both WhenLostForgiveFine and WhenLostChargeReplacementFee enabled' );
360
367
361
    C4::Context->dbh->do("DELETE FROM accountlines");
368
    C4::Context->dbh->do("DELETE FROM account_credits");
369
    C4::Context->dbh->do("DELETE FROM account_debits");
370
    C4::Context->dbh->do("UPDATE borrowers SET account_balance = 0");
362
371
363
    C4::Context->set_preference('WhenLostForgiveFine','0');
372
    C4::Context->set_preference('WhenLostForgiveFine','0');
364
    C4::Context->set_preference('WhenLostChargeReplacementFee','0');
373
    C4::Context->set_preference('WhenLostChargeReplacementFee','0');
365
374
366
    C4::Overdues::UpdateFine( $itemnumber2, $renewing_borrower->{borrowernumber},
375
    C4::Overdues::UpdateFine(
367
        15.00, q{}, Koha::DateUtils::output_pref($datedue) );
376
        {
377
            itemnumber     => $itemnumber2,
378
            borrowernumber => $renewing_borrower->{borrowernumber},
379
            amount         => 15.00,
380
            due            => Koha::DateUtils::output_pref($datedue),
381
            issue_id       => GetItemIssue($itemnumber2)->{issue_id},
382
        }
383
    );
368
384
369
    LostItem( $itemnumber2, 1 );
385
    LostItem( $itemnumber2, 1 );
370
386
371
    $total_due = $dbh->selectrow_array(
387
    $total_due = $dbh->selectrow_array(
372
        'SELECT SUM( amountoutstanding ) FROM accountlines WHERE borrowernumber = ?',
388
        'SELECT account_balance FROM borrowers WHERE borrowernumber = ?',
373
        undef, $renewing_borrower->{borrowernumber}
389
        undef, $renewing_borrower->{borrowernumber}
374
    );
390
    );
375
391
(-)a/t/db_dependent/Members/AddEnrolmentFeeIfNeeded.t (-4 / +3 lines)
Lines 40-56 my %borrower_data = ( Link Here
40
my $borrowernumber = C4::Members::AddMember( %borrower_data );
40
my $borrowernumber = C4::Members::AddMember( %borrower_data );
41
$borrower_data{borrowernumber} = $borrowernumber;
41
$borrower_data{borrowernumber} = $borrowernumber;
42
42
43
my ( $total ) = C4::Members::GetMemberAccountRecords( $borrowernumber );
43
my ( $total ) = C4::Members::GetMemberAccountBalance( $borrowernumber );
44
is( $total, $enrolmentfee_K, "New kid pay $enrolmentfee_K" );
44
is( $total, $enrolmentfee_K, "New kid pay $enrolmentfee_K" );
45
45
46
$borrower_data{categorycode} = 'J';
46
$borrower_data{categorycode} = 'J';
47
C4::Members::ModMember( %borrower_data );
47
C4::Members::ModMember( %borrower_data );
48
( $total ) = C4::Members::GetMemberAccountRecords( $borrowernumber );
48
( $total ) = C4::Members::GetMemberAccountBalance( $borrowernumber );
49
is( $total, $enrolmentfee_K + $enrolmentfee_J, "Kid growing and become a juvenile, he should pay " . ( $enrolmentfee_K + $enrolmentfee_J ) );
49
is( $total, $enrolmentfee_K + $enrolmentfee_J, "Kid growing and become a juvenile, he should pay " . ( $enrolmentfee_K + $enrolmentfee_J ) );
50
50
51
# Check with calling directly AddEnrolmentFeeIfNeeded
51
# Check with calling directly AddEnrolmentFeeIfNeeded
52
C4::Members::AddEnrolmentFeeIfNeeded( 'YA', $borrowernumber );
52
C4::Members::AddEnrolmentFeeIfNeeded( 'YA', $borrowernumber );
53
( $total ) = C4::Members::GetMemberAccountRecords( $borrowernumber );
53
( $total ) = C4::Members::GetMemberAccountBalance( $borrowernumber );
54
is( $total, $enrolmentfee_K + $enrolmentfee_J + $enrolmentfee_YA, "Juvenile growing and become an young adult, he should pay " . ( $enrolmentfee_K + $enrolmentfee_J + $enrolmentfee_YA ) );
54
is( $total, $enrolmentfee_K + $enrolmentfee_J + $enrolmentfee_YA, "Juvenile growing and become an young adult, he should pay " . ( $enrolmentfee_K + $enrolmentfee_J + $enrolmentfee_YA ) );
55
55
56
$dbh->rollback;
56
$dbh->rollback;
57
- 

Return to bug 6427