#Modify data
push @EXPORT, qw(
- &ModMember
&changepassword
);
return ( \%flags );
}
-
-=head2 ModMember
-
- my $success = ModMember(borrowernumber => $borrowernumber,
- [ field => value ]... );
-
-Modify borrower's data. All date fields should ALREADY be in ISO format.
-
-return :
-true on success, or false on failure
-
-=cut
-
-sub ModMember {
- my (%data) = @_;
-
- # trim whitespace from data which has some non-whitespace in it.
- foreach my $field_name (keys(%data)) {
- if ( defined $data{$field_name} && $data{$field_name} =~ /\S/ ) {
- $data{$field_name} =~ s/^\s*|\s*$//g;
- }
- }
-
- # test to know if you must update or not the borrower password
- if (exists $data{password}) {
- if ($data{password} eq '****' or $data{password} eq '') {
- delete $data{password};
- } else {
- if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) {
- # Update the hashed PIN in borrower_sync.hashed_pin, before Koha hashes it
- Koha::NorwegianPatronDB::NLUpdateHashedPIN( $data{'borrowernumber'}, $data{password} );
- }
- $data{password} = hash_password($data{password});
- }
- }
-
- my $old_categorycode = Koha::Patrons->find( $data{borrowernumber} )->categorycode;
-
- # get only the columns of a borrower
- my $schema = Koha::Database->new()->schema;
- my @columns = $schema->source('Borrower')->columns;
- my $new_borrower = { map { join(' ', @columns) =~ /$_/ ? ( $_ => $data{$_} ) : () } keys(%data) };
-
- $new_borrower->{dateofbirth} ||= undef if exists $new_borrower->{dateofbirth};
- $new_borrower->{dateenrolled} ||= undef if exists $new_borrower->{dateenrolled};
- $new_borrower->{dateexpiry} ||= undef if exists $new_borrower->{dateexpiry};
- $new_borrower->{debarred} ||= undef if exists $new_borrower->{debarred};
- $new_borrower->{sms_provider_id} ||= undef if exists $new_borrower->{sms_provider_id};
- $new_borrower->{guarantorid} ||= undef if exists $new_borrower->{guarantorid};
-
- my $patron = Koha::Patrons->find( $new_borrower->{borrowernumber} );
-
- my $borrowers_log = C4::Context->preference("BorrowersLog");
- if ( $borrowers_log && $patron->cardnumber ne $new_borrower->{cardnumber} )
- {
- logaction(
- "MEMBERS",
- "MODIFY",
- $data{'borrowernumber'},
- to_json(
- {
- cardnumber_replaced => {
- previous_cardnumber => $patron->cardnumber,
- new_cardnumber => $new_borrower->{cardnumber},
- }
- },
- { utf8 => 1, pretty => 1 }
- )
- );
- }
-
- delete $new_borrower->{userid} if exists $new_borrower->{userid} and not $new_borrower->{userid};
-
- my $execute_success = $patron->store if $patron->set($new_borrower);
-
- if ($execute_success) { # only proceed if the update was a success
- # If the patron changes to a category with enrollment fee, we add a fee
- if ( $data{categorycode} and $data{categorycode} ne $old_categorycode ) {
- if ( C4::Context->preference('FeeOnChangePatronCategory') ) {
- $patron->add_enrolment_fee_if_needed;
- }
- }
-
- # If NorwegianPatronDBEnable is enabled, we set syncstatus to something that a
- # cronjob will use for syncing with NL
- if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) {
- my $borrowersync = Koha::Database->new->schema->resultset('BorrowerSync')->find({
- 'synctype' => 'norwegianpatrondb',
- 'borrowernumber' => $data{'borrowernumber'}
- });
- # Do not set to "edited" if syncstatus is "new". We need to sync as new before
- # we can sync as changed. And the "new sync" will pick up all changes since
- # the patron was created anyway.
- if ( $borrowersync->syncstatus ne 'new' && $borrowersync->syncstatus ne 'delete' ) {
- $borrowersync->update( { 'syncstatus' => 'edited' } );
- }
- # Set the value of 'sync'
- $borrowersync->update( { 'sync' => $data{'sync'} } );
- # Try to do the live sync
- Koha::NorwegianPatronDB::NLSync({ 'borrowernumber' => $data{'borrowernumber'} });
- }
-
- logaction("MEMBERS", "MODIFY", $data{'borrowernumber'}, "UPDATE (executed w/ arg: $data{'borrowernumber'})") if $borrowers_log;
- }
- return $execute_success;
-}
-
=head2 GetAllIssues
$issues = &GetAllIssues($borrowernumber, $sortkey, $limit);
use Carp;
use List::MoreUtils qw( uniq );
+use JSON qw( to_json );
use Module::Load::Conditional qw( can_load );
use Text::Unaccent qw( unac_string );
# We are in a transaction but the table is not locked
$self->fixup_cardnumber;
}
- unless ( $self->in_storage ) { #AddMember
- unless( $self->category->in_storage ) {
- Koha::Exceptions::Object::FKConstraint->throw(
- broken_fk => 'categorycode',
- value => $self->categorycode,
- );
- }
+ unless( $self->category->in_storage ) {
+ Koha::Exceptions::Object::FKConstraint->throw(
+ broken_fk => 'categorycode',
+ value => $self->categorycode,
+ );
+ }
+
+ $self->trim_whitespaces;
- $self->trim_whitespaces;
+ # We don't want invalid dates in the db (mysql has a bad habit of inserting 0000-00-00)
+ $self->dateofbirth(undef) unless $self->dateofbirth;
+ $self->debarred(undef) unless $self->debarred;
+
+ # Set default values if not set
+ $self->sms_provider_id(undef) unless $self->sms_provider_id;
+ $self->guarantorid(undef) unless $self->guarantorid;
+
+ unless ( $self->in_storage ) { #AddMember
# Generate a valid userid/login if needed
$self->userid($self->generate_userid)
? Koha::AuthUtils::hash_password( $self->password )
: '!' );
- # We don't want invalid dates in the db (mysql has a bad habit of inserting 0000-00-00)
- $self->dateofbirth(undef) unless $self->dateofbirth;
- $self->debarred(undef) unless $self->debarred;
-
- # Set default values if not set
- $self->sms_provider_id(undef) unless $self->sms_provider_id;
- $self->guarantorid(undef) unless $self->guarantorid;
-
$self->borrowernumber(undef);
$self = $self->SUPER::store;
if C4::Context->preference("BorrowersLog");
}
else { #ModMember
+ # test to know if you must update or not the borrower password
+ if ( defined $self->password ) {
+ if ( $self->password eq '****' or $self->password eq '' ) {
+ $self->password(undef);
+ } else {
+ if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) {
+ # Update the hashed PIN in borrower_sync.hashed_pin, before Koha hashes it
+ Koha::NorwegianPatronDB::NLUpdateHashedPIN( $self->borrowernumber, $self->password );
+ }
+ $self->password(Koha::AuthUtils::hash_password($self->password));
+ }
+ }
+
+ # Come from ModMember, but should not be possible (?)
+ $self->dateenrolled(undef) unless $self->dateenrolled;
+ $self->dateexpiry(undef) unless $self->dateexpiry;
+
+ if ( C4::Context->preference('FeeOnChangePatronCategory')
+ and $self->category->categorycode ne
+ $self->get_from_storage->category->categorycode )
+ {
+ $self->add_enrolment_fee_if_needed;
+ }
+
+ # If NorwegianPatronDBEnable is enabled, we set syncstatus to something that a
+ # cronjob will use for syncing with NL
+ if ( C4::Context->preference('NorwegianPatronDBEnable')
+ && C4::Context->preference('NorwegianPatronDBEnable') == 1 )
+ {
+ my $borrowersync = Koha::Database->new->schema->resultset('BorrowerSync')->find({
+ 'synctype' => 'norwegianpatrondb',
+ 'borrowernumber' => $self->borrowernumber,
+ });
+ # Do not set to "edited" if syncstatus is "new". We need to sync as new before
+ # we can sync as changed. And the "new sync" will pick up all changes since
+ # the patron was created anyway.
+ if ( $borrowersync->syncstatus ne 'new' && $borrowersync->syncstatus ne 'delete' ) {
+ $borrowersync->update( { 'syncstatus' => 'edited' } );
+ }
+ # Set the value of 'sync'
+ # FIXME THIS IS BROKEN # $borrowersync->update( { 'sync' => $data{'sync'} } );
+
+ # Try to do the live sync
+ Koha::NorwegianPatronDB::NLSync({ 'borrowernumber' => $self->borrowernumber });
+ }
+
+ my $borrowers_log = C4::Context->preference("BorrowersLog");
+ my $previous_cardnumber = $self->get_from_storage->cardnumber;
+ if ( $borrowers_log && $previous_cardnumber ne $self->cardnumber )
+ {
+ logaction(
+ "MEMBERS",
+ "MODIFY",
+ $self->borrowernumber,
+ to_json(
+ {
+ cardnumber_replaced => {
+ previous_cardnumber => $previous_cardnumber,
+ new_cardnumber => $self->cardnumber,
+ }
+ },
+ { utf8 => 1, pretty => 1 }
+ )
+ );
+ }
+
+ logaction( "MEMBERS", "MODIFY", $self->borrowernumber,
+ "UPDATE (executed w/ arg: " . $self->borrowernumber . ")" )
+ if $borrowers_log;
+
$self = $self->SUPER::store;
}
-
}
);
return $self;
Return the generate userid ($firstname.$surname if there is a $firstname, or $surname if there is no value in $firstname) plus offset (0 if the $userid is unique, or a higher numeric value if not unique).
-# Note: Should we set $self->userid with the generated value?
-# Certainly yes, but we AddMember and ModMember will be rewritten
+# TODO: Set $self->userid with the generated value
=cut
}
}
-# remove keys from %newdata that ModMember() doesn't like
+# remove keys from %newdata that is not part of patron's attributes
{
my @keys_to_delete = (
qr/^BorrowerMandatoryField$/,
use C4::Auth;
use C4::Output;
use C4::Context;
-use C4::Members;
+use Koha::Patrons;
use Koha::Patron::Modifications;
my $query = new CGI;
if ($query->param("unset_gna_$borrowernumber")) {
# Unset gone no address
- ModMember(
- borrowernumber => $borrowernumber,
- gonenoaddress => undef
- );
+ # FIXME Looks like this could go to $m->approve
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ $patron->gonenoaddress(undef)->store;
}
$m->approve() if $m;
script to update a child member to (usually) an adult member category
- if called with op=multi, will return all available non child categories, for selection.
- - if called with op=update, script will update member record via ModMember().
+ - if called with op=update, script will update member record via Koha::Patron->store.
=cut
use C4::Context;
use C4::Auth;
use C4::Output;
-use C4::Members;
use Koha::Patrons;
use Koha::Patron::Categories;
my $patron = Koha::Patrons->find( $borrowernumber );
output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
- my $member = $patron->unblessed;
- $member->{'guarantorid'} = 0;
- $member->{'categorycode'} = $catcode;
- my $borcat = Koha::Patron::Categories->find($catcode);
- $member->{'category_type'} = $borcat->category_type;
- $member->{'description'} = $borcat->description;
- delete $member->{password};
- ModMember(%$member);
+ $patron->guarantorid(undef);
+ $patron->categorycode($catcode);
+ $patron->store;
if ( $catcode_multi ) {
$template->param(
=cut
-use C4::Members;
use C4::Members::Attributes qw( UpdateBorrowerAttribute );
use Koha::NorwegianPatronDB qw( NLCheckSysprefs NLGetChanged );
+use Koha::Patrons;
use Koha::Database;
use Getopt::Long;
use Pod::Usage;
# Delete the extra data from the copy of the hashref
delete $clean_patron{'_extra'};
# Find the borrowernumber based on cardnumber
- my $stored_patron = Koha::Database->new->schema->resultset('Borrower')->find({
- 'cardnumber' => $patron->{'cardnumber'}
- });
+ my $stored_patron = Koha::Patrons->find({ cardnumber => $patron->{cardnumber} });
my $borrowernumber = $stored_patron->borrowernumber;
if ( $run ) {
- # Call ModMember
- my $success = ModMember(
- 'borrowernumber' => $borrowernumber,
- %clean_patron,
- );
- if ( $success ) {
+ # FIXME Exceptions must be caught here
+ if ( $stored_patron->set(\%clean_patron)->store ) {
# Get the sync object
my $sync = Koha::Database->new->schema->resultset('BorrowerSync')->find({
'synctype' => 'norwegianpatrondb',
use C4::Members;
use C4::Members::Messaging;
use C4::Form::MessagingPreferences;
+use Koha::Patrons;
use Koha::SMS::Providers;
my $query = CGI->new();
}
);
-my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
+my $patron = Koha::Patrons->find( $borrowernumber ); # FIXME and if borrowernumber is invalid?
+
my $messaging_options = C4::Members::Messaging::GetMessagingOptions();
if ( defined $query->param('modify') && $query->param('modify') eq 'yes' ) {
my $sms = $query->param('SMSnumber');
my $sms_provider_id = $query->param('sms_provider_id');
- if ( defined $sms && ( $borrower->{'smsalertnumber'} // '' ) ne $sms
- or ( $borrower->{sms_provider_id} // '' ) ne $sms_provider_id ) {
- ModMember(
- borrowernumber => $borrowernumber,
+ if ( defined $sms && ( $patron->smsalertnumber // '' ) ne $sms
+ or ( $patron->sms_provider_id // '' ) ne $sms_provider_id ) {
+ $patron->set({
smsalertnumber => $sms,
sms_provider_id => $sms_provider_id,
- );
- # FIXME will not be needed when ModMember will be replaced
- $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
+ })->store;
}
- C4::Form::MessagingPreferences::handle_form_action($query, { borrowernumber => $borrowernumber }, $template);
+ C4::Form::MessagingPreferences::handle_form_action($query, { borrowernumber => $patron->borrowernumber }, $template);
}
-C4::Form::MessagingPreferences::set_form_values({ borrowernumber => $borrower->{'borrowernumber'} }, $template);
+C4::Form::MessagingPreferences::set_form_values({ borrowernumber => $patron->borrowernumber }, $template);
-$template->param( BORROWER_INFO => $borrower,
+$template->param( BORROWER_INFO => $patron->unblessed,
messagingview => 1,
- SMSnumber => $borrower->{'smsalertnumber'},
+ SMSnumber => $patron->smsalertnumber, # FIXME This is already sent 2 lines above
SMSSendDriver => C4::Context->preference("SMSSendDriver"),
TalkingTechItivaPhone => C4::Context->preference("TalkingTechItivaPhoneNotification") );
if ( C4::Context->preference("SMSSendDriver") eq 'Email' ) {
my @providers = Koha::SMS::Providers->search();
- $template->param( sms_providers => \@providers, sms_provider_id => $borrower->{'sms_provider_id'} );
+ $template->param( sms_providers => \@providers, sms_provider_id => $patron->sms_provider_id );
}
output_html_with_http_headers $query, $cookie, $template->output, undef, { force_no_caching => 1 };
use C4::Auth; # checkauth, getborrowernumber.
use C4::Context;
-use C4::Members;
use C4::Output;
use Koha::Patrons;
my $privacy_guarantor_checkouts = $query->param("privacy_guarantor_checkouts");
if ( $op eq "update_privacy" ) {
- ModMember(
- borrowernumber => $borrowernumber,
- privacy => $privacy,
- privacy_guarantor_checkouts => $privacy_guarantor_checkouts,
- );
- $template->param( 'privacy_updated' => 1 );
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ if ( $patron ) {
+ $patron->set({
+ privacy => $privacy,
+ privacy_guarantor_checkouts => $privacy_guarantor_checkouts,
+ })->store;
+ $template->param( 'privacy_updated' => 1 );
+ }
}
elsif ( $op eq "delete_record" ) {
t::lib::Mocks::mock_preference( 'FeeOnChangePatronCategory', 0 );
$borrower_data{categorycode} = 'J';
- C4::Members::ModMember(%borrower_data);
+ $patron->set(\%borrower_data)->store;
$total = $patron->account->balance;
is( int($total), int($enrolmentfee_K), "Kid growing and become a juvenile, but shouldn't pay for the upgrade " );
$borrower_data{categorycode} = 'K';
- C4::Members::ModMember(%borrower_data);
+ $patron->set(\%borrower_data)->store;
t::lib::Mocks::mock_preference( 'FeeOnChangePatronCategory', 1 );
$borrower_data{categorycode} = 'J';
- C4::Members::ModMember(%borrower_data);
+ $patron->set(\%borrower_data)->store;
$total = $patron->account->balance;
is( int($total), int($enrolmentfee_K + $enrolmentfee_J), "Kid growing and become a juvenile, they should pay " . ( $enrolmentfee_K + $enrolmentfee_J ) );
plan tests => 3;
t::lib::Mocks::mock_preference( 'BorrowersLog', 1 );
- my $patron = $builder->build( { source => 'Borrower' } );
+ my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
- my $cardnumber = $patron->{cardnumber};
- $patron->{cardnumber} = 'TESTCARDNUMBER';
- ModMember(%$patron);
+ my $cardnumber = $patron->cardnumber;
+ $patron->set( { cardnumber => 'TESTCARDNUMBER' });
+ $patron->store;
- my @logs = $schema->resultset('ActionLog')->search( { module => 'MEMBERS', action => 'MODIFY', object => $patron->{borrowernumber} } );
+ my @logs = $schema->resultset('ActionLog')->search( { module => 'MEMBERS', action => 'MODIFY', object => $patron->borrowernumber } );
my $log_info = from_json( $logs[0]->info );
is( $log_info->{cardnumber_replaced}->{new_cardnumber}, 'TESTCARDNUMBER', 'Got correct new cardnumber' );
is( $log_info->{cardnumber_replaced}->{previous_cardnumber}, $cardnumber, 'Got correct old cardnumber' );
is( $@, '', 'SendQueuedMessages should not explode if the patron does not have a sms provider set' );
my $sms_pro = $builder->build_object({ class => 'Koha::SMS::Providers', value => { domain => 'kidclamp.rocks' } });
- ModMember( borrowernumber => $borrowernumber, smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() );
+ $patron->set( { smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() } )->store;
$message_id = C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward
C4::Letters::SendQueuedMessages();
my $sms_message_address = $schema->resultset('MessageQueue')->search({
my $addmem=Koha::Patron->new(\%data)->store->borrowernumber;
ok($addmem, "Koha::Patron->store()");
-my $member = Koha::Patrons->find( { cardnumber => $CARDNUMBER } )
+my $patron = Koha::Patrons->find( { cardnumber => $CARDNUMBER } )
or BAIL_OUT("Cannot read member with card $CARDNUMBER");
-$member = $member->unblessed;
+my $member = $patron->unblessed;
ok ( $member->{firstname} eq $FIRSTNAME &&
$member->{surname} eq $SURNAME &&
$member->{email} = $EMAIL;
$member->{phone} = $PHONE;
$member->{emailpro} = $EMAILPRO;
-ModMember(%$member);
+$patron->set($member)->store;
my $changedmember = Koha::Patrons->find( { cardnumber => $CARDNUMBER } )->unblessed;
ok ( $changedmember->{firstname} eq $CHANGED_FIRSTNAME &&
$changedmember->{email} eq $EMAIL &&
dateenrolled => '',
);
my $borrowernumber = Koha::Patron->new( \%data )->store->borrowernumber;
-my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
+$patron = Koha::Patrons->find( $borrowernumber );
+my $borrower = $patron->unblessed;
is( $borrower->{dateofbirth}, undef, 'Koha::Patron->store should undef dateofbirth if empty string is given');
is( $borrower->{debarred}, undef, 'Koha::Patron->store should undef debarred if empty string is given');
isnt( $borrower->{dateexpiry}, '0000-00-00', 'Koha::Patron->store should not set dateexpiry to 0000-00-00 if empty string is given');
isnt( $borrower->{dateenrolled}, '0000-00-00', 'Koha::Patron->store should not set dateenrolled to 0000-00-00 if empty string is given');
-ModMember( borrowernumber => $borrowernumber, dateofbirth => '', debarred => '', dateexpiry => '', dateenrolled => '' );
+$patron->set({ dateofbirth => '', debarred => '', dateexpiry => '', dateenrolled => '' })->store;
$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
-is( $borrower->{dateofbirth}, undef, 'ModMember should undef dateofbirth if empty string is given');
-is( $borrower->{debarred}, undef, 'ModMember should undef debarred if empty string is given');
-isnt( $borrower->{dateexpiry}, '0000-00-00', 'ModMember should not set dateexpiry to 0000-00-00 if empty string is given');
-isnt( $borrower->{dateenrolled}, '0000-00-00', 'ModMember should not set dateenrolled to 0000-00-00 if empty string is given');
+is( $borrower->{dateofbirth}, undef, 'Koha::Patron->store should undef dateofbirth if empty string is given');
+is( $borrower->{debarred}, undef, 'Koha::Patron->store should undef debarred if empty string is given');
+isnt( $borrower->{dateexpiry}, '0000-00-00', 'Koha::Patron->store should not set dateexpiry to 0000-00-00 if empty string is given');
+isnt( $borrower->{dateenrolled}, '0000-00-00', 'Koha::Patron->store should not set dateenrolled to 0000-00-00 if empty string is given');
-ModMember( borrowernumber => $borrowernumber, dateofbirth => '1970-01-01', debarred => '2042-01-01', dateexpiry => '9999-12-31', dateenrolled => '2015-09-06' );
+$patron->set({ dateofbirth => '1970-01-01', debarred => '2042-01-01', dateexpiry => '9999-12-31', dateenrolled => '2015-09-06' })->store;
$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
-is( $borrower->{dateofbirth}, '1970-01-01', 'ModMember should correctly set dateofbirth if a valid date is given');
-is( $borrower->{debarred}, '2042-01-01', 'ModMember should correctly set debarred if a valid date is given');
-is( $borrower->{dateexpiry}, '9999-12-31', 'ModMember should correctly set dateexpiry if a valid date is given');
-is( $borrower->{dateenrolled}, '2015-09-06', 'ModMember should correctly set dateenrolled if a valid date is given');
+is( $borrower->{dateofbirth}, '1970-01-01', 'Koha::Patron->store should correctly set dateofbirth if a valid date is given');
+is( $borrower->{debarred}, '2042-01-01', 'Koha::Patron->store should correctly set debarred if a valid date is given');
+is( $borrower->{dateexpiry}, '9999-12-31', 'Koha::Patron->store should correctly set dateexpiry if a valid date is given');
+is( $borrower->{dateenrolled}, '2015-09-06', 'Koha::Patron->store should correctly set dateenrolled if a valid date is given');
-subtest 'ModMember should not update userid if not true' => sub {
+subtest 'Koha::Patron->store should not update userid if not true' => sub {
plan tests => 3;
$data{ cardnumber } = "234567890";
$data{userid} = 'a_user_id';
$borrowernumber = Koha::Patron->new( \%data )->store->borrowernumber;
- $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $borrower = $patron->unblessed;
- ModMember( borrowernumber => $borrowernumber, firstname => 'Tomas', userid => '' );
+ $patron->set( { firstname => 'Tomas', userid => '' } )->store;
$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
- is ( $borrower->{userid}, $data{userid}, 'ModMember should not update the userid with an empty string' );
- ModMember( borrowernumber => $borrowernumber, firstname => 'Tomas', userid => 0 );
+ is ( $borrower->{userid}, $data{userid}, 'Koha::Patron->store should not update the userid with an empty string' );
+ $patron->set( { firstname => 'Tomas', userid => 0 } )->store;
$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
- is ( $borrower->{userid}, $data{userid}, 'ModMember should not update the userid with an 0');
- ModMember( borrowernumber => $borrowernumber, firstname => 'Tomas', userid => undef );
+ is ( $borrower->{userid}, $data{userid}, 'Koha::Patron->store should not update the userid with an 0');
+ $patron->set( { firstname => 'Tomas', userid => undef } )->store;
$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
- is ( $borrower->{userid}, $data{userid}, 'ModMember should not update the userid with an undefined value');
+ is ( $borrower->{userid}, $data{userid}, 'Koha::Patron->store should not update the userid with an undefined value');
};
#Regression tests for bug 10612
AddPatronsToList( { list => $list1, borrowernumbers => \@listpatrons });
my $patstodel = GetBorrowersToExpunge( {patron_list_id => $list1->patron_list_id() } );
is( scalar(@$patstodel),0,'No staff deleted from list of all staff');
-ModMember( borrowernumber => $bor2inlist, categorycode => 'CIVILIAN' );
+Koha::Patrons->find($bor2inlist)->set({ categorycode => 'CIVILIAN' })->store;
$patstodel = GetBorrowersToExpunge( {patron_list_id => $list1->patron_list_id()} );
ok( scalar(@$patstodel)== 1 && $patstodel->[0]->{'borrowernumber'} eq $bor2inlist,'Staff patron not deleted from list');
$patstodel = GetBorrowersToExpunge( {branchcode => $library3->{branchcode},patron_list_id => $list1->patron_list_id() } );
$patstodel = GetBorrowersToExpunge( {not_borrowed_since => '2016-01-02', patron_list_id => $list1->patron_list_id() } );
ok( scalar(@$patstodel) == 1 && $patstodel->[0]->{'borrowernumber'} eq $bor2inlist,'Staff patron not deleted by last issue date');
-ModMember( borrowernumber => $bor1inlist, categorycode => 'CIVILIAN' );
-ModMember( borrowernumber => $guarantee->{borrowernumber} ,guarantorid=>$bor1inlist );
+Koha::Patrons->find($bor1inlist)->set({ categorycode => 'CIVILIAN' })->store;
+Koha::Patrons->find($guarantee->{borrowernumber})->set({ guarantorid => $bor1inlist })->store;
$patstodel = GetBorrowersToExpunge( {patron_list_id => $list1->patron_list_id()} );
ok( scalar(@$patstodel)== 1 && $patstodel->[0]->{'borrowernumber'} eq $bor2inlist,'Guarantor patron not deleted from list');
ok( scalar(@$patstodel) == 1 && $patstodel->[0]->{'borrowernumber'} eq $bor2inlist,'Guarantor patron not deleted by expirationdate and list');
$patstodel = GetBorrowersToExpunge( {not_borrowed_since => '2016-01-02', patron_list_id => $list1->patron_list_id() } );
ok( scalar(@$patstodel) == 1 && $patstodel->[0]->{'borrowernumber'} eq $bor2inlist,'Guarantor patron not deleted by last issue date');
-ModMember( borrowernumber => $guarantee->{borrowernumber}, guarantorid=>'' );
+Koha::Patrons->find($guarantee->{borrowernumber})->set({ guarantorid => '' })->store;
$builder->build({
source => 'Issue',
#Set the dateofbirth for the Borrower making them "too young".
$borrower->{dateofbirth} = DateTime->now->add( years => -15 );
-C4::Members::ModMember( borrowernumber => $borrowernumber, dateofbirth => $borrower->{dateofbirth} );
+Koha::Patrons->find( $borrowernumber )->set({ dateofbirth => $borrower->{dateofbirth} })->store;
is( C4::Reserves::CanBookBeReserved($borrowernumber, $biblionumber) , 'ageRestricted', "Reserving a 'PEGI 16' Biblio by a 15 year old borrower fails");
#Set the dateofbirth for the Borrower making them "too old".
$borrower->{dateofbirth} = DateTime->now->add( years => -30 );
-C4::Members::ModMember( borrowernumber => $borrowernumber, dateofbirth => $borrower->{dateofbirth} );
+Koha::Patrons->find( $borrowernumber )->set({ dateofbirth => $borrower->{dateofbirth} })->store;
is( C4::Reserves::CanBookBeReserved($borrowernumber, $biblionumber) , 'OK', "Reserving a 'PEGI 16' Biblio by a 30 year old borrower succeeds");
####
# If at least one field are filled, we want to modify the borrower
if ( defined $infos ) {
$infos->{borrowernumber} = $borrowernumber;
- my $success = ModMember(%$infos);
- if (!$success) {
+ eval { Koha::Patrons->find( $borrowernumber )->set($infos)->store; };
+ if ( $@ ) { # FIXME We could provide better error handling here
my $patron = Koha::Patrons->find( $borrowernumber );
$infos->{cardnumber} = $patron ? $patron->cardnumber || '' : '';
push @errors, { error => "can_not_update", borrowernumber => $infos->{borrowernumber}, cardnumber => $infos->{cardnumber} };