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

  

Auch abrufbar als: Unified diff