X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/49556f01cfe6a395cf5554e1a00dc61d6da0493e..2b8804456d1d3ee249a70d98679ea3a934b25a39:/SL/PE.pm diff --git a/SL/PE.pm b/SL/PE.pm index 28f3ba5c1..c6de663e1 100644 --- a/SL/PE.pm +++ b/SL/PE.pm @@ -37,6 +37,7 @@ package PE; use Data::Dumper; use SL::DBUtils; +use SL::DB; use strict; @@ -46,19 +47,22 @@ sub partsgroups { my ($self, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = SL::DB->client->dbh; my ($where, @values); if ($form->{partsgroup}) { $where .= qq| AND partsgroup ILIKE ?|; - push(@values, '%' . $form->{partsgroup} . '%'); + push(@values, like($form->{partsgroup})); } if ($form->{status} eq 'orphaned') { $where .= qq| AND id NOT IN | . qq| (SELECT DISTINCT partsgroup_id FROM parts | . + qq| WHERE NOT partsgroup_id ISNULL | . + qq| UNION | . + qq| SELECT DISTINCT partsgroup_id FROM custom_variable_config_partsgroups | . qq| WHERE NOT partsgroup_id ISNULL) |; } @@ -74,8 +78,6 @@ sub partsgroups { $form->{item_list} = selectall_hashref_query($form, $dbh, $query, @values); - $dbh->disconnect; - $main::lxdebug->leave_sub(); return scalar(@{ $form->{item_list} }); @@ -87,7 +89,7 @@ sub save_partsgroup { my ($self, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = SL::DB->client->dbh; $form->{discount} /= 100; @@ -102,8 +104,6 @@ sub save_partsgroup { } do_query($form, $dbh, $query, @values); - $dbh->disconnect; - $main::lxdebug->leave_sub(); } @@ -113,7 +113,7 @@ sub get_partsgroup { my ($self, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = SL::DB->client->dbh; my $query = qq|SELECT pg.*, | . @@ -127,7 +127,11 @@ sub get_partsgroup { map({ $form->{$_} = $ref->{$_} } keys(%{$ref})); $sth->finish; - $dbh->disconnect; + # also not orphaned if partsgroup is selected for a cvar filter + if ($form->{orphaned}) { + my $cvar_count = scalar( @{ SL::DB::PartsGroup->new(id => $form->{id})->custom_variable_configs } ); + $form->{orphaned} = !$cvar_count; + } $main::lxdebug->leave_sub(); } @@ -138,14 +142,15 @@ sub delete_tuple { my ($self, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect($myconfig); - - my $table = $form->{type} eq "pricegroup" ? "pricegroup" : "partsgroup"; + SL::DB->client->with_transaction(sub { + my $dbh = SL::DB->client->dbh; - my $query = qq|DELETE FROM $table WHERE id = ?|; - do_query($form, $dbh, $query, $form->{id}); + my $table = $form->{type} eq "pricegroup" ? "pricegroup" : "partsgroup"; - $dbh->disconnect; + my $query = qq|DELETE FROM $table WHERE id = ?|; + do_query($form, $dbh, $query, $form->{id}); + 1; + }) or do { die SL::DB->client->error }; $main::lxdebug->leave_sub(); } @@ -159,13 +164,13 @@ sub pricegroups { my ($self, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = SL::DB->client->dbh; my ($where, @values); if ($form->{pricegroup}) { $where .= qq| AND pricegroup ILIKE ?|; - push(@values, '%' . $form->{pricegroup} . '%'); + push(@values, like($form->{pricegroup})); } if ($form->{status} eq 'orphaned') { @@ -194,8 +199,6 @@ sub pricegroups { $form->{item_list} = selectall_hashref_query($form, $dbh, $query, @values); - $dbh->disconnect; - $main::lxdebug->leave_sub(); return scalar(@{ $form->{item_list} }); @@ -209,23 +212,23 @@ sub save_pricegroup { my ($self, $myconfig, $form) = @_; - # connect to database - my $dbh = $form->dbconnect($myconfig); - my $query; - - $form->{discount} /= 100; + SL::DB->client->with_transaction(sub { + my $dbh = SL::DB->client->dbh; + my $query; - my @values = ($form->{pricegroup}); + $form->{discount} /= 100; - if ($form->{id}) { - $query = qq|UPDATE pricegroup SET pricegroup = ? WHERE id = ? |; - push(@values, $form->{id}); - } else { - $query = qq|INSERT INTO pricegroup (pricegroup) VALUES (?)|; - } - do_query($form, $dbh, $query, @values); + my @values = ($form->{pricegroup}); - $dbh->disconnect; + if ($form->{id}) { + $query = qq|UPDATE pricegroup SET pricegroup = ? WHERE id = ? |; + push(@values, $form->{id}); + } else { + $query = qq|INSERT INTO pricegroup (pricegroup) VALUES (?)|; + } + do_query($form, $dbh, $query, @values); + 1; + }) or do { die SL::DB->client->error }; $main::lxdebug->leave_sub(); } @@ -239,7 +242,7 @@ sub get_pricegroup { my ($self, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = SL::DB->client->dbh; my $query = qq|SELECT id, pricegroup FROM pricegroup WHERE id = ?|; my $sth = prepare_execute_query($form, $dbh, $query, $form->{id}); @@ -263,8 +266,6 @@ sub get_pricegroup { ($form->{orphaned}) = selectrow_query($form, $dbh, $query, @values); $form->{orphaned} = !$form->{orphaned}; - $dbh->disconnect; - $main::lxdebug->leave_sub(); }