Revision 96670fe8
Von Moritz Bunkus vor etwa 8 Jahren hinzugefügt
SL/DB/Invoice.pm | ||
---|---|---|
252 | 252 |
$params{ar_id} = $chart->id; |
253 | 253 |
} |
254 | 254 |
|
255 |
my $worker = sub {
|
|
255 |
if (!$self->db->with_transaction(sub {
|
|
256 | 256 |
my %data = $self->calculate_prices_and_taxes; |
257 | 257 |
|
258 | 258 |
$self->_post_create_assemblyitem_entries($data{assembly_items}); |
... | ... | |
267 | 267 |
$self->_post_update_allocated($data{allocated}); |
268 | 268 |
|
269 | 269 |
$self->_post_book_rounding($data{rounding}); |
270 |
}; |
|
271 | 270 |
|
272 |
if ($self->db->in_transaction) { |
|
273 |
$worker->(); |
|
274 |
} elsif (!$self->db->do_transaction($worker)) { |
|
271 |
1; |
|
272 |
})) { |
|
275 | 273 |
$::lxdebug->message(LXDebug->WARN(), "convert_to_invoice failed: " . join("\n", (split(/\n/, $self->db->error))[0..2])); |
276 | 274 |
return undef; |
277 | 275 |
} |
Auch abrufbar als: Unified diff
»with_transaction« anstelle von »do_transaction« verwenden
Es sollte so selten wie möglich »do_transaction« verwndet werden, damit
man sich immer angewöhnt, »with_transaction« zu nutzen.
Hintergründe und Unterschiede zwischen den beiden Funktionen sind in der
Dokumentation von SL/DB.pm beschrieben.