push @EXPORT, qw(
&GetMember
- &GetMemberIssuesAndFines
&GetPendingIssues
&GetAllIssues
&GetBorNotifyAcctRecord
&GetBorrowersToExpunge
- &GetBorrowersWhoHaveNeverBorrowed
- &GetBorrowersWithIssuesHistoryOlderThan
&IssueSlip
GetBorrowersWithEmail
#Insert data
push @EXPORT, qw(
&AddMember
+ &AddMember_Auto
&AddMember_Opac
);
return;
}
-=head2 GetMemberIssuesAndFines
-
- ($overdue_count, $issue_count, $total_fines) = &GetMemberIssuesAndFines($borrowernumber);
-
-Returns aggregate data about items borrowed by the patron with the
-given borrowernumber.
-
-C<&GetMemberIssuesAndFines> returns a three-element array. C<$overdue_count> is the
-number of overdue items the patron currently has borrowed. C<$issue_count> is the
-number of books the patron currently has borrowed. C<$total_fines> is
-the total fine currently due by the borrower.
-
-=cut
-
-#'
-sub GetMemberIssuesAndFines {
- my ( $borrowernumber ) = @_;
- my $dbh = C4::Context->dbh;
- my $query = "SELECT COUNT(*) FROM issues WHERE borrowernumber = ?";
-
- $debug and warn $query."\n";
- my $sth = $dbh->prepare($query);
- $sth->execute($borrowernumber);
- my $issue_count = $sth->fetchrow_arrayref->[0];
-
- $sth = $dbh->prepare(
- "SELECT COUNT(*) FROM issues
- WHERE borrowernumber = ?
- AND date_due < now()"
- );
- $sth->execute($borrowernumber);
- my $overdue_count = $sth->fetchrow_arrayref->[0];
-
- $sth = $dbh->prepare("SELECT SUM(amountoutstanding) FROM accountlines WHERE borrowernumber = ?");
- $sth->execute($borrowernumber);
- my $total_fines = $sth->fetchrow_arrayref->[0];
-
- return ($overdue_count, $issue_count, $total_fines);
-}
-
-
=head2 ModMember
my $success = ModMember(borrowernumber => $borrowernumber,
sub ModMember {
my (%data) = @_;
+
+ # trim whitespace from data which has some non-whitespace in it.
+ foreach my $field_name (keys(%data)) {
+ if ( defined $data{$field_name} && $data{$field_name} =~ /\S/ ) {
+ $data{$field_name} =~ s/^\s*|\s*$//g;
+ }
+ }
+
# test to know if you must update or not the borrower password
if (exists $data{password}) {
if ($data{password} eq '****' or $data{password} eq '') {
my $dbh = C4::Context->dbh;
my $schema = Koha::Database->new()->schema;
+ # trim whitespace from data which has some non-whitespace in it.
+ foreach my $field_name (keys(%data)) {
+ if ( defined $data{$field_name} && $data{$field_name} =~ /\S/ ) {
+ $data{$field_name} =~ s/^\s*|\s*$//g;
+ }
+ }
+
# generate a proper login if none provided
$data{'userid'} = Generate_Userid( $data{'borrowernumber'}, $data{'firstname'}, $data{'surname'} )
if ( $data{'userid'} eq '' || !Check_Userid( $data{'userid'} ) );
$data{'dateofbirth'} = undef if ( not $data{'dateofbirth'} );
$data{'debarred'} = undef if ( not $data{'debarred'} );
$data{'sms_provider_id'} = undef if ( not $data{'sms_provider_id'} );
+ $data{'guarantorid'} = undef if ( not $data{'guarantorid'} );
# get only the columns of Borrower
# FIXME Do we really need this check?
sub GetFirstValidEmailAddress {
my $borrowernumber = shift;
- my $dbh = C4::Context->dbh;
- my $sth = $dbh->prepare( "SELECT email, emailpro, B_email FROM borrowers where borrowernumber = ? ");
- $sth->execute( $borrowernumber );
- my $data = $sth->fetchrow_hashref;
- if ($data->{'email'}) {
- return $data->{'email'};
- } elsif ($data->{'emailpro'}) {
- return $data->{'emailpro'};
- } elsif ($data->{'B_email'}) {
- return $data->{'B_email'};
- } else {
- return '';
- }
+ my $borrower = Koha::Patrons->find( $borrowernumber );
+
+ return $borrower->first_valid_email_address();
}
=head2 GetNoticeEmailAddress
return \@results;
}
-=head2 GetBorrowersWhoHaveNeverBorrowed
-
- $results = &GetBorrowersWhoHaveNeverBorrowed
-
-This function get all borrowers who have never borrowed.
-
-I<$result> is a ref to an array which all elements are a hasref.
-
-=cut
-
-sub GetBorrowersWhoHaveNeverBorrowed {
- my $filterbranch = shift ||
- ((C4::Context->preference('IndependentBranches')
- && C4::Context->userenv
- && !C4::Context->IsSuperLibrarian()
- && C4::Context->userenv->{branch})
- ? C4::Context->userenv->{branch}
- : "");
- my $dbh = C4::Context->dbh;
- my $query = "
- SELECT borrowers.borrowernumber,max(timestamp) as latestissue
- FROM borrowers
- LEFT JOIN issues ON borrowers.borrowernumber = issues.borrowernumber
- WHERE issues.borrowernumber IS NULL
- ";
- my @query_params;
- if ($filterbranch && $filterbranch ne ""){
- $query.=" AND borrowers.branchcode= ?";
- push @query_params,$filterbranch;
- }
- warn $query if $debug;
-
- my $sth = $dbh->prepare($query);
- if (scalar(@query_params)>0){
- $sth->execute(@query_params);
- }
- else {
- $sth->execute;
- }
-
- my @results;
- while ( my $data = $sth->fetchrow_hashref ) {
- push @results, $data;
- }
- return \@results;
-}
-
-=head2 GetBorrowersWithIssuesHistoryOlderThan
-
- $results = &GetBorrowersWithIssuesHistoryOlderThan($date)
-
-this function get all borrowers who has an issue history older than I<$date> given on input arg.
-
-I<$result> is a ref to an array which all elements are a hashref.
-This hashref is containt the number of time this borrowers has borrowed before I<$date> and the borrowernumber.
-
-=cut
-
-sub GetBorrowersWithIssuesHistoryOlderThan {
- my $dbh = C4::Context->dbh;
- my $date = shift ||POSIX::strftime("%Y-%m-%d",localtime());
- my $filterbranch = shift ||
- ((C4::Context->preference('IndependentBranches')
- && C4::Context->userenv
- && !C4::Context->IsSuperLibrarian()
- && C4::Context->userenv->{branch})
- ? C4::Context->userenv->{branch}
- : "");
- my $query = "
- SELECT count(borrowernumber) as n,borrowernumber
- FROM old_issues
- WHERE returndate < ?
- AND borrowernumber IS NOT NULL
- ";
- my @query_params;
- push @query_params, $date;
- if ($filterbranch){
- $query.=" AND branchcode = ?";
- push @query_params, $filterbranch;
- }
- $query.=" GROUP BY borrowernumber ";
- warn $query if $debug;
- my $sth = $dbh->prepare($query);
- $sth->execute(@query_params);
- my @results;
-
- while ( my $data = $sth->fetchrow_hashref ) {
- push @results, $data;
- }
- return \@results;
-}
-
=head2 IssueSlip
IssueSlip($branchcode, $borrowernumber, $quickslip)
return @result;
}
+=head2 AddMember_Auto
+
+=cut
+
+sub AddMember_Auto {
+ my ( %borrower ) = @_;
+
+ $borrower{'cardnumber'} ||= fixup_cardnumber();
+
+ $borrower{'borrowernumber'} = AddMember(%borrower);
+
+ return ( %borrower );
+}
+
=head2 AddMember_Opac
=cut
$borrower{'password'} = $password;
}
- $borrower{'cardnumber'} = fixup_cardnumber( $borrower{'cardnumber'} );
-
- my $borrowernumber = AddMember(%borrower);
+ %borrower = AddMember_Auto(%borrower);
- return ( $borrowernumber, $borrower{'password'} );
+ return ( $borrower{'borrowernumber'}, $borrower{'password'} );
}
=head2 DeleteExpiredOpacRegistrations