Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / sql / Pg-upgrade2 / erzeugnisnummern.pl
index 81c0241..8468e69 100644 (file)
@@ -8,20 +8,24 @@ use utf8;
 
 use parent qw(SL::DBUpgrade2::Base);
 
+use SL::DBUtils;
+
 sub run {
   my ($self) = @_;
 
+  if (defined $::form->{upgrade_action} && $::form->{upgrade_action} eq 'filter_parts') {
+    return $self->filter_parts($self);
+  }
+
   if ( $::form->{'continued'} ) {
     my $update_query;
     foreach my $i (1 .. $::form->{rowcount}) {
       $update_query = qq|UPDATE parts SET partnumber = '| . $::form->{"partnumber_$i"} . qq|' WHERE id = | . $::form->{"partid_$i"};
       $self->db_query($update_query);
-      print FH $i;
     }
-    $self->dbh->commit();
   }
 
-  my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id
+  my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id, obsolete
                    FROM parts pa
                    WHERE (SELECT COUNT(*)
                           FROM parts p
@@ -29,14 +33,7 @@ sub run {
                           > 1
                    ORDER BY partnumber;|;
 
-  my $sth = $self->dbh->prepare($query);
-  $sth->execute || $::form->dberror($query);
-
-  $::form->{PARTS} = [];
-  while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
-    map {$ref->{$_} = $::locale->{iconv_utf8}->convert($ref->{$_})} keys %$ref;
-    push @{ $::form->{PARTS} }, $ref;
-  }
+  $::form->{PARTS} = [ selectall_hashref_query($::form, $self->dbh, $query) ];
 
   if ( scalar @{ $::form->{PARTS} } > 0 ) {
     &print_error_message;
@@ -55,4 +52,61 @@ sub print_error_message {
   print $::form->parse_html_template("dbupgrade/erzeugnisnummern");
 }
 
+sub filter_parts {
+  my $self = shift;
+
+  my $where = 'TRUE';
+  my @values;
+
+  if ( $::form->{filter_partnumber} ) {
+    $where .= ' AND partnumber ILIKE ?';
+    push(@values, like( $::form->{filter_partnumber} ));
+  }
+
+  if ($::form->{filter_description}) {
+    $where .= ' AND description ILIKE ?';
+    push(@values, like($::form->{filter_description}));
+  }
+
+  if ($::form->{filter_notes}) {
+    $where .= ' AND notes ILIKE ?';
+    push(@values, like($::form->{filter_notes}));
+  }
+
+  if ($::form->{filter_ean}) {
+    $where .= ' AND ean ILIKE ?';
+    push(@values, like($::form->{filter_ean}));
+  }
+
+  if ($::form->{filter_type} eq 'assembly') {
+    $where .= " AND part_type = 'assembly'";
+  }
+
+  if ($::form->{filter_type} eq 'service') {
+    $where .= " AND part_type = 'service'";
+  }
+
+  if ($::form->{filter_type} eq 'part') {
+    $where .= " AND part_type = 'part'";
+  }
+
+  if ($::form->{filter_obsolete} eq 'obsolete') {
+    $where .= ' AND obsolete';
+  }
+
+  if ($::form->{filter_obsolete} eq 'valid') {
+    $where .= ' AND NOT obsolete';
+  }
+
+  my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id, obsolete
+                 FROM parts
+                 WHERE $where
+                 ORDER BY partnumber|;
+
+  $::form->{ALL_PARTS} = [ selectall_hashref_query($::form, $self->dbh, $query, @values) ];
+
+  print $::form->parse_html_template("dbupgrade/show_partlist");
+  return 2;
+}
+
 1;