Bugzilla – Attachment 89304 Details for
Bug 20436
Add ability to specify itemtypes for longoverdue.pl
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 20436: Add ability to specify itemtypes for longoverdue.pl
Bug-20436-Add-ability-to-specify-itemtypes-for-lon.patch (text/plain), 6.22 KB, created by
Marcel de Rooy
on 2019-05-03 10:09:30 UTC
(
hide
)
Description:
Bug 20436: Add ability to specify itemtypes for longoverdue.pl
Filename:
MIME Type:
Creator:
Marcel de Rooy
Created:
2019-05-03 10:09:30 UTC
Size:
6.22 KB
patch
obsolete
>From 422d4d605543e0d58aefcfca206e3d3fc9ea2375 Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Fri, 16 Mar 2018 11:15:12 +0000 >Subject: [PATCH] Bug 20436: Add ability to specify itemtypes for > longoverdue.pl >Content-Type: text/plain; charset=utf-8 > >It would be nice if we could filter long overdues based on itemtype the same way we can already filter based on borrower category code. > >Test Plan: >1) Set up a number of overdues of various itemtypes >2) Run longoverdue.pl with --list-itemtypes to show itemtypes >3) Run longoverdue.pl with --itemtype to verify it only operates on that itemtype >4) Run longoverdue.pl with multiple --itemtype switches, verify it only operates on those itemtypes >5) Run longoverdue.pl with --skip-itemtype to verify it does not operate on that itemtype >6) Run longoverdue.pl with multiple --skip-itemtype switches, verify that it does not operate on those itemtypes > >Signed-off-by: Jesse Maseto <jesse@bywatersolution.com> > >Signed-off-by: Liz Rea <wizzyrea@gmail.com> > >Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> >--- > misc/cronjobs/longoverdue.pl | 78 +++++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 74 insertions(+), 4 deletions(-) > >diff --git a/misc/cronjobs/longoverdue.pl b/misc/cronjobs/longoverdue.pl >index e1e91b65ae..a4d6507e5a 100755 >--- a/misc/cronjobs/longoverdue.pl >+++ b/misc/cronjobs/longoverdue.pl >@@ -49,23 +49,29 @@ my $endrange = 366; > my $mark_returned; > my $borrower_category = []; > my $skip_borrower_category = []; >+my $itemtype = []; >+my $skip_itemtype = []; > my $help=0; > my $man=0; > my $list_categories = 0; >+my $list_itemtypes = 0; > > GetOptions( >- 'lost=s%' => \$lost, >+ 'l|lost=s%' => \$lost, > 'c|charge=s' => \$charge, > 'confirm' => \$confirm, >- 'v|verbose' => \$verbose, >+ 'v|verbose' => \$verbose, > 'quiet' => \$quiet, > 'maxdays=s' => \$endrange, > 'mark-returned' => \$mark_returned, >- 'h|help' => \$help, >+ '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, > ); > > if ( $man ) { >@@ -88,9 +94,23 @@ 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" >+ . "Use one or the other.", >+ -exitval => 1 >+ ); >+} >+ > if ( $list_categories ) { > my @categories = sort map { uc $_->[0] } @{ C4::Context->dbh->selectall_arrayref(q|SELECT categorycode FROM categories|) }; >- print "\nBorrowrer Categories: " . join( " ", @categories ) . "\n\n"; >+ print "\nBorrower Categories: " . join( " ", @categories ) . "\n\n"; >+ exit 0; >+} >+ >+if ( $list_itemtypes ) { >+ my @itemtypes = sort map { uc $_->[0] } @{ C4::Context->dbh->selectall_arrayref(q|SELECT itemtype FROM itemtypes|) }; >+ print "\nItemtypes: " . join( " ", @itemtypes ) . "\n\n"; > exit 0; > } > >@@ -163,6 +183,23 @@ May not be used with B<--category> > List borrower categories available for use by B<--category> or > B<--skip-category>, and exit. > >+=item B<--itemtype> >+ >+Act on the listed itemtype code. >+Exclude all others. This may be specified multiple times to include multiple itemtypes. >+May not be used with B<--skip-itemtype> >+ >+=item B<--skip-itemtype> >+ >+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<--list-itemtypes> >+ >+List itemtypes available for use by B<--itemtype> or >+B<--skip-itemtype>, and exit. >+ > =item B<--help | -h> > > Display short help message an exit. >@@ -255,6 +292,7 @@ sub longoverdue_sth { > } > > my $dbh = C4::Context->dbh; >+ > my @available_categories = map { uc $_->[0] } @{ $dbh->selectall_arrayref(q|SELECT categorycode FROM categories|) }; > $borrower_category = [ map { uc $_ } @$borrower_category ]; > $skip_borrower_category = [ map { uc $_} @$skip_borrower_category ]; >@@ -283,6 +321,34 @@ if ( @$skip_borrower_category ) { > > my $filter_borrower_categories = ( scalar @$borrower_category || scalar @$skip_borrower_category ); > >+my @available_itemtypes = map { uc $_->[0] } @{ $dbh->selectall_arrayref(q|SELECT itemtype FROM itemtypes|) }; >+$itemtype = [ map { uc $_ } @$itemtype ]; >+$skip_itemtype = [ map { uc $_} @$skip_itemtype ]; >+my %itemtype_to_process; >+for my $it ( @$itemtype ) { >+ unless ( grep { /^$it$/ } @available_itemtypes ) { >+ pod2usage( >+ '-exitval' => 1, >+ '-message' => "The itemtype $it does not exist in the database", >+ ); >+ } >+ $itemtype_to_process{$it} = 1; >+} >+if ( @$skip_itemtype ) { >+ for my $it ( @$skip_itemtype ) { >+ unless ( grep { /^$it$/ } @available_itemtypes ) { >+ pod2usage( >+ '-exitval' => 1, >+ '-message' => "The itemtype $it does not exist in the database", >+ ); >+ } >+ } >+ %itemtype_to_process = map { $_ => 1 } @available_itemtypes; >+ %itemtype_to_process = ( %itemtype_to_process, map { $_ => 0 } @$skip_itemtype ); >+} >+ >+my $filter_itemtypes = ( scalar @$itemtype || scalar @$skip_itemtype ); >+ > my $count; > my @report; > my $total = 0; >@@ -308,6 +374,10 @@ foreach my $startrange (sort keys %$lost) { > my $category = uc Koha::Patrons->find( $row->{borrowernumber} )->categorycode(); > next ITEM unless ( $category_to_process{ $category } ); > } >+ if ($filter_itemtypes) { >+ my $it = uc Koha::Items->find( $row->{itemnumber} )->effective_itemtype(); >+ next ITEM unless ( $itemtype_to_process{$it} ); >+ } > printf ("Due %s: item %5s from borrower %5s to lost: %s\n", $row->{date_due}, $row->{itemnumber}, $row->{borrowernumber}, $lostvalue) if($verbose); > if($confirm) { > ModItem({ itemlost => $lostvalue }, $row->{'biblionumber'}, $row->{'itemnumber'}); >-- >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 20436
:
73026
|
80984
|
81024
|
86983
|
86984
| 89304 |
89305
|
89962
|
90040