Bug 20727: Move temporary_directory() to C4::Context
[koha.git] / misc / cronjobs / fines.pl
index d2b0062..9fa7b94 100755 (executable)
@@ -3,7 +3,7 @@
 #  This script loops through each overdue item, determines the fine,
 #  and updates the total amount of fines due by each user.  It relies on
 #  the existence of /tmp/fines, which is created by ???
-# Doesnt really rely on it, it relys on being able to write to /tmp/
+# Doesn't really rely on it, it relys on being able to write to /tmp/
 # It creates the fines file
 #
 #  This script is meant to be run nightly out of cron.
 #
 # This file is part of Koha.
 #
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
 #
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along
-# with Koha; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 use strict;
 use warnings;
@@ -38,6 +38,8 @@ use File::Spec;
 
 use Koha::Calendar;
 use Koha::DateUtils;
+use Koha::UploadedFile;
+use C4::Log;
 
 my $help;
 my $verbose;
@@ -53,10 +55,9 @@ GetOptions(
 my $usage = << 'ENDUSAGE';
 
 This script calculates and charges overdue fines
-to patron accounts.  If the Koha System Preference
-'finesMode' is set to 'production', the fines are charged
-to the patron accounts.  If set to 'test', the fines are
-calculated but not applied.
+to patron accounts.  The Koha system preference 'finesMode' controls
+whether the fines are calculated and charged to the patron accounts ("Calculate and charge");
+calculated and emailed to the admin but not applied ("Calculate (but only for mailing to the admin)"); or not calculated ("Don't calculate").
 
 This script has the following parameters :
     -h --help: this message
@@ -71,6 +72,8 @@ if ($help) {
     exit;
 }
 
+cronlogaction();
+
 my @borrower_fields =
   qw(cardnumber categorycode surname firstname email phone address citystate);
 my @item_fields  = qw(itemnumber barcode date_due);
@@ -96,6 +99,8 @@ if ($filename) {
 my $counted = 0;
 my $overdues = Getoverdues();
 for my $overdue ( @{$overdues} ) {
+    next if $overdue->{itemlost};
+
     if ( !defined $overdue->{borrowernumber} ) {
         carp
 "ERROR in Getoverdues : issues.borrowernumber IS NULL.  Repair 'issues' table now!  Skipping record.\n";
@@ -126,11 +131,16 @@ for my $overdue ( @{$overdues} ) {
     # Don't update the fine if today is a holiday.
     # This ensures that dropbox mode will remove the correct amount of fine.
     if ( $mode eq 'production' && !$is_holiday{$branchcode} ) {
-        if ( $amount > 0 ) {
+        if ( $amount && $amount > 0 ) {
             UpdateFine(
-                $overdue->{itemnumber},
-                $overdue->{borrowernumber},
-                $amount, $type, output_pref($datedue)
+                {
+                    issue_id       => $overdue->{issue_id},
+                    itemnumber     => $overdue->{itemnumber},
+                    borrowernumber => $overdue->{borrowernumber},
+                    amount         => $amount,
+                    type           => $type,
+                    due            => output_pref($datedue),
+                }
             );
         }
     }
@@ -174,7 +184,7 @@ sub set_holiday {
 sub get_filename {
     my $directory = shift;
     if ( !$directory ) {
-        $directory = File::Spec->tmpdir();
+        $directory = C4::Context::temporary_directory;
     }
     if ( !-d $directory ) {
         carp "Could not write to $directory ... does not exist!";