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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/letter.tt (-2 lines)
Lines 493-500 $(document).ready(function() { Link Here
493
        </div>
493
        </div>
494
        [% END %]
494
        [% END %]
495
495
496
        [% IF code.search('DGST') %] <span class="overdue">Warning, this is a template for a Digest, as such, any references to branch data ( e.g. branches.branchname ) will refer to the borrower's home branch.</span> [% END %]
497
498
        <input type="hidden" id="redirect" name="redirect" value="" />
496
        <input type="hidden" id="redirect" name="redirect" value="" />
499
        <input type="hidden" name="searchfield" value="[% searchfield %]" />
497
        <input type="hidden" name="searchfield" value="[% searchfield %]" />
500
    </form>
498
    </form>
(-)a/misc/cronjobs/advance_notices.pl (-56 / +40 lines)
Lines 218-225 warn 'found ' . scalar( @$upcoming_dues ) . ' issues' if $verbose; Link Here
218
218
219
# hash of borrowernumber to number of items upcoming
219
# hash of borrowernumber to number of items upcoming
220
# for patrons wishing digests only.
220
# for patrons wishing digests only.
221
my $upcoming_digest;
221
my $upcoming_digest = {};
222
my $due_digest;
222
my $due_digest = {};
223
223
224
my $dbh = C4::Context->dbh();
224
my $dbh = C4::Context->dbh();
225
my $sth = $dbh->prepare(<<'END_SQL');
225
my $sth = $dbh->prepare(<<'END_SQL');
Lines 250-257 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
250
        
250
        
251
        if ( $borrower_preferences->{'wants_digest'} ) {
251
        if ( $borrower_preferences->{'wants_digest'} ) {
252
            # cache this one to process after we've run through all of the items.
252
            # cache this one to process after we've run through all of the items.
253
            $due_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
253
            $due_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address;
254
            $due_digest->{ $upcoming->{borrowernumber} }->{count}++;
254
            $due_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{count}++;
255
        } else {
255
        } else {
256
            my $item = Koha::Items->find( $upcoming->{itemnumber} );
256
            my $item = Koha::Items->find( $upcoming->{itemnumber} );
257
            my $letter_type = 'DUE';
257
            my $letter_type = 'DUE';
Lines 283-290 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
283
283
284
        if ( $borrower_preferences->{'wants_digest'} ) {
284
        if ( $borrower_preferences->{'wants_digest'} ) {
285
            # cache this one to process after we've run through all of the items.
285
            # cache this one to process after we've run through all of the items.
286
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
286
            $upcoming_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address;
287
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{count}++;
287
            $upcoming_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{count}++;
288
        } else {
288
        } else {
289
            my $item = Koha::Items->find( $upcoming->{itemnumber} );
289
            my $item = Koha::Items->find( $upcoming->{itemnumber} );
290
            my $letter_type = 'PREDUE';
290
            my $letter_type = 'PREDUE';
Lines 342-374 SELECT biblio.*, items.*, issues.* Link Here
342
    AND (TO_DAYS(date_due)-TO_DAYS(NOW()) = ?)
342
    AND (TO_DAYS(date_due)-TO_DAYS(NOW()) = ?)
343
END_SQL
343
END_SQL
344
344
345
send_digests({
345
while (my ($branchcode, $digests) = each %$upcoming_digest) {
346
    sth => $sth_digest,
346
    send_digests({
347
    digests => $upcoming_digest,
347
	sth => $sth_digest,
348
    letter_code => 'PREDUEDGST',
348
	digests => $digests,
349
    get_item_info => sub {
349
	letter_code => 'PREDUEDGST',
350
        my $params = shift;
350
	branchcode => $branchcode,
351
        $params->{sth}->execute($params->{borrowernumber},
351
	get_item_info => sub {
352
                      $params->{borrower_preferences}->{'days_in_advance'});
352
	    my $params = shift;
353
        return sub {
353
	    $params->{sth}->execute($params->{borrowernumber},
354
            $params->{sth}->fetchrow_hashref;
354
				    $params->{borrower_preferences}->{'days_in_advance'});
355
        };
355
	    return sub {
356
    }
356
		$params->{sth}->fetchrow_hashref;
357
});
357
	    };
358
358
	}
359
send_digests({
359
    });
360
    sth => $sth_digest,
360
}
361
    digest => $due_digest,
361
362
    letter_code => 'DUEGST',
362
while (my ($branchcode, $digests) = each %$due_digest) {
363
    get_item_info => sub {
363
    send_digests({
364
        my $params = shift;
364
	sth => $sth_digest,
365
        $params->{sth}->execute($params->{borrowernumber}, 0);
365
	digest => $due_digest,
366
        return sub {
366
	letter_code => 'DUEGST',
367
            $params->{sth}->fetchrow_hashref;
367
	branchcode => $branchcode,
368
        };
368
	get_item_info => sub {
369
    }
369
	    my $params = shift;
370
});
370
	    $params->{sth}->execute($params->{borrowernumber}, 0);
371
    
371
	    return sub {
372
		$params->{sth}->fetchrow_hashref;
373
	    };
374
	}
375
    });
376
}
377
372
=head1 METHODS
378
=head1 METHODS
373
379
374
=head2 parse_letter
380
=head2 parse_letter
Lines 408-431 sub parse_letter { Link Here
408
    );
414
    );
409
}
415
}
410
416
411
=head2 get_branch_info
412
413
=cut
414
415
sub get_branch_info {
416
    my ( $borrowernumber ) = @_;
417
418
    ## Get branch info for borrowers home library.
419
    my $patron = Koha::Patrons->find( $borrowernumber );
420
    my $branch = $patron->library->unblessed;
421
    my %branch_info;
422
    foreach my $key( keys %$branch ) {
423
        $branch_info{"branches.$key"} = $branch->{$key};
424
    }
425
426
    return %branch_info;
427
}
428
429
=head2 send_digests
417
=head2 send_digests
430
418
431
    send_digests({
419
    send_digests({
Lines 491-499 sub send_digests { Link Here
491
	    $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } );
479
	    $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } );
492
        }
480
        }
493
481
494
        ## Get branch info for borrowers home library.
495
        my %branch_info = get_branch_info( $borrowernumber );
496
497
        foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
482
        foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
498
            my $letter = parse_letter(
483
            my $letter = parse_letter(
499
                {
484
                {
Lines 502-510 sub send_digests { Link Here
502
                    substitute     => {
487
                    substitute     => {
503
                        count           => $count,
488
                        count           => $count,
504
                        'items.content' => $titles,
489
                        'items.content' => $titles,
505
                        %branch_info,
506
                    },
490
                    },
507
                    branchcode             => $branch_info{"branches.branchcode"},
491
                    branchcode             => $params->{branchcode},
508
                    message_transport_type => $transport,
492
                    message_transport_type => $transport,
509
                }
493
                }
510
                )
494
                )
(-)a/t/db_dependent/cronjobs/advance_notices_digest.t (-7 / +39 lines)
Lines 19-25 Link Here
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
21
22
use Test::More tests => 3;
22
use Test::More tests => 5;
23
use t::lib::TestBuilder;
23
use t::lib::TestBuilder;
24
use DateTime;
24
use DateTime;
25
use File::Spec;
25
use File::Spec;
Lines 113-118 my $item1 = $builder->build({ Link Here
113
my $item2 = $builder->build({
113
my $item2 = $builder->build({
114
    source => 'Item'
114
    source => 'Item'
115
});
115
});
116
my $item3 = $builder->build({
117
    source => 'Item'
118
});
116
my $now = DateTime->now();
119
my $now = DateTime->now();
117
my $tomorrow = $now->add(days => 1)->strftime('%F');
120
my $tomorrow = $now->add(days => 1)->strftime('%F');
118
121
Lines 121-127 my $issue1 = $builder->build({ Link Here
121
    value => {
124
    value => {
122
        date_due => $tomorrow,
125
        date_due => $tomorrow,
123
        itemnumber => $item1->{itemnumber},
126
        itemnumber => $item1->{itemnumber},
124
        branchcode => $library1->{branchcode},
127
        branchcode => $library2->{branchcode},
125
        borrowernumber => $borrower->{borrowernumber},
128
        borrowernumber => $borrower->{borrowernumber},
126
        returndate => undef
129
        returndate => undef
127
    }
130
    }
Lines 132-138 my $issue2 = $builder->build({ Link Here
132
    value => {
135
    value => {
133
        date_due => $tomorrow,
136
        date_due => $tomorrow,
134
        itemnumber => $item2->{itemnumber},
137
        itemnumber => $item2->{itemnumber},
135
        branchcode => $library2->{branchcode},
138
        branchcode => $library3->{branchcode},
139
        borrowernumber => $borrower->{borrowernumber},
140
        returndate => undef
141
    }
142
});
143
my $issue3 = $builder->build({
144
    source => 'Issue',
145
    value => {
146
        date_due => $tomorrow,
147
        itemnumber => $item3->{itemnumber},
136
        branchcode => $library3->{branchcode},
148
        branchcode => $library3->{branchcode},
137
        borrowernumber => $borrower->{borrowernumber},
149
        borrowernumber => $borrower->{borrowernumber},
138
        returndate => undef
150
        returndate => undef
Lines 160-173 $sthmq->execute($borrower->{borrowernumber}); Link Here
160
172
161
my $messages = $sthmq->fetchall_hashref('message_id');
173
my $messages = $sthmq->fetchall_hashref('message_id');
162
174
163
is(scalar(keys %$messages), 1, 'There is one message in the queue');
175
is(scalar(keys %$messages), 2, 'There are two messages in the queue');
176
177
my %expected = (
178
    $library2->{branchname} => {
179
        count => 1,
180
    },
181
    $library3->{branchname} => {
182
        count => 2,
183
    }
184
 );
185
186
my %expected_branchnames = (
187
    $library2->{branchname} => 1,
188
    $library3->{branchname} => 1
189
);
190
191
my $i = 0;
164
for my $message (keys %$messages) {
192
for my $message (keys %$messages) {
165
    $messages->{$message}->{content} =~ /(\d+) (.*)/;
193
    $messages->{$message}->{content} =~ /(\d+) (.*)/;
166
    my $count = $1;
194
    my $count = $1;
167
    my $branchname = $2;
195
    my $branchname = $2;
168
196
169
    is ($count, '2', 'Issue count is 2');
197
    ok ($expected_branchnames{$branchname}, 'Branchname is that of expected issuing branch.');
170
    is ($branchname, $library1->{branchname}, 'Branchname is that of borrowers home branch.');
198
199
    $expected_branchnames{$branchname} = 0;
200
201
    is ($count, $expected{$branchname}->{count}, 'Issue count is ' . $expected{$branchname}->{count});
202
203
    $i++;
171
}
204
}
172
205
173
$dbh->rollback;
206
$dbh->rollback;
174
- 

Return to bug 20478