+
+ if ($params{"printers"}) {
+ $self->_get_printers($dbh, $params{"printers"});
+ }
+
+ if ($params{"languages"}) {
+ $self->_get_languages($dbh, $params{"languages"});
+ }
+
+ if ($params{"charts"}) {
+ $self->_get_charts($dbh, $params{"charts"});
+ }
+
+ if ($params{"taxcharts"}) {
+ $self->_get_taxcharts($dbh, $params{"taxcharts"});
+ }
+
+ if ($params{"taxzones"}) {
+ $self->_get_taxzones($dbh, $params{"taxzones"});
+ }
+
+ if ($params{"employees"}) {
+ $self->_get_employees($dbh, $params{"employees"});
+ }
+
+ if ($params{"business_types"}) {
+ $self->_get_business_types($dbh, $params{"business_types"});
+ }
+
+ if ($params{"dunning_configs"}) {
+ $self->_get_dunning_configs($dbh, $params{"dunning_configs"});
+ }
+
+ if($params{"currencies"}) {
+ $self->_get_currencies($dbh, $params{"currencies"});
+ }
+
+ if($params{"customers"}) {
+ $self->_get_customers($dbh, $params{"customers"});
+ }
+
+ $dbh->disconnect();
+
+ $main::lxdebug->leave_sub();
+}
+
+# this sub gets the id and name from $table
+sub get_name {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig, $table) = @_;
+
+ # connect to database
+ my $dbh = $self->dbconnect($myconfig);
+
+ $table = $table eq "customer" ? "customer" : "vendor";
+ my $arap = $self->{arap} eq "ar" ? "ar" : "ap";
+
+ my ($query, @values);
+
+ if (!$self->{openinvoices}) {
+ my $where;
+ if ($self->{customernumber} ne "") {
+ $where = qq|(vc.customernumber ILIKE ?)|;
+ push(@values, '%' . $self->{customernumber} . '%');
+ } else {
+ $where = qq|(vc.name ILIKE ?)|;
+ push(@values, '%' . $self->{$table} . '%');
+ }
+
+ $query =
+ qq~SELECT vc.id, vc.name,
+ vc.street || ' ' || vc.zipcode || ' ' || vc.city || ' ' || vc.country AS address
+ FROM $table vc
+ WHERE $where AND (NOT vc.obsolete)
+ ORDER BY vc.name~;
+ } else {
+ $query =
+ qq~SELECT DISTINCT vc.id, vc.name,
+ vc.street || ' ' || vc.zipcode || ' ' || vc.city || ' ' || vc.country AS address
+ FROM $arap a
+ JOIN $table vc ON (a.${table}_id = vc.id)
+ WHERE NOT (a.amount = a.paid) AND (vc.name ILIKE ?)
+ ORDER BY vc.name~;
+ push(@values, '%' . $self->{$table} . '%');
+ }
+
+ $self->{name_list} = selectall_hashref_query($self, $dbh, $query, @values);
+
+ $main::lxdebug->leave_sub();
+
+ return scalar(@{ $self->{name_list} });
+}
+
+# the selection sub is used in the AR, AP, IS, IR and OE module
+#
+sub all_vc {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig, $table, $module) = @_;
+
+ my $ref;
+ my $dbh = $self->dbconnect($myconfig);
+
+ $table = $table eq "customer" ? "customer" : "vendor";
+
+ my $query = qq|SELECT count(*) FROM $table|;
+ my ($count) = selectrow_query($self, $dbh, $query);
+
+ # build selection list
+ if ($count < $myconfig->{vclimit}) {
+ $query = qq|SELECT id, name, salesman_id
+ FROM $table WHERE NOT obsolete
+ ORDER BY name|;
+ $self->{"all_$table"} = selectall_hashref_query($self, $dbh, $query);
+ }
+
+ # get self
+ $self->get_employee($dbh);
+
+ # setup sales contacts
+ $query = qq|SELECT e.id, e.name
+ FROM employee e
+ WHERE (e.sales = '1') AND (NOT e.id = ?)|;
+ $self->{all_employees} = selectall_hashref_query($self, $dbh, $query, $self->{employee_id});
+
+ # this is for self
+ push(@{ $self->{all_employees} },
+ { id => $self->{employee_id},
+ name => $self->{employee} });
+
+ # sort the whole thing
+ @{ $self->{all_employees} } =
+ sort { $a->{name} cmp $b->{name} } @{ $self->{all_employees} };
+
+ if ($module eq 'AR') {
+
+ # prepare query for departments
+ $query = qq|SELECT id, description
+ FROM department
+ WHERE role = 'P'
+ ORDER BY description|;
+
+ } else {
+ $query = qq|SELECT id, description
+ FROM department
+ ORDER BY description|;
+ }
+
+ $self->{all_departments} = selectall_hashref_query($self, $dbh, $query);
+
+ # get languages
+ $query = qq|SELECT id, description
+ FROM language
+ ORDER BY id|;
+
+ $self->{languages} = selectall_hashref_query($self, $dbh, $query);
+
+ # get printer
+ $query = qq|SELECT printer_description, id
+ FROM printers
+ ORDER BY printer_description|;
+
+ $self->{printers} = selectall_hashref_query($self, $dbh, $query);
+
+ # get payment terms
+ $query = qq|SELECT id, description
+ FROM payment_terms
+ ORDER BY sortkey|;
+
+ $self->{payment_terms} = selectall_hashref_query($self, $dbh, $query);
+
+ $dbh->disconnect;
+
+ $main::lxdebug->leave_sub();
+}
+
+sub language_payment {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig) = @_;
+
+ my $dbh = $self->dbconnect($myconfig);
+ # get languages
+ my $query = qq|SELECT id, description
+ FROM language
+ ORDER BY id|;
+
+ $self->{languages} = selectall_hashref_query($self, $dbh, $query);
+
+ # get printer
+ $query = qq|SELECT printer_description, id
+ FROM printers
+ ORDER BY printer_description|;
+
+ $self->{printers} = selectall_hashref_query($self, $dbh, $query);
+
+ # get payment terms
+ $query = qq|SELECT id, description
+ FROM payment_terms
+ ORDER BY sortkey|;
+
+ $self->{payment_terms} = selectall_hashref_query($self, $dbh, $query);
+
+ # get buchungsgruppen
+ $query = qq|SELECT id, description
+ FROM buchungsgruppen|;
+
+ $self->{BUCHUNGSGRUPPEN} = selectall_hashref_query($self, $dbh, $query);
+
+ $dbh->disconnect;
+ $main::lxdebug->leave_sub();
+}
+
+# this is only used for reports
+sub all_departments {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig, $table) = @_;
+
+ my $dbh = $self->dbconnect($myconfig);
+ my $where;
+
+ if ($table eq 'customer') {
+ $where = "WHERE role = 'P' ";
+ }
+
+ my $query = qq|SELECT id, description
+ FROM department
+ $where
+ ORDER BY description|;
+ $self->{all_departments} = selectall_hashref_query($self, $dbh, $query);
+
+ delete($self->{all_departments}) unless (@{ $self->{all_departments} });