+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 init_clone_methods {
+ {}
+}
+
+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');
+ }
+}
+