|
# @tag: erzeugnisnummern
|
|
# @description: Erzeugnisnummern und Artikelnummern sollen eindeutig sein.
|
|
# @depends: release_3_0_0
|
|
# @charset: utf-8
|
|
|
|
use utf8;
|
|
use strict;
|
|
use SL::Locale;
|
|
|
|
die("This script cannot be run from the command line.") unless ($main::form);
|
|
|
|
sub mydberror {
|
|
my ($msg) = @_;
|
|
die($dbup_locale->text("Database update error:") . "<br>$msg<br>" . $DBI::errstr);
|
|
}
|
|
|
|
sub do_query {
|
|
my ($query, $may_fail) = @_;
|
|
|
|
if (!$dbh->do($query)) {
|
|
mydberror($query) unless ($may_fail);
|
|
$dbh->rollback();
|
|
$dbh->begin_work();
|
|
}
|
|
}
|
|
|
|
sub do_update {
|
|
my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id
|
|
FROM parts pa
|
|
WHERE (SELECT COUNT(*)
|
|
FROM parts p
|
|
WHERE p.partnumber=pa.partnumber)
|
|
> 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;
|
|
}
|
|
|
|
if ( scalar @{ $main::form->{PARTS} } > 0 ) {
|
|
&print_error_message;
|
|
return 0;
|
|
}
|
|
|
|
$query = qq|ALTER TABLE parts ADD UNIQUE (partnumber)|;
|
|
do_query($query);
|
|
|
|
$query = qq|ALTER TABLE defaults ADD assemblynumber TEXT|;
|
|
do_query($query);
|
|
return 1;
|
|
}; # end do_update
|
|
|
|
|
|
sub print_error_message {
|
|
print $main::form->parse_html_template("dbupgrade/erzeugnisnummern");
|
|
}
|
|
|
|
return do_update();
|