Bugzilla – Attachment 108592 Details for
Bug 25958
Allow LongOverdue cron to exclude specified lost values
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 25958: Allow LongOverdue cron to exclude specified lost values
Bug-25958-Allow-LongOverdue-cron-to-exclude-specif.patch (text/plain), 9.86 KB, created by
Andrew Fuerste-Henry
on 2020-08-19 12:23:07 UTC
(
hide
)
Description:
Bug 25958: Allow LongOverdue cron to exclude specified lost values
Filename:
MIME Type:
Creator:
Andrew Fuerste-Henry
Created:
2020-08-19 12:23:07 UTC
Size:
9.86 KB
patch
obsolete
>From 0fdf2610f82ebcea7718f83a1db5fb70bff38417 Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Tue, 28 Jul 2020 07:55:18 -0400 >Subject: [PATCH] Bug 25958: Allow LongOverdue cron to exclude specified lost > values > >When lost items are not marked as returned, they are still subject to >the long overdue cron, so an item that has already been marked Lost may >automatically roll to Long Overdue. In some cases, a library may not >want that lost value to change. This becomes especially important with >the introduction of Claims Returned, which uses a variety of lost. > >Test Plan: >1) Set up a long overdue item that would be moved to lost by longoverdue.pl >2) Run the cronjob with the new --skip-lost-value option >3) Note the item is not altered >4) Include that value in the new system preference DefaultLongOverdueSkipLostStatuses >5) Run the cronjob *without* the new option >6) Note the item is not altered >7) Run the cronjob again with the new command line option, but set it to >a different value so the item will be affected >8) Note the item is altered as it would have been before this patch was >applied > >Signed-off-by: Lisette Scheer <lisetteslatah@gmail.com> > >Signed-off-by: Rebecca Coert <rcoert@arlingtonva.us> >--- > installer/data/mysql/atomicupdate/bug_25958.sql | 9 +++ > installer/data/mysql/sysprefs.sql | 1 + > .../en/modules/admin/preferences/circulation.pref | 5 ++ > misc/cronjobs/longoverdue.pl | 66 ++++++++++++++-------- > 4 files changed, 58 insertions(+), 23 deletions(-) > create mode 100644 installer/data/mysql/atomicupdate/bug_25958.sql > >diff --git a/installer/data/mysql/atomicupdate/bug_25958.sql b/installer/data/mysql/atomicupdate/bug_25958.sql >new file mode 100644 >index 0000000000..1c6d1b5385 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_25958.sql >@@ -0,0 +1,9 @@ >+$DBversion = 'XXX'; # will be replaced by the RM >+if( CheckVersion( $DBversion ) ) { >+ $dbh->do(q{ >+ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES >+ ('DefaultLongOverdueSkipLostStatuses', '', NULL, 'Skip these lost statuses by default in longoverdue.pl', 'Free'), >+ }); >+ >+ NewVersion( $DBversion, 25958, "Allow LongOverdue cron to exclude specified lost values"); >+} >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index 0924a4271d..69fa648d5a 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -149,6 +149,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('DefaultClassificationSource','ddc',NULL,'Default classification scheme used by the collection. E.g., Dewey, LCC, etc.','ClassSources'), > ('DefaultCountryField008','','','Fill in the default country code for field 008 Range 15-17 of MARC21 - Place of publication, production, or execution. See <a href=\"http://www.loc.gov/marc/countries/countries_code.html\">MARC Code List for Countries</a>','Free'), > ('DefaultLanguageField008','','','Fill in the default language for field 008 Range 35-37 of MARC21 records (e.g. eng, nor, ger, see <a href=\"http://www.loc.gov/marc/languages/language_code.html\">MARC Code List for Languages</a>)','Free'), >+('DefaultLongOverdueSkipLostStatuses', '', NULL, 'Skip these lost statuses by default in longoverdue.pl', 'Free'), > ('DefaultLongOverdueChargeValue', '', NULL, "Charge a lost item to the borrower's account when the LOST value of the item changes to n.", 'integer'), > ('DefaultLongOverdueDays', '', NULL, "Set the LOST value of an item when the item has been overdue for more than n days.", 'integer'), > ('DefaultLongOverdueLostValue', '', NULL, "Set the LOST value of an item to n when the item has been overdue for more than defaultlongoverduedays days.", 'integer'), >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >index 1e2c4bf1ba..faa7018f06 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >@@ -421,6 +421,11 @@ Circulation: > - <br>(Used when the longoverdue.pl script is called without the --charge parameter) > - "<br><strong>NOTE:</strong> This system preference requires the <code>misc/cronjobs/longoverdue.pl</code> cronjob. Ask your system administrator to schedule it." > - >+ - When using the automatic item loss process, skip items with lost values matching any of >+ - pref: DefaultLongOverdueSkipLostStatuses >+ - <br>Leave this field empty if you don't want to skip any lost statuses >+ - <br>Set to a list of comma separated values, e.g. <em>5,6,7</em> >+ - > - "When issuing an item that has been marked as lost, " > - pref: IssueLostItem > choices: >diff --git a/misc/cronjobs/longoverdue.pl b/misc/cronjobs/longoverdue.pl >index 09955ade9c..d1bb9cb98f 100755 >--- a/misc/cronjobs/longoverdue.pl >+++ b/misc/cronjobs/longoverdue.pl >@@ -34,16 +34,18 @@ BEGIN { > eval { require "$FindBin::Bin/../kohalib.pl" }; > } > >-use Koha::Script -cron; >+use Getopt::Long; >+use Pod::Usage; >+use List::Util qw/ any /; >+ >+use C4::Circulation qw/LostItem MarkIssueReturned/; > use C4::Context; > use C4::Items; >-use C4::Circulation qw/LostItem MarkIssueReturned/; >-use Getopt::Long; > use C4::Log; >-use Pod::Usage; >-use Koha::Patrons; >-use Koha::Patron::Categories; > use Koha::ItemTypes; >+use Koha::Patron::Categories; >+use Koha::Patrons; >+use Koha::Script -cron; > > my $lost; # key=lost value, value=num days. > my ($charge, $verbose, $confirm, $quiet); >@@ -57,23 +59,25 @@ my $help=0; > my $man=0; > my $list_categories = 0; > my $list_itemtypes = 0; >+my @skip_lost_values; > > GetOptions( >- 'l|lost=s%' => \$lost, >- 'c|charge=s' => \$charge, >- 'confirm' => \$confirm, >- 'v|verbose' => \$verbose, >- 'quiet' => \$quiet, >- 'maxdays=s' => \$endrange, >- 'mark-returned' => \$mark_returned, >- 'h|help' => \$help, >- 'man|manual' => \$man, >- 'category=s' => $borrower_category, >- 'skip-category=s' => $skip_borrower_category, >- 'list-categories' => \$list_categories, >- 'itemtype=s' => $itemtype, >- 'skip-itemtype=s' => $skip_itemtype, >- 'list-itemtypes' => \$list_itemtypes, >+ 'l|lost=s%' => \$lost, >+ 'c|charge=s' => \$charge, >+ 'confirm' => \$confirm, >+ 'v|verbose' => \$verbose, >+ 'quiet' => \$quiet, >+ 'maxdays=s' => \$endrange, >+ 'mark-returned' => \$mark_returned, >+ 'h|help' => \$help, >+ 'man|manual' => \$man, >+ 'category=s' => $borrower_category, >+ 'skip-category=s' => $skip_borrower_category, >+ 'list-categories' => \$list_categories, >+ 'itemtype=s' => $itemtype, >+ 'skip-itemtype=s' => $skip_itemtype, >+ 'list-itemtypes' => \$list_itemtypes, >+ 'skip-lost-value=s' => \@skip_lost_values, > ); > > if ( $man ) { >@@ -98,7 +102,7 @@ if ( scalar @$borrower_category && scalar @$skip_borrower_category) { > > if ( scalar @$itemtype && scalar @$skip_itemtype) { > pod2usage( -verbose => 1, >- -message => "The options --itemtype and --skip-itemtype are mually exclusive.\n" >+ -message => "The options --itemtype and --skip-itemtype are mutually exclusive.\n" > . "Use one or the other.", > -exitval => 1 > ); >@@ -123,6 +127,7 @@ if ( $list_itemtypes ) { > longoverdue.pl --lost | -l DAYS=LOST_CODE [ --charge | -c CHARGE_CODE ] [ --verbose | -v ] [ --quiet ] > [ --maxdays MAX_DAYS ] [ --mark-returned ] [ --category BORROWER_CATEGORY ] ... > [ --skip-category BORROWER_CATEGORY ] ... >+ [ --skip-lost-value LOST_VALUE [ --skip-lost-value LOST_VALUE ] ] > [ --commit ] > > >@@ -198,6 +203,11 @@ Act on all available itemtype codes, except those listed. > This may be specified multiple times, to exclude multiple itemtypes. > May not be used with B<--itemtype> > >+=item B<--skip-lost-value> >+ >+Act on all available lost values, except those listed. >+This may be specified multiple times, to exclude multiple lost values. >+ > =item B<--list-itemtypes> > > List itemtypes available for use by B<--itemtype> or >@@ -246,6 +256,12 @@ near-term release, so this script is not intended to have a long lifetime. > # FIXME: do checks on --lost ranges to make sure the authorized values exist. > # FIXME: do checks on --lost ranges to make sure don't go past endrange. > # >+ >+unless ( scalar @skip_lost_values ) { >+ my $preference = C4::Context->preference( 'DefaultLongOverdueSkipLostStatuses' ); >+ @skip_lost_values = split( ',', $preference ); >+} >+ > if ( ! defined($lost) ) { > my $longoverdue_value = C4::Context->preference('DefaultLongOverdueLostValue'); > my $longoverdue_days = C4::Context->preference('DefaultLongOverdueDays'); >@@ -283,7 +299,7 @@ sub bounds { > # FIXME - This sql should be inside the API. > sub longoverdue_sth { > my $query = " >- SELECT items.itemnumber, borrowernumber, date_due >+ SELECT items.itemnumber, borrowernumber, date_due, itemlost > FROM issues, items > WHERE items.itemnumber = issues.itemnumber > AND DATE_SUB(CURDATE(), INTERVAL ? DAY) > date_due >@@ -373,6 +389,10 @@ foreach my $startrange (sort keys %$lost) { > $sth_items->execute($startrange, $endrange, $lostvalue); > $count=0; > ITEM: while (my $row=$sth_items->fetchrow_hashref) { >+ if ( @skip_lost_values ) { >+ next ITEM if any { $_ eq $row->{itemlost} } @skip_lost_values; >+ } >+ > if( $filter_borrower_categories ) { > my $category = uc Koha::Patrons->find( $row->{borrowernumber} )->categorycode(); > next ITEM unless ( $category_to_process{ $category } ); >-- >2.11.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 25958
:
107461
|
107538
|
108592
|
108933
|
108934
|
109028
|
109029
|
110635