Bug 18398: Update C4::Message enqueue to use $patron->notice_email_address
authorMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 10 Mar 2023 10:02:19 +0000 (10:02 +0000)
committerTomas Cohen Arazi <tomascohen@theke.io>
Fri, 31 Mar 2023 11:13:33 +0000 (13:13 +0200)
This patch updates the enque method in C4::Message to expect a
Koha::Patron object in the parameters and then uses that patron object
to select the correct email address for notices as defined by
AutoEmailPrimaryAddress.

Signed-off-by: Caroline Cyr La Rose <caroline.cyr-la-rose@inlibro.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
C4/Circulation.pm
C4/Message.pm
Koha/Recall.pm
Koha/Recalls.pm

index 237181f..fe1991f 100644 (file)
@@ -3657,7 +3657,8 @@ sub SendCirculationAlert {
         my $message = C4::Message->find_last_message($borrower, $type, $mtt);
         unless ( $message ) {
             C4::Context->dbh->do(q|UNLOCK TABLES|) unless $do_not_lock;
-            C4::Message->enqueue($letter, $borrower, $mtt);
+            my $patron = Koha::Patrons->find($borrower->{borrowernumber});
+            C4::Message->enqueue($letter, $patron, $mtt);
         } else {
             $message->append($letter);
             $message->update;
index 7a55152..8bf1a05 100644 (file)
@@ -157,41 +157,44 @@ the message.
 
 # C4::Message->enqueue($letter, $borrower, $transport)
 sub enqueue {
-    my ($class, $letter, $borrower, $transport) = @_;
+    my ( $class, $letter, $patron, $transport ) = @_;
     my $metadata   = _metadata($letter);
-    my $to_address = _to_address($borrower, $transport);
+    my $to_address = _to_address( $patron, $transport );
 
     # Same as render_metadata
     my $format ||= sub { $_[0] || "" };
-    my $body = join('', map { $format->($_) } @{$metadata->{body}});
+    my $body = join( '', map { $format->($_) } @{ $metadata->{body} } );
     $letter->{content} = $metadata->{header} . $body . $metadata->{footer};
 
-    $letter->{metadata} = Encode::decode_utf8(Dump($metadata));
-    C4::Letters::EnqueueLetter({
-        letter                 => $letter,
-        borrowernumber         => $borrower->{borrowernumber},
-        message_transport_type => $transport,
-        to_address             => $to_address,
-    });
+    $letter->{metadata} = Encode::decode_utf8( Dump($metadata) );
+    C4::Letters::EnqueueLetter(
+        {
+            letter                 => $letter,
+            borrowernumber         => $patron->id,
+            message_transport_type => $transport,
+            to_address             => $to_address,
+        }
+    );
 }
 
 # based on message $transport, pick an appropriate address to send to
 sub _to_address {
-    my ($borrower, $transport) = @_;
+    my ( $patron, $transport ) = @_;
     my $address;
-    if ($transport eq 'email') {
-        $address = $borrower->{email}
-            || $borrower->{emailpro}
-            || $borrower->{B_email};
-    } elsif ($transport eq 'sms') {
-        $address = $borrower->{smsalertnumber};
-    else {
+    if ( $transport eq 'email' ) {
+        $address = $patron->notice_email_address;
+    }
+    elsif ( $transport eq 'sms' ) {
+        $address = $patron->smsalertnumber;
+    }
+    else {
         warn "'$transport' is an unknown message transport.";
     }
-    if (not defined $address) {
+    if ( not defined $address ) {
         warn "An appropriate $transport address "
-            . "for borrower $borrower->{userid} "
-            . "could not be found.";
+          . "for borrower "
+          . $patron->userid
+          . "could not be found.";
     }
     return $address;
 }
index c993bb7..ab39096 100644 (file)
@@ -358,7 +358,7 @@ sub set_waiting {
         },
     );
 
-    C4::Message->enqueue($letter, $self->patron->unblessed, 'email');
+    C4::Message->enqueue($letter, $self->patron, 'email');
 
     return $self;
 }
index 36d891d..e81802b 100644 (file)
@@ -161,7 +161,7 @@ sub add_recall {
             },
         );
 
-        C4::Message->enqueue( $letter, $checkout->patron->unblessed, 'email' );
+        C4::Message->enqueue( $letter, $checkout->patron, 'email' );
 
         $item = Koha::Items->find( $itemnumber );
         # add to statistics table