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

(-)a/C4/Accounts.pm (-18 / +39 lines)
Lines 31-54 use Data::Dumper qw(Dumper); Link Here
31
use vars qw(@ISA @EXPORT);
31
use vars qw(@ISA @EXPORT);
32
32
33
BEGIN {
33
BEGIN {
34
	require Exporter;
34
    require Exporter;
35
	@ISA    = qw(Exporter);
35
    @ISA    = qw(Exporter);
36
	@EXPORT = qw(
36
    @EXPORT = qw(
37
		&recordpayment
37
      &recordpayment
38
		&makepayment
38
      &makepayment
39
		&manualinvoice
39
      &manualinvoice
40
		&getnextacctno
40
      &getnextacctno
41
		&getcharges
41
      &getcharges
42
		&ModNote
42
      &ModNote
43
		&getcredits
43
      &getcredits
44
		&getrefunds
44
      &getrefunds
45
		&chargelostitem
45
      &chargelostitem
46
		&ReversePayment
46
      &ReversePayment
47
        &makepartialpayment
47
      &makepartialpayment
48
        &recordpayment_selectaccts
48
      &recordpayment_selectaccts
49
        &WriteOffFee
49
      &WriteOffFee
50
        &purge_zero_balance_fees
50
      &purge_zero_balance_fees
51
	);
51
      &GetTotalFines
52
    );
52
}
53
}
53
54
54
=head1 NAME
55
=head1 NAME
Lines 853-858 sub purge_zero_balance_fees { Link Here
853
    $sth->execute($days) or die $dbh->errstr;
854
    $sth->execute($days) or die $dbh->errstr;
854
}
855
}
855
856
857
=head2 GetTotalFines
858
859
    my $total_fines_owed = GetTotalFines( $borrowernumber );
860
861
    Returns the total amount owed by the given borrower.
862
863
=cut
864
865
sub GetTotalFines {
866
    my ( $borrowernumber ) = @_;
867
    my $dbh = C4::Context->dbh();
868
    my $query = "SELECT SUM( amountoutstanding ) AS total FROM accountlines WHERE borrowernumber = ?";
869
    my $sth = $dbh->prepare( $query );
870
    $sth->execute( $borrowernumber );
871
    my $row = $sth->fetchrow_hashref();
872
    my $total = $row->{'total'};
873
    $total = $total || 0;
874
    return $total;
875
}
876
856
END { }    # module clean-up code here (global destructor)
877
END { }    # module clean-up code here (global destructor)
857
878
858
1;
879
1;
(-)a/C4/Overdues.pm (+2 lines)
Lines 52-57 BEGIN { Link Here
52
      &AmountNotify
52
      &AmountNotify
53
      &UpdateFine
53
      &UpdateFine
54
      &GetFine
54
      &GetFine
55
      &GetTotalFines
55
      &get_chargeable_units
56
      &get_chargeable_units
56
      &CheckItemNotify
57
      &CheckItemNotify
57
      &GetOverduesForBranch
58
      &GetOverduesForBranch
Lines 686-691 sub GetFine { Link Here
686
    return 0;
687
    return 0;
687
}
688
}
688
689
690
689
=head2 NumberNotifyId
691
=head2 NumberNotifyId
690
692
691
    (@notify) = &NumberNotifyId($borrowernumber);
693
    (@notify) = &NumberNotifyId($borrowernumber);
(-)a/C4/SIP/ILS/Patron.pm (-2 / +2 lines)
Lines 80-87 sub new { Link Here
80
        address         => $adr,
80
        address         => $adr,
81
        home_phone      => $kp->{phone},
81
        home_phone      => $kp->{phone},
82
        email_addr      => $kp->{email},
82
        email_addr      => $kp->{email},
83
        charge_ok       => ( !$debarred && !$expired && !$fine_blocked),
83
        charge_ok       => ( !$debarred && !$expired && !$fine_blocked && ( $fines_amount < C4::Context->preference('noissuescharge') ) ),
84
        renew_ok        => ( !$debarred && !$expired && !$fine_blocked),
84
        renew_ok        => ( !$debarred && !$expired && !$fine_blocked && ( $fines_amount < C4::Context->preference('OPACFineNoRenewals') ) ),
85
        recall_ok       => ( !$debarred && !$expired && !$fine_blocked),
85
        recall_ok       => ( !$debarred && !$expired && !$fine_blocked),
86
        hold_ok         => ( !$debarred && !$expired && !$fine_blocked),
86
        hold_ok         => ( !$debarred && !$expired && !$fine_blocked),
87
        card_lost       => ( $kp->{lost} || $kp->{gonenoaddress} || $flags->{LOST} ),
87
        card_lost       => ( $kp->{lost} || $kp->{gonenoaddress} || $flags->{LOST} ),
(-)a/C4/SIP/ILS/Transaction/Renew.pm (+8 lines)
Lines 33-38 sub do_renew_for { Link Here
33
    my $self = shift;
33
    my $self = shift;
34
    my $borrower = shift;
34
    my $borrower = shift;
35
    my ($renewokay,$renewerror) = CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber});
35
    my ($renewokay,$renewerror) = CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber});
36
36
    if ($renewokay) { # ok so far check charges
37
    if ($renewokay) { # ok so far check charges
37
        my ($fee, undef) = GetIssuingCharges($self->{item}->{itemnumber}, $self->{patron}->{borrowernumber});
38
        my ($fee, undef) = GetIssuingCharges($self->{item}->{itemnumber}, $self->{patron}->{borrowernumber});
38
        if ($fee > 0) {
39
        if ($fee > 0) {
Lines 44-49 sub do_renew_for { Link Here
44
        }
45
        }
45
46
46
    }
47
    }
48
49
    unless ( C4::Accounts::GetTotalFines($borrower->{borrowernumber}) < C4::Context->preference('OPACFineNoRenewals') ) {
50
        $renewokay = 0;
51
        $renewerror = 'fines_exceed_OPACFineNoRenewals'
52
    }
53
47
    if ($renewokay){
54
    if ($renewokay){
48
        my $issue = AddIssue( $borrower, $self->{item}->id, undef, 0 );
55
        my $issue = AddIssue( $borrower, $self->{item}->id, undef, 0 );
49
        $self->{due} = $self->duedatefromissue($issue, $self->{item}->{itemnumber});
56
        $self->{due} = $self->duedatefromissue($issue, $self->{item}->{itemnumber});
Lines 51-56 sub do_renew_for { Link Here
51
    } else {
58
    } else {
52
        $renewerror=~s/on_reserve/Item unavailable due to outstanding holds/;
59
        $renewerror=~s/on_reserve/Item unavailable due to outstanding holds/;
53
        $renewerror=~s/too_many/Item has reached maximum renewals/;
60
        $renewerror=~s/too_many/Item has reached maximum renewals/;
61
        $renewerror=~s/fines_exceed_OPACFineNoRenewals/Total fines owed exceeds amount that would allow renewal/;
54
        $self->screen_msg($renewerror);
62
        $self->screen_msg($renewerror);
55
        $self->renewal_ok(0);
63
        $self->renewal_ok(0);
56
    }
64
    }
(-)a/t/db_dependent/Accounts.t (-2 / +47 lines)
Lines 18-24 Link Here
18
18
19
use Modern::Perl;
19
use Modern::Perl;
20
20
21
use Test::More tests => 19;
21
use Test::More tests => 20;
22
use Test::MockModule;
22
use Test::MockModule;
23
use Test::Warn;
23
use Test::Warn;
24
24
Lines 357-360 subtest "makepartialpayment() tests" => sub { Link Here
357
    }
357
    }
358
};
358
};
359
359
360
subtest "GetTotalFines tests" => sub {
361
362
    plan tests => 1;
363
364
    my $categorycode =
365
      $builder->build( { source => 'Category' } )->{categorycode};
366
367
    my $borrower = $builder->build(
368
        {
369
            surname      => 'Hall',
370
            firstname    => 'Kyle',
371
            categorycode => $categorycode,
372
            branchcode   => $branchcode,
373
            source       => 'Borrower',
374
            value        => {
375
                categorycode => $categorycode,
376
                branchcode   => $branchcode,
377
            }
378
        }
379
    );
380
381
    my $accountline1 = $builder->build(
382
        {
383
            source => 'Accountline',
384
            value  => {
385
                borrowernumber    => $borrower->{borrowernumber},
386
                amountoutstanding => '1.00',
387
            }
388
        }
389
    );
390
391
    my $accountline2 = $builder->build(
392
        {
393
            source => 'Accountline',
394
            value  => {
395
                borrowernumber    => $borrower->{borrowernumber},
396
                amountoutstanding => '2.00',
397
            }
398
        }
399
    );
400
401
    is( GetTotalFines( $borrower->{borrowernumber} ), '3.000000', "GetTotalFines functions correctly" );
402
};
403
404
$dbh->rollback;
405
360
1;
406
1;
361
- 

Return to bug 7560