projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d6c837e
)
avoid sending duplicate notices from package search, RT#10103
author
mark
<mark>
Sat, 2 Oct 2010 00:32:21 +0000
(
00:32
+0000)
committer
mark
<mark>
Sat, 2 Oct 2010 00:32:21 +0000
(
00:32
+0000)
FS/FS/cust_main_Mixin.pm
patch
|
blob
|
history
diff --git
a/FS/FS/cust_main_Mixin.pm
b/FS/FS/cust_main_Mixin.pm
index
b446d69
..
8c8553c
100644
(file)
--- a/
FS/FS/cust_main_Mixin.pm
+++ b/
FS/FS/cust_main_Mixin.pm
@@
-423,7
+423,9
@@
sub email_search_result {
my( $num, $last, $min_sec ) = (0, time, 5); #progresbar foo
my @retry_jobs = ();
my( $num, $last, $min_sec ) = (0, time, 5); #progresbar foo
my @retry_jobs = ();
+ my $dups = 0;
my $success = 0;
my $success = 0;
+ my %sent_to = ();
#eventually order+limit magic to reduce memory use?
foreach my $obj ( qsearch($sql_query) ) {
#eventually order+limit magic to reduce memory use?
foreach my $obj ( qsearch($sql_query) ) {
@@
-443,9
+445,21
@@
sub email_search_result {
if ( !$cust_main ) {
next; # unlinked object; nothing else we can do
}
if ( !$cust_main ) {
next; # unlinked object; nothing else we can do
}
+
+ if( $sent_to{$cust_main->custnum} ) {
+ # avoid duplicates
+ $dups++;
+ next;
+ }
+
+ $sent_to{$cust_main->custnum} = 1;
if ( $msg_template ) {
# XXX add support for other context objects?
if ( $msg_template ) {
# XXX add support for other context objects?
+ # If we do that, handling of "duplicates" will
+ # have to be smarter. Currently we limit to
+ # one message per custnum because they'd all
+ # be identical.
@message = $msg_template->prepare( 'cust_main' => $cust_main );
}
else {
@message = $msg_template->prepare( 'cust_main' => $cust_main );
}
else {
@@
-494,7
+508,7
@@
sub email_search_result {
if(@retry_jobs) {
# fail the job, but with a status message that makes it clear
# something was sent.
if(@retry_jobs) {
# fail the job, but with a status message that makes it clear
# something was sent.
- return "Sent $success, failed ".scalar(@retry_jobs).". Failed attempts placed in job queue.\n";
+ return "Sent $success,
skipped $dups duplicate(s),
failed ".scalar(@retry_jobs).". Failed attempts placed in job queue.\n";
}
return '';
}
return '';