X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/efbdf52ccd4543b1e0f9eddecf8977e390c713c0..f8b23396dfa8e2c064c025f2b2786366ba3908af:/SL/Controller/Order.pm diff --git a/SL/Controller/Order.pm b/SL/Controller/Order.pm index 689c597aa..f06f06e03 100644 --- a/SL/Controller/Order.pm +++ b/SL/Controller/Order.pm @@ -689,11 +689,13 @@ sub action_customer_vendor_changed { ->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( '#language_id', $self->order->$cv_method->language_id) - ->focus( '#order_' . $self->cv . '_id'); + ->focus( '#order_' . $self->cv . '_id') + ->run('kivi.Order.update_exchangerate'); $self->js_redisplay_amounts_and_taxes; $self->js_redisplay_cvpartnumbers; @@ -926,6 +928,19 @@ sub action_recalc_amounts_and_taxes { $self->js->render(); } +sub action_update_exchangerate { + my ($self) = @_; + my $data = {}; + + $data = { + is_standard => $self->order->currency_id == $::instance_conf->get_currency_id, + currency_name => $self->order->currency->name, + exchangerate => $self->order->exchangerate_as_null_number, + }; + + $self->render(\SL::JSON::to_json($data), { type => 'json', process => 0 }); +} + # redisplay item rows if they are sorted by an attribute sub action_reorder_items { my ($self) = @_; @@ -1360,6 +1375,7 @@ sub make_order { my $form_orderitems = delete $::form->{order}->{orderitems}; my $form_periodic_invoices_config = delete $::form->{order}->{periodic_invoices_config}; + my $exchangerate_as_null_number = delete $::form->{order}->{exchangerate_as_null_number}; $order->assign_attributes(%{$::form->{order}}); @@ -1368,6 +1384,9 @@ sub make_order { $periodic_invoices_config->assign_attributes(%$periodic_invoices_config_attrs); } + # set exchangerate after transdate and currency_id + $order->assign_attributes(exchangerate_as_null_number => $exchangerate_as_null_number) if $order->currency_id; + # remove deleted items $self->item_ids_to_delete([]); foreach my $idx (reverse 0..$#{$order->orderitems}) { @@ -1490,7 +1509,7 @@ sub new_item { sub setup_order_from_cv { my ($order) = @_; - $order->$_($order->customervendor->$_) for (qw(taxzone_id payment_id delivery_term_id)); + $order->$_($order->customervendor->$_) for (qw(taxzone_id payment_id delivery_term_id currency_id)); $order->intnotes($order->customervendor->notes); @@ -1509,8 +1528,7 @@ sub setup_order_from_cv { sub recalc { my ($self) = @_; - # bb: todo: currency later - $self->order->currency_id($::instance_conf->get_currency_id()); + $self->order->currency_id($::instance_conf->get_currency_id()) unless $self->order->currency_id; my %pat = $self->order->calculate_prices_and_taxes(); @@ -1657,6 +1675,7 @@ sub pre_render { my ($self) = @_; $self->{all_taxzones} = SL::DB::Manager::TaxZone->get_all_sorted(); + $self->{all_currencies} = SL::DB::Manager::Currency->get_all_sorted(); $self->{all_departments} = SL::DB::Manager::Department->get_all_sorted(); $self->{all_employees} = SL::DB::Manager::Employee->get_all(where => [ or => [ id => $self->order->employee_id, deleted => 0 ] ],