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

(-)a/t/db_dependent/Circulation.t (-30 / +37 lines)
Lines 2087-2093 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2087
2087
2088
    subtest 'Full write-off tests' => sub {
2088
    subtest 'Full write-off tests' => sub {
2089
2089
2090
        plan tests => 10;
2090
        plan tests => 12;
2091
2091
2092
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2092
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2093
        my $manager = $builder->build_object({ class => "Koha::Patrons" });
2093
        my $manager = $builder->build_object({ class => "Koha::Patrons" });
Lines 2121-2129 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2121
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2121
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2122
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2122
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2123
        my $lost_fee_line = $lost_fee_lines->next;
2123
        my $lost_fee_line = $lost_fee_lines->next;
2124
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right L amount is generated' );
2124
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
2125
        is( $lost_fee_line->amountoutstanding + 0,
2125
        is( $lost_fee_line->amountoutstanding + 0,
2126
            $replacement_amount, 'The right L amountoutstanding is generated' );
2126
            $replacement_amount, 'The right LOST amountoutstanding is generated' );
2127
        is( $lost_fee_line->status,
2128
            undef, 'The LOST status was not set' );
2127
2129
2128
        my $account = $patron->account;
2130
        my $account = $patron->account;
2129
        my $debts   = $account->outstanding_debits;
2131
        my $debts   = $account->outstanding_debits;
Lines 2138-2156 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2138
        $credit->apply( { debits => $debts, offset_type => 'Writeoff' } );
2140
        $credit->apply( { debits => $debts, offset_type => 'Writeoff' } );
2139
2141
2140
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2142
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2141
        is( $credit_return_id, undef, 'No CR account line added' );
2143
        is( $credit_return_id, undef, 'No LOST_RETURN account line added' );
2142
2144
2143
        $lost_fee_line->discard_changes; # reload from DB
2145
        $lost_fee_line->discard_changes; # reload from DB
2144
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2146
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2145
        is( $lost_fee_line->accounttype,
2147
        is( $lost_fee_line->accounttype,
2146
            'LR', 'Lost fee now has account type of LR ( Lost Returned )' );
2148
            'LOST', 'Lost fee now still has account type of LOST' );
2149
        is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
2147
2150
2148
        is( $patron->account->balance, -0, 'The patron balance is 0, everything was written off' );
2151
        is( $patron->account->balance, -0, 'The patron balance is 0, everything was written off' );
2149
    };
2152
    };
