X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDO.pm;h=4ba4828509494fbc07b930efb89fa003bd2095dc;hb=28fc24763b02fab97f8a81a100dd8c16ac42b650;hp=c8ef145495ba35490ebe721de527acd8b6649692;hpb=de009a3fee7e0471c3e095ce92d8708ff2b42597;p=kivitendo-erp.git diff --git a/SL/DO.pm b/SL/DO.pm index c8ef14549..4ba482850 100644 --- a/SL/DO.pm +++ b/SL/DO.pm @@ -33,6 +33,7 @@ package DO; +use Carp; use List::Util qw(max); use YAML; @@ -46,6 +47,7 @@ use SL::HTML::Restrict; use SL::RecordLinks; use SL::IC; use SL::TransNumber; +use SL::DB; use SL::Util qw(trim); use strict; @@ -259,6 +261,16 @@ SQL } sub save { + my ($self) = @_; + $main::lxdebug->enter_sub(); + + my $rc = SL::DB->client->with_transaction(\&_save, $self); + + $main::lxdebug->leave_sub(); + return $rc; +} + +sub _save { $main::lxdebug->enter_sub(); my ($self) = @_; @@ -266,8 +278,7 @@ sub save { my $myconfig = \%main::myconfig; my $form = $main::form; - # connect to database, turn off autocommit - my $dbh = $form->get_standard_dbh($myconfig); + my $dbh = SL::DB->client->dbh; my $restricter = SL::HTML::Restrict->create; my ($query, @values, $sth, $null); @@ -537,8 +548,6 @@ SQL 'type' => $form->{type} eq 'sales_delivery_order' ? 'sales' : 'purchase', 'dbh' => $dbh,); - my $rc = $dbh->commit(); - $form->{saved_donumber} = $form->{donumber}; $form->{saved_ordnumber} = $form->{ordnumber}; $form->{saved_cusordnumber} = $form->{cusordnumber}; @@ -547,7 +556,7 @@ SQL $main::lxdebug->leave_sub(); - return $rc; + return 1; } sub mark_orders_if_delivered { @@ -561,14 +570,16 @@ sub mark_orders_if_delivered { my $myconfig = \%main::myconfig; my $form = $main::form; - my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); + SL::DB->client->with_transaction(sub { + my $dbh = $params{dbh} || SL::DB->client->dbh; - my %ship = $self->get_shipped_qty('dbh' => $dbh, 'do_id' => $form->{id}, 'delivered' => 1); + my %ship = $self->get_shipped_qty('dbh' => $dbh, 'do_id' => $form->{id}, 'delivered' => 1); - foreach my $oe_id (keys %ship) { - do_query($form, $dbh,"UPDATE oe SET delivered = ".($ship{$oe_id}->{delivered}?"TRUE":"FALSE")." WHERE id = ?", $oe_id); - } - $dbh->commit() if (!$params{dbh}); + foreach my $oe_id (keys %ship) { + do_query($form, $dbh,"UPDATE oe SET delivered = ".($ship{$oe_id}->{delivered}?"TRUE":"FALSE")." WHERE id = ?", $oe_id); + } + 1; + }) or do { die SL::DB->client->error }; $main::lxdebug->leave_sub(); } @@ -589,13 +600,15 @@ sub close_orders { my $myconfig = \%main::myconfig; my $form = $main::form; - my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); + SL::DB->client->with_transaction(sub { + my $dbh = $params{dbh} || SL::DB->client->dbh; - my $query = qq|UPDATE delivery_orders SET closed = TRUE WHERE id IN (| . join(', ', ('?') x scalar(@{ $params{ids} })) . qq|)|; + my $query = qq|UPDATE delivery_orders SET closed = TRUE WHERE id IN (| . join(', ', ('?') x scalar(@{ $params{ids} })) . qq|)|; - do_query($form, $dbh, $query, map { conv_i($_) } @{ $params{ids} }); + do_query($form, $dbh, $query, map { conv_i($_) } @{ $params{ids} }); + 1; + }) or die { SL::DB->client->error }; - $dbh->commit() unless ($params{dbh}); $form->new_lastmtime('delivery_orders'); $main::lxdebug->leave_sub(); @@ -1054,13 +1067,9 @@ sub order_details { $h_pg->finish(); $h_bin_wh->finish(); - $form->{delivery_term} = SL::DB::Manager::DeliveryTerm->find_by(id => $form->{delivery_term_id} || undef); - if ($form->{delivery_term} && $form->{language_id}) { - $form->{delivery_term}->description_long( $form->{delivery_term}->translated_attribute('description_long', $form->{language_id})); - $form->{delivery_term}->description_long_invoice($form->{delivery_term}->translated_attribute('description_long_invoice', $form->{language_id})); - } - $form->{department} = SL::DB::Manager::Department->find_by(id => $form->{department_id})->description if $form->{department_id}; + $form->{delivery_term} = SL::DB::Manager::DeliveryTerm->find_by(id => $form->{delivery_term_id} || undef); + $form->{delivery_term}->description_long($form->{delivery_term}->translated_attribute('description_long', $form->{language_id})) if $form->{delivery_term} && $form->{language_id}; $form->{username} = $myconfig->{name};