|
Lines 45-50
my $endrange = 366;
Link Here
|
| 45 |
my $mark_returned; |
45 |
my $mark_returned; |
| 46 |
my $borrower_category = []; |
46 |
my $borrower_category = []; |
| 47 |
my $skip_borrower_category = []; |
47 |
my $skip_borrower_category = []; |
|
|
48 |
my @branches; |
| 49 |
my @skip_branches; |
| 48 |
my $itemtype = []; |
50 |
my $itemtype = []; |
| 49 |
my $skip_itemtype = []; |
51 |
my $skip_itemtype = []; |
| 50 |
my $help=0; |
52 |
my $help=0; |
|
Lines 68-73
GetOptions(
Link Here
|
| 68 |
'category=s' => $borrower_category, |
70 |
'category=s' => $borrower_category, |
| 69 |
'skip-category=s' => $skip_borrower_category, |
71 |
'skip-category=s' => $skip_borrower_category, |
| 70 |
'list-categories' => \$list_categories, |
72 |
'list-categories' => \$list_categories, |
|
|
73 |
'branch=s' => \@branches, |
| 74 |
'skip-branch=s' => \@skip_branches, |
| 71 |
'itemtype=s' => $itemtype, |
75 |
'itemtype=s' => $itemtype, |
| 72 |
'skip-itemtype=s' => $skip_itemtype, |
76 |
'skip-itemtype=s' => $skip_itemtype, |
| 73 |
'list-itemtypes' => \$list_itemtypes, |
77 |
'list-itemtypes' => \$list_itemtypes, |
|
Lines 94-99
if ( scalar @$borrower_category && scalar @$skip_borrower_category) {
Link Here
|
| 94 |
); |
98 |
); |
| 95 |
} |
99 |
} |
| 96 |
|
100 |
|
|
|
101 |
if ( scalar @branches && scalar @skip_branches ) { |
| 102 |
pod2usage( |
| 103 |
-verbose => 1, |
| 104 |
-message => "The options --branch and --skip-branch are mutually exclusive.\n" . "Use one or the other.", |
| 105 |
-exitval => 1 |
| 106 |
); |
| 107 |
} |
| 108 |
|
| 97 |
if ( scalar @$itemtype && scalar @$skip_itemtype) { |
109 |
if ( scalar @$itemtype && scalar @$skip_itemtype) { |
| 98 |
pod2usage( -verbose => 1, |
110 |
pod2usage( -verbose => 1, |
| 99 |
-message => "The options --itemtype and --skip-itemtype are mutually exclusive.\n" |
111 |
-message => "The options --itemtype and --skip-itemtype are mutually exclusive.\n" |
|
Lines 121-126
if ( $list_itemtypes ) {
Link Here
|
| 121 |
longoverdue.pl --lost | -l DAYS=LOST_CODE [ --charge | -c CHARGE_CODE ] [ --verbose | -v ] [ --quiet ] |
133 |
longoverdue.pl --lost | -l DAYS=LOST_CODE [ --charge | -c CHARGE_CODE ] [ --verbose | -v ] [ --quiet ] |
| 122 |
[ --maxdays MAX_DAYS ] [ --mark-returned ] [ --category BORROWER_CATEGORY ] ... |
134 |
[ --maxdays MAX_DAYS ] [ --mark-returned ] [ --category BORROWER_CATEGORY ] ... |
| 123 |
[ --skip-category BORROWER_CATEGORY ] ... |
135 |
[ --skip-category BORROWER_CATEGORY ] ... |
|
|
136 |
[ --branch BRANCH_CODE ] [ --skip-branch BRANCH_CODE ] ... |
| 124 |
[ --skip-lost-value LOST_VALUE [ --skip-lost-value LOST_VALUE ] ] |
137 |
[ --skip-lost-value LOST_VALUE [ --skip-lost-value LOST_VALUE ] ] |
| 125 |
[ --commit ] |
138 |
[ --commit ] |
| 126 |
|
139 |
|
|
Lines 185-190
May not be used with B<--category>
Link Here
|
| 185 |
List borrower categories available for use by B<--category> or |
198 |
List borrower categories available for use by B<--category> or |
| 186 |
B<--skip-category>, and exit. |
199 |
B<--skip-category>, and exit. |
| 187 |
|
200 |
|
|
|
201 |
=item B<--branch> |
| 202 |
|
| 203 |
Act on the listed branch codes. Exclude all others. This may be specified multiple times to include multiple branches. Which branches are selected follows the CircControl system preference. |
| 204 |
May not be used with B<--skip-branch> |
| 205 |
|
| 206 |
=item B<--skip-branch> |
| 207 |
|
| 208 |
Act on all branch codes except the ones listed. This may be specified multiple times to exclude multiple branches. Which branches are excluded follows the CircControl system preference. |
| 209 |
May not be used with B<--branch> |
| 210 |
|
| 188 |
=item B<--itemtype> |
211 |
=item B<--itemtype> |
| 189 |
|
212 |
|
| 190 |
Act on the listed itemtype code. |
213 |
Act on the listed itemtype code. |
|
Lines 315-320
sub longoverdue_sth {
Link Here
|
| 315 |
} |
338 |
} |
| 316 |
|
339 |
|
| 317 |
my $dbh = C4::Context->dbh; |
340 |
my $dbh = C4::Context->dbh; |
|
|
341 |
my $circ_control_pref = C4::Context->preference('CircControl'); |
| 318 |
|
342 |
|
| 319 |
my @available_categories = Koha::Patron::Categories->search()->get_column('categorycode'); |
343 |
my @available_categories = Koha::Patron::Categories->search()->get_column('categorycode'); |
| 320 |
$borrower_category = [ map { uc $_ } @$borrower_category ]; |
344 |
$borrower_category = [ map { uc $_ } @$borrower_category ]; |
|
Lines 344-349
if ( @$skip_borrower_category ) {
Link Here
|
| 344 |
|
368 |
|
| 345 |
my $filter_borrower_categories = ( scalar @$borrower_category || scalar @$skip_borrower_category ); |
369 |
my $filter_borrower_categories = ( scalar @$borrower_category || scalar @$skip_borrower_category ); |
| 346 |
|
370 |
|
|
|
371 |
my @available_branches = Koha::Libraries->search()->get_column('branchcode'); |
| 372 |
my %branches_to_process; |
| 373 |
for my $lib (@branches) { |
| 374 |
unless ( grep { $_ eq $lib } @available_branches ) { |
| 375 |
pod2usage( |
| 376 |
'-exitval' => 1, |
| 377 |
'-message' => "The library $lib does not exist in the database", |
| 378 |
); |
| 379 |
} |
| 380 |
$branches_to_process{$lib} = 1; |
| 381 |
} |
| 382 |
if (@skip_branches) { |
| 383 |
for my $lib (@skip_branches) { |
| 384 |
unless ( grep { $_ eq $lib } @available_branches ) { |
| 385 |
pod2usage( |
| 386 |
'-exitval' => 1, |
| 387 |
'-message' => "The library $lib does not exist in the database", |
| 388 |
); |
| 389 |
} |
| 390 |
} |
| 391 |
%branches_to_process = map { $_ => 1 } @available_branches; |
| 392 |
%branches_to_process = ( %branches_to_process, map { $_ => 0 } @skip_branches ); |
| 393 |
} |
| 394 |
|
| 395 |
my $filter_branches = ( scalar @branches || scalar @skip_branches ); |
| 396 |
|
| 347 |
my @available_itemtypes = Koha::ItemTypes->search()->get_column('itemtype'); |
397 |
my @available_itemtypes = Koha::ItemTypes->search()->get_column('itemtype'); |
| 348 |
$itemtype = [ map { uc $_ } @$itemtype ]; |
398 |
$itemtype = [ map { uc $_ } @$itemtype ]; |
| 349 |
$skip_itemtype = [ map { uc $_} @$skip_itemtype ]; |
399 |
$skip_itemtype = [ map { uc $_} @$skip_itemtype ]; |
|
Lines 397-402
foreach my $startrange (sort keys %$lost) {
Link Here
|
| 397 |
my $category = uc Koha::Patrons->find( $row->{borrowernumber} )->categorycode(); |
447 |
my $category = uc Koha::Patrons->find( $row->{borrowernumber} )->categorycode(); |
| 398 |
next ITEM unless ( $category_to_process{ $category } ); |
448 |
next ITEM unless ( $category_to_process{ $category } ); |
| 399 |
} |
449 |
} |
|
|
450 |
if ($filter_branches) { |
| 451 |
my $lib; |
| 452 |
for ($circ_control_pref) { |
| 453 |
if ( $_ eq 'PatronLibrary' ) { |
| 454 |
$lib = Koha::Patrons->find( $row->{borrowernumber} )->branchcode(); |
| 455 |
} elsif ( $_ eq 'PickupLibrary' ) { |
| 456 |
$lib = C4::Context->userenv->{'branch'}; |
| 457 |
} else { # ( $_ eq 'ItemHomeLibrary' ) |
| 458 |
$lib = Koha::Items->find( $row->{itemnumber} )->homebranch(); |
| 459 |
} |
| 460 |
} |
| 461 |
next ITEM unless ( $branches_to_process{$lib} ); |
| 462 |
} |
| 400 |
if ($filter_itemtypes) { |
463 |
if ($filter_itemtypes) { |
| 401 |
my $it = uc Koha::Items->find( $row->{itemnumber} )->effective_itemtype(); |
464 |
my $it = uc Koha::Items->find( $row->{itemnumber} )->effective_itemtype(); |
| 402 |
next ITEM unless ( $itemtype_to_process{$it} ); |
465 |
next ITEM unless ( $itemtype_to_process{$it} ); |
| 403 |
- |
|
|