]> wagnertech.de Git - mfinanz.git/blobdiff - SL/IC.pm
numberwert zu klein, auf 12,5 vergrössert
[mfinanz.git] / SL / IC.pm
index ba3edfabb87c05303e72b20d622f15c927cbb229..880502b9d11057061a5b06af36de3aca1fa1073d 100644 (file)
--- a/SL/IC.pm
+++ b/SL/IC.pm
@@ -38,6 +38,7 @@ use Data::Dumper;
 use List::MoreUtils qw(all);
 use YAML;
 
+use SL::CVar;
 use SL::DBUtils;
 
 sub get_part {
@@ -565,6 +566,11 @@ sub save {
     }
   }
 
+  CVar->save_custom_variables('dbh'       => $dbh,
+                              'module'    => 'IC',
+                              'trans_id'  => $form->{id},
+                              'variables' => $form);
+
   # commit
   my $rc = $dbh->commit;
   $dbh->disconnect;
@@ -866,14 +872,18 @@ sub all_parts {
 
   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};
 
@@ -953,6 +963,15 @@ sub all_parts {
   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);