From: Bernd Bleßmann Date: Thu, 26 Feb 2015 14:26:10 +0000 (+0100) Subject: Lager-Transfer: Transaktion mit with_transaction statt mit do_transaction. X-Git-Tag: release-3.2.1~47 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=40ebe601936458cebc78a48a20b2cc5e67f6c1da;p=kivitendo-erp.git Lager-Transfer: Transaktion mit with_transaction statt mit do_transaction. Hintergrund: Buchen einer Rechnung und Lagerbewegung in einer Transaktion ausführen können. Zitat aus einem anderen commit: "do_transaction startet immer eine Transaktion, auch wenn außen rum schon eine läuft. Damit wird die äußere Transaktion de facto außer Kraft gesetzt." --- diff --git a/SL/WH.pm b/SL/WH.pm index e836d65f0..5b24cfd70 100644 --- a/SL/WH.pm +++ b/SL/WH.pm @@ -79,7 +79,7 @@ sub transfer { my @trans_ids; my $db = SL::DB::Inventory->new->db; - $db->do_transaction(sub{ + $db->with_transaction(sub{ while (my $transfer = shift @args) { my ($trans_id) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT nextval('id')|); @@ -141,10 +141,12 @@ sub transfer { $part->update_attributes(warehouse_id => conv_i($transfer->{dst_warehouse_id})); $part->update_attributes(bin_id => conv_i($transfer->{dst_bin_id})); } - } + } push @trans_ids, $trans_id; } + + 1; }) or do { $::form->error("Warehouse transfer error: " . join("\n", (split(/\n/, $db->error))[0..2])); };