Bug 12344 - Multi transport types for issues and checkins
authorKoha instance knakk-koha <knakk-koha@vagrant-saucy64>
Mon, 2 Jun 2014 12:18:30 +0000 (14:18 +0200)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Mon, 30 Mar 2015 16:38:31 +0000 (13:38 -0300)
This small patch corrects the order of generating notices for issues and returns (checkout/checkin) so that borrower's notices are rendered correctly (for sms,email,etc.)

Test plan:

1) Edit SMSSendDriver syspref to use driver 'Test'
2) Edit CHECKOUT template for sms to 'SMS test'
3) select SMS for test patron's messaging prefs for item checkout
4) checkout an item
5) check the table message_queue, verify that template sms is
   not used (message content is not 'SMS test')

6) apply patch, make new checkout
7) check that message_queue table now has a correctly generated
   notice with 'SMS test'

For a real world test use a real SMS::Send driver and run the
cronjob process-message-queue.pl to send messages immediately.

Signed-off-by: Sophie Meynieux <sophie.meynieux@biblibre.com>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
C4/Circulation.pm

index ed3faf6..1cc7c5b 100644 (file)
@@ -3253,19 +3253,6 @@ sub SendCirculationAlert {
         message_name   => $message_name{$type},
     });
     my $issues_table = ( $type eq 'CHECKOUT' || $type eq 'RENEWAL' ) ? 'issues' : 'old_issues';
-    my $letter =  C4::Letters::GetPreparedLetter (
-        module => 'circulation',
-        letter_code => $type,
-        branchcode => $branch,
-        tables => {
-            $issues_table => $item->{itemnumber},
-            'items'       => $item->{itemnumber},
-            'biblio'      => $item->{biblionumber},
-            'biblioitems' => $item->{biblionumber},
-            'borrowers'   => $borrower,
-            'branches'    => $branch,
-        }
-    ) or return;
 
     my @transports = keys %{ $borrower_preferences->{transports} };
     # warn "no transports" unless @transports;
@@ -3274,15 +3261,43 @@ sub SendCirculationAlert {
         my $message = C4::Message->find_last_message($borrower, $type, $_);
         if (!$message) {
             #warn "create new message";
+            my $letter =  C4::Letters::GetPreparedLetter (
+                module => 'circulation',
+                letter_code => $type,
+                branchcode => $branch,
+                message_transport_type => $_,
+                tables => {
+                    $issues_table => $item->{itemnumber},
+                    'items'       => $item->{itemnumber},
+                    'biblio'      => $item->{biblionumber},
+                    'biblioitems' => $item->{biblionumber},
+                    'borrowers'   => $borrower,
+                    'branches'    => $branch,
+                }
+            ) or return;
             C4::Message->enqueue($letter, $borrower, $_);
         } else {
             #warn "append to old message";
+            my $letter =  C4::Letters::GetPreparedLetter (
+                module => 'circulation',
+                letter_code => $type,
+                branchcode => $branch,
+                message_transport_type => $_,
+                tables => {
+                    $issues_table => $item->{itemnumber},
+                    'items'       => $item->{itemnumber},
+                    'biblio'      => $item->{biblionumber},
+                    'biblioitems' => $item->{biblionumber},
+                    'borrowers'   => $borrower,
+                    'branches'    => $branch,
+                }
+            ) or return;
             $message->append($letter);
             $message->update;
         }
     }
 
-    return $letter;
+    return;
 }
 
 =head2 updateWrongTransfer