sub action_update_exchangerate {
   my ($self) = @_;
-  my $data = {};
 
-  $data = {
+  my $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,
+    exchangerate  => $self->order->daily_exchangerate_as_null_number,
   };
 
   $self->render(\SL::JSON::to_json($data), { type => 'json', process => 0 });
       $price_src = $price_source->best_price
                  ? $price_source->best_price
                  : $price_source->price_from_source("");
+      $price_src->price($::form->round_amount($price_src->price / $self->order->exchangerate, 5)) if $self->order->exchangerate;
       $price_src->price(0) if !$price_source->best_price;
     }
 
+
     $item->sellprice($price_src->price);
     $item->active_price_source($price_src);
 
     setup_order_from_cv($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};
+  my $form_orderitems                  = delete $::form->{order}->{orderitems};
+  my $form_periodic_invoices_config    = delete $::form->{order}->{periodic_invoices_config};
 
   $order->assign_attributes(%{$::form->{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}) {
     $price_src->price($item->sellprice);
   } else {
     $price_src = $price_source->best_price
-           ? $price_source->best_price
-           : $price_source->price_from_source("");
+               ? $price_source->best_price
+               : $price_source->price_from_source("");
+    $price_src->price($::form->round_amount($price_src->price / $record->exchangerate, 5)) if $record->exchangerate;
     $price_src->price(0) if !$price_source->best_price;
   }
 
 
   $self->get_item_cvpartnumber($_) for @{$self->order->items_sorted};
 
-  $::request->{layout}->use_javascript("${_}.js") for qw(kivi.SalesPurchase kivi.Order kivi.File ckeditor/ckeditor ckeditor/adapters/jquery edit_periodic_invoices_config calculate_qty);
+  $::request->{layout}->use_javascript("${_}.js") for qw(kivi.SalesPurchase kivi.Order kivi.File ckeditor/ckeditor ckeditor/adapters/jquery
+                                                         edit_periodic_invoices_config calculate_qty);
   $self->setup_edit_action_bar;
 }
 
 
 =item * testing
 
-=item * currency
-
 =item * credit limit
 
 =item * more workflows (quotation, rfq)