RC: single-dbh disconnects
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 8 Sep 2016 14:51:27 +0000 (16:51 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 8 Sep 2016 14:51:27 +0000 (16:51 +0200)
SL/RC.pm

index 1ccf7ab..bd77fea 100644 (file)
--- a/SL/RC.pm
+++ b/SL/RC.pm
@@ -35,6 +35,7 @@
 package RC;
 
 use SL::DBUtils;
+use SL::DB;
 
 use strict;
 
@@ -43,8 +44,7 @@ sub paymentaccounts {
 
   my ($self, $myconfig, $form) = @_;
 
-  # connect to database
-  my $dbh = $form->dbconnect($myconfig);
+  my $dbh = SL::DB->client->dbh;
 
   my $query =
     qq|SELECT accno, description | .
@@ -53,7 +53,6 @@ sub paymentaccounts {
     qq|ORDER BY accno|;
 
   $form->{PR} = selectall_hashref_query($form, $dbh, $query);
-  $dbh->disconnect;
 
   $main::lxdebug->leave_sub();
 }
@@ -223,30 +222,30 @@ sub reconcile {
 
   my ($self, $myconfig, $form) = @_;
 
-  # connect to database
-  my $dbh = $form->dbconnect($myconfig);
-
-  my ($query, $i);
+  SL::DB->client->with_transaction(sub {
+    my $dbh = SL::DB->client->dbh;
 
-  # clear flags
-  for $i (1 .. $form->{rowcount}) {
-    if ($form->{"cleared_$i"}) {
-      $query =
-        qq|UPDATE acc_trans SET cleared = '1' | .
-        qq|WHERE acc_trans_id = ?|;
-      do_query($form, $dbh, $query, $form->{"oid_$i"});
+    my ($query, $i);
 
-      # clear fx_transaction
-      if ($form->{"fxoid_$i"}) {
+    # clear flags
+    for $i (1 .. $form->{rowcount}) {
+      if ($form->{"cleared_$i"}) {
         $query =
           qq|UPDATE acc_trans SET cleared = '1' | .
           qq|WHERE acc_trans_id = ?|;
-        do_query($form, $dbh, $query, $form->{"fxoid_$i"});
+        do_query($form, $dbh, $query, $form->{"oid_$i"});
+
+        # clear fx_transaction
+        if ($form->{"fxoid_$i"}) {
+          $query =
+            qq|UPDATE acc_trans SET cleared = '1' | .
+            qq|WHERE acc_trans_id = ?|;
+          do_query($form, $dbh, $query, $form->{"fxoid_$i"});
+        }
       }
     }
-  }
-
-  $dbh->disconnect;
+    1;
+  }) or do { die SL::DB->client->error };
 
   $main::lxdebug->leave_sub();
 }