X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/377ff40990680968fefeeb65b6e6935fcf9fcf35..a4b22a8f008d6431597fa80de26bcb0fa10e8d7b:/SL/Form.pm diff --git a/SL/Form.pm b/SL/Form.pm index 95cd80e8e..842afe8af 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -147,7 +147,7 @@ sub new { $self->{action} = lc $self->{action}; $self->{action} =~ s/( |-|,|\#)/_/g; - $self->{version} = "2.4.1"; + $self->{version} = "2.4.2"; $main::lxdebug->leave_sub(); @@ -1395,51 +1395,136 @@ sub get_duedate { $main::lxdebug->leave_sub(); } -# get other contact for transaction and form - html/tex -sub get_contact { +# get contacts for id, if no contact return {"","","","",""} +sub get_contacts { $main::lxdebug->enter_sub(); - my ($self, $dbh, $id) = @_; + my ($self, $dbh, $id, $key) = @_; - my $query = qq|SELECT c.* - FROM contacts c - WHERE cp_id=$id|; - $sth = $dbh->prepare($query); - $sth->execute || $self->dberror($query); + $key = "all_contacts" unless ($key); + $self->{$key} = []; - $ref = $sth->fetchrow_hashref(NAME_lc); + my $query = + qq|SELECT c.cp_id, c.cp_cv_id, c.cp_name, c.cp_givenname, c.cp_abteilung | . + qq|FROM contacts c | . + qq|WHERE cp_cv_id = ? | . + qq|ORDER BY lower(c.cp_name)|; + my $sth = $dbh->prepare($query); + $sth->execute($id) || $self->dberror($query . " ($id)"); - push @{ $self->{$_} }, $ref; + my $i = 0; + while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $self->{$key} }, $ref; + $i++; + } + if ($i == 0) { + push @{ $self->{$key} }, { { "", "", "", "", "", "" } }; + } $sth->finish; $main::lxdebug->leave_sub(); } -# get contacts for id, if no contact return {"","","","",""} -sub get_contacts { +sub get_projects { $main::lxdebug->enter_sub(); - my ($self, $dbh, $id) = @_; + my ($self, $dbh, $key) = @_; + + my ($all, $old_id, $where, @values); + + if (ref($key) eq "HASH") { + my $params = $key; + + $key = "ALL_PROJECTS"; + + foreach my $p (keys(%{$params})) { + if ($p eq "all") { + $all = $params->{$p}; + } elsif ($p eq "old_id") { + $old_id = $params->{$p}; + } elsif ($p eq "key") { + $key = $params->{$p}; + } + } + } + + if (!$all) { + $where = "WHERE active "; + if ($old_id) { + if (ref($old_id) eq "ARRAY") { + my @ids = grep({ $_ } @{$old_id}); + if (@ids) { + $where .= " OR id IN (" . join(",", map({ "?" } @ids)) . ") "; + push(@values, @ids); + } + } else { + $where .= " OR (id = ?) "; + push(@values, $old_id); + } + } + } - my $query = qq|SELECT c.cp_id, c.cp_cv_id, c.cp_name, c.cp_givenname, c.cp_abteilung - FROM contacts c - WHERE cp_cv_id=$id|; + my $query = + qq|SELECT id, projectnumber, description, active | . + qq|FROM project | . + $where . + qq|ORDER BY lower(projectnumber)|; my $sth = $dbh->prepare($query); - $sth->execute || $self->dberror($query); + $sth->execute(@values) || + $self->dberror($query . " (" . join(", ", @values) . ")"); - my $i = 0; + $self->{$key} = []; while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { - push @{ $self->{all_contacts} }, $ref; - $i++; + push(@{ $self->{$key} }, $ref); } - if ($i == 0) { - push @{ $self->{all_contacts} }, { { "", "", "", "", "", "" } }; - } $sth->finish; $main::lxdebug->leave_sub(); } +sub get_lists { + $main::lxdebug->enter_sub(); + + my $self = shift; + my %params = @_; + + my $dbh = $self->dbconnect(\%main::myconfig); + my ($sth, $query, $ref); + + my $vc = $self->{"vc"} eq "customer" ? "customer" : "vendor"; + my $vc_id = $self->{"${vc}_id"}; + + if ($params{"contacts"}) { + $self->get_contacts($dbh, $vc_id, $params{"contacts"}); + } + + if ($params{"shipto"}) { + # get shipping addresses + $query = + qq|SELECT s.shipto_id,s.shiptoname,s.shiptodepartment_1 | . + qq|FROM shipto s | . + qq|WHERE s.trans_id = ?|; + $sth = $dbh->prepare($query); + $sth->execute($vc_id) || $self->dberror($query . " ($vc_id)"); + + $self->{$params{"shipto"}} = []; + while ($ref = $sth->fetchrow_hashref(NAME_lc)) { + push(@{ $self->{$params{"shipto"}} }, $ref); + } + $sth->finish; + } + + if ($params{"projects"} || $params{"all_projects"}) { + $self->get_projects($dbh, $params{"all_projects"} ? + $params{"all_projects"} : $params{"projects"}, + $params{"all_projects"} ? 1 : 0); + } + + $dbh->disconnect(); + + $main::lxdebug->leave_sub(); +} + # this sub gets the id and name from $table sub get_name { $main::lxdebug->enter_sub();