[Koha-patches] [PATCH] Add Getopt::Long to fines.pl, and option to specify log output directory.
Ryan Higgins
rch at liblime.com
Mon Jun 15 05:20:42 CEST 2009
---
misc/cronjobs/fines.pl | 58 ++++++++++++++++++++++++++++++++++++-----------
1 files changed, 44 insertions(+), 14 deletions(-)
diff --git a/misc/cronjobs/fines.pl b/misc/cronjobs/fines.pl
index de9e8cf..42498f3 100755
--- a/misc/cronjobs/fines.pl
+++ b/misc/cronjobs/fines.pl
@@ -44,10 +44,36 @@ use C4::Overdues;
use C4::Calendar qw(); # don't need any exports from Calendar
use C4::Biblio;
use C4::Debug; # supplying $debug and $cgi_debug
+use Getopt::Long;
+
+my $help = 0;
+my $verbose = 0;
+my $output_dir;
+
+GetOptions( 'h|help' => \$help,
+ 'v|verbose' => \$verbose,
+ 'o|out:s' => \$output_dir,
+ );
+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.
+
+This script has the following parameters :
+ -h --help: this message
+ -o --out: ouput directory for logs (defaults to env or /tmp if !exist)
+ -v --verbose
+
+ENDUSAGE
+
+die $usage if $help;
use vars qw(@borrower_fields @item_fields @other_fields);
use vars qw($fldir $libname $control $mode $delim $dbname $today $today_iso $today_days);
-use vars qw($filename $summary);
+use vars qw($filename);
CHECK {
@borrower_fields = qw(cardnumber categorycode surname firstname email phone address citystate);
@@ -59,14 +85,6 @@ CHECK {
$dbname = C4::Context->config('database');
$delim = "\t"; # ? C4::Context->preference('delimiter') || "\t";
- $today = C4::Dates->new();
- $today_iso = $today->output('iso');
- $today_days = Date_to_Days(split(/-/,$today_iso));
- $fldir = $ENV{TMPDIR} || "/tmp"; # TODO: use GetOpt
- $filename = $dbname;
- $filename =~ s/\W//;
- $filename = $fldir . '/'. $filename . '_' . $today_iso . ".log";
- $summary = 1; # TODO: use GetOpt
}
INIT {
@@ -77,13 +95,25 @@ INIT {
"Delimiter: '$delim'\n";
}
-open (FILE, ">$filename") or die "Cannot write file $filename: $!";
-print FILE join $delim, (@borrower_fields, @item_fields, @other_fields);
-print FILE "\n";
-
my $data = Getoverdues();
my $overdueItemsCounted = 0;
my %calendars = ();
+$today = C4::Dates->new();
+$today_iso = $today->output('iso');
+$today_days = Date_to_Days(split(/-/,$today_iso));
+if($output_dir){
+ $fldir = $output_dir if( -d $output_dir );
+} else {
+ $fldir = $ENV{TMPDIR} || "/tmp";
+ warn "Could not write to $output_dir ... does not exist!";
+}
+$filename = $dbname;
+$filename =~ s/\W//;
+$filename = $fldir . '/'. $filename . '_' . $today_iso . ".log";
+print "writing to $filename\n";
+open (FILE, ">$filename") or die "Cannot write file $filename: $!";
+print FILE join $delim, (@borrower_fields, @item_fields, @other_fields);
+print FILE "\n";
for (my $i=0; $i<scalar(@$data); $i++) {
my $datedue = C4::Dates->new($data->[$i]->{'date_due'},'iso');
@@ -125,7 +155,7 @@ for (my $i=0; $i<scalar(@$data); $i++) {
}
my $numOverdueItems = scalar(@$data);
-if ($summary) {
+if ($verbose) {
print <<EOM;
Fines assessment -- $today_iso -- Saved to $filename
Number of Overdue Items:
--
1.5.6.2
More information about the Koha-patches
mailing list