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 3368-3381 sub SendCirculationAlert { Link Here
3368
        CHECKOUT => 'Item_Checkout',
3369
        CHECKOUT => 'Item_Checkout',
3369
        RENEWAL  => 'Item_Checkout',
3370
        RENEWAL  => 'Item_Checkout',
3370
    );
3371
    );
3371
    my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences({
3372
    return unless my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
3372
        borrowernumber => $borrower->{borrowernumber},
3373
        borrowernumber => $borrower->{borrowernumber},
3373
        message_name   => $message_name{$type},
3374
        message_name   => $message_name{$type},
3374
    });
3375
    });
3376
3375
    my $issues_table = ( $type eq 'CHECKOUT' || $type eq 'RENEWAL' ) ? 'issues' : 'old_issues';
3377
    my $issues_table = ( $type eq 'CHECKOUT' || $type eq 'RENEWAL' ) ? 'issues' : 'old_issues';
3376
3378
3377
    my $schema = Koha::Database->new->schema;
3379
    my $schema = Koha::Database->new->schema;
3378
    my @transports = keys %{ $borrower_preferences->{transports} };
3380
    my @transports = keys %{ $borrower_preferences->message_transport_types };
3379
3381
3380
    # From the MySQL doc:
3382
    # From the MySQL doc:
3381
    # LOCK TABLES is not transaction-safe and implicitly commits any active transaction before attempting to lock the tables.
3383
    # 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 1847-1856 sub _koha_notify_reserve { Link Here
1847
    # Try to get the borrower's email address
1848
    # Try to get the borrower's email address
1848
    my $to_address = C4::Members::GetNoticeEmailAddress($borrowernumber);
1849
    my $to_address = C4::Members::GetNoticeEmailAddress($borrowernumber);
1849
1850
1850
    my $messagingprefs = C4::Members::Messaging::GetMessagingPreferences( {
1851
    my $messagingpref = Koha::Patron::Message::Preferences->find_with_message_name({
1851
            borrowernumber => $borrowernumber,
1852
        borrowernumber => $borrowernumber,
1852
            message_name => 'Hold_Filled'
1853
        message_name   => 'Hold_Filled',
1853
    } );
1854
    });
1854
1855
1855
    my $library = Koha::Libraries->find( $hold->branchcode )->unblessed;
1856
    my $library = Koha::Libraries->find( $hold->branchcode )->unblessed;
1856
1857
Lines 1890-1896 sub _koha_notify_reserve { Link Here
1890
        } );
1891
        } );
1891
    };
1892
    };
1892
1893
1893
    while ( my ( $mtt, $letter_code ) = each %{ $messagingprefs->{transports} } ) {
1894
    my $transports = $messagingpref->message_transport_types if $messagingpref;
1895
    foreach my $mtt (keys %{$transports}) {
1896
        my $letter_code = $transports->{$mtt};
1894
        next if (
1897
        next if (
1895
               ( $mtt eq 'email' and not $to_address ) # No email address
1898
               ( $mtt eq 'email' and not $to_address ) # No email address
1896
            or ( $mtt eq 'sms'   and not $borrower->{smsalertnumber} ) # No SMS number
1899
            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 58-63 use C4::Overdues; Link Here
58
use Koha::DateUtils;
58
use Koha::DateUtils;
59
use C4::Log;
59
use C4::Log;
60
use Koha::Libraries;
60
use Koha::Libraries;
61
use Koha::Patron::Message::Preferences;
61
62
62
=head1 NAME
63
=head1 NAME
63
64
Lines 241-251 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
241
    my $borrower_preferences;
242
    my $borrower_preferences;
242
    if ( 0 == $upcoming->{'days_until_due'} ) {
243
    if ( 0 == $upcoming->{'days_until_due'} ) {
243
        # This item is due today. Send an 'item due' message.
244
        # This item is due today. Send an 'item due' message.
244
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
245
        $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
245
                                                                                   message_name   => 'item_due' } );
246
            borrowernumber => $upcoming->{'borrowernumber'},
247
            message_name   => 'item_due',
248
        });
246
        next unless $borrower_preferences;
249
        next unless $borrower_preferences;
247
        
250
        
248
        if ( $borrower_preferences->{'wants_digest'} ) {
251
        if ( $borrower_preferences->wants_digest ) {
249
            # 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.
250
            $due_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
253
            $due_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
251
            $due_digest->{ $upcoming->{borrowernumber} }->{count}++;
254
            $due_digest->{ $upcoming->{borrowernumber} }->{count}++;
Lines 260-266 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
260
            }
263
            }
261
264
262
            ## Get branch info for borrowers home library.
265
            ## Get branch info for borrowers home library.
263
            foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
266
            foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) {
264
                my $letter = parse_letter( { letter_code    => $letter_type,
267
                my $letter = parse_letter( { letter_code    => $letter_type,
265
                                      borrowernumber => $upcoming->{'borrowernumber'},
268
                                      borrowernumber => $upcoming->{'borrowernumber'},
266
                                      branchcode     => $upcoming->{'branchcode'},
269
                                      branchcode     => $upcoming->{'branchcode'},
Lines 274-292 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
274
            }
277
            }
275
        }
278
        }
276
    } else {
279
    } else {
277
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
280
        $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
278
                                                                                   message_name   => 'advance_notice' } );
281
            borrowernumber => $upcoming->{'borrowernumber'},
279
        next UPCOMINGITEM unless $borrower_preferences && exists $borrower_preferences->{'days_in_advance'};
282
            message_name   => 'advance_notice',
280
        next UPCOMINGITEM unless $borrower_preferences->{'days_in_advance'} == $upcoming->{'days_until_due'};
283
        });
281
284
        next UPCOMINGITEM unless $borrower_preferences && $borrower_preferences->days_in_advance;
282
        if ( $borrower_preferences->{'wants_digest'} ) {
285
        next UPCOMINGITEM unless $borrower_preferences->days_in_advance == $upcoming->{'days_until_due'};
286
287
        if ( $borrower_preferences->wants_digest ) {
283
            # cache this one to process after we've run through all of the items.
288
            # cache this one to process after we've run through all of the items.
284
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
289
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
285
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{count}++;
290
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{count}++;
286
        } else {
291
        } else {
287
            my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} );
292
            my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} );
288
            my $letter_type = 'PREDUE';
293
            my $letter_type = 'PREDUE';
289
            $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->{'days_in_advance'});
294
            $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->days_in_advance);
290
            my $titles = "";
295
            my $titles = "";
291
            while ( my $item_info = $sth->fetchrow_hashref()) {
296
            while ( my $item_info = $sth->fetchrow_hashref()) {
292
              my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields;
297
              my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields;
Lines 294-300 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
294
            }
299
            }
295
300
296
            ## Get branch info for borrowers home library.
301
            ## Get branch info for borrowers home library.
297
            foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
302
            foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) {
298
                my $letter = parse_letter( { letter_code    => $letter_type,
303
                my $letter = parse_letter( { letter_code    => $letter_type,
299
                                      borrowernumber => $upcoming->{'borrowernumber'},
304
                                      borrowernumber => $upcoming->{'borrowernumber'},
300
                                      branchcode     => $upcoming->{'branchcode'},
305
                                      branchcode     => $upcoming->{'branchcode'},
Lines 345-358 PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { Link Here
345
    my $count = $digest->{count};
350
    my $count = $digest->{count};
346
    my $from_address = $digest->{email};
351
    my $from_address = $digest->{email};
347
352
348
    my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber,
353
    my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
349
                                                                                  message_name   => 'advance_notice' } );
354
            borrowernumber => $borrowernumber,
355
            message_name   => 'advance_notice',
356
        });
350
    next PATRON unless $borrower_preferences; # how could this happen?
357
    next PATRON unless $borrower_preferences; # how could this happen?
351
358
352
359
353
    my $letter_type = 'PREDUEDGST';
360
    my $letter_type = 'PREDUEDGST';
354
361
355
    $sth->execute($borrowernumber,$borrower_preferences->{'days_in_advance'});
362
    $sth->execute($borrowernumber,$borrower_preferences->days_in_advance);
356
    my $titles = "";
363
    my $titles = "";
357
    while ( my $item_info = $sth->fetchrow_hashref()) {
364
    while ( my $item_info = $sth->fetchrow_hashref()) {
358
      my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields;
365
      my @item_info = map { $_ =~ /^date|date$/ ? format_date($item_info->{$_}) : $item_info->{$_} || '' } @item_content_fields;
Lines 362-368 PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { Link Here
362
    ## Get branch info for borrowers home library.
369
    ## Get branch info for borrowers home library.
363
    my %branch_info = get_branch_info( $borrowernumber );
370
    my %branch_info = get_branch_info( $borrowernumber );
364
371
365
    foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
372
    foreach my $transport ( keys %{ $borrower_preferences->message_transport_types } ) {
366
        my $letter = parse_letter(
373
        my $letter = parse_letter(
367
            {
374
            {
368
                letter_code    => $letter_type,
375
                letter_code    => $letter_type,
Lines 404-411 PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) { Link Here
404
    my $count = $digest->{count};
411
    my $count = $digest->{count};
405
    my $from_address = $digest->{email};
412
    my $from_address = $digest->{email};
406
413
407
    my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber,
414
    my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
408
                                                                                  message_name   => 'item_due' } );
415
            borrowernumber => $borrowernumber,
416
            message_name   => 'item_due',
417
        });
409
    next PATRON unless $borrower_preferences; # how could this happen?
418
    next PATRON unless $borrower_preferences; # how could this happen?
410
419
411
    my $letter_type = 'DUEDGST';
420
    my $letter_type = 'DUEDGST';
Lines 419-425 PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) { Link Here
419
    ## Get branch info for borrowers home library.
428
    ## Get branch info for borrowers home library.
420
    my %branch_info = get_branch_info( $borrowernumber );
429
    my %branch_info = get_branch_info( $borrowernumber );
421
430
422
    for my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
431
    for my $transport ( keys %{ $borrower_preferences->message_transport_types } ) {
423
        my $letter = parse_letter(
432
        my $letter = parse_letter(
424
            {
433
            {
425
                letter_code    => $letter_type,
434
                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