# @tag: erzeugnisnummern
# @description: Erzeugnisnummern und Artikelnummern sollen eindeutig sein.
# @depends: release_3_0_0
-# @charset: utf-8
+package SL::DBUpgrade2::erzeugnisnummern;
-use utf8;
use strict;
-use SL::Locale;
+use utf8;
-die("This script cannot be run from the command line.") unless ($main::form);
+use parent qw(SL::DBUpgrade2::Base);
-sub mydberror {
- my ($msg) = @_;
- die($dbup_locale->text("Database update error:") . "<br>$msg<br>" . $DBI::errstr);
-}
+use SL::DBUtils;
-sub do_query {
- my ($query, $may_fail) = @_;
+sub run {
+ my ($self) = @_;
- if (!$dbh->do($query)) {
- mydberror($query) unless ($may_fail);
- $dbh->rollback();
- $dbh->begin_work();
+ if (defined $::form->{upgrade_action} && $::form->{upgrade_action} eq 'filter_parts') {
+ return $self->filter_parts($self);
}
-}
-sub do_update {
- my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id
+ 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);
+ }
+ }
+
+ my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id, obsolete
FROM parts pa
WHERE (SELECT COUNT(*)
FROM parts p
> 1
ORDER BY partnumber;|;
- my $sth = $dbh->prepare($query);
- $sth->execute || $main::form->dberror($query);
-
- $main::form->{PARTS} = [];
- while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
- push @{ $main::form->{PARTS} }, $ref;
- }
+ $::form->{PARTS} = [ selectall_hashref_query($::form, $self->dbh, $query) ];
- if ( scalar @{ $main::form->{PARTS} } > 0 ) {
+ if ( scalar @{ $::form->{PARTS} } > 0 ) {
&print_error_message;
- return 0;
+ return 2;
}
$query = qq|ALTER TABLE parts ADD UNIQUE (partnumber)|;
- do_query($query);
+ $self->db_query($query);
$query = qq|ALTER TABLE defaults ADD assemblynumber TEXT|;
- do_query($query);
+ $self->db_query($query);
return 1;
-}; # end do_update
-
+} # end run
sub print_error_message {
- print $main::form->parse_html_template("dbupgrade/erzeugnisnummern");
+ 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;
}
-return do_update();
+1;