X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FPE.pm;h=57b61842ec4e0aa026682a0b59db51a5527b883c;hb=f12fcb594dd079ca987edca36cd431a3a2ef155e;hp=9c17b524fb9ca8f65d31061be1bcfb37d71bef8a;hpb=ee072e4f077213bf6f8792ca8f0a1afebbb6282f;p=kivitendo-erp.git diff --git a/SL/PE.pm b/SL/PE.pm index 9c17b524f..57b61842e 100644 --- a/SL/PE.pm +++ b/SL/PE.pm @@ -35,6 +35,10 @@ package PE; +use Data::Dumper; + +use SL::DBUtils; + sub projects { $main::lxdebug->enter_sub(); @@ -45,7 +49,7 @@ sub projects { my $sortorder = ($form->{sort}) ? $form->{sort} : "projectnumber"; - my $query = qq|SELECT p.id, p.projectnumber, p.description + my $query = qq|SELECT p.id, p.projectnumber, p.description, p.active FROM project p WHERE 1 = 1|; @@ -68,6 +72,11 @@ sub projects { FROM project p, orderitems o WHERE p.id = o.project_id)"; } + if ($form->{active} eq "active") { + $query .= " AND p.active"; + } elsif ($form->{active} eq "inactive") { + $query .= " AND NOT p.active"; + } $query .= qq| ORDER BY $sortorder|; @@ -134,19 +143,19 @@ sub save_project { # connect to database my $dbh = $form->dbconnect($myconfig); - map { $form->{$_} =~ s/\'/\'\'/g } (projectnumber, description); + my @values = ($form->{projectnumber}, $form->{description}); if ($form->{id}) { - $query = qq|UPDATE project SET - projectnumber = '$form->{projectnumber}', - description = '$form->{description}' - WHERE id = $form->{id}|; + $query = + qq|UPDATE project SET projectnumber = ?, description = ?, active = ? | . + qq|WHERE id = ?|; + push(@values, $form->{active} ? 't' : 'f', $form->{id}); } else { - $query = qq|INSERT INTO project - (projectnumber, description) - VALUES ('$form->{projectnumber}', '$form->{description}')|; + $query = + qq|INSERT INTO project (projectnumber, description, active) | . + qq|VALUES (?, ?, 't')|; } - $dbh->do($query) || $form->dberror($query); + do_query($form, $dbh, $query, @values); $dbh->disconnect; @@ -216,8 +225,7 @@ sub save_partsgroup { # connect to database my $dbh = $form->dbconnect($myconfig); - map { $form->{$_} =~ s/\'/\'\'/g } (partsgroup); - + map { $form->{$_} =~ s/\'/\'\'/g } qw(partsgroup); $form->{discount} /= 100; if ($form->{id}) { @@ -290,5 +298,132 @@ sub delete_tuple { $main::lxdebug->leave_sub(); } +########################## +# get pricegroups from database +# +sub pricegroups { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form) = @_; + + my $var; + + # connect to database + my $dbh = $form->dbconnect($myconfig); + + my $sortorder = ($form->{sort}) ? $form->{sort} : "pricegroup"; + + my $query = qq|SELECT g.id, g.pricegroup + FROM pricegroup g|; + + my $where = "1 = 1"; + + if ($form->{pricegroup}) { + $var = $form->like(lc $form->{pricegroup}); + $where .= " AND lower(g.pricegroup) LIKE '$var'"; + } + $query .= qq| + WHERE $where + ORDER BY $sortorder|; + + if ($form->{status} eq 'orphaned') { + $query = qq|SELECT pg.* + FROM pricegroup pg + LEFT JOIN prices p ON (p.pricegroup_id = pg.id) + WHERE $where + EXCEPT + SELECT pg.* + FROM pricegroup pg + JOIN prices p ON (p.pricegroup_id = pg.id) + WHERE $where + ORDER BY $sortorder|; + } + + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + my $i = 0; + while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{item_list} }, $ref; + $i++; + } + + $sth->finish; + $dbh->disconnect; + + $main::lxdebug->leave_sub(); + + return $i; +} +######################## +# save pricegruop to database +# +sub save_pricegroup { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form) = @_; + + # connect to database + my $dbh = $form->dbconnect($myconfig); + + map { $form->{$_} =~ s/\'/\'\'/g } qw(pricegroup); + + $form->{discount} /= 100; + + if ($form->{id}) { + $query = qq|UPDATE pricegroup SET + pricegroup = '$form->{pricegroup}' + WHERE id = $form->{id}|; + } else { + $query = qq|INSERT INTO pricegroup + (pricegroup) + VALUES ('$form->{pricegroup}')|; + } + $dbh->do($query) || $form->dberror($query); + + $dbh->disconnect; + + $main::lxdebug->leave_sub(); +} +############################ +# get one pricegroup from database +# +sub get_pricegroup { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form) = @_; + + # connect to database + my $dbh = $form->dbconnect($myconfig); + + my $query = qq|SELECT p.id, p.pricegroup + FROM pricegroup p + WHERE p.id = $form->{id}|; + my $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + my $ref = $sth->fetchrow_hashref(NAME_lc); + + map { $form->{$_} = $ref->{$_} } keys %$ref; + + $sth->finish; + + # check if it is orphaned + $query = qq|SELECT count(*) + FROM prices p + WHERE p.pricegroup_id = $form->{id}|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + ($form->{orphaned}) = $sth->fetchrow_array; + $form->{orphaned} = !$form->{orphaned}; + + $sth->finish; + + $dbh->disconnect; + + $main::lxdebug->leave_sub(); +} + 1;