PriceSource: Featureabdeckung
[kivitendo-erp.git] / bin / mozilla / oe.pl
index b9abb0f..1460630 100644 (file)
@@ -594,8 +594,6 @@ sub update {
 
   check_oe_access();
 
-  my $order = _make_record();
-
   set_headings($form->{"id"} ? "edit" : "add");
 
   $form->{update} = 1;
@@ -680,6 +678,15 @@ sub update {
         if ($sellprice) {
           $form->{"sellprice_$i"} = $sellprice;
         } else {
+          my $record       = _make_record();
+          my $price_source = SL::PriceSource->new(record_item => $record->items->[$i-1], record => $record);
+          my $best_price   = $price_source->best_price;
+
+          if ($best_price) {
+            $::form->{"sellprice_$i"}           = $best_price->price;
+            $::form->{"active_price_source_$i"} = $best_price->source;
+          }
+
           $form->{"sellprice_$i"} *= (1 - $form->{tradediscount});
           $form->{"sellprice_$i"} /= $exchangerate;   # if there is an exchange rate adjust sellprice
         }
@@ -2111,28 +2118,3 @@ sub dispatcher {
   $::form->error($::locale->text('No action defined.'));
 }
 
-sub _make_record {
-  my $obj = SL::DB::Order->new;
-
-  for my $method (keys %$::form) {
-    next unless $obj->can($method);
-    next unless $obj->meta->column($method);
-
-    if ($obj->meta->column($method)->isa('Rose::DB::Object::Metadata::Column::Date')) {
-      $obj->${\"$method\_as_date"}($::form->{$method});
-    } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::(?:Integer|Numeric|Float|DoublePrecsion)$/) {
-      $obj->$method($::form->{$method});
-    }
-  }
-
-  my @items;
-  for my $i (1 .. $::form->{rowcount}) {
-    next unless $::form->{"id_$i"};
-    push @items, _make_record_item($i)
-  }
-
-  $obj->orderitems(@items);
-
-  return $obj;
-}
-