- $entry->{object}->makemodels(\@makemodels);
- $entry->{object}->makemodel(scalar(@makemodels) ? 1 : 0);
+ $object->makemodels(\@makemodels);
+ $object->makemodel(scalar(@makemodels) ? 1 : 0);
+
+ if ( !$entry->{part} || $self->settings->{article_number_policy} ne 'update_prices' ) {
+ return;
+ }
+
+ my %old_makemodels_by_make = map { $_->make => $_ } $entry->{part}->makemodels;
+
+ foreach my $makemodel ($object->makemodels()) {
+ my $makemodel_orig = $old_makemodels_by_make{$makemodel->make};
+ $found_any = 1;
+
+ if ($makemodel_orig) {
+ $makemodel_orig->model($makemodel->model);
+ $makemodel_orig->lastcost($makemodel->lastcost);
+
+ } else {
+ $entry->{part}->add_makemodels($makemodel);
+ }
+ }
+
+ $entry->{part}->makemodel($object->makemodel);
+
+ $self->save_with_cascade(1) if $found_any;