View | Details | Raw Unified | Return to bug 17569
Collapse All | Expand All

(-)a/Koha/Patrons.pm (+33 lines)
Lines 22-27 use Modern::Perl; Link Here
22
use Carp;
22
use Carp;
23
23
24
use Koha::Database;
24
use Koha::Database;
25
use Koha::DateUtils;
25
26
26
use Koha::ArticleRequests;
27
use Koha::ArticleRequests;
27
use Koha::ArticleRequest::Status;
28
use Koha::ArticleRequest::Status;
Lines 69-74 sub search_housebound_deliverers { Link Here
69
    return Koha::Patrons->_new_from_dbic($del);
70
    return Koha::Patrons->_new_from_dbic($del);
70
}
71
}
71
72
73
=head3
74
75
my $patrons = Koha::Patrons->search_upcoming_membership_expires();
76
77
The 'before' and 'after' represent the number of days before/after the date
78
that is set by the preference MembershipExpiryDaysNotice.
79
If the pref is 14, before 2 and after 3 then you will get all expires
80
from 12 to 17 days.
81
82
=cut
83
84
sub search_upcoming_membership_expires {
85
    my ( $self, $params ) = @_;
86
    my $before = $params->{before} || 0;
87
    my $after  = $params->{after} || 0;
88
    delete $params->{before};
89
    delete $params->{after};
90
91
    my $days = C4::Context->preference("MembershipExpiryDaysNotice") || 0;
92
    my $date_before = dt_from_string->add( days => $days - $before );
93
    my $date_after = dt_from_string->add( days => $days + $after );
94
    my $dtf = Koha::Database->new->schema->storage->datetime_parser;
95
96
    $params->{dateexpiry} = {
97
        ">=" => $dtf->format_date( $date_before ),
98
        "<=" => $dtf->format_date( $date_after ),
99
    };
100
    return $self->SUPER::search(
101
        $params, { join => ['branchcode', 'categorycode'] }
102
    );
103
}
104
72
=head3 guarantor
105
=head3 guarantor
73
106
74
Returns a Koha::Patron object for this borrower's guarantor
107
Returns a Koha::Patron object for this borrower's guarantor
(-)a/misc/cronjobs/membership_expiry.pl (-9 / +8 lines)
Lines 167-187 if( !$expdays ) { Link Here
167
167
168
my $admin_adress = C4::Context->preference('KohaAdminEmailAddress');
168
my $admin_adress = C4::Context->preference('KohaAdminEmailAddress');
169
warn 'getting upcoming membership expires' if $verbose;
169
warn 'getting upcoming membership expires' if $verbose;
170
my $upcoming_mem_expires = C4::Members::GetUpcomingMembershipExpires({ branch => $branch, before => $before, after => $after });
170
my $upcoming_mem_expires = Koha::Patrons->search_upcoming_membership_expires({ 'me.branchcode' => $branch, before => $before, after => $after });
171
warn 'found ' . scalar( @$upcoming_mem_expires ) . ' soon expiring members'
171
warn 'found ' . $upcoming_mem_expires->count . ' soon expiring members'
172
    if $verbose;
172
    if $verbose;
173
173
174
# main loop
174
# main loop
175
$letter_type = 'MEMBERSHIP_EXPIRY' if !$letter_type;
175
$letter_type = 'MEMBERSHIP_EXPIRY' if !$letter_type;
176
foreach my $recent ( @$upcoming_mem_expires ) {
176
while ( my $recent = $upcoming_mem_expires->next ) {
177
    my $from_address = $recent->{'branchemail'} || $admin_adress;
177
    my $from_address = $recent->library->branchemail || $admin_adress;
178
    my $letter =  C4::Letters::GetPreparedLetter(
178
    my $letter =  C4::Letters::GetPreparedLetter(
179
        module      => 'members',
179
        module      => 'members',
180
        letter_code => $letter_type,
180
        letter_code => $letter_type,
181
        branchcode  => $recent->{'branchcode'},
181
        branchcode  => $recent->branchcode,
182
        tables      => {
182
        tables      => {
183
            borrowers => $recent->{'borrowernumber'},
183
            borrowers => $recent->borrowernumber,
184
            branches  => $recent->{'branchcode'},
184
            branches  => $recent->branchcode,
185
        },
185
        },
186
    );
186
    );
187
    last if !$letter; # Letters.pm already warned, just exit
187
    last if !$letter; # Letters.pm already warned, just exit
Lines 190-196 foreach my $recent ( @$upcoming_mem_expires ) { Link Here
190
    } else {
190
    } else {
191
        C4::Letters::EnqueueLetter({
191
        C4::Letters::EnqueueLetter({
192
            letter                 => $letter,
192
            letter                 => $letter,
193
            borrowernumber         =>  $recent->{'borrowernumber'},
193
            borrowernumber         =>  $recent->borrowernumber,
194
            from_address           => $from_address,
194
            from_address           => $from_address,
195
            message_transport_type => 'email',
195
            message_transport_type => 'email',
196
        });
196
        });
197
- 

Return to bug 17569