Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 583544f9

Von Kivitendo Admin vor mehr als 8 Jahren hinzugefügt

  • ID 583544f907b11720b8f0bd8b88e7fb20550cba1b
  • Vorgänger ad872b5a

Auftragsimport - Option "Auftrag trotz Positionsfehler importieren"

siehe Ticket #172

Für den Fall, daß bei einem langen Auftrag nur wenige Positionen
fehlerhaft sind (z.B. Artikelnummer existiert nicht), muß man entweder
alle Positionen händisch einpflegen oder die CSV bearbeiten, so daß sie
ohne Fehler importiert werden kann. Mit dieser Option in den
Einstellungen ist es möglich, den Auftrag trotz fehlerhafter Positionen
zu importieren, wobei die fehlerhaften Positionen ignoriert werden.
Diese muß man dann händisch im importierten Auftrag nachpflegen.
Die Auftragszeile darf in diesem Fall natürlich keine Fehler haben.

Unterschiede anzeigen:

SL/Controller/CsvImport.pm
411 411

  
412 412
  if ($self->type eq 'orders') {
413 413
    $::form->{settings}->{max_amount_diff} = $::form->parse_amount(\%::myconfig, $::form->{settings}->{max_amount_diff});
414
    $::form->{settings}->{import_order_despite_part_errors} = $::form->{settings}->{import_order_despite_part_errors};
414 415
  }
415 416

  
416 417
  delete $::form->{profile}->{id};
SL/Controller/CsvImport/Order.pm
41 41
                       order_column    => $::locale->text('Order'),
42 42
                       item_column     => $::locale->text('OrderItem'),
43 43
                       max_amount_diff => 0.02,
44
                       import_order_despite_part_errors => 0,
44 45
                      );
45 46
};
46 47

  
......
48 49
sub init_settings {
49 50
  my ($self) = @_;
50 51

  
51
  return { map { ( $_ => $self->controller->profile->get($_) ) } qw(order_column item_column max_amount_diff) };
52
  return { map { ( $_ => $self->controller->profile->get($_) ) } qw(order_column item_column max_amount_diff import_order_despite_part_errors) };
52 53
}
53 54

  
54 55

  
......
290 291
  foreach my $entry (@{ $self->controller->data }) {
291 292
    # Search first order
292 293
    if ($entry->{raw_data}->{datatype} eq $self->_order_column) {
293
      if ( $item_column_errors && $last_order_entry ) {
294
      if ( $item_column_errors && $last_order_entry && !$self->settings->{'import_order_despite_part_errors'} ) {
294 295
        push @{ $last_order_entry->{errors} }, $::locale->text('Error: there are errors with #1 items', $item_column_errors);
295 296
      };
296 297
      $item_column_errors = 0; # reset for each order if there are several orders in csv file
......
307 308
    };
308 309
  }
309 310
  # when loop ends, run error check for the final order (or the first, if there is only one)
310
  if ( $item_column_errors ) {
311
  if ( $item_column_errors and !$self->settings->{'import_order_despite_part_errors'} ) {
311 312
    push @{ $last_order_entry->{errors} }, $::locale->text('Error: there are errors with #1 items', $item_column_errors);
312 313
  };
313 314
}
locale/de/all
1430 1430
  'Import finished with errors.' => 'Der Import wurde mit Fehlern beendet.',
1431 1431
  'Import finished without errors.' => 'Der Import wurde ohne Fehler beendet.',
1432 1432
  'Import not started yet, please wait...' => 'Der Taskserver ist gerade ausgelastet. Ihr Import wird gleich gestartet, bitte warten...',
1433
  'Import order ignoring part errors' => 'Auftrag trotz Positionsfehler importieren',
1433 1434
  'Import preview'              => 'Import-Vorschau',
1434 1435
  'Import profiles'             => 'Import-Profil',
1435 1436
  'Import result'               => 'Import-Ergebnis',
templates/webpages/csv_import/_form_orders.html
14 14
  [% L.input_tag('settings.max_amount_diff', LxERP.format_amount(SELF.profile.get('max_amount_diff')), size => "5") %]
15 15
 </td>
16 16
</tr>
17
<tr>
18
 <th align="right">[%- LxERP.t8('Import order ignoring part errors') %]:</th>
19
 <td colspan="10">
20
  [% L.checkbox_tag('settings.import_order_despite_part_errors', checked=SELF.profile.get('import_order_despite_part_errors')) %]
21
 </td>
22
</tr>

Auch abrufbar als: Unified diff