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."
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')|);
$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]));
};