From: Sven Schöling Date: Fri, 12 Aug 2016 14:07:37 +0000 (+0200) Subject: Form: single-dbh (partiell) X-Git-Tag: release-3.5.4~2077 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=a422993f6e2a239eb1a263635d43ae53b54868fc;p=kivitendo-erp.git Form: single-dbh (partiell) standard_dbh->rollback fehlt noch --- diff --git a/SL/Form.pm b/SL/Form.pm index 64d09d124..7aa6e8071 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -1436,7 +1436,7 @@ sub get_standard_dbh { undef $standard_dbh; } - $standard_dbh ||= SL::DB->create(undef, 'KIVITENDO')->dbh; + $standard_dbh ||= SL::DB->client->dbh; $main::lxdebug->leave_sub(2); @@ -3036,52 +3036,52 @@ sub update_status { my ($i, $id); - my $dbh = $self->dbconnect_noauto($myconfig); + SL::DB->client->with_transaction(sub { + my $dbh = SL::DB->client->dbh; - my $query = qq|DELETE FROM status - WHERE (formname = ?) AND (trans_id = ?)|; - my $sth = prepare_query($self, $dbh, $query); + my $query = qq|DELETE FROM status + WHERE (formname = ?) AND (trans_id = ?)|; + my $sth = prepare_query($self, $dbh, $query); - if ($self->{formname} =~ /(check|receipt)/) { - for $i (1 .. $self->{rowcount}) { - do_statement($self, $sth, $query, $self->{formname}, $self->{"id_$i"} * 1); + if ($self->{formname} =~ /(check|receipt)/) { + for $i (1 .. $self->{rowcount}) { + do_statement($self, $sth, $query, $self->{formname}, $self->{"id_$i"} * 1); + } + } else { + do_statement($self, $sth, $query, $self->{formname}, $self->{id}); } - } else { - do_statement($self, $sth, $query, $self->{formname}, $self->{id}); - } - $sth->finish(); + $sth->finish(); - my $printed = ($self->{printed} =~ /\Q$self->{formname}\E/) ? "1" : "0"; - my $emailed = ($self->{emailed} =~ /\Q$self->{formname}\E/) ? "1" : "0"; + my $printed = ($self->{printed} =~ /\Q$self->{formname}\E/) ? "1" : "0"; + my $emailed = ($self->{emailed} =~ /\Q$self->{formname}\E/) ? "1" : "0"; - my %queued = split / /, $self->{queued}; - my @values; + my %queued = split / /, $self->{queued}; + my @values; - if ($self->{formname} =~ /(check|receipt)/) { + if ($self->{formname} =~ /(check|receipt)/) { - # this is a check or receipt, add one entry for each lineitem - my ($accno) = split /--/, $self->{account}; - $query = qq|INSERT INTO status (trans_id, printed, spoolfile, formname, chart_id) - VALUES (?, ?, ?, ?, (SELECT c.id FROM chart c WHERE c.accno = ?))|; - @values = ($printed, $queued{$self->{formname}}, $self->{prinform}, $accno); - $sth = prepare_query($self, $dbh, $query); + # this is a check or receipt, add one entry for each lineitem + my ($accno) = split /--/, $self->{account}; + $query = qq|INSERT INTO status (trans_id, printed, spoolfile, formname, chart_id) + VALUES (?, ?, ?, ?, (SELECT c.id FROM chart c WHERE c.accno = ?))|; + @values = ($printed, $queued{$self->{formname}}, $self->{prinform}, $accno); + $sth = prepare_query($self, $dbh, $query); - for $i (1 .. $self->{rowcount}) { - if ($self->{"checked_$i"}) { - do_statement($self, $sth, $query, $self->{"id_$i"}, @values); + for $i (1 .. $self->{rowcount}) { + if ($self->{"checked_$i"}) { + do_statement($self, $sth, $query, $self->{"id_$i"}, @values); + } } - } - $sth->finish(); - - } else { - $query = qq|INSERT INTO status (trans_id, printed, emailed, spoolfile, formname) - VALUES (?, ?, ?, ?, ?)|; - do_query($self, $dbh, $query, $self->{id}, $printed, $emailed, - $queued{$self->{formname}}, $self->{formname}); - } + $sth->finish(); - $dbh->commit; - $dbh->disconnect; + } else { + $query = qq|INSERT INTO status (trans_id, printed, emailed, spoolfile, formname) + VALUES (?, ?, ?, ?, ?)|; + do_query($self, $dbh, $query, $self->{id}, $printed, $emailed, + $queued{$self->{formname}}, $self->{formname}); + } + 1; + }) or do { die SL::DB->client->error }; $main::lxdebug->leave_sub(); } @@ -3167,20 +3167,21 @@ sub save_history { $main::lxdebug->enter_sub(); my $self = shift; - my $dbh = shift || $self->get_standard_dbh; + my $dbh = shift || SL::DB->client->dbh; + SL::DB->client->with_transaction(sub { - if(!exists $self->{employee_id}) { - &get_employee($self, $dbh); - } - - my $query = - qq|INSERT INTO history_erp (trans_id, employee_id, addition, what_done, snumbers) | . - qq|VALUES (?, (SELECT id FROM employee WHERE login = ?), ?, ?, ?)|; - my @values = (conv_i($self->{id}), $self->{login}, - $self->{addition}, $self->{what_done}, "$self->{snumbers}"); - do_query($self, $dbh, $query, @values); + if(!exists $self->{employee_id}) { + &get_employee($self, $dbh); + } - $dbh->commit; + my $query = + qq|INSERT INTO history_erp (trans_id, employee_id, addition, what_done, snumbers) | . + qq|VALUES (?, (SELECT id FROM employee WHERE login = ?), ?, ?, ?)|; + my @values = (conv_i($self->{id}), $self->{login}, + $self->{addition}, $self->{what_done}, "$self->{snumbers}"); + do_query($self, $dbh, $query, @values); + 1; + }) or do { die SL::DB->client->error }; $main::lxdebug->leave_sub(); }