);
%db_encoding_to_charset = map { $_->{dbencoding}, $_->{charset} } @db_encodings;
+%charset_to_db_encoding = map { $_->{charset}, $_->{dbencoding} } @db_encodings;
use constant DEFAULT_CHARSET => 'ISO-8859-15';
my $dbh = $form->dbconnect($myconfig);
my (@filter_values, $filter);
- if ($form->{"partnumber"}) {
- $filter .= qq| AND (partnumber ILIKE ?)|;
- push(@filter_values, '%' . $form->{"partnumber"} . '%');
+
+ foreach (qw(partnumber description)) {
+ next unless $form->{$_};
+
+ $filter .= qq| AND ($_ ILIKE ?)|;
+ push @filter_values, '%' . $form->{$_} . '%';
}
- if ($form->{"description"}) {
- $filter .= qq| AND (description ILIKE ?)|;
- push(@filter_values, '%' . $form->{"description"} . '%');
+
+ if ($form->{no_assemblies}) {
+ $filter .= qq| AND (NOT COALESCE(assembly, 'f'))|;
}
+
+ if ($form->{no_services}) {
+ $filter .= qq| AND (COALESCE(inventory_accno_id, 0) > 0)|;
+ }
+
substr($filter, 1, 3) = "WHERE" if ($filter);
$order_by =~ s/[^a-zA-Z_]//g;
return $employees;
}
+sub retrieve_customers_or_vendors {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig, $form, $order_by, $order_dir, $is_vendor, $allow_both) = @_;
+
+ my $dbh = $form->dbconnect($myconfig);
+
+ my (@filter_values, $filter);
+ if ($form->{"name"}) {
+ $filter .= " AND (TABLE.name ILIKE ?)";
+ push(@filter_values, '%' . $form->{"name"} . '%');
+ }
+ if (!$form->{"obsolete"}) {
+ $filter .= " AND NOT TABLE.obsolete";
+ }
+ substr($filter, 1, 3) = "WHERE" if ($filter);
+
+ $order_by =~ s/[^a-zA-Z_]//g;
+ $order_dir = $order_dir ? "ASC" : "DESC";
+
+ my (@queries, @query_parameters);
+
+ if ($allow_both || !$is_vendor) {
+ my $c_filter = $filter;
+ $c_filter =~ s/TABLE/c/g;
+ push(@queries, qq|SELECT
+ c.id, c.name, 0 AS customer_is_vendor,
+ c.street, c.zipcode, c.city,
+ ct.cp_greeting, ct.cp_title, ct.cp_givenname, ct.cp_name
+ FROM customer c
+ LEFT JOIN contacts ct ON (c.id = ct.cp_cv_id)
+ $c_filter|);
+ push(@query_parameters, @filter_values);
+ }
+
+ if ($allow_both || $is_vendor) {
+ my $v_filter = $filter;
+ $v_filter =~ s/TABLE/v/g;
+ push(@queries, qq|SELECT
+ v.id, v.name, 1 AS customer_is_vendor,
+ v.street, v.zipcode, v.city,
+ ct.cp_greeting, ct.cp_title, ct.cp_givenname, ct.cp_name
+ FROM vendor v
+ LEFT JOIN contacts ct ON (v.id = ct.cp_cv_id)
+ $v_filter|);
+ push(@query_parameters, @filter_values);
+ }
+
+ my $query = join(" UNION ", @queries) . " ORDER BY $order_by $order_dir";
+ my $sth = $dbh->prepare($query);
+ $sth->execute(@query_parameters) || $form->dberror($query . " (" . join(", ", @query_parameters) . ")");
+ my $customers = [];
+ while (my $ref = $sth->fetchrow_hashref()) {
+ push(@{$customers}, $ref);
+ }
+ $sth->finish();
+ $dbh->disconnect();
+
+ $main::lxdebug->leave_sub();
+
+ return $customers;
+}
+
sub retrieve_delivery_customer {
$main::lxdebug->enter_sub();
}
}
+sub check_params_x {
+ my $params = shift;
+
+ foreach my $key (@_) {
+ if (!exists $params->{$key}) {
+ my $subroutine = (caller(1))[3];
+ $main::form->error($main::locale->text("Missing parameter #1 in call to sub #2.", $key, $subroutine));
+ }
+ }
+}
+
1;