+ my $cv_method = $self->cv;
+
+ if (!$self->order->$cv_method) {
+ return $self->js->flash('error', t8('Cannot send E-mail without ' . $self->cv))
+ ->render($self);
+ }
+
+ $self->{email}->{to} = $self->order->contact->cp_email if $self->order->contact;
+ $self->{email}->{to} ||= $self->order->$cv_method->email;
+ $self->{email}->{cc} = $self->order->$cv_method->cc;
+ $self->{email}->{bcc} = join ', ', grep $_, $self->order->$cv_method->bcc, SL::DB::Default->get->global_bcc;
+ # Todo: get addresses from shipto, if any
+
+ my $form = Form->new;
+ $form->{ordnumber} = $self->order->ordnumber;
+ $form->{formname} = $self->type;
+ $form->{type} = $self->type;
+ $form->{language} = 'de';
+ $form->{format} = 'pdf';
+
+ $self->{email}->{subject} = $form->generate_email_subject();
+ $self->{email}->{attachment_filename} = $form->generate_attachment_filename();
+ $self->{email}->{message} = $form->create_email_signature();
+
+ my $dialog_html = $self->render('order/tabs/_email_dialog', { output => 0 });
+ $self->js
+ ->run('show_email_dialog', $dialog_html)
+ ->reinit_widgets
+ ->render($self);
+}
+
+# Todo: handling error messages: flash is not displayed in dialog, but in the main form
+sub action_send_email {
+ my ($self) = @_;
+
+ my $mail = Mailer->new;
+ $mail->{from} = qq|"$::myconfig{name}" <$::myconfig{email}>|;
+ $mail->{$_} = $::form->{email}->{$_} for qw(to cc bcc subject message);
+
+ my $pdf;
+ my @errors = _create_pdf($self->order, \$pdf, {media => 'email'});
+ if (scalar @errors) {
+ return $self->js->flash('error', t8('Conversion to PDF failed: #1', $errors[0]))->render($self);
+ }
+
+ $mail->{attachments} = [{ "content" => $pdf,
+ "name" => $::form->{email}->{attachment_filename} }];