This method centralizes the validation logic for allowing/denying patron deletion. Should be used instead of having the logic in the controller.
Created attachment 128799 [details] [review] Bug 29742: Make deletemem.pl use Koha::Patron->safe_to_delete This patch makes the deletemem.pl controller script reuse the safe_to_delete method introduced by bug 29741. This way, it will use the same logic as the rest of the Koha pieces, like the API. To test: 1. Verify this conditions make deletion be denied: - Has a guarantee - Is the system-defined anonymous patron - Has outstanding debits - Has items checked out 2. Verify that this conditions display relevant information when trying to delete the patron: - Has outstanding credit - Has holds placed - Has pending suggestions 3. Apply this patch 4. Repeat 1 and 2 => SUCCESS: Things didn't change! [*] 5. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Hi Tomás. After applying the patch (plus a flush_memcached + restart_all) I get this error when deleting a patron with no conditions that should stop the deletion: Operation "eq": no method found, left argument in overloaded package Koha::Result::Boolean, right argument has no overloaded magic at /kohadevbox/koha/members/deletemem.pl line 86 in (eval) at /kohadevbox/koha/members/deletemem.pl line 86 83: 84: my $safe_to_delete = $patron->safe_to_delete; 85: 86: if ( $safe_to_delete eq 'is_anonymous_patron' ) { 87: print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member&error=CANT_DELETE_ANONYMOUS_PATRON"); 88: exit 0; # Exit without error 89: } in CGI::Compile::ROOT::kohadevbox_koha_members_deletemem_2epl::__ANON__ at /kohadevbox/koha/members/deletemem.pl line 2 1: #!/usr/bin/perl 2: 3: #script to delete items 4: #written 2/5/00 5: #by chris@katipo.co.nz Show function arguments in CGI::Compile::ROOT::kohadevbox_koha_members_deletemem_2epl::deletemem_2epl at /usr/share/perl5/CGI/Compile.pm line 151 148: # this is necessary for MSWin32 149: my $orig_warn = $SIG{__WARN__} || sub { warn(@_) }; 150: local $SIG{__WARN__} = sub { $orig_warn->(@_) unless $_[0] =~ /^No such signal/ }; 151: $code->($self, $data, $path, $dir, \@args) 152: }; 153: }; 154: in CGI::Emulate::PSGI::__ANON__ at /usr/share/perl5/CGI/Emulate/PSGI.pm line 30 27: local *STDOUT = $stdout; 28: local *STDERR = $env->{'psgi.errors'}; 29: 30: $code->(); 31: } 32: } 33: Show function arguments in Plack::App::WrapCGI::call at /usr/share/perl5/Plack/App/WrapCGI.pm line 95 92: 93: sub call { 94: my($self, $env) = @_; 95: $self->_app->($env); 96: } 97: 98: 1; Show function arguments