Bug 12396 - MTT FIX: Due notices (DUEDGST) are multiplicated and all of them are...
authorOlli-Antti Kivilahti <olli-antti.kivilahti@jns.fi>
Tue, 10 Jun 2014 06:48:14 +0000 (09:48 +0300)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Sun, 15 Jun 2014 14:14:45 +0000 (11:14 -0300)
So the first patron receives correct letters, but the followings received
all the previous ones AND his letters.
Eventually you end up with !n letters in message_queue where n = amount of patrons
receiving due messages as digest and having something due.

Eventually we got 4 000 000 ODUEDGST-letters of which 1 100 000 were sent to our patrons :)
This is madness!

Test plan:
0/ Delete the content of the message_queue table.
1/ Pick 3 patrons and set them to receive due messages as digest.
2/ Check 1 item out for 3 separate patrons and specify a due date today.
3/ Launch the advance_notices.pl script.
4/ Before this patch, you got 6 notices (1+2+3 [!n]). Now, you get 3 notices, 1 for each patron.

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Problem exis.
Patch work as described following test plan.
No koha-qa errors

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
misc/cronjobs/advance_notices.pl

index 1fe3a66..62e36e4 100755 (executable)
@@ -339,8 +339,8 @@ SELECT biblio.*, items.*, issues.*
     AND issues.borrowernumber = ?
     AND (TO_DAYS(date_due)-TO_DAYS(NOW()) = ?)
 END_SQL
-@letters = ();
 PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) {
+    @letters = ();
     my $count = $digest->{count};
     my $from_address = $digest->{email};
 
@@ -399,8 +399,8 @@ PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) {
 }
 
 # Now, run through all the people that want digests and send them
-@letters = ();
 PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) {
+    @letters = ();
     my $count = $digest->{count};
     my $from_address = $digest->{email};