Bugzilla – Attachment 83662 Details for
Bug 22052
DeleteExpiredOpacRegistrations should skip bad borrowers
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 22052: Refactor DeleteExpiredOpacReigstrations
Bug-22052-Refactor-DeleteExpiredOpacReigstrations.patch (text/plain), 5.71 KB, created by
Charles Farmer
on 2019-01-04 20:34:00 UTC
(
hide
)
Description:
Bug 22052: Refactor DeleteExpiredOpacReigstrations
Filename:
MIME Type:
Creator:
Charles Farmer
Created:
2019-01-04 20:34:00 UTC
Size:
5.71 KB
patch
obsolete
>From d90a897fb5d88406789fbc175f8b3ee080f42aa1 Mon Sep 17 00:00:00 2001 >From: Nick Clemens <nick@bywatersolutions.com> >Date: Fri, 28 Dec 2018 18:48:25 +0000 >Subject: [PATCH] Bug 22052: Refactor DeleteExpiredOpacReigstrations > >This patch changes the sub to use Koha::Objects and updates the tests. >Previously the sub would die on borrowers with checkouts and would >delete borrowers if they had fines > >To test: > 1 - prove -v t/db_dependent/ > 2 - Set your selfreg preferences: > PatronSelfRegistration: Allow > PatronSelfRegistrationDefaultCategory: SELFREG (or of your choice) > PatronSelfRegistrationExpireTemporaryAccountsDelay: 30 > 3 - Register a patron into SELFREG or how you set above > 4 - Set their date enrolled to two months ago > 5 - Checkout an item to the patron > 6 - Issue a fine to that patron > 7 - perl misc/cronjobs/cleanup_database.pl --del-exp-selfreg -v > 8 - The job should die with an error > 9 - Check in the item >10 - run the corn again - patron is deleted, oops >11 - Apply patch >12 - Create another patron in the same way >13 - Checkout and fine the patron >14 - run the cron >15 - they are not deleted, and no error >16 - checkin the item >17 - run the cron >18 - they are not deleted and no error >19 - clear the fine >20 - run the cron >21 - patron is deleted, huzzah > >Signed-off-by: Charles Farmer <charles.farmer@inLibro.com> >--- > C4/Members.pm | 40 ++++++++++++++++++++-------------------- > 1 file changed, 20 insertions(+), 20 deletions(-) > >diff --git a/C4/Members.pm b/C4/Members.pm >index 81afcad..87ea1e7 100644 >--- a/C4/Members.pm >+++ b/C4/Members.pm >@@ -84,7 +84,7 @@ use C4::Members; > > =head1 DESCRIPTION > >-This module contains routines for adding, modifying and deleting members/patrons/borrowers >+This module contains routines for adding, modifying and deleting members/patrons/borrowers > > =head1 FUNCTIONS > >@@ -126,7 +126,7 @@ The following will be set where applicable: > $flags->{WAITING}->{message} Message -- deprecated > $flags->{WAITING}->{itemlist} ref-to-array: list of available items > >-=over >+=over > > =item C<$flags-E<gt>{ODUES}-E<gt>{itemlist}> is a reference-to-array listing the > overdue items. Its elements are references-to-hash, each describing an >@@ -142,7 +142,7 @@ fields from the reserves table of the Koha database. > > =back > >-All the "message" fields that include language generated in this function are deprecated, >+All the "message" fields that include language generated in this function are deprecated, > because such strings belong properly in the display layer. > > The "message" field that comes from the DB is OK. >@@ -281,14 +281,14 @@ sub GetAllIssues { > my $dbh = C4::Context->dbh; > my $query = > 'SELECT *, issues.timestamp as issuestimestamp, issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp >- FROM issues >+ FROM issues > LEFT JOIN items on items.itemnumber=issues.itemnumber > LEFT JOIN biblio ON items.biblionumber=biblio.biblionumber > LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber >- WHERE borrowernumber=? >+ WHERE borrowernumber=? > UNION ALL >- SELECT *, old_issues.timestamp as issuestimestamp, old_issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp >- FROM old_issues >+ SELECT *, old_issues.timestamp as issuestimestamp, old_issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp >+ FROM old_issues > LEFT JOIN items on items.itemnumber=old_issues.itemnumber > LEFT JOIN biblio ON items.biblionumber=biblio.biblionumber > LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber >@@ -385,11 +385,11 @@ sub GetBorrowersToExpunge { > my $filtercategory = $params->{'category_code'}; > my $filterbranch = $params->{'branchcode'} || > ((C4::Context->preference('IndependentBranches') >- && C4::Context->userenv >+ && C4::Context->userenv > && !C4::Context->IsSuperLibrarian() > && C4::Context->userenv->{branch}) > ? C4::Context->userenv->{branch} >- : ""); >+ : ""); > my $filterpatronlist = $params->{'patron_list_id'}; > > my $dbh = C4::Context->dbh; >@@ -447,13 +447,13 @@ sub GetBorrowersToExpunge { > warn $query if $debug; > > my $sth = $dbh->prepare($query); >- if (scalar(@query_params)>0){ >+ if (scalar(@query_params)>0){ > $sth->execute(@query_params); > } > else { > $sth->execute; > } >- >+ > my @results; > while ( my $data = $sth->fetchrow_hashref ) { > push @results, $data; >@@ -630,18 +630,18 @@ sub DeleteExpiredOpacRegistrations { > my $category_code = C4::Context->preference('PatronSelfRegistrationDefaultCategory'); > > return 0 if not $category_code or not defined $delay or $delay eq q||; >+ my $date_enrolled = dt_from_string(); >+ $date_enrolled->subtract( days => $delay ); > >- my $query = qq| >-SELECT borrowernumber >-FROM borrowers >-WHERE categorycode = ? AND DATEDIFF( NOW(), dateenrolled ) > ? |; >+ my $registrations_to_del = Koha::Patrons->search({ >+ dateenrolled => {'<=' => $date_enrolled->ymd}, >+ categorycode => $category_code, >+ }); > >- my $dbh = C4::Context->dbh; >- my $sth = $dbh->prepare($query); >- $sth->execute( $category_code, $delay ); > my $cnt=0; >- while ( my ($borrowernumber) = $sth->fetchrow_array() ) { >- Koha::Patrons->find($borrowernumber)->delete; >+ while ( my $registration = $registrations_to_del->next() ) { >+ next if $registration->checkouts->count || $registration->account->balance; >+ $registration->delete; > $cnt++; > } > return $cnt; >-- >2.7.4
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 22052
:
83545
|
83546
|
83660
|
83661
|
83662
|
83678
|
83679