Merge remote-tracking branch 'origin/new/bug_6716'
[koha_fer] / C4 / Letters.pm
index c894a57..2420e4a 100644 (file)
@@ -323,12 +323,14 @@ sub SendAlerts {
         $letter->{content} =~ s/<<LibrarianSurname>>/$userenv->{surname}/g;
         $letter->{content} =~
           s/<<LibrarianEmailaddress>>/$userenv->{emailaddress}/g;
-        foreach my $data (@$dataorders) {
-            my $line = $1 if ( $letter->{content} =~ m/(<<.*>>)/ );
-            foreach my $field ( keys %$data ) {
-                $line =~ s/(<<[^\.]+.$field>>)/$data->{$field}/;
+        foreach my $data ( @{$dataorders} ) {
+            if ( $letter->{content} =~ m/(<<.*>>)/ ) {
+                my $line = $1;
+                foreach my $field ( keys %{$data} ) {
+                    $line =~ s/(<<[^\.]+.$field>>)/$data->{$field}/;
+                }
+                $letter->{content} =~ s/(<<.*>>)/$line\n$1/;
             }
-            $letter->{content} =~ s/(<<.*>>)/$line\n$1/;
         }
         $letter->{content} =~ s/<<[^>]*>>//g;
         my $innerletter = $letter;
@@ -391,12 +393,14 @@ sub SendAlerts {
         $letter->{content} =~ s/<<LibrarianSurname>>/$userenv->{surname}/g;
         $letter->{content} =~
           s/<<LibrarianEmailaddress>>/$userenv->{emailaddress}/g;
-        foreach my $data (@$dataorders) {
-            my $line = $1 if ( $letter->{content} =~ m/(<<.*>>)/ );
-            foreach my $field ( keys %$data ) {
-                $line =~ s/(<<[^\.]+.$field>>)/$data->{$field}/;
+        foreach my $data ( @{$dataorders} ) {
+            if ( $letter->{content} =~ m/(<<.*>>)/ ) {
+                my $line = $1;
+                foreach my $field ( keys %{$data} ) {
+                    $line =~ s/(<<[^\.]+.$field>>)/$data->{$field}/;
+                }
+                $letter->{content} =~ s/(<<.*>>)/$line\n$1/;
             }
-            $letter->{content} =~ s/(<<.*>>)/$line\n$1/;
         }
         $letter->{content} =~ s/<<[^>]*>>//g;
         my $innerletter = $letter;
@@ -485,6 +489,7 @@ sub parseletter_sth {
     ($table eq 'biblio'       ) ? "SELECT * FROM $table WHERE   biblionumber = ?"                      :
     ($table eq 'biblioitems'  ) ? "SELECT * FROM $table WHERE   biblionumber = ?"                      :
     ($table eq 'items'        ) ? "SELECT * FROM $table WHERE     itemnumber = ?"                      :
+    ($table eq 'issues'       ) ? "SELECT * FROM $table WHERE     itemnumber = ?"                      :
     ($table eq 'reserves'     ) ? "SELECT * FROM $table WHERE borrowernumber = ? and biblionumber = ?" :
     ($table eq 'borrowers'    ) ? "SELECT * FROM $table WHERE borrowernumber = ?"                      :
     ($table eq 'branches'     ) ? "SELECT * FROM $table WHERE     branchcode = ?"                      :
@@ -831,8 +836,8 @@ sub _send_message_by_email ($;$$$) {
     if ( my $bcc = C4::Context->preference('OverdueNoticeBcc') ) {
        $sendmail_params{ Bcc } = $bcc;
     }
-    
 
+    _update_message_to_address($message->{'message_id'},$to_address) unless $message->{to_address}; #if initial message address was empty, coming here means that a to address was found and queue should be updated
     if ( sendmail( %sendmail_params ) ) {
         _set_message_status( { message_id => $message->{'message_id'},
                 status     => 'sent' } );
@@ -858,6 +863,12 @@ sub _send_message_by_sms ($) {
     return $success;
 }
 
+sub _update_message_to_address {
+    my ($id, $to)= @_;
+    my $dbh = C4::Context->dbh();
+    $dbh->do('UPDATE message_queue SET to_address=? WHERE message_id=?',undef,($to,$id));
+}
+
 sub _set_message_status ($) {
     my $params = shift or return undef;