X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/a422993f6e2a239eb1a263635d43ae53b54868fc..3bb3a4a56b0be39fd60f011137ffbadd9dba3fd7:/SL/Form.pm diff --git a/SL/Form.pm b/SL/Form.pm index 7aa6e8071..5c7d062ab 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -85,19 +85,6 @@ use SL::DB::Tax; use strict; -my $standard_dbh; - -END { - disconnect_standard_dbh(); -} - -sub disconnect_standard_dbh { - return unless $standard_dbh; - - $standard_dbh->rollback(); - undef $standard_dbh; -} - sub read_version { my ($self) = @_; @@ -1388,69 +1375,29 @@ sub datetonum { } # Database routines used throughout +# DB Handling got moved to SL::DB, these are only shims for compatibility sub dbconnect { - $main::lxdebug->enter_sub(2); - - my ($self, $myconfig) = @_; - - # connect to database - my $dbh = SL::DBConnect->connect or $self->dberror; - - # set db options - if ($myconfig->{dboptions}) { - $dbh->do($myconfig->{dboptions}) || $self->dberror($myconfig->{dboptions}); - } - - $main::lxdebug->leave_sub(2); - - return $dbh; -} - -sub dbconnect_noauto { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig) = @_; - - # connect to database - my $dbh = SL::DBConnect->connect(SL::DBConnect->get_connect_args(AutoCommit => 0)) or $self->dberror; - - # set db options - if ($myconfig->{dboptions}) { - $dbh->do($myconfig->{dboptions}) || $self->dberror($myconfig->{dboptions}); - } - - $main::lxdebug->leave_sub(); - - return $dbh; + SL::DB->client->dbh; } sub get_standard_dbh { - $main::lxdebug->enter_sub(2); - - my $self = shift; - my $myconfig = shift || \%::myconfig; + my $dbh = SL::DB->client->dbh; - if ($standard_dbh && !$standard_dbh->{Active}) { - $main::lxdebug->message(LXDebug->INFO(), "get_standard_dbh: \$standard_dbh is defined but not Active anymore"); - undef $standard_dbh; + if ($dbh && !$dbh->{Active}) { + $main::lxdebug->message(LXDebug->INFO(), "get_standard_dbh: \$dbh is defined but not Active anymore"); + SL::DB->client->dbh(undef); } - $standard_dbh ||= SL::DB->client->dbh; - - $main::lxdebug->leave_sub(2); - - return $standard_dbh; + SL::DB->client->dbh; } -sub set_standard_dbh { - my ($self, $dbh) = @_; - my $old_dbh = $standard_dbh; - $standard_dbh = $dbh; - - return $old_dbh; +sub disconnect_standard_dbh { + SL::DB->client->dbh->rollback; } +# /database + sub date_closed { $main::lxdebug->enter_sub(); @@ -1588,18 +1535,18 @@ sub save_exchangerate { my ($self, $myconfig, $currency, $transdate, $rate, $fld) = @_; - my $dbh = $self->dbconnect($myconfig); - - my ($buy, $sell); - - $buy = $rate if $fld eq 'buy'; - $sell = $rate if $fld eq 'sell'; + SL::DB->client->with_transaction(sub { + my $dbh = SL::DB->client->dbh; + my ($buy, $sell); - $self->update_exchangerate($dbh, $currency, $transdate, $buy, $sell); + $buy = $rate if $fld eq 'buy'; + $sell = $rate if $fld eq 'sell'; - $dbh->disconnect; + $self->update_exchangerate($dbh, $currency, $transdate, $buy, $sell); + 1; + }) or do { die SL::DB->client->error }; $main::lxdebug->leave_sub(); }