@@ -, +, @@
---
.../prog/en/modules/patron_lists/lists.tt | 20 ++++++
.../prog/en/modules/tools/cleanborrowers.tt | 30 ++++++--
tools/cleanborrowers.pl | 68 ++++++++++++++------
3 files changed, 89 insertions(+), 29 deletions(-)
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/patron_lists/lists.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/patron_lists/lists.tt
@@ -44,6 +44,12 @@
|
|
|
+ [% IF CAN_user_tools_edit_patrons %]
+ |
+ [% END %]
+ [% IF CAN_user_tools_delete_anonymize_patrons %]
+ |
+ [% END %]
@@ -67,6 +73,20 @@
Delete
+ [% IF CAN_user_tools_edit_patrons %]
+
+
+ Edit patrons
+
+ |
+ [% END %]
+ [% IF CAN_user_tools_delete_anonymize_patrons %]
+
+
+ Delete patrons
+
+ |
+ [% END %]
[% END %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt
@@ -11,7 +11,7 @@
*/
function checkForm(form) {
if((form.checkbox[0].checked)){
- if ( (!form.date1.value) && (!form.borrower_dateexpiry.value) && (!form.borrower_categorycode.value) ){
+ if ( (!form.date1.value) && (!form.borrower_dateexpiry.value) && (!form.borrower_categorycode.value) && (!form.patron_list_id.value)){
alert(_("Please enter at least one criterion for deletion!"));
return false;
}
@@ -87,8 +87,21 @@
[% END %]
+ [% IF patron_lists %]
+
+
+
+ If using a patron list, no other criteria will be used.
+
+ [% END %]
+
--- a/tools/cleanborrowers.pl
+++ a/tools/cleanborrowers.pl
@@ -41,7 +41,9 @@ use C4::Members; # GetBorrowersWhoHavexxxBorrowed.
use C4::Circulation; # AnonymiseIssueHistory.
use C4::VirtualShelves (); #no import
use Koha::DateUtils qw( dt_from_string output_pref );
+use Koha::Database;
use Date::Calc qw/Today Add_Delta_YM/;
+use Koha::List::Patron;
my $cgi = new CGI;
@@ -64,6 +66,7 @@ my $borrower_dateexpiry =
$params->{borrower_dateexpiry}
? dt_from_string $params->{borrower_dateexpiry}
: undef;
+my $patron_list_id = $params->{patron_list_id};
my $borrower_categorycode = $params->{'borrower_categorycode'} || q{};
@@ -81,28 +84,35 @@ if ( $step == 2 ) {
my %checkboxes = map { $_ => 1 } split /\0/, $params->{'checkbox'};
- my $totalDel;
my $membersToDelete;
- if ( $checkboxes{borrower} ) {
- $membersToDelete = GetBorrowersToExpunge(
- _get_selection_params($not_borrowered_since, $borrower_dateexpiry, $borrower_categorycode)
- );
- _skip_borrowers_with_nonzero_balance( $membersToDelete );
- $totalDel = scalar @$membersToDelete;
-
+ if ($patron_list_id) {
+ my @patron_list_patrons =
+ Koha::Database->new()->schema()->resultset('PatronListPatron')
+ ->search( { patron_list_id => $patron_list_id } );
+ $membersToDelete = \@patron_list_patrons;
}
- my $totalAno;
+ else {
+ if ( $checkboxes{borrower} ) {
+ $membersToDelete = GetBorrowersToExpunge(
+ _get_selection_params(
+ $not_borrowered_since,
+ $borrower_dateexpiry,
+ $borrower_categorycode,
+ )
+ );
+ }
+ }
+ _skip_borrowers_with_nonzero_balance($membersToDelete);
+
my $membersToAnonymize;
if ( $checkboxes{issue} ) {
$membersToAnonymize = GetBorrowersWithIssuesHistoryOlderThan($last_issue_date);
- $totalAno = scalar @$membersToAnonymize;
}
$template->param(
- totalToDelete => $totalDel,
- totalToAnonymize => $totalAno,
memberstodelete_list => $membersToDelete,
memberstoanonymize_list => $membersToAnonymize,
+ patron_list_id => $patron_list_id,
);
}
@@ -114,18 +124,32 @@ elsif ( $step == 3 ) {
# delete members
if ($do_delete) {
- my $membersToDelete = GetBorrowersToExpunge(
- _get_selection_params($not_borrowered_since, $borrower_dateexpiry, $borrower_categorycode)
- );
- _skip_borrowers_with_nonzero_balance( $membersToDelete );
+ my $membersToDelete;
+ if ($patron_list_id) {
+ my @patron_list_patrons =
+ Koha::Database->new()->schema()->resultset('PatronListPatron')
+ ->search( { patron_list_id => $patron_list_id } );
+ $membersToDelete = \@patron_list_patrons;
+ }
+ else {
+ $membersToDelete = GetBorrowersToExpunge(
+ _get_selection_params(
+ $not_borrowered_since, $borrower_dateexpiry,
+ $borrower_categorycode
+ )
+ );
+ }
+ _skip_borrowers_with_nonzero_balance($membersToDelete);
+
$totalDel = scalar(@$membersToDelete);
$radio = $params->{'radio'};
for ( my $i = 0 ; $i < $totalDel ; $i++ ) {
$radio eq 'testrun' && last;
- my $borrowernumber = $membersToDelete->[$i]->{'borrowernumber'};
- $radio eq 'trash' && MoveMemberToDeleted( $borrowernumber );
- C4::VirtualShelves::HandleDelBorrower( $borrowernumber );
- DelMember( $borrowernumber );
+ my $borrowernumber = $membersToDelete->[$i]->{'borrowernumber'}
+ || $membersToDelete->[$i]->get_column('borrowernumber');
+ $radio eq 'trash' && MoveMemberToDeleted($borrowernumber);
+ C4::VirtualShelves::HandleDelBorrower($borrowernumber);
+ DelMember($borrowernumber);
}
$template->param(
do_delete => '1',
@@ -146,6 +170,8 @@ elsif ( $step == 3 ) {
trash => ( $radio eq "trash" ) ? (1) : (0),
testrun => ( $radio eq "testrun" ) ? 1: 0,
);
+} else { # $step == 1
+ $template->param( patron_lists => [ GetPatronLists() ] );
}
$template->param(
@@ -164,7 +190,7 @@ sub _skip_borrowers_with_nonzero_balance {
my $borrowers = shift;
my $balance;
@$borrowers = map {
- (undef, undef, $balance) = GetMemberIssuesAndFines( $_->{borrowernumber} );
+ (undef, undef, $balance) = GetMemberIssuesAndFines( $_->{borrowernumber} || $_->get_column('borrowernumber') );
($balance != 0) ? (): ($_);
} @$borrowers;
}
--