View | Details | Raw Unified | Return to bug 13413
Collapse All | Expand All

(-)a/misc/cronjobs/longoverdue.pl (-21 / +33 lines)
Lines 37-42 use C4::Context; Link Here
37
use C4::Items;
37
use C4::Items;
38
use C4::Circulation qw/LostItem/;
38
use C4::Circulation qw/LostItem/;
39
use Getopt::Long;
39
use Getopt::Long;
40
use Koha::Log qw(:log set_default_logger);
40
41
41
my  $lost;  #  key=lost value,  value=num days.
42
my  $lost;  #  key=lost value,  value=num days.
42
my ($charge, $verbose, $confirm, $quiet);
43
my ($charge, $verbose, $confirm, $quiet);
Lines 53-58 GetOptions( Link Here
53
    'mark-returned' => \$mark_returned,
54
    'mark-returned' => \$mark_returned,
54
);
55
);
55
56
57
my $log_level = $verbose ? 'debug' : 'info';
58
my %loggers;
59
if ($quiet) {
60
    $loggers{File}   = {min_level => $log_level, filename => 'longoverdue.log'};
61
} else {
62
    $loggers{Stdout} = {min_level => $log_level, };
63
}
64
set_default_logger( %loggers );
65
66
56
my $usage = << 'ENDUSAGE';
67
my $usage = << 'ENDUSAGE';
57
longoverdue.pl : This cron script set lost values on overdue items and optionally sets charges the patron's account
68
longoverdue.pl : This cron script set lost values on overdue items and optionally sets charges the patron's account
58
for the item's replacement price.  It is designed to be run as a nightly job.  The command line options that globally
69
for the item's replacement price.  It is designed to be run as a nightly job.  The command line options that globally
Lines 126-132 if ( ! defined($charge) ) { Link Here
126
}
137
}
127
unless ($confirm) {
138
unless ($confirm) {
128
    $verbose = 1;     # If you're not running it for real, then the whole point is the print output.
139
    $verbose = 1;     # If you're not running it for real, then the whole point is the print output.
129
    print "### TEST MODE -- NO ACTIONS TAKEN ###\n";
140
    log_info { "### TEST MODE -- NO ACTIONS TAKEN ###" };
130
}
141
}
131
142
132
# In my opinion, this line is safe SQL to have outside the API. --atz
143
# In my opinion, this line is safe SQL to have outside the API. --atz
Lines 168-181 foreach my $startrange (sort keys %$lost) { Link Here
168
    if( my $lostvalue = $lost->{$startrange} ) {
179
    if( my $lostvalue = $lost->{$startrange} ) {
169
        my ($date1) = bounds($startrange);
180
        my ($date1) = bounds($startrange);
170
        my ($date2) = bounds(  $endrange);
181
        my ($date2) = bounds(  $endrange);
171
        # print "\nRange ", ++$i, "\nDue $startrange - $endrange days ago ($date2 to $date1), lost => $lostvalue\n" if($verbose);
182
        #log_debug { "\nRange ", ++$i, "\nDue $startrange - $endrange days ago ($date2 to $date1), lost => $lostvalue" };
172
        $verbose and 
183
        log_debug {
173
            printf "\nRange %s\nDue %3s - %3s days ago (%s to %s), lost => %s\n", ++$i,
184
            sprintf "\nRange %s\nDue %3s - %3s days ago (%s to %s), lost => %s",
174
            $startrange, $endrange, $date2, $date1, $lostvalue;
185
                ++$i, $startrange, $endrange, $date2, $date1, $lostvalue;
186
        };
175
        $sth_items->execute($startrange, $endrange, $lostvalue);
187
        $sth_items->execute($startrange, $endrange, $lostvalue);
176
        $count=0;
188
        $count=0;
177
        while (my $row=$sth_items->fetchrow_hashref) {
189
        while (my $row=$sth_items->fetchrow_hashref) {
178
            printf ("Due %s: item %5s from borrower %5s to lost: %s\n", $row->{date_due}, $row->{itemnumber}, $row->{borrowernumber}, $lostvalue) if($verbose);
190
            log_debug {
191
                sprintf "Due %s: item %5s from borrower %5s to lost: %s",
192
                    $row->{date_due}, $row->{itemnumber}, $row->{borrowernumber}, $lostvalue;
193
            };
179
            if($confirm) {
194
            if($confirm) {
180
                ModItem({ itemlost => $lostvalue }, $row->{'biblionumber'}, $row->{'itemnumber'});
195
                ModItem({ itemlost => $lostvalue }, $row->{'biblionumber'}, $row->{'itemnumber'});
181
                LostItem($row->{'itemnumber'}, $mark_returned) if( $charge && $charge eq $lostvalue);
196
                LostItem($row->{'itemnumber'}, $mark_returned) if( $charge && $charge eq $lostvalue);
Lines 196-215 foreach my $startrange (sort keys %$lost) { Link Here
196
    $endrange = $startrange;
211
    $endrange = $startrange;
197
}
212
}
198
213
199
sub summarize ($$) {
214
log_info {
200
    my $arg = shift;    # ref to array
201
    my $got_items = shift || 0;     # print "count" line for items
202
    my @report = @$arg or return undef;
203
    my $i = 0;
215
    my $i = 0;
204
    for my $range (@report) {
216
    join "",
205
        printf "\nRange %s\nDue %3s - %3s days ago (%s to %s), lost => %s\n", ++$i,
217
        "\n### LONGOVERDUE SUMMARY ###",
206
            map {$range->{$_}} qw(startrange endrange date2 date1 lostvalue);
218
        map (
207
        $got_items and printf "  %4s items\n", $range->{count};
219
            sprintf (
208
    }
220
                "\nRange %s\nDue %3s - %3s days ago (%s to %s), lost => %s\n  %4s items\n",
221
                ++$i, @$_{qw(startrange endrange date2 date1 lostvalue count)}
222
            ),
223
            @report
224
        ),
225
        "\nTOTAL: $total items\n"
226
    ;
209
}
227
}
210
228
211
if (!$quiet){
212
    print "\n### LONGOVERDUE SUMMARY ###";
213
    summarize (\@report, 1);
214
    print "\nTOTAL: $total items\n";
215
}
216
- 

Return to bug 13413