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

(-)a/t/db_dependent/Circulation.t (-30 / +37 lines)
Lines 2177-2183 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2177
2177
2178
    subtest 'Full write-off tests' => sub {
2178
    subtest 'Full write-off tests' => sub {
2179
2179
2180
        plan tests => 10;
2180
        plan tests => 12;
2181
2181
2182
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2182
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2183
        my $manager = $builder->build_object({ class => "Koha::Patrons" });
2183
        my $manager = $builder->build_object({ class => "Koha::Patrons" });
Lines 2211-2219 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2211
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2211
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2212
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2212
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2213
        my $lost_fee_line = $lost_fee_lines->next;
2213
        my $lost_fee_line = $lost_fee_lines->next;
2214
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right L amount is generated' );
2214
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
2215
        is( $lost_fee_line->amountoutstanding + 0,
2215
        is( $lost_fee_line->amountoutstanding + 0,
2216
            $replacement_amount, 'The right L amountoutstanding is generated' );
2216
            $replacement_amount, 'The right LOST amountoutstanding is generated' );
2217
        is( $lost_fee_line->status,
2218
            undef, 'The LOST status was not set' );
2217
2219
2218
        my $account = $patron->account;
2220
        my $account = $patron->account;
2219
        my $debts   = $account->outstanding_debits;
2221
        my $debts   = $account->outstanding_debits;
Lines 2228-2246 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2228
        $credit->apply( { debits => $debts, offset_type => 'Writeoff' } );
2230
        $credit->apply( { debits => $debts, offset_type => 'Writeoff' } );
2229
2231
2230
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2232
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2231
        is( $credit_return_id, undef, 'No CR account line added' );
2233
        is( $credit_return_id, undef, 'No LOST_RETURN account line added' );
2232
2234
2233
        $lost_fee_line->discard_changes; # reload from DB
2235
        $lost_fee_line->discard_changes; # reload from DB
2234
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2236
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2235
        is( $lost_fee_line->accounttype,
2237
        is( $lost_fee_line->accounttype,
2236
            'LR', 'Lost fee now has account type of LR ( Lost Returned )' );
2238
            'LOST', 'Lost fee now still has account type of LOST' );
2239
        is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
2237
2240
2238
        is( $patron->account->balance, -0, 'The patron balance is 0, everything was written off' );
2241
        is( $patron->account->balance, -0, 'The patron balance is 0, everything was written off' );
2239
    };
2242
    };
