X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/30b8dc1025aad59401d2648d0a39776bcb084c85..e4d533e65a92149137848134f8a97efb67d89a23:/SL/Controller/Order.pm diff --git a/SL/Controller/Order.pm b/SL/Controller/Order.pm index 81f15e1d0..24ad4a565 100644 --- a/SL/Controller/Order.pm +++ b/SL/Controller/Order.pm @@ -330,7 +330,7 @@ sub action_print { $self->js->flash('info', t8('The document has been printed.')); } - my @warnings = $self->store_doc_to_webdav_and_filemanagement($doc, $doc_filename); + my @warnings = $self->store_doc_to_webdav_and_filemanagement($doc, $doc_filename, $formname); if (scalar @warnings) { $self->js->flash('warning', $_) for @warnings; } @@ -474,19 +474,30 @@ sub action_send_email { $::form->{$_} = $::form->{print_options}->{$_} for keys %{ $::form->{print_options} }; $::form->{media} = 'email'; - if (($::form->{attachment_policy} // '') !~ m{^(?:old_file|no_file)$}) { + $::form->{attachment_policy} //= ''; + + # Is an old file version available? + my $attfile; + if ($::form->{attachment_policy} eq 'old_file') { + $attfile = SL::File->get_all(object_id => $self->order->id, + object_type => $self->type, + file_type => 'document', + print_variant => $::form->{formname}); + } + + if ($::form->{attachment_policy} ne 'no_file' && !($::form->{attachment_policy} eq 'old_file' && $attfile)) { my $doc; my @errors = $self->generate_doc(\$doc, {media => $::form->{media}, - format => $::form->{print_options}->{format}, - formname => $::form->{print_options}->{formname}, - language => $self->order->language, - printer_id => $::form->{print_options}->{printer_id}, - groupitems => $::form->{print_options}->{groupitems}}); + format => $::form->{print_options}->{format}, + formname => $::form->{print_options}->{formname}, + language => $self->order->language, + printer_id => $::form->{print_options}->{printer_id}, + groupitems => $::form->{print_options}->{groupitems}}); if (scalar @errors) { return $self->js->flash('error', t8('Generating the document failed: #1', $errors[0]))->render($self); } - my @warnings = $self->store_doc_to_webdav_and_filemanagement($doc, $::form->{attachment_filename}); + my @warnings = $self->store_doc_to_webdav_and_filemanagement($doc, $::form->{attachment_filename}, $::form->{formname}); if (scalar @warnings) { flash_later('warning', $_) for @warnings; } @@ -755,8 +766,10 @@ sub action_show_customer_vendor_details_dialog { $details{payment_terms} = $cv->payment->description if $cv->payment; $details{pricegroup} = $cv->pricegroup->pricegroup if $is_customer && $cv->pricegroup; - foreach my $entry (@{ $cv->additional_billing_addresses }) { - push @{ $details{ADDITIONAL_BILLING_ADDRESSES} }, { map { $_ => $entry->$_ } @{$entry->meta->columns} }; + if ($is_customer) { + foreach my $entry (@{ $cv->additional_billing_addresses }) { + push @{ $details{ADDITIONAL_BILLING_ADDRESSES} }, { map { $_ => $entry->$_ } @{$entry->meta->columns} }; + } } foreach my $entry (@{ $cv->shipto }) { push @{ $details{SHIPTO} }, { map { $_ => $entry->$_ } @{$entry->meta->columns} }; @@ -1330,6 +1343,8 @@ sub build_contact_select { sub build_billing_address_select { my ($self) = @_; + return '' if $self->cv ne 'customer'; + select_tag('order.billing_address_id', [ {displayable_id => '', id => ''}, $self->order->{$self->cv}->additional_billing_addresses ], value_key => 'id', @@ -2127,6 +2142,7 @@ sub generate_doc { longdescription => 'html', partnotes => 'html', notes => 'html', + $::form->get_variable_content_types_for_cvars, }, ); 1; @@ -2314,7 +2330,7 @@ sub save_history { } sub store_doc_to_webdav_and_filemanagement { - my ($self, $content, $filename) = @_; + my ($self, $content, $filename, $variant) = @_; my $order = $self->order; my @errors; @@ -2344,7 +2360,8 @@ sub store_doc_to_webdav_and_filemanagement { source => 'created', file_type => 'document', file_name => $filename, - file_contents => $content); + file_contents => $content, + print_variant => $variant); 1; } or do { push @errors, t8('Storing the document in the storage backend failed: #1', $@);