|
Lines 1-5
Link Here
|
| 1 |
#!/usr/bin/perl |
1 |
#!/usr/bin/perl |
| 2 |
|
2 |
|
|
|
3 |
# Copyright 2016 Jacek Ablewicz |
| 4 |
# |
| 3 |
# This file is part of Koha. |
5 |
# This file is part of Koha. |
| 4 |
# |
6 |
# |
| 5 |
# Koha is free software; you can redistribute it and/or modify it |
7 |
# Koha is free software; you can redistribute it and/or modify it |
|
Lines 97-106
sub Bug_17135_fix {
Link Here
|
| 97 |
## which does not require any correction |
99 |
## which does not require any correction |
| 98 |
next if ($fine->{description} =~ /$due_qr/); |
100 |
next if ($fine->{description} =~ /$due_qr/); |
| 99 |
|
101 |
|
| 100 |
{ |
102 |
if( !$old_date_pattern ) { |
| 101 |
## for extracting old due date from fine description |
103 |
## for extracting old due date from fine description |
| 102 |
## not used for fixing anything, logging/debug purposes only |
104 |
## not used for fixing anything, logging/debug purposes only |
| 103 |
last if $old_date_pattern; |
|
|
| 104 |
$old_date_pattern = $due; |
105 |
$old_date_pattern = $due; |
| 105 |
$old_date_pattern =~ s/[A-Za-z]/\[A-Za-z\]/g; |
106 |
$old_date_pattern =~ s/[A-Za-z]/\[A-Za-z\]/g; |
| 106 |
$old_date_pattern =~ s/[0-9]/\\d/g; |
107 |
$old_date_pattern =~ s/[0-9]/\\d/g; |
|
Lines 174-188
sub Bug_17135_fix {
Link Here
|
| 174 |
}; |
175 |
}; |
| 175 |
} |
176 |
} |
| 176 |
|
177 |
|
| 177 |
if ($verbose) { |
178 |
if( $verbose ) { |
| 178 |
Warn("Fine records with mismatched old vs current due dates: $different_dates_cnt"); |
179 |
Warn( "Fine records with mismatched old vs current due dates: $different_dates_cnt" ); |
| 179 |
Warn("Non-accruing accountlines FU records (item not due): ".$not_due_not_accruning_cnt); |
180 |
Warn( "Non-accruing accountlines FU records (item not due): ".$not_due_not_accruning_cnt ); |
| 180 |
Warn("Non-accruing accountlines FU records (item due): ".$due_not_accruning_cnt); |
181 |
Warn( "Non-accruing accountlines FU records (item due): ".$due_not_accruning_cnt ); |
| 181 |
} |
182 |
} |
| 182 |
|
183 |
|
| 183 |
if (@$forfixing > 0) { |
|
|
| 184 |
Warn("Dry run (test only mode), skipping ".scalar(@$forfixing)." database changes.") unless ($confirm); |
| 185 |
} |
| 186 |
my $updated_cnt = 0; |
184 |
my $updated_cnt = 0; |
| 187 |
my $update_sql = "UPDATE accountlines SET accounttype = 'F' WHERE accounttype = 'FU' AND accountlines_id = ? LIMIT 1"; |
185 |
my $update_sql = "UPDATE accountlines SET accounttype = 'F' WHERE accounttype = 'FU' AND accountlines_id = ? LIMIT 1"; |
| 188 |
for my $fine (@$forfixing) { |
186 |
for my $fine (@$forfixing) { |
|
Lines 197-204
sub Bug_17135_fix {
Link Here
|
| 197 |
$updated_cnt += $rows_affected; |
195 |
$updated_cnt += $rows_affected; |
| 198 |
logaction("FINES", "FU", $fine->{borrowernumber}, $logentry) if ($log); |
196 |
logaction("FINES", "FU", $fine->{borrowernumber}, $logentry) if ($log); |
| 199 |
} |
197 |
} |
| 200 |
if (@$forfixing > 0 && $confirm && $mode eq 'production') { |
198 |
|
| 201 |
Warn("Database update done, $updated_cnt".((@$forfixing == $updated_cnt)? "": "/".scalar(@$forfixing))." fine records closed successfully."); |
199 |
# Regardless of verbose, we report at least a number here |
|
|
200 |
if( @$forfixing > 0 ) { |
| 201 |
if( $confirm && $mode eq 'production') { |
| 202 |
Warn( "Database update done, $updated_cnt". |
| 203 |
( @$forfixing == $updated_cnt? "": ( "/". @$forfixing )). |
| 204 |
" fine records closed successfully." ); |
| 205 |
} else { |
| 206 |
Warn( "Dry run (test only mode), skipping ". @$forfixing. |
| 207 |
" fine records." ); |
| 208 |
} |
| 209 |
} else { |
| 210 |
Warn( "No fine records needed to be fixed" ); |
| 202 |
} |
211 |
} |
| 203 |
} |
212 |
} |
| 204 |
|
213 |
|
| 205 |
- |
|
|