use SL::DATEV qw(:CONSTANTS);
use SL::DBUtils;
use SL::Util qw(trim);
+use SL::DB;
use strict;
my ($self, $myconfig, $form) = @_;
$main::lxdebug->enter_sub();
- # connect to database
- my $dbh = $form->dbconnect_noauto($myconfig);
+ SL::DB->client->with_transaction(sub {
+ do_query($form, SL::DB->client->dbh, qq|DELETE FROM gl WHERE id = ?|, conv_i($form->{id}));
+ 1;
+ }) or do { die SL::DB->client->error };
- # acc_trans entries are deleted by database triggers.
- do_query($form, $dbh, qq|DELETE FROM gl WHERE id = ?|, conv_i($form->{id}));
-
- # commit and redirect
- my $rc = $dbh->commit;
- $dbh->disconnect;
$main::lxdebug->leave_sub();
+}
+
+sub post_transaction {
+ my ($self, $myconfig, $form) = @_;
+ $main::lxdebug->enter_sub();
- $rc;
+ my $rc = SL::DB->client->with_transaction(\&_post_transaction, $self, $myconfig, $form);
+ $::lxdebug->leave_sub;
+ return $rc;
}
-sub post_transaction {
+sub _post_transaction {
my ($self, $myconfig, $form) = @_;
$main::lxdebug->enter_sub();
my $i;
- # connect to database, turn off AutoCommit
- my $dbh = $form->dbconnect_noauto($myconfig);
+ my $dbh = SL::DB->client->dbh;
# post the transaction
# make up a unique handle and store in reference field
$datev->export;
if ($datev->errors) {
- $dbh->rollback;
die join "\n", $::locale->text('DATEV check returned errors:'), $datev->errors;
}
}
- # commit and redirect
- my $rc = $dbh->commit;
- $dbh->disconnect;
- $main::lxdebug->leave_sub();
-
- return $rc;
+ return 1;
}
sub all_transactions {
my ($self, $myconfig, $form) = @_;
$main::lxdebug->enter_sub();
- # connect to database
- my $dbh = $form->dbconnect($myconfig);
+ my $dbh = SL::DB->client->dbh;
my ($query, $sth, $source, $null, $space);
my ($glwhere, $arwhere, $apwhere) = ("1 = 1", "1 = 1", "1 = 1");
$glwhere .= qq| AND g.reference ILIKE ?|;
$arwhere .= qq| AND a.invnumber ILIKE ?|;
$apwhere .= qq| AND a.invnumber ILIKE ?|;
- push(@glvalues, $::form->like($form->{reference}));
- push(@arvalues, $::form->like($form->{reference}));
- push(@apvalues, $::form->like($form->{reference}));
+ push(@glvalues, like($form->{reference}));
+ push(@arvalues, like($form->{reference}));
+ push(@apvalues, like($form->{reference}));
}
if ($form->{department}) {
$glwhere .= " AND ac.trans_id IN (SELECT trans_id from acc_trans WHERE source ILIKE ?)";
$arwhere .= " AND ac.trans_id IN (SELECT trans_id from acc_trans WHERE source ILIKE ?)";
$apwhere .= " AND ac.trans_id IN (SELECT trans_id from acc_trans WHERE source ILIKE ?)";
- push(@glvalues, $::form->like($form->{source}));
- push(@arvalues, $::form->like($form->{source}));
- push(@apvalues, $::form->like($form->{source}));
+ push(@glvalues, like($form->{source}));
+ push(@arvalues, like($form->{source}));
+ push(@apvalues, like($form->{source}));
}
# default Datumseinschränkung falls nicht oder falsch übergeben (sollte nie passieren)
$glwhere .= " AND g.description ILIKE ?";
$arwhere .= " AND ct.name ILIKE ?";
$apwhere .= " AND ct.name ILIKE ?";
- push(@glvalues, $::form->like($form->{description}));
- push(@arvalues, $::form->like($form->{description}));
- push(@apvalues, $::form->like($form->{description}));
+ push(@glvalues, like($form->{description}));
+ push(@arvalues, like($form->{description}));
+ push(@apvalues, like($form->{description}));
}
if ($form->{employee_id}) {
$glwhere .= " AND g.notes ILIKE ?";
$arwhere .= " AND a.notes ILIKE ?";
$apwhere .= " AND a.notes ILIKE ?";
- push(@glvalues, $::form->like($form->{notes}));
- push(@arvalues, $::form->like($form->{notes}));
- push(@apvalues, $::form->like($form->{notes}));
+ push(@glvalues, like($form->{notes}));
+ push(@arvalues, like($form->{notes}));
+ push(@apvalues, like($form->{notes}));
}
if ($form->{accno}) {
($form->{account_description}) = selectrow_query($form, $dbh, $query, $form->{accno});
}
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
my ($query, $sth, $ref, @values);
- # connect to database
- my $dbh = $form->dbconnect($myconfig);
+ my $dbh = SL::DB->client->dbh;
$query = qq|SELECT closedto, revtrans FROM defaults|;
($form->{closedto}, $form->{revtrans}) = selectrow_query($form, $dbh, $query);
ORDER BY c.accno|;
$form->{chart} = selectall_hashref_query($form, $dbh, $query, conv_date($form->{transdate}));
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
sub storno {
+ my ($self, $form, $myconfig, $id) = @_;
$main::lxdebug->enter_sub();
+ my $rc = SL::DB->client->with_transaction(\&_storno, $self, $form, $myconfig, $id);
+
+ $::lxdebug->leave_sub;
+ return $rc;
+}
+
+sub _storno {
my ($self, $form, $myconfig, $id) = @_;
my ($query, $new_id, $storno_row, $acc_trans_rows);
- my $dbh = $form->get_standard_dbh($myconfig);
+ my $dbh = SL::DB->client->dbh;
$query = qq|SELECT nextval('glid')|;
($new_id) = selectrow_query($form, $dbh, $query);
do_query($form, $dbh, $query, (values %$row));
}
- $dbh->commit;
-
- $main::lxdebug->leave_sub();
+ return 1;
}
sub get_chart_balances {