Bug 17135: [QA Follow-up] Changes as to reporting
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Fri, 9 Sep 2016 08:53:48 +0000 (10:53 +0200)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 16 Sep 2016 10:47:03 +0000 (10:47 +0000)
We should at least report some grand totals when fixing fine records.
This patch also includes some cosmetic whitespace swapping.
Turned one last into an if statement.

Added a copyright statement too.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
installer/data/mysql/fix_unclosed_nonaccruing_fines_bug17135.pl

index b44d6f2..b7f1efd 100755 (executable)
@@ -1,5 +1,7 @@
 #!/usr/bin/perl
 
+# Copyright 2016 Jacek Ablewicz
+#
 # This file is part of Koha.
 #
 # Koha is free software; you can redistribute it and/or modify it
@@ -97,10 +99,9 @@ sub Bug_17135_fix {
         ## which does not require any correction
         next if ($fine->{description} =~ /$due_qr/);
 
-        {
+        if( !$old_date_pattern ) {
             ## for extracting old due date from fine description
             ## not used for fixing anything, logging/debug purposes only
-            last if $old_date_pattern;
             $old_date_pattern = $due;
             $old_date_pattern =~ s/[A-Za-z]/\[A-Za-z\]/g;
             $old_date_pattern =~ s/[0-9]/\\d/g;
@@ -174,15 +175,12 @@ sub Bug_17135_fix {
         };
     }
 
-    if ($verbose) {
-        Warn("Fine records with mismatched old vs current due dates: $different_dates_cnt");
-        Warn("Non-accruing accountlines FU records (item not due): ".$not_due_not_accruning_cnt);
-        Warn("Non-accruing accountlines FU records (item due): ".$due_not_accruning_cnt);
+    if( $verbose ) {
+        Warn( "Fine records with mismatched old vs current due dates: $different_dates_cnt" );
+        Warn( "Non-accruing accountlines FU records (item not due): ".$not_due_not_accruning_cnt );
+        Warn( "Non-accruing accountlines FU records (item due): ".$due_not_accruning_cnt );
     }
 
-    if (@$forfixing > 0) {
-        Warn("Dry run (test only mode), skipping ".scalar(@$forfixing)." database changes.") unless ($confirm);
-    }
     my $updated_cnt = 0;
     my $update_sql = "UPDATE accountlines SET accounttype = 'F' WHERE accounttype = 'FU' AND accountlines_id = ? LIMIT 1";
     for my $fine (@$forfixing) {
@@ -197,8 +195,19 @@ sub Bug_17135_fix {
         $updated_cnt += $rows_affected;
         logaction("FINES", "FU", $fine->{borrowernumber}, $logentry) if ($log);
     }
-    if (@$forfixing > 0 && $confirm && $mode eq 'production') {
-        Warn("Database update done, $updated_cnt".((@$forfixing == $updated_cnt)? "": "/".scalar(@$forfixing))." fine records closed successfully.");
+
+    # Regardless of verbose, we report at least a number here
+    if( @$forfixing > 0 ) {
+        if( $confirm && $mode eq 'production') {
+            Warn( "Database update done, $updated_cnt".
+                ( @$forfixing == $updated_cnt? "": ( "/". @$forfixing )).
+                " fine records closed successfully." );
+        } else {
+            Warn( "Dry run (test only mode), skipping ". @$forfixing.
+                " fine records." );
+        }
+    } else {
+        Warn( "No fine records needed to be fixed" );
     }
 }