2240
2243
2241
    subtest 'Full payment tests' => sub {
2244
    subtest 'Full payment tests' => sub {
2242
2245
2243
        plan tests => 12;
2246
        plan tests => 13;
2244
2247
2245
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2248
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2246
2249
Lines 2272-2280 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2272
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2275
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2273
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2276
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2274
        my $lost_fee_line = $lost_fee_lines->next;
2277
        my $lost_fee_line = $lost_fee_lines->next;
2275
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right L amount is generated' );
2278
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
2276
        is( $lost_fee_line->amountoutstanding + 0,
2279
        is( $lost_fee_line->amountoutstanding + 0,
2277
            $replacement_amount, 'The right L amountountstanding is generated' );
2280
            $replacement_amount, 'The right LOST amountountstanding is generated' );
2278
2281
2279
        my $account = $patron->account;
2282
        my $account = $patron->account;
2280
        my $debts   = $account->outstanding_debits;
2283
        my $debts   = $account->outstanding_debits;
Lines 2291-2306 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2291
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2294
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2292
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2295
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2293
2296
2294
        is( $credit_return->accounttype, 'CR', 'An account line of type CR is added' );
2297
        is( $credit_return->accounttype, 'LOST_RETURN', 'An account line of type LOST_RETURN is added' );
2295
        is( $credit_return->amount + 0,
2298
        is( $credit_return->amount + 0,
2296
            -99.00, 'The account line of type CR has an amount of -99' );
2299
            -99.00, 'The account line of type LOST_RETURN has an amount of -99' );
2297
        is( $credit_return->amountoutstanding + 0,
2300
        is( $credit_return->amountoutstanding + 0,
2298
            -99.00, 'The account line of type CR has an amountoutstanding of -99' );
2301
            -99.00, 'The account line of type LOST_RETURN has an amountoutstanding of -99' );
2299
2302
2300
        $lost_fee_line->discard_changes;
2303
        $lost_fee_line->discard_changes;
2301
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2304
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2302
        is( $lost_fee_line->accounttype,
2305
        is( $lost_fee_line->accounttype,
2303
            'LR', 'Lost fee now has account type of LR ( Lost Returned )' );
2306
            'LOST', 'Lost fee now still has account type of LOST' );
2307
        is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
2304
2308
2305
        is( $patron->account->balance,
2309
        is( $patron->account->balance,
2306
            -99, 'The patron balance is -99, a credit that equals the lost fee payment' );
2310
            -99, 'The patron balance is -99, a credit that equals the lost fee payment' );
Lines 2308-2314 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2308
2312
2309
    subtest 'Test without payment or write off' => sub {
2313
    subtest 'Test without payment or write off' => sub {
2310
2314
2311
        plan tests => 12;
2315
        plan tests => 13;
2312
2316
2313
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2317
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2314
2318
Lines 2341-2367 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2341
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2345
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2342
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2346
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2343
        my $lost_fee_line = $lost_fee_lines->next;
2347
        my $lost_fee_line = $lost_fee_lines->next;
2344
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right L amount is generated' );
2348
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
2345
        is( $lost_fee_line->amountoutstanding + 0,
2349
        is( $lost_fee_line->amountoutstanding + 0,
2346
            $replacement_amount, 'The right L amountountstanding is generated' );
2350
            $replacement_amount, 'The right LOST amountountstanding is generated' );
2347
2351
2348
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2352
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2349
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2353
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2350
2354
2351
        is( $credit_return->accounttype, 'CR', 'An account line of type CR is added' );
2355
        is( $credit_return->accounttype, 'LOST_RETURN', 'An account line of type LOST_RETURN is added' );
2352
        is( $credit_return->amount + 0, -99.00, 'The account line of type CR has an amount of -99' );
2356
        is( $credit_return->amount + 0, -99.00, 'The account line of type LOST_RETURN has an amount of -99' );
2353
        is( $credit_return->amountoutstanding + 0, 0, 'The account line of type CR has an amountoutstanding of 0' );
2357
        is( $credit_return->amountoutstanding + 0, 0, 'The account line of type LOST_RETURN has an amountoutstanding of 0' );
2354
2358
2355
        $lost_fee_line->discard_changes;
2359
        $lost_fee_line->discard_changes;
2356
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2360
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2357
        is( $lost_fee_line->accounttype, 'LR', 'Lost fee now has account type of LR ( Lost Returned )' );
2361
        is( $lost_fee_line->accounttype,
2362
            'LOST', 'Lost fee now still has account type of LOST' );
2363
        is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
2358
2364
2359
        is( $patron->account->balance, 20, 'The patron balance is 20, still owes the processing fee' );
2365
        is( $patron->account->balance, 20, 'The patron balance is 20, still owes the processing fee' );
2360
    };
2366
    };
2361
2367
2362
    subtest 'Test with partial payement and write off, and remaining debt' => sub {
2368
    subtest 'Test with partial payement and write off, and remaining debt' => sub {
2363
2369
2364
        plan tests => 15;
2370
        plan tests => 16;
2365
2371
2366
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2372
        my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
2367
        my $item = $builder->build_sample_item(
2373
        my $item = $builder->build_sample_item(
Lines 2392-2400 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2392
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2398
            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
2393
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2399
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2394
        my $lost_fee_line = $lost_fee_lines->next;
2400
        my $lost_fee_line = $lost_fee_lines->next;
2395
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right L amount is generated' );
2401
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
2396
        is( $lost_fee_line->amountoutstanding + 0,
2402
        is( $lost_fee_line->amountoutstanding + 0,
2397
            $replacement_amount, 'The right L amountountstanding is generated' );
2403
            $replacement_amount, 'The right LOST amountountstanding is generated' );
2398
2404
2399
        my $account = $patron->account;
2405
        my $account = $patron->account;
2400
        is( $account->balance, $processfee_amount + $replacement_amount, 'Balance is PF + L' );
2406
        is( $account->balance, $processfee_amount + $replacement_amount, 'Balance is PF + L' );
Lines 2432-2452 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2432
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2438
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id );
2433
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2439
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2434
2440
2435
        is( $account->balance, $processfee_amount - $payment_amount, 'Balance is PF - payment (CR)' );
2441
        is( $account->balance, $processfee_amount - $payment_amount, 'Balance is PF - payment (LOST_RETURN)' );
2436
2442
2437
        $lost_fee_line->discard_changes;
2443
        $lost_fee_line->discard_changes;
2438
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2444
        is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
2439
        is( $lost_fee_line->accounttype,
2445
        is( $lost_fee_line->accounttype,
2440
            'LR', 'Lost fee now has account type of LR ( Lost Returned )' );
2446
            'LOST', 'Lost fee now still has account type of LOST' );
2447
        is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
2441
2448
2442
        is( $credit_return->accounttype, 'CR', 'An account line of type CR is added' );
2449
        is( $credit_return->accounttype, 'LOST_RETURN', 'An account line of type LOST_RETURN is added' );
2443
        is( $credit_return->amount + 0,
2450
        is( $credit_return->amount + 0,
2444
            ($payment_amount + $outstanding ) * -1,
2451
            ($payment_amount + $outstanding ) * -1,
2445
            'The account line of type CR has an amount equal to the payment + outstanding'
2452
            'The account line of type LOST_RETURN has an amount equal to the payment + outstanding'
2446
        );
2453
        );
2447
        is( $credit_return->amountoutstanding + 0,
2454
        is( $credit_return->amountoutstanding + 0,
2448
            $payment_amount * -1,
2455
            $payment_amount * -1,
2449
            'The account line of type CR has an amountoutstanding equal to the payment'
2456
            'The account line of type LOST_RETURN has an amountoutstanding equal to the payment'
2450
        );
2457
        );
2451
2458
2452
        is( $account->balance,
2459
        is( $account->balance,
Lines 2495-2503 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2495
            { borrowernumber => $patron->id, itemnumber => $item_id, accounttype => 'LOST' } );
2502
            { borrowernumber => $patron->id, itemnumber => $item_id, accounttype => 'LOST' } );
2496
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2503
        is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
2497
        my $lost_fee_line = $lost_fee_lines->next;
2504
        my $lost_fee_line = $lost_fee_lines->next;
2498
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right L amount is generated' );
2505
        is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
2499
        is( $lost_fee_line->amountoutstanding + 0,
2506
        is( $lost_fee_line->amountoutstanding + 0,
2500
            $replacement_amount, 'The right L amountountstanding is generated' );
2507
            $replacement_amount, 'The right LOST amountountstanding is generated' );
2501
2508
2502
        my $account = $patron->account;
2509
        my $account = $patron->account;
2503
        is( $account->balance, $replacement_amount, 'Balance is L' );
2510
        is( $account->balance, $replacement_amount, 'Balance is L' );
Lines 2527-2533 subtest '_FixAccountForLostAndReturned' => sub { Link Here
2527
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item_id, $patron->id );
2534
        my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item_id, $patron->id );
2528
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2535
        my $credit_return = Koha::Account::Lines->find($credit_return_id);
2529
2536
2530
        is( $account->balance, $manual_debit_amount - $payment_amount, 'Balance is PF - payment (CR)' );
2537
        is( $account->balance, $manual_debit_amount - $payment_amount, 'Balance is PF - payment (LOST_RETURN)' );
2531
2538
2532
        my $manual_debit = Koha::Account::Lines->search({ borrowernumber => $patron->id, accounttype => 'OVERDUE', status => 'UNRETURNED' })->next;
2539
        my $manual_debit = Koha::Account::Lines->search({ borrowernumber => $patron->id, accounttype => 'OVERDUE', status => 'UNRETURNED' })->next;
2533
        is( $manual_debit->amountoutstanding + 0, $manual_debit_amount - $payment_amount, 'reconcile_balance was called' );
2540
        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