DB-Upgrade Eindeutige Artikelnummern: Fixes & Spalte "Gültig" anzeigen
[kivitendo-erp.git] / sql / Pg-upgrade2 / erzeugnisnummern.pl
1 # @tag: erzeugnisnummern
2 # @description: Erzeugnisnummern und Artikelnummern sollen eindeutig sein.
3 # @depends: release_3_0_0
4 package SL::DBUpgrade2::erzeugnisnummern;
5
6 use strict;
7 use utf8;
8
9 use parent qw(SL::DBUpgrade2::Base);
10
11 use SL::DBUtils;
12
13 sub run {
14   my ($self) = @_;
15
16   if ( $::form->{'continued'} ) {
17     my $update_query;
18     foreach my $i (1 .. $::form->{rowcount}) {
19       $update_query = qq|UPDATE parts SET partnumber = '| . $::form->{"partnumber_$i"} . qq|' WHERE id = | . $::form->{"partid_$i"};
20       $self->db_query($update_query);
21       print FH $i;
22     }
23     $self->dbh->commit();
24   }
25
26   my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id, obsolete
27                    FROM parts pa
28                    WHERE (SELECT COUNT(*)
29                           FROM parts p
30                           WHERE p.partnumber=pa.partnumber)
31                           > 1
32                    ORDER BY partnumber;|;
33
34   $::form->{PARTS} = [ selectall_hashref_query($::form, $self->dbh, $query) ];
35
36   if ( scalar @{ $::form->{PARTS} } > 0 ) {
37     &print_error_message;
38     return 2;
39   }
40
41   $query = qq|ALTER TABLE parts ADD UNIQUE (partnumber)|;
42   $self->db_query($query);
43
44   $query = qq|ALTER TABLE defaults ADD assemblynumber TEXT|;
45   $self->db_query($query);
46   return 1;
47 } # end run
48
49 sub print_error_message {
50   print $::form->parse_html_template("dbupgrade/erzeugnisnummern");
51 }
52
53 1;