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

(-)a/t/db_dependent/Circulation.t (-5 / +128 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 98;
20
use Test::More tests => 105;
21
21
22
use DateTime;
22
use DateTime;
23
23
Lines 50-55 $dbh->{RaiseError} = 1; Link Here
50
50
51
# Start with a clean slate
51
# Start with a clean slate
52
$dbh->do('DELETE FROM issues');
52
$dbh->do('DELETE FROM issues');
53
$dbh->do('DELETE FROM borrowers');
53
54
54
my $library = $builder->build({
55
my $library = $builder->build({
55
    source => 'Branch',
56
    source => 'Branch',
Lines 259-267 C4::Context->dbh->do("DELETE FROM accountlines"); Link Here
259
        $biblionumber
260
        $biblionumber
260
    );
261
    );
261
262
262
263
264
265
    # Create borrowers
263
    # Create borrowers
266
    my %renewing_borrower_data = (
264
    my %renewing_borrower_data = (
267
        firstname =>  'John',
265
        firstname =>  'John',
Lines 1726-1732 subtest 'AddReturn | is_overdue' => sub { Link Here
1726
    AddReturn( $item->{barcode}, $library->{branchcode}, undef, 1, undef, $five_days_ago );
1724
    AddReturn( $item->{barcode}, $library->{branchcode}, undef, 1, undef, $five_days_ago );
1727
    is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue in dropbox mode' ); # FIXME? This is weird, the FU fine is created ( _CalculateAndUpdateFine > C4::Overdues::UpdateFine ) then remove later (in _FixOverduesOnReturn). Looks like it is a feature
1725
    is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue in dropbox mode' ); # FIXME? This is weird, the FU fine is created ( _CalculateAndUpdateFine > C4::Overdues::UpdateFine ) then remove later (in _FixOverduesOnReturn). Looks like it is a feature
1728
    Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete;
1726
    Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete;
1727
};
1728
1729
subtest '_FixAccountForLostAndReturned' => sub {
1730
    plan tests => 2;
1731
1732
    # Generate test biblio
1733
    my $biblio = MARC::Record->new();
1734
    my $title  = 'Koha for Dummies';
1735
    $biblio->append_fields(
1736
        MARC::Field->new( '100', ' ', ' ', a => 'Hall, Daria' ),
1737
        MARC::Field->new( '245', ' ', ' ', a => $title ),
1738
    );
1739
1740
    my ( $biblionumber, $biblioitemnumber ) = AddBiblio( $biblio, '' );
1741
1742
    my $barcode = 'KD123456789';
1743
    my $branchcode  = $library2->{branchcode};
1744
1745
    my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
1746
        {
1747
            homebranch       => $branchcode,
1748
            holdingbranch    => $branchcode,
1749
            barcode          => $barcode,
1750
            replacementprice => 99.00,
1751
            itype            => $itemtype
1752
        },
1753
        $biblionumber
1754
    );
1755
1756
    my $patron = $builder->build( { source => 'Borrower' } );
1757
1758
    my $accountline = Koha::Account::Line->new(
1759
        {
1760
            borrowernumber => $patron->{borrowernumber},
1761
            accounttype    => 'L',
1762
            itemnumber     => $itemnumber,
1763
            amount => 99.00,
1764
            amountoutstanding => 99.00,
1765
        }
1766
    )->store();
1767
1768
    C4::Circulation::_FixAccountForLostAndReturned( $itemnumber, $patron->{borrowernumber} );
1769
1770
    $accountline->_result()->discard_changes();
1771
1772
    is( $accountline->amountoutstanding, '0.000000', 'Lost fee has no outstanding amount' );
1773
    is( $accountline->accounttype, 'LR', 'Lost fee now has account type of LR ( Lost Returned )');
1774
};
1775
1776
subtest '_FixOverduesOnReturn' => sub {
1777
    plan tests => 6;
1778
1779
    # Generate test biblio
1780
    my $biblio = MARC::Record->new();
1781
    my $title  = 'Koha for Dummies';
1782
    $biblio->append_fields(
1783
        MARC::Field->new( '100', ' ', ' ', a => 'Hall, Kylie' ),
1784
        MARC::Field->new( '245', ' ', ' ', a => $title ),
1785
    );
1786
1787
    my ( $biblionumber, $biblioitemnumber ) = AddBiblio( $biblio, '' );
1788
1789
    my $barcode = 'KD987654321';
1790
    my $branchcode  = $library2->{branchcode};
1791
1792
    my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
1793
        {
1794
            homebranch       => $branchcode,
1795
            holdingbranch    => $branchcode,
1796
            barcode          => $barcode,
1797
            replacementprice => 99.00,
1798
            itype            => $itemtype
1799
        },
1800
        $biblionumber
1801
    );
1802
1803
    my $patron = $builder->build( { source => 'Borrower' } );
1804
1805
    ## Start with basic call, should just close out the open fine
1806
    my $accountline = Koha::Account::Line->new(
1807
        {
1808
            borrowernumber => $patron->{borrowernumber},
1809
            accounttype    => 'FU',
1810
            itemnumber     => $itemnumber,
1811
            amount => 99.00,
1812
            amountoutstanding => 99.00,
1813
            lastincrement => 9.00,
1814
        }
1815
    )->store();
1816
1817
    C4::Circulation::_FixOverduesOnReturn( $patron->{borrowernumber}, $itemnumber );
1818
1819
    $accountline->_result()->discard_changes();
1820
1821
    is( $accountline->amountoutstanding, '99.000000', 'Fine has the same amount outstanding as previously' );
1822
    is( $accountline->accounttype, 'F', 'Open fine ( account type FU ) has been closed out ( account type F )');
1823
1824
1825
    ## Run again, with exemptfine enabled
1826
    $accountline->set(
1827
        {
1828
            accounttype    => 'FU',
1829
            amountoutstanding => 99.00,
1830
        }
1831
    )->store();
1832
1833
    C4::Circulation::_FixOverduesOnReturn( $patron->{borrowernumber}, $itemnumber, 1 );
1834
1835
    $accountline->_result()->discard_changes();
1836
1837
    is( $accountline->amountoutstanding, '0.000000', 'Fine has been reduced to 0' );
1838
    is( $accountline->accounttype, 'FFOR', 'Open fine ( account type FU ) has been set to fine forgiven ( account type FFOR )');
1839
1840
    ## Run again, with dropbox mode enabled
1841
    $accountline->set(
1842
        {
1843
            accounttype    => 'FU',
1844
            amountoutstanding => 99.00,
1845
        }
1846
    )->store();
1847
1848
    C4::Circulation::_FixOverduesOnReturn( $patron->{borrowernumber}, $itemnumber, 0, 1 );
1849
1850
    $accountline->_result()->discard_changes();
1729
1851
1852
    is( $accountline->amountoutstanding, '90.000000', 'Fine has been reduced to 90' );
1853
    is( $accountline->accounttype, 'F', 'Open fine ( account type FU ) has been closed out ( account type F )');
1730
};
1854
};
1731
1855
1732
sub set_userenv {
1856
sub set_userenv {
1733
- 

Return to bug 14826