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.6.1~405 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=27a1f59580ab25940096c9a479b760b9f2cfd8b5;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. (cherry picked from commit e5a76ed158219e3d2b19f142213f8a80c11627f1) Cherry pick aus dem master selber, da dieser commit durch 54ce51443886623bb785e7c54492ecbc8dc9b3aa "Dateimanagement: Massendruck" überschrieben wurde. Behebt #411 (redmine). --- diff --git a/SL/BackgroundJob/MassRecordCreationAndPrinting.pm b/SL/BackgroundJob/MassRecordCreationAndPrinting.pm index 756867a8c..0ab03bd4e 100644 --- a/SL/BackgroundJob/MassRecordCreationAndPrinting.pm +++ b/SL/BackgroundJob/MassRecordCreationAndPrinting.pm @@ -49,17 +49,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->with_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;