Projekt

Allgemein

Profil

Herunterladen (2,89 KB) Statistiken
| Zweig: | Markierung: | Revision:
607a8079 Niclas Zimmermann
# @tag: erzeugnisnummern
# @description: Erzeugnisnummern und Artikelnummern sollen eindeutig sein.
# @depends: release_3_0_0
347f2cff Moritz Bunkus
package SL::DBUpgrade2::erzeugnisnummern;
607a8079 Niclas Zimmermann
use strict;
347f2cff Moritz Bunkus
use utf8;
607a8079 Niclas Zimmermann
347f2cff Moritz Bunkus
use parent qw(SL::DBUpgrade2::Base);
607a8079 Niclas Zimmermann
ac3ca512 Moritz Bunkus
use SL::DBUtils;

347f2cff Moritz Bunkus
sub run {
my ($self) = @_;
607a8079 Niclas Zimmermann
bfdfc9ee Sven Schöling
if (defined $::form->{upgrade_action} && $::form->{upgrade_action} eq 'filter_parts') {
48452323 Niclas Zimmermann
return $self->filter_parts($self);
}

347f2cff Moritz Bunkus
if ( $::form->{'continued'} ) {
f41e5b6e Niclas Zimmermann
my $update_query;
347f2cff Moritz Bunkus
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);
f41e5b6e Niclas Zimmermann
}
}

ac3ca512 Moritz Bunkus
my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id, obsolete
607a8079 Niclas Zimmermann
FROM parts pa
WHERE (SELECT COUNT(*)
FROM parts p
WHERE p.partnumber=pa.partnumber)
> 1
ORDER BY partnumber;|;

ac3ca512 Moritz Bunkus
$::form->{PARTS} = [ selectall_hashref_query($::form, $self->dbh, $query) ];
607a8079 Niclas Zimmermann
347f2cff Moritz Bunkus
if ( scalar @{ $::form->{PARTS} } > 0 ) {
607a8079 Niclas Zimmermann
&print_error_message;
f41e5b6e Niclas Zimmermann
return 2;
607a8079 Niclas Zimmermann
}

$query = qq|ALTER TABLE parts ADD UNIQUE (partnumber)|;
347f2cff Moritz Bunkus
$self->db_query($query);
607a8079 Niclas Zimmermann
$query = qq|ALTER TABLE defaults ADD assemblynumber TEXT|;
347f2cff Moritz Bunkus
$self->db_query($query);
607a8079 Niclas Zimmermann
return 1;
347f2cff Moritz Bunkus
} # end run
607a8079 Niclas Zimmermann
sub print_error_message {
347f2cff Moritz Bunkus
print $::form->parse_html_template("dbupgrade/erzeugnisnummern");
607a8079 Niclas Zimmermann
}

48452323 Niclas Zimmermann
sub filter_parts {
my $self = shift;

my $where = 'TRUE';
my @values;

if ( $::form->{filter_partnumber} ) {
$where .= ' AND partnumber ILIKE ?';
bed19453 Moritz Bunkus
push(@values, like( $::form->{filter_partnumber} ));
48452323 Niclas Zimmermann
}

if ($::form->{filter_description}) {
$where .= ' AND description ILIKE ?';
bed19453 Moritz Bunkus
push(@values, like($::form->{filter_description}));
48452323 Niclas Zimmermann
}

if ($::form->{filter_notes}) {
$where .= ' AND notes ILIKE ?';
bed19453 Moritz Bunkus
push(@values, like($::form->{filter_notes}));
48452323 Niclas Zimmermann
}

if ($::form->{filter_ean}) {
$where .= ' AND ean ILIKE ?';
bed19453 Moritz Bunkus
push(@values, like($::form->{filter_ean}));
48452323 Niclas Zimmermann
}

if ($::form->{filter_type} eq 'assembly') {
98b64fe1 Geoffrey Richardson
$where .= " AND part_type = 'assembly'";
48452323 Niclas Zimmermann
}

if ($::form->{filter_type} eq 'service') {
98b64fe1 Geoffrey Richardson
$where .= " AND part_type = 'service'";
48452323 Niclas Zimmermann
}

if ($::form->{filter_type} eq 'part') {
98b64fe1 Geoffrey Richardson
$where .= " AND part_type = 'part'";
48452323 Niclas Zimmermann
}

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;
}

347f2cff Moritz Bunkus
1;