&changepassword
);
- #Delete data
- push @EXPORT, qw(
- &DelMember
- );
-
#Insert data
push @EXPORT, qw(
&AddMember
return $borrower;
} # sub SetAge
-=head2 DelMember
-
- DelMember($borrowernumber);
-
-This function remove directly a borrower whitout writing it on deleteborrower.
-+ Deletes reserves for the borrower
-
-=cut
-
-sub DelMember {
- my $dbh = C4::Context->dbh;
- my $borrowernumber = shift;
- #warn "in delmember with $borrowernumber";
- return unless $borrowernumber; # borrowernumber is mandatory.
- # Delete Patron's holds
- my @holds = Koha::Holds->search({ borrowernumber => $borrowernumber });
- $_->delete for @holds;
-
- my $query = "
- DELETE
- FROM borrowers
- WHERE borrowernumber = ?
- ";
- my $sth = $dbh->prepare($query);
- $sth->execute($borrowernumber);
- logaction("MEMBERS", "DELETE", $borrowernumber, "") if C4::Context->preference("BorrowersLog");
- return $sth->rows;
-}
-
=head2 HandleDelBorrower
HandleDelBorrower($borrower);
-When a member is deleted (DelMember in Members.pm), you should call me first.
+When a member is deleted, you should call me first.
This routine deletes/moves lists and entries for the deleted member/borrower.
Lists owned by the borrower are deleted, but entries from the borrower to
other lists are kept.
$sth->execute( $category_code, $delay );
my $cnt=0;
while ( my ($borrowernumber) = $sth->fetchrow_array() ) {
- DelMember($borrowernumber);
+ Koha::Patrons->find($borrowernumber)->delete;
$cnt++;
}
return $cnt;
use C4::Log;
use Koha::Database;
use Koha::DateUtils;
+use Koha::Holds;
use Koha::Issues;
use Koha::OldIssues;
use Koha::Patron::Categories;
=cut
+=head3 delete
+
+$patron->delete
+
+Delete a patron.
+
+=cut
+
+sub delete {
+ my ($self) = @_;
+
+ my $deleted;
+ $self->_result->result_source->schema->txn_do(
+ sub {
+ # Delete Patron's holds
+ # FIXME Should be $patron->get_holds
+ $_->delete for Koha::Holds->search( { borrowernumber => $self->borrowernumber } );
+
+ logaction( "MEMBERS", "DELETE", $self->borrowernumber, "" ) if C4::Context->preference("BorrowersLog");
+ $deleted = $self->SUPER::delete;
+ }
+ );
+ return $deleted;
+}
+
=head3 guarantor
Returns a Koha::Patron object for this patron's guarantor
my $patron = Koha::Patrons->find( $member );
$patron->move_to_deleted;
C4::Members::HandleDelBorrower($member);
- DelMember($member);
+ $patron->delete;
# TODO Tell the user everything went ok
print $input->redirect("/cgi-bin/koha/members/members-home.pl");
exit 0; # Exit without error
}
use C4::Context;
-use C4::Members qw/ DelMember /;
my $help;
my $confirm;
}
if ( $confirm ) {
- my $deleted = eval {
- Koha::Patrons->find( $borrowernumber )->move_to_deleted;
- };
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $deleted = eval { $patron->move_to_deleted; };
if ($@ or not $deleted) {
say "Failed to delete patron $borrowernumber, cannot move it" . ( $@ ? ": ($@)" : "" );
$dbh->rollback;
$dbh->rollback;
next;
}
- }
- eval { C4::Members::DelMember( $borrowernumber ) if $confirm; };
- if ($@) {
- say "Failed to delete patron $borrowernumber: $@)";
- $dbh->rollback;
- next;
+ eval { $patron->delete if $confirm; };
+ if ($@) {
+ say "Failed to delete patron $borrowernumber: $@)";
+ $dbh->rollback;
+ next;
+ }
}
$dbh->commit;
$deleted++;
}
use C4::Context;
-use C4::Members qw/ DelMember /;
my $help;
my $confirm;
use C4::Context;
+use Koha::Patrons;
+
my $dbh = C4::Context->dbh;
# Start transaction
$update = 0;
$desired_count_result = 0; # user auth problem
- C4::Members::DelMember( $borrower->{borrowernumber} );
+ Koha::Patrons->find( $borrower->{borrowernumber} )->delete;
reload_ldap_module();
is(
C4::Auth_with_ldap::checkpw_ldap( $dbh, 'hola', password => 'hey' ),
use Modern::Perl;
-use Test::More tests => 9;
+use Test::More tests => 10;
use Test::Warn;
-use C4::Circulation;
-
use C4::Members;
+use Koha::Holds;
use Koha::Patron;
use Koha::Patrons;
use Koha::Database;
->search( { borrowernumber => $patron->{borrowernumber} }, { result_class => 'DBIx::Class::ResultClass::HashRefInflator' } )
->next;
is_deeply( $deleted_patron, $patron, 'Koha::Patron->move_to_deleted should have correctly moved the patron to the deleted table' );
- C4::Members::DelMember( $patron->{borrowernumber} ); # Cleanup
+ $retrieved_patron->delete( $patron->{borrowernumber} ); # Cleanup
+};
+
+subtest "delete" => sub {
+ plan tests => 4;
+ t::lib::Mocks::mock_preference( 'BorrowersLog', 1 );
+ my $patron = $builder->build( { source => 'Borrower' } );
+ my $retrieved_patron = Koha::Patrons->find( $patron->{borrowernumber} );
+ my $hold = $builder->build(
+ { source => 'Reserve',
+ value => { borrowernumber => $patron->{borrowernumber} }
+ }
+ );
+ my $deleted = $retrieved_patron->delete;
+ is( $deleted, 1, 'Koha::Patron->delete should return 1 if the patron has been correctly deleted' );
+ is( Koha::Patrons->find( $patron->{borrowernumber} ), undef, 'Koha::Patron->delete should have deleted the patron');
+
+ is( Koha::Holds->search( { borrowernumber => $patron->{borrowernumber} } )->count, 0, q|Koha::Patron->delete should have deleted patron's holds| );
+
+ my $number_of_logs = $schema->resultset('ActionLog')->search( { module => 'MEMBERS', action => 'DELETE', object => $retrieved_patron->borrowernumber } )->count;
+ is( $number_of_logs, 1, 'With BorrowerLogs, Koha::Patron->delete should have logged' );
};
$retrieved_patron_1->delete;
use Modern::Perl;
-use Test::More tests => 82;
+use Test::More tests => 79;
use Test::MockModule;
use Data::Dumper;
use C4::Context;
$member = GetMemberDetails($member->{'borrowernumber'});
ok($member->{is_expired}, "GetMemberDetails() indicates that patron is expired");
-# Create a reserve for the patron
-$builder->build({
- source => 'Reserve',
- value => {
- borrowernumber => $member->{ borrowernumber }
- }
-});
-is( Koha::Holds->search({ borrowernumber => $member->{borrowernumber} })->count,
- 1, 'Hold created correctly' );
-DelMember($member->{borrowernumber});
-my $borrower = GetMember( cardnumber => $CARDNUMBER );
-is( $borrower, undef, 'DelMember should remove the patron' );
-is( Koha::Holds->search({ borrowernumber => $member->{borrowernumber} })->count,
- 0, 'Hold deleted correctly' );
-
# Check_Userid tests
%data = (
cardnumber => "123456789",
is( Check_Userid( 'tomasitoxxx', '' ), 1,
'non-existent userid -> unique (blank borrowernumber)' );
-$borrower = GetMember( borrowernumber => $borrowernumber );
+my $borrower = GetMember( borrowernumber => $borrowernumber );
is( $borrower->{dateofbirth}, undef, 'AddMember should undef dateofbirth if empty string is given');
is( $borrower->{debarred}, undef, 'AddMember should undef debarred if empty string is given');
isnt( $borrower->{dateexpiry}, '0000-00-00', 'AddMember should not set dateexpiry to 0000-00-00 if empty string is given');
for ( my $i = 0 ; $i < $totalDel ; $i++ ) {
$radio eq 'testrun' && last;
my $borrowernumber = $patrons_to_delete->[$i]->{'borrowernumber'};
- $radio eq 'trash' && Koha::Patrons->find($borrowernumber)->move_to_deleted;
+ my $patron = Koha::Patrons->find($borrowernumber);
+ $radio eq 'trash' && $patron->move_to_deleted;
C4::Members::HandleDelBorrower($borrowernumber);
- DelMember($borrowernumber);
+ $patron->delete;
}
$template->param(
do_delete => '1',