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

(-)a/t/db_dependent/Overdues.t (-14 / +55 lines)
Lines 144-156 subtest 'UpdateFine tests' => sub { Link Here
144
    my $checkout1 = $builder->build_object(
144
    my $checkout1 = $builder->build_object(
145
        {
145
        {
146
            class => 'Koha::Checkouts',
146
            class => 'Koha::Checkouts',
147
            value => { itemnumber => $item1->itemnumber }
147
            value => { itemnumber => $item1->itemnumber, borrowernumber => $patron->id }
148
        }
148
        }
149
    );
149
    );
150
    my $checkout2 = $builder->build_object(
150
    my $checkout2 = $builder->build_object(
151
        {
151
        {
152
            class => 'Koha::Checkouts',
152
            class => 'Koha::Checkouts',
153
            value => { itemnumber => $item2->itemnumber }
153
            value => { itemnumber => $item2->itemnumber, borrowernumber => $patron->id }
154
        }
154
        }
155
    );
155
    );
156
156
Lines 430-456 subtest 'UpdateFine tests' => sub { Link Here
430
    is( $fine3->amount+0, 30, "Third fine reduced" );
430
    is( $fine3->amount+0, 30, "Third fine reduced" );
431
    is( $fine3->amountoutstanding+0, 10, "Third fine amount outstanding is reduced" );
431
    is( $fine3->amountoutstanding+0, 10, "Third fine amount outstanding is reduced" );
432
432
433
    # Ensure calculations work correctly for floats (bug #25127)
434
    # 7.2 (maxfine) - 7.2 (total_amount_other) != 8.88178419700125e-16 (😢)
433
    t::lib::Mocks::mock_preference( 'MaxFine', '7.2' );
435
    t::lib::Mocks::mock_preference( 'MaxFine', '7.2' );
434
    my $patron_1    = $builder->build_object( { class => 'Koha::Patrons' } );
436
    my $patron_1   = $builder->build_object( { class => 'Koha::Patrons' } );
435
    my $account   = $patron_1->account;
436
    $account->add_debit({ type => 'OVERDUE', amount => '6.99', interface => 'TEST'});
437
    $account->add_debit({ type => 'OVERDUE', amount => '.10', interface => 'TEST'});
438
    $account->add_debit({ type => 'OVERDUE', amount => '.10', interface => 'TEST'});
439
    $account->add_debit({ type => 'OVERDUE', amount => '.01', interface => 'TEST'});
440
    my $item_1     = $builder->build_sample_item();
437
    my $item_1     = $builder->build_sample_item();
438
    my $item_2     = $builder->build_sample_item();
441
    my $checkout_1 = $builder->build_object(
439
    my $checkout_1 = $builder->build_object(
442
        {
440
        {
443
            class => 'Koha::Checkouts',
441
            class => 'Koha::Checkouts',
444
            value => { itemnumber => $item_1->itemnumber, borrowernumber => $patron_1->id }
442
            value => {
443
                itemnumber     => $item_1->itemnumber,
444
                borrowernumber => $patron_1->id
445
            }
446
        }
447
    );
448
    my $checkout_2 = $builder->build_object(
449
        {
450
            class => 'Koha::Checkouts',
451
            value => {
452
                itemnumber     => $item_2->itemnumber,
453
                borrowernumber => $patron->id
454
            }
455
        }
456
    );
457
    my $account = $patron_1->account;
458
    $account->add_debit(
459
        {
460
            type      => 'OVERDUE',
461
            amount    => '6.99',
462
            issue_id  => $checkout_1->issue_id,
463
            interface => 'TEST'
464
        }
465
    );
466
    $account->add_debit(
467
        {
468
            type      => 'OVERDUE',
469
            amount    => '.10',
470
            issue_id  => $checkout_1->issue_id,
471
            interface => 'TEST'
472
        }
473
    );
474
    $account->add_debit(
475
        {
476
            type      => 'OVERDUE',
477
            amount    => '.10',
478
            issue_id  => $checkout_1->issue_id,
479
            interface => 'TEST'
480
        }
481
    );
482
    $account->add_debit(
483
        {
484
            type      => 'OVERDUE',
485
            amount    => '.01',
486
            issue_id  => $checkout_1->issue_id,
487
            interface => 'TEST'
445
        }
488
        }
446
    );
489
    );
447
    UpdateFine(
490
    UpdateFine(
448
        {
491
        {
449
            issue_id       => $checkout_1->issue_id,
492
            issue_id       => $checkout_2->issue_id,
450
            itemnumber     => $item_1->itemnumber,
493
            itemnumber     => $item_2->itemnumber,
451
            borrowernumber => $patron_1->borrowernumber,
494
            borrowernumber => $patron_1->borrowernumber,
452
            amount         => '.1',
495
            amount         => '.1',
453
            due            => $checkout_1->date_due
496
            due            => $checkout_2->date_due
454
        }
497
        }
455
    );
498
    );
456
    $fines = Koha::Account::Lines->search(
499
    $fines = Koha::Account::Lines->search(
Lines 460-465 subtest 'UpdateFine tests' => sub { Link Here
460
    is( $fines->count,        4,    "New amount should be 0 so no fine added" );
503
    is( $fines->count,        4,    "New amount should be 0 so no fine added" );
461
    ok( C4::Circulation::AddReturn( $item_1->barcode, $item_1->homebranch, 1), "Returning the item and forgiving fines succeeds");
504
    ok( C4::Circulation::AddReturn( $item_1->barcode, $item_1->homebranch, 1), "Returning the item and forgiving fines succeeds");
462
505
463
464
    $schema->storage->txn_rollback;
506
    $schema->storage->txn_rollback;
465
};
507
};
466
- 

Return to bug 25127