Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision d180d84e

Von Kivitendo Admin vor mehr als 9 Jahren hinzugefügt

  • ID d180d84e035a21291e2dc186b4430e3336998156
  • Vorgänger cd8b56f2
  • Nachfolger 36ee5173

Keine Weiche für mt940 in SL/Controller/CsvImport.pm mehr

Stattdessen ein eigener Controller BankImport, der die Daten über einen
neuen Helper in SL/Helper/MT940.pm (wo aqbanking-cli aufgerufen wird)
nach CSV konvertiert.

mt940 ist nun kein eigener Importtyp vom CSV-Import mehr. Stattdessen
wird nach der mt940 Upload-Maske ein CSV-Import-Profil geladen und
direkt ein Redirect auf den CSV-Import vom Typ Bankbewegungen
ausgeführt. Durch setzen des Parameters "force_profile" und ein Redirect
auf CsvImport/test statt CsvImport/new wird der Import auch direkt im
"Test und Vorschau"-Modus ausgeführt und der Benutzer sieht direkt das
Ergebnis. Ab hier verhält sich der Import also genau so, als ob der
User direkt eine CSV-Datei hochgeladen hätte.

Ein Nachteil der Umstellung ist, daß die CSV Profildefaults nun nicht
mehr auf den Typ "mt940" reagieren können und auf ein existierendes
CSV-Profil zurückgreifen müssen. Beim ersten MT940 Import wird bei
fehlen dieses Profils eine Meldung an den User gegeben.

Man könnte ein Referenzprofil per Update einspielen, allerdings sind die
Profile an Logins gebunden, und man bräuchte dafür ein globales Profil
und müßte hierfür generell die Profile erweitern.

TODO: Hilfetext wie das Profil einzustellen ist

Unterschiede anzeigen:

SL/Controller/CsvImport.pm
224 224
sub check_type {
225 225
  my ($self) = @_;
226 226

  
227
  die "Invalid CSV import type" if none { $_ eq $::form->{profile}->{type} } qw(parts inventories customers_vendors addresses contacts projects orders bank_transactions mt940);
227
  die "Invalid CSV import type" if none { $_ eq $::form->{profile}->{type} } qw(parts inventories customers_vendors addresses contacts projects orders bank_transactions);
228 228
  $self->type($::form->{profile}->{type});
229 229
}
230 230

  
......
270 270
            : $self->type eq 'projects'          ? $::locale->text('CSV import: projects')
271 271
            : $self->type eq 'orders'            ? $::locale->text('CSV import: orders')
272 272
            : $self->type eq 'bank_transactions' ? $::locale->text('CSV import: bank transactions')
273
            : $self->type eq 'mt940'             ? $::locale->text('CSV import: MT940')
274 273
            : die;
275 274

  
276 275
  if ($self->{type} eq 'customers_vendors' or $self->{type} eq 'orders'  ) {
......
290 289
sub test_and_import_deferred {
291 290
  my ($self, %params) = @_;
292 291

  
293
  $self->profile_from_form;
292
  if ( $::form->{force_profile} && $::form->{profile}->{id} ) {
293
    $self->load_default_profile;
294
  }  else {
295
    $self->profile_from_form;
296
  };
294 297

  
295
  if ( $::form->{file} && $::form->{FILENAME} =~ /\.940$/ ) {
296
    my $mt940_file = SL::SessionFile->new($::form->{FILENAME}, mode => '>');
297
    $mt940_file->fh->print($::form->{file});
298
    $mt940_file->fh->close;
299

  
300
    my $aqbin = $::lx_office_conf{applications}->{aqbanking};
301
    die "Can't find aqbanking-cli, please check your configuration file.\n" unless -f $aqbin;
302
    my $cmd = "$aqbin --cfgdir=\"users\" import --importer=\"swift\" --profile=\"SWIFT-MT940\" -f " . $mt940_file->file_name . " | $aqbin --cfgdir=\"users\" listtrans --exporter=\"csv\" --profile=\"AqMoney2\" ";
303
    my $converted_mt940;
304
    open(MT, "$cmd |");
305
    $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";
306
    my $headerline = <MT>;  # discard original header line
307
    while (<MT>) {
308
      $converted_mt940 .= $_;
309
    };
298
  if ($::form->{file}) {
310 299
    my $file = SL::SessionFile->new($self->csv_file_name, mode => '>');
311
    $file->fh->print($converted_mt940);
300
    $file->fh->print($::form->{file});
312 301
    $file->fh->close;
313
  } elsif ($::form->{file}) {
314
      my $file = SL::SessionFile->new($self->csv_file_name, mode => '>');
315
      $file->fh->print($::form->{file});
316
      $file->fh->close;
317 302
  }
318 303

  
319 304
  my $file = SL::SessionFile->new($self->csv_file_name, mode => '<', encoding => $self->profile->get('charset'));
......
641 626
       : $self->{type} eq 'projects'          ? SL::Controller::CsvImport::Project->new(@args)
642 627
       : $self->{type} eq 'orders'            ? SL::Controller::CsvImport::Order->new(@args)
643 628
       : $self->{type} eq 'bank_transactions' ? SL::Controller::CsvImport::BankTransaction->new(@args)
644
       : $self->{type} eq 'mt940'             ? SL::Controller::CsvImport::BankTransaction->new(@args)
645 629
       :                                        die "Program logic error";
646 630
}
647 631

  

Auch abrufbar als: Unified diff