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

(-)a/C4/Circulation.pm (-2 / +4 lines)
Lines 48-53 use Koha::IssuingRules; Link Here
48
use Koha::Items;
48
use Koha::Items;
49
use Koha::Patrons;
49
use Koha::Patrons;
50
use Koha::Patron::Debarments;
50
use Koha::Patron::Debarments;
51
use Koha::Patron::Message::Preferences;
51
use Koha::Database;
52
use Koha::Database;
52
use Koha::Libraries;
53
use Koha::Libraries;
53
use Koha::Holds;
54
use Koha::Holds;
Lines 3376-3389 sub SendCirculationAlert { Link Here
3376
        CHECKOUT => 'Item_Checkout',
3377
        CHECKOUT => 'Item_Checkout',
3377
        RENEWAL  => 'Item_Checkout',
3378
        RENEWAL  => 'Item_Checkout',
3378
    );
3379
    );
3379
    my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences({
3380
    return unless my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
3380
        borrowernumber => $borrower->{borrowernumber},
3381
        borrowernumber => $borrower->{borrowernumber},
3381
        message_name   => $message_name{$type},
3382
        message_name   => $message_name{$type},
3382
    });
3383
    });
3384
3383
    my $issues_table = ( $type eq 'CHECKOUT' || $type eq 'RENEWAL' ) ? 'issues' : 'old_issues';
3385
    my $issues_table = ( $type eq 'CHECKOUT' || $type eq 'RENEWAL' ) ? 'issues' : 'old_issues';
3384
3386
3385
    my $schema = Koha::Database->new->schema;
3387
    my $schema = Koha::Database->new->schema;
3386
    my @transports = keys %{ $borrower_preferences->{transports} };
3388
    my @transports = keys %{ $borrower_preferences->message_transport_types };
3387
3389
3388
    # From the MySQL doc:
3390
    # From the MySQL doc:
3389
    # LOCK TABLES is not transaction-safe and implicitly commits any active transaction before attempting to lock the tables.
3391
    # LOCK TABLES is not transaction-safe and implicitly commits any active transaction before attempting to lock the tables.
(-)a/C4/Form/MessagingPreferences.pm (-4 / +5 lines)
Lines 133-153 sub set_form_values { Link Here
133
    # walk through the options and update them with these borrower_preferences
133
    # walk through the options and update them with these borrower_preferences
134
    my $messaging_options = Koha::Patron::Message::Preferences->get_options;
134
    my $messaging_options = Koha::Patron::Message::Preferences->get_options;
135
    PREF: foreach my $option ( @$messaging_options ) {
135
    PREF: foreach my $option ( @$messaging_options ) {
136
        my $pref = C4::Members::Messaging::GetMessagingPreferences( { %{ $target_params }, message_name => $option->{'message_name'} } );
136
        my $pref = Koha::Patron::Message::Preferences->find( { %{ $target_params }, message_attribute_id => $option->{'message_attribute_id'} } );
137
        $option->{ $option->{'message_name'} } = 1;
137
        $option->{ $option->{'message_name'} } = 1;
138
        # make a hashref of the days, selecting one.
138
        # make a hashref of the days, selecting one.
139
        if ( $option->{'takes_days'} ) {
139
        if ( $option->{'takes_days'} ) {
140
            my $days_in_advance = $pref->{'days_in_advance'} ? $pref->{'days_in_advance'} : 0;
140
            my $days_in_advance = $pref && $pref->days_in_advance ? $pref->days_in_advance : 0;
141
            $option->{days_in_advance} = $days_in_advance;
141
            $option->{days_in_advance} = $days_in_advance;
142
            @{$option->{'select_days'}} = map { {
142
            @{$option->{'select_days'}} = map { {
143
                day        => $_,
143
                day        => $_,
144
                selected   => $_ == $days_in_advance  }
144
                selected   => $_ == $days_in_advance  }
145
            } ( 0..MAX_DAYS_IN_ADVANCE );
145
            } ( 0..MAX_DAYS_IN_ADVANCE );
146
        }
146
        }
147
        foreach my $transport ( keys %{$pref->{'transports'}} ) {
147
        next unless $pref;
148
        foreach my $transport ( keys %{$pref->message_transport_types} ) {
148
            $option->{'transports_'.$transport} = 1;
149
            $option->{'transports_'.$transport} = 1;
149
        }
150
        }
150
        $option->{'digest'} = 1 if $pref->{'wants_digest'};
151
        $option->{'digest'} = 1 if $pref->wants_digest;
151
    }
152
    }
152
    $template->param(messaging_preferences => $messaging_options);
153
    $template->param(messaging_preferences => $messaging_options);
153
}
154
}
(-)a/C4/Members/Messaging.pm (-63 lines)
Lines 35-103 This module lets you modify a patron's messaging preferences. Link Here
35
35
36
=head1 FUNCTIONS
36
=head1 FUNCTIONS
37
37
38
=head2 GetMessagingPreferences
39
40
  my $preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrower->{'borrowernumber'},
41
                                                                       message_name   => 'DUE' } );
42
43
  my $preferences = C4::Members::Messaging::GetMessagingPreferences( { categorycode => 'LIBRARY',
44
                                                                       message_name   => 'DUE' } );
45
46
returns: a hashref of messaging preferences for a borrower or patron category for a particlar message_name
47
48
Requires either a borrowernumber or a categorycode key, but not both.
49
50
=cut
51
52
sub GetMessagingPreferences {
53
    my $params = shift;
54
55
    return unless exists $params->{message_name};
56
    return unless exists $params->{borrowernumber} xor exists $params->{categorycode}; # yes, xor
57
    my $sql = <<'END_SQL';
58
SELECT borrower_message_preferences.*,
59
       borrower_message_transport_preferences.message_transport_type,
60
       message_attributes.message_name,
61
       message_attributes.takes_days,
62
       message_transports.is_digest,
63
       message_transports.letter_module,
64
       message_transports.letter_code
65
FROM   borrower_message_preferences
66
LEFT JOIN borrower_message_transport_preferences
67
ON     borrower_message_transport_preferences.borrower_message_preference_id = borrower_message_preferences.borrower_message_preference_id
68
LEFT JOIN message_attributes
69
ON     message_attributes.message_attribute_id = borrower_message_preferences.message_attribute_id
70
LEFT JOIN message_transports
71
ON     message_transports.message_attribute_id = message_attributes.message_attribute_id
72
AND    message_transports.message_transport_type = borrower_message_transport_preferences.message_transport_type
73
AND    message_transports.is_digest = borrower_message_preferences.wants_digest
74
WHERE  message_attributes.message_name = ?
75
END_SQL
76
77
    my @bind_params = ( $params->{'message_name'} );
78
    if ( exists $params->{'borrowernumber'} ) {
79
        $sql .= " AND borrower_message_preferences.borrowernumber = ? ";
80
        push @bind_params, $params->{borrowernumber};
81
    } else {
82
        $sql .= " AND borrower_message_preferences.categorycode = ? ";
83
        push @bind_params, $params->{categorycode};
84
    }
85
86
    my $sth = C4::Context->dbh->prepare($sql);
87
    $sth->execute(@bind_params);
88
    my $return;
89
    my %transports; # helps build a list of unique message_transport_types
90
    ROW: while ( my $row = $sth->fetchrow_hashref() ) {
91
        next ROW unless $row->{'message_attribute_id'};
92
        $return->{'days_in_advance'} = $row->{'days_in_advance'} if defined $row->{'days_in_advance'};
93
        $return->{'wants_digest'}    = $row->{'wants_digest'}    if defined $row->{'wants_digest'};
94
        $return->{'letter_code'}     = $row->{'letter_code'};
95
        next unless defined $row->{'message_transport_type'};
96
        $return->{'transports'}->{ $row->{'message_transport_type'} } = $row->{'letter_code'};
97
    }
98
    return $return;
99
}
100
101
=head2 SetMessagingPreference
38
=head2 SetMessagingPreference
102
39
103
This method defines how a user (or a default for a patron category) wants to get a certain 
40
This method defines how a user (or a default for a patron category) wants to get a certain 
(-)a/C4/Reserves.pm (-5 / +8 lines)
Lines 46-51 use Koha::Libraries; Link Here
46
use Koha::IssuingRules;
46
use Koha::IssuingRules;
47
use Koha::Items;
47
use Koha::Items;
48
use Koha::ItemTypes;
48
use Koha::ItemTypes;
49
use Koha::Patron::Message::Preferences;
49
use Koha::Patrons;
50
use Koha::Patrons;
50
51
51
use List::MoreUtils qw( firstidx any );
52
use List::MoreUtils qw( firstidx any );
Lines 1848-1857 sub _koha_notify_reserve { Link Here
1848
    # Try to get the borrower's email address
1849
    # Try to get the borrower's email address
1849
    my $to_address = C4::Members::GetNoticeEmailAddress($borrowernumber);
1850
    my $to_address = C4::Members::GetNoticeEmailAddress($borrowernumber);
1850
1851
1851
    my $messagingprefs = C4::Members::Messaging::GetMessagingPreferences( {
1852
    my $messagingpref = Koha::Patron::Message::Preferences->find_with_message_name({
1852
            borrowernumber => $borrowernumber,
1853
        borrowernumber => $borrowernumber,
1853
            message_name => 'Hold_Filled'
1854
        message_name   => 'Hold_Filled',
1854
    } );
1855
    });
1855
1856
1856
    my $library = Koha::Libraries->find( $hold->branchcode )->unblessed;
1857
    my $library = Koha::Libraries->find( $hold->branchcode )->unblessed;
1857
1858
Lines 1892-1898 sub _koha_notify_reserve { Link Here
1892
        } );
1893
        } );
1893
    };
1894
    };
1894
1895
1895
    while ( my ( $mtt, $letter_code ) = each %{ $messagingprefs->{transports} } ) {
1896
    my $transports = $messagingpref->message_transport_types if $messagingpref;
1897
    foreach my $mtt (keys %{$transports}) {
1898
        my $letter_code = $transports->{$mtt};
1896
        next if (
1899
        next if (
1897
               ( $mtt eq 'email' and not $to_address ) # No email address
1900
               ( $mtt eq 'email' and not $to_address ) # No email address
1898
            or ( $mtt eq 'sms'   and not $borrower->{smsalertnumber} ) # No SMS number
1901
            or ( $mtt eq 'sms'   and not $borrower->{smsalertnumber} ) # No SMS number
(-)a/Koha/Patron/Category.pm (-8 / +6 lines)
Lines 83-101 sub default_messaging { Link Here
83
    my $messaging_options = Koha::Patron::Message::Preferences->get_options;
83
    my $messaging_options = Koha::Patron::Message::Preferences->get_options;
84
    my @messaging;
84
    my @messaging;
85
    foreach my $option (@$messaging_options) {
85
    foreach my $option (@$messaging_options) {
86
        my $pref = C4::Members::Messaging::GetMessagingPreferences(
86
        my $pref = Koha::Patron::Message::Preferences->find_with_message_name({
87
            {
87
            categorycode   => $self->categorycode,
88
                categorycode => $self->categorycode,
88
            message_name   => $option->{message_name},
89
                message_name => $option->{message_name}
89
        });
90
            }
90
        next if !$pref || $pref && !$pref->message_transport_types;
91
        );
92
        next unless $pref->{transports};
93
        my $brief_pref = {
91
        my $brief_pref = {
94
            message_attribute_id      => $option->{message_attribute_id},
92
            message_attribute_id      => $option->{message_attribute_id},
95
            message_name              => $option->{message_name},
93
            message_name              => $option->{message_name},
96
            $option->{'message_name'} => 1,
94
            $option->{'message_name'} => 1,
97
        };
95
        };
98
        foreach my $transport ( keys %{ $pref->{transports} } ) {
96
        foreach my $transport ( keys %{ $pref->message_transport_types } ) {
99
            push @{ $brief_pref->{transports} }, { transport => $transport };
97
            push @{ $brief_pref->{transports} }, { transport => $transport };
100
        }
98
        }
101
        push @messaging, $brief_pref;
99
        push @messaging, $brief_pref;
(-)a/circ/returns.pl (-2 / +6 lines)
Lines 52-57 use Koha::DateUtils; Link Here
52
use Koha::Calendar;
52
use Koha::Calendar;
53
use Koha::Checkouts;
53
use Koha::Checkouts;
54
use Koha::BiblioFrameworks;
54
use Koha::BiblioFrameworks;
55
use Koha::Patron::Message::Preferences;
55
56
56
my $query = new CGI;
57
my $query = new CGI;
57
58
Lines 436-442 if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) { Link Here
436
if ( $messages->{'ResFound'}) {
437
if ( $messages->{'ResFound'}) {
437
    my $reserve    = $messages->{'ResFound'};
438
    my $reserve    = $messages->{'ResFound'};
438
    my $borr = C4::Members::GetMember( borrowernumber => $reserve->{'borrowernumber'} );
439
    my $borr = C4::Members::GetMember( borrowernumber => $reserve->{'borrowernumber'} );
439
    my $holdmsgpreferences =  C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $reserve->{'borrowernumber'}, message_name   => 'Hold_Filled' } );
440
    my $holdmsgpreferences =  Koha::Patron::Message::Preferences->find_with_message_name({
441
            borrowernumber => $reserve->{'borrowernumber'},
442
            message_name   => 'Hold_Filled',
443
        });
440
    if ( $reserve->{'ResFound'} eq "Waiting" or $reserve->{'ResFound'} eq "Reserved" ) {
444
    if ( $reserve->{'ResFound'} eq "Waiting" or $reserve->{'ResFound'} eq "Reserved" ) {
441
        if ( $reserve->{'ResFound'} eq "Waiting" ) {
445
        if ( $reserve->{'ResFound'} eq "Waiting" ) {
442
            $template->param(
446
            $template->param(
Lines 478-484 if ( $messages->{'ResFound'}) { Link Here
478
            itemnumber     => $reserve->{'itemnumber'},
482
            itemnumber     => $reserve->{'itemnumber'},
479
            reservenotes   => $reserve->{'reservenotes'},
483
            reservenotes   => $reserve->{'reservenotes'},
480
            reserve_id     => $reserve->{reserve_id},
484
            reserve_id     => $reserve->{reserve_id},
481
            bormessagepref => $holdmsgpreferences->{'transports'},
485
            bormessagepref => $holdmsgpreferences->message_transport_types,
482
        );
486
        );
483
    } # else { ; }  # error?
487
    } # else { ; }  # error?
484
}
488
}
(-)a/misc/cronjobs/advance_notices.pl (-19 / +28 lines)
Lines 59-64 use Koha::DateUtils; Link Here
59
use C4::Log;
59
use C4::Log;
60
use Koha::Libraries;
60
use Koha::Libraries;
61
use Koha::Patrons;
61
use Koha::Patrons;
62
use Koha::Patron::Message::Preferences;
62
63
63
=head1 NAME
64
=head1 NAME
64
65
Lines 242-252 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
242
    my $borrower_preferences;
243
    my $borrower_preferences;
243
    if ( 0 == $upcoming->{'days_until_due'} ) {
244
    if ( 0 == $upcoming->{'days_until_due'} ) {
244
        # This item is due today. Send an 'item due' message.
245
        # This item is due today. Send an 'item due' message.
245
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
246
        $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
246
                                                                                   message_name   => 'item_due' } );
247
            borrowernumber => $upcoming->{'borrowernumber'},
248
            message_name   => 'item_due',
249
        });
247
        next unless $borrower_preferences;
250
        next unless $borrower_preferences;
248
        
251
        
249
        if ( $borrower_preferences->{'wants_digest'} ) {
252
        if ( $borrower_preferences->wants_digest ) {
250
            # cache this one to process after we've run through all of the items.
253
            # cache this one to process after we've run through all of the items.
251
            $due_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
254
            $due_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
252
            $due_digest->{ $upcoming->{borrowernumber} }->{count}++;
255
            $due_digest->{ $upcoming->{borrowernumber} }->{count}++;
Lines 261-267 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
261
            }
264
            }
262
265
263
            ## Get branch info for borrowers home library.
266
            ## Get branch info for borrowers home library.
264
            foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
267
            foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) {
265
                my $letter = parse_letter( { letter_code    => $letter_type,
268
                my $letter = parse_letter( { letter_code    => $letter_type,
266
                                      borrowernumber => $upcoming->{'borrowernumber'},
269
                                      borrowernumber => $upcoming->{'borrowernumber'},
267
                                      branchcode     => $upcoming->{'branchcode'},
270
                                      branchcode     => $upcoming->{'branchcode'},
Lines 275-293 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
275
            }
278
            }
276
        }
279
        }
277
    } else {
280
    } else {
278
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
281
        $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
279
                                                                                   message_name   => 'advance_notice' } );
282
            borrowernumber => $upcoming->{'borrowernumber'},
280
        next UPCOMINGITEM unless $borrower_preferences && exists $borrower_preferences->{'days_in_advance'};
283
            message_name   => 'advance_notice',
281
        next UPCOMINGITEM unless $borrower_preferences->{'days_in_advance'} == $upcoming->{'days_until_due'};
284
        });
282
285
        next UPCOMINGITEM unless $borrower_preferences && $borrower_preferences->days_in_advance;
283
        if ( $borrower_preferences->{'wants_digest'} ) {
286
        next UPCOMINGITEM unless $borrower_preferences->days_in_advance == $upcoming->{'days_until_due'};
287
288
        if ( $borrower_preferences->wants_digest ) {
284
            # cache this one to process after we've run through all of the items.
289
            # cache this one to process after we've run through all of the items.
285
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
290
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
286
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{count}++;
291
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{count}++;
287
        } else {
292
        } else {
288
            my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} );
293
            my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} );
289
            my $letter_type = 'PREDUE';
294
            my $letter_type = 'PREDUE';
290
            $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->{'days_in_advance'});
295
            $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->days_in_advance);
291
            my $titles = "";
296
            my $titles = "";
292
            while ( my $item_info = $sth->fetchrow_hashref()) {
297
            while ( my $item_info = $sth->fetchrow_hashref()) {
293
              my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields;
298
              my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields;
Lines 295-301 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
295
            }
300
            }
296
301
297
            ## Get branch info for borrowers home library.
302
            ## Get branch info for borrowers home library.
298
            foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
303
            foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) {
299
                my $letter = parse_letter( { letter_code    => $letter_type,
304
                my $letter = parse_letter( { letter_code    => $letter_type,
300
                                      borrowernumber => $upcoming->{'borrowernumber'},
305
                                      borrowernumber => $upcoming->{'borrowernumber'},
301
                                      branchcode     => $upcoming->{'branchcode'},
306
                                      branchcode     => $upcoming->{'branchcode'},
Lines 346-359 PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { Link Here
346
    my $count = $digest->{count};
351
    my $count = $digest->{count};
347
    my $from_address = $digest->{email};
352
    my $from_address = $digest->{email};
348
353
349
    my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber,
354
    my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
350
                                                                                  message_name   => 'advance_notice' } );
355
            borrowernumber => $borrowernumber,
356
            message_name   => 'advance_notice',
357
        });
351
    next PATRON unless $borrower_preferences; # how could this happen?
358
    next PATRON unless $borrower_preferences; # how could this happen?
352
359
353
360
354
    my $letter_type = 'PREDUEDGST';
361
    my $letter_type = 'PREDUEDGST';
355
362
356
    $sth->execute($borrowernumber,$borrower_preferences->{'days_in_advance'});
363
    $sth->execute($borrowernumber,$borrower_preferences->days_in_advance);
357
    my $titles = "";
364
    my $titles = "";
358
    while ( my $item_info = $sth->fetchrow_hashref()) {
365
    while ( my $item_info = $sth->fetchrow_hashref()) {
359
      my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields;
366
      my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields;
Lines 363-369 PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { Link Here
363
    ## Get branch info for borrowers home library.
370
    ## Get branch info for borrowers home library.
364
    my %branch_info = get_branch_info( $borrowernumber );
371
    my %branch_info = get_branch_info( $borrowernumber );
365
372
366
    foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
373
    foreach my $transport ( keys %{ $borrower_preferences->message_transport_types } ) {
367
        my $letter = parse_letter(
374
        my $letter = parse_letter(
368
            {
375
            {
369
                letter_code    => $letter_type,
376
                letter_code    => $letter_type,
Lines 405-412 PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) { Link Here
405
    my $count = $digest->{count};
412
    my $count = $digest->{count};
406
    my $from_address = $digest->{email};
413
    my $from_address = $digest->{email};
407
414
408
    my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber,
415
    my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
409
                                                                                  message_name   => 'item_due' } );
416
            borrowernumber => $borrowernumber,
417
            message_name   => 'item_due',
418
        });
410
    next PATRON unless $borrower_preferences; # how could this happen?
419
    next PATRON unless $borrower_preferences; # how could this happen?
411
420
412
    my $letter_type = 'DUEDGST';
421
    my $letter_type = 'DUEDGST';
Lines 420-426 PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) { Link Here
420
    ## Get branch info for borrowers home library.
429
    ## Get branch info for borrowers home library.
421
    my %branch_info = get_branch_info( $borrowernumber );
430
    my %branch_info = get_branch_info( $borrowernumber );
422
431
423
    for my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
432
    for my $transport ( keys %{ $borrower_preferences->message_transport_types } ) {
424
        my $letter = parse_letter(
433
        my $letter = parse_letter(
425
            {
434
            {
426
                letter_code    => $letter_type,
435
                letter_code    => $letter_type,
(-)a/t/db_dependent/Koha/Patron/Categories.t (-4 / +3 lines)
Lines 22-33 use Modern::Perl; Link Here
22
use Test::More tests => 11;
22
use Test::More tests => 11;
23
23
24
use C4::Context;
24
use C4::Context;
25
use C4::Members::Messaging;
26
use Koha::Database;
25
use Koha::Database;
27
use Koha::DateUtils;
26
use Koha::DateUtils;
28
use Koha::Patron;
27
use Koha::Patron;
29
use Koha::Patron::Category;
28
use Koha::Patron::Category;
30
use Koha::Patron::Categories;
29
use Koha::Patron::Categories;
30
use Koha::Patron::Message::Preferences;
31
use t::lib::TestBuilder;
31
use t::lib::TestBuilder;
32
use t::lib::Mocks;
32
use t::lib::Mocks;
33
33
Lines 122-134 subtest 'default_messaging tests' => sub { Link Here
122
            is_digest => 1,
122
            is_digest => 1,
123
        }
123
        }
124
    });
124
    });
125
    C4::Members::Messaging::SetMessagingPreference({
125
    Koha::Patron::Message::Preference->new({
126
        categorycode            => $category->categorycode,
126
        categorycode            => $category->categorycode,
127
        message_attribute_id    => $attr->{'message_attribute_id'},
127
        message_attribute_id    => $attr->{'message_attribute_id'},
128
        message_transport_types => [ qw( email ) ],
128
        message_transport_types => [ qw( email ) ],
129
        days_in_advance         => 5,
129
        days_in_advance         => 5,
130
        wants_digest            => 1
130
        wants_digest            => 1
131
    });
131
    })->store;
132
    my $default_messaging = $category->default_messaging;
132
    my $default_messaging = $category->default_messaging;
133
    is(@$default_messaging, 1, "One default messaging found.");
133
    is(@$default_messaging, 1, "One default messaging found.");
134
    $default_messaging = $default_messaging->[0];
134
    $default_messaging = $default_messaging->[0];
135
- 

Return to bug 18595