From: Moritz Bunkus Date: Thu, 18 Aug 2016 07:56:24 +0000 (+0200) Subject: Rechnungsmassenerstellen: keine DB-Transaktion um convert_to_invoice() X-Git-Tag: release-3.5.4~2127^2~1 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=e5a76ed158219e3d2b19f142213f8a80c11627f1;p=kivitendo-erp.git Rechnungsmassenerstellen: keine DB-Transaktion um convert_to_invoice() convert_to_invoice() macht selber intern bereits eine Transaktion auf; daher ist die außen unnötig. Weiterhin waren die Parameter merkwürdig übergeben: • Für eine On-The-Fly-Unterscheidung für »diese Parameter« vs. »keine Parameter« benötigt man keine sub; das geht einfach mit einem ternären Operator. • »Keine Parameter« drückt man nicht durch »undef« aus, sondern durch die leere Liste »()«. Wird »undef« als einziger Parameter übergeben, so wird in der Funktion de Facto das hier gemacht: my %hash = (undef); und das ergibt eine Warnung, dass eine Liste mit ungerader Anzahl von Elementen in ein Hash umgewandelt werden soll. --- diff --git a/SL/BackgroundJob/MassRecordCreationAndPrinting.pm b/SL/BackgroundJob/MassRecordCreationAndPrinting.pm index e4c75b812..16823dcbd 100644 --- a/SL/BackgroundJob/MassRecordCreationAndPrinting.pm +++ b/SL/BackgroundJob/MassRecordCreationAndPrinting.pm @@ -46,17 +46,12 @@ sub create_invoices { my $data = $job_obj->data_as_hash; eval { - my $invoice; my $sales_delivery_order = SL::DB::DeliveryOrder->new(id => $delivery_order_id)->load; $number = $sales_delivery_order->donumber; + my %conversion_params = $data->{transdate} ? ('attributes' => { transdate => $data->{transdate} }) : (); + my $invoice = $sales_delivery_order->convert_to_invoice(%conversion_params); - if (!$db->do_transaction(sub { - $invoice = $sales_delivery_order->convert_to_invoice(sub { $data->{transdate} ? ('attributes' => { transdate => $data->{transdate} }) : - undef }->() ) || die $db->error; - 1; - })) { - die $db->error; - } + die $db->error if !$invoice; $data->{num_created}++; push @{ $data->{invoice_ids} }, $invoice->id;