X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FCsvImport%2FBankTransaction.pm;h=50a89d89bdfc3e3caf494ccf3de37f1810cad7f1;hb=f0d5e4bba09991c7334869a2bd82fe322e505426;hp=4bd9b96f9b663adea178ee59b7d7a4ed95aa0186;hpb=3624b119556731da41e4ad395491ebb067f26565;p=kivitendo-erp.git diff --git a/SL/Controller/CsvImport/BankTransaction.pm b/SL/Controller/CsvImport/BankTransaction.pm index 4bd9b96f9..50a89d89b 100644 --- a/SL/Controller/CsvImport/BankTransaction.pm +++ b/SL/Controller/CsvImport/BankTransaction.pm @@ -56,6 +56,7 @@ sub check_objects { } $self->add_info_columns({ header => $::locale->text('Bank account'), method => 'local_bank_name' }); + $self->add_raw_data_columns("currency", "currency_id") if grep { /^currency(?:_id)?$/ } @{ $self->csv->header }; } sub check_existing { @@ -82,25 +83,29 @@ sub check_existing { }; } +sub _displayable_columns { + ( + { name => 'local_bank_code', description => $::locale->text('Own bank code') }, + { name => 'local_account_number', description => $::locale->text('Own bank account number or IBAN') }, + { name => 'local_bank_account_id', description => $::locale->text('ID of own bank account') }, + { name => 'remote_bank_code', description => $::locale->text('Bank code of the goal/source') }, + { name => 'remote_account_number', description => $::locale->text('Account number of the goal/source') }, + { name => 'transdate', description => $::locale->text('Transdate') }, + { name => 'valutadate', description => $::locale->text('Valutadate') }, + { name => 'amount', description => $::locale->text('Amount') }, + { name => 'currency', description => $::locale->text('Currency') }, + { name => 'currency_id', description => $::locale->text('Currency (database ID)') }, + { name => 'remote_name', description => $::locale->text('Name of the goal/source (if field names remote_name and remote_name_1 exist they will be combined into field "remote_name")') }, + { name => 'purpose', description => $::locale->text('Purpose (if field names purpose, purpose1, purpose2 ... exist they will all combined into the field "purpose")') } + ); +} + sub setup_displayable_columns { my ($self) = @_; $self->SUPER::setup_displayable_columns; - # TODO: don't show fields cleared, invoice_amount and transaction_id in the help text, as these should not be imported - $self->add_displayable_columns({ name => 'local_bank_code', description => $::locale->text('Own bank code') }, - { name => 'local_account_number', description => $::locale->text('Own bank account number or IBAN') }, - { name => 'local_bank_account_id', description => $::locale->text('ID of own bank account') }, - { name => 'remote_bank_code', description => $::locale->text('Bank code of the goal/source') }, - { name => 'remote_account_number', description => $::locale->text('Account number of the goal/source') }, - { name => 'transdate', description => $::locale->text('Date of transaction') }, - { name => 'valutadate', description => $::locale->text('Valuta date') }, - { name => 'amount', description => $::locale->text('Amount') }, - { name => 'currency', description => $::locale->text('Currency') }, - { name => 'currency_id', description => $::locale->text('Currency (database ID)') }, - { name => 'remote_name', description => $::locale->text('Name of the goal/source (if field names remote_name and remote_name_1 exist they will be combined into field "remote_name")') }, - { name => 'purpose', description => $::locale->text('Purpose (if field names purpose, purpose1, purpose2 ... exist they will all combined into the field "purpose")') }, - ); + $self->add_displayable_columns($self->_displayable_columns); } sub check_bank_account { @@ -108,9 +113,9 @@ sub check_bank_account { my $object = $entry->{object}; - # Check whether or not local_bank_account ID exists and is valid. + # import via id: check whether or not local_bank_account ID exists and is valid. if ($object->local_bank_account_id && !$self->bank_accounts_by->{id}->{ $object->local_bank_account_id }) { - push @{ $entry->{errors} }, $::locale->text('Error: Invalid local bank account'); + push @{ $entry->{errors} }, $::locale->text('Error: unknown local bank account id'); return 0; } @@ -118,11 +123,11 @@ sub check_bank_account { if ($object->local_bank_account_id && $entry->{raw_data}->{local_account_number}) { my $bank_account = $self->bank_accounts_by->{id}->{ $object->local_bank_account_id }; if ($bank_account->account_number ne $entry->{raw_data}->{local_account_number}) { - push @{ $entry->{errors} }, $::locale->text('Error: Invalid local bank account'); + push @{ $entry->{errors} }, $::locale->text('Error: local bank account id doesn\'t match local bank account number'); return 0; } if ($entry->{raw_data}->{local_bank_code} && $entry->{raw_data}->{local_bank_code} ne $bank_account->bank_code) { - push @{ $entry->{errors} }, $::locale->text('Error: Invalid local bank account'); + push @{ $entry->{errors} }, $::locale->text('Error: local bank account id doesn\'t match local bank code'); return 0; } @@ -136,18 +141,17 @@ sub check_bank_account { $bank_account = $self->bank_accounts_by->{iban}->{ $entry->{raw_data}->{local_account_number} }; }; if (!$bank_account) { - push @{ $entry->{errors} }, $::locale->text('Error: Invalid local bank account'); + push @{ $entry->{errors} }, $::locale->text('Error: unknown local bank account') . ": " . $entry->{raw_data}->{local_account_number}; return 0; } if ($entry->{raw_data}->{local_bank_code} && $entry->{raw_data}->{local_bank_code} ne $bank_account->bank_code) { - push @{ $entry->{errors} }, $::locale->text('Error: Invalid local bank account'); + push @{ $entry->{errors} }, $::locale->text('Error: Found local bank account number but local bank code doesn\'t match') . ": " . $entry->{raw_data}->{local_bank_code}; return 0; } $object->local_bank_account_id($bank_account->id); $entry->{info_data}->{local_bank_name} = $bank_account->name; } - return $object->local_bank_account_id ? 1 : 0; } @@ -182,4 +186,8 @@ sub join_remote_names { $object->remote_name($remote_name); } +sub check_auth { + $::auth->assert('config') if ! $::auth->assert('bank_transaction',1); +} + 1;