Revision 23758ec0
Von Bernd Bleßmann vor mehr als 3 Jahren hinzugefügt
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
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.