# along with Koha; if not, see <http://www.gnu.org/licenses>.
-use strict;
-#use warnings; FIXME - Bug 2505
+use Modern::Perl;
use C4::Context;
use String::Random qw( random_string );
use Scalar::Util qw( looks_like_number );
use C4::Accounts;
use C4::Biblio;
use C4::Letters;
-use C4::Members::Attributes qw(SearchIdMatchingAttribute UpdateBorrowerAttribute);
use C4::NewsChannels; #get slip news
use DateTime;
use Koha::Database;
use Koha::DateUtils;
-use Text::Unaccent qw( unac_string );
use Koha::AuthUtils qw(hash_password);
use Koha::Database;
use Koha::Holds;
&IssueSlip
);
- #Modify data
- push @EXPORT, qw(
- &changepassword
- );
-
#Check data
push @EXPORT, qw(
&checkuserpassword
=head1 DESCRIPTION
-This module contains routines for adding, modifying and deleting members/patrons/borrowers
+This module contains routines for adding, modifying and deleting members/patrons/borrowers
=head1 FUNCTIONS
$flags->{WAITING}->{message} Message -- deprecated
$flags->{WAITING}->{itemlist} ref-to-array: list of available items
-=over
+=over
=item C<$flags-E<gt>{ODUES}-E<gt>{itemlist}> is a reference-to-array listing the
overdue items. Its elements are references-to-hash, each describing an
=back
-All the "message" fields that include language generated in this function are deprecated,
+All the "message" fields that include language generated in this function are deprecated,
because such strings belong properly in the display layer.
The "message" field that comes from the DB is OK.
$no_issues_charge_guarantees = undef unless looks_like_number( $no_issues_charge_guarantees );
if ( defined $no_issues_charge_guarantees ) {
my $p = Koha::Patrons->find( $patroninformation->{borrowernumber} );
- my @guarantees = $p->guarantees();
+ my @guarantees = map { $_->guarantee } $p->guarantee_relationships;
my $guarantees_non_issues_charges;
foreach my $g ( @guarantees ) {
$guarantees_non_issues_charges += $g->account->non_issues_charges;
my $dbh = C4::Context->dbh;
my $query =
'SELECT *, issues.timestamp as issuestimestamp, issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp
- FROM issues
+ FROM issues
LEFT JOIN items on items.itemnumber=issues.itemnumber
LEFT JOIN biblio ON items.biblionumber=biblio.biblionumber
LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber
- WHERE borrowernumber=?
+ WHERE borrowernumber=?
UNION ALL
- SELECT *, old_issues.timestamp as issuestimestamp, old_issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp
- FROM old_issues
+ SELECT *, old_issues.timestamp as issuestimestamp, old_issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp
+ FROM old_issues
LEFT JOIN items on items.itemnumber=old_issues.itemnumber
LEFT JOIN biblio ON items.biblionumber=biblio.biblionumber
LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber
my $filtercategory = $params->{'category_code'};
my $filterbranch = $params->{'branchcode'} ||
((C4::Context->preference('IndependentBranches')
- && C4::Context->userenv
+ && C4::Context->userenv
&& !C4::Context->IsSuperLibrarian()
&& C4::Context->userenv->{branch})
? C4::Context->userenv->{branch}
- : "");
+ : "");
my $filterpatronlist = $params->{'patron_list_id'};
my $dbh = C4::Context->dbh;
FROM borrowers
JOIN categories USING (categorycode)
LEFT JOIN (
- SELECT guarantorid
- FROM borrowers
- WHERE guarantorid IS NOT NULL
- AND guarantorid <> 0
- ) as tmp ON borrowers.borrowernumber=tmp.guarantorid
+ SELECT guarantor_id
+ FROM borrower_relationships
+ WHERE guarantor_id IS NOT NULL
+ AND guarantor_id <> 0
+ ) as tmp ON borrowers.borrowernumber=tmp.guarantor_id
LEFT JOIN old_issues USING (borrowernumber)
LEFT JOIN issues USING (borrowernumber)|;
if ( $filterpatronlist ){
$query .= q| LEFT JOIN patron_list_patrons USING (borrowernumber)|;
}
$query .= q| WHERE category_type <> 'S'
- AND tmp.guarantorid IS NULL
+ AND tmp.guarantor_id IS NULL
|;
my @query_params;
if ( $filterbranch && $filterbranch ne "" ) {
warn $query if $debug;
my $sth = $dbh->prepare($query);
- if (scalar(@query_params)>0){
+ if (scalar(@query_params)>0){
$sth->execute(@query_params);
}
else {
$sth->execute;
}
-
+
my @results;
while ( my $data = $sth->fetchrow_hashref ) {
push @results, $data;
my $category_code = C4::Context->preference('PatronSelfRegistrationDefaultCategory');
return 0 if not $category_code or not defined $delay or $delay eq q||;
+ my $date_enrolled = dt_from_string();
+ $date_enrolled->subtract( days => $delay );
- my $query = qq|
-SELECT borrowernumber
-FROM borrowers
-WHERE categorycode = ? AND DATEDIFF( NOW(), dateenrolled ) > ? |;
+ my $registrations_to_del = Koha::Patrons->search({
+ dateenrolled => {'<=' => $date_enrolled->ymd},
+ categorycode => $category_code,
+ });
- my $dbh = C4::Context->dbh;
- my $sth = $dbh->prepare($query);
- $sth->execute( $category_code, $delay );
my $cnt=0;
- while ( my ($borrowernumber) = $sth->fetchrow_array() ) {
- Koha::Patrons->find($borrowernumber)->delete;
+ while ( my $registration = $registrations_to_del->next() ) {
+ next if $registration->checkouts->count || $registration->account->balance;
+ $registration->delete;
$cnt++;
}
return $cnt;