2150
2153
2151
    subtest 'Full payment tests' => sub {
2154
    subtest 'Full payment tests' => sub {
2152
2155
2153
        plan tests => 12;
2156
        plan tests => 13;
2154
2157
2155
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2158
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2156
2159
Lines 2182-2190 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2182
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2185
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2183
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2186
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2184
        my $lost_fee_line = $lost_fee_lines->next;
2187
        my $lost_fee_line = $lost_fee_lines->next;
2185
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right L amount is generated' );
2188
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
2186
        is( $lost_fee_line->amountoutstanding + 0,
2189
        is( $lost_fee_line->amountoutstanding + 0,
2187
            $replacement_amount, 'The right L amountountstanding is generated' );
2190
            $replacement_amount, 'The right LOST amountountstanding is generated' );
2188
2191
2189
        my $account = $patron->account;
2192
        my $account = $patron->account;
2190
        my $debts   = $account->outstanding_debits;
2193
        my $debts   = $account->outstanding_debits;
Lines 2201-2216 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2201
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2204
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2202
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2205
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2203
2206
2204
        is( $credit_return->accounttype, 'CR', 'An account line of type CR is added' );
2207
        is( $credit_return->accounttype, 'LOST_RETURN', 'An account line of type LOST_RETURN is added' );
2205
        is( $credit_return->amount + 0,
2208
        is( $credit_return->amount + 0,
2206
            -99.00, 'The account line of type CR has an amount of -99' );
2209
            -99.00, 'The account line of type LOST_RETURN has an amount of -99' );
2207
        is( $credit_return->amountoutstanding + 0,
2210
        is( $credit_return->amountoutstanding + 0,
2208
            -99.00, 'The account line of type CR has an amountoutstanding of -99' );
2211
            -99.00, 'The account line of type LOST_RETURN has an amountoutstanding of -99' );
2209
2212
2210
        $lost_fee_line->discard_changes;
2213
        $lost_fee_line->discard_changes;
2211
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2214
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2212
        is( $lost_fee_line->accounttype,
2215
        is( $lost_fee_line->accounttype,
2213
            'LR', 'Lost fee now has account type of LR ( Lost Returned )' );
2216
            'LOST', 'Lost fee now still has account type of LOST' );
2217
        is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
2214
2218
2215
        is( $patron->account->balance,
2219
        is( $patron->account->balance,
2216
            -99, 'The patron balance is -99, a credit that equals the lost fee payment' );
2220
            -99, 'The patron balance is -99, a credit that equals the lost fee payment' );
Lines 2218-2224 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2218
2222
2219
    subtest 'Test without payment or write off' => sub {
2223
    subtest 'Test without payment or write off' => sub {
2220
2224
2221
        plan tests => 12;
2225
        plan tests => 13;
2222
2226
2223
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2227
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2224
2228
Lines 2251-2277 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2251
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2255
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2252
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2256
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2253
        my $lost_fee_line = $lost_fee_lines->next;
2257
        my $lost_fee_line = $lost_fee_lines->next;
2254
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right L amount is generated' );
2258
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
2255
        is( $lost_fee_line->amountoutstanding + 0,
2259
        is( $lost_fee_line->amountoutstanding + 0,
2256
            $replacement_amount, 'The right L amountountstanding is generated' );
2260
            $replacement_amount, 'The right LOST amountountstanding is generated' );
2257
2261
2258
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2262
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2259
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2263
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2260
2264
2261
        is( $credit_return->accounttype, 'CR', 'An account line of type CR is added' );
2265
        is( $credit_return->accounttype, 'LOST_RETURN', 'An account line of type LOST_RETURN is added' );
2262
        is( $credit_return->amount + 0, -99.00, 'The account line of type CR has an amount of -99' );
2266
        is( $credit_return->amount + 0, -99.00, 'The account line of type LOST_RETURN has an amount of -99' );
2263
        is( $credit_return->amountoutstanding + 0, 0, 'The account line of type CR has an amountoutstanding of 0' );
2267
        is( $credit_return->amountoutstanding + 0, 0, 'The account line of type LOST_RETURN has an amountoutstanding of 0' );
2264
2268
2265
        $lost_fee_line->discard_changes;
2269
        $lost_fee_line->discard_changes;
2266
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2270
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2267
        is( $lost_fee_line->accounttype, 'LR', 'Lost fee now has account type of LR ( Lost Returned )' );
2271
        is( $lost_fee_line->accounttype,
2272
            'LOST', 'Lost fee now still has account type of LOST' );
2273
        is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
2268
2274
2269
        is( $patron->account->balance, 20, 'The patron balance is 20, still owes the processing fee' );
2275
        is( $patron->account->balance, 20, 'The patron balance is 20, still owes the processing fee' );
2270
    };
2276
    };
2271
2277
2272
    subtest 'Test with partial payement and write off, and remaining debt' => sub {
2278
    subtest 'Test with partial payement and write off, and remaining debt' => sub {
2273
2279
2274
        plan tests => 15;
2280
        plan tests => 16;
2275
2281
2276
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2282
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2277
        my $item = $builder->build_sample_item(
2283
        my $item = $builder->build_sample_item(
Lines 2302-2310 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2302
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2308
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2303
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2309
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2304
        my $lost_fee_line = $lost_fee_lines->next;
2310
        my $lost_fee_line = $lost_fee_lines->next;
2305
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right L amount is generated' );
2311
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
2306
        is( $lost_fee_line->amountoutstanding + 0,
2312
        is( $lost_fee_line->amountoutstanding + 0,
2307
            $replacement_amount, 'The right L amountountstanding is generated' );
2313
            $replacement_amount, 'The right LOST amountountstanding is generated' );
2308
2314
2309
        my $account = $patron->account;
2315
        my $account = $patron->account;
2310
        is( $account->balance, $processfee_amount + $replacement_amount, 'Balance is PF + L' );
2316
        is( $account->balance, $processfee_amount + $replacement_amount, 'Balance is PF + L' );
Lines 2342-2362 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2342
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2348
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2343
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2349
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2344
2350
2345
        is( $account->balance, $processfee_amount - $payment_amount, 'Balance is PF - payment (CR)' );
2351
        is( $account->balance, $processfee_amount - $payment_amount, 'Balance is PF - payment (LOST_RETURN)' );
2346
2352
2347
        $lost_fee_line->discard_changes;
2353
        $lost_fee_line->discard_changes;
2348
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2354
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2349
        is( $lost_fee_line->accounttype,
2355
        is( $lost_fee_line->accounttype,
2350
            'LR', 'Lost fee now has account type of LR ( Lost Returned )' );
2356
            'LOST', 'Lost fee now still has account type of LOST' );
2357
        is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
2351
2358
2352
        is( $credit_return->accounttype, 'CR', 'An account line of type CR is added' );
2359
        is( $credit_return->accounttype, 'LOST_RETURN', 'An account line of type LOST_RETURN is added' );
2353
        is( $credit_return->amount + 0,
2360
        is( $credit_return->amount + 0,
2354
            ($payment_amount + $outstanding ) * -1,
2361
            ($payment_amount + $outstanding ) * -1,
2355
            'The account line of type CR has an amount equal to the payment + outstanding'
2362
            'The account line of type LOST_RETURN has an amount equal to the payment + outstanding'
2356
        );
2363
        );
2357
        is( $credit_return->amountoutstanding + 0,
2364
        is( $credit_return->amountoutstanding + 0,
2358
            $payment_amount * -1,
2365
            $payment_amount * -1,
2359
            'The account line of type CR has an amountoutstanding equal to the payment'
2366
            'The account line of type LOST_RETURN has an amountoutstanding equal to the payment'
2360
        );
2367
        );
2361
2368
2362
        is( $account->balance,
2369
        is( $account->balance,
Lines 2405-2413 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2405
            { borrowernumber => $patron->id, itemnumber => $item_id, accounttype => 'LOST' } );
2412
            { borrowernumber => $patron->id, itemnumber => $item_id, accounttype => 'LOST' } );
2406
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2413
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2407
        my $lost_fee_line = $lost_fee_lines->next;
2414
        my $lost_fee_line = $lost_fee_lines->next;
2408
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right L amount is generated' );
2415
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
2409
        is( $lost_fee_line->amountoutstanding + 0,
2416
        is( $lost_fee_line->amountoutstanding + 0,
2410
            $replacement_amount, 'The right L amountountstanding is generated' );
2417
            $replacement_amount, 'The right LOST amountountstanding is generated' );
2411
2418
2412
        my $account = $patron->account;
2419
        my $account = $patron->account;
2413
        is( $account->balance, $replacement_amount, 'Balance is L' );
2420
        is( $account->balance, $replacement_amount, 'Balance is L' );
Lines 2437-2443 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2437
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item_id, $patron->id );
2444
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item_id, $patron->id );
2438
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2445
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2439
2446
2440
        is( $account->balance, $manual_debit_amount - $payment_amount, 'Balance is PF - payment (CR)' );
2447
        is( $account->balance, $manual_debit_amount - $payment_amount, 'Balance is PF - payment (LOST_RETURN)' );
2441
2448
2442
        my $manual_debit = Koha::Account::Lines->search({ borrowernumber => $patron->id, accounttype => 'OVERDUE', status => 'UNRETURNED' })->next;
2449
        my $manual_debit = Koha::Account::Lines->search({ borrowernumber => $patron->id, accounttype => 'OVERDUE', status => 'UNRETURNED' })->next;
2443
        is( $manual_debit->amountoutstanding + 0, $manual_debit_amount - $payment_amount, 'reconcile_balance was called' );
2450
        is( $manual_debit->amountoutstanding + 0, $manual_debit_amount - $payment_amount, 'reconcile_balance was called' );
(-)a/t/db_dependent/Circulation/NoIssuesChargeGuarantees.t (-2 / +1 lines)
Lines 75-81 is( $issuingimpossible->{DEBT_GUARANTEES} + 0, '10.00' + 0, "Patron cannot check Link Here
75
75
76
my $accountline = Koha::Account::Lines->search({ borrowernumber => $guarantee->{borrowernumber} })->next();
76
my $accountline = Koha::Account::Lines->search({ borrowernumber => $guarantee->{borrowernumber} })->next();
77
is( $accountline->amountoutstanding, "10.000000", "Found 10.00 amount outstanding" );
77
is( $accountline->amountoutstanding, "10.000000", "Found 10.00 amount outstanding" );
78
is( $accountline->accounttype, "L", "Account type is L" );
78
is( $accountline->accounttype, "LOST", "Account type is LOST" );
79
79
80
my $offset = Koha::Account::Offsets->search({ debit_id => $accountline->id })->next();
80
my $offset = Koha::Account::Offsets->search({ debit_id => $accountline->id })->next();
81
is( $offset->type, 'Lost Item', 'Got correct offset type' );
81
is( $offset->type, 'Lost Item', 'Got correct offset type' );
82
- 

Return to bug 22563