From e5a76ed158219e3d2b19f142213f8a80c11627f1 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 18 Aug 2016 09:56:24 +0200 Subject: [PATCH] Rechnungsmassenerstellen: keine DB-Transaktion um convert_to_invoice() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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. --- SL/BackgroundJob/MassRecordCreationAndPrinting.pm | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) 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; -- 2.20.1