kivitendo/sql/Pg-upgrade2/erzeugnisnummern.pl @ c2230797
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 | |||
347f2cff | Moritz Bunkus | sub run {
|
||
my ($self) = @_;
|
||||
607a8079 | Niclas Zimmermann | |||
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 | print FH $i;
|
||
}
|
||||
347f2cff | Moritz Bunkus | $self->dbh->commit();
|
||
f41e5b6e | Niclas Zimmermann | }
|
||
my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id
|
||||
607a8079 | Niclas Zimmermann | FROM parts pa
|
||
WHERE (SELECT COUNT(*)
|
||||
FROM parts p
|
||||
WHERE p.partnumber=pa.partnumber)
|
||||
> 1
|
||||
ORDER BY partnumber;|;
|
||||
347f2cff | Moritz Bunkus | my $sth = $self->dbh->prepare($query);
|
||
$sth->execute || $::form->dberror($query);
|
||||
607a8079 | Niclas Zimmermann | |||
347f2cff | Moritz Bunkus | $::form->{PARTS} = [];
|
||
607a8079 | Niclas Zimmermann | while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
|
||
f41e5b6e | Niclas Zimmermann | map {$ref->{$_} = $::locale->{iconv_utf8}->convert($ref->{$_})} keys %$ref;
|
||
347f2cff | Moritz Bunkus | push @{ $::form->{PARTS} }, $ref;
|
||
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 | }
|
||
347f2cff | Moritz Bunkus | 1;
|