Bug 22589: Remove C4::Overdues::BorType
authorJosef Moravec <josef.moravec@gmail.com>
Wed, 27 Mar 2019 09:44:34 +0000 (09:44 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 24 Mar 2020 10:57:55 +0000 (10:57 +0000)
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>

C4/Overdues.pm
installer/data/mysql/fix_unclosed_nonaccruing_fines_bug17135.pl
misc/cronjobs/fines.pl
misc/cronjobs/staticfines.pl

index 58b0f6d..2f1212b 100644 (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);
index b7f1efd..d29b436 100755 (executable)
 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
 
index aa9738a..0537f97 100755 (executable)
@@ -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,
index dac2f33..1e7d287 100755 (executable)
@@ -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'});