Bug 22589: Remove C4::Overdues::BorType

Test plan:
0) Apply patch
1) try to run affected scripts and ensure the amounts are corectly
calculated for different patron categories:
    installer/data/mysql/fix_unclosed_nonaccruing_fines_bug17135.pl
    misc/cronjobs/fines.pl
    misc/cronjobs/staticfines.pl

Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
Josef Moravec 2019-03-27 09:44:34 +00:00 committed by Martin Renvoize
parent 8986310a60
commit ce6229cd75
No known key found for this signature in database
GPG Key ID: 422B469130441A0F
4 changed files with 18 additions and 46 deletions

View File

@ -56,13 +56,6 @@ BEGIN {
&parse_overdues_letter
);
# subs to remove
push @EXPORT, qw(
&BorType
);
# check that an equivalent don't exist already before moving
# subs to move to Circulation.pm
push @EXPORT, qw(
&GetIssuesIteminfo
@ -618,31 +611,6 @@ sub UpdateFine {
}
}
=head2 BorType
$borrower = &BorType($borrowernumber);
Looks up a patron by borrower number.
C<$borrower> is a reference-to-hash whose keys are all of the fields
from the borrowers and categories tables of the Koha database. Thus,
C<$borrower> contains all information about both the borrower and
category they belong to.
=cut
sub BorType {
my ($borrowernumber) = @_;
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare(
"SELECT * from borrowers
LEFT JOIN categories ON borrowers.categorycode=categories.categorycode
WHERE borrowernumber=?"
);
$sth->execute($borrowernumber);
return $sth->fetchrow_hashref;
}
=head2 GetFine
$data->{'sum(amountoutstanding)'} = &GetFine($itemnum,$borrowernumber);

View File

@ -21,10 +21,11 @@
use Modern::Perl;
use C4::Context;
use C4::Overdues qw/CalcFine BorType/;
use C4::Overdues qw/CalcFine/;
use C4::Log qw/logaction/;
use Koha::DateUtils;
use Koha::Patrons;
use Getopt::Long;
my ($help, $verbose, $confirm, $log, $stdout_log);
@ -151,13 +152,13 @@ sub Bug_17135_fix {
my $overdue = $overdues->[0];
### last if $overdue->{itemlost}; ## arguable
my $borrower = BorType( $overdue->{borrowernumber} );
my $patron = Koha::Patron->find( $overdue->{borrowernumber} );
my $branchcode =
( $control eq 'ItemHomeLibrary' ) ? $overdue->{homebranch}
: ( $control eq 'PatronLibrary' ) ? $borrower->{branchcode}
: ( $control eq 'PatronLibrary' ) ? $patron->branchcode
: $overdue->{branchcode};
my ($amount) = CalcFine( $overdue, $borrower->{categorycode}, $branchcode, $datedue, $today );
my ($amount) = CalcFine( $overdue, $patron->categorycode, $branchcode, $datedue, $today );
### Warn("CalcFine() returned '$amount'");
last if ($amount > 0); ## accruing fine, skip closing

View File

@ -39,6 +39,7 @@ use File::Spec;
use Koha::Calendar;
use Koha::DateUtils;
use Koha::Patrons;
use C4::Log;
my $help;
@ -111,10 +112,10 @@ for my $overdue ( @{$overdues} ) {
"ERROR in Getoverdues : issues.borrowernumber IS NULL. Repair 'issues' table now! Skipping record.\n";
next;
}
my $borrower = BorType( $overdue->{borrowernumber} );
my $patron = Koha::Patrons->find( $overdue->{borrowernumber} );
my $branchcode =
( $control eq 'ItemHomeLibrary' ) ? $overdue->{homebranch}
: ( $control eq 'PatronLibrary' ) ? $borrower->{branchcode}
: ( $control eq 'PatronLibrary' ) ? $patron->branchcode
: $overdue->{branchcode};
# In final case, CircControl must be PickupLibrary. (branchcode comes from issues table here).
@ -129,7 +130,7 @@ for my $overdue ( @{$overdues} ) {
++$counted;
my ( $amount, $unitcounttotal, $unitcount ) =
CalcFine( $overdue, $borrower->{categorycode},
CalcFine( $overdue, $patron->categorycode,
$branchcode, $datedue, $today );
# Don't update the fine if today is a holiday.
@ -147,6 +148,7 @@ for my $overdue ( @{$overdues} ) {
);
}
}
my $borrower = $patron->unblessed;
if ($filename) {
my @cells;
push @cells,

View File

@ -48,6 +48,7 @@ use C4::Log;
use Getopt::Long;
use List::MoreUtils qw/none/;
use Koha::DateUtils;
use Koha::Patrons;
my $help = 0;
my $verbose = 0;
@ -157,16 +158,16 @@ for ( my $i = 0 ; $i < scalar(@$data) ; $i++ ) {
print STDERR "ERROR in Getoverdues line $i: issues.borrowernumber IS NULL. Repair 'issues' table now! Skipping record.\n";
next; # Note: this doesn't solve everything. After NULL borrowernumber, multiple issues w/ real borrowernumbers can pile up.
}
my $borrower = BorType( $data->[$i]->{'borrowernumber'} );
my $patron = Koha::Patrons->find( $data->[$i]->{'borrowernumber'} );
# Skipping borrowers that are not in @categories
$bigdebug and warn "Skipping borrower from category " . $borrower->{categorycode} if none { $borrower->{categorycode} eq $_ } @categories;
next if none { $borrower->{categorycode} eq $_ } @categories;
$bigdebug and warn "Skipping borrower from category " . $patron->categorycode if none { $patron->categorycode eq $_ } @categories;
next if none { $patron->categorycode eq $_ } @categories;
my $branchcode =
( $useborrowerlibrary ) ? $borrower->{branchcode}
( $useborrowerlibrary ) ? $patron->branchcode
: ( $control eq 'ItemHomeLibrary' ) ? $data->[$i]->{homebranch}
: ( $control eq 'PatronLibrary' ) ? $borrower->{branchcode}
: ( $control eq 'PatronLibrary' ) ? $patron->branchcode
: $data->[$i]->{branchcode};
# In final case, CircControl must be PickupLibrary. (branchcode comes from issues table here).
@ -190,14 +191,14 @@ for ( my $i = 0 ; $i < scalar(@$data) ; $i++ ) {
$overdueItemsCounted++;
my ( $amount, $unitcounttotal, $unitcount ) = CalcFine(
$data->[$i],
$borrower->{'categorycode'},
$patron->categorycode,
$branchcode,
$datedue,
$today,
);
# Reassign fine's amount if specified in command-line
$amount = $catamounts{$borrower->{'categorycode'}} if (defined $catamounts{$borrower->{'categorycode'}});
$amount = $catamounts{$patron->categorycode} if (defined $catamounts{$patron->categorycode});
# We check if there is already a fine for the given borrower
my $fine = GetFine(undef, $data->[$i]->{'borrowernumber'});