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

(-)a/misc/cronjobs/membership_expiry.pl (-46 / +25 lines)
Lines 75-80 the date set by the preference. Link Here
75
Optional parameter to extend the selection with a number of days AFTER
75
Optional parameter to extend the selection with a number of days AFTER
76
the date set by the preference.
76
the date set by the preference.
77
77
78
=item B<-letter>
79
80
Optional parameter to use another notice than the default one.
81
78
=back
82
=back
79
83
80
=head1 CONFIGURATION
84
=head1 CONFIGURATION
Lines 134-140 my $help = 0; Link Here
134
my $man     = 0;
138
my $man     = 0;
135
my $before  = 0;
139
my $before  = 0;
136
my $after   = 0;
140
my $after   = 0;
137
my $branch;
141
my ( $branch, $letter_type );
138
142
139
GetOptions(
143
GetOptions(
140
    'help|?'         => \$help,
144
    'help|?'         => \$help,
Lines 145-150 GetOptions( Link Here
145
    'branch:s'       => \$branch,
149
    'branch:s'       => \$branch,
146
    'before:i'       => \$before,
150
    'before:i'       => \$before,
147
    'after:i'        => \$after,
151
    'after:i'        => \$after,
152
    'letter:s'       => \$letter_type,
148
) or pod2usage(2);
153
) or pod2usage(2);
149
154
150
pod2usage( -verbose => 2 ) if $man;
155
pod2usage( -verbose => 2 ) if $man;
Lines 167-218 warn 'found ' . scalar( @$upcoming_mem_expires ) . ' soon expiring members' Link Here
167
    if $verbose;
172
    if $verbose;
168
173
169
# main loop
174
# main loop
175
$letter_type = 'MEMBERSHIP_EXPIRY' if !$letter_type;
170
foreach my $recent ( @$upcoming_mem_expires ) {
176
foreach my $recent ( @$upcoming_mem_expires ) {
171
    my $from_address = $recent->{'branchemail'} || $admin_adress;
177
    my $from_address = $recent->{'branchemail'} || $admin_adress;
172
    my $letter_type = 'MEMBERSHIP_EXPIRY';
178
    my $letter =  C4::Letters::GetPreparedLetter(
173
    my $letter = C4::Letters::getletter( 'members', $letter_type,
179
        module      => 'members',
174
        $recent->{'branchcode'} );
180
        letter_code => $letter_type,
175
    die "no letter of type '$letter_type' found. Please see sample_notices.sql"
181
        branchcode  => $recent->{'branchcode'},
176
        unless $letter;
182
        tables      => {
177
183
            borrowers => $recent->{'borrowernumber'},
178
    $letter = parse_letter({
184
            branches  => $recent->{'branchcode'},
179
        letter         => $letter,
180
        borrowernumber => $recent->{'borrowernumber'},
181
        firstname      => $recent->{'firstname'},
182
        categorycode   => $recent->{'categorycode'},
183
        branchcode     => $recent->{'branchcode'},
184
    });
185
    if ($letter) {
186
        if ($nomail) {
187
            print $letter->{'content'}."\n";
188
        } else {
189
            C4::Letters::EnqueueLetter({
190
                letter                 => $letter,
191
                borrowernumber         =>  $recent->{'borrowernumber'},
192
                from_address           => $from_address,
193
                message_transport_type => 'email',
194
            });
195
        }
196
    }
197
}
198
199
=head1 SUBROUTINES
200
201
=head2 parse_letter
202
203
=cut
204
205
sub parse_letter {
206
    my $params = shift;
207
    foreach my $required ( qw( letter borrowernumber ) ) {
208
        return unless exists $params->{$required};
209
    }
210
    my $letter =  C4::Letters::GetPreparedLetter (
211
        module => 'members',
212
        letter_code => 'MEMBERSHIP_EXPIRY',
213
        tables => {
214
            'borrowers', $params->{'borrowernumber'},
215
            'branches', $params->{'branchcode'}
216
        },
185
        },
217
    );
186
    );
187
    last if !$letter; # Letters.pm already warned, just exit
188
    if( $nomail ) {
189
        print $letter->{'content'}."\n";
190
    } else {
191
        C4::Letters::EnqueueLetter({
192
            letter                 => $letter,
193
            borrowernumber         =>  $recent->{'borrowernumber'},
194
            from_address           => $from_address,
195
            message_transport_type => 'email',
196
        });
197
    }
218
}
198
}
219
- 

Return to bug 15543