]> wagnertech.de Git - mfinanz.git/blobdiff - SL/IC.pm
IC: Umstellung IC::save auf single dbh
[mfinanz.git] / SL / IC.pm
index 8341f1888b56caf37d04a6875ef19e741f10cd05..305d3f34c3c76049b5cb06959d9ce16bb79013f2 100644 (file)
--- a/SL/IC.pm
+++ b/SL/IC.pm
@@ -193,8 +193,7 @@ sub get_pricegroups {
 
   my $i = 1;
   foreach my $pg (@{ $pricegroups }) {
-    $form->{"klass_$i"} = "$pg->{id}";
-    $form->{"price_$i"} = $form->format_amount($myconfig, $form->{"price_$i"}, -2);
+    $form->{"price_$i"}         = $form->format_amount($myconfig, $form->{"price_$i"}, -2);
     $form->{"pricegroup_id_$i"} = "$pg->{id}";
     $form->{"pricegroup_$i"}    = "$pg->{pricegroup}";
     $i++;
@@ -225,12 +224,20 @@ sub retrieve_buchungsgruppen {
 }
 
 sub save {
+  my ($self, $myconfig, $form) = @_;
   $main::lxdebug->enter_sub();
 
+  my $rc = SL::DB->client->with_transaction(\&_save, $self, $myconfig, $form);
+
+  $main::lxdebug->leave_sub();
+  return $rc;
+}
+
+sub _save {
   my ($self, $myconfig, $form) = @_;
   my @values;
   # connect to database, turn off AutoCommit
-  my $dbh = $form->get_standard_dbh;
+  my $dbh = SL::DB->client->dbh;
   my $restricter = SL::HTML::Restrict->create;
 
   # save the part
@@ -262,16 +269,8 @@ sub save {
     }
 
     # get old price
-    $query = qq|SELECT sellprice, weight FROM parts WHERE id = ?|;
-    my ($sellprice, $weight) = selectrow_query($form, $dbh, $query, conv_i($form->{id}));
-
-    # if item is part of an assembly adjust all assemblies
-    $query = qq|SELECT id, qty FROM assembly WHERE parts_id = ?|;
-    $sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id}));
-    while (my ($id, $qty) = $sth->fetchrow_array) {
-      &update_assembly($dbh, $form, $id, $qty, $sellprice * 1, $weight * 1);
-    }
-    $sth->finish;
+    $query = qq|SELECT sellprice FROM parts WHERE id = ?|;
+    my ($sellprice) = selectrow_query($form, $dbh, $query, conv_i($form->{id}));
 
     # delete makemodel records
     do_query($form, $dbh, qq|DELETE FROM makemodel WHERE parts_id = ?|, conv_i($form->{id}));
@@ -336,7 +335,6 @@ sub save {
          partnumber = ?,
          description = ?,
          makemodel = ?,
-         alternate = 'f',
          assembly = ?,
          listprice = ?,
          sellprice = ?,
@@ -545,37 +543,7 @@ sub save {
 SQL
   do_query($form, $dbh, $query, ($form->{id}) x 2);
 
-  # commit
-  my $rc = $dbh->commit;
-
-  $main::lxdebug->leave_sub();
-
-  return $rc;
-}
-
-sub update_assembly {
-  $main::lxdebug->enter_sub();
-
-  my ($dbh, $form, $id, $qty, $sellprice, $weight) = @_;
-
-  my $query = qq|SELECT id, qty FROM assembly WHERE parts_id = ?|;
-  my $sth = prepare_execute_query($form, $dbh, $query, conv_i($id));
-
-  while (my ($pid, $aqty) = $sth->fetchrow_array) {
-    &update_assembly($dbh, $form, $pid, $aqty * $qty, $sellprice, $weight);
-  }
-  $sth->finish;
-
-  $query =
-    qq|UPDATE parts SET sellprice = sellprice + ?, weight = weight + ?
-       WHERE id = ?|;
-  my @values = ($qty * ($form->{sellprice} - $sellprice),
-             $qty * ($form->{weight} - $weight), conv_i($id));
-  do_query($form, $dbh, $query, @values);
-
-  $form->new_lastmtime('parts') if $id == $form->{id};
-
-  $main::lxdebug->leave_sub();
+  return 1;
 }
 
 sub retrieve_assemblies {
@@ -878,7 +846,7 @@ sub all_parts {
   if ($form->{all}) {
     $form->{"l_$_"} = 1 for qw(partnumber description unit sellprice lastcost cvar_packaging linetotal);
     push @where_tokens, "p.partnumber ILIKE ? OR p.description ILIKE ?";
-    push @bind_vars,    "%$form->{all}%", "%$form->{all}%";
+    push @bind_vars,    (like($form->{all})) x 2;
   }
 
   # special case insertdate
@@ -1342,7 +1310,7 @@ sub create_links {
   # connect to database
   my $dbh = $form->get_standard_dbh;
 
-  my @values = ('%' . $module . '%');
+  my @values = like($module);
   my $query;
 
   if ($form->{id}) {