X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/bed19453fb654f69ad972911a4533ca89f8ae0c9..c815c7236e442a9117808af8a3cc8445f5a35203:/SL/IC.pm diff --git a/SL/IC.pm b/SL/IC.pm index 8341f1888..305d3f34c 100644 --- 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}) {