]> wagnertech.de Git - mfinanz.git/blobdiff - SL/Controller/CsvImport/Part.pm
Rundungsfehler in Verkaufsbericht
[mfinanz.git] / SL / Controller / CsvImport / Part.pm
index 387bdb5f2c918078bfeccfd7ac0741f4c82d5981..3a2bdbe928439ce8282d6846272f7f90c0321fc9 100644 (file)
@@ -194,11 +194,14 @@ sub check_existing {
 
   my $object = $entry->{object};
 
-  $entry->{part} = $self->parts_by->{partnumber}->{ $object->type }->{ $object->partnumber };
+  $entry->{part} = SL::DB::Manager::Part->find_by(
+    SL::DB::Manager::Part->type_filter($object->type),
+    ( partnumber => $object->partnumber )                 x!! $object->partnumber,
+  );
 
   if ($self->settings->{article_number_policy} eq 'update_prices') {
     if ($entry->{part}) {
-      map { $entry->{part}->$_( $object->$_ ) } qw(sellprice listprice lastcost);
+      map { $entry->{part}->$_( $object->$_ ) if defined $object->$_ } qw(sellprice listprice lastcost);
 
       # merge prices
       my %prices_by_pricegroup_id = map { $_->pricegroup->id => $_ } $entry->{part}->prices, $object->prices;
@@ -207,7 +210,8 @@ sub check_existing {
       push @{ $entry->{information} }, $::locale->text('Updating prices of existing entry in database');
       $entry->{object_to_save} = $entry->{part};
     }
-
+  } elsif ( $self->settings->{article_number_policy} eq 'skip' ) {
+    push(@{$entry->{errors}}, $::locale->text('Skipping due to existing entry in database')) if ( $entry->{part} );
   } else {
     $object->partnumber('####') if $entry->{part};
   }