Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 23758ec0

Von Bernd Bleßmann vor mehr als 3 Jahren hinzugefügt

  • ID 23758ec05dbf09a977c9ad5e7880cde6c74cd78c
  • Vorgänger d8930664
  • Nachfolger 111ae012

Massenerstellen von RG aus LS: geschlossene LS nicht (erneut) verarbeiten

Geschlossene Lieferscheine werden nicht zum Umwandeln in der Liste angezeigt,
das war auch bisher so. Aber weenn man nach dem Erzeuigen der Rechnungen von
der Folgeseite den Browser-Zurück-Knopf drückt, konnten aus den selben
Lieferscheine durchaus nochmal Rechnungen erzeugt werden. Das wird nun
abgefangen.

Unterschiede anzeigen:

SL/Controller/MassInvoiceCreatePrint.pm
58 58

  
59 59
  my $db = SL::DB::Invoice->new->db;
60 60
  my @invoices;
61
  my @already_closed_delivery_orders;
61 62

  
62 63
  if (!$db->with_transaction(sub {
63 64
    foreach my $id (@sales_delivery_order_ids) {
64 65
      my $delivery_order    = SL::DB::DeliveryOrder->new(id => $id)->load;
65 66

  
66
      my $invoice = $delivery_order->convert_to_invoice() || die $db->error;
67
      push @invoices, $invoice;
67
      # Only process open delivery orders. In this list should only be open
68
      # delivery orders, but if the user clicked browser back, a new creation
69
      # of invoices for delivery orders which are closed now can be triggered.
70
      # Prevent this.
71
      if ($delivery_order->closed) {
72
        push @already_closed_delivery_orders, $delivery_order;
73

  
74
      } else {
75
        my $invoice = $delivery_order->convert_to_invoice() || die $db->error;
76
        push @invoices, $invoice;
77
      }
68 78
    }
69 79

  
70 80
    1;
......
76 86
  my $key = sprintf('%d-%d', Time::HiRes::gettimeofday());
77 87
  $::auth->set_session_value("MassInvoiceCreatePrint::ids-${key}" => [ map { $_->id } @invoices ]);
78 88

  
79
  flash_later('info', t8('The invoices have been created. They\'re pre-selected below.'));
89
  if (@already_closed_delivery_orders) {
90
    my $dos_list = join ' ', map { $_->donumber } @already_closed_delivery_orders;
91
    flash_later('error', t8('The following delivery orders could not be processed because they are already closed: #1', $dos_list));
92
  }
93

  
94
  flash_later('info', t8('The invoices have been created. They\'re pre-selected below.')) if @invoices;
95

  
80 96
  $self->redirect_to(action => 'list_invoices', ids => $key);
81 97
}
82 98

  
......
89 105
  if ($::form->{ids}) {
90 106
    my $key = 'MassInvoiceCreatePrint::ids-' . $::form->{ids};
91 107
    $self->invoice_ids($::auth->get_session_value($key) || []);
108

  
109
    # Prevent models->get to retrieve any invoices if session key is there
110
    # but no ids are given.
111
    $self->invoice_ids([0]) if !@{$self->invoice_ids};
112

  
92 113
    $self->invoice_models->add_additional_url_params(ids => $::form->{ids});
93 114
  }
94 115

  
locale/de/all
3377 3377
  'The first reason is that kivitendo contained a bug which resulted in the wrong taxkeys being recorded for transactions in which two entries are posted for the same chart with different taxkeys.' => 'Der erste Grund war ein Fehler in kivitendo, der dazu führte, dass bei einer Transaktion, bei der zwei Buchungen mit unterschiedlichen Steuerschlüsseln auf dasselbe Konto durchgeführt wurden, die falschen Steuerschlüssel gespeichert wurden.',
3378 3378
  'The follow-up date is missing.' => 'Das Wiedervorlagedatum fehlt.',
3379 3379
  'The following currencies have been used, but they are not defined:' => 'Die folgenden Währungen wurden benutzt, sind aber nicht ordnungsgemäß in der Datenbank eingetragen:',
3380
  'The following delivery orders could not be processed because they are already closed: #1' => 'Die folgenden Lieferscheine konnten nicht verarbeitet werden, da sie bereits geschlossen sind: #1',
3380 3381
  'The following drafts have been saved and can be loaded.' => 'Die folgenden Entwürfe wurden gespeichert und können geladen werden.',
3381 3382
  'The following groups are valid for this client' => 'Die folgenden Gruppen sind für diesen Mandanten gültig',
3382 3383
  'The following is only a preview.' => 'Das Folgende ist nur eine Vorschau.',
locale/en/all
3376 3376
  'The first reason is that kivitendo contained a bug which resulted in the wrong taxkeys being recorded for transactions in which two entries are posted for the same chart with different taxkeys.' => '',
3377 3377
  'The follow-up date is missing.' => '',
3378 3378
  'The following currencies have been used, but they are not defined:' => '',
3379
  'The following delivery orders could not be processed because they are already closed: #1' => '',
3379 3380
  'The following drafts have been saved and can be loaded.' => '',
3380 3381
  'The following groups are valid for this client' => '',
3381 3382
  'The following is only a preview.' => '',

Auch abrufbar als: Unified diff