Bug 11696: ensure that print overdue notices use the print template
authorJonathan Druart <jonathan.druart@biblibre.com>
Thu, 6 Feb 2014 10:41:35 +0000 (11:41 +0100)
committerGalen Charlton <gmc@esilibrary.com>
Fri, 2 May 2014 20:29:21 +0000 (20:29 +0000)
This reordering avoids the case where a print notice is sent with an
email or sms template is no email or SMS is defined.

Test plan:
Check print, sms and email for an overdue rule
Don't define an email address and generate an overdue for a user
Define 3 templates for the notice used
Launch the cronjob script and verify the print notice is generated using
the print template.

Signed-off-by: Olli-Antti Kivilahti <olli-antti.kivilahti@jns.fi>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
C4/Overdues.pm
t/db_dependent/Overdues.t

index 1e1a207..169b36c 100644 (file)
@@ -23,6 +23,8 @@ use strict;
 #use warnings; FIXME - Bug 2505
 use Date::Calc qw/Today Date_to_Days/;
 use Date::Manip qw/UnixDate/;
+use List::MoreUtils qw( uniq );
+
 use C4::Circulation;
 use C4::Context;
 use C4::Accounts;
@@ -928,6 +930,12 @@ sub GetOverdueMessageTransportTypes {
     while ( my $mtt = $sth->fetchrow ) {
         push @mtts, $mtt;
     }
+
+    # Put 'print' in first if exists
+    # It avoid to sent a print notice with an email or sms template is no email or sms is defined
+    @mtts = uniq( 'print', @mtts )
+        if grep {/^print$/} @mtts;
+
     return \@mtts;
 }
 
index b023cfd..1a1d5f8 100644 (file)
@@ -38,6 +38,8 @@ $dbh->do(q|
     ('', 'PT', 1, 'email'),
     ('', 'PT', 2, 'email'),
     ('', 'PT', 2, 'sms'),
+    ('', 'PT', 3, 'sms'),
+    ('', 'PT', 3, 'email'),
     ('', 'PT', 3, 'print'),
     ('', 'YA', 2, 'sms')
 |);
@@ -69,7 +71,7 @@ $mtts = C4::Overdues::GetOverdueMessageTransportTypes('', 'PT', 2);
 is_deeply( $mtts, ['email', 'sms'], 'GetOverdueMessageTransportTypes: second overdue is by email and sms for PT (default)' );
 
 $mtts = C4::Overdues::GetOverdueMessageTransportTypes('', 'PT', 3);
-is_deeply( $mtts, ['print'], 'GetOverdueMessageTransportTypes: third overdue is by print for PT (default)' );
+is_deeply( $mtts, ['print', 'sms', 'email'], 'GetOverdueMessageTransportTypes: third overdue is by print, sms and email for PT (default). With print in first.' );
 
 
 done_testing;