X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FFU.pm;h=8a2f2698a73dcf3883ec632edcf816412854be37;hb=0e04ddd7e3ff23d051838617844698a39f680969;hp=a9715dca028a186cd211cf1caa95f45a90ef6aad;hpb=bc40bcabc425b99f3b79a5544684a6fe8674adfe;p=kivitendo-erp.git diff --git a/SL/FU.pm b/SL/FU.pm index a9715dca0..8a2f2698a 100644 --- a/SL/FU.pm +++ b/SL/FU.pm @@ -6,20 +6,29 @@ use List::Util qw(first); use SL::Common; use SL::DBUtils; +use SL::DB; use SL::Notes; use strict; sub save { + my ($self, %params) = @_; $main::lxdebug->enter_sub(); + my $rc = SL::DB->client->with_transaction(\&_save, $self, %params); + + $::lxdebug->leave_sub; + return $rc; +} + +sub _save { my $self = shift; my %params = @_; my $myconfig = \%main::myconfig; my $form = $main::form; - my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); + my $dbh = $params{dbh} || SL::DB->client->dbh; my ($query, @values); if (!$params{id}) { @@ -56,9 +65,7 @@ sub save { $sth->finish(); - $dbh->commit() unless ($params{dbh}); - - $main::lxdebug->leave_sub(); + return 1; } sub finish { @@ -72,11 +79,10 @@ sub finish { my $myconfig = \%main::myconfig; my $form = $main::form; - my $dbh = $form->get_standard_dbh($myconfig); - - do_query($form, $dbh, qq|UPDATE follow_ups SET done = TRUE WHERE id = ?|, conv_i($params{id})); - - $dbh->commit(); + SL::DB->client->with_transaction(sub { + do_query($form, SL::DB->client->dbh, qq|UPDATE follow_ups SET done = TRUE WHERE id = ?|, conv_i($params{id})); + 1; + }) or do { die SL::DB->client->error }; $main::lxdebug->leave_sub(); } @@ -92,15 +98,16 @@ sub delete { my $myconfig = \%main::myconfig; my $form = $main::form; - my $dbh = $form->get_standard_dbh($myconfig); - - my $id = conv_i($params{id}); + SL::DB->client->with_transaction(sub { + my $dbh = SL::DB->client->dbh; - do_query($form, $dbh, qq|DELETE FROM follow_up_links WHERE follow_up_id = ?|, $id); - do_query($form, $dbh, qq|DELETE FROM follow_ups WHERE id = ?|, $id); - do_query($form, $dbh, qq|DELETE FROM notes WHERE (trans_id = ?) AND (trans_module = 'fu')|, $id); + my $id = conv_i($params{id}); - $dbh->commit(); + do_query($form, $dbh, qq|DELETE FROM follow_up_links WHERE follow_up_id = ?|, $id); + do_query($form, $dbh, qq|DELETE FROM follow_ups WHERE id = ?|, $id); + do_query($form, $dbh, qq|DELETE FROM notes WHERE (trans_id = ?) AND (trans_module = 'fu')|, $id); + 1; + }) or do { die SL::DB->client->error }; $main::lxdebug->leave_sub(); } @@ -422,24 +429,25 @@ sub save_access_rights { my $myconfig = \%main::myconfig; my $form = $main::form; - my $dbh = $form->get_standard_dbh($myconfig); + SL::DB->client->with_transaction(sub { + my $dbh = SL::DB->client->dbh; - my ($id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $::myconfig{login}); + my ($id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $::myconfig{login}); - do_query($form, $dbh, qq|DELETE FROM follow_up_access WHERE what = ?|, $id); + do_query($form, $dbh, qq|DELETE FROM follow_up_access WHERE what = ?|, $id); - my $query = qq|INSERT INTO follow_up_access (who, what) VALUES (?, ?)|; - my $sth = prepare_query($form, $dbh, $query); + my $query = qq|INSERT INTO follow_up_access (who, what) VALUES (?, ?)|; + my $sth = prepare_query($form, $dbh, $query); - while (my ($who, $access_allowed) = each %{ $params{access} }) { - next unless ($access_allowed); + while (my ($who, $access_allowed) = each %{ $params{access} }) { + next unless ($access_allowed); - do_statement($form, $sth, $query, conv_i($who), $id); - } - - $sth->finish(); + do_statement($form, $sth, $query, conv_i($who), $id); + } - $dbh->commit(); + $sth->finish(); + 1; + }) or do { die SL::DB->client->error }; $main::lxdebug->leave_sub(); }