# Called for each checkbox
# Return true to default as checked, false as unchecked
my($cgi, $name) = @_;
- $name eq 'message'
+ exists $dest_ischecked{$name};
},
&>
</div>
-% if ($send_to_domain) {
+% if ($send_to_domain && $cgi->param('custnum')) {
<div>
<INPUT TYPE="checkbox" NAME="emailtovoice" ID="emailtovoice" VALUE="ON" onclick="toggleDiv(this)">Email to voice
</div>
my $title = $opt{'title'} || 'Send customer notices';
push( @no_search_fields, @{$opt{'no_search_fields'}} ) if $opt{'no_search_fields'};
+$m->comp('/elements/handle_uri_query');
+
my $table = $cgi->param('table') or die "'table' required";
my $agent_virt_agentnum = $cgi->param('agent_virt_agentnum') || '';
@search{keys %search} = map { /\0/ ? [ split /\0/, $_ ] : $_ } values %search;
}
+# rebuild contacts hash
+delete $search{contacts}
+ if exists $search{contacts} && ref $search{contacts};
+$search{'contacts'} = {
+ map { $_ => $search{$_}, }
+ grep { /^(contacts_*)/ && $search{$_} }
+ keys %search
+};
+
&{$opt{'post_search_hook'}}(
'conf' => $conf,
'search' => \%search,
$body ||= $content->body;
}
+ my $sql_query = "FS::$table"->search(\%search);
+ my $count_query = delete($sql_query->{'count_query'});
+ my $count_sth = dbh->prepare($count_query)
+ or die "Error preparing $count_query: ". dbh->errstr;
+ $count_sth->execute
+ or die "Error executing $count_query: ". $count_sth->errstr;
+ my $count_arrayref = $count_sth->fetchrow_arrayref;
+ $num_cust = $count_arrayref->[0];
+
} else {
my @checked_email_dest;
push @contact_classname, 'Message recipients';
} else {
my $contact_class = FS::contact_class->by_key($1);
- push @contact_classname, encode_entities($contact_class->classname);
+ push @contact_classname, encode_entities(
+ $contact_class ? $contact_class->classname : '(none)'
+ );
}
}
}
my @active_classes = qsearch(contact_class => {disabled => ''} );
+my %classnum_ischecked;
+my %dest_ischecked;
+
$CGI::LIST_CONTEXT_WARN = 0;
-my @classnums = grep{ /^\d+$/ } $cgi->param('classnums');
+if ( my @in_classnums = $cgi->param('classnums') ) {
+ # Set checked boxes from form input
+ for my $v (@in_classnums) {
+
+ if ( $v =~ /^\d+$/ ) {
+ $classnum_ischecked{$v} = 1
+ } elsif ( $v =~ /^(invoice|message)$/ ) {
+ $dest_ischecked{$v} = 1;
+ }
-my %classnum_ischecked;
-if (@classnums) {
- # values passed to form
- $classnum_ischecked{$_} = 1 for @classnums;
+ }
} else {
- # default values
+ # Checked boxes default values
$classnum_ischecked{$_->classnum} = 1 for @active_classes;
$classnum_ischecked{0} = 1;
}
+# At least one destination is required
+$dest_ischecked{message} = 1 unless %dest_ischecked;
+
my @optin_checkboxes = (
- [ 'message' => { label => 'Message recipients' } ],
- [ 'invoice' => { label => 'Invoice recipients' } ],
+ [ 'message' => { label => 'Message recipients', desc => 'send this notice to all message recipients for the '.$num_cust.' selected customers.' } ],
+ [ 'invoice' => { label => 'Invoice recipients', desc => 'send this notice to all invoice recipients for the '.$num_cust.' selected customers.' } ],
);
my @classnum_checkboxes = (
[ '0' => { label => '(None)' }],