- my @contacts = $self->contact_list(@_);
- my @emails;
- foreach my $contact (@contacts) {
- foreach my $contact_email ($contact->contact_email) {
- push @emails,
- $contact->firstlast . ' <' . $contact_email->emailaddress . '>';
+ my @classnums;
+ my $and_invoice;
+ foreach (@_) {
+ if (/^invoice$/) {
+ $and_invoice = 1;
+ } else {
+ push @classnums, $_;
+ }
+ }
+ my %emails;
+ # if the only argument passed was 'invoice' then no classnums are
+ # intended, so skip this.
+ if ( @classnums ) {
+ my @contacts = $self->contact_list(@classnums);
+ foreach my $contact (@contacts) {
+ foreach my $contact_email ($contact->contact_email) {
+ # unlike on 4.x, we have a separate list of invoice email
+ # destinations.
+ # make sure they're not redundant with contact emails
+ my $dest = $contact->firstlast . ' <' . $contact_email->emailaddress . '>';
+ $emails{ $contact_email->emailaddress } = $dest;
+ }
+ }
+ }
+ if ( $and_invoice ) {
+ foreach my $email ($self->invoicing_list_emailonly) {
+ my $dest = $self->name_short . ' <' . $email . '>';
+ $emails{ $email } ||= $dest;