use Koha::Number::Price;
use Koha::Libraries;
use Koha::CsvProfiles;
+use Koha::Patrons;
use C4::Koha;
branch).
First parameter can be either a borrowernumber or a hashref as returned by
-C4::Members::GetMember.
+Koha::Patron->unblessed
Second parameter can be either a basketno or a hashref as returned by
C4::Acquisition::GetBasket.
my ($borrower, $basket, $userflags) = @_;
if (!ref $borrower) {
- $borrower = C4::Members::GetMember(borrowernumber => $borrower);
+ $borrower = Koha::Patrons->find( $borrower );
}
if (!ref $basket) {
$basket = GetBasket($basket);
return 0 unless ($basket and $borrower);
- my $borrowernumber = $borrower->{borrowernumber};
+ my $borrowernumber = $borrower->borrowernumber;
my $basketno = $basket->{basketno};
my $AcqViewBaskets = C4::Context->preference('AcqViewBaskets');
my ($flags) = $sth->fetchrow_array;
$sth->finish;
- $userflags = C4::Auth::getuserflags($flags, $borrower->{userid}, $dbh);
+ $userflags = C4::Auth::getuserflags($flags, $borrower->userid, $dbh);
}
unless ($userflags->{superlibrarian}
}
if ($AcqViewBaskets eq 'branch' && defined $basket->{branch}
- && $basket->{branch} ne $borrower->{branchcode}) {
+ && $basket->{branch} ne $borrower->branchcode) {
return 0;
}
}
my $order = GetOrder( $ordernumber );
for my $borrowernumber (@borrowernumbers) {
- my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
- my $library = Koha::Libraries->find( $borrower->{branchcode} )->unblessed;
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $library = $patron->library->unblessed;
my $biblio = Koha::Biblios->find( $order->{biblionumber} )->unblessed;
my $letter = C4::Letters::GetPreparedLetter(
module => 'acquisition',
letter_code => 'ACQ_NOTIF_ON_RECEIV',
branchcode => $library->{branchcode},
- lang => $borrower->{lang},
+ lang => $patron->lang,
tables => {
'branches' => $library,
- 'borrowers' => $borrower,
+ 'borrowers' => $patron->unblessed,
'biblio' => $biblio,
'aqorders' => $order,
},
my $borrowernumber;
if ($user) {
- require C4::Members;
# It's possible for $user to be the borrowernumber if they don't have a
# userid defined (and are logging in through some other method, such
my $borrower;
$borrowernumber = getborrowernumber($user) if defined($user);
if ( !defined($borrowernumber) && defined($user) ) {
- $borrower = C4::Members::GetMember( borrowernumber => $user );
+ $borrower = Koha::Patrons->find( $user );
if ($borrower) {
+ $borrower = $borrower->unblessed;
$borrowernumber = $user;
# A bit of a hack, but I don't know there's a nicer way
$user = $borrower->{firstname} . ' ' . $borrower->{surname};
}
} else {
- $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
+ $borrower = Koha::Patrons->find( $borrowernumber );
+ $borrower->unblessed if $borrower; # FIXME Otherwise, what to do?
}
# user info
#use warnings; FIXME - Bug 2505
use C4::Context;
use Koha::Database;
+use Koha::Patrons;
use C4::Debug;
use vars qw(@ISA @EXPORT);
my ($borrower, $budget, $userflags) = @_;
if (not ref $borrower) {
- $borrower = C4::Members::GetMember(borrowernumber => $borrower);
+ $borrower = Koha::Patrons->find( $borrower )->unblessed;
}
if (not ref $budget) {
$budget = GetBudget($budget);
my ($borrower, $budget, $userflags) = @_;
if (not ref $borrower) {
- $borrower = C4::Members::GetMember(borrowernumber => $borrower);
+ $borrower = Koha::Patrons->find( $borrower )->unblessed;
}
if (not ref $budget) {
$budget = GetBudget($budget);
=over 4
-=item C<$borrower> hash with borrower informations (from GetMember)
+=item C<$borrower> hash with borrower informations (from Koha::Patron->unblessed)
=item C<$barcode> is the bar code of the book being issued.
elsif ( $issue ) {
# issued to someone else
- my $currborinfo = C4::Members::GetMember( borrowernumber => $issue->borrowernumber );
+ my $patron = Koha::Patrons->find( $issue->borrowernumber );
my ( $can_be_returned, $message ) = CanBookBeReturned( $item, C4::Context->userenv->{branch} );
$issuingimpossible{branch_to_return} = $message;
} else {
$needsconfirmation{ISSUED_TO_ANOTHER} = 1;
- $needsconfirmation{issued_firstname} = $currborinfo->{'firstname'};
- $needsconfirmation{issued_surname} = $currborinfo->{'surname'};
- $needsconfirmation{issued_cardnumber} = $currborinfo->{'cardnumber'};
- $needsconfirmation{issued_borrowernumber} = $currborinfo->{'borrowernumber'};
+ $needsconfirmation{issued_firstname} = $patron->firstname;
+ $needsconfirmation{issued_surname} = $patron->surname;
+ $needsconfirmation{issued_cardnumber} = $patron->cardnumber;
+ $needsconfirmation{issued_borrowernumber} = $patron->borrowernumber;
}
}
if ($restype) {
my $resbor = $res->{'borrowernumber'};
if ( $resbor ne $borrower->{'borrowernumber'} ) {
- my ( $resborrower ) = C4::Members::GetMember( borrowernumber => $resbor );
+ my $patron = Koha::Patrons->find( $resbor );
if ( $restype eq "Waiting" )
{
# The item is on reserve and waiting, but has been
# reserved by some other patron.
$needsconfirmation{RESERVE_WAITING} = 1;
- $needsconfirmation{'resfirstname'} = $resborrower->{'firstname'};
- $needsconfirmation{'ressurname'} = $resborrower->{'surname'};
- $needsconfirmation{'rescardnumber'} = $resborrower->{'cardnumber'};
- $needsconfirmation{'resborrowernumber'} = $resborrower->{'borrowernumber'};
+ $needsconfirmation{'resfirstname'} = $patron->firstname;
+ $needsconfirmation{'ressurname'} = $patron->surname;
+ $needsconfirmation{'rescardnumber'} = $patron->cardnumber;
+ $needsconfirmation{'resborrowernumber'} = $patron->borrowernumber;
$needsconfirmation{'resbranchcode'} = $res->{branchcode};
$needsconfirmation{'reswaitingdate'} = $res->{'waitingdate'};
}
elsif ( $restype eq "Reserved" ) {
# The item is on reserve for someone else.
$needsconfirmation{RESERVED} = 1;
- $needsconfirmation{'resfirstname'} = $resborrower->{'firstname'};
- $needsconfirmation{'ressurname'} = $resborrower->{'surname'};
- $needsconfirmation{'rescardnumber'} = $resborrower->{'cardnumber'};
- $needsconfirmation{'resborrowernumber'} = $resborrower->{'borrowernumber'};
- $needsconfirmation{'resbranchcode'} = $res->{branchcode};
- $needsconfirmation{'resreservedate'} = $res->{'reservedate'};
+ $needsconfirmation{'resfirstname'} = $patron->firstname;
+ $needsconfirmation{'ressurname'} = $patron->surname;
+ $needsconfirmation{'rescardnumber'} = $patron->cardnumber;
+ $needsconfirmation{'resborrowernumber'} = $patron->borrowernumber;
+ $needsconfirmation{'resbranchcode'} = $patron->branchcode;
+ $needsconfirmation{'resreservedate'} = $res->{reservedate};
}
}
}
=over 4
-=item C<$borrower> is a hash with borrower informations (from GetMember).
+=item C<$borrower> is a hash with borrower informations (from Koha::Patron->unblessed).
=item C<$barcode> is the barcode of the item being issued.
}
$branch = C4::Context->userenv->{'branch'} unless $branch; # we trust userenv to be a safe fallback/default
my $messages;
- my $borrower;
+ my $patron;
my $doreturn = 1;
my $validTransfert = 0;
my $stat_type = 'return';
my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } );
if ( $issue ) {
- $borrower = C4::Members::GetMember( borrowernumber => $issue->borrowernumber )
+ $patron = Koha::Patrons->find( $issue->borrowernumber )
or die "Data inconsistency: barcode $barcode (itemnumber:$itemnumber) claims to be issued to non-existent borrowernumber '" . $issue->borrowernumber . "'\n"
. Dumper($issue->unblessed) . "\n";
} else {
my $returnbranch = $item->{$hbr} || $branch ;
# if $hbr was "noreturn" or any other non-item table value, then it should 'float' (i.e. stay at this branch)
- my $borrowernumber = $borrower->{'borrowernumber'} || undef; # we don't know if we had a borrower or not
+ my $borrowernumber = $patron ? $patron->borrowernumber : undef; # we don't know if we had a borrower or not
+ my $patron_unblessed = $patron ? $patron->unblessed : {};
my $yaml = C4::Context->preference('UpdateNotForLoanStatusOnCheckin');
if ($yaml) {
Rightbranch => $message
};
$doreturn = 0;
- return ( $doreturn, $messages, $issue, $borrower );
+ return ( $doreturn, $messages, $issue, $patron_unblessed);
}
if ( $item->{'withdrawn'} ) { # book has been cancelled
if ($doreturn) {
my $is_overdue;
die "The item is not issed and cannot be returned" unless $issue; # Just in case...
- $borrower or warn "AddReturn without current borrower";
+ $patron or warn "AddReturn without current borrower";
my $circControlBranch;
if ($dropbox) {
# define circControlBranch only if dropbox mode is set
# don't allow dropbox mode to create an invalid entry in issues (issuedate > today)
# FIXME: check issuedate > returndate, factoring in holidays
- $circControlBranch = _GetCircControlBranch($item,$borrower);
+ $circControlBranch = _GetCircControlBranch($item,$patron_unblessed);
$is_overdue = $issue->is_overdue( $dropboxdate );
} else {
$is_overdue = $issue->is_overdue;
}
- if ($borrowernumber) {
+ if ($patron) {
eval {
my $issue_id = MarkIssueReturned( $borrowernumber, $item->{'itemnumber'},
- $circControlBranch, $return_date, $borrower->{'privacy'} );
+ $circControlBranch, $return_date, $patron->privacy );
$issue->issue_id($issue_id);
};
unless ( $@ ) {
if ( ( C4::Context->preference('CalculateFinesOnReturn') && $is_overdue ) || $return_date ) {
- _CalculateAndUpdateFine( { issue => $issue, item => $item, borrower => $borrower, return_date => $return_date } );
+ _CalculateAndUpdateFine( { issue => $issue, item => $item, borrower => $patron_unblessed, return_date => $return_date } );
}
} else {
$messages->{'Wrongbranch'} = {
Rightbranch => $message
};
carp $@;
- return ( 0, { WasReturned => 0 }, $issue, $borrower );
+ return ( 0, { WasReturned => 0 }, $issue, $patron_unblessed );
}
# FIXME is the "= 1" right? This could be the borrower hash.
if ( $issue and $issue->is_overdue ) {
# fix fine days
$today = $dropboxdate if $dropbox;
- my ($debardate,$reminder) = _debar_user_on_return( $borrower, $item, dt_from_string($issue->date_due), $today );
+ my ($debardate,$reminder) = _debar_user_on_return( $patron_unblessed, $item, dt_from_string($issue->date_due), $today );
if ($reminder){
$messages->{'PrevDebarred'} = $debardate;
} else {
$messages->{'Debarred'} = $debardate if $debardate;
}
# there's no overdue on the item but borrower had been previously debarred
- } elsif ( $issue->date_due and $borrower->{'debarred'} ) {
- if ( $borrower->{debarred} eq "9999-12-31") {
- $messages->{'ForeverDebarred'} = $borrower->{'debarred'};
+ } elsif ( $issue->date_due and $patron->debarred ) {
+ if ( $patron->debarred eq "9999-12-31") {
+ $messages->{'ForeverDebarred'} = $patron->debarred;
} else {
- my $borrower_debar_dt = dt_from_string( $borrower->{debarred} );
+ my $borrower_debar_dt = dt_from_string( $patron->debarred );
$borrower_debar_dt->truncate(to => 'day');
my $today_dt = $today->clone()->truncate(to => 'day');
if ( DateTime->compare( $borrower_debar_dt, $today_dt ) != -1 ) {
- $messages->{'PrevDebarred'} = $borrower->{'debarred'};
+ $messages->{'PrevDebarred'} = $patron->debarred;
}
}
}
ccode => $item->{ ccode }
});
- # Send a check-in slip. # NOTE: borrower may be undef. probably shouldn't try to send messages then.
- my $circulation_alert = 'C4::ItemCirculationAlertPreference';
- my %conditions = (
- branchcode => $branch,
- categorycode => $borrower->{categorycode},
- item_type => $item->{itype},
- notification => 'CHECKIN',
- );
- if ($doreturn && $circulation_alert->is_enabled_for(\%conditions)) {
- SendCirculationAlert({
- type => 'CHECKIN',
- item => $item,
- borrower => $borrower,
- branch => $branch,
- });
- }
-
- logaction("CIRCULATION", "RETURN", $borrowernumber, $item->{'itemnumber'})
- if C4::Context->preference("ReturnLog");
-
+ # Send a check-in slip. # NOTE: borrower may be undef. Do not try to send messages then.
+ if ( $patron ) {
+ my $circulation_alert = 'C4::ItemCirculationAlertPreference';
+ my %conditions = (
+ branchcode => $branch,
+ categorycode => $patron->categorycode,
+ item_type => $item->{itype},
+ notification => 'CHECKIN',
+ );
+ if ($doreturn && $circulation_alert->is_enabled_for(\%conditions)) {
+ SendCirculationAlert({
+ type => 'CHECKIN',
+ item => $item,
+ borrower => $patron->unblessed,
+ branch => $branch,
+ });
+ }
+
+ logaction("CIRCULATION", "RETURN", $borrowernumber, $item->{'itemnumber'})
+ if C4::Context->preference("ReturnLog");
+ }
+
# Remove any OVERDUES related debarment if the borrower has no overdues
if ( $borrowernumber
- && $borrower->{'debarred'}
+ && $patron->debarred
&& C4::Context->preference('AutoRemoveOverduesRestrictions')
&& !Koha::Patrons->find( $borrowernumber )->has_overdues
&& @{ GetDebarments({ borrowernumber => $borrowernumber, type => 'OVERDUES' }) }
}
}
- return ( $doreturn, $messages, $issue, $borrower );
+ return ( $doreturn, $messages, $issue, ( $patron ? $patron->unblessed : {} ));
}
=head2 MarkIssueReturned
# Note that a warning should appear on the about page (System information tab).
$anonymouspatron = C4::Context->preference('AnonymousPatron');
die "Fatal error: the patron ($borrowernumber) has requested their circulation history be anonymized on check-in, but the AnonymousPatron system preference is empty or not set correctly."
- unless C4::Members::GetMember( borrowernumber => $anonymouspatron );
+ unless Koha::Patrons->find( $anonymouspatron );
}
my $database = Koha::Database->new();
my $schema = $database->schema;
return ( 0, 'onsite_checkout' ) if $issue->onsite_checkout;
$borrowernumber ||= $issue->borrowernumber;
- my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber )
+ my $patron = Koha::Patrons->find( $borrowernumber )
or return;
my ( $resfound, $resrec, undef ) = C4::Reserves::CheckReserves($itemnumber);
my $item = GetItem($i);
next if IsItemOnHoldAndFound($i);
for my $b (@borrowernumbers) {
- my $borr = $borrowers{$b}//= C4::Members::GetMember(borrowernumber => $b);
+ my $borr = $borrowers{$b} //= Koha::Patrons->find( $b )->unblessed;
next unless IsAvailableForItemLevelRequest($item, $borr);
next unless CanItemBeReserved($b,$i);
return ( 1, undef ) if $override_limit;
- my $branchcode = _GetCircControlBranch( $item, $borrower );
+ my $branchcode = _GetCircControlBranch( $item, $patron->unblessed );
my $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule(
- { categorycode => $borrower->{categorycode},
+ { categorycode => $patron->categorycode,
itemtype => $item->{itype},
branchcode => $branchcode
}
my $overduesblockrenewing = C4::Context->preference('OverduesBlockRenewing');
my $restrictionblockrenewing = C4::Context->preference('RestrictionBlockRenewing');
- my $patron = Koha::Patrons->find($borrowernumber);
+ $patron = Koha::Patrons->find($borrowernumber); # FIXME Is this really useful?
my $restricted = $patron->is_debarred;
my $hasoverdues = $patron->has_overdues;
if ( C4::Context->preference('OPACFineNoRenewalsBlockAutoRenew') ) {
my $fine_no_renewals = C4::Context->preference("OPACFineNoRenewals");
- my ( $amountoutstanding ) = C4::Members::GetMemberAccountRecords($borrower->{borrowernumber});
+ my ( $amountoutstanding ) = C4::Members::GetMemberAccountRecords($patron->borrowernumber);
if ( $amountoutstanding and $amountoutstanding > $fine_no_renewals ) {
return ( 0, "auto_too_much_oweing" );
}
return;
}
- my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber ) or return;
+ my $patron = Koha::Patrons->find( $borrowernumber ) or return; # FIXME Should do more than just return
+ my $patron_unblessed = $patron->unblessed;
if ( C4::Context->preference('CalculateFinesOnReturn') && $issue->is_overdue ) {
- _CalculateAndUpdateFine( { issue => $issue, item => $item, borrower => $borrower } );
+ _CalculateAndUpdateFine( { issue => $issue, item => $item, borrower => $patron_unblessed } );
}
_FixOverduesOnReturn( $borrowernumber, $itemnumber );
$datedue = (C4::Context->preference('RenewalPeriodBase') eq 'date_due') ?
dt_from_string( $issue->date_due, 'sql' ) :
DateTime->now( time_zone => C4::Context->tz());
- $datedue = CalcDateDue($datedue, $itemtype, _GetCircControlBranch($item, $borrower), $borrower, 'is a renewal');
+ $datedue = CalcDateDue($datedue, $itemtype, _GetCircControlBranch($item, $patron_unblessed), $patron_unblessed, 'is a renewal');
}
# Update the issues record to have the new due date, and a new count
# Send a renewal slip according to checkout alert preferencei
if ( C4::Context->preference('RenewalSendNotice') eq '1' ) {
- $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
my $circulation_alert = 'C4::ItemCirculationAlertPreference';
my %conditions = (
branchcode => $branch,
- categorycode => $borrower->{categorycode},
+ categorycode => $patron->categorycode,
item_type => $item->{itype},
notification => 'CHECKOUT',
);
{
type => 'RENEWAL',
item => $item,
- borrower => $borrower,
+ borrower => $patron->unblessed,
branch => $branch,
}
);
}
# Remove any OVERDUES related debarment if the borrower has no overdues
- $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
- if ( $borrowernumber
- && $borrower->{'debarred'}
- && !Koha::Patrons->find( $borrowernumber )->has_overdues
+ if ( $patron
+ && $patron->is_debarred
+ && ! $patron->has_overdues
&& @{ GetDebarments({ borrowernumber => $borrowernumber, type => 'OVERDUES' }) }
) {
DelUniqueDebarment({ borrowernumber => $borrowernumber, type => 'OVERDUES' });
my $renewsallowed = 0;
my $renewsleft = 0;
- my $borrower = C4::Members::GetMember( borrowernumber => $bornum);
- my $item = GetItem($itemno);
+ my $patron = Koha::Patrons->find( $bornum );
+ my $item = GetItem($itemno);
+
+ return (0, 0, 0) unless $patron or $item; # Wrong call, no renewal allowed
# Look in the issues table for this item, lent to this borrower,
# and not yet returned.
my $data = $sth->fetchrow_hashref;
$renewcount = $data->{'renewals'} if $data->{'renewals'};
# $item and $borrower should be calculated
- my $branchcode = _GetCircControlBranch($item, $borrower);
+ my $branchcode = _GetCircControlBranch($item, $patron->unblessed);
my $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule(
- { categorycode => $borrower->{categorycode},
+ { categorycode => $patron->categorycode,
itemtype => $item->{itype},
branchcode => $branchcode
}
);
- $renewsallowed = $issuing_rule ? $issuing_rule->renewalsallowed : undef; # FIXME Just replace undef with 0 to get what we expected. But what about the side-effects? TODO LATER
+ $renewsallowed = $issuing_rule ? $issuing_rule->renewalsallowed : 0;
$renewsleft = $renewsallowed - $renewcount;
if($renewsleft < 0){ $renewsleft = 0; }
return ( $renewcount, $renewsallowed, $renewsleft );
my $itemissue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return;
$borrowernumber ||= $itemissue->borrowernumber;
- my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber )
+ my $patron = Koha::Patrons->find( $borrowernumber )
or return;
- my $branchcode = _GetCircControlBranch( $item, $borrower );
+ my $branchcode = _GetCircControlBranch( $item, $patron->unblessed );
my $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule(
- { categorycode => $borrower->{categorycode},
+ { categorycode => $patron->categorycode,
itemtype => $item->{itype},
branchcode => $branchcode
}
my $itemissue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return;
$borrowernumber ||= $itemissue->borrowernumber;
- my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber )
+ my $patron = Koha::Patrons->find( $borrowernumber )
or return;
- my $branchcode = _GetCircControlBranch( $item, $borrower );
+ my $branchcode = _GetCircControlBranch( $item, $patron->unblessed );
my $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule(
- { categorycode => $borrower->{categorycode},
+ { categorycode => $patron->categorycode,
itemtype => $item->{itype},
branchcode => $branchcode
}
my ( $borrowernumber, $itemnum ) = @_;
MarkIssueReturned( $borrowernumber, $itemnum );
- my $borrower = C4::Members::GetMember( 'borrowernumber'=>$borrowernumber );
+ my $patron = Koha::Patrons->find( $borrowernumber );
my $item = C4::Items::GetItem( $itemnum );
my $old_note = ($item->{'paidfor'} && ($item->{'paidfor'} ne q{})) ? $item->{'paidfor'}.' / ' : q{};
my @datearr = localtime(time);
my $date = ( 1900 + $datearr[5] ) . "-" . ( $datearr[4] + 1 ) . "-" . $datearr[3];
- my $bor = "$borrower->{'firstname'} $borrower->{'surname'} $borrower->{'cardnumber'}";
+ my $bor = $patron->firstname . ' ' . $patron->surname . ' ' . $patron->cardnumber;
ModItem({ paidfor => $old_note."Paid for by $bor $date" }, undef, $itemnum);
}
# If a borrower lost the item, add a replacement cost to the their record
if ( my $borrowernumber = $issues->{borrowernumber} ){
- my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
+ my $patron = Koha::Patrons->find( $borrowernumber );
if (C4::Context->preference('WhenLostForgiveFine')){
my $fix = _FixOverduesOnReturn($borrowernumber, $itemnumber, 1, 0); # 1, 0 = exemptfine, no-dropbox
#warn " $issues->{'borrowernumber'} / $itemnumber ";
}
- MarkIssueReturned($borrowernumber,$itemnumber,undef,undef,$borrower->{'privacy'}) if $mark_returned;
+ MarkIssueReturned($borrowernumber,$itemnumber,undef,undef,$patron->privacy) if $mark_returned;
}
}
sub ProcessOfflineIssue {
my $operation = shift;
- my $borrower = C4::Members::GetMember( cardnumber => $operation->{cardnumber} );
+ my $patron = Koha::Patrons->find( { cardnumber => $operation->{cardnumber} } );
- if ( $borrower->{borrowernumber} ) {
+ if ( $patron ) {
my $item = Koha::Items->find({ barcode => $operation->{barcode} });
unless ($item) {
return "Barcode not found.";
my $itemnumber = $item->itemnumber;
my $issue = GetOpenIssue( $itemnumber );
- if ( $issue and ( $issue->{borrowernumber} ne $borrower->{borrowernumber} ) ) { # Item already issued to another borrower, mark it returned
+ if ( $issue and ( $issue->{borrowernumber} ne $patron->borrowernumber ) ) { # Item already issued to another patron mark it returned
MarkIssueReturned(
$issue->{borrowernumber},
$itemnumber,
);
}
AddIssue(
- $borrower,
+ $patron->unblessed,
$operation->{'barcode'},
undef,
1,
use C4::Members;
use C4::Biblio;
use Koha::DateUtils;
+use Koha::Patrons;
use List::Util qw(shuffle);
use List::MoreUtils qw(any);
my $barcode = $item->{barcode};
my $itemcallnumber = $item->{itemcallnumber};
- my $borrower = GetMember('borrowernumber'=>$borrowernumber);
- my $cardnumber = $borrower->{'cardnumber'};
- my $surname = $borrower->{'surname'};
- my $firstname = $borrower->{'firstname'};
- my $phone = $borrower->{'phone'};
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $cardnumber = $patron->cardnumber;
+ my $surname = $patron->surname;
+ my $firstname = $patron->firstname;
+ my $phone = $patron->phone;
my $bib = GetBiblioData($biblionumber);
my $title = $bib->{title};
sub LookupPatron {
my ($cgi) = @_;
- # Get the borrower...
- my $borrower = GetMember($cgi->param('id_type') => $cgi->param('id'));
- if ( not $borrower->{'borrowernumber'} ) {
+ my $patrons = Koha::Patrons->search( { $cgi->param('id_type') => $cgi->param('id') } );
+ unless ( $patrons->count ) {
return { message => 'PatronNotFound' };
}
- # Build the hashref
- my $patron->{'id'} = $borrower->{'borrowernumber'};
- return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
-
- # ...and return his ID
- return $patron;
+ return { id => $patrons->next->borrowernumber };
}
=head2 AuthenticatePatron
my ($status, $cardnumber, $userid) = C4::Auth::checkpw( C4::Context->dbh, $username, $password );
if ( $status ) {
# Get the borrower
- my $borrower = GetMember( cardnumber => $cardnumber );
- my $patron->{'id'} = $borrower->{'borrowernumber'};
- return $patron;
+ my $patron = Koha::Patrons->find( { cardnumber => $cardnumber } );
+ return { id => $patron->borrowernumber };
}
else {
return { code => 'PatronNotFound' };
# Get Member details
my $borrowernumber = $cgi->param('patron_id');
- my $borrower = GetMember( borrowernumber => $borrowernumber );
- return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
my $patron = Koha::Patrons->find( $borrowernumber );
+ return { code => 'PatronNotFound' } unless $patron;
# Cleaning the borrower hashref
+ my $borrower = $patron->unblessed;
my $flags = C4::Members::patronflags( $borrower );
$borrower->{'charges'} = $flags->{'CHARGES'}->{'amount'};
my $library = Koha::Libraries->find( $borrower->{branchcode} );
# Get Member details
my $borrowernumber = $cgi->param('patron_id');
- my $borrower = GetMember( borrowernumber => $borrowernumber );
- return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ return { code => 'PatronNotFound' } unless $patron;
# Return the results
return {
- type => $$borrower{categorycode},
+ type => $patron->categorycode,
status => 0, # TODO
- expiry => $$borrower{dateexpiry},
+ expiry => $patron->dateexpiry,
};
}
# Get the member, or return an error code if not found
my $borrowernumber = $cgi->param('patron_id');
- my $borrower = GetMember( borrowernumber => $borrowernumber );
- return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
-
my $patron = Koha::Patrons->find( $borrowernumber );
+ return { code => 'PatronNotFound' } unless $patron;
+ my $borrower = $patron->unblessed;
# Get the item, or return an error code if not found
my $itemnumber = $cgi->param('item_id');
my $item = GetItem( $itemnumber );
# Get borrower infos or return an error code
my $borrowernumber = $cgi->param('patron_id');
- my $borrower = GetMember( borrowernumber => $borrowernumber );
- return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ return { code => 'PatronNotFound' } unless $patron;
# Get the item, or return an error code
my $itemnumber = $cgi->param('item_id');
# Get the borrower or return an error code
my $borrowernumber = $cgi->param('patron_id');
- my $borrower = GetMember( borrowernumber => $borrowernumber );
- return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ return { code => 'PatronNotFound' } unless $patron;
# Get the biblio record, or return an error code
my $biblionumber = $cgi->param('bib_id');
$branch = $cgi->param('pickup_location');
return { code => 'LocationNotFound' } unless Koha::Libraries->find($branch);
} else { # if the request provide no branch, use the borrower's branch
- $branch = $$borrower{branchcode};
+ $branch = $patron->branchcode;
}
# Add the reserve
# Get the borrower or return an error code
my $borrowernumber = $cgi->param('patron_id');
- my $borrower = GetMember( borrowernumber => $borrowernumber );
- return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ return { code => 'PatronNotFound' } unless $patron;
# Get the biblio or return an error code
my $biblionumber = $cgi->param('bib_id');
$branch = $cgi->param('pickup_location');
return { code => 'LocationNotFound' } unless Koha::Libraries->find($branch);
} else { # if the request provide no branch, use the borrower's branch
- $branch = $$borrower{branchcode};
+ $branch = $patron->branchcode;
}
# Add the reserve
# Get the borrower or return an error code
my $borrowernumber = $cgi->param('patron_id');
- my $borrower = GetMember( borrowernumber => $borrowernumber );
- return { code => 'PatronNotFound' } unless $$borrower{borrowernumber};
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ return { code => 'PatronNotFound' } unless $patron;
# Get the reserve or return an error code
my $reserve_id = $cgi->param('item_id');
use Koha::Email;
use Koha::DateUtils qw( format_sqldatetime dt_from_string );
+use Koha::Patrons;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
# find the list of borrowers to alert
my $alerts = getalert( '', 'issue', $subscriptionid );
foreach (@$alerts) {
- my $borinfo = C4::Members::GetMember('borrowernumber' => $_->{'borrowernumber'});
- my $email = $borinfo->{email} or next;
+ my $patron = Koha::Patrons->find( $_->{borrowernumber} );
+ next unless $patron; # Just in case
+ my $email = $patron->email or next;
# warn "sending issues...";
my $userenv = C4::Context->userenv;
'branches' => $_->{branchcode},
'biblio' => $biblionumber,
'biblioitems' => $biblionumber,
- 'borrowers' => $borinfo,
+ 'borrowers' => $patron->unblessed,
'subscription' => $subscriptionid,
'serial' => $externalid,
},
}
elsif ( lc( $message->{'message_transport_type'} ) eq 'sms' ) {
if ( C4::Context->preference('SMSSendDriver') eq 'Email' ) {
- my $member = C4::Members::GetMember( 'borrowernumber' => $message->{'borrowernumber'} );
- my $sms_provider = Koha::SMS::Providers->find( $member->{'sms_provider_id'} );
+ my $patron = Koha::Patrons->find( $message->{borrowernumber} );
+ my $sms_provider = Koha::SMS::Providers->find( $patron->sms_provider_id );
unless ( $sms_provider ) {
warn sprintf( "Patron %s has no sms provider id set!", $message->{'borrowernumber'} ) if $params->{'verbose'} or $debug;
_set_message_status( { message_id => $message->{'message_id'}, status => 'failed' } );
next MESSAGE;
}
- $message->{to_address} ||= $member->{'smsalertnumber'};
- unless ( $message->{to_address} && $member->{'smsalertnumber'} ) {
+ $message->{to_address} ||= $patron->smsalertnumber;
+ unless ( $message->{to_address} && $patron->smsalertnumber ) {
_set_message_status( { message_id => $message->{'message_id'}, status => 'failed' } );
warn sprintf( "No smsalertnumber found for patron %s!", $message->{'borrowernumber'} ) if $params->{'verbose'} or $debug;
next MESSAGE;
my $message = shift or return;
my ($username, $password, $method) = @_;
- my $member = C4::Members::GetMember( 'borrowernumber' => $message->{'borrowernumber'} );
+ my $patron = Koha::Patrons->find( $message->{borrowernumber} );
my $to_address = $message->{'to_address'};
unless ($to_address) {
- unless ($member) {
+ unless ($patron) {
warn "FAIL: No 'to_address' and INVALID borrowernumber ($message->{borrowernumber})";
_set_message_status( { message_id => $message->{'message_id'},
status => 'failed' } );
my $branch_email = undef;
my $branch_replyto = undef;
my $branch_returnpath = undef;
- if ($member) {
- my $library = Koha::Libraries->find( $member->{branchcode} );
+ if ($patron) {
+ my $library = $patron->library;
$branch_email = $library->branchemail;
$branch_replyto = $library->branchreplyto;
$branch_returnpath = $library->branchreturnpath;
sub _send_message_by_sms {
my $message = shift or return;
- my $member = C4::Members::GetMember( 'borrowernumber' => $message->{'borrowernumber'} );
+ my $patron = Koha::Patrons->find( $message->{borrowernumber} );
- unless ( $member->{smsalertnumber} ) {
+ unless ( $patron and $patron->smsalertnumber ) {
_set_message_status( { message_id => $message->{'message_id'},
status => 'failed' } );
return;
return;
}
- my $success = C4::SMS->send_sms( { destination => $member->{'smsalertnumber'},
+ my $success = C4::SMS->send_sms( { destination => $patron->smsalertnumber,
message => $message->{'content'},
} );
_set_message_status( { message_id => $message->{'message_id'},
@ISA = qw(Exporter);
#Get data
push @EXPORT, qw(
- &GetMember
&GetPendingIssues
&GetAllIssues
}
-=head2 GetMember
-
- $borrower = &GetMember(%information);
-
-Retrieve the first patron record meeting on criteria listed in the
-C<%information> hash, which should contain one or more
-pairs of borrowers column names and values, e.g.,
-
- $borrower = GetMember(borrowernumber => id);
-
-C<&GetBorrower> returns a reference-to-hash whose keys are the fields of
-the C<borrowers> table in the Koha database.
-
-FIXME: GetMember() is used throughout the code as a lookup
-on a unique key such as the borrowernumber, but this meaning is not
-enforced in the routine itself.
-
-=cut
-
-#'
-sub GetMember {
- my ( %information ) = @_;
- if (exists $information{borrowernumber} && !defined $information{borrowernumber}) {
- #passing mysql's kohaadmin?? Makes no sense as a query
- return;
- }
- my $dbh = C4::Context->dbh;
- my $select =
- q{SELECT borrowers.*, categories.category_type, categories.description
- FROM borrowers
- LEFT JOIN categories on borrowers.categorycode=categories.categorycode WHERE };
- my $more_p = 0;
- my @values = ();
- for (keys %information ) {
- if ($more_p) {
- $select .= ' AND ';
- }
- else {
- $more_p++;
- }
-
- if (defined $information{$_}) {
- $select .= "$_ = ?";
- push @values, $information{$_};
- }
- else {
- $select .= "$_ IS NULL";
- }
- }
- $debug && warn $select, " ",values %information;
- my $sth = $dbh->prepare("$select");
- $sth->execute(@values);
- my $data = $sth->fetchall_arrayref({});
- #FIXME interface to this routine now allows generation of a result set
- #so whole array should be returned but bowhere in the current code expects this
- if (@{$data} ) {
- return $data->[0];
- }
-
- return;
-}
-
=head2 ModMember
my $success = ModMember(borrowernumber => $borrowernumber,
# Send e-mail to librarian if syspref is active
if(C4::Context->preference("emailLibrarianWhenHoldIsPlaced")){
- my $borrower = C4::Members::GetMember(borrowernumber => $borrowernumber);
- my $library = Koha::Libraries->find($borrower->{branchcode})->unblessed;
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $library = $patron->library;
if ( my $letter = C4::Letters::GetPreparedLetter (
module => 'reserves',
letter_code => 'HOLDPLACED',
branchcode => $branch,
- lang => $borrower->{lang},
+ lang => $patron->lang,
tables => {
- 'branches' => $library,
- 'borrowers' => $borrower,
+ 'branches' => $library->unblessed,
+ 'borrowers' => $patron->unblessed,
'biblio' => $biblionumber,
'biblioitems' => $biblionumber,
'items' => $checkitem,
},
) ) {
- my $admin_email_address = $library->{'branchemail'} || C4::Context->preference('KohaAdminEmailAddress');
+ my $admin_email_address = $library->branchemail || C4::Context->preference('KohaAdminEmailAddress');
C4::Letters::EnqueueLetter(
{ letter => $letter,
# item->{itype} will come for biblioitems if necessery
my $item = GetItem($itemnumber);
my $biblioData = C4::Biblio::GetBiblioData( $item->{biblionumber} );
- my $borrower = C4::Members::GetMember( 'borrowernumber' => $borrowernumber );
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $borrower = $patron->unblessed;
# If an item is damaged and we don't allow holds on damaged items, we can stop right here
return 'damaged'
if ( $res->{'itemnumber'} == $itemnumber && $res->{'priority'} == 0) {
return ( "Waiting", $res, \@reserves ); # Found it
} else {
- my $borrowerinfo;
+ my $patron;
my $iteminfo;
my $local_hold_match;
if ($LocalHoldsPriority) {
- $borrowerinfo = C4::Members::GetMember( borrowernumber => $res->{'borrowernumber'} );
+ $patron = Koha::Patrons->find( $res->{borrowernumber} );
$iteminfo = C4::Items::GetItem($itemnumber);
my $local_holds_priority_item_branchcode =
( $LocalHoldsPriorityPatronControl eq 'PickupLibrary' )
? $res->{branchcode}
: ( $LocalHoldsPriorityPatronControl eq 'HomeLibrary' )
- ? $borrowerinfo->{branchcode}
+ ? $patron->branchcode
: undef;
$local_hold_match =
$local_holds_priority_item_branchcode eq
if ( ( $res->{'priority'} && $res->{'priority'} < $priority ) || $local_hold_match ) {
$iteminfo ||= C4::Items::GetItem($itemnumber);
next if $res->{itemtype} && $res->{itemtype} ne _get_itype( $iteminfo );
- $borrowerinfo ||= C4::Members::GetMember( borrowernumber => $res->{'borrowernumber'} );
- my $branch = GetReservesControlBranch( $iteminfo, $borrowerinfo );
+ $patron ||= Koha::Patrons->find( $res->{borrowernumber} );
+ my $branch = GetReservesControlBranch( $iteminfo, $patron->unblessed );
my $branchitemrule = C4::Circulation::GetBranchItemRule($branch,$iteminfo->{'itype'});
next if ($branchitemrule->{'holdallowed'} == 0);
- next if (($branchitemrule->{'holdallowed'} == 1) && ($branch ne $borrowerinfo->{'branchcode'}));
+ next if (($branchitemrule->{'holdallowed'} == 1) && ($branch ne $patron->branchcode));
next if ( ($branchitemrule->{hold_fulfillment_policy} ne 'any') && ($res->{branchcode} ne $iteminfo->{ $branchitemrule->{hold_fulfillment_policy} }) );
$priority = $res->{'priority'};
$highest = $res;
my $hold = Koha::Holds->find($reserve_id);
my $borrowernumber = $hold->borrowernumber;
- my $borrower = C4::Members::GetMember(borrowernumber => $borrowernumber);
+ my $patron = Koha::Patrons->find( $borrowernumber );
# Try to get the borrower's email address
my $to_address = C4::Members::GetNoticeEmailAddress($borrowernumber);
my %letter_params = (
module => 'reserves',
branchcode => $hold->branchcode,
- lang => $borrower->{lang},
+ lang => $patron->lang,
tables => {
'branches' => $library,
- 'borrowers' => $borrower,
+ 'borrowers' => $patron->unblessed,
'biblio' => $hold->biblionumber,
'biblioitems' => $hold->biblionumber,
'reserves' => $hold->unblessed,
while ( my ( $mtt, $letter_code ) = each %{ $messagingprefs->{transports} } ) {
next if (
( $mtt eq 'email' and not $to_address ) # No email address
- or ( $mtt eq 'sms' and not $borrower->{smsalertnumber} ) # No SMS number
+ or ( $mtt eq 'sms' and not $patron->smsalertnumber ) # No SMS number
or ( $mtt eq 'phone' and C4::Context->preference('TalkingTechItivaPhoneNotification') ) # Notice is handled by TalkingTech_itiva_outbound.pl
);
my $issue = Koha::Checkouts->find( { itemnumber => $item->itemnumber } );
if ($issue) {
$self->{due_date} = dt_from_string( $issue->date_due, 'sql' )->truncate( to => 'minute' );
+ my $patron = Koha::Patrons->find( $issue->borrowernumber );
+ $self->{patron} = $patron->cardnumber;
}
- my $borrower = $issue ? GetMember( borrowernumber => $issue->borrowernumber ) : {};
- $self->{patron} = $borrower->{'cardnumber'};
my $biblio = Koha::Biblios->find( $self->{biblionumber} );
my $holds = $biblio->current_holds->unblessed;
$self->{hold_queue} = $holds;
return $output;
}
- my $holder = GetMember(borrowernumber=>$borrowernumber);
+ my $holder = Koha::Patrons->find( $borrowernumber );
unless ($holder) {
- syslog("LOG_ERR", "While checking hold, GetMember failed for borrowernumber '$borrowernumber'");
+ syslog("LOG_ERR", "While checking hold, failed to retrieve the patron with borrowernumber '$borrowernumber'");
return;
}
- my $email = $holder->{email} || '';
- my $phone = $holder->{phone} || '';
+ my $email = $holder->email || '';
+ my $phone = $holder->phone || '';
my $extra = ($email and $phone) ? " ($email, $phone)" : # both populated, employ comma
($email or $phone) ? " ($email$phone)" : # only 1 populated, we don't care which: no comma
"" ; # neither populated, empty string
- my $name = $holder->{firstname} ? $holder->{firstname} . ' ' : '';
- $name .= $holder->{surname} . $extra;
+ my $name = $holder->firstname ? $holder->firstname . ' ' : '';
+ $name .= $holder->surname . $extra;
return $name;
}
sub hold_patron_bcode {
my $self = shift;
my $borrowernumber = (@_ ? shift: $self->hold_patron_id()) or return;
- my $holder = GetMember(borrowernumber => $borrowernumber);
- if ($holder) {
- if ($holder->{cardnumber}) {
- return $holder->{cardnumber};
- }
+ my $holder = Koha::Patrons->find( $borrowernumber );
+ if ($holder and $holder->cardnumber ) {
+ return $holder->cardnumber;
}
return;
}
sub _barcode_to_borrowernumber {
my $known = shift;
return unless defined $known;
- my $member = GetMember(cardnumber=>$known) or return;
- return $member->{borrowernumber};
+ my $patron = Koha::Patrons->find( { cardnumber => $known } ) or return;
+ return $patron->borrowernumber
}
sub barcode_is_borrowernumber { # because hold_queue only has borrowernumber...
my $self = shift;
my ($class, $patron_id) = @_;
my $type = ref($class) || $class;
my $self;
- $kp = GetMember(cardnumber=>$patron_id) || GetMember(userid=>$patron_id);
- $debug and warn "new Patron (GetMember): " . Dumper($kp);
- unless (defined $kp) {
+ $kp = Koha::Patrons->find( { cardnumber => $patron_id } )
+ or Koha::Patrons->find( { userid => $patron_id } );
+ $debug and warn "new Patron: " . Dumper($kp->unblessed) if $kp;
+ unless ($kp) {
syslog("LOG_DEBUG", "new ILS::Patron(%s): no such patron", $patron_id);
return;
}
- $kp = GetMember( borrowernumber => $kp->{borrowernumber});
- $debug and warn "new Patron (GetMember): " . Dumper($kp);
+ $kp = $kp->unblessed;
my $pw = $kp->{password};
my $flags = C4::Members::patronflags( $kp );
my $debarred = defined($flags->{DBARRED});
use C4::SIP::ILS::Transaction;
use C4::Reserves; # AddReserve
-use C4::Members; # GetMember
+use Koha::Patrons;
use parent qw(C4::SIP::ILS::Transaction);
use Koha::Items;
$self->ok(0);
return $self;
}
- my $borrower = GetMember( 'cardnumber' => $self->{patron}->id );
- unless ($borrower) {
+ my $patron = Koha::Patrons->find( { cardnumber => $self->{patron}->id } );
+ unless ($patron) {
$self->screen_msg( 'No borrower matches cardnumber "' . $self->{patron}->id . '".' );
$self->ok(0);
return $self;
$self->ok(0);
return $self;
}
- AddReserve( $branch, $borrower->{borrowernumber}, $item->biblionumber );
+ AddReserve( $branch, $patron->borrowernumber, $item->biblionumber );
# unfortunately no meaningful return value
$self->ok(1);
$self->ok(0);
return $self;
}
- my $borrower = GetMember( 'cardnumber'=>$self->{patron}->id);
- unless ($borrower) {
+ my $patron = Koha::Patrons->find( { cardnumber => $self->{patron}->id } );
+ unless ($patron) {
$self->screen_msg('No borrower matches cardnumber "' . $self->{patron}->id . '".');
$self->ok(0);
return $self;
CancelReserve({
biblionumber => $item->biblionumber,
itemnumber => $self->{item}->id,
- borrowernumber => $borrower->{borrowernumber}
+ borrowernumber => $patron->borrowernumber
});
$self->ok(1);
$self->ok(0);
return $self;
}
- my $borrower = GetMember( 'cardnumber'=>$self->{patron}->id);
- unless ($borrower) {
+ my $patron = Koha::Patrons->find( { cardnumber => $self->{patron}->id } );
+ unless ($patron) {
$self->screen_msg('No borrower matches cardnumber "' . $self->{patron}->id . '".');
$self->ok(0);
return $self;
$self->ok(0);
return $self;
}
- ModReserve({ biblionumber => $item->biblionumber, borrowernumber => $borrower->{borrowernumber}, branchcode => $branch });
+ ModReserve({ biblionumber => $item->biblionumber, borrowernumber => $patron->borrowernumber, branchcode => $branch });
$self->ok(1);
return $self;
use strict;
use C4::Circulation;
-use C4::Members;
+use Koha::Patrons;
use Koha::DateUtils;
use parent qw(C4::SIP::ILS::Transaction);
sub do_renew {
my $self = shift;
- my $borrower = GetMember( cardnumber => $self->{patron}->id );
- return $self->do_renew_for($borrower);
+ my $patron = Koha::Patrons->find( { cardnumber => $self->{patron}->id } );
+ return $self->do_renew_for($patron->unblessed);
}
1;
use C4::SIP::ILS::Item;
-use C4::Members qw( GetMember );
+use Koha::Patrons;
use parent qw(C4::SIP::ILS::Transaction::Renew);
sub do_renew_all {
my $self = shift;
my $patron = $self->{patron}; # SIP's patron
- my $borrower = GetMember( cardnumber => $patron->id ); # Koha's patron
+ my $borrower = Koha::Patrons->find( { cardnumber => $patron->id } )->unblessed; # Koha's patron
my $all_ok = 1;
$self->{renewed} = [];
$self->{unrenewed} = [];
use C4::Debug;
use C4::Suggestions;
use Koha::Acquisition::Currencies;
+use Koha::Patrons;
my $query = CGI->new;
my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
foreach my $budget ( @{$budget_arr} ) {
next unless (CanUserUseBudget($loggedinuser, $budget, $userflags));
- my $member = GetMember( borrowernumber => $budget->{budget_owner_id} );
- if ($member) {
- $budget->{budget_owner_firstname} = $member->{'firstname'};
- $budget->{budget_owner_surname} = $member->{'surname'};
- $budget->{budget_owner_borrowernumber} = $member->{'borrowernumber'};
+ my $patron = Koha::Patrons->find( $budget->{budget_owner_id} );
+ if ( $patron ) {
+ # FIXME should pass the entire object into budget_owner
+ $budget->{budget_owner_firstname} = $patron->firstname;
+ $budget->{budget_owner_surname} = $patron->surname;
+ $budget->{budget_owner_borrowernumber} = $patron->borrowernumber;
}
if ( !defined $budget->{budget_amount} ) {
use Koha::Acquisition::Currencies;
use Koha::Acquisition::Order;
use Koha::Acquisition::Booksellers;
+use Koha::Patrons;
my $input = new CGI;
my ($template, $loggedinuser, $cookie, $userflags) = get_template_and_user({
}
} else {
# 3rd add order
- my $patron = C4::Members::GetMember( borrowernumber => $loggedinuser );
+ my $patron = Koha::Patrons->find( $loggedinuser );
# get quantity in the MARC record (1 if none)
my $quantity = GetMarcQuantity($marcrecord, C4::Context->preference('marcflavour')) || 1;
my %orderinfo = (
biblionumber => $biblionumber,
basketno => $cgiparams->{'basketno'},
quantity => $c_quantity,
- branchcode => $patron->{branchcode},
+ branchcode => $patron->branchcode,
budget_id => $c_budget_id,
uncertainprice => 1,
sort1 => $c_sort1,
my $budgets = GetBudgets();
my $budget_id = @$budgets[0]->{'budget_id'};
# build bookfund list
-my $borrower = GetMember( 'borrowernumber' => $loggedinuser );
-my ( $flags, $homebranch ) = ( $borrower->{'flags'}, $borrower->{'branchcode'} );
+my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
my $budget = GetBudget($budget_id);
# build budget list
my $budget_loop = [];
my $budgets_hierarchy = GetBudgetHierarchy;
foreach my $r ( @{$budgets_hierarchy} ) {
- next unless (CanUserUseBudget($borrower, $r, $userflags));
+ next unless (CanUserUseBudget($patron, $r, $userflags));
if ( !defined $r->{budget_amount} || $r->{budget_amount} == 0 ) {
next;
}
use C4::Contract;
use C4::Debug;
use C4::Biblio;
-use C4::Members qw/GetMember/; #needed for permissions checking for changing basketgroup of a basket
use C4::Items;
use C4::Suggestions;
use Koha::Biblios;
use Koha::Database;
use Koha::EDI qw( create_edi_order get_edifact_ean );
use Koha::CsvProfiles;
+use Koha::Patrons;
=head1 NAME
#if the basket is closed,and the user has the permission to edit basketgroups, display a list of basketgroups
my ($basketgroup, $basketgroups);
- my $staffuser = GetMember(borrowernumber => $loggedinuser);
- if ($basket->{closedate} && haspermission($staffuser->{userid}, { acquisition => 'group_manage'} )) {
+ my $patron = Koha::Patrons->find($loggedinuser);
+ if ($basket->{closedate} && haspermission($patron->userid, { acquisition => 'group_manage'} )) {
$basketgroups = GetBasketgroups($basket->{booksellerid});
for my $bg ( @{$basketgroups} ) {
if ($basket->{basketgroupid} && $basket->{basketgroupid} == $bg->{id}){
my @basketusers_ids = GetBasketUsers($basketno);
my @basketusers;
foreach my $basketuser_id (@basketusers_ids) {
- my $basketuser = GetMember(borrowernumber => $basketuser_id);
- push @basketusers, $basketuser if $basketuser;
+ # FIXME Could be improved with a search -in
+ my $basket_patron = Koha::Patrons->find( $basketuser_id );
+ push @basketusers, $basket_patron if $basket_patron;
}
my $active_currency = Koha::Acquisition::Currencies->get_active;
if ($basket->{basketgroupid}){
$basketgroup = GetBasketgroup($basket->{basketgroupid});
}
- my $borrower= GetMember('borrowernumber' => $loggedinuser);
my $budgets = GetBudgetHierarchy;
my $has_budgets = 0;
foreach my $r (@{$budgets}) {
use CGI qw ( -utf8 );
use C4::Acquisition qw/CloseBasketgroup ReOpenBasketgroup GetOrders GetBasketsByBasketgroup GetBasketsByBookseller ModBasketgroup NewBasketgroup DelBasketgroup GetBasketgroups ModBasket GetBasketgroup GetBasket GetBasketGroupAsCSV/;
-use C4::Members qw/GetMember/;
use Koha::EDI qw/create_edi_order get_edifact_ean/;
use Koha::Acquisition::Booksellers;
use Koha::ItemTypes;
+use Koha::Patrons;
our $input=new CGI;
$template->param( closedbg => 0);
}
# determine default billing and delivery places depending on librarian homebranch and existing basketgroup data
- my $borrower = GetMember( ( 'borrowernumber' => $loggedinuser ) );
- $billingplace = $billingplace || $borrower->{'branchcode'};
- $deliveryplace = $deliveryplace || $borrower->{'branchcode'};
+ my $patron = Koha::Patrons->find( $loggedinuser ); # FIXME Not needed if billingplace and deliveryplace are set
+ $billingplace = $billingplace || $patron->branchcode;
+ $deliveryplace = $deliveryplace || $patron->branchcode;
$template->param( billingplace => $billingplace );
$template->param( deliveryplace => $deliveryplace );
use CGI qw ( -utf8 );
use C4::Acquisition qw/ GetBasketsInfosByBookseller CanUserManageBasket /;
-use C4::Members qw/GetMember/;
use C4::Context;
use Koha::Acquisition::Booksellers;
+use Koha::Patrons;
my $query = CGI->new;
my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
}
my $uid;
+# FIXME This script should only be accessed by a valid logged in patron
if ($loggedinuser) {
- $uid = GetMember( borrowernumber => $loggedinuser )->{userid};
+ # FIXME Should not be needed, logged in patron should be cached
+ $uid = Koha::Patrons->find( $loggedinuser )->userid;
}
my $userenv = C4::Context::userenv;
for my $basket ( @{$baskets} ) {
if (CanUserManageBasket($loggedinuser, $basket, $userflags)) {
- my $member = GetMember( borrowernumber => $basket->{authorisedby} );
+ my $patron = Koha::Patrons->find( $basket->{authorisedby} );
foreach (qw(total_items total_biblios expected_items)) {
$basket->{$_} ||= 0;
}
- if($member) {
- $basket->{authorisedby_firstname} = $member->{firstname};
- $basket->{authorisedby_surname} = $member->{surname};
+ if ( $patron ) {
+ $basket->{authorisedby_firstname} = $patron->firstname;
+ $basket->{authorisedby_surname} = $patron->surname;
}
if ($basket->{basketgroupid}) {
my $basketgroup = C4::Acquisition::GetBasketgroup($basket->{basketgroupid});
use C4::Auth;
use C4::Output;
use C4::Koha;
-use C4::Members qw/ GetMember /;
use C4::Budgets qw/ GetBudgetHierarchy /;
use Koha::Acquisition::Booksellers;
use Koha::SearchEngine;
use Koha::SearchEngine::Search;
use Koha::SearchEngine::QueryBuilder;
+use Koha::Patrons;
my $input = new CGI;
}
-my $borrower= GetMember('borrowernumber' => $loggedinuser);
-my $budgets = GetBudgetHierarchy(q{},$borrower->{branchcode},$borrower->{borrowernumber});
+my $patron = Koha::Patrons->find( $loggedinuser );
+my $budgets = GetBudgetHierarchy(q{},$patron->branchcode,$patron->borrowernumber);
my $has_budgets = 0;
foreach my $r (@{$budgets}) {
if (!defined $r->{budget_amount} || $r->{budget_amount} == 0) {
use Koha::Acquisition::Booksellers;
use Koha::Acquisition::Currencies;
use Koha::ItemTypes;
+use Koha::Patrons;
our $input = new CGI;
my $booksellerid = $input->param('booksellerid'); # FIXME: else ERROR!
@order_user_ids = GetOrderUsers($ordernumber);
foreach my $order_user_id (@order_user_ids) {
- my $order_user = GetMember(borrowernumber => $order_user_id);
- push @order_users, $order_user if $order_user;
+ # FIXME Could be improved with search -in
+ my $order_patron = Koha::Patrons->find( $order_user_id );
+ push @order_users, $order_patron if $order_patron;
}
}
my $active_currency = Koha::Acquisition::Currencies->get_active;
# build bookfund list
-my $borrower= GetMember('borrowernumber' => $loggedinuser);
-my ( $flags, $homebranch )= ($borrower->{'flags'},$borrower->{'branchcode'});
+my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
my $budget = GetBudget($budget_id);
# build budget list
my $budget_loop = [];
my $budgets = GetBudgetHierarchy;
foreach my $r (@{$budgets}) {
- next unless (CanUserUseBudget($borrower, $r, $userflags));
+ next unless (CanUserUseBudget($patron, $r, $userflags));
if (!defined $r->{budget_amount} || $r->{budget_amount} <0) {
next;
}
use Koha::Acquisition::Booksellers;
use Koha::DateUtils qw( dt_from_string );
use Koha::ItemTypes;
+use Koha::Patrons;
my $input = new CGI;
my $suggestion = GetSuggestionInfoFromBiblionumber($order->{biblionumber});
my $authorisedby = $order->{authorisedby};
-my $member = GetMember( borrowernumber => $authorisedby );
+my $authorised_patron = Koha::Patrons->find( $authorisedby );
my $budget = GetBudget( $order->{budget_id} );
ecost => $ecost,
unitprice => $unitprice,
tax_rate => $tax_rate,
- memberfirstname => $member->{firstname} || "",
- membersurname => $member->{surname} || "",
+ memberfirstname => $authorised_patron->firstname || "",
+ membersurname => $authorised_patron->surname || "",
invoiceid => $invoice->{invoiceid},
invoice => $invoice->{invoicenumber},
datereceived => $datereceived,
gst_values => \@gst_values,
);
-my $borrower = GetMember( 'borrowernumber' => $loggedinuser );
+my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
my @budget_loop;
my $periods = GetBudgetPeriods( );
foreach my $period (@$periods) {
my $budget_hierarchy = GetBudgetHierarchy( $period->{'budget_period_id'} );
my @funds;
foreach my $r ( @{$budget_hierarchy} ) {
- next unless ( CanUserUseBudget( $borrower, $r, $userflags ) );
+ next unless ( CanUserUseBudget( $patron, $r, $userflags ) );
if ( !defined $r->{budget_amount} || $r->{budget_amount} == 0 ) {
next;
}
use C4::Output;
use C4::Context;
use C4::Acquisition;
-use C4::Members;
use Koha::Acquisition::Booksellers;
my $input = new CGI;
for( my $i = 0 ; $i < $basketscount ; $i++ ){
my %line;
%line = %{ $baskets->[$i] };
- my $createdby = GetMember(borrowernumber => $line{authorisedby});
- $line{createdby} = "$createdby->{surname}, $createdby->{firstname}";
+ my $createdby = Koha::Patrons->find( $line{authorisedby} );
+ $line{createdby} = $createdby ? $createdby->surname . ', ' . $createdby->firstname : '';
push @basketsloop, \%line unless $line{closedate};
}
$template->param(
use C4::Auth;
use C4::Acquisition;
use C4::Budgets;
-use C4::Members;
use C4::Context;
use C4::Output;
use C4::Koha;
use C4::Debug;
use Koha::Acquisition::Currencies;
+use Koha::Patrons;
my $input = new CGI;
my $dbh = C4::Context->dbh;
# USED FOR PERMISSION COMPARISON LATER
my $borrower_id = $template->{VARS}->{'USER_INFO'}->{'borrowernumber'};
-my $user = C4::Members::GetMember( borrowernumber => $borrower_id );
-my $user_branchcode = $user->{'branchcode'};
$template->param(
show_mine => $show_mine,
exit;
}
$dropbox_disabled = BudgetHasChildren($budget_id);
- my $borrower = &GetMember( borrowernumber=>$budget->{budget_owner_id} );
- $budget->{budget_owner_name} = ( $borrower ? $borrower->{'firstname'} . ' ' . $borrower->{'surname'} : '' );
+ my $patron = Koha::Patrons->find( $budget->{budget_owner_id} );
+ $budget->{budget_owner_name} = ( $patron ? $patron->firstname . ' ' . $patron->surname : '' );
}
# build budget hierarchy
my @budgetusers = GetBudgetUsers($budget->{budget_id});
my @budgetusers_loop;
foreach my $borrowernumber (@budgetusers) {
- my $member = C4::Members::GetMember(
- borrowernumber => $borrowernumber);
+ my $patron = Koha::Patrons->find( $borrowernumber );
push @budgetusers_loop, {
- firstname => $member->{firstname},
- surname => $member->{surname},
+ firstname => $patron->firstname, # FIXME Should pass the patron object
+ surname => $patron->surname,
borrowernumber => $borrowernumber
};
}
use C4::Koha;
use C4::Biblio;
use C4::Items;
-use C4::Members; # to use GetMember
use C4::Serials; # CountSubscriptionFromBiblionumber
use C4::Search; # enabled_staff_search_views
use C4::Acquisition qw(GetOrdersByBiblionumber);
use Koha::Biblios;
+use Koha::Patrons;
use Koha::RecordProcessor;
});
if($query->cookie("holdfor")){
- my $holdfor_patron = GetMember('borrowernumber' => $query->cookie("holdfor"));
+ my $holdfor_patron = Koha::Patrons->find( $query->cookie("holdfor") );
$template->param(
holdfor => $query->cookie("holdfor"),
- holdfor_surname => $holdfor_patron->{'surname'},
- holdfor_firstname => $holdfor_patron->{'firstname'},
- holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+ holdfor_surname => $holdfor_patron->surname,
+ holdfor_firstname => $holdfor_patron->firstname,
+ holdfor_cardnumber => $holdfor_patron->cardnumber,
);
}
use C4::Biblio;
use C4::Items;
use C4::Acquisition;
-use C4::Members; # to use GetMember
use C4::Serials; #uses getsubscriptionsfrombiblionumber GetSubscriptionsFromBiblionumber
use C4::Search; # enabled_staff_search_views
use Koha::Biblios;
use Koha::BiblioFrameworks;
+use Koha::Patrons;
use List::MoreUtils qw( uniq );
my $biblio = GetBiblioData($biblionumber);
if($query->cookie("holdfor")){
- my $holdfor_patron = GetMember('borrowernumber' => $query->cookie("holdfor"));
+ my $holdfor_patron = Koha::Patrons->find( $query->cookie("holdfor") );
$template->param(
holdfor => $query->cookie("holdfor"),
- holdfor_surname => $holdfor_patron->{'surname'},
- holdfor_firstname => $holdfor_patron->{'firstname'},
- holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+ holdfor_surname => $holdfor_patron->surname,
+ holdfor_firstname => $holdfor_patron->firstname,
+ holdfor_cardnumber => $holdfor_patron->cardnumber,
);
}
use C4::Items;
use C4::Circulation;
use C4::Reserves;
-use C4::Members; # to use GetMember
use C4::Serials;
use C4::XISBN qw(get_xisbns get_biblionumber_from_isbn);
use C4::External::Amazon;
}
if($query->cookie("holdfor")){
- my $holdfor_patron = GetMember('borrowernumber' => $query->cookie("holdfor"));
+ my $holdfor_patron = Koha::Patrons->find( $query->cookie("holdfor") );
$template->param(
+ # FIXME Should pass the patron object
holdfor => $query->cookie("holdfor"),
- holdfor_surname => $holdfor_patron->{'surname'},
- holdfor_firstname => $holdfor_patron->{'firstname'},
- holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+ holdfor_surname => $holdfor_patron->surname,
+ holdfor_firstname => $holdfor_patron->firstname,
+ holdfor_cardnumber => $holdfor_patron->cardnumber,
);
}
my $item_object = Koha::Items->find( $item->{itemnumber} );
my $holds = $item_object->current_holds;
if ( my $first_hold = $holds->next ) {
- my $ItemBorrowerReserveInfo = C4::Members::GetMember( borrowernumber => $first_hold->borrowernumber); # FIXME could be improved
+ my $patron = Koha::Patrons->find( $first_hold->borrowernumber );
$item->{backgroundcolor} = 'reserved';
$item->{reservedate} = $first_hold->reservedate;
$item->{ReservedForBorrowernumber} = $first_hold->borrowernumber;
- $item->{ReservedForSurname} = $ItemBorrowerReserveInfo->{'surname'};
- $item->{ReservedForFirstname} = $ItemBorrowerReserveInfo->{'firstname'};
+ $item->{ReservedForSurname} = $patron->surname;
+ $item->{ReservedForFirstname} = $patron->firstname;
$item->{ExpectedAtLibrary} = $first_hold->branchcode;
- $item->{Reservedcardnumber} = $ItemBorrowerReserveInfo->{'cardnumber'};
+ $item->{Reservedcardnumber} = $patron->cardnumber;
# Check waiting status
$item->{waitingdate} = $first_hold->waitingdate;
}
use C4::Acquisition qw(GetOrdersByBiblionumber);
use Koha::Biblios;
+use Koha::Patrons;
my $query = new CGI;
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
}
if ( $query->cookie("holdfor") ) {
- my $holdfor_patron =
- GetMember( 'borrowernumber' => $query->cookie("holdfor") );
+ my $holdfor_patron = Koha::Patrons->find( $query->cookie("holdfor") );
$template->param(
holdfor => $query->cookie("holdfor"),
- holdfor_surname => $holdfor_patron->{'surname'},
- holdfor_firstname => $holdfor_patron->{'firstname'},
- holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+ holdfor_surname => $holdfor_patron->surname,
+ holdfor_firstname => $holdfor_patron->firstname,
+ holdfor_cardnumber => $holdfor_patron->cardnumber,
);
}
use C4::Output;
use C4::Biblio;
use C4::Items;
-use C4::Members; # to use GetMember
use C4::Search; # enabled_staff_search_views
use C4::Acquisition qw(GetOrdersByBiblionumber);
use Koha::Biblios;
use Koha::BiblioFrameworks;
+use Koha::Patrons;
my $query = new CGI;
my $dbh = C4::Context->dbh;
my $biblio = GetBiblioData($biblionumber);
if($query->cookie("holdfor")){
- my $holdfor_patron = GetMember('borrowernumber' => $query->cookie("holdfor"));
+ my $holdfor_patron = Koha::Patrons->find( $query->cookie("holdfor") );
$template->param(
holdfor => $query->cookie("holdfor"),
- holdfor_surname => $holdfor_patron->{'surname'},
- holdfor_firstname => $holdfor_patron->{'firstname'},
- holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+ holdfor_surname => $holdfor_patron->surname,
+ holdfor_firstname => $holdfor_patron->firstname,
+ holdfor_cardnumber => $holdfor_patron->cardnumber,
);
}
use C4::Output;
use C4::Auth;
use C4::Serials;
-use C4::Members; # to use GetMember
use C4::Search; # enabled_staff_search_views
use Koha::Acquisition::Booksellers;
);
if($query->cookie("holdfor")){
- my $holdfor_patron = GetMember('borrowernumber' => $query->cookie("holdfor"));
+ my $holdfor_patron = Koha::Patrons->find( $query->cookie("holdfor") );
$template->param(
holdfor => $query->cookie("holdfor"),
- holdfor_surname => $holdfor_patron->{'surname'},
- holdfor_firstname => $holdfor_patron->{'firstname'},
- holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+ holdfor_surname => $holdfor_patron->surname,
+ holdfor_firstname => $holdfor_patron->firstname,
+ holdfor_cardnumber => $holdfor_patron->cardnumber,
);
}
unless ($hidepatronname) {
if ( $item->{'borrowernumber'} ) {
- my $curr_borrower = GetMember('borrowernumber' => $item->{'borrowernumber'} );
- $item->{borrowerfirstname} = $curr_borrower->{'firstname'};
- $item->{borrowersurname} = $curr_borrower->{'surname'};
+ my $curr_borrower = Koha::Patrons->find( $item->{borrowernumber} );
+ $item->{borrowerfirstname} = $curr_borrower->firstname;
+ $item->{borrowersurname} = $curr_borrower->surname;
}
}
use C4::Search;
use C4::Languages qw(getLanguages);
use C4::Koha;
-use C4::Members qw(GetMember);
use URI::Escape;
use POSIX qw(ceil floor);
use C4::Search::History;
use Koha::ItemTypes;
use Koha::LibraryCategories;
-use Koha::Virtualshelves;
+use Koha::Patrons;
use Koha::SearchEngine::Search;
use Koha::SearchEngine::QueryBuilder;
+use Koha::Virtualshelves;
use URI::Escape;
}
if($cgi->cookie("holdfor")){
- my $holdfor_patron = GetMember('borrowernumber' => $cgi->cookie("holdfor"));
+ my $holdfor_patron = Koha::Patrons->find( $cgi->cookie("holdfor") );
$template->param(
holdfor => $cgi->cookie("holdfor"),
- holdfor_surname => $holdfor_patron->{'surname'},
- holdfor_firstname => $holdfor_patron->{'firstname'},
- holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+ holdfor_surname => $holdfor_patron->surname,
+ holdfor_firstname => $holdfor_patron->firstname,
+ holdfor_cardnumber => $holdfor_patron->cardnumber,
);
}
use Koha::Items;
use Koha::ItemTypes;
use Koha::Libraries;
+use Koha::Patrons;
use List::MoreUtils qw/any/;
use C4::Search;
use Storable qw(thaw freeze);
# Does the user have a restricted item editing permission?
-my $uid = $loggedinuser ? GetMember( borrowernumber => $loggedinuser )->{userid} : undef;
+my $uid = Koha::Patrons->find( $loggedinuser )->userid;
my $restrictededition = $uid ? haspermission($uid, {'editcatalogue' => 'edit_items_restricted'}) : undef;
# In case user is a superlibrarian, editing is not restricted
$restrictededition = 0 if ($restrictededition != 0 && C4::Context->IsSuperLibrarian());
use Koha::BiblioFrameworks;
use Koha::AuthorisedValues;
use Koha::Items;
+use Koha::Patrons;
###############################################
# Getting state
elsif ( $code eq 'WasReturned' ) {
$err{errwasreturned} = 1;
$err{borrowernumber} = $messages->{'WasReturned'};
- my $borrower = GetMember('borrowernumber'=>$messages->{'WasReturned'});
- $err{title} = $borrower->{'title'};
- $err{firstname} = $borrower->{'firstname'};
- $err{surname} = $borrower->{'surname'};
- $err{cardnumber} = $borrower->{'cardnumber'};
+ my $patron = Koha::Patrons->find( $messages->{'WasReturned'} );
+ if ( $patron ) { # Just in case...
+ $err{title} = $patron->title;
+ $err{firstname} = $patron->firstname;
+ $err{surname} = $patron->surname;
+ $err{cardnumber} = $patron->cardnumber;
+ }
}
$err{errdesteqholding} = ( $code eq 'DestinationEqualsHolding' );
push( @errmsgloop, \%err );
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
+# FIXME There are too many calls to Koha::Patrons->find in this script
+
use strict;
use warnings;
use CGI qw ( -utf8 );
use C4::Members::Attributes qw(GetBorrowerAttributes);
use Koha::AuthorisedValues;
use Koha::CsvProfiles;
-use Koha::Patron;
+use Koha::Patrons;
use Koha::Patron::Debarments qw(GetDebarments);
use Koha::DateUtils;
use Koha::Database;
use Koha::BiblioFrameworks;
use Koha::Items;
use Koha::Patron::Messages;
-use Koha::Patron::Images;
use Koha::SearchEngine;
use Koha::SearchEngine::Search;
use Koha::Patron::Modifications;
my $template_name = q|circ/circulation.tt|;
my $borrowernumber = $query->param('borrowernumber');
-my $borrower = $borrowernumber ? GetMember( borrowernumber => $borrowernumber ) : undef;
+my $patron = $borrowernumber ? Koha::Patrons->find( $borrowernumber ) : undef;
my $batch = $query->param('batch');
my $batch_allowed = 0;
if ( $batch && C4::Context->preference('BatchCheckouts') ) {
$template_name = q|circ/circulation_batch_checkouts.tt|;
my @batch_category_codes = split '\|', C4::Context->preference('BatchCheckoutsValidCategories');
- if ( grep {/^$borrower->{categorycode}$/} @batch_category_codes ) {
+ my $categorycode = $patron->categorycode;
+ if ( $categorycode && grep {/^$categorycode$/} @batch_category_codes ) {
$batch_allowed = 1;
} else {
$barcodes = [];
#
my $message;
if ($findborrower) {
- my $borrower = C4::Members::GetMember( cardnumber => $findborrower );
- if ( $borrower ) {
- $borrowernumber = $borrower->{borrowernumber};
+ my $patron = Koha::Patrons->find( { cardnumber => $findborrower } );
+ if ( $patron ) {
+ $borrowernumber = $patron->borrowernumber;
} else {
my $dt_params = { iDisplayLength => -1 };
my $results = C4::Utils::DataTables::Members::search(
}
# get the borrower information.....
-my $patron;
if ($borrowernumber) {
$patron = Koha::Patrons->find( $borrowernumber );
- $borrower = GetMember( borrowernumber => $borrowernumber );
my $overdues = $patron->get_overdues;
my $issues = $patron->checkouts;
my $balance = $patron->account->balance;
# check for NotifyBorrowerDeparture
elsif ( $patron->is_going_to_expire ) {
# borrower card soon to expire warn librarian
- $template->param( "warndeparture" => $borrower->{dateexpiry} ,
+ $template->param( "warndeparture" => $patron->dateexpiry ,
);
if (C4::Context->preference('ReturnBeforeExpiry')){
$template->param("returnbeforeexpiry" => 1);
if ( $patron and $patron->is_debarred ) {
$template->param(
- 'userdebarred' => $borrower->{debarred},
- 'debarredcomment' => $borrower->{debarredcomment},
+ 'userdebarred' => $patron->debarred,
+ 'debarredcomment' => $patron->debarredcomment,
);
- if ( $borrower->{debarred} ne "9999-12-31" ) {
- $template->param( 'userdebarreddate' => $borrower->{debarred} );
+ if ( $patron->debarred ne "9999-12-31" ) {
+ $template->param( 'userdebarreddate' => $patron->debarred );
}
}
my $template_params = { barcode => $barcode };
# always check for blockers on issuing
my ( $error, $question, $alerts, $messages ) = CanBookBeIssued(
- $borrower,
+ $patron->unblessed,
$barcode, $datedue,
$inprocess,
undef,
}
unless($confirm_required) {
my $switch_onsite_checkout = exists $messages->{ONSITE_CHECKOUT_WILL_BE_SWITCHED};
- my $issue = AddIssue( $borrower, $barcode, $datedue, $cancelreserve, undef, undef, { onsite_checkout => $onsite_checkout, auto_renew => $session->param('auto_renew'), switch_onsite_checkout => $switch_onsite_checkout, } );
+ my $issue = AddIssue( $patron->unblessed, $barcode, $datedue, $cancelreserve, undef, undef, { onsite_checkout => $onsite_checkout, auto_renew => $session->param('auto_renew'), switch_onsite_checkout => $switch_onsite_checkout, } );
$template_params->{issue} = $issue;
$session->clear('auto_renew');
$inprocess = 1;
}
}
-# reload the borrower info for the sake of reseting the flags.....
-if ($borrowernumber) {
- $borrower = GetMember( borrowernumber => $borrowernumber );
-}
-
##################################################################################
# BUILD HTML
# show all reserves of this borrower, and the position of the reservation ....
WaitingHolds => $waiting_holds,
);
- $template->param( adultborrower => 1 ) if ( $borrower->{category_type} eq 'A' || $borrower->{category_type} eq 'I' );
+ my $category_type = $patron->category->category_type;
+ $template->param( adultborrower => 1 ) if ( $category_type eq 'A' || $category_type eq 'I' );
}
#title
-my $flags = $borrower ? C4::Members::patronflags( $borrower ) : {};
+my $flags = $patron ? C4::Members::patronflags( $patron->unblessed ) : {};
foreach my $flag ( sort keys %$flags ) {
$flags->{$flag}->{'message'} =~ s#\n#<br />#g;
if ( $flags->{$flag}->{'noissues'} ) {
my ( $total, $accts, $numaccts) = GetMemberAccountRecords( $borrowernumber );
-if ( $borrowernumber && $borrower->{'category_type'} eq 'C') {
+if ( $patron && $patron->category->category_type eq 'C') {
my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']});
$template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1;
$template->param( 'catcode' => $patron_categories->next ) if $patron_categories->count == 1;
Koha::Database->new()->schema()->resultset('Issue')
->count( { borrowernumber => \@relatives } );
-my $av = Koha::AuthorisedValues->search({ category => 'ROADTYPE', authorised_value => $borrower->{streettype} });
-my $roadtype = $av->count ? $av->next->lib : '';
-
-$template->param(%$borrower);
+if ( $patron ) {
+ my $av = Koha::AuthorisedValues->search({ category => 'ROADTYPE', authorised_value => $patron->streettype });
+ my $roadtype = $av->count ? $av->next->lib : '';
+ $template->param(
+ %{ $patron->unblessed },
+ borrower => $patron->unblessed,
+ roadtype => $roadtype,
+ patron => $patron,
+ categoryname => $patron->category->description,
+ expiry => $patron->dateexpiry,
+ is_child => ( $patron->category->category_type eq 'C' ),
+ picture => ( $patron->image ? 1 : 0 ),
+ );
+}
# Restore date if changed by holds and/or save stickyduedate to session
if ($restoreduedatespec || $stickyduedate) {
}
$template->param(
- patron => $patron,
messages => $messages,
- borrower => $borrower,
borrowernumber => $borrowernumber,
- categoryname => $borrower->{'description'},
branch => $branch,
was_renewed => scalar $query->param('was_renewed') ? 1 : 0,
- expiry => $borrower->{'dateexpiry'},
- roadtype => $roadtype,
amountold => $amountold,
barcodes => $barcodes,
stickyduedate => $stickyduedate,
message => $message,
totaldue => sprintf('%.2f', $total),
inprocess => $inprocess,
- is_child => ($borrowernumber && $borrower->{'category_type'} eq 'C'),
$view => 1,
batch_allowed => $batch_allowed,
batch => $batch,
relatives_borrowernumbers => \@relatives,
);
-my $patron_image = Koha::Patron::Images->find($borrower->{borrowernumber});
-$template->param( picture => 1 ) if $patron_image;
if ( C4::Context->preference("ExportCircHistory") ) {
$template->param(csv_profiles => [ Koha::CsvProfiles->search({ type => 'marc' }) ]);
use strict;
use warnings;
+# FIXME There are weird things going on with $patron and $borrowernumber in this script
+
use Carp 'verbose';
$SIG{ __DIE__ } = sub { Carp::confess( @_ ) };
# check if we have other reserves for this document, if we have a return send the message of transfer
my ( $messages, $nextreservinfo ) = GetOtherReserves($itemnumber);
- my $borr = GetMember( borrowernumber => $nextreservinfo );
- my $name = $borr->{'surname'} . ", " . $borr->{'title'} . " " . $borr->{'firstname'};
+ my $patron = Koha::Patrons->find( $nextreservinfo );
+ my $name = $patron->surname . ", " . $patron->title . " " . $patron->firstname;
if ( $messages->{'transfert'} ) {
$template->param(
itemtitle => $biblio->title,
iteminfo => $biblio->author,
name => $name,
borrowernumber => $borrowernumber,
- borcnum => $borr->{'cardnumber'},
- borfirstname => $borr->{'firstname'},
- borsurname => $borr->{'surname'},
- borcategory => $borr->{'description'},
+ borcnum => $patron->cardnumber,
+ borfirstname => $patron->firstname,
+ borsurname => $patron->surname,
+ borcategory => $patron->category->description,
diffbranch => 1,
);
}
);
my $reserve = $messages->{'ResFound'};
- my $borr = C4::Members::GetMember( borrowernumber => $reserve->{'borrowernumber'} );
- my $name = $borr->{'surname'} . ", " . $borr->{'title'} . " " . $borr->{'firstname'};
+ if ( $reserve ) {
+ my $patron = Koha::Patrons->find( $reserve->{'borrowernumber'} );
+ my $name = $patron->surname . ", " . $patron->title . " " . $patron->firstname;
+ $template->param(
+ # FIXME The full patron object should be passed to the template
+ wname => $name,
+ wborfirstname => $patron->firstname,
+ wborsurname => $patron->surname,
+ wborcategory => $patron->category->description,
+ wbortitle => $patron->title,
+ wborphone => $patron->phone,
+ wboremail => $patron->email,
+ streetnumber => $patron->streetnumber,
+ address => $patron->address,
+ address2 => $patron->address2,
+ city => $patron->city,
+ zipcode => $patron->zipcode,
+ state => $patron->state,
+ country => $patron->country,
+ wborrowernumber => $reserve->{'borrowernumber'},
+ wborcnum => $patron->cardnumber,
+ );
+ }
$template->param(
- wname => $name,
- wborfirstname => $borr->{'firstname'},
- wborsurname => $borr->{'surname'},
- wborcategory => $borr->{'description'},
- wbortitle => $borr->{'title'},
- wborphone => $borr->{'phone'},
- wboremail => $borr->{'email'},
- streetnumber => $borr->{streetnumber},
- streettype => $borr->{streettype},
- address => $borr->{'address'},
- address2 => $borr->{'address2'},
- city => $borr->{'city'},
- zipcode => $borr->{'zipcode'},
- state => $borr->{'state'},
- country => $borr->{'country'},
- wborrowernumber => $reserve->{'borrowernumber'},
- wborcnum => $borr->{'cardnumber'},
- wtransfertFrom => $userenv_branch,
+ wtransfertFrom => $userenv_branch,
);
}
#
if ( $messages->{'ResFound'}) {
my $reserve = $messages->{'ResFound'};
- my $borr = C4::Members::GetMember( borrowernumber => $reserve->{'borrowernumber'} );
+ my $patron = Koha::Patrons->find( $reserve->{borrowernumber} );
my $holdmsgpreferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $reserve->{'borrowernumber'}, message_name => 'Hold_Filled' } );
if ( $reserve->{'ResFound'} eq "Waiting" or $reserve->{'ResFound'} eq "Reserved" ) {
if ( $reserve->{'ResFound'} eq "Waiting" ) {
# same params for Waiting or Reserved
$template->param(
+ # FIXME The full patron object should be passed to the template
found => 1,
- name => $borr->{'surname'} . ", " . $borr->{'title'} . " " . $borr->{'firstname'},
- borfirstname => $borr->{'firstname'},
- borsurname => $borr->{'surname'},
- borcategory => $borr->{'description'},
- bortitle => $borr->{'title'},
- borphone => $borr->{'phone'},
- boremail => $borr->{'email'},
- streetnumber => $borr->{streetnumber},
- streettype => $borr->{streettype},
- address => $borr->{'address'},
- address2 => $borr->{'address2'},
- city => $borr->{'city'},
- zipcode => $borr->{'zipcode'},
- state => $borr->{'state'},
- country => $borr->{'country'},
- borcnum => $borr->{'cardnumber'},
- debarred => $borr->{'debarred'},
- gonenoaddress => $borr->{'gonenoaddress'},
+ name => $patron->surname . ", " . $patron->title . " " . $patron->firstname,
+ borfirstname => $patron->firstname,
+ borsurname => $patron->surname,
+ borcategory => $patron->category->description,
+ bortitle => $patron->title,
+ borphone => $patron->phone,
+ boremail => $patron->email,
+ boraddress => $patron->address,
+ boraddress2 => $patron->address2,
+ streetnumber => $patron->streetnumber,
+ city => $patron->city,
+ zipcode => $patron->zipcode,
+ state => $patron->state,
+ country => $patron->country,
+ borcnum => $patron->cardnumber,
+ debarred => $patron->debarred,
+ gonenoaddress => $patron->gonenoaddress,
barcode => $barcode,
destbranch => $reserve->{'branchcode'},
borrowernumber => $reserve->{'borrowernumber'},
$ri{hour} = $duedate->hour();
$ri{minute} = $duedate->minute();
$ri{duedate} = output_pref($duedate);
- my $b = C4::Members::GetMember( borrowernumber => $riborrowernumber{$_} );
+ my $patron = Koha::Patrons->find( $riborrowernumber{$_} );
unless ( $dropboxmode ) {
$ri{return_overdue} = 1 if (DateTime->compare($duedate, DateTime->now()) == -1);
} else {
$ri{return_overdue} = 1 if (DateTime->compare($duedate, $dropboxdate) == -1);
}
- $ri{borrowernumber} = $b->{'borrowernumber'};
- $ri{borcnum} = $b->{'cardnumber'};
- $ri{borfirstname} = $b->{'firstname'};
- $ri{borsurname} = $b->{'surname'};
- $ri{bortitle} = $b->{'title'};
- $ri{bornote} = $b->{'borrowernotes'};
- $ri{borcategorycode}= $b->{'categorycode'};
+ $ri{borrowernumber} = $patron->borrowernumber;
+ $ri{borcnum} = $patron->cardnumber;
+ $ri{borfirstname} = $patron->firstname;
+ $ri{borsurname} = $patron->surname;
+ $ri{bortitle} = $patron->title;
+ $ri{bornote} = $patron->borrowernotes;
+ $ri{borcategorycode}= $patron->categorycode;
$ri{borissuescount} = Koha::Checkouts->count( { borrowernumber => $b->{'borrowernumber'} } );
}
else {
use Koha::Libraries;
use Koha::DateUtils;
use Koha::BiblioFrameworks;
+use Koha::Patrons;
my $input = new CGI;
my $itemnumber = $input->param('itemnumber');
# we check if we have a reserv for this transfer
my $holds = $item->current_holds;
if ( my $first_hold = $holds->next ) {
- my $getborrower = C4::Members::GetMember( borrowernumber => $first_hold->borrowernumber );
- $getransf{'borrowernum'} = $getborrower->{'borrowernumber'};
- $getransf{'borrowername'} = $getborrower->{'surname'};
- $getransf{'borrowerfirstname'} = $getborrower->{'firstname'};
- $getransf{'borrowermail'} = $getborrower->{'email'} if $getborrower->{'email'};
- $getransf{'borrowerphone'} = $getborrower->{'phone'};
+ my $patron = Koha::Patrons->find( $first_hold->borrowernumber );
+ # FIXME The full patron object should be passed to the template
+ $getransf{'borrowernum'} = $patron->borrowernumber;
+ $getransf{'borrowername'} = $patron->surname;
+ $getransf{'borrowerfirstname'} = $patron->firstname;
+ $getransf{'borrowermail'} = $patron->email if $patron->email;
+ $getransf{'borrowerphone'} = $patron->phone;
}
push( @transferloop, \%getransf );
}
use Koha::BiblioFrameworks;
use Koha::Items;
use Koha::ItemTypes;
+use Koha::Patrons;
my $input = new CGI;
borrowernum => $borrowernum,
);
- my $getborrower = GetMember(borrowernumber => $num->{'borrowernumber'});
+ my $patron = Koha::Patrons->find( $num->{borrowernumber} );
my $itemtype = Koha::ItemTypes->find( $item->effective_itemtype );
$getreserv{'waitingdate'} = $num->{'waitingdate'};
my ( $expire_year, $expire_month, $expire_day ) = split (/-/, $num->{'expirationdate'});
if ( $homebranch ne $holdingbranch ) {
$getreserv{'dotransfer'} = 1;
}
- $getreserv{'borrowername'} = $getborrower->{'surname'};
- $getreserv{'borrowerfirstname'} = $getborrower->{'firstname'};
- $getreserv{'borrowerphone'} = $getborrower->{'phone'};
+ $getreserv{'borrowername'} = $patron->surname;
+ $getreserv{'borrowerfirstname'} = $patron->firstname;
+ $getreserv{'borrowerphone'} = $patron->phone;
my $borEmail = GetFirstValidEmailAddress( $borrowernum );
# if we have a result
if ($nextreservinfo) {
my %res;
- my $borrowerinfo = C4::Members::GetMember( borrowernumber => $nextreservinfo );
+ my $patron = Koha::Patrons->find( $nextreservinfo );
my $title = Koha::Items->find( $item )->biblio->title;
if ( $messages->{'transfert'} ) {
$res{messagetransfert} = $messages->{'transfert'};
$res{message} = 1;
$res{nextreservnumber} = $nextreservinfo;
- $res{nextreservsurname} = $borrowerinfo->{'surname'};
- $res{nextreservfirstname} = $borrowerinfo->{'firstname'};
+ $res{nextreservsurname} = $patron->surname;
+ $res{nextreservfirstname} = $patron->firstname;
$res{nextreservitem} = $item;
$res{nextreservtitle} = $title;
$res{waiting} = $messages->{'waiting'} ? 1 : 0;
use C4::Members;
use C4::Accounts;
use C4::Members::Attributes qw(GetBorrowerAttributes);
-use Koha::Patron::Images;
-
+use Koha::Patrons;
use Koha::Patron::Categories;
my $input=new CGI;
my $borrowernumber=$input->param('borrowernumber');
my $action = $input->param('action') || '';
-#get borrower details
-my $data=GetMember('borrowernumber' => $borrowernumber);
+#get patron details
+my $patron = Koha::Patrons->find( $borrowernumber );
if ( $action eq 'reverse' ) {
ReversePayment( $input->param('accountlines_id') );
}
-if ( $data->{'category_type'} eq 'C') {
+if ( $patron->category->category_type eq 'C') {
my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']});
$template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1;
$template->param( 'catcode' => $patron_categories->next ) if $patron_categories->count == 1;
}
}
-$template->param( adultborrower => 1 ) if ( $data->{'category_type'} eq 'A' || $data->{'category_type'} eq 'I' );
+$template->param( adultborrower => 1 ) if ( $patron->category->category_type =~ /^(A|I)$/ );
-my $patron_image = Koha::Patron::Images->find($data->{borrowernumber});
-$template->param( picture => 1 ) if $patron_image;
+$template->param( picture => 1 ) if $patron->image;
if (C4::Context->preference('ExtendedPatronAttributes')) {
my $attributes = GetBorrowerAttributes($borrowernumber);
);
}
-$template->param(%$data);
+$template->param(%{ $patron->unblessed });
$template->param(
finesview => 1,
borrowernumber => $borrowernumber,
total => sprintf("%.2f",$total),
totalcredit => $totalcredit,
- is_child => ($data->{'category_type'} eq 'C'),
+ is_child => ($patron->category->category_type eq 'C'),
reverse_col => $reverse_col,
accounts => $accts,
RoutingSerials => C4::Context->preference('RoutingSerials'),
use C4::Members;
use Module::Load;
use Koha::Patrons;
-use Koha::Patron::Images;
use Koha::Token;
if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) {
my $issues = GetPendingIssues($member); # FIXME: wasteful call when really, we only want the count
my $countissues = scalar(@$issues);
-my $bor = C4::Members::GetMember( borrowernumber => $member );
-my $flags = C4::Members::patronflags( $bor );
+my $patron = Koha::Patrons->find( $member );
+my $flags = C4::Members::patronflags( $patron->unblessed );
my $userenv = C4::Context->userenv;
-if ($bor->{category_type} eq "S") {
+if ($patron->category->category_type eq "S") {
unless(C4::Auth::haspermission($userenv->{'id'},{'staffaccess'=>1})) {
print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member&error=CANT_DELETE_STAFF");
exit 0; # Exit without error
if (C4::Context->preference("IndependentBranches")) {
my $userenv = C4::Context->userenv;
- if ( !C4::Context->IsSuperLibrarian() && $bor->{'branchcode'}){
- unless ($userenv->{branch} eq $bor->{'branchcode'}){
+ if ( !C4::Context->IsSuperLibrarian() && $patron->branchcode){
+ unless ($userenv->{branch} eq $patron->branchcode){
print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member&error=CANT_DELETE_OTHERLIBRARY");
exit 0; # Exit without error
}
my $dbh = C4::Context->dbh;
my $is_guarantor = $dbh->selectrow_array("SELECT COUNT(*) FROM borrowers WHERE guarantorid=?", undef, $member);
if ( $op eq 'delete_confirm' or $countissues > 0 or $flags->{'CHARGES'} or $is_guarantor or $deletelocal == 0) {
- my $patron_image = Koha::Patron::Images->find($bor->{borrowernumber});
- $template->param( picture => 1 ) if $patron_image;
-
- $template->param( adultborrower => 1 ) if ( $bor->{category_type} eq 'A' || $bor->{category_type} eq 'I' );
-
- $template->param(borrowernumber => $member,
- surname => $bor->{'surname'},
- title => $bor->{'title'},
- cardnumber => $bor->{'cardnumber'},
- firstname => $bor->{'firstname'},
- categorycode => $bor->{'categorycode'},
- category_type => $bor->{'category_type'},
- categoryname => $bor->{'description'},
- address => $bor->{'address'},
- address2 => $bor->{'address2'},
- city => $bor->{'city'},
- zipcode => $bor->{'zipcode'},
- country => $bor->{'country'},
- phone => $bor->{'phone'},
- email => $bor->{'email'},
- branchcode => $bor->{'branchcode'},
+ $template->param( picture => 1 ) if $patron->image;
+
+ $template->param( adultborrower => 1 ) if $patron->category->category_type =~ /^(A|I)$/;
+
+ $template->param(
+ # FIXME The patron object should be passed to the template
+ borrowernumber => $patron->borrowernumber,
+ surname => $patron->surname,
+ title => $patron->title,
+ cardnumber => $patron->cardnumber,
+ firstname => $patron->firstname,
+ categorycode => $patron->categorycode,
+ category_type => $patron->category->category_type,
+ categoryname => $patron->category->description,
+ address => $patron->address,
+ address2 => $patron->address2,
+ city => $patron->city,
+ zipcode => $patron->zipcode,
+ country => $patron->country,
+ phone => $patron->phone,
+ email => $patron->email,
+ branchcode => $patron->branchcode,
RoutingSerials => C4::Context->preference('RoutingSerials'),
);
if ($countissues >0) {
use C4::Reserves;
use C4::Letters;
use Koha::Patron::Discharge;
-use Koha::Patron::Images;
use Koha::Patrons;
use Koha::DateUtils;
exit;
}
-my $data;
if ( $input->param('borrowernumber') ) {
$borrowernumber = $input->param('borrowernumber');
# Getting member data
- $data = GetMember( borrowernumber => $borrowernumber );
+ my $patron = Koha::Patrons->find( $borrowernumber );
my $can_be_discharged = Koha::Patron::Discharge::can_be_discharged({
borrowernumber => $borrowernumber
});
- # Getting reserves
- my $patron = Koha::Patrons->find( $borrowernumber );
my $holds = $patron->holds;
my $has_reserves = $holds->count;
}
eval {
my $pdf_path = Koha::Patron::Discharge::generate_as_pdf(
- { borrowernumber => $borrowernumber, branchcode => $data->{'branchcode'} } );
+ { borrowernumber => $borrowernumber, branchcode => $patron->branchcode } );
binmode(STDOUT);
print $input->header(
borrowernumber => $borrowernumber,
});
- my $patron_image = Koha::Patron::Images->find($borrowernumber);
- $template->param( picture => 1 ) if $patron_image;
+ $template->param( picture => 1 ) if $patron->image;
$template->param(
+ # FIXME The patron object should be passed to the template
borrowernumber => $borrowernumber,
- biblionumber => $data->{'biblionumber'},
- title => $data->{'title'},
- initials => $data->{'initials'},
- surname => $data->{'surname'},
+ title => $patron->title,
+ initials => $patron->initials,
+ surname => $patron->surname,
borrowernumber => $borrowernumber,
- firstname => $data->{'firstname'},
- cardnumber => $data->{'cardnumber'},
- categorycode => $data->{'categorycode'},
- category_type => $data->{'category_type'},
- categoryname => $data->{'description'},
- address => $data->{'address'},
- streetnumber => $data->{streetnumber},
- streettype => $data->{streettype},
- address2 => $data->{'address2'},
- city => $data->{'city'},
- zipcode => $data->{'zipcode'},
- country => $data->{'country'},
- phone => $data->{'phone'},
- email => $data->{'email'},
- branchcode => $data->{'branchcode'},
+ firstname => $patron->firstname,
+ cardnumber => $patron->cardnumber,
+ categorycode => $patron->categorycode,
+ category_type => $patron->category->category_type,
+ categoryname => $patron->category->description,
+ address => $patron->address,
+ streetnumber => $patron->streetnumber,
+ streettype => $patron->streettype,
+ address2 => $patron->address2,
+ city => $patron->city,
+ zipcode => $patron->zipcode,
+ country => $patron->country,
+ phone => $patron->phone,
+ email => $patron->email,
+ branchcode => $patron->branchcode,
has_reserves => $has_reserves,
can_be_discharged => $can_be_discharged,
validated_discharges => $validated_discharges,
use C4::Debug;
use Koha::DateUtils;
+use Koha::Patrons;
use Koha::Patron::Files;
-use Koha::Patron::Images;
my $cgi = CGI->new;
print $file->{'file_content'};
}
else {
- my $data = GetMember( borrowernumber => $borrowernumber );
- $template->param(%$data);
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ $template->param(%{ $patron->unblessed});
my %errors;
}
$template->param(
- categoryname => $data->{'description'},
+ categoryname => $patron->category->description,
RoutingSerials => C4::Context->preference('RoutingSerials'),
);
);
}
- my $patron_image = Koha::Patron::Images->find($data->{borrowernumber});
- $template->param( picture => 1 ) if $patron_image;
+ $template->param( picture => 1 ) if $patron->image;
$template->param( adultborrower => 1 ) if ( $data->{category_type} eq 'A' || $data->{category_type} eq 'I' );
$template->param(
# Get supporting cast
my ( $branch, $category, $houseboundprofile, $visit, $patron_image );
if ( $patron ) {
- $patron_image = Koha::Patron::Images->find($patron->borrowernumber);
+ $patron_image = $patron->image;
$branch = Koha::Libraries->new->find($patron->branchcode);
$category = Koha::Patron::Categories->new->find($patron->categorycode);
$houseboundprofile = $patron->housebound_profile;
use C4::Accounts;
use C4::Items;
use C4::Members::Attributes qw(GetBorrowerAttributes);
-use Koha::Patron::Images;
+use Koha::Patrons;
use Koha::Patron::Categories;
my $borrowernumber=$input->param('borrowernumber');
-#get borrower details
-my $data=GetMember('borrowernumber' => $borrowernumber);
+my $patron = Koha::Patrons->find( $borrowernumber );
my $add=$input->param('add');
if ($add){
}
);
- if ( $data->{'category_type'} eq 'C') {
+ if ( $patron->category->category_type eq 'C') {
my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']});
$template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1;
$template->param( 'catcode' => $patron_categories->next ) if $patron_categories->count == 1;
}
- $template->param( adultborrower => 1 ) if ( $data->{category_type} eq 'A' || $data->{category_type} eq 'I' );
- my $patron_image = Koha::Patron::Images->find($data->{borrowernumber});
- $template->param( picture => 1 ) if $patron_image;
+ $template->param( adultborrower => 1 ) if ( $patron->category->category_type =~ /^(A|I)$/ );
+ $template->param( picture => 1 ) if $patron->image;
if (C4::Context->preference('ExtendedPatronAttributes')) {
my $attributes = GetBorrowerAttributes($borrowernumber);
);
}
- $template->param(%$data);
+ $template->param(%{ $patron->unblessed});
$template->param(
finesview => 1,
borrowernumber => $borrowernumber,
- categoryname => $data->{'description'},
- is_child => ($data->{'category_type'} eq 'C'),
+ categoryname => $patron->category->description,
+ is_child => ($patron->category->category_type eq 'C'), # FIXME is_child should be a Koha::Patron method
RoutingSerials => C4::Context->preference('RoutingSerials'),
);
output_html_with_http_headers $input, $cookie, $template->output;
use C4::Accounts;
use C4::Items;
use C4::Members::Attributes qw(GetBorrowerAttributes);
-use Koha::Patron::Images;
+
+use Koha::Patrons;
use Koha::Patron::Categories;
my $borrowernumber=$input->param('borrowernumber');
-
-# get borrower details
-my $data=GetMember('borrowernumber'=>$borrowernumber);
+my $patron = Koha::Patrons->find( $borrowernumber );
my $add=$input->param('add');
if ($add){
if ( checkauth( $input, 0, $flagsrequired, 'intranet' ) ) {
}
$template->param( invoice_types_loop => \@invoice_types );
- if ( $data->{'category_type'} eq 'C') {
+ if ( $patron->category->category_type eq 'C') {
my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']});
$template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1;
$template->param( 'catcode' => $patron_categories->next ) if $patron_categories->count == 1;
}
- $template->param( adultborrower => 1 ) if ( $data->{'category_type'} eq 'A' || $data->{'category_type'} eq 'I' );
- my $patron_image = Koha::Patron::Images->find($data->{borrowernumber});
- $template->param( picture => 1 ) if $patron_image;
+ $template->param( adultborrower => 1 ) if ( $patron->category->category_type =~ /^(A|I)$/ );
+ $template->param( picture => 1 ) if $patron->image;
if (C4::Context->preference('ExtendedPatronAttributes')) {
my $attributes = GetBorrowerAttributes($borrowernumber);
);
}
- $template->param(%$data);
+ $template->param(%{ $patron->unblessed });
$template->param(
finesview => 1,
borrowernumber => $borrowernumber,
- categoryname => $data->{'description'},
- is_child => ($data->{'category_type'} eq 'C'),
+ categoryname => $patron->category->description,
+ is_child => ($patron->category->category_type eq 'C'),
RoutingSerials => C4::Context->preference('RoutingSerials'),
);
output_html_with_http_headers $input, $cookie, $template->output;
#use C4::Acquisitions;
use Koha::Patron::Categories;
+use Koha::Patrons;
use C4::Output;
use Koha::Patron::Images;
my $flagsrequired = { permissions => 1 };
my $member=$input->param('member');
-my $bor = GetMember( borrowernumber => $member );
-if( $bor->{'category_type'} eq 'S' ) {
+my $patron = Koha::Patrons->find( $member );
+my $category_type = $patron->category->category_type;
+my $bor = $patron->unblessed;
+if( $category_type eq 'S' ) {
$flagsrequired->{'staffaccess'} = 1;
}
my ($template, $loggedinuser, $cookie) = get_template_and_user({
push @loop, \%row;
}
- if ( $bor->{'category_type'} eq 'C') {
+ if ( $category_type eq 'C') {
my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']});
$template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1;
$template->param( 'catcode' => $patron_categories->next ) if $patron_categories->count == 1;
}
-$template->param( adultborrower => 1 ) if ( $bor->{'category_type'} eq 'A' || $bor->{'category_type'} eq 'I' );
- my $patron_image = Koha::Patron::Images->find($bor->{borrowernumber});
- $template->param( picture => 1 ) if $patron_image;
+$template->param( adultborrower => 1 ) if ( $category_type =~ /^(A|I)$/ );
+ $template->param( picture => 1 ) if $patron->image;
if (C4::Context->preference('ExtendedPatronAttributes')) {
my $attributes = GetBorrowerAttributes($bor->{'borrowernumber'});
firstname => $bor->{'firstname'},
othernames => $bor->{'othernames'},
categorycode => $bor->{'categorycode'},
- category_type => $bor->{'category_type'},
+ category_type => $category_type,
categoryname => $bor->{'description'},
address => $bor->{address},
address2 => $bor->{'address2'},
emailpro => $bor->{'emailpro'},
branchcode => $bor->{'branchcode'},
loop => \@loop,
- is_child => ($bor->{'category_type'} eq 'C'),
+ is_child => ($category_type eq 'C'),
RoutingSerials => C4::Context->preference('RoutingSerials'),
csrf_token => Koha::Token->new->generate_csrf( { session_id => scalar $input->cookie('CGISESSID'), } ),
);
use C4::Circulation;
use CGI qw ( -utf8 );
use C4::Members::Attributes qw(GetBorrowerAttributes);
-use Koha::Patron::Images;
use Koha::Token;
+use Koha::Patrons;
use Koha::Patron::Categories;
my $input = new CGI;
my @errors;
-my ($bor) = GetMember( 'borrowernumber' => $member );
+my $patron = Koha::Patrons->find( $member );
+my $category_type = $patron->category->category_type;
+my $bor = $patron->unblessed;
-if ( ( $member ne $loggedinuser ) && ( $bor->{'category_type'} eq 'S' ) ) {
+if ( ( $member ne $loggedinuser ) && ( $category_type eq 'S' ) ) {
push( @errors, 'NOPERMISSION' )
unless ( $staffflags->{'superlibrarian'} || $staffflags->{'staffaccess'} );
$template->param( defaultnewpassword => $defaultnewpassword );
}
-if ( $bor->{'category_type'} eq 'C') {
+if ( $category_type eq 'C') {
my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']});
$template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1;
$template->param( 'catcode' => $patron_categories->next ) if $patron_categories->count == 1;
}
-$template->param( adultborrower => 1 ) if ( $bor->{'category_type'} eq 'A' || $bor->{'category_type'} eq 'I' );
+$template->param( adultborrower => 1 ) if ( $category_type =~ /^(A|I)$/ );
-my $patron_image = Koha::Patron::Images->find($bor->{borrowernumber});
-$template->param( picture => 1 ) if $patron_image;
+$template->param( picture => 1 ) if $patron->image;
if ( C4::Context->preference('ExtendedPatronAttributes') ) {
my $attributes = GetBorrowerAttributes( $bor->{'borrowernumber'} );
borrowernumber => $bor->{'borrowernumber'},
cardnumber => $bor->{'cardnumber'},
categorycode => $bor->{'categorycode'},
- category_type => $bor->{'category_type'},
+ category_type => $category_type,
categoryname => $bor->{'description'},
address => $bor->{address},
address2 => $bor->{'address2'},
branchcode => $bor->{'branchcode'},
userid => $bor->{'userid'},
destination => $destination,
- is_child => ( $bor->{'category_type'} eq 'C' ),
+ is_child => ( $category_type eq 'C' ),
minPasswordLength => $minpw,
RoutingSerials => C4::Context->preference('RoutingSerials'),
csrf_token => Koha::Token->new->generate_csrf({ session_id => scalar $input->cookie('CGISESSID'), }),
use C4::Auth;
use C4::Output;
use CGI qw( -utf8 );
-use C4::Members qw( GetMember );
use Koha::DateUtils;
use Koha::List::Patron;
+use Koha::Patrons;
my $input = new CGI;
my $userenv = C4::Context->userenv;
$branchcode = $userenv->{'branch'};
}
- my $member = GetMember(
- cardnumber => $searchmember,
- ( $branchcode ? ( branchcode => $branchcode ) : () ),
- );
- if( $member ){
- print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=" . $member->{borrowernumber});
+ my $patron = Koha::Patrons->find( { cardnumber => $searchmember } );
+ if( ( $branchcode and $patron->branchcode eq $branchcode ) or ( not $branchcode and $patron ) ){
+ print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=" . $patron->borrowernumber);
exit;
}
}
use Koha::Cities;
use Koha::DateUtils;
use Koha::Libraries;
+use Koha::Patrons;
use Koha::Patron::Categories;
use Koha::Patron::HouseboundRole;
use Koha::Patron::HouseboundRoles;
$template->param( "quickadd" => 1 ) if ( $quickadd );
$template->param( "duplicate" => 1 ) if ( $op eq 'duplicate' );
$template->param( "checked" => 1 ) if ( defined($nodouble) && $nodouble eq 1 );
-( $borrower_data = GetMember( 'borrowernumber' => $borrowernumber ) ) if ( $op eq 'modify' or $op eq 'save' or $op eq 'duplicate' );
+if ( $op eq 'modify' or $op eq 'save' or $op eq 'duplicate' ) {
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ $borrower_data = $patron->unblessed;
+ $borrower_data->{category_type} = $patron->category->category_type;
+}
my $categorycode = $input->param('categorycode') || $borrower_data->{'categorycode'};
my $category_type = $input->param('category_type') || '';
unless ($category_type or !($categorycode)){
#recover all data from guarantor address phone ,fax...
if ( $guarantorid ) {
- if (my $guarantordata=GetMember(borrowernumber => $guarantorid)) {
+ if (my $guarantor = Koha::Patrons->find( $guarantorid )) {
+ my $guarantordata = $guarantor->unblessed;
$category_type = $guarantordata->{categorycode} eq 'I' ? 'P' : 'C';
$guarantorinfo=$guarantordata->{'surname'}." , ".$guarantordata->{'firstname'};
$newdata{'contactfirstname'}= $guarantordata->{'firstname'};
my $dateofbirth;
if ($op eq 'save' && $step == 3) {
- my $borrower = C4::Members::GetMember(borrowernumber => $borrowernumber);
- $dateofbirth = $borrower->{dateofbirth};
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ $dateofbirth = $patron->dateofbirth;
}
else {
$dateofbirth = $newdata{dateofbirth};
$template->param( error => $error ) if ( $error );
my $patron = Koha::Patrons->find($borrowernumber);
+unless ( $patron ) {
+ $template->param (unknowuser => 1);
+ output_html_with_http_headers $input, $cookie, $template->output;
+ exit;
+}
+
my $issues = $patron->checkouts;
my $balance = $patron->account->balance;
$template->param(
fines => $balance,
);
-
-my $data = GetMember( 'borrowernumber' => $borrowernumber );
-
-if ( not defined $data ) {
- $template->param (unknowuser => 1);
- output_html_with_http_headers $input, $cookie, $template->output;
- exit;
-}
-
-my $category_type = $data->{'category_type'};
+my $category_type = $patron->category->category_type;
+my $data = $patron->unblessed;
$debug and printf STDERR "dates (enrolled,expiry,birthdate) raw: (%s, %s, %s)\n", map {$data->{$_}} qw(dateenrolled dateexpiry dateofbirth);
foreach (qw(dateenrolled dateexpiry dateofbirth)) {
# check to see if patron's image exists in the database
# basically this gives us a template var to condition the display of
# patronimage related interface on
-my $patron_image = Koha::Patron::Images->find($data->{borrowernumber});
-$template->param( picture => 1 ) if $patron_image;
+$template->param( picture => 1 ) if $patron->image;
# Generate CSRF token for upload and delete image buttons
$template->param(
csrf_token => Koha::Token->new->generate_csrf({ session_id => $input->cookie('CGISESSID'),}),
use C4::Members;
use C4::Letters;
use C4::Members::Attributes qw(GetBorrowerAttributes);
-use Koha::Patron::Images;
+use Koha::Patrons;
my $input=new CGI;
my $borrowernumber = $input->param('borrowernumber');
-#get borrower details
-my $borrower = GetMember(borrowernumber => $borrowernumber);
+my $patron = Koha::Patrons->find( $borrowernumber );
+my $borrower = $patron->unblessed;
my ($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "members/notices.tt",
});
$template->param( $borrower );
-my $patron_image = Koha::Patron::Images->find($borrower->{borrowernumber});
-$template->param( picture => 1 ) if $patron_image;
+$template->param( picture => 1 ) if $patron->image;
# Allow resending of messages in Notices tab
my $op = $input->param('op') || q{};
QUEUED_MESSAGES => $queued_messages,
borrowernumber => $borrowernumber,
sentnotices => 1,
- categoryname => $borrower->{'description'},
+ categoryname => $patron->category->description,
RoutingSerials => C4::Context->preference('RoutingSerials'),
);
output_html_with_http_headers $input, $cookie, $template->output;
use C4::Koha;
use C4::Overdues;
use C4::Members::Attributes qw(GetBorrowerAttributes);
+use Koha::Patrons;
use Koha::Patron::Images;
use Koha::Patron::Categories;
}
# get borrower details
-our $borrower = GetMember( borrowernumber => $borrowernumber );
+my $patron = Koha::Patrons->find( $borrowernumber );
+my $category = $patron->category;
+our $borrower = $patron->unblessed;
+$borrower->{description} = $category->description;
+$borrower->{category_type} = $category->category_type;
our $user = $input->remote_user;
$user ||= q{};
use C4::Accounts;
use C4::Koha;
use Koha::Patron::Images;
+use Koha::Patrons;
use Koha::Account;
use Koha::Patron::Categories;
# get borrower details
my $borrowernumber = $input->param('borrowernumber');
-my $borrower = GetMember( borrowernumber => $borrowernumber );
+my $patron = Koha::Patrons->find( $borrowernumber );
+my $borrower = $patron->unblessed;
+my $category = $patron->category;
+$borrower->{description} = $category->description;
+$borrower->{category_type} = $category->category_type;
my $user = $input->remote_user;
my $branch = C4::Context->userenv->{'branch'};
use C4::Members;
use C4::Accounts;
use Koha::DateUtils;
-use Koha::Patron::Images;
+use Koha::Patrons;
use Koha::Patron::Categories;
my $input=new CGI;
my $action = $input->param('action') || '';
my $accountlines_id = $input->param('accountlines_id');
-#get borrower details
-my $data=GetMember('borrowernumber' => $borrowernumber);
+my $patron = Koha::Patrons->find( $borrowernumber );
+my $category = $patron->category;
+my $data = $patron->unblessed;
+$data->{description} = $category->description;
+$data->{category_type} = $category->category_type;
if ( $action eq 'print' ) {
# ReversePayment( $borrowernumber, $input->param('accountno') );
$template->param( adultborrower => 1 ) if ( $data->{'category_type'} eq 'A' || $data->{'category_type'} eq 'I' );
-my $patron_image = Koha::Patron::Images->find($data->{borrowernumber});
-$template->param( picture => 1 ) if $patron_image;
+$template->param( picture => 1 ) if $patron->image;
$template->param(
finesview => 1,
use CGI qw ( -utf8 );
use C4::Members;
use C4::Accounts;
-use Koha::Patron::Images;
+use Koha::Patrons;
use Koha::Patron::Categories;
my $input = new CGI;
my $action = $input->param('action') || '';
my $accountlines_id = $input->param('accountlines_id');
-#get borrower details
-my $data = GetMember( 'borrowernumber' => $borrowernumber );
+my $patron = Koha::Patrons->find( $borrowernumber );
+my $category = $patron->category;
+my $data = $patron->unblessed;
+$data->{description} = $category->description;
+$data->{category_type} = $category->category_type;
if ( $data->{'category_type'} eq 'C' ) {
my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']});
$template->param( adultborrower => 1 ) if ( $data->{'category_type'} eq 'A' || $data->{'category_type'} eq 'I' );
-my $patron_image = Koha::Patron::Images->find($data->{borrowernumber});
-$template->param( picture => 1 ) if $patron_image;
+$template->param( picture => 1 ) if $patron->image;
$template->param(
finesview => 1,
use C4::Members;
use C4::Members::Attributes qw(GetBorrowerAttributes);
use C4::Suggestions;
-use Koha::Patron::Images;
+use Koha::Patrons;
my $input = new CGI;
my $borrowernumber = $input->param('borrowernumber');
# Set informations for the patron
-my $borrower = GetMember( borrowernumber => $borrowernumber );
-foreach my $key ( keys %$borrower ) {
- $template->param( $key => $borrower->{$key} );
+my $patron = Koha::Patrons->find( $borrowernumber );
+my $category = $patron->category;
+my $data = $patron->unblessed;
+$data->{description} = $category->description;
+$data->{category_type} = $category->category_type;
+foreach my $key ( keys %$data ) {
+ $template->param( $key => $data->{$key} );
}
$template->param(
suggestionsview => 1,
- categoryname => $borrower->{'description'},
+ categoryname => $data->{'description'},
RoutingSerials => C4::Context->preference('RoutingSerials'),
);
);
}
-my $patron_image = Koha::Patron::Images->find($borrowernumber);
-$template->param( picture => 1 ) if $patron_image;
+$template->param( picture => 1 ) if $patron->image;
my $suggestions = SearchSuggestion( { suggestedby => $borrowernumber } );
use List::MoreUtils qw/any uniq/;
use Koha::DateUtils;
use C4::Members::Attributes qw(GetBorrowerAttributes);
-use Koha::Patron::Images;
+use Koha::Patrons;
use Koha::Patron::Categories;
my $input = CGI->new;
});
my $op = $input->param('op') || '';
+my $patron;
if ($input->param('cardnumber')) {
$cardnumber = $input->param('cardnumber');
- $data = GetMember(cardnumber => $cardnumber);
+ $patron = Koha::Patrons->find( { cardnumber => $cardnumber } );
+ $data = $patron->unblessed;
$borrowernumber = $data->{'borrowernumber'}; # we must define this as it is used to retrieve other data about the patron
}
if ($input->param('borrowernumber')) {
$borrowernumber = $input->param('borrowernumber');
- $data = GetMember(borrowernumber => $borrowernumber);
+ $patron = Koha::Patrons->find( $borrowernumber );
+ $data = $patron->unblessed;
}
my $order = 'date_due desc';
my $today = output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 });
my @barcodes =
map { $_->{barcode} } grep { $_->{returndate} =~ m/^$today/o } @{$issues};
- my $borrowercardnumber =
- GetMember( borrowernumber => $borrowernumber )->{'cardnumber'};
+ my $borrowercardnumber = $data->{cardnumber};
my $delimiter = "\n";
binmode( STDOUT, ":encoding(UTF-8)" );
print $input->header(
$limit = 'full';
}
-my $patron_image = Koha::Patron::Images->find($data->{borrowernumber});
-$template->param( picture => 1 ) if $patron_image;
+$template->param( picture => 1 ) if $patron->image;
if (C4::Context->preference('ExtendedPatronAttributes')) {
my $attributes = GetBorrowerAttributes($borrowernumber);
use C4::Members::Attributes qw(GetBorrowerAttributes);
use C4::Context;
use C4::Serials;
-use Koha::Patron::Images;
+use Koha::Patrons;
use CGI::Session;
my $query = new CGI;
my $branch = C4::Context->userenv->{'branch'};
# get the borrower information.....
-my $borrower;
+my ( $patron, $patron_info );
if ($borrowernumber) {
- $borrower = GetMember( borrowernumber => $borrowernumber );
-}
-
+ $patron = Koha::Patrons->find( $borrowernumber );
+ my $category = $patron->category;
+ my $patron_info = $patron->unblessed;
+ $patron_info->{description} = $category->description;
+ $patron_info->{category_type} = $category->category_type;
-##################################################################################
-# BUILD HTML
-# I'm trying to show the title of subscriptions where the borrowernumber is attached via a routing list
-
-if ($borrowernumber) {
-# new op dev
my $count;
my @borrowerSubscriptions;
($count, @borrowerSubscriptions) = GetSubscriptionsFromBorrower($borrowernumber );
routinglistview => 1
);
- $template->param( adultborrower => 1 ) if ( $borrower->{'category_type'} eq 'A' || $borrower->{'category_type'} eq 'I' );
+ $template->param( adultborrower => 1 ) if ( $patron_info->{category_type} =~ /^(A|I)$/ );
}
##################################################################################
-$template->param(%$borrower);
+$template->param(%$patron_info);
$template->param(
findborrower => $findborrower,
- borrower => $borrower,
+ borrower => $patron_info,
borrowernumber => $borrowernumber,
branch => $branch,
- categoryname => $borrower->{description},
+ categoryname => $patron_info->{description},
RoutingSerials => C4::Context->preference('RoutingSerials'),
);
);
}
-my $patron_image = Koha::Patron::Images->find($borrower->{borrowernumber});
-$template->param( picture => 1 ) if $patron_image;
+$template->param( picture => 1 ) if $patron and $patron->image;
output_html_with_http_headers $query, $cookie, $template->output;
use C4::Members::Statistics;
use C4::Members::Attributes qw(GetBorrowerAttributes);
use C4::Output;
-use Koha::Patron::Images;
+use Koha::Patrons;
my $input = new CGI;
my $borrowernumber = $input->param('borrowernumber');
# Set informations for the patron
-my $borrower = GetMember( borrowernumber => $borrowernumber );
-if ( not defined $borrower ) {
+my $patron = Koha::Patrons->find( $borrowernumber );
+unless ( $patron ) {
$template->param (unknowuser => 1);
output_html_with_http_headers $input, $cookie, $template->output;
exit;
}
+my $category = $patron->category;
+my $borrower= $patron->unblessed;
+$borrower->{description} = $category->description;
+$borrower->{category_type} = $category->category_type;
+
foreach my $key ( keys %$borrower ) {
$template->param( $key => $borrower->{$key} );
}
);
}
-my $patron_image = Koha::Patron::Images->find($borrower->{borrowernumber});
-$template->param( picture => 1 ) if $patron_image;
+$template->param( picture => 1 ) if $patron->image;
$template->param(%$borrower);
use C4::Items;
use Koha::Holds;
use Koha::ItemTypes;
+use Koha::Patrons;
my $input = CGI->new;
my $borrowernumber = $input->param('borrowernumber');
}
);
-my $data = GetMember( 'borrowernumber' => $borrowernumber );
+my $patron = Koha::Patrons->find( $borrowernumber );
+my $category = $patron->category;
+my $data = $patron->unblessed;
+$data->{description} = $category->description;
+$data->{category_type} = $category->category_type;
my ( $total, $accts, $numaccts ) = GetMemberAccountRecords($borrowernumber);
foreach my $accountline (@$accts) {
use C4::Auth;
use C4::Output;
use C4::Members;
+use Koha::Patrons;
use Koha::Patron::Categories;
# use Smart::Comments;
}
elsif ( $op eq 'update' ) {
- my $member = GetMember('borrowernumber'=>$borrowernumber);
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $member = $patron->unblessed;
$member->{'guarantorid'} = 0;
$member->{'categorycode'} = $catcode;
my $borcat = Koha::Patron::Categories->find($catcode);
my ( $borrowernumber ) = @_;
## Get branch info for borrowers home library.
- my $borrower_details = C4::Members::GetMember( borrowernumber => $borrowernumber );
- my $borrower_branchcode = $borrower_details->{'branchcode'};
- my $branch = Koha::Libraries->find( $borrower_branchcode )->unblessed;
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $branch = $patron->library->unblessed;
my %branch_info;
foreach my $key( keys %$branch ) {
$branch_info{"branches.$key"} = $branch->{$key};
use Getopt::Long;
use C4::Budgets qw( GetBudget );
-use C4::Members qw( GetMember );
use C4::Suggestions qw( GetUnprocessedSuggestions );
use Koha::Libraries;
+use Koha::Patrons;
my ( $help, $verbose, $confirm, @days );
GetOptions(
say "Suggestion $suggestion->{suggestionid} should be processed" if $verbose;
my $budget = C4::Budgets::GetBudget( $suggestion->{budgetid} );
- my $patron = C4::Members::GetMember( borrowernumber => $budget->{budget_owner_id} );
+ my $patron = Koha::Patrons->find( $budget->{budget_owner_id} );
my $email_address =
C4::Members::GetNoticeEmailAddress( $budget->{budget_owner_id} );
- my $library = Koha::Libraries->find( $patron->{branchcode} );
+ my $library = $patron->library;
my $admin_email_address = $library->branchemail
|| C4::Context->preference('KohaAdminEmailAddress');
if ($email_address) {
- say "Patron $patron->{borrowernumber} is going to be notified" if $verbose;
+ say "Patron " . $patron->borrowernumber . " is going to be notified" if $verbose;
my $letter = C4::Letters::GetPreparedLetter(
module => 'suggestions',
letter_code => 'TO_PROCESS',
- branchcode => $patron->{branchcode},
- lang => $patron->{lang},
+ branchcode => $patron->branchcode,
+ lang => $patron->lang,
tables => {
suggestions => $suggestion->{suggestionid},
- branches => $patron->{branchcode},
- borrowers => $patron->{borrowernumber},
+ branches => $patron->branchcode,
+ borrowers => $patron->borrowernumber,
},
);
if ( $confirm ) {
C4::Letters::EnqueueLetter(
{
letter => $letter,
- borrowernumber => $patron->{borrowernumber},
+ borrowernumber => $patron->borrowernumber,
message_transport_type => 'email',
from_address => $admin_email_address,
}
);
}
} else {
- say "Patron $patron->{borrowernumber} does not have an email address" if $verbose;
+ say "Patron " . $patron->borrowernumber . " does not have an email address" if $verbose;
}
}
use Getopt::Long qw(:config no_ignore_case);
use C4::Context;
-use C4::Members;
+use Koha::Patrons;
binmode STDOUT, ":encoding(UTF-8)";
$0 -h
-f, --field=FIELD Field to export. It is repeatable and has to match
- keys returned by the GetMember function.
+ column names of the borrower table (also as 'description' and 'category_type'
If no field is specified, then all fields will be
exported.
-s, --separator=CHAR This character will be used to separate fields.
# If the user did not specify any field to export, we assume they want them all
# We retrieve the first borrower informations to get field names
my ($borrowernumber) = $sth->fetchrow_array or die "No borrower to export";
-my $member = GetMember($borrowernumber); # FIXME Now is_expired is no longer available
+my $patron = Koha::Patrons->find( $borrowernumber ); # FIXME Now is_expired is no longer available
# We will have to use Koha::Patron and allow method calls
+my $category = $patron->category;
+my $member = $patron->unblessed;
+$member->{description} = $category->description;
+$member->{category_type} = $category->category_type;
+
@fields = keys %$member unless (@fields);
if ($show_header) {
print $csv->string . "\n";
while ( my $borrowernumber = $sth->fetchrow_array ) {
- $member = GetMember( borrowernumber => $borrowernumber );
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $category = $patron->category;
+ my $member = $patron->unblessed;
+ $member->{description} = $category->description;
+ $member->{category_type} = $category->category_type;
$csv->combine(
map {
( defined $member->{$_} and !ref $member->{$_} )
use HTTP::Cookies;
use C4::Context;
use C4::Debug;
-use C4::Members qw ( GetMember );
use URI::Escape;
+use Koha::Patrons;
my ($help, $steps, $baseurl, $max_tries, $user, $password,$short_print);
GetOptions(
}
die "You cannot use the database administrator account to launch this script"
- unless defined C4::Members::GetMember(userid => $user);
+ unless defined Koha::Patrons->find( { userid => $user } );
# remove some unnecessary garbage from the cookie
$cookie =~ s/ path_spec; discard; version=0//;
use C4::Circulation;
use C4::Members;
use C4::Biblio;
+use Koha::Patrons;
use Koha::Items;
my $biblio = $item->biblio;
$_->{'bibliotitle'} = $biblio->title;
$_->{'biblionumber'} = $biblio->biblionumber;
- my $borrower = C4::Members::GetMember( cardnumber => $_->{'cardnumber'} );
- if ($borrower) {
- $_->{'borrowernumber'} = $borrower->{'borrowernumber'};
- $_->{'borrower'} = ($borrower->{'firstname'}?$borrower->{'firstname'}:'').' '.$borrower->{'surname'};
+ my $patron = $_->{cardnumber} ? Koha::Patrons->find( { cardnumber => $_->{cardnumber} } ) : undef;
+ if ($patron) {
+ $_->{'borrowernumber'} = $patron->borrowernumber;
+ $_->{'borrower'} = ($patron->firstname ? $patron->firstname:'').' '.$patron->surname;
}
$_->{'actionissue'} = $_->{'action'} eq 'issue';
$_->{'actionreturn'} = $_->{'action'} eq 'return';
$circ->{ 'barcode' } = barcodedecode($circ->{'barcode'}) if( $circ->{'barcode'} && C4::Context->preference('itemBarcodeInputFilter'));
my $branchcode = C4::Context->userenv->{branch};
- my $borrower = GetMember( 'cardnumber'=>$circ->{ 'cardnumber' } );
+ my $patron = Koha::Patrons->find( { cardnumber => $circ->{cardnumber} } );
+ my $borrower = $patron->unblessed;
my $item = Koha::Items->find({ barcode => $circ->{barcode} });
my $issue = Koha::Checkouts->find( { itemnumber => $item->itemnumber } );
my $biblio = $item->biblio;
my $biblio = $item->biblio;
my $borrowernumber = _get_borrowernumber_from_barcode( $circ->{'barcode'} );
if ( $borrowernumber ) {
- my $borrower = GetMember( 'borrowernumber' => $borrowernumber );
+ my $patron = Koha::Patrons->find( $borrowernumber );
C4::Circulation::MarkIssueReturned(
$borrowernumber,
$item->itemnumber,
undef,
$circ->{'date'},
- $borrower->{'privacy'}
+ $patron->privacy
);
ModItem({ onloan => undef }, $biblio->biblionumber, $item->itemnumber);
ModDateLastSeen( $item->itemnumber );
- push @output, {
- return => 1,
- title => $biblio->title,
- biblionumber => $biblio->biblionumber,
- barcode => $item->barcode,
- borrowernumber => $borrower->{'borrowernumber'},
- firstname => $borrower->{'firstname'},
- surname => $borrower->{'surname'},
- cardnumber => $borrower->{'cardnumber'},
- datetime => $circ->{ 'datetime' }
- };
+ push @output,
+ {
+ return => 1,
+ title => $biblio->title,
+ biblionumber => $biblio->biblionumber,
+ barcode => $item->barcode,
+ borrowernumber => $patron->borrowernumber,
+ firstname => $patron->firstname,
+ surname => $patron->surname,
+ cardnumber => $patron->cardnumber,
+ datetime => $circ->{'datetime'}
+ };
} else {
push @output, {
ERROR_no_borrower_from_item => 1,
use C4::Acquisition;
use C4::Serials; # uses getsubscriptionfrom biblionumber
use C4::Koha;
-use C4::Members; # GetMember
use Koha::ItemTypes;
+use Koha::Patrons;
use Koha::RecordProcessor;
});
my $itemtypes = { map { $_->{itemtype} => $_ } @{ Koha::ItemTypes->search_with_localization->unblessed } };
-my $borrower = GetMember( 'borrowernumber' => $loggedinuser );
+my $patron = Koha::Patrons->find( $loggedinuser );
for my $itm (@items) {
$norequests = 0
if $norequests
&& !$itemtypes->{$itm->{'itype'}}->{notforloan}
&& $itm->{'itemnumber'};
- $allow_onshelf_holds = C4::Reserves::OnShelfHoldsAllowed($itm, $borrower)
+ $allow_onshelf_holds = C4::Reserves::OnShelfHoldsAllowed($itm, $patron->unblessed)
unless $allow_onshelf_holds;
}
use C4::Acquisition;
use C4::Koha;
use List::MoreUtils qw( any uniq );
+use Koha::Patrons;
use Koha::RecordProcessor;
my $query = new CGI;
}
my $allow_onshelf_holds;
-my $borrower = GetMember( 'borrowernumber' => $loggedinuser );
+my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
for my $itm (@all_items) {
- $allow_onshelf_holds = C4::Reserves::OnShelfHoldsAllowed($itm, $borrower);
+ $allow_onshelf_holds = C4::Reserves::OnShelfHoldsAllowed($itm, $patron);
last if $allow_onshelf_holds;
}
use C4::Auth;
use C4::Output;
use C4::Accounts;
-use C4::Members;
use Koha::Acquisition::Currencies;
use Koha::Database;
+use Koha::Patrons;
my $cgi = new CGI;
$error = "PAYPAL_UNABLE_TO_CONNECT";
}
+my $patron = Koha::Patrons->find( $borrowernumber );
$template->param(
- borrower => GetMember( borrowernumber => $borrowernumber ),
+ borrower => $patron->unblessed,
accountview => 1
);
# along with Koha; if not, see <http://www.gnu.org/licenses>.
-use strict;
+use Modern::Perl;
use CGI qw ( -utf8 );
use C4::Members;
use C4::Auth;
use C4::Output;
-use warnings;
+use Koha::Patrons;
my $query = new CGI;
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
}
);
-my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
+my $patron = Koha::Patrons->find( $borrowernumber );
+my $category = $patron->category;
+my $borrower= $patron->unblessed;
+$borrower->{description} = $category->description;
+$borrower->{category_type} = $category->category_type;
$template->param( BORROWER_INFO => $borrower );
#get account details
use Koha::Biblios;
use Koha::ItemTypes;
use Koha::Virtualshelves;
+use Koha::Patrons;
use Koha::Ratings;
use Koha::Reviews;
);
} else {
my $allow_onshelf_holds;
- my $borrower = GetMember( 'borrowernumber' => $borrowernumber );
+ my $patron = Koha::Patrons->find( $borrowernumber );
for my $itm (@items) {
$itm->{holds_count} = $item_reserves{ $itm->{itemnumber} };
$itm->{priority} = $priority{ $itm->{itemnumber} };
&& !$itemtypes->{$itm->{'itype'}}->{notforloan}
&& $itm->{'itemnumber'};
- $allow_onshelf_holds = C4::Reserves::OnShelfHoldsAllowed( $itm, $borrower )
+ $allow_onshelf_holds = C4::Reserves::OnShelfHoldsAllowed( $itm, $patron->unblessed )
unless $allow_onshelf_holds;
# get collection code description, too
}
}
for my $review (@$reviews) {
- my $borrowerData = GetMember( 'borrowernumber' => $review->{borrowernumber} );
+ my $patron = Koha::Patrons->find( $review->{borrowernumber} );
# setting some borrower info into this hash
- $review->{title} = $borrowerData->{'title'};
- $review->{surname} = $borrowerData->{'surname'};
- $review->{firstname} = $borrowerData->{'firstname'};
- if ( $libravatar_enabled and $borrowerData->{'email'} ) {
- $review->{avatarurl} = libravatar_url( email => $borrowerData->{'email'}, https => $ENV{HTTPS} );
+ $review->{title} = $patron->title;
+ $review->{surname} = $patron->surname;
+ $review->{firstname} = $patron->firstname;
+ if ( $libravatar_enabled and $patron->email ) {
+ $review->{avatarurl} = libravatar_url( email => $patron->email, https => $ENV{HTTPS} );
}
- $review->{userid} = $borrowerData->{'userid'};
- $review->{cardnumber} = $borrowerData->{'cardnumber'};
+ $review->{userid} = $patron->userid;
+ $review->{cardnumber} = $patron->cardnumber;
- if ( $borrowerData->{'borrowernumber'} eq $borrowernumber ) {
+ if ( $patron->borrowernumber eq $borrowernumber ) {
$review->{your_comment} = 1;
$loggedincommenter = 1;
}
use C4::Output;
use C4::Log;
use C4::Debug;
-use C4::Members;
+use Koha::Patrons;
use Koha::Patron::Discharge;
use Koha::DateUtils;
eval {
# Getting member data
- my $data = GetMember( borrowernumber => $loggedinuser );
+ my $patron = Koha::Patrons->find( $loggedinuser );
my $pdf_path = Koha::Patron::Discharge::generate_as_pdf({
borrowernumber => $loggedinuser,
- branchcode => $data->{'branchcode'},
+ branchcode => $patron->branchcode,
});
binmode(STDOUT);
C4::Form::MessagingPreferences::handle_form_action($cgi, { borrowernumber => $borrowernumber }, $template, 1, C4::Context->preference('PatronSelfRegistrationDefaultCategory') ) if $borrowernumber && C4::Context->preference('EnhancedMessagingPreferences');
$template->param( password_cleartext => $password );
- $template->param(
- borrower => GetMember( borrowernumber => $borrowernumber ) );
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ $template->param( borrower => $patron->unblessed );
$template->param(
PatronSelfRegistrationAdditionalInstructions =>
C4::Context->preference(
}
elsif ( $action eq 'update' ) {
- my $borrower = GetMember( borrowernumber => $borrowernumber );
+ my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
die "Wrong CSRF token"
unless Koha::Token->new->check_csrf({
session_id => scalar $cgi->cookie('CGISESSID'),
my $m = Koha::Patron::Modification->new( \%borrower_changes )->store();
- $template->param(
- borrower => GetMember( borrowernumber => $borrowernumber ),
- );
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ $template->param( borrower => $patron->unblessed );
}
else {
+ my $patron = Koha::Patrons->find( $borrowernumber );
$template->param(
action => 'edit',
nochanges => 1,
- borrower => GetMember( borrowernumber => $borrowernumber ),
+ borrower => $patron->unblessed,
patron_attribute_classes => GeneratePatronAttributesForm( $borrowernumber, $attributes ),
csrf_token => Koha::Token->new->generate_csrf({
session_id => scalar $cgi->cookie('CGISESSID'),
}
}
elsif ( $action eq 'edit' ) { #Display logged in borrower's data
- my $borrower = GetMember( borrowernumber => $borrowernumber );
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $borrower = $patron->unblessed;
$template->param(
borrower => $borrower,
);
if (C4::Context->preference('OPACpatronimages')) {
- my $patron_image = Koha::Patron::Images->find($borrower->{borrowernumber});
- $template->param( display_patron_image => 1 ) if $patron_image;
+ $template->param( display_patron_image => 1 ) if $patron->image;
}
$template->param( patron_attribute_classes => GeneratePatronAttributesForm( $borrowernumber ) );
sub DelUnchangedFields {
my ( $borrowernumber, %new_data ) = @_;
- my $current_data = GetMember( borrowernumber => $borrowernumber );
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ my $current_data = $patron->unblessed;
foreach my $key ( keys %new_data ) {
if ( $current_data->{$key} eq $new_data{$key} ) {
}
);
-my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
+my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $messaging_options = C4::Members::Messaging::GetMessagingOptions();
if ( defined $query->param('modify') && $query->param('modify') eq 'yes' ) {
smsalertnumber => $sms,
sms_provider_id => $sms_provider_id,
);
- $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
+ # FIXME will not be needed when ModMember will be replaced
+ $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
}
C4::Form::MessagingPreferences::handle_form_action($query, { borrowernumber => $borrowernumber }, $template);
use C4::Members;
use C4::Output;
use Koha::AuthUtils qw(hash_password);
+use Koha::Patrons;
my $query = new CGI;
my $dbh = C4::Context->dbh;
}
);
-my $borr = C4::Members::GetMember( borrowernumber => $borrowernumber );
+my $patron = Koha::Patrons->find( $borrowernumber );
my $minpasslen = C4::Context->preference("minPasswordLength");
if ( C4::Context->preference("OpacPasswordChange") ) {
my $sth = $dbh->prepare("UPDATE borrowers SET password = ? WHERE borrowernumber=?");
}
}
}
-$template->param(firstname => $borr->{'firstname'},
- surname => $borr->{'surname'},
+$template->param(firstname => $patron->firstname,
+ surname => $patron->surname,
minpasslen => $minpasslen,
passwdview => 1,
);
use C4::Output;
use C4::Charset qw(StripNonXmlChars);
+use Koha::Patrons;
use Koha::ItemTypes;
}
);
-# get borrower information ....
-my ( $borr ) = GetMember( borrowernumber => $borrowernumber );
+my $borr = Koha::Patrons->find( $borrowernumber )->unblessed;
$template->param(%{$borr});
use C4::Output;
use C4::Members;
use C4::Form::MessagingPreferences;
+use Koha::Patrons;
use Koha::Patron::Modifications;
my $cgi = new CGI;
C4::Form::MessagingPreferences::handle_form_action($cgi, { borrowernumber => $borrowernumber }, $template, 1, C4::Context->preference('PatronSelfRegistrationDefaultCategory') ) if C4::Context->preference('EnhancedMessagingPreferences');
$template->param( password_cleartext => $password );
- $template->param(
- borrower => GetMember( borrowernumber => $borrowernumber ) );
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ $template->param( borrower => $patron->unblessed );
$template->param(
PatronSelfRegistrationAdditionalInstructions =>
C4::Context->preference(
$branchcode = $item->{'homebranch'};
}
elsif ( $renewalbranch eq 'patronhomebranch' ) {
- my $borrower = GetMember( borrowernumber => $borrowernumber );
- $branchcode = $borrower->{'branchcode'};
+ $branchcode = Koha::Patrons->find( $borrowernumber )->branchcode;
}
elsif ( $renewalbranch eq 'checkoutbranch' ) {
my $issue = GetOpenIssue($itemnumber);
exit;
}
-# get borrower information ....
-my ( $borr ) = GetMember( borrowernumber => $borrowernumber );
my $patron = Koha::Patrons->find( $borrowernumber );
my $can_place_hold_if_available_at_pickup = C4::Context->preference('OPACHoldsIfAvailableAtPickup');
unless ( $can_place_hold_if_available_at_pickup ) {
my @patron_categories = split '\|', C4::Context->preference('OPACHoldsIfAvailableAtPickupExceptions');
if ( @patron_categories ) {
- $can_place_hold_if_available_at_pickup = grep /$borr->{categorycode}/, @patron_categories;
+ my $categorycode = $patron->categorycode;
+ $can_place_hold_if_available_at_pickup = grep /^$categorycode$/, @patron_categories;
}
}
# pass the pickup branch along....
-my $branch = $query->param('branch') || $borr->{'branchcode'} || C4::Context->userenv->{branch} || '' ;
+my $branch = $query->param('branch') || $patron->branchcode || C4::Context->userenv->{branch} || '' ;
$template->param( branch => $branch );
# Is the person allowed to choose their branch
my $singleBranchMode = Koha::Libraries->search->count == 1;
if ( $singleBranchMode || !$OPACChooseBranch )
{ # single branch mode or disabled user choosing
- $branch = $borr->{'branchcode'};
+ $branch = $patron->branchcode;
}
#item may belong to a host biblio, if yes change biblioNum to hosts bilbionumber
$template->param( too_much_oweing => $amount );
}
-if ( $borr->{gonenoaddress} && ($borr->{gonenoaddress} == 1) ) {
+if ( $patron->gonenoaddress && ($patron->gonenoaddress == 1) ) {
$noreserves = 1;
$template->param(
message => 1,
);
}
-if ( $borr->{lost} && ($borr->{lost} == 1) ) {
+if ( $patron->lost && ($patron->lost == 1) ) {
$noreserves = 1;
$template->param(
message => 1,
$template->param(
message => 1,
debarred => 1,
- debarred_comment => $borr->{debarredcomment},
- debarred_date => $borr->{debarred},
+ debarred_comment => $patron->debarredcomment,
+ debarred_date => $patron->debarred,
);
}
my $holds = $item->current_holds;
if ( my $first_hold = $holds->next ) {
- my $ItemBorrowerReserveInfo = GetMember( borrowernumber => $first_hold->borrowernumber );
+ my $patron = Koha::Patrons->find( $first_hold->borrowernumber );
$itemLoopIter->{backgroundcolor} = 'reserved';
$itemLoopIter->{reservedate} = output_pref({ dt => dt_from_string($first_hold->reservedate), dateonly => 1 }); # FIXME Should be formatted in the template
$itemLoopIter->{ReservedForBorrowernumber} = $first_hold->borrowernumber;
- $itemLoopIter->{ReservedForSurname} = $ItemBorrowerReserveInfo->{'surname'};
- $itemLoopIter->{ReservedForFirstname} = $ItemBorrowerReserveInfo->{'firstname'};
+ $itemLoopIter->{ReservedForSurname} = $patron->surname;
+ $itemLoopIter->{ReservedForFirstname} = $patron->firstname;
$itemLoopIter->{ExpectedAtLibrary} = $first_hold->branchcode;
$itemLoopIter->{waitingdate} = $first_hold->waitingdate;
}
# If there is no loan, return and transfer, we show a checkbox.
$itemLoopIter->{notforloan} = $itemLoopIter->{notforloan} || 0;
- my $branch = GetReservesControlBranch( $itemInfo, $borr );
+ my $patron_unblessed = $patron->unblessed;
+ my $branch = GetReservesControlBranch( $itemInfo, $patron_unblessed );
my $policy_holdallowed = !$itemLoopIter->{already_reserved};
$policy_holdallowed &&=
- IsAvailableForItemLevelRequest($itemInfo,$borr) &&
+ IsAvailableForItemLevelRequest($itemInfo,$patron_unblessed) &&
CanItemBeReserved($borrowernumber,$itemNum) eq 'OK';
if ($policy_holdallowed) {
- if ( my $hold_allowed = OPACItemHoldsAllowed( $itemInfo, $borr ) ) {
+ if ( my $hold_allowed = OPACItemHoldsAllowed( $itemInfo, $patron_unblessed ) ) {
$itemLoopIter->{available} = 1;
$numCopiesOPACAvailable++;
$biblioLoopIter{force_hold} = 1 if $hold_allowed eq 'F';
use C4::Members;
use C4::Templates ();
use Koha::Email;
+use Koha::Patrons;
use Koha::Token;
my $query = new CGI;
token => scalar $query->param('csrf_token'),
});
my $email = Koha::Email->new();
- my $user = GetMember(borrowernumber => $borrowernumber);
+ my $patron = Koha::Patrons->find( $borrowernumber );
my $user_email = GetFirstValidEmailAddress($borrowernumber)
|| C4::Context->preference('KohaAdminEmailAddress');
- my $email_replyto = "$user->{firstname} $user->{surname} <$user_email>";
+ my $email_replyto = $patron->firstname . " " . $patron->surname . " <$user_email>";
my $comment = $query->param('comment');
# if you want to use the KohaAdmin address as from, that is the default no need to set it
$template2->param(
BIBLIO_RESULTS => $resultsarray,
comment => $comment,
- firstname => $user->{firstname},
- surname => $user->{surname},
+ firstname => $patron->firstname,
+ surname => $patron->surname,
);
# Getting template result
use C4::Output;
use C4::Members;
use Koha::Email;
+use Koha::Patrons;
use Koha::Virtualshelves;
my $query = new CGI;
push( @results, $dat );
}
- my $user = GetMember(borrowernumber => $borrowernumber);
+ my $patron = Koha::Patrons->find( $borrowernumber );
$template2->param(
BIBLIO_RESULTS => \@results,
comment => $comment,
shelfname => $shelf->shelfname,
- firstname => $user->{firstname},
- surname => $user->{surname},
+ firstname => $patron->firstname,
+ surname => $patron->surname,
);
# Getting template result
use Koha::Biblioitems;
use Koha::Items;
use Koha::ItemTypes;
+use Koha::Patrons;
use Koha::Virtualshelves;
use Koha::RecordProcessor;
if ( $shelf ) {
$category = $shelf->category;
- my $patron = GetMember( 'borrowernumber' => $shelf->owner );
+ my $patron = Koha::Patrons->find( $shelf->owner );
$template->param( owner => $patron, );
unless ( $shelf->can_be_managed( $loggedinuser ) ) {
push @messages, { type => 'error', code => 'unauthorized_on_update' };
@cart_list = split(/\//, $cart_list);
}
- my $borrower = GetMember( borrowernumber => $loggedinuser );
+ my $patron = Koha::Patrons->find( $loggedinuser );
# Lists display falls back to search results configuration
my $xslfile = C4::Context->preference('OPACXSLTListsDisplay');
});
}
- $this_item->{allow_onshelf_holds} = C4::Reserves::OnShelfHoldsAllowed($this_item, $borrower);
+ $this_item->{allow_onshelf_holds} = C4::Reserves::OnShelfHoldsAllowed($this_item, $patron);
if ( grep {$_ eq $biblionumber} @cart_list) {
use C4::Output;
use C4::Circulation;
use C4::Biblio;
-use C4::Members qw/GetMember/;
use Koha::DateUtils;
+use Koha::Patrons;
use Koha::Reviews;
use POSIX qw(ceil floor strftime);
my $bib = &GetBiblioData($biblionumber);
my $record = GetMarcBiblio($biblionumber);
my $frameworkcode = GetFrameworkCode($biblionumber);
- my ( $borr ) = GetMember( borrowernumber => $result->{borrowernumber} );
+ my $borr = Koha::Patrons->find( $result->{borrowernumber} )->unblessed;
$result->{normalized_upc} = GetNormalizedUPC($record,$marcflavour);
$result->{normalized_ean} = GetNormalizedEAN($record,$marcflavour);
$result->{normalized_oclc} = GetNormalizedOCLCNumber($record,$marcflavour);
use Koha::AuthorisedValues;
use Koha::Libraries;
+use Koha::Patrons;
use Koha::DateUtils qw( dt_from_string );
# Is the person allowed to choose their branch
if ( C4::Context->preference("AllowPurchaseSuggestionBranchChoice") ) {
- my ( $borr ) = GetMember( borrowernumber => $borrowernumber );
# pass the pickup branch along....
my $userbranch = '';
if (C4::Context->userenv && C4::Context->userenv->{'branch'}) {
$userbranch = C4::Context->userenv->{'branch'};
}
- my $branchcode = $input->param('branchcode') || $borr->{'branchcode'} || $userbranch || '' ;
+ my $branchcode = $input->param('branchcode');
+ unless ( $branchcode ) {
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ $branchcode = $patron->branchcode || $userbranch || '' ;
+ }
$template->param( branchcode => $branchcode );
}
}
# get borrower information ....
-my ( $borr ) = GetMember( borrowernumber => $borrowernumber );
+my $borr = Koha::Patrons->find( $borrowernumber )->unblessed;
my ( $today_year, $today_month, $today_day) = Today();
my ($warning_year, $warning_month, $warning_day) = split /-/, $borr->{'dateexpiry'};
use C4::Items;
use Koha::DateUtils qw( dt_from_string );
use Koha::Acquisition::Currencies;
+use Koha::Patrons;
use Koha::Patron::Images;
use Koha::Patron::Messages;
use Koha::Token;
);
my $issuenoconfirm = 1; #don't need to confirm on issue.
-#warn "issuerid: " . $issuerid;
-my $issuer = GetMember( borrowernumber => $issuerid );
+my $issuer = Koha::Patrons->find( $issuerid )->unblessed;
my $item = GetItem(undef,$barcode);
if (C4::Context->preference('SelfCheckoutByLogin') && !$patronid) {
my $dbh = C4::Context->dbh;
my $resval;
($resval, $patronid) = checkpw($dbh, $patronlogin, $patronpw);
}
-my $borrower = GetMember( cardnumber => $patronid );
+my $borrower = Koha::Patrons->find( { cardnumber => $patronid } )->unblessed;
my $currencySymbol = "";
if ( my $active_currency = Koha::Acquisition::Currencies->get_active ) {
elsif ( $op eq "returnbook" && $allowselfcheckreturns ) {
my ($doreturn) = AddReturn( $barcode, $branch );
#warn "returnbook: " . $doreturn;
- $borrower = GetMember( cardnumber => $patronid );
+ $borrower = Koha::Patrons->find( { cardnumber => $patronid } )->unblessed;
}
elsif ( $op eq "checkout" ) {
my $impossible = {};
use C4::Debug;
use C4::Context;
-use autouse 'C4::Members' => qw(GetMember);
use C4::Creators;
use C4::Patroncards;
use Koha::List::Patron;
+use Koha::Patrons;
use Koha::Patron::Images;
my $cgi = new CGI;
$cardscount ++;
my $borrower_number = $item->{'borrower_number'};
- my $card_number = GetMember(borrowernumber => $borrower_number)->{'cardnumber'};
+ my $card_number = Koha::Patrons->find( $borrower_number)->cardnumber;
# Set barcode data
$print_layout_xml->{'barcode'}->[0]->{'data'} = $card_number if $print_layout_xml->{'barcode'};
use C4::Output qw(output_html_with_http_headers);
use C4::Creators;
use C4::Patroncards;
-use C4::Members qw(GetMember);
+use Koha::Patrons;
+
my $cgi = new CGI;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
my @bor_nums_unchecked = split /\n/, $bor_num_list; # $bor_num_list is effectively passed in as a <cr> separated list
foreach my $number (@bor_nums_unchecked) {
$number =~ s/\r$//; # strip any naughty return chars
- if ( GetMember(borrowernumber => $number)) { # we must test in case an invalid borrowernumber is passed in; we effectively disgard them atm
+ if ( Koha::Patrons->find( $number )) { # we must test in case an invalid borrowernumber is passed in; we effectively disgard them atm
my $borrower_number = $number;
push @borrower_numbers, $borrower_number;
}
use C4::Circulation;
use C4::Members;
use C4::Auth qw/checkauth/;
+use Koha::Patrons;
my $input = CGI->new();
my $expirationdate = $input->param('expiration_date');
my $itemtype = $input->param('itemtype') || undef;
-my $borrower = GetMember( 'borrowernumber' => $borrowernumber );
+my $borrower = Koha::Patrons->find( $borrowernumber );
+$borrower = $borrower->unblessed if $borrower;
my $multi_hold = $input->param('multi_hold');
my $biblionumbers = $multi_hold ? $input->param('biblionumbers') : ($biblionumber . '/');
print $input->redirect("request.pl?biblionumber=$biblionumber");
}
}
-elsif ( $borrower eq '' ) {
+elsif ( $borrowernumber eq '' ) {
print $input->header();
print "Invalid borrower number please try again";
}
if ($findborrower) {
- my $borrower = C4::Members::GetMember( cardnumber => $findborrower );
- if ( $borrower ) {
- $borrowernumber_hold = $borrower->{borrowernumber};
+ my $patron = Koha::Patrons->find( { cardnumber => $findborrower } );
+ if ( $patron ) {
+ $borrowernumber_hold = $patron->borrowernumber;
} else {
my $dt_params = { iDisplayLength => -1 };
my $results = C4::Utils::DataTables::Members::search(
# If we have the borrowernumber because we've performed an action, then we
# don't want to try to place another reserve.
if ($borrowernumber_hold && !$action) {
- my $borrowerinfo = GetMember( borrowernumber => $borrowernumber_hold );
+ my $patron = Koha::Patrons->find( $borrowernumber_hold );
my $diffbranch;
# we check the reserves of the user, and if they can reserve a document
# FIXME At this time we have a simple count of reservs, but, later, we could improve the infos "title" ...
my $reserves_count =
- GetReserveCount( $borrowerinfo->{'borrowernumber'} );
+ GetReserveCount( $patron->borrowernumber );
my $new_reserves_count = scalar( @biblionumbers );
}
# we check the date expiry of the borrower (only if there is an expiry date, otherwise, set to 1 (warn)
- my $expiry_date = $borrowerinfo->{dateexpiry};
+ my $expiry_date = $patron->dateexpiry;
my $expiry = 0; # flag set if patron account has expired
if ($expiry_date and $expiry_date ne '0000-00-00' and
Date_to_Days(split /-/,$date) > Date_to_Days(split /-/,$expiry_date)) {
}
# check if the borrower make the reserv in a different branch
- if ( $borrowerinfo->{'branchcode'} ne C4::Context->userenv->{'branch'} ) {
+ if ( $patron->branchcode ne C4::Context->userenv->{'branch'} ) {
$diffbranch = 1;
}
- my $is_debarred = Koha::Patrons->find( $borrowerinfo->{borrowernumber} )->is_debarred;
+ my $is_debarred = $patron->is_debarred;
$template->param(
- borrowernumber => $borrowerinfo->{'borrowernumber'},
- borrowersurname => $borrowerinfo->{'surname'},
- borrowerfirstname => $borrowerinfo->{'firstname'},
- borrowerstreetaddress => $borrowerinfo->{'address'},
- borrowercity => $borrowerinfo->{'city'},
- borrowerphone => $borrowerinfo->{'phone'},
- borrowermobile => $borrowerinfo->{'mobile'},
- borrowerfax => $borrowerinfo->{'fax'},
- borrowerphonepro => $borrowerinfo->{'phonepro'},
- borroweremail => $borrowerinfo->{'email'},
- borroweremailpro => $borrowerinfo->{'emailpro'},
- borrowercategory => $borrowerinfo->{'category'},
- cardnumber => $borrowerinfo->{'cardnumber'},
+ borrowernumber => $patron->borrowernumber,
+ borrowersurname => $patron->surname,
+ borrowerfirstname => $patron->firstname,
+ borrowerstreetaddress => $patron->address,
+ borrowercity => $patron->city,
+ borrowerphone => $patron->phone,
+ borrowermobile => $patron->mobile,
+ borrowerfax => $patron->fax,
+ borrowerphonepro => $patron->phonepro,
+ borroweremail => $patron->email,
+ borroweremailpro => $patron->emailpro,
+ cardnumber => $patron->cardnumber,
expiry => $expiry,
diffbranch => $diffbranch,
messages => $messages,
warnings => $warnings,
restricted => $is_debarred,
- amount_outstanding => GetMemberAccountRecords($borrowerinfo->{borrowernumber}),
+ amount_outstanding => GetMemberAccountRecords($patron->borrowernumber),
);
}
$template->param( messageborrower => $messageborrower );
-# FIXME launch another time GetMember perhaps until
-my $borrowerinfo = GetMember( borrowernumber => $borrowernumber_hold );
+# FIXME launch another time GetMember perhaps until (Joubu: Why?)
+my $patron = Koha::Patrons->find( $borrowernumber_hold );
my $logged_in_patron = Koha::Patrons->find( $borrowernumber );
my $dat = GetBiblioData($biblionumber);
- my $canReserve = CanBookBeReserved( $borrowerinfo->{borrowernumber}, $biblionumber );
+ my $canReserve = CanBookBeReserved( $patron->borrowernumber, $biblionumber );
$canReserve //= '';
if ( $canReserve eq 'OK' ) {
}
my $force_hold_level;
- if ( $borrowerinfo->{borrowernumber} ) {
+ if ( $patron->borrowernumber ) {
# For multiple holds per record, if a patron has previously placed a hold,
# the patron can only place more holds of the same type. That is, if the
# patron placed a record level hold, all the holds the patron places must
# the patron places must be item level
my $holds = Koha::Holds->search(
{
- borrowernumber => $borrowerinfo->{borrowernumber},
+ borrowernumber => $patron->borrowernumber,
biblionumber => $biblionumber,
found => undef,
}
# For a librarian to be able to place multiple record holds for a patron for a record,
# we must find out what the maximum number of holds they can place for the patron is
- my $max_holds_for_record = GetMaxPatronHoldsForRecord( $borrowerinfo->{borrowernumber}, $biblionumber );
+ my $max_holds_for_record = GetMaxPatronHoldsForRecord( $patron->borrowernumber, $biblionumber );
my $remaining_holds_for_record = $max_holds_for_record - $holds->count();
$biblioloopiter{remaining_holds_for_record} = $max_holds_for_record;
$template->param( max_holds_for_record => $max_holds_for_record );
# patron already has an item from that record checked out
my $alreadypossession;
if ( !C4::Context->preference('AllowHoldsOnPatronsPossessions')
- && CheckIfIssuedToPatron( $borrowerinfo->{borrowernumber}, $biblionumber ) )
+ && CheckIfIssuedToPatron( $patron->borrowernumber, $biblionumber ) )
{
$template->param( alreadypossession => $alreadypossession, );
}
# checking reserve
my $holds = Koha::Items->find( $itemnumber )->current_holds;
if ( my $first_hold = $holds->next ) {
- my $ItemBorrowerReserveInfo = GetMember( borrowernumber => $first_hold->borrowernumber );
+ my $patron = Koha::Patrons->find( $first_hold->borrowernumber );
$item->{backgroundcolor} = 'reserved';
$item->{reservedate} = output_pref({ dt => dt_from_string( $first_hold->reservedate ), dateonly => 1 }); # FIXME Should be formatted in the template
$item->{ReservedForBorrowernumber} = $first_hold->borrowernumber;
- $item->{ReservedForSurname} = $ItemBorrowerReserveInfo->{'surname'};
- $item->{ReservedForFirstname} = $ItemBorrowerReserveInfo->{'firstname'};
+ $item->{ReservedForSurname} = $patron->surname;
+ $item->{ReservedForFirstname} = $patron->firstname;
$item->{ExpectedAtLibrary} = $first_hold->branchcode;
$item->{waitingdate} = $first_hold->waitingdate;
}
}
}
- my $branch = C4::Circulation::_GetCircControlBranch($item, $borrowerinfo);
+ my $patron_unblessed = $patron->unblessed;
+ my $branch = C4::Circulation::_GetCircControlBranch($item, $patron_unblessed);
my $branchitemrule = GetBranchItemRule( $branch, $item->{'itype'} );
$item->{'holdallowed'} = $branchitemrule->{'holdallowed'};
- my $can_item_be_reserved = CanItemBeReserved( $borrowerinfo->{borrowernumber}, $itemnumber );
+ my $can_item_be_reserved = CanItemBeReserved( $patron->borrowernumber, $itemnumber );
$item->{not_holdable} = $can_item_be_reserved unless ( $can_item_be_reserved eq 'OK' );
- $item->{item_level_holds} = OPACItemHoldsAllowed( $item, $borrowerinfo );
+ $item->{item_level_holds} = OPACItemHoldsAllowed( $item, $patron_unblessed);
if (
!$item->{cantreserve}
&& !$exceeded_maxreserves
- && IsAvailableForItemLevelRequest($item, $borrowerinfo)
+ && IsAvailableForItemLevelRequest($item, $patron_unblessed)
&& $can_item_be_reserved eq 'OK'
)
{
holdsview => 1,
C4::Search::enabled_staff_search_views,
);
- if (defined $borrowerinfo && exists $borrowerinfo->{'branchcode'}) {
- $template->param( borrower_branchcode => $borrowerinfo->{'branchcode'},);
+ if ( $patron ) { # FIXME This test seems very useless
+ $template->param( borrower_branchcode => $patron->branchcode );
}
$biblioloopiter{biblionumber} = $biblionumber;
use C4::Auth;
use C4::Output;
use C4::Context;
-use C4::Members;
use C4::Biblio;
+use Koha::Patrons;
use Koha::Reviews;
my $query = new CGI;
foreach ( @$reviews ) {
my $borrowernumber = $_->{borrowernumber};
- my $borrowerData = GetMember('borrowernumber' => $borrowernumber);
+ my $patron = Koha::Patrons->find( $borrowernumber);
my $biblioData = GetBiblioData($_->{biblionumber});
# setting some borrower info into this hash
$_->{bibliotitle} = $biblioData->{'title'};
- $_->{surname} = $borrowerData->{'surname'};
- $_->{firstname} = $borrowerData->{'firstname'};
+ $_->{surname} = $patron->surname;
+ $_->{firstname} = $patron->firstname;
}
my $url = "/cgi-bin/koha/reviews/reviewswaiting.pl?status=$status";
use Koha::Biblios;
use Koha::Libraries;
+use Koha::Patrons;
my $query = new CGI;
my $subscriptionid = $query->param('subscriptionid');
my $memberloop = [];
for my $routing (@routinglist) {
- my $member = GetMember( borrowernumber => $routing->{borrowernumber} );
+ my $member = Koha::Patrons->find( $routing->{borrowernumber} )->unblessed;
$member->{name} = "$member->{firstname} $member->{surname}";
push @{$memberloop}, $member;
}
use C4::Members;
use C4::Serials;
+use Koha::Patrons;
use URI::Escape;
my $member_loop = [];
for my $routing ( @routinglist ) {
- my $member=GetMember('borrowernumber' => $routing->{borrowernumber});
+ my $member = Koha::Patrons->find( $routing->{borrowernumber} )->unblessed;
$member->{location} = $member->{branchcode};
if ($member->{firstname} ) {
$member->{name} = $member->{firstname} . q| |;
use Koha::AuthorisedValues;
use Koha::Acquisition::Currencies;
use Koha::Libraries;
+use Koha::Patrons;
use URI::Escape;
return $av->count ? $av->next->lib : 'Unkown';
}
if ($displayby =~/suggestedby/||$displayby =~/managedby/||$displayby =~/acceptedby/){
- my $borr=C4::Members::GetMember(borrowernumber=>$criteriumvalue);
- return "" unless $borr;
- return $$borr{surname} . ", " . $$borr{firstname};
+ my $patron = Koha::Patrons->find( $criteriumvalue );
+ return "" unless $patron;
+ return $patron->surname . ", " . $patron->firstname;
}
if ( $displayby =~ /budgetid/) {
my $budget = GetBudget($criteriumvalue);
foreach my $element ( qw(managedby suggestedby acceptedby) ) {
# $debug || warn $$suggestion_ref{$element};
if ($$suggestion_ref{$element}){
- my $member=GetMember(borrowernumber=>$$suggestion_ref{$element});
+ my $patron = Koha::Patrons->find( $$suggestion_ref{$element} );
+ my $category = $patron->category;
$template->param(
- $element."_borrowernumber"=>$$member{borrowernumber},
- $element."_firstname"=>$$member{firstname},
- $element."_surname"=>$$member{surname},
- $element."_branchcode"=>$$member{branchcode},
- $element."_description"=>$$member{description},
- $element."_category_type"=>$$member{category_type}
+ $element."_borrowernumber"=>$patron->borrowernumber,
+ $element."_firstname"=>$patron->firstname,
+ $element."_surname"=>$patron->surname,
+ $element."_branchcode"=>$patron->branchcode,
+ $element."_description"=>$category->description,
+ $element."_category_type"=>$category->category_type,
);
}
}
use C4::Utils::DataTables qw( dt_get_params );
use C4::Utils::DataTables::Members qw( search );
use Koha::DateUtils qw( output_pref dt_from_string );
+use Koha::Patrons;
my $input = new CGI;
and $searchfieldstype
and $searchfieldstype eq 'standard' )
{
- my $member = C4::Members::GetMember( cardnumber => $searchmember );
+ my $member = Koha::Patrons->find( { cardnumber => $searchmember } );
$results = {
iTotalRecords => 1,
iTotalDisplayRecords => 1,
- patrons => [ $member ],
+ patrons => [ $member->unblessed ],
} if $member;
}
userid => 'TESTUSERID'
);
-my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
-
C4::Acquisition::ModOrderUsers( $ordernumber, $borrowernumber );
my $is_added = grep { /^$borrowernumber$/ } C4::Acquisition::GetOrderUsers( $ordernumber );
use Koha::Database;
use Koha::IssuingRules;
use Koha::Checkouts;
+use Koha::Patrons;
use Koha::Subscriptions;
my $schema = Koha::Database->schema;
my $hold_waiting_borrowernumber = AddMember(%hold_waiting_borrower_data);
my $restricted_borrowernumber = AddMember(%restricted_borrower_data);
- my $renewing_borrower = GetMember( borrowernumber => $renewing_borrowernumber );
- my $restricted_borrower = GetMember( borrowernumber => $restricted_borrowernumber );
+ my $renewing_borrower = Koha::Patrons->find( $renewing_borrowernumber )->unblessed;
+ my $restricted_borrower = Koha::Patrons->find( $restricted_borrowernumber )->unblessed;
my $bibitems = '';
my $priority = '1';
is( $error, 'on_reserve', '(Bug 10663) Cannot renew, reserved (returned error is on_reserve)');
my $reserveid = C4::Reserves::GetReserveId({ biblionumber => $biblionumber, borrowernumber => $reserving_borrowernumber});
- my $reserving_borrower = GetMember( borrowernumber => $reserving_borrowernumber );
+ my $reserving_borrower = Koha::Patrons->find( $reserving_borrowernumber )->unblessed;
AddIssue($reserving_borrower, $barcode3);
my $reserve = $dbh->selectrow_hashref(
'SELECT * FROM old_reserves WHERE reserve_id = ?',
);
my $a_borrower_borrowernumber = AddMember(%a_borrower_data);
- my $a_borrower = GetMember( borrowernumber => $a_borrower_borrowernumber );
+ my $a_borrower = Koha::Patrons->find( $a_borrower_borrowernumber )->unblessed;
my $yesterday = DateTime->today(time_zone => C4::Context->tz())->add( days => -1 );
my $two_days_ahead = DateTime->today(time_zone => C4::Context->tz())->add( days => 2 );
my $borrowernumber = AddMember(%a_borrower_data);
- my $issue = AddIssue( GetMember( borrowernumber => $borrowernumber ), $barcode );
+ my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
+ my $issue = AddIssue( $borrower, $barcode );
UpdateFine(
{
issue_id => $issue->id(),
branchcode => $library2->{branchcode},
);
- my $borrower1 = GetMember( borrowernumber => $borrowernumber1 );
- my $borrower2 = GetMember( borrowernumber => $borrowernumber2 );
+ my $borrower1 = Koha::Patrons->find( $borrowernumber1 )->unblessed;
+ my $borrower2 = Koha::Patrons->find( $borrowernumber2 )->unblessed;
my $issue = AddIssue( $borrower1, $barcode1 );
branchcode => $branch,
);
- my $borrower = GetMember( borrowernumber => $borrowernumber );
+ my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
+
my $issue = AddIssue( $borrower, $barcode, undef, undef, undef, undef, { onsite_checkout => 1 } );
my ( $renewed, $error ) = CanBookBeRenewed( $borrowernumber, $itemnumber );
is( $renewed, 0, 'CanBookBeRenewed should not allow to renew on-site checkout' );
my $patron = $builder->build({ source => 'Borrower', value => { branchcode => $library->{branchcode} } } );
- my $issue = AddIssue( GetMember( borrowernumber => $patron->{borrowernumber} ), $barcode );
+ my $issue = AddIssue( $patron, $barcode );
UpdateFine(
{
issue_id => $issue->id(),
branchcode => $branch,
);
my $renewing_borrowernumber = AddMember(%renewing_borrower_data);
- my $renewing_borrower = GetMember( borrowernumber => $renewing_borrowernumber );
+ my $renewing_borrower = Koha::Patrons->find( $renewing_borrowernumber )->unblessed;
my $issue = AddIssue( $renewing_borrower, $barcode1);
my $datedue = dt_from_string( $issue->date_due() );
is (defined $issue->date_due(), 1, "item 1 checked out");
categorycode => $samplecat->{categorycode},
branchcode => $samplebranch1->{branchcode},
);
-my $borrower_1 = C4::Members::GetMember(borrowernumber => $borrower_id1);
is_deeply(
GetBranchBorrowerCircRule(),
use C4::Items;
use C4::Members;
use Koha::Library;
+use Koha::Patrons;
use MARC::Record;
BEGIN {
my $borrowernumber1 = AddMember(categorycode => $categorycode, branchcode => $branchcode);
my $borrowernumber2 = AddMember(categorycode => $categorycode, branchcode => $branchcode);
-my $borrower1 = GetMember(borrowernumber => $borrowernumber1);
-my $borrower2 = GetMember(borrowernumber => $borrowernumber2);
+my $borrower1 = Koha::Patrons->find( $borrowernumber1 )->unblessed;
+my $borrower2 = Koha::Patrons->find( $borrowernumber2 )->unblessed;
my $module = new Test::MockModule('C4::Context');
$module->mock('userenv', sub { { branch => $branchcode } });
use C4::Items;
use C4::Members;
-use Koha::Library;
use Koha::Libraries;
+use Koha::Patrons;
use Koha::Patron::Categories;
use MARC::Record;
}
)->{borrowernumber};
-my $borrower = GetMember(borrowernumber => $borrowernumber);
+my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
# Need to mock userenv for AddIssue
my $module = new Test::MockModule('C4::Context');
use C4::Members;
use Koha::Database;
+use Koha::Patrons;
my $schema = Koha::Database->new()->schema();
my $dbh = $schema->storage->dbh;
categorycode => $category,
branchcode => $branch_1->{ branchcode }
);
-my $borrower = GetMember(borrowernumber => $borrowernumber);
+my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
AddIssue($borrower, 'GTI_BARCODE_001');
AddIssue($borrower, 'GTI_BARCODE_002');
use C4::Members;
use Koha::Database;
use Koha::DateUtils;
+use Koha::Patrons;
use t::lib::TestBuilder;
branchcode => $library->{branchcode},
);
-my $borrower = GetMember( borrowernumber => $borrowernumber );
+my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $record = MARC::Record->new();
my ( $biblionumber, $biblioitemnumber ) = AddBiblio( $record, '' );
use C4::Biblio qw( AddBiblio );
use C4::Circulation qw( AddIssue AddReturn );
use C4::Items qw( AddItem );
-use C4::Members qw( AddMember GetMember );
+use C4::Members qw( AddMember );
use Koha::Database;
use Koha::DateUtils;
use Koha::Patron::Debarments qw( GetDebarments DelDebarment );
categorycode => $patron_category->{categorycode},
branchcode => $branchcode,
);
-my $borrower = GetMember( borrowernumber => $borrowernumber );
+my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $record = MARC::Record->new();
$record->append_fields(
use Koha::Account::Lines;
use Koha::DateUtils;
use Koha::Items;
+use Koha::Patrons;
use MARC::Record;
use MARC::Field;
}
);
- my $borrower = GetMember( borrowernumber => $borrowernumber );
+ my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
AddIssue( $borrower, $item_with_itemtype->{ barcode } );
AddReturn( $item_with_itemtype->{ barcode }, $branch );
#Â Test item-level itemtype was recorded on the 'statistics' table
}
});
- my $borrower = GetMember( borrowernumber => $borrowernumber );
+ my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
AddIssue( $borrower, $item_with_itemtype->{ barcode } );
AddReturn( $item_with_itemtype->{ barcode }, $branch );
use Modern::Perl;
-use Test::More tests => 32;
+use Test::More tests => 30;
use DateTime::Duration;
use t::lib::Mocks;
use Koha::Database;
use Koha::DateUtils;
use Koha::Library;
+use Koha::Patrons;
BEGIN {
require_ok('C4::Circulation');
categorycode => $categorycode,
branchcode => $branchcode_1
);
-my $borrower_1 = C4::Members::GetMember(borrowernumber => $borrower_id1);
+my $borrower_1 = Koha::Patrons->find( $borrower_id1 )->unblessed;
my $borrower_id2 = C4::Members::AddMember(
firstname => 'firstname2',
surname => 'surname2 ',
categorycode => $categorycode,
branchcode => $branchcode_2,
);
-my $borrower_2 = C4::Members::GetMember(borrowernumber => $borrower_id2);
+my $borrower_2 = Koha::Patrons->find( $borrower_id2 )->unblessed;
my @USERENV = (
$borrower_id1, 'test', 'MASTERTEST', 'firstname', $branchcode_1,
@renewcount = C4::Circulation::GetRenewCount();
is_deeply(
\@renewcount,
- [ 0, undef, 0 ], # FIXME Need to be fixed, see FIXME in GetRenewCount
+ [ 0, 0, 0 ], # FIXME Need to be fixed, see FIXME in GetRenewCount
"Without issuing rules and without parameter, GetRenewCount returns renewcount = 0, renewsallowed = undef, renewsleft = 0"
);
@renewcount = C4::Circulation::GetRenewCount(-1);
is_deeply(
\@renewcount,
- [ 0, undef, 0 ], # FIXME Need to be fixed
+ [ 0, 0, 0 ], # FIXME Need to be fixed
"Without issuing rules and without wrong parameter, GetRenewCount returns renewcount = 0, renewsallowed = undef, renewsleft = 0"
);
@renewcount = C4::Circulation::GetRenewCount($borrower_id1, $item_id1);
is_deeply(
\@renewcount,
- [ 2, undef, 0 ],
+ [ 2, 0, 0 ],
"Without issuing rules and with a valid parameter, renewcount = 2, renewsallowed = undef, renewsleft = 0"
);
$dbh->do(q|
UPDATE issuingrules SET renewalsallowed = 3
|);
-@renewcount = C4::Circulation::GetRenewCount();
-is_deeply(
- \@renewcount,
- [ 0, 3, 3 ],
- "With issuing rules (renewal allowed) and without parameter, GetRenewCount returns renewcount = 0, renewsallowed = 3, renewsleft = 3"
-);
-@renewcount = C4::Circulation::GetRenewCount(-1);
-is_deeply(
- \@renewcount,
- [ 0, 3, 3 ],
- "With issuing rules (renewal allowed) and without wrong parameter, GetRenewCount returns renewcount = 0, renewsallowed = 3, renewsleft = 3"
-);
@renewcount = C4::Circulation::GetRenewCount($borrower_id1, $item_id1);
is_deeply(
\@renewcount,
use C4::Reserves;
use Koha::Libraries;
+use Koha::Patrons;
use t::lib::TestBuilder;
}
ModReserveAffect( $itemnumber, $borrowernumbers[0] );
-C4::Circulation::AddIssue( GetMember( borrowernumber => $borrowernumbers[1] ),
+my $patron = Koha::Patrons->find( $borrowernumbers[1] )->unblessed;
+C4::Circulation::AddIssue( $patron,
$item_barcode, my $datedue, my $cancelreserve = 'revert' );
my $priorities = $dbh->selectall_arrayref(
is( ref($checkouts), 'Koha::Checkouts', 'checkouts should return a Koha::Checkouts object' );
# Not sure how this is useful, but AddIssue pass this variable to different other subroutines
- $patron = GetMember( borrowernumber => $patron->borrowernumber );
+ $patron = Koha::Patrons->find( $patron->borrowernumber )->unblessed;
my $module = new Test::MockModule('C4::Context');
$module->mock( 'userenv', sub { { branch => $library->{branchcode} } } );
use Modern::Perl;
-use Test::More tests => 65;
+use Test::More tests => 63;
use Test::MockModule;
use Data::Dumper qw/Dumper/;
use C4::Context;
my $addmem=AddMember(%data);
ok($addmem, "AddMember()");
-my $member = GetMember( cardnumber => $CARDNUMBER )
+my $member = Koha::Patrons->find( { cardnumber => $CARDNUMBER } )
or BAIL_OUT("Cannot read member with card $CARDNUMBER");
+$member = $member->unblessed;
ok ( $member->{firstname} eq $FIRSTNAME &&
$member->{surname} eq $SURNAME &&
$member->{phone} = $PHONE;
$member->{emailpro} = $EMAILPRO;
ModMember(%$member);
-my $changedmember = GetMember( cardnumber => $CARDNUMBER );
+my $changedmember = Koha::Patrons->find( { cardnumber => $CARDNUMBER } )->unblessed;
ok ( $changedmember->{firstname} eq $CHANGED_FIRSTNAME &&
$changedmember->{email} eq $EMAIL &&
$changedmember->{phone} eq $PHONE &&
is( Check_Userid( 'tomasitoxxx', '' ), 1,
'non-existent userid -> unique (blank borrowernumber)' );
-my $borrower = GetMember( borrowernumber => $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');
ModMember( borrowernumber => $borrowernumber, dateofbirth => '', debarred => '', dateexpiry => '', dateenrolled => '' );
-$borrower = GetMember( borrowernumber => $borrowernumber );
+$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');
ModMember( borrowernumber => $borrowernumber, dateofbirth => '1970-01-01', debarred => '2042-01-01', dateexpiry => '9999-12-31', dateenrolled => '2015-09-06' );
-$borrower = GetMember( borrowernumber => $borrowernumber );
+$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');
'userid not unique (blank borrowernumber)' );
is( Check_Userid( 'tomasito.none', $new_borrowernumber ), 0,
'userid not unique (second borrowernumber passed)' );
-$borrower = GetMember( borrowernumber => $new_borrowernumber );
+$borrower = Koha::Patrons->find( $new_borrowernumber )->unblessed;
ok( $borrower->{userid} ne 'tomasito', "Borrower with duplicate userid has new userid generated" );
$data{ cardnumber } = "234567890";
$data{userid} = 'a_user_id';
$borrowernumber = AddMember( %data );
-$borrower = GetMember( borrowernumber => $borrowernumber );
+$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
is( $borrower->{userid}, $data{userid}, 'AddMember should insert the given userid' );
subtest 'ModMember should not update userid if not true' => sub {
plan tests => 3;
ModMember( borrowernumber => $borrowernumber, firstname => 'Tomas', userid => '' );
- $borrower = GetMember( borrowernumber => $borrowernumber );
+ $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 );
- $borrower = GetMember( borrowernumber => $borrowernumber );
+ $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 );
- $borrower = GetMember( borrowernumber => $borrowernumber );
+ $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
is ( $borrower->{userid}, $data{userid}, 'ModMember should not update the userid with an undefined value');
};
# 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' );
-$borrower = GetMember( borrowernumber => $borrowernumber );
+$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
ok( $borrower->{userid}, 'A userid should have been generated correctly' );
# Regression tests for BZ12226
is( $password =~ /^[a-zA-Z]{10}$/ , 1, 'Test for autogenerated password if none submitted');
( $borrowernumber, $password ) = AddMember_Opac(surname=>"Deckard",firstname=>"Rick",password=>"Nexus-6",branchcode => $library2->{branchcode});
is( $password eq "Nexus-6", 1, 'Test password used if submitted');
-$borrower = GetMember(borrowernumber => $borrowernumber);
+$borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $hashed_up = Koha::AuthUtils::hash_password("Nexus-6", $borrower->{password});
is( $borrower->{password} eq $hashed_up, 1, 'Check password hash equals hash of submitted password' );
-# regression test for bug 16009
-my $patron;
-eval {
- my $patron = GetMember(cardnumber => undef);
-};
-is($@, '', 'Bug 16009: GetMember(cardnumber => undef) works');
-is($patron, undef, 'Bug 16009: GetMember(cardnumber => undef) returns undef');
-
subtest 'Trivial test for AddMember_Auto' => sub {
plan tests => 3;
my $members_mock = Test::MockModule->new( 'C4::Members' );
my %borr = AddMember_Auto( surname=> 'Dick3', firstname => 'Philip', branchcode => $library->{branchcode}, categorycode => $category->{categorycode}, password => '34567890' );
ok( $borr{borrowernumber}, 'Borrower hash contains borrowernumber' );
is( $borr{cardnumber}, 12345, 'Borrower hash contains cardnumber' );
- $patron = Koha::Patrons->find( $borr{borrowernumber} );
+ my $patron = Koha::Patrons->find( $borr{borrowernumber} );
isnt( $patron, undef, 'Patron found' );
};
use C4::Members;
use C4::Circulation;
use Koha::Libraries;
+use Koha::Patrons;
use MARC::Record;
my $schema = Koha::Database->schema;
AddMember( categorycode => $categorycode, branchcode => $branchcode );
my $borrowernumber2 =
AddMember( categorycode => $categorycode, branchcode => $branchcode );
-my $borrower1 = GetMember( borrowernumber => $borrowernumber1 );
-my $borrower2 = GetMember( borrowernumber => $borrowernumber2 );
+my $borrower1 = Koha::Patrons->find( $borrowernumber1 )->unblessed;
+my $borrower2 = Koha::Patrons->find( $borrowernumber2 )->unblessed;
my $module = new Test::MockModule('C4::Context');
$module->mock( 'userenv', sub { { branch => $branchcode } } );
use C4::Members;
use C4::Circulation;
use Koha::Libraries;
+use Koha::Patrons;
use MARC::Record;
my $schema = Koha::Database->schema;
my $borrowernumber =
AddMember( categorycode => $categorycode, branchcode => $branchcode );
-my $borrower = GetMember( borrowernumber => $borrowernumber );
+my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $module = new Test::MockModule('C4::Context');
$module->mock( 'userenv', sub { { branch => $branchcode } } );
use C4::Members;
use C4::Circulation;
use Koha::Library;
+use Koha::Patrons;
use MARC::Record;
my $schema = Koha::Database->schema;
AddMember( categorycode => $categorycode, branchcode => $branchcode );
my $borrowernumber2 =
AddMember( categorycode => $categorycode, branchcode => $branchcode );
-my $borrower1 = GetMember( borrowernumber => $borrowernumber1 );
-my $borrower2 = GetMember( borrowernumber => $borrowernumber2 );
+my $borrower1 = Koha::Patrons->find( $borrowernumber1 )->unblessed;
+my $borrower2 = Koha::Patrons->find( $borrowernumber2 )->unblessed;
my $module = new Test::MockModule('C4::Context');
$module->mock( 'userenv', sub { { branch => $branchcode } } );
use Koha::DateUtils qw( dt_from_string output_pref );
use Koha::Library;
+use Koha::Patrons;
use DateTime::Duration;
use MARC::Record;
my $borrowernumber =
AddMember( categorycode => $categorycode, branchcode => $branchcode );
-my $borrower = GetMember( borrowernumber => $borrowernumber );
+my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $module = new Test::MockModule('C4::Context');
$module->mock( 'userenv', sub { { branch => $branchcode } } );
$debarments = GetDebarments({ borrowernumber => $borrowernumber });
is( $debarments->[1]->{'comment'}, 'Test 3', "ModDebarment functions correctly" );
-
-my $patron = GetMember( borrowernumber => $borrowernumber );
+my $patron = Koha::Patrons->find( $borrowernumber )->unblessed;
is( $patron->{'debarred'}, '9999-06-10', "Field borrowers.debarred set correctly" );
is( $patron->{'debarredcomment'}, "Test 1\nTest 3", "Field borrowers.debarredcomment set correctly" );
use C4::Circulation qw( AddIssue AddReturn );
use C4::Context;
use C4::Items qw( AddItem );
-use C4::Members qw( AddMember GetMember );
+use C4::Members qw( AddMember );
use Koha::Patron::Discharge;
use Koha::Database;
use C4::Circulation;
use Koha::Database;
use Koha::Patrons;
-use Koha::Patron;
use Test::More tests => 59;
test_it($cpvmappings, "PreIssue");
# Issue item_1 to $patron:
-my $patron_get_mem =
- GetMember(%{{borrowernumber => $patron->{borrowernumber}}});
+my $patron_get_mem = Koha::Patrons->find( $patron->{borrowernumber} )->unblessed;
BAIL_OUT("Issue failed")
unless AddIssue($patron_get_mem, $item_1->{barcode});
# [!$issuingimpossible,$needsconfirmation->{PREVISSUE}]
# Needs:
-# - $patron_from_GetMember
+# - $patron
# - $item objects (one not issued, another prevIssued)
# - $checkprevcheckout pref (first hardno, then hardyes)
# Our Patron
my $CBBI_patron = $builder->build({source => 'Borrower'});
-my $p_from_GetMember =
- GetMember(%{{borrowernumber => $CBBI_patron->{borrowernumber}}});
+$patron = Koha::Patrons->find( $CBBI_patron->{borrowernumber} )->unblessed;
# Our Items
my $new_item = $builder->build({
source => 'Item',
});
# Second is Checked Out
BAIL_OUT("CanBookBeIssued Issue failed")
- unless AddIssue($p_from_GetMember, $prev_item->{barcode});
+ unless AddIssue($patron, $prev_item->{barcode});
# Mappings
my $CBBI_mappings = [
t::lib::Mocks::mock_preference('checkprevcheckout', $_->{syspref});
my ( $issuingimpossible, $needsconfirmation ) =
C4::Circulation::CanBookBeIssued(
- $p_from_GetMember, $_->{item}->{barcode}
+ $patron, $_->{item}->{barcode}
);
is($needsconfirmation->{PREVISSUE}, $_->{result}, $_->{msg});
} @{$CBBI_mappings};
use Koha::Holds;
use Koha::Libraries;
use Koha::Notice::Templates;
+use Koha::Patrons;
use Koha::Patron::Categories;
BEGIN {
);
Koha::Patron::Categories->find($category_1)->set({ enrolmentfee => 0})->store;
my $borrowernumber = AddMember(%data);
-my $borrower = GetMember( borrowernumber => $borrowernumber );
+my $borrower = Koha::Patrons->find( $borrowernumber )->unblessed;
my $biblionumber = $bibnum;
my $barcode = $testbarcode;
source => "Branch",
});
+my $patron = $builder->build_object({ class => 'Koha::Patrons', value => { flags => 1 } });
+set_logged_in_user( $patron );
+
my $branchcode=$library->{branchcode};
my $john_doe = $builder->build({
# End
$schema->storage->txn_rollback;
+sub set_logged_in_user {
+ my ($patron) = @_;
+ C4::Context->_new_userenv('xxx');
+ C4::Context->set_userenv(
+ $patron->borrowernumber, $patron->userid,
+ $patron->cardnumber, 'firstname',
+ 'surname', $patron->library->branchcode,
+ 'Midway Public Library', $patron->flags,
+ '', ''
+ );
+}
+
1;
use C4::Members;
use C4::Items;
use Koha::DateUtils;
+use Koha::Patrons;
+use t::lib::TestBuilder;
use Test::More tests => 8;
C4::Context->_new_userenv(1234567);
my $test_item_24 = '502326000404';
my $test_item_48 = '502326000403';
-my $borrower1 = GetMember(cardnumber => $test_patron);
+my $builder = t::lib::TestBuilder->new;
+my $borrower1 = $builder->build_object({ class => 'Koha::Patrons', value => { cardnumber => $test_patron } });
my $item1 = GetItem (undef,$test_item_fic);
SKIP: {
sub try_issue {
my ($cardnumber, $item ) = @_;
my $issuedate = '2011-05-16';
- my $borrower = GetMember( cardnumber => $cardnumber );
+ my $borrower = Koha::Patrons->find( { cardnumber => $cardnumber } )->unblessed;
my ($issuingimpossible,$needsconfirmation) = CanBookBeIssued( $borrower, $item );
my $issue = AddIssue($borrower, $item, undef, 0, $issuedate);
return dt_from_string( $issue->due_date() );
use Koha::DateUtils;
use Koha::Items;
use Koha::ItemTypes;
+use Koha::Patrons;
my $input = new CGI;
my $dbh = C4::Context->dbh;
});
# Does the user have a restricted item edition permission?
-my $uid = $loggedinuser ? GetMember( borrowernumber => $loggedinuser )->{userid} : undef;
+my $uid = $loggedinuser ? Koha::Patrons->find( $loggedinuser )->userid : undef;
my $restrictededition = $uid ? haspermission($uid, {'tools' => 'items_batchmod_restricted'}) : undef;
# In case user is a superlibrarian, edition is not restricted
$restrictededition = 0 if ($restrictededition != 0 && C4::Context->IsSuperLibrarian());
my $borrowernumber;
my $member;
if ( ($matchpoint eq 'cardnumber') && ($borrower{'cardnumber'}) ) {
- $member = GetMember( 'cardnumber' => $borrower{'cardnumber'} );
+ $member = Koha::Patrons->find( { cardnumber => $borrower{'cardnumber'} } )->unblessed;
if ($member) {
$borrowernumber = $member->{'borrowernumber'};
}
} elsif ( ($matchpoint eq 'userid') && ($borrower{'userid'}) ) {
- $member = GetMember( 'userid' => $borrower{'userid'} );
+ $member = Koha::Patrons->find( { userid => $borrower{'userid'} } )->unblessed;
if ($member) {
$borrowernumber = $member->{'borrowernumber'};
}
sub GetBorrowerInfos {
my ( %info ) = @_;
- my $borrower = GetMember( %info );
+ my $borrower = Koha::Patrons->find( \%info );
if ( $borrower ) {
+ $borrower = $borrower->unblessed;
for ( qw(dateenrolled dateexpiry) ) {
my $userdate = $borrower->{$_};
unless ($userdate && $userdate ne "0000-00-00" and $userdate ne "9999-12-31") {
use C4::Debug;
use Koha::Patrons;
-use Koha::Patron::Image;
use Koha::Patron::Images;
use Koha::Token;
use C4::Items;
use C4::Debug;
use C4::Search; # enabled_staff_search_views
-use Koha::Patron::Images;
+use Koha::Patrons;
use vars qw($debug $cgi_debug);
use C4::Members;
use C4::Members::Attributes qw(GetBorrowerAttributes);
my $borrowernumber = $object;
- my $data = GetMember( 'borrowernumber' => $borrowernumber );
- my $patron_image = Koha::Patron::Images->find($data->{borrowernumber});
- $template->param( picture => 1 ) if $patron_image;
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ $template->param( picture => 1 ) if $patron->image;
+ my $data = $patron->unblessed;
if ( C4::Context->preference('ExtendedPatronAttributes') ) {
my $attributes = GetBorrowerAttributes( $data->{'borrowernumber'} );
$template->param(
menu => 1,
borrowernumber => $borrowernumber,
- categoryname => $data->{'description'},
+ categoryname => $patron->category->description,
RoutingSerials => C4::Context->preference('RoutingSerials'),
);
}
#always add firstname and surname for librarian/user
if ( $result->{'user'} ) {
- my $userdetails = C4::Members::GetMember( borrowernumber => $result->{'user'} );
- if ($userdetails) {
- $result->{'userfirstname'} = $userdetails->{'firstname'};
- $result->{'usersurname'} = $userdetails->{'surname'};
+ my $patron = Koha::Patrons->find( $result->{'user'} );
+ if ($patron) {
+ $result->{'userfirstname'} = $patron->firstname;
+ $result->{'usersurname'} = $patron->surname;
}
}
#add firstname and surname for borrower, when using the CIRCULATION, MEMBERS, FINES
if ( $result->{module} eq "CIRCULATION" || $result->{module} eq "MEMBERS" || $result->{module} eq "FINES" ) {
if ( $result->{'object'} ) {
- my $borrowerdetails = C4::Members::GetMember( borrowernumber => $result->{'object'} );
- if ($borrowerdetails) {
- $result->{'borrowerfirstname'} = $borrowerdetails->{'firstname'};
- $result->{'borrowersurname'} = $borrowerdetails->{'surname'};
+ my $patron = Koha::Patrons->find( $result->{'object'} );
+ if ($patron) {
+ $result->{'borrowerfirstname'} = $patron->firstname;
+ $result->{'borrowersurname'} = $patron->surname;
}
}
}
use Koha::Biblioitems;
use Koha::ItemTypes;
use Koha::CsvProfiles;
+use Koha::Patrons;
use Koha::Virtualshelves;
use constant ANYONE => 2;
if ( $shelf ) {
$category = $shelf->category;
- my $patron = GetMember( 'borrowernumber' => $shelf->owner );
+ my $patron = Koha::Patrons->find( $shelf->owner )->unblessed;
$template->param( owner => $patron, );
unless ( $shelf->can_be_managed( $loggedinuser ) ) {
push @messages, { type => 'alert', code => 'unauthorized_on_update' };
}
);
- my $borrower = GetMember( borrowernumber => $loggedinuser );
-
my $xslfile = C4::Context->preference('XSLTListsDisplay');
my $lang = $xslfile ? C4::Languages::getlanguage() : undef;
my $sysxml = $xslfile ? C4::XSLT::get_xslt_sysprefs() : undef;