use C4::Debug;
use C4::Context;
-use C4::Members qw(AddMember);
use C4::Members::Attributes;
use C4::Members::AttributeTypes;
use C4::Members::Messaging;
sub AddMember_Auto {
my ( %borrower ) = @_;
- $borrower{'borrowernumber'} = AddMember(%borrower);
- my $patron = Koha::Patrons->find( $borrower{borrowernumber} )->unblessed;
- $patron->{password} = $borrower{password};
- return %$patron;
+ my $patron = Koha::Patron->new(\%borrower)->store;
+
+ return %{ $patron->unblessed };
}
=head2 AddMember_Opac
my ( %borrower ) = @_;
$borrower{'categorycode'} //= C4::Context->preference('PatronSelfRegistrationDefaultCategory');
- if (not defined $borrower{'password'}){
+ my $password = $borrower{password};
+ if (not defined $password){
my $sr = new String::Random;
$sr->{'A'} = [ 'A'..'Z', 'a'..'z' ];
- my $password = $sr->randpattern("AAAAAAAAAA");
+ $password = $sr->randpattern("AAAAAAAAAA");
$borrower{'password'} = $password;
}
%borrower = AddMember_Auto(%borrower);
- return ( $borrower{'borrowernumber'}, $borrower{'password'} );
+ return ( $borrower{'borrowernumber'}, $password );
}
=head2 DeleteExpiredOpacRegistrations
=head2 _soap_to_koha_patron
-Convert a SOAP object of type "Laaner" into a hash that can be sent to AddMember or ModMember.
+Convert a SOAP object of type "Laaner" into a hash that can be sent to Koha::Patron
=cut
);
}
else {
- if ( $borrowernumber = AddMember(%borrower) ) {
+ my $patron = eval {
+ Koha::Patron->new(\%borrower)->store;
+ };
+ unless ( $@ ) {
- if ( $borrower{debarred} ) {
+ if ( $patron->is_debarred ) {
AddDebarment(
{
- borrowernumber => $borrowernumber,
- expiration => $borrower{debarred},
- comment => $borrower{debarredcomment}
+ borrowernumber => $patron->borrowernumber,
+ expiration => $patron->debarred,
+ comment => $patron->debarredcomment,
}
);
}
if ($extended) {
- SetBorrowerAttributes( $borrowernumber, $patron_attributes );
+ SetBorrowerAttributes( $patron->borrowernumber, $patron_attributes );
}
if ($set_messaging_prefs) {
C4::Members::Messaging::SetMessagingPreferencesFromDefaults(
{
- borrowernumber => $borrowernumber,
- categorycode => $borrower{categorycode}
+ borrowernumber => $patron->borrowernumber,
+ categorycode => $patron->categorycode,
}
);
}
$imported++;
- push @imported_borrowers, $borrowernumber; #for patronlist
+ push @imported_borrowers, $patron->borrowernumber; #for patronlist
push(
@feedback,
{
feedback => 1,
name => 'lastimported',
- value => $borrower{'surname'} . ' / ' . $borrowernumber
+ value => $patron->surname . ' / ' . $patron->borrowernumber,
}
);
}
@errors,
{
name => 'lastinvalid',
- value => $borrower{'surname'} . ' / AddMember',
+ value => $borrower{'surname'} . ' / Create patron',
}
);
}
use C4::InstallAuth;
use CGI qw ( -utf8 );
use C4::Output;
-use C4::Members;
use Koha::Patrons;
use Koha::Libraries;
use Koha::Database;
use Koha::DateUtils;
+use Koha::Patrons;
use Koha::Patron::Categories;
-use Koha::Patron::Category;
use Koha::ItemTypes;
-use Koha::IssuingRule;
use Koha::IssuingRules;
#Setting variables
$patron_data->{dateexpiry} =
$patron_category->get_expiry_date( $patron_data->{dateenrolled} );
- my $borrowernumber = C4::Members::AddMember(%$patron_data);
+ eval {
+ Koha::Patron->new($patron_data)->store;
+ };
#Error handling checking if the patron was created successfully
- if ($borrowernumber) {
+ unless ($@) {
push @messages, { code => 'success_on_insert_patron' };
}
else {
qr/^\d+$/,
qr/^\d+-DAYS/,
qr/^patron_attr_/,
+ qr/^csrf_token$/,
);
for my $regexp (@keys_to_delete) {
for (keys %newdata) {
$debug and warn "$op dates: " . join "\t", map {"$_: $newdata{$_}"} qw(dateofbirth dateenrolled dateexpiry);
if ($op eq 'insert'){
# we know it's not a duplicate borrowernumber or there would already be an error
- $borrowernumber = &AddMember(%newdata);
- $newdata{'borrowernumber'} = $borrowernumber;
+ delete $newdata{password2};
+ my $patron = eval { Koha::Patron->new(\%newdata)->store };
+ if ( $@ ) {
+ # FIXME Urgent error handling here, we cannot fail without relevant feedback
+ # Lot of code will need to be removed from this script to handle exceptions raised by Koha::Patron->store
+ warn "Patron creation failed! - $@"; # Maybe we must die instead of just warn
+ } else {
+ $borrowernumber = $patron->borrowernumber;
+ }
# If 'AutoEmailOpacUser' syspref is on, email user their account details from the 'notice' that matches the user's branchcode.
if ( C4::Context->preference("AutoEmailOpacUser") == 1 && $newdata{'userid'} && $newdata{'password'}) {
use C4::Auth;
use C4::Context;
use C4::Output;
-use C4::Members;
use C4::Members::Attributes qw( SetBorrowerAttributes );
use C4::Utils::DataTables::Members;
use Koha::NorwegianPatronDB qw( NLCheckSysprefs NLSearch NLDecodePin NLGetFirstname NLGetSurname NLSync );
use Koha::Database;
use Koha::DateUtils;
+use Koha::Patrons;
use Koha::Patron::Categories;
my $cgi = CGI->new;
'categorycode' => scalar $cgi->param('categorycode'),
);
# Add the new patron
- my $borrowernumber = &AddMember(%borrower);
- if ( $borrowernumber ) {
+ my $patron = eval { Koha::Patron->new(\%borrower)->store; };
+ unless ( $@) {
+ my $borrowernumber = $patron->borrowernumber;
# Add extended patron attributes
SetBorrowerAttributes($borrowernumber, [
{ code => 'fnr', value => scalar $cgi->param('fnr_hash') },
], 'no_branch_limit' );
- # Override the default sync data created by AddMember
+ # Override the default sync data created by Koha::Patron->store
my $borrowersync = Koha::Database->new->schema->resultset('BorrowerSync')->find({
'synctype' => 'norwegianpatrondb',
'borrowernumber' => $borrowernumber,
use Getopt::Long;
use Pod::Usage;
-use C4::Members;
+use Koha::Patrons;
my ( $help, $surname, $userid, $password, $branchcode, $categorycode, $cardnumber );
GetOptions(
pod2usage("categorycode is mandatory") unless $categorycode;
pod2usage("cardnumber is mandatory") unless $cardnumber;
-C4::Members::AddMember(
+Koha::Patron->new({
surname => $surname,
userid => $userid,
cardnumber => $cardnumber,
categorycode => $categorycode,
password => $password,
flags => 1,
-);
+})->store;
=head1 NAME
use CGI qw ( -utf8 escape );
use C4::Auth qw{ checkauth get_session get_template_and_user };
use C4::Context;
-use C4::Members;
use C4::Output;
use Koha::Patrons;
my $library = Koha::Libraries->find( $branchcode );
if (defined $patron_category && defined $library) {
my $password = undef;
- my $borrowernumber = C4::Members::AddMember(
+ # TODO errors handling!
+ my $borrower = Koha::Patron->new(
firstname => $firstname,
surname => $surname,
email => $email,
branchcode => $branchcode,
userid => $userid,
password => $password
- );
- $borrower = Koha::Patrons->find( {
- borrowernumber => $borrowernumber } );
+ )->store;
} else {
$error_feedback = 'The GoogleOpenIDConnectDefaultBranch or GoogleOpenIDConnectDefaultCategory system preferences are not configured properly. Please contact the library with this error message.';
}
use Koha::Database;
use Koha::Acquisition::Booksellers;
use Koha::Acquisition::Orders;
+use Koha::Patrons;
use t::lib::TestBuilder;
unknown => "unknown"
);
-my $borrowernumber = C4::Members::AddMember(
+my $borrowernumber = Koha::Patron->new({
cardnumber => 'TESTCARD',
firstname => 'TESTFN',
surname => 'TESTSN',
dateofbirth => '',
dateexpiry => '9999-12-31',
userid => 'TESTUSERID'
-);
+})->store->borrowernumber;
C4::Acquisition::ModOrderUsers( $ordernumber, $borrowernumber );
use C4::Context;
use C4::Biblio;
use C4::Acquisition;
-use C4::Members qw( AddMember );
use Koha::Acquisition::Booksellers;
use Koha::Acquisition::Orders;
+use Koha::Patrons;
use t::lib::TestBuilder;
my $patron_category = $builder->build({ source => 'Category' });
my $branchcode = $library->{branchcode};
-my $john_doe = C4::Members::AddMember(
+my $john_doe = Koha::Patron->new({
cardnumber => '123456',
firstname => 'John',
surname => 'Doe',
dateofbirth => '',
dateexpiry => '9999-12-31',
userid => 'john.doe'
-);
+})->store->borrowernumber;
C4::Budgets::SetOwnerToFundHierarchy( $budget_id1, $john_doe );
is( C4::Budgets::GetBudget($budget_id1)->{budget_owner_id},
is( C4::Budgets::GetBudget($budget_id21)->{budget_owner_id},
undef, "SetOwnerToFundHierarchy should not have set an owner for budget 21 ($budget_id21)" );
-my $jane_doe = C4::Members::AddMember(
+my $jane_doe = Koha::Patron->new({
cardnumber => '789012',
firstname => 'Jane',
surname => 'Doe',
dateofbirth => '',
dateexpiry => '9999-12-31',
userid => 'jane.doe'
-);
+})->store->borrowernumber;
C4::Budgets::SetOwnerToFundHierarchy( $budget_id11, $jane_doe );
is( C4::Budgets::GetBudget($budget_id1)->{budget_owner_id},
use C4::Biblio;
use C4::Items;
use C4::Log;
-use C4::Members;
use C4::Reserves;
use C4::Overdues qw(UpdateFine CalcFine);
use Koha::DateUtils;
dateexpiry => dt_from_string->subtract( months => 1 ),
);
- my $renewing_borrowernumber = AddMember(%renewing_borrower_data);
- my $reserving_borrowernumber = AddMember(%reserving_borrower_data);
- my $hold_waiting_borrowernumber = AddMember(%hold_waiting_borrower_data);
- my $restricted_borrowernumber = AddMember(%restricted_borrower_data);
- my $expired_borrowernumber = AddMember(%expired_borrower_data);
+ my $renewing_borrowernumber = Koha::Patron->new(\%renewing_borrower_data)->store->borrowernumber;
+ my $reserving_borrowernumber = Koha::Patron->new(\%reserving_borrower_data)->store->borrowernumber;
+ my $hold_waiting_borrowernumber = Koha::Patron->new(\%hold_waiting_borrower_data)->store->borrowernumber;
+ my $restricted_borrowernumber = Koha::Patron->new(\%restricted_borrower_data)->store->borrowernumber;
+ my $expired_borrowernumber = Koha::Patron->new(\%expired_borrower_data)->store->borrowernumber;
my $renewing_borrower = Koha::Patrons->find( $renewing_borrowernumber )->unblessed;
my $restricted_borrower = Koha::Patrons->find( $restricted_borrowernumber )->unblessed;
branchcode => $branch,
);
- my $a_borrower_borrowernumber = AddMember(%a_borrower_data);
+ my $a_borrower_borrowernumber = Koha::Patron->new(\%a_borrower_data)->store->borrowernumber;
my $a_borrower = Koha::Patrons->find( $a_borrower_borrowernumber )->unblessed;
my $yesterday = DateTime->today(time_zone => C4::Context->tz())->add( days => -1 );
branchcode => $branch,
);
- my $borrowernumber = AddMember(%a_borrower_data);
+ my $borrowernumber = Koha::Patron->new(\%a_borrower_data)->store->borrowernumber;
my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $issue = AddIssue( $borrower, $barcode );
$biblionumber
);
- my $borrowernumber1 = AddMember(
+ my $borrowernumber1 = Koha::Patron->new({
firstname => 'Kyle',
surname => 'Hall',
categorycode => $patron_category->{categorycode},
branchcode => $library2->{branchcode},
- );
- my $borrowernumber2 = AddMember(
+ })->store->borrowernumber;
+ my $borrowernumber2 = Koha::Patron->new({
firstname => 'Chelsea',
surname => 'Hall',
categorycode => $patron_category->{categorycode},
branchcode => $library2->{branchcode},
- );
+ })->store->borrowernumber;
my $borrower1 = Koha::Patrons->find( $borrowernumber1 )->unblessed;
my $borrower2 = Koha::Patrons->find( $borrowernumber2 )->unblessed;
$biblionumber
);
- my $borrowernumber = AddMember(
+ my $borrowernumber = Koha::Patron->new({
firstname => 'fn',
surname => 'dn',
categorycode => $patron_category->{categorycode},
branchcode => $branch,
- );
+ })->store->borrowernumber;
my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
categorycode => $patron_category->{categorycode},
branchcode => $branch,
);
- my $renewing_borrowernumber = AddMember(%renewing_borrower_data);
+ my $renewing_borrowernumber = Koha::Patron->new(\%renewing_borrower_data)->store->borrowernumber;
my $renewing_borrower = Koha::Patrons->find( $renewing_borrowernumber )->unblessed;
my $issue = AddIssue( $renewing_borrower, $barcode1);
my $datedue = dt_from_string( $issue->date_due() );
categorycode => $patron_category->{categorycode},
branchcode => $branch,
);
- my $reserving_borrowernumber1 = AddMember(%reserving_borrower_data1);
+ my $reserving_borrowernumber1 = Koha::Patron->new(\%reserving_borrower_data1)->store->borrowernumber;
AddReserve(
$branch, $reserving_borrowernumber1, $biblionumber,
$bibitems, $priority, $resdate, $expdate, $notes,
categorycode => $patron_category->{categorycode},
branchcode => $branch,
);
- my $reserving_borrowernumber2 = AddMember(%reserving_borrower_data2);
+ my $reserving_borrowernumber2 = Koha::Patron->new(\%reserving_borrower_data2)->store->borrowernumber;
AddReserve(
$branch, $reserving_borrowernumber2, $biblionumber,
$bibitems, $priority, $resdate, $expdate, $notes,
use Modern::Perl;
use C4::Biblio;
-use C4::Members;
use C4::Circulation;
use C4::Items;
use C4::Context;
+use Koha::Patrons;
+
use Test::More tests => 14;
use t::lib::Mocks;
use t::lib::TestBuilder;
my $item_id3 = $sampleitem3[2];
#Add borrower
-my $borrower_id1 = C4::Members::AddMember(
+my $borrower_id1 = Koha::Patron->new({
firstname => 'firstname1',
surname => 'surname1 ',
categorycode => $samplecat->{categorycode},
branchcode => $samplebranch1->{branchcode},
-);
+})->store->borrowernumber;
is_deeply(
GetBranchBorrowerCircRule(),
use C4::Biblio;
use C4::Items;
-use C4::Members;
use C4::Circulation;
+use Koha::Patrons;
use MARC::Record;
BEGIN {
source => 'Category'
})->{categorycode};
-my $borrowernumber = AddMember(categorycode => $categorycode, branchcode => $branchcode);
+my $borrowernumber = Koha::Patron->new({categorycode => $categorycode, branchcode => $branchcode})->store->borrowernumber;
+# TODO following code must be simplified to use the Koha::Patron object
my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed();
# Need to mock userenv for AddIssue
use C4::Biblio;
use C4::Items;
-use C4::Members;
use Koha::Library;
use Koha::Patrons;
use MARC::Record;
my $barcode2 = '0202';
AddItem({ barcode => $barcode2, %item_info }, $biblionumber2);
-my $borrowernumber1 = AddMember(categorycode => $categorycode, branchcode => $branchcode);
-my $borrowernumber2 = AddMember(categorycode => $categorycode, branchcode => $branchcode);
+my $borrowernumber1 = Koha::Patron->new({categorycode => $categorycode, branchcode => $branchcode})->store->borrowernumber;
+my $borrowernumber2 = Koha::Patron->new({categorycode => $categorycode, branchcode => $branchcode})->store->borrowernumber;
+# FIXME following code must be simplified to use the Koha::Patron objects
my $borrower1 = Koha::Patrons->find( $borrowernumber1 )->unblessed;
my $borrower2 = Koha::Patrons->find( $borrowernumber2 )->unblessed;
use C4::Circulation;
use C4::Biblio;
use C4::Items;
-use C4::Members;
use Koha::Database;
use Koha::Patrons;
homebranch => $branch_2->{ branchcode },
}, $biblionumber);
-my $borrowernumber = AddMember(
+my $borrowernumber = Koha::Patron->new({
userid => 'gti.test',
categorycode => $category,
branchcode => $branch_1->{ branchcode }
-);
+})->store->borrowernumber;
my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
AddIssue($borrower, 'GTI_BARCODE_001');
use C4::Biblio;
use C4::Circulation;
use C4::Items;
-use C4::Members;
use Koha::Database;
use Koha::DateUtils;
use Koha::Patrons;
-my $borrowernumber = AddMember(
+my $borrowernumber = Koha::Patron->new({
firstname => 'my firstname',
surname => 'my surname',
categorycode => $patron_category->{categorycode},
branchcode => $library->{branchcode},
-);
+})->store->borrowernumber;
my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $record = MARC::Record->new();
use C4::Biblio qw( AddBiblio );
use C4::Circulation qw( AddIssue AddReturn );
use C4::Items qw( AddItem );
-use C4::Members qw( AddMember );
use Koha::Database;
use Koha::DateUtils;
use Koha::Patron::Debarments qw( GetDebarments DelDebarment );
+use Koha::Patrons;
use t::lib::TestBuilder;
}
);
-my $borrowernumber = AddMember(
+my $borrowernumber = Koha::Patron->new({
firstname => 'my firstname',
surname => 'my surname',
categorycode => $patron_category->{categorycode},
branchcode => $branchcode,
-);
+})->store->borrowernumber;
my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $record = MARC::Record->new();
use C4::Circulation;
use C4::Context;
-use C4::Members;
use Koha::Checkouts;
use Koha::Database;
+use Koha::Patrons;
my $schema = Koha::Database->schema;
$schema->storage->txn_begin;
like ( $@, qr<Fatal error: the patron \(\d+\) .* AnonymousPatron>, 'AnonymousPatron is not set - Fatal error on anonymization' );
Koha::Checkouts->find( $issue->issue_id )->delete;
- my $anonymous_borrowernumber = C4::Members::AddMember( categorycode => $patron_category->{categorycode}, branchcode => $library->{branchcode} );
+ my $anonymous_borrowernumber = Koha::Patron->new({categorycode => $patron_category->{categorycode}, branchcode => $library->{branchcode} })->store->borrowernumber;
t::lib::Mocks::mock_preference('AnonymousPatron', $anonymous_borrowernumber);
$issue = C4::Circulation::AddIssue( $patron, $item->{barcode} );
eval { C4::Circulation::MarkIssueReturned( $patron->{borrowernumber}, $item->{itemnumber}, 'dropbox_branch', 'returndate', 2 ) };
use C4::Circulation;
use C4::Context;
use C4::Items;
-use C4::Members;
use C4::Reserves;
use Koha::Checkouts;
use Koha::Database;
my $item_id2 = $sampleitem2[2];
#Add borrower
-my $borrower_id1 = C4::Members::AddMember(
+my $borrower_id1 = Koha::Patron->new({
firstname => 'firstname1',
surname => 'surname1 ',
categorycode => $categorycode,
branchcode => $branchcode_1
-);
+})->store->borrowernumber;
my $borrower_1 = Koha::Patrons->find( $borrower_id1 )->unblessed;
-my $borrower_id2 = C4::Members::AddMember(
+my $borrower_id2 = Koha::Patron->new({
firstname => 'firstname2',
surname => 'surname2 ',
categorycode => $categorycode,
branchcode => $branchcode_2,
-);
+})->store->borrowernumber;
my $borrower_2 = Koha::Patrons->find( $borrower_id2 )->unblessed;
my @USERENV = (
use MARC::Record;
use C4::Biblio;
use C4::Items;
-use C4::Members;
use C4::Calendar;
use Koha::Database;
use Koha::DateUtils qw( dt_from_string output_pref );
# Create some borrowers
my @borrowernumbers;
foreach (1..$borrowers_count) {
- my $borrowernumber = AddMember(
+ my $borrowernumber = Koha::Patron->new({
firstname => 'my firstname',
surname => 'my surname ' . $_,
categorycode => $category->{categorycode},
branchcode => $branch_1,
- );
+ })->store->borrowernumber;
push @borrowernumbers, $borrowernumber;
}
use MARC::Record;
use C4::Biblio;
use C4::Items;
-use C4::Members;
use Koha::Database;
+use Koha::Patrons;
use t::lib::TestBuilder;
# Create some borrowers
my @borrowernumbers;
foreach ( 1 .. $borrowers_count ) {
- my $borrowernumber = AddMember(
+ my $borrowernumber = Koha::Patron->new({
firstname => 'my firstname',
surname => 'my surname ' . $_,
categorycode => $patron_category->{categorycode},
branchcode => $branchcodes[$_],
- );
+ })->store->borrowernumber;
push @borrowernumbers, $borrowernumber;
}
use MARC::Record;
use C4::Biblio;
use C4::Items;
-use C4::Members;
use C4::Reserves;
use Koha::Libraries;
my $patron_category = $builder->build({ source => 'Category' });
my @borrowernumbers;
foreach my $i ( 1 .. $borrowers_count ) {
- my $borrowernumber = AddMember(
+ my $borrowernumber = Koha::Patron->new({
firstname => 'my firstname',
surname => 'my surname ' . $i,
categorycode => $patron_category->{categorycode},
branchcode => $branchcode,
- );
+ })->store->borrowernumber;
push @borrowernumbers, $borrowernumber;
}
use C4::Context;
use C4::Biblio; # AddBiblio
use C4::Circulation; # AddIssue
-use C4::Members;# AddMember
use Koha::Database;
use Koha::DateUtils qw( dt_from_string );
use Koha::Libraries;
+use Koha::Patrons;
use Scalar::Util qw( isvstring );
use Try::Tiny;
categorycode => $patron_category->{categorycode},
branchcode => $library->branchcode,
};
- my $borrowernumber = C4::Members::AddMember(%$patron_data);
- my $patron = Koha::Patrons->find( $borrowernumber );
+ my $patron = Koha::Patron->new($patron_data)->store;
my ($biblionumber) = AddBiblio( MARC::Record->new, '' );
my $biblio = Koha::Biblios->find( $biblionumber );
my $item = $builder->build_object(
use C4::Biblio;
use C4::Circulation;
-use C4::Members;
use C4::Circulation;
use Koha::Holds;
-use Koha::Patron;
use Koha::Patrons;
use Koha::Patron::Categories;
use Koha::Database;
branchcode => $library->{branchcode},
);
- my $borrowernumber = C4::Members::AddMember(%borrower_data);
+ my $borrowernumber = Koha::Patron->new(\%borrower_data)->store->borrowernumber;
$borrower_data{borrowernumber} = $borrowernumber;
my $patron = Koha::Patrons->find( $borrowernumber );
);
my $expected_userid_patron_1 = 'tomasito.none';
- my $borrowernumber = AddMember(%data);
+ my $borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
my $patron_1 = Koha::Patrons->find($borrowernumber);
is ( $patron_1->userid, $expected_userid_patron_1, 'The userid generated should be the one we expect' );
# Add a new borrower with the same userid but different cardnumber
$data{cardnumber} = "987654321";
- my $new_borrowernumber = AddMember(%data);
+ my $new_borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
my $patron_2 = Koha::Patrons->find($new_borrowernumber);
$patron_2->userid($patron_1->userid);
is( $patron_2->has_valid_userid,
my $new_userid = 'a_user_id';
$data{cardnumber} = "234567890";
$data{userid} = 'a_user_id';
- $borrowernumber = AddMember(%data);
+ $borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
my $patron_3 = Koha::Patrons->find($borrowernumber);
is( $patron_3->userid, $new_userid,
- 'AddMember should insert the given userid' );
+ 'Koha::Patron->store should insert the given userid' );
# Cleanup
$patron_1->delete;
my $new_patron = Koha::Patron->new({ firstname => $data{firstname}, surname => $data{surname} } );
my $userid = $new_patron->generate_userid;
is( $userid, $expected_userid_patron_1, 'generate_userid should generate the userid we expect' );
- my $borrowernumber = AddMember(%data);
+ my $borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
my $patron_1 = Koha::Patrons->find($borrowernumber);
is ( $patron_1->userid, $expected_userid_patron_1, 'The userid generated should be the one we expect' );
$userid = $new_patron->generate_userid;
is( $userid, $expected_userid_patron_1 . '1', 'generate_userid should generate the userid we expect' );
$data{cardnumber} = '987654321';
- my $new_borrowernumber = AddMember(%data);
+ my $new_borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
my $patron_2 = Koha::Patrons->find($new_borrowernumber);
isnt( $patron_2->userid, 'tomasito',
"Patron with duplicate userid has new userid generated" );
});
my $patron_category = $builder->build({ source => 'Category' })->{categorycode};
my $date = dt_from_string;
-my $borrowernumber = AddMember(
+my $borrowernumber = Koha::Patron->new({
firstname => 'Jane',
surname => 'Smith',
categorycode => $patron_category,
branchcode => $library->{branchcode},
dateofbirth => $date,
smsalertnumber => undef,
-);
+})->store->borrowernumber;
my $marc_record = MARC::Record->new;
my( $biblionumber, $biblioitemnumber ) = AddBiblio( $marc_record, '' );
my ($serials_count, @serials) = GetSerials($subscriptionid);
my $serial = $serials[0];
-my $borrowernumber = AddMember(
+my $patron = Koha::Patron->new({
firstname => 'John',
surname => 'Smith',
categorycode => $patron_category,
branchcode => $library->{branchcode},
dateofbirth => $date,
email => 'john.smith@test.de',
-);
+})->store;
+my $borrowernumber = $patron->borrowernumber;
my $subscription = Koha::Subscriptions->find( $subscriptionid );
-$subscription->add_subscriber( scalar Koha::Patrons->find( $borrowernumber ) );
+$subscription->add_subscriber( $patron );
my $err2;
warning_is {
my $dbh = C4::Context->dbh;
- my $borrowernumber = AddMember(
+ my $borrowernumber = Koha::Patron->new({
firstname => 'Jane',
surname => 'Smith',
categorycode => $patron_category,
branchcode => $library->{branchcode},
dateofbirth => $date,
smsalertnumber => undef,
- );
+ })->store->borrowernumber;
$dbh->do(q|DELETE FROM message_queue|);
$my_message = {
userid => 'tomasito'
);
-my $addmem=AddMember(%data);
-ok($addmem, "AddMember()");
+my $addmem=Koha::Patron->new(\%data)->store->borrowernumber;
+ok($addmem, "Koha::Patron->store()");
my $member = Koha::Patrons->find( { cardnumber => $CARDNUMBER } )
or BAIL_OUT("Cannot read member with card $CARDNUMBER");
dateexpiry => '',
dateenrolled => '',
);
-my $borrowernumber = AddMember( %data );
+my $borrowernumber = Koha::Patron->new( \%data )->store->borrowernumber;
my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
-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');
-isnt( $borrower->{dateenrolled}, '0000-00-00', 'AddMember 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 => '', debarred => '', dateexpiry => '', dateenrolled => '' );
$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
$data{ cardnumber } = "234567890";
$data{userid} = 'a_user_id';
- $borrowernumber = AddMember( %data );
+ $borrowernumber = Koha::Patron->new( \%data )->store->borrowernumber;
$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
ModMember( borrowernumber => $borrowernumber, firstname => 'Tomas', userid => '' );
# IndependentBranches is off.
t::lib::Mocks::mock_preference('IndependentBranches', 0);
-my $owner = AddMember (categorycode => 'STAFFER', branchcode => $library2->{branchcode} );
+my $owner = Koha::Patron->new({ categorycode => 'STAFFER', branchcode => $library2->{branchcode} })->store->borrowernumber;
my $list1 = AddPatronList( { name => 'Test List 1', owner => $owner } );
my @listpatrons = ($bor1inlist, $bor2inlist);
AddPatronsToList( { list => $list1, borrowernumbers => \@listpatrons });
## Remove all entries with userid='' (should be only 1 max)
$dbh->do(q|DELETE FROM borrowers WHERE userid = ''|);
## And create a patron with a userid=''
-$borrowernumber = AddMember( categorycode => $patron_category->{categorycode}, branchcode => $library2->{branchcode} );
+$borrowernumber = Koha::Patron->new({ categorycode => $patron_category->{categorycode}, branchcode => $library2->{branchcode} })->store->borrowernumber;
$dbh->do(q|UPDATE borrowers SET userid = '' WHERE borrowernumber = ?|, undef, $borrowernumber);
# Create another patron and verify the userid has been generated
-$borrowernumber = AddMember( categorycode => $patron_category->{categorycode}, branchcode => $library2->{branchcode} );
-ok( $borrowernumber > 0, 'AddMember should have inserted the patron even if no userid is given' );
+$borrowernumber = Koha::Patron->new({ categorycode => $patron_category->{categorycode}, branchcode => $library2->{branchcode} })->store->borrowernumber;
+ok( $borrowernumber > 0, 'Koha::Patron->store should have inserted the patron even if no userid is given' );
$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
ok( $borrower->{userid}, 'A userid should have been generated correctly' );
$schema->storage->txn_rollback;
-subtest 'AddMember (invalid categorycode) tests' => sub {
+subtest 'Koha::Patron->store (invalid categorycode) tests' => sub {
plan tests => 1;
$schema->storage->txn_begin;
};
throws_ok
- { AddMember( %{ $patron_data } ); }
+ { Koha::Patron->new( $patron_data )->store; }
'Koha::Exceptions::Object::FKConstraint',
'AddMember raises an exception on invalid categorycode';
AddItem( { barcode => '0203', %item_infos }, $biblionumber2 );
my $borrowernumber1 =
- AddMember( categorycode => $categorycode, branchcode => $branchcode );
+ Koha::Patron->new({ categorycode => $categorycode, branchcode => $branchcode })->store->borrowernumber;
my $borrowernumber2 =
- AddMember( categorycode => $categorycode, branchcode => $branchcode );
+ Koha::Patron->new({ categorycode => $categorycode, branchcode => $branchcode })->store->borrowernumber;
my $borrower1 = Koha::Patrons->find( $borrowernumber1 )->unblessed;
my $borrower2 = Koha::Patrons->find( $borrowernumber2 )->unblessed;
AddItem( { barcode => $barcode2, %item_infos }, $biblionumber2 );
my $borrowernumber =
- AddMember( categorycode => $categorycode, branchcode => $branchcode );
+ Koha::Patron->new({ categorycode => $categorycode, branchcode => $branchcode })->store->borrowernumber;
my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $module = new Test::MockModule('C4::Context');
use Modern::Perl;
use C4::Context;
-use C4::Members;
use Koha::Database;
use Koha::Patrons;
});
my $patron_category = $builder->build({ source => 'Category' });
-my $borrowernumber = AddMember(
+my $borrowernumber = Koha::Patron->new({
firstname => 'my firstname',
surname => 'my surname',
categorycode => $patron_category->{categorycode},
branchcode => $library->{branchcode},
-);
+})->store->borrowernumber;
my $success = AddDebarment({
borrowernumber => $borrowernumber,
use C4::Circulation qw( AddIssue AddReturn );
use C4::Context;
use C4::Items qw( AddItem );
-use C4::Members qw( AddMember );
+use Koha::Patrons;
use Koha::Patron::Discharge;
use Koha::Database;
use Modern::Perl;
use C4::Context;
-use C4::Members;
use Koha::Database;
+use Koha::Patrons;
use t::lib::TestBuilder;
use Test::More tests => 23;
});
my $patron_category = $builder->build({ source => 'Category' });
-my $borrowernumber = AddMember(
+my $borrowernumber = Koha::Patron->new({
firstname => 'my firstname',
surname => 'my surname',
categorycode => $patron_category->{categorycode},
branchcode => $library->{branchcode},
-);
+})->store->borrowernumber;
my $bf = Koha::Patron::Files->new(
borrowernumber => $borrowernumber,
my $builder = t::lib::TestBuilder->new;
-my $frameworkcode = q||;
+my $frameworkcode = q//;
t::lib::Mocks::mock_preference('ReservesNeedReturns', 1);
branchcode => $branch_1,
);
Koha::Patron::Categories->find($category_1)->set({ enrolmentfee => 0})->store;
-my $borrowernumber = AddMember(%data);
+my $borrowernumber = Koha::Patron->new(\%data)->store->borrowernumber;
my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $biblionumber = $bibnum;
my $barcode = $testbarcode;
### Regression test for bug 10272
###
my %requesters = ();
-$requesters{$branch_1} = AddMember(
+$requesters{$branch_1} = Koha::Patron->new({
branchcode => $branch_1,
categorycode => $category_2,
surname => "borrower from $branch_1",
-);
+})->store->borrowernumber;
for my $i ( 2 .. 5 ) {
- $requesters{"CPL$i"} = AddMember(
+ $requesters{"CPL$i"} = Koha::Patron->new({
branchcode => $branch_1,
categorycode => $category_2,
surname => "borrower $i from $branch_1",
- );
+ })->store->borrowernumber;
}
-$requesters{$branch_2} = AddMember(
+$requesters{$branch_2} = Koha::Patron->new({
branchcode => $branch_2,
categorycode => $category_2,
surname => "borrower from $branch_2",
-);
-$requesters{$branch_3} = AddMember(
+})->store->borrowernumber;
+$requesters{$branch_3} = Koha::Patron->new({
branchcode => $branch_3,
categorycode => $category_2,
surname => "borrower from $branch_3",
-);
+})->store->borrowernumber;
# Configure rules so that $branch_1 allows only $branch_1 patrons
# to request its items, while $branch_2 will allow its items
use MARC::Record;
use C4::Biblio qw( AddBiblio );
-use C4::Members qw( AddMember );
use Koha::Database;
+use Koha::Patrons;
use t::lib::Mocks;
use t::lib::TestBuilder;
use_ok('C4::Serials');
is( C4::Serials::can_claim_subscription($subscription_from_my_branch), 0, "cannot edit a subscription without userenv set");
my $userid = 'my_userid';
-my $borrowernumber = C4::Members::AddMember(
+my $borrowernumber = Koha::Patron->new({
firstname => 'my fistname',
surname => 'my surname',
categorycode => $patron_category->{categorycode},
branchcode => $my_branch,
userid => $userid,
-);
+})->store->borrowernumber;
$userenv = { flags => 1, id => $borrowernumber, branch => '' };
use t::lib::TestBuilder;
use C4::Context;
-use C4::Members;
use C4::Letters;
use C4::Budgets qw( AddBudgetPeriod AddBudget );
use Koha::Database;
use Koha::DateUtils qw( dt_from_string output_pref );
-use Koha::Library;
use Koha::Libraries;
+use Koha::Patrons;
use Koha::Suggestions;
BEGIN {
categorycode => $patron_category->{categorycode},
branchcode => 'CPL',
};
-my $borrowernumber = AddMember(%$member);
+my $borrowernumber = Koha::Patron->new($member)->store->borrowernumber;
my $biblionumber1 = 1;
my $my_suggestion = {
use C4::Biblio;
use C4::Context;
-use C4::Members;
use Koha::Library;
+use Koha::Patrons;
use Koha::Patron::Categories;
-use Koha::Virtualshelf;
use Koha::Virtualshelves;
use_ok( "C4::Utils::DataTables::VirtualShelves" );
userid => 'john.smith',
);
-$john_doe{borrowernumber} = AddMember( %john_doe );
-$jane_doe{borrowernumber} = AddMember( %jane_doe );
-$john_smith{borrowernumber} = AddMember( %john_smith );
+$john_doe{borrowernumber} = Koha::Patron->new( \%john_doe )->store->borrowernumber;
+$jane_doe{borrowernumber} = Koha::Patron->new( \%jane_doe )->store->borrowernumber;
+$john_smith{borrowernumber} = Koha::Patron->new( \%john_smith )->store->borrowernumber;
my $shelf1 = Koha::Virtualshelf->new(
{