Bug 9656: Make logging to a file optional (for fines)
authorChris Cormack <chrisc@catalyst.net.nz>
Thu, 21 Feb 2013 09:10:48 +0000 (22:10 +1300)
committerJared Camins-Esakov <jcamins@cpbibliography.com>
Thu, 7 Mar 2013 14:27:01 +0000 (09:27 -0500)
To test:
1/ Before the patch run misc/cronjobs/fines.pl
   Notice that a file has been written to /tmp

2/ rm the file

3/ Apply the patch and run the script again
   Notice the file is not created

4/ run the script with -l
   Notice the file is created again

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>

Comment: Now it work as described. No errors.
Signed-off-by: Elliott Davis <elliott@bywatersolions.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>

misc/cronjobs/fines.pl

index 27bd061..3801450 100755 (executable)
@@ -42,10 +42,12 @@ use Koha::DateUtils;
 my $help;
 my $verbose;
 my $output_dir;
+my $log;
 
 GetOptions(
     'h|help'    => \$help,
     'v|verbose' => \$verbose,
+    'l|log'     => \$log,
     'o|out:s'   => \$output_dir,
 );
 my $usage = << 'ENDUSAGE';
@@ -58,6 +60,7 @@ calculated but not applied.
 
 This script has the following parameters :
     -h --help: this message
+    -l --log: log the output to a file
     -o --out:  ouput directory for logs (defaults to env or /tmp if !exist)
     -v --verbose
 
@@ -81,11 +84,13 @@ my %is_holiday;
 my $today = DateTime->now( time_zone => C4::Context->tz() );
 my $filename = get_filename($output_dir);
 
-open my $fh, '>>', $filename or croak "Cannot write file $filename: $!";
-print {$fh} join $delim, ( @borrower_fields, @item_fields, @other_fields );
-print {$fh} "\n";
-
-my $counted  = 0;
+my $fh;
+if ($log) {
+    open $fh, '>>', $filename or croak "Cannot write file $filename: $!";
+    print {$fh} join $delim, ( @borrower_fields, @item_fields, @other_fields );
+    print {$fh} "\n";
+}
+my $counted = 0;
 my $overdues = Getoverdues();
 for my $overdue ( @{$overdues} ) {
     if ( !defined $overdue->{borrowernumber} ) {
@@ -126,19 +131,29 @@ for my $overdue ( @{$overdues} ) {
             );
         }
     }
-    my @cells;
-    push @cells,
-      map { defined $borrower->{$_} ? $borrower->{$_} : q{} } @borrower_fields;
-    push @cells, map { $overdue->{$_} } @item_fields;
-    push @cells, $type, $unitcounttotal, $amount;
-    say {$fh} join $delim, @cells;
+    if ($log) {
+        my @cells;
+        push @cells,
+          map { defined $borrower->{$_} ? $borrower->{$_} : q{} }
+          @borrower_fields;
+        push @cells, map { $overdue->{$_} } @item_fields;
+        push @cells, $type, $unitcounttotal, $amount;
+        say {$fh} join $delim, @cells;
+    }
+}
+if ($log){
+    close $fh;
 }
-close $fh;
 
 if ($verbose) {
     my $overdue_items = @{$overdues};
     print <<"EOM";
-Fines assessment -- $today -- Saved to $filename
+Fines assessment -- $today
+EOM
+    if ($log) {
+        say "Saved to $filename";
+    }
+    print <<"EOM";
 Number of Overdue Items:
      counted $overdue_items
     reported $counted
@@ -165,7 +180,7 @@ sub get_filename {
     $name =~ s/\W//;
     $name .= join q{}, q{_}, $today->ymd(), '.log';
     $name = File::Spec->catfile( $directory, $name );
-    if ($verbose) {
+    if ($verbose && $log) {
         say "writing to $name";
     }
     return $name;