$self->profile($profile);
if ($data->{errors} and my $first_error = $data->{errors}->[0]) {
- flash('error', $::locale->text('There was an error parsing the csv file: #1 in line #2.', $first_error->[2], $first_error->[0]));
+ flash('error', $::locale->text('There was an error parsing the csv file: #1 in line #2: #3', $first_error->[2], $first_error->[0], $first_error->[1]));
}
if ($data->{progress}{finished} || $data->{errors}) {
sub check_type {
my ($self) = @_;
- die "Invalid CSV import type" if none { $_ eq $::form->{profile}->{type} } qw(parts inventories customers_vendors addresses contacts projects orders);
+ die "Invalid CSV import type" if none { $_ eq $::form->{profile}->{type} } qw(parts inventories customers_vendors addresses contacts projects orders bank_transactions);
$self->type($::form->{profile}->{type});
}
: $self->type eq 'projects' ? $::locale->text('CSV import: projects')
: $self->type eq 'orders' ? $::locale->text('CSV import: orders')
: $self->type eq 'bank_transactions' ? $::locale->text('CSV import: bank transactions')
- : $self->type eq 'mt940' ? $::locale->text('CSV import: MT940')
: die;
if ($self->{type} eq 'customers_vendors' or $self->{type} eq 'orders' ) {
sub test_and_import_deferred {
my ($self, %params) = @_;
- $self->profile_from_form;
-
+ if ( $::form->{force_profile} && $::form->{profile}->{id} ) {
+ $self->load_default_profile;
+ } else {
+ $self->profile_from_form;
+ };
- if ( $::form->{file} && $::form->{FILENAME} =~ /\.940$/ ) {
- my $mt940_file = SL::SessionFile->new($::form->{FILENAME}, mode => '>');
- $mt940_file->fh->print($::form->{file});
- $mt940_file->fh->close;
-
- my $aqbin = '/usr/bin/aqbanking-cli';
- my $cmd = "$aqbin --cfgdir=\"users\" import --importer=\"swift\" --profile=\"SWIFT-MT940\" -f " . $mt940_file->file_name . " | $aqbin --cfgdir=\"users\" listtrans --exporter=\"csv\" --profile=\"AqMoney2\" ";
- my $converted_mt940;
- open(MT, "$cmd |");
- $converted_mt940 .= '"transaction_id";"local_bank_code";"local_account_number";"remote_bank_code";"remote_account_number";"transdate";"valutadate";"amount";"currency";"remote_name";"remote_name_1";"purpose";"purpose1";"purpose2";"purpose3";"purpose4";"purpose5";"purpose6";"purpose7";"purpose8";"purpose9";"purpose10";"purpose11"' . "\n";
- my $headerline = <MT>; # discard original header line
- while (<MT>) {
- $converted_mt940 .= $_;
- };
+ if ($::form->{file}) {
my $file = SL::SessionFile->new($self->csv_file_name, mode => '>');
- $file->fh->print($converted_mt940);
+ $file->fh->print($::form->{file});
$file->fh->close;
- } elsif ($::form->{file}) {
- my $file = SL::SessionFile->new($self->csv_file_name, mode => '>');
- $file->fh->print($::form->{file});
- $file->fh->close;
}
my $file = SL::SessionFile->new($self->csv_file_name, mode => '<', encoding => $self->profile->get('charset'));
$profile ||= SL::DB::CsvImportProfile->new(type => $self->{type}, login => $::myconfig{login});
$self->profile($profile);
+ $self->worker->set_profile_defaults;
$self->profile->set_defaults;
}
: $self->{type} eq 'projects' ? SL::Controller::CsvImport::Project->new(@args)
: $self->{type} eq 'orders' ? SL::Controller::CsvImport::Order->new(@args)
: $self->{type} eq 'bank_transactions' ? SL::Controller::CsvImport::BankTransaction->new(@args)
- : $self->{type} eq 'mt940' ? SL::Controller::CsvImport::BankTransaction->new(@args)
: die "Program logic error";
}