X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=sql%2FPg-upgrade2%2Ferzeugnisnummern.pl;h=8468e6922e3e8fbe29241d26d3a33aba36964f92;hb=53593baa211863fbf66540cf1bcc36c8fb37257f;hp=11ba2ef842a96a73d0d6da6aa9373115949d1165;hpb=607a807999fdcdbe8c15e43dd124fbe27b749651;p=kivitendo-erp.git diff --git a/sql/Pg-upgrade2/erzeugnisnummern.pl b/sql/Pg-upgrade2/erzeugnisnummern.pl index 11ba2ef84..8468e6922 100644 --- a/sql/Pg-upgrade2/erzeugnisnummern.pl +++ b/sql/Pg-upgrade2/erzeugnisnummern.pl @@ -1,31 +1,31 @@ # @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:") . "
$msg
" . $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 @@ -33,30 +33,80 @@ sub do_update { > 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;