Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 1453173f

Von Bernd Bleßmann vor fast 2 Jahren hinzugefügt

  • ID 1453173f93fac9186b9374f245d37cdd732ed94e
  • Vorgänger ee33349b
  • Nachfolger 973e7b1e

CSV-Import Kreditorenbuchungen: Dublettencheck

Unterschiede anzeigen:

SL/Controller/CsvImport/APTransaction.pm
return $profile;
}
sub init_existing_objects {
my ($self) = @_;
# only use objects of main class (the first one)
#eval "require " . $self->class->[0];
$self->existing_objects($self->manager_class->[0]->get_all);
}
sub get_duplicate_check_fields {
return {
vendor_and_invnumber => {
label => $::locale->text('Vendor and Invoice Number'),
default => 1,
std_check => 1,
maker => sub {
my ($object, $worker) = @_;
return if ref $object ne $worker->class->[0];
return '__' . $object->vendor_id . '__' . $object->invnumber . '__';
},
},
};
}
sub check_std_duplicates {
my $self = shift;
my $duplicates = {};
my $all_fields = $self->get_duplicate_check_fields();
foreach my $key (keys(%{ $all_fields })) {
if ( $self->controller->profile->get('duplicates_'. $key) && (!exists($all_fields->{$key}->{std_check}) || $all_fields->{$key}->{std_check} ) ) {
$duplicates->{$key} = {};
}
}
my @duplicates_keys = keys(%{ $duplicates });
if ( !scalar(@duplicates_keys) ) {
return;
}
if ( $self->controller->profile->get('duplicates') eq 'check_db' ) {
foreach my $object (@{ $self->existing_objects }) {
foreach my $key (@duplicates_keys) {
my $value = exists($all_fields->{$key}->{maker}) ? $all_fields->{$key}->{maker}->($object, $self) : $object->$key;
$duplicates->{$key}->{$value} = 'db';
}
}
}
# only check main class (the first one)
foreach my $entry (@{ $self->controller->data }) {
my $object = $entry->{object};
next if ref $object ne $self->class->[0];
next if scalar @{ $entry->{errors} };
foreach my $key (@duplicates_keys) {
my $value = exists($all_fields->{$key}->{maker}) ? $all_fields->{$key}->{maker}->($object, $self) : $object->$key;
if ( exists($duplicates->{$key}->{$value}) ) {
push(@{ $entry->{errors} }, $duplicates->{$key}->{$value} eq 'db' ? $::locale->text('Duplicate in database') : $::locale->text('Duplicate in CSV file'));
last;
} else {
$duplicates->{$key}->{$value} = 'csv';
}
}
}
}
sub setup_displayable_columns {
my ($self) = @_;
locale/de/all
'Vendor Order Number' => 'Bestellnummer beim Lieferanten',
'Vendor Part Number' => 'Lieferantenartikelnummer',
'Vendor Record Number' => 'Lieferantenbelegsnummer',
'Vendor and Invoice Number' => 'Lieferant und Rechnungsnummer',
'Vendor deleted!' => 'Lieferant gelöscht!',
'Vendor details' => 'Lieferantendetails',
'Vendor missing!' => 'Lieferant fehlt!',
locale/en/all
'Vendor Order Number' => '',
'Vendor Part Number' => '',
'Vendor Record Number' => '',
'Vendor and Invoice Number' => '',
'Vendor deleted!' => '',
'Vendor details' => '',
'Vendor missing!' => '',

Auch abrufbar als: Unified diff