use List::MoreUtils qw(all);
use YAML;
+use SL::CVar;
use SL::DBUtils;
sub get_part {
}
}
+ CVar->save_custom_variables('dbh' => $dbh,
+ 'module' => 'IC',
+ 'trans_id' => $form->{id},
+ 'variables' => $form);
+
# commit
my $rc = $dbh->commit;
$dbh->disconnect;
my $sort_order = ($form->{revers} ? ' DESC' : ' ASC');
+ my $order_clause = " ORDER BY $form->{sort} " . ($form->{revers} ? 'DESC' : 'ASC');
+
# special case: sorting by partnumber
# since partnumbers are expected to be prefixed integers, a special sorting is implemented sorting first lexically by prefix and then by suffix.
# and yes, that expression is designed to hold that array of regexes only once, so the map is kinda messy, sorry about that.
# ToDO: implement proper functional sorting
- $form->{sort} = join ', ', map { push @select_tokens, $_; ($table_prefix{$_} = "substring(partnumber,'[") . $_ } qw|^[:digit:]]+') [:digit:]]+')::INTEGER|
- if $form->{sort} eq 'partnumber';
+ # Nette Idee von Sven, gibt aber Probleme wenn die Artikelnummern groesser als 32bit sind. Korrekt waere es, dass Sort-Natural-Modul zu nehmen
+ # Ich lass das mal hier drin, damit die Idee erhalten bleibt jb 28.5.2009 bug 1018
+ #$form->{sort} = join ', ', map { push @select_tokens, $_; ($table_prefix{$_} = "substring(partnumber,'[") . $_ } qw|^[:digit:]]+') [:digit:]]+')::INTEGER|
+ # if $form->{sort} eq 'partnumber';
- my $order_clause = " ORDER BY $form->{sort} $sort_order";
+ #my $order_clause = " ORDER BY $form->{sort} $sort_order";
my $limit_clause = " LIMIT 100" if $form->{top100};
my $where_clause = join ' AND ', map { "($_)" } @where_tokens;
my $group_clause = ' GROUP BY ' . join ', ', map { ($table_prefix{$_} || "p.") . $_ } @group_tokens if scalar @group_tokens;
+ my ($cvar_where, @cvar_values) = CVar->build_filter_query('module' => 'IC',
+ 'trans_id_field' => 'p.id',
+ 'filter' => $form);
+
+ if ($cvar_where) {
+ $where_clause .= qq| AND ($cvar_where)|;
+ push @bind_vars, @cvar_values;
+ }
+
my $query = qq|SELECT DISTINCT $select_clause FROM parts p $join_clause WHERE $where_clause $group_clause $order_clause $limit_clause|;
$form->{parts} = selectall_hashref_query($form, $dbh, $query, @bind_vars);