]> wagnertech.de Git - mfinanz.git/blobdiff - SL/Controller/Order.pm
Auftrags-Controller: Währung bei Kunden-/Lieferantenwechsel setzen
[mfinanz.git] / SL / Controller / Order.pm
index 54198474046fd7c0654c1c2baefe80fa281baf57..f06f06e0312ab53f2c748231d873e91096dfa73a 100644 (file)
@@ -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;
@@ -929,12 +931,13 @@ sub action_recalc_amounts_and_taxes {
 sub action_update_exchangerate {
   my ($self) = @_;
   my $data = {};
-  if ($self->order->currency_id != $::instance_conf->get_currency_id) {
-    $data = {
-      currency_name => $self->order->currency->name,
-      exchangerate  => $self->order->exchangerate_as_number,
-    };
-  }
+
+  $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 });
 }
 
@@ -1372,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}});
 
@@ -1380,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}) {
@@ -1502,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);