+ my $object = $entry->{object};
+ if ($object->cp_id) {
+ my $existing_contact = $contacts_by_id{ $object->cp_id };
+ if (!$existing_contact) {
+ $contacts_by_id{ $object->cp_id } = $object if $object->cp_id;
+
+ } elsif ($update_policy eq 'skip') {
+ push(@{ $entry->{errors} }, $::locale->text('Skipping due to existing entry in database'));
+ next;
+
+ } elsif ($update_policy eq 'update_existing') {
+ # Update existing customer/vendor records.
+ $entry->{object_to_save} = $existing_contact;
+
+ $object->cp_cv_id($existing_contact->cp_cv_id);
+
+ foreach (qw(cp_name cp_gender)) {
+ $object->$_($existing_contact->$_) if !$object->$_;
+ }
+
+ $existing_contact->$_( $entry->{object}->$_ ) for @{ $methods };
+
+ push @{ $entry->{information} }, $::locale->text('Updating existing entry in database');
+
+ } else {
+ $object->cp_id(undef);
+ }
+ }
+