+
+ return $exchangerate;
+}
+
+sub get_template_language {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig) = @_;
+
+ my $template_code = "";
+
+ if ($self->{language_id}) {
+
+ my $dbh = $self->dbconnect($myconfig);
+
+
+ my $query = qq|SELECT l.template_code FROM language l
+ WHERE l.id = $self->{language_id}|;
+ my $sth = $dbh->prepare($query);
+ $sth->execute || $self->dberror($query);
+
+ ($template_code) = $sth->fetchrow_array;
+ $sth->finish;
+ $dbh->disconnect;
+ }
+
+ $main::lxdebug->leave_sub();
+
+ return $template_code;
+}
+
+sub get_printer_code {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig) = @_;
+
+ my $template_code = "";
+
+ if ($self->{printer_id}) {
+
+ my $dbh = $self->dbconnect($myconfig);
+
+
+ my $query = qq|SELECT p.template_code,p.printer_command FROM printers p
+ WHERE p.id = $self->{printer_id}|;
+ my $sth = $dbh->prepare($query);
+ $sth->execute || $self->dberror($query);
+
+ ($template_code, $self->{printer_command}) = $sth->fetchrow_array;
+ $sth->finish;
+ $dbh->disconnect;
+ }
+
+ $main::lxdebug->leave_sub();
+
+ return $template_code;
+}
+
+sub get_shipto {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig) = @_;
+
+ my $template_code = "";
+
+ if ($self->{shipto_id}) {
+
+ my $dbh = $self->dbconnect($myconfig);
+
+
+ my $query = qq|SELECT s.* FROM shipto s
+ WHERE s.shipto_id = $self->{shipto_id}|;
+ my $sth = $dbh->prepare($query);
+ $sth->execute || $self->dberror($query);
+ $ref = $sth->fetchrow_hashref(NAME_lc);
+ map { $self->{$_} = $ref->{$_} } keys %$ref;
+ $sth->finish;
+ $dbh->disconnect;
+ }
+
+ $main::lxdebug->leave_sub();
+
+}
+
+sub add_shipto {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $dbh, $id, $module) = @_;
+##LINET
+ my $shipto;
+ foreach my $item (
+ qw(name department_1 department_2 street zipcode city country contact phone fax email)
+ ) {
+ if ($self->{"shipto$item"}) {
+ $shipto = 1 if ($self->{$item} ne $self->{"shipto$item"});
+ }
+ $self->{"shipto$item"} =~ s/\'/\'\'/g;
+ }
+ if ($shipto) {
+ if ($self->{shipto_id}) {
+ my $query = qq| UPDATE shipto set
+ shiptoname = '$self->{shiptoname}',
+ shiptodepartment_1 = '$self->{shiptodepartment_1}',
+ shiptodepartment_2 = '$self->{shiptodepartment_2}',
+ shiptostreet = '$self->{shiptostreet}',
+ shiptozipcode = '$self->{shiptozipcode}',
+ shiptocity = '$self->{shiptocity}',
+ shiptocountry = '$self->{shiptocountry}',
+ shiptocontact = '$self->{shiptocontact}',
+ shiptophone = '$self->{shiptophone}',
+ shiptofax = '$self->{shiptofax}',
+ shiptoemail = '$self->{shiptoemail}'
+ WHERE shipto_id = $self->{shipto_id}|;
+ $dbh->do($query) || $self->dberror($query);
+ } else {
+ my $query =
+ qq|INSERT INTO shipto (trans_id, shiptoname, shiptodepartment_1, shiptodepartment_2, shiptostreet,
+ shiptozipcode, shiptocity, shiptocountry, shiptocontact,
+ shiptophone, shiptofax, shiptoemail, module) VALUES ($id,
+ '$self->{shiptoname}', '$self->{shiptodepartment_1}', '$self->{shiptodepartment_2}', '$self->{shiptostreet}',
+ '$self->{shiptozipcode}', '$self->{shiptocity}',
+ '$self->{shiptocountry}', '$self->{shiptocontact}',
+ '$self->{shiptophone}', '$self->{shiptofax}',
+ '$self->{shiptoemail}', '$module')|;
+ $dbh->do($query) || $self->dberror($query);
+ }
+ }
+##/LINET
+ $main::lxdebug->leave_sub();
+}
+
+sub get_employee {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $dbh) = @_;
+
+ my $query = qq|SELECT e.id, e.name FROM employee e
+ WHERE e.login = '$self->{login}'|;
+ my $sth = $dbh->prepare($query);
+ $sth->execute || $self->dberror($query);
+
+ ($self->{employee_id}, $self->{employee}) = $sth->fetchrow_array;
+ $self->{employee_id} *= 1;
+
+ $sth->finish;
+
+ $main::lxdebug->leave_sub();
+}
+
+sub get_duedate {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig) = @_;
+
+ my $dbh = $self->dbconnect($myconfig);
+ my $query = qq|SELECT current_date+terms_netto FROM payment_terms
+ WHERE id = '$self->{payment_id}'|;
+ my $sth = $dbh->prepare($query);
+ $sth->execute || $self->dberror($query);
+
+ ($self->{duedate}) = $sth->fetchrow_array;
+
+ $sth->finish;
+
+ $main::lxdebug->leave_sub();
+}
+
+# get contacts for id, if no contact return {"","","","",""}
+sub _get_contacts {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $dbh, $id, $key) = @_;
+
+ $key = "all_contacts" unless ($key);
+ $self->{$key} = [];
+
+ 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)");
+
+ 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();
+}
+
+sub _get_projects {
+ $main::lxdebug->enter_sub();
+
+ 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 id, projectnumber, description, active | .
+ qq|FROM project | .
+ $where .
+ qq|ORDER BY lower(projectnumber)|;
+ my $sth = $dbh->prepare($query);
+ $sth->execute(@values) ||
+ $self->dberror($query . " (" . join(", ", @values) . ")");
+
+ $self->{$key} = [];
+ while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
+ push(@{ $self->{$key} }, $ref);
+ }
+
+ $sth->finish;
+ $main::lxdebug->leave_sub();
+}
+
+sub _get_shipto {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $dbh, $vc_id, $key) = @_;
+
+ $key = "all_shipto" unless ($key);
+ $self->{$key} = [];
+
+ # get shipping addresses
+ my $query =
+ qq|SELECT s.shipto_id,s.shiptoname,s.shiptodepartment_1 | .
+ qq|FROM shipto s | .
+ qq|WHERE s.trans_id = ?|;
+ my $sth = $dbh->prepare($query);
+ $sth->execute($vc_id) || $self->dberror($query . " ($vc_id)");
+
+ while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
+ push(@{ $self->{$key} }, $ref);
+ }
+ $sth->finish;
+
+ $main::lxdebug->leave_sub();