From db9d5bac21dd3a88ced36f16ba84bb4e6101c8a9 Mon Sep 17 00:00:00 2001 From: Josef Moravec Date: Wed, 27 Mar 2019 09:44:34 +0000 Subject: [PATCH] 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 Signed-off-by: Katrin Fischer --- C4/Overdues.pm | 32 ---------------------- .../fix_unclosed_nonaccruing_fines_bug17135.pl | 9 +++--- misc/cronjobs/fines.pl | 8 ++++-- misc/cronjobs/staticfines.pl | 15 +++++----- 4 files changed, 18 insertions(+), 46 deletions(-) diff --git a/C4/Overdues.pm b/C4/Overdues.pm index 58b0f6d8c2..2f1212ba0c 100644 --- a/C4/Overdues.pm +++ b/C4/Overdues.pm @@ -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); diff --git a/installer/data/mysql/fix_unclosed_nonaccruing_fines_bug17135.pl b/installer/data/mysql/fix_unclosed_nonaccruing_fines_bug17135.pl index b7f1efd088..d29b436ea2 100755 --- a/installer/data/mysql/fix_unclosed_nonaccruing_fines_bug17135.pl +++ b/installer/data/mysql/fix_unclosed_nonaccruing_fines_bug17135.pl @@ -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 diff --git a/misc/cronjobs/fines.pl b/misc/cronjobs/fines.pl index aa9738a01d..0537f9758a 100755 --- a/misc/cronjobs/fines.pl +++ b/misc/cronjobs/fines.pl @@ -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, diff --git a/misc/cronjobs/staticfines.pl b/misc/cronjobs/staticfines.pl index dac2f33de6..1e7d287702 100755 --- a/misc/cronjobs/staticfines.pl +++ b/misc/cronjobs/staticfines.pl @@ -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'}); -- 2.11.0