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) = @_;
}
# 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 $dbh = SL::DB->client->dbh;
- my $self = shift;
- my $myconfig = shift || \%::myconfig;
-
- 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->create(undef, 'KIVITENDO')->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();
my ($self, $myconfig, $currency, $transdate, $rate, $fld) = @_;
- my $dbh = $self->dbconnect($myconfig);
-
- my ($buy, $sell);
+ SL::DB->client->with_transaction(sub {
+ my $dbh = SL::DB->client->dbh;
- $buy = $rate if $fld eq 'buy';
- $sell = $rate if $fld eq 'sell';
+ my ($buy, $sell);
+ $buy = $rate if $fld eq 'buy';
+ $sell = $rate if $fld eq 'sell';
- $self->update_exchangerate($dbh, $currency, $transdate, $buy, $sell);
-
- $dbh->disconnect;
+ $self->update_exchangerate($dbh, $currency, $transdate, $buy, $sell);
+ 1;
+ }) or do { die SL::DB->client->error };
$main::lxdebug->leave_sub();
}
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();
}
$main::lxdebug->enter_sub();
my $self = shift;
- my $dbh = shift || $self->get_standard_dbh;
-
- if(!exists $self->{employee_id}) {
- &get_employee($self, $dbh);
- }
+ my $dbh = shift || SL::DB->client->dbh;
+ SL::DB->client->with_transaction(sub {
- 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();
}