X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FOrder.pm;h=4cf9f614a0db32a505e4657f3af354b9e25b1905;hb=60bbb8692114042c2d71471e86ef49a33f16833e;hp=302a5eacf794781f8aa34f849e33d0b35371a4b4;hpb=bebdc2ce03a4c60e94337cf69a12e167a8144d72;p=kivitendo-erp.git diff --git a/SL/Controller/Order.pm b/SL/Controller/Order.pm index 302a5eacf..4cf9f614a 100644 --- a/SL/Controller/Order.pm +++ b/SL/Controller/Order.pm @@ -13,6 +13,7 @@ use SL::File; use SL::MIME; use SL::Util qw(trim); use SL::YAML; +use SL::DB::AdditionalBillingAddress; use SL::DB::History; use SL::DB::Order; use SL::DB::Default; @@ -298,11 +299,11 @@ sub action_print { my $pdf_filename = $form->generate_attachment_filename(); my $pdf; - my @errors = generate_pdf($self->order, \$pdf, { format => $format, - formname => $formname, - language => $self->order->language, - printer_id => $printer_id, - groupitems => $groupitems }); + my @errors = $self->generate_pdf(\$pdf, { format => $format, + formname => $formname, + language => $self->order->language, + printer_id => $printer_id, + groupitems => $groupitems }); if (scalar @errors) { return $self->js->flash('error', t8('Conversion to PDF failed: #1', $errors[0]))->render; } @@ -328,7 +329,7 @@ sub action_print { $self->js->flash('info', t8('The PDF has been printed')); } - my @warnings = store_pdf_to_webdav_and_filemanagement($self->order, $pdf, $pdf_filename); + my @warnings = $self->store_pdf_to_webdav_and_filemanagement($pdf, $pdf_filename); if (scalar @warnings) { $self->js->flash('warning', $_) for @warnings; } @@ -365,10 +366,10 @@ sub action_preview_pdf { my $pdf_filename = $form->generate_attachment_filename(); my $pdf; - my @errors = generate_pdf($self->order, \$pdf, { format => $format, - formname => $formname, - language => $self->order->language, - }); + my @errors = $self->generate_pdf(\$pdf, { format => $format, + formname => $formname, + language => $self->order->language, + }); if (scalar @errors) { return $self->js->flash('error', t8('Conversion to PDF failed: #1', $errors[0]))->render; } @@ -469,17 +470,17 @@ sub action_send_email { if (($::form->{attachment_policy} // '') !~ m{^(?:old_file|no_file)$}) { my $pdf; - my @errors = generate_pdf($self->order, \$pdf, {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}}); + my @errors = $self->generate_pdf(\$pdf, {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}}); if (scalar @errors) { return $self->js->flash('error', t8('Conversion to PDF failed: #1', $errors[0]))->render($self); } - my @warnings = store_pdf_to_webdav_and_filemanagement($self->order, $pdf, $::form->{attachment_filename}); + my @warnings = $self->store_pdf_to_webdav_and_filemanagement($pdf, $::form->{attachment_filename}); if (scalar @warnings) { flash_later('warning', $_) for @warnings; } @@ -699,20 +700,26 @@ sub action_customer_vendor_changed { $self->js->hide('#shipto_selection'); } + if ($cv_method eq 'customer') { + my $show_hide = scalar @{ $self->order->customer->additional_billing_addresses } > 0 ? 'show' : 'hide'; + $self->js->$show_hide('#billing_address_row'); + } + $self->js->val( '#order_salesman_id', $self->order->salesman_id) if $self->order->is_sales; $self->js - ->replaceWith('#order_cp_id', $self->build_contact_select) - ->replaceWith('#order_shipto_id', $self->build_shipto_select) - ->replaceWith('#shipto_inputs ', $self->build_shipto_inputs) - ->replaceWith('#business_info_row', $self->build_business_info_row) - ->val( '#order_taxzone_id', $self->order->taxzone_id) - ->val( '#order_taxincluded', $self->order->taxincluded) - ->val( '#order_currency_id', $self->order->currency_id) - ->val( '#order_payment_id', $self->order->payment_id) - ->val( '#order_delivery_term_id', $self->order->delivery_term_id) - ->val( '#order_intnotes', $self->order->intnotes) - ->val( '#order_language_id', $self->order->$cv_method->language_id) + ->replaceWith('#order_cp_id', $self->build_contact_select) + ->replaceWith('#order_shipto_id', $self->build_shipto_select) + ->replaceWith('#shipto_inputs ', $self->build_shipto_inputs) + ->replaceWith('#order_billing_address_id', $self->build_billing_address_select) + ->replaceWith('#business_info_row', $self->build_business_info_row) + ->val( '#order_taxzone_id', $self->order->taxzone_id) + ->val( '#order_taxincluded', $self->order->taxincluded) + ->val( '#order_currency_id', $self->order->currency_id) + ->val( '#order_payment_id', $self->order->payment_id) + ->val( '#order_delivery_term_id', $self->order->delivery_term_id) + ->val( '#order_intnotes', $self->order->intnotes) + ->val( '#order_language_id', $self->order->$cv_method->language_id) ->focus( '#order_' . $self->cv . '_id') ->run('kivi.Order.update_exchangerate'); @@ -742,6 +749,9 @@ 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} }; + } foreach my $entry (@{ $cv->shipto }) { push @{ $details{SHIPTO} }, { map { $_ => $entry->$_ } @{$entry->meta->columns} }; } @@ -1308,6 +1318,22 @@ sub build_contact_select { ); } +# build the selection box for the additional billing address +# +# Needed, if customer/vendor changed. +sub build_billing_address_select { + my ($self) = @_; + + select_tag('order.billing_address_id', + [ {displayable_id => '', id => ''}, $self->order->{$self->cv}->additional_billing_addresses ], + value_key => 'id', + title_key => 'displayable_id', + default => $self->order->billing_address_id, + with_empty => 0, + style => 'width: 300px', + ); +} + # build the selection box for shiptos # # Needed, if customer/vendor changed. @@ -1565,13 +1591,15 @@ sub setup_order_from_cv { $order->intnotes($order->customervendor->notes); - if ($order->is_sales) { - $order->salesman_id($order->customer->salesman_id || SL::DB::Manager::Employee->current->id); - $order->taxincluded(defined($order->customer->taxincluded_checked) - ? $order->customer->taxincluded_checked - : $::myconfig{taxincluded_checked}); - } + return if !$order->is_sales; + $order->salesman_id($order->customer->salesman_id || SL::DB::Manager::Employee->current->id); + $order->taxincluded(defined($order->customer->taxincluded_checked) + ? $order->customer->taxincluded_checked + : $::myconfig{taxincluded_checked}); + + my $address = $order->customer->default_billing_address;; + $order->billing_address_id($address ? $address->id : undef); } # setup custom shipto from form @@ -2038,8 +2066,9 @@ sub setup_edit_action_bar { } sub generate_pdf { - my ($order, $pdf_ref, $params) = @_; + my ($self, $pdf_ref, $params) = @_; + my $order = $self->order; my @errors = (); my $print_form = Form->new(''); @@ -2276,8 +2305,9 @@ sub save_history { } sub store_pdf_to_webdav_and_filemanagement { - my($order, $content, $filename) = @_; + my ($self, $content, $filename) = @_; + my $order = $self->order; my @errors; # copy file to webdav folder