+sub init_delivery_terms_by {
+  my ($self) = @_;
+
+  my $all_delivery_terms = SL::DB::Manager::DeliveryTerm->get_all;
+  return { map { my $col = $_; ( $col => { map { ( $_->$col => $_ ) } @{ $all_delivery_terms } } ) } qw(id description) };
+}
+
+sub init_all_vc {
+  my ($self) = @_;
+
+  return { customers => SL::DB::Manager::Customer->get_all,
+           vendors   => SL::DB::Manager::Vendor->get_all };
+}
+
+sub force_allow_columns {
+  return ();
+}
+
+sub init_vc_by {
+  my ($self)    = @_;
+
+  my %by_id     = map { ( $_->id => $_ ) } @{ $self->all_vc->{customers} }, @{ $self->all_vc->{vendors} };
+  my %by_number = ( customers => { map { ( $_->customernumber => $_ ) } @{ $self->all_vc->{customers} } },
+                    vendors   => { map { ( $_->vendornumber   => $_ ) } @{ $self->all_vc->{vendors}   } } );
+  my %by_name   = ( customers => { map { ( $_->name           => $_ ) } @{ $self->all_vc->{customers} } },
+                    vendors   => { map { ( $_->name           => $_ ) } @{ $self->all_vc->{vendors}   } } );
+
+  return { id     => \%by_id,
+           number => \%by_number,
+           name   => \%by_name,   };
+}
+
+sub check_vc {
+  my ($self, $entry, $id_column) = @_;
+
+  if ($entry->{object}->$id_column) {
+    $entry->{object}->$id_column(undef) if !$self->vc_by->{id}->{ $entry->{object}->$id_column };
+  }
+
+  if (!$entry->{object}->$id_column) {
+    my $vc = $self->vc_by->{number}->{customers}->{ $entry->{raw_data}->{customernumber} }
+          || $self->vc_by->{number}->{vendors}->{   $entry->{raw_data}->{vendornumber}   };
+    $entry->{object}->$id_column($vc->id) if $vc;
+  }
+
+  if (!$entry->{object}->$id_column) {
+    my $vc = $self->vc_by->{name}->{customers}->{ $entry->{raw_data}->{customer} }
+          || $self->vc_by->{name}->{vendors}->{   $entry->{raw_data}->{vendor}   };
+    $entry->{object}->$id_column($vc->id) if $vc;
+  }
+
+  if ($entry->{object}->$id_column) {
+    $entry->{info_data}->{vc_name} = $self->vc_by->{id}->{ $entry->{object}->$id_column }->name;
+  } else {
+    push @{ $entry->{errors} }, $::locale->text('Error: Customer/vendor not found');
+  }
+}
+