Merge branch 'master' into currency
[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 sub run {
12   my ($self) = @_;
13
14   if ( $::form->{'continued'} ) {
15     my $update_query;
16     foreach my $i (1 .. $::form->{rowcount}) {
17       $update_query = qq|UPDATE parts SET partnumber = '| . $::form->{"partnumber_$i"} . qq|' WHERE id = | . $::form->{"partid_$i"};
18       $self->db_query($update_query);
19       print FH $i;
20     }
21     $self->dbh->commit();
22   }
23
24   my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id
25                    FROM parts pa
26                    WHERE (SELECT COUNT(*)
27                           FROM parts p
28                           WHERE p.partnumber=pa.partnumber)
29                           > 1
30                    ORDER BY partnumber;|;
31
32   my $sth = $self->dbh->prepare($query);
33   $sth->execute || $::form->dberror($query);
34
35   $::form->{PARTS} = [];
36   while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
37     map {$ref->{$_} = $::locale->{iconv_utf8}->convert($ref->{$_})} keys %$ref;
38     push @{ $::form->{PARTS} }, $ref;
39   }
40
41   if ( scalar @{ $::form->{PARTS} } > 0 ) {
42     &print_error_message;
43     return 2;
44   }
45
46   $query = qq|ALTER TABLE parts ADD UNIQUE (partnumber)|;
47   $self->db_query($query);
48
49   $query = qq|ALTER TABLE defaults ADD assemblynumber TEXT|;
50   $self->db_query($query);
51   return 1;
52 } # end run
53
54 sub print_error_message {
55   print $::form->parse_html_template("dbupgrade/erzeugnisnummern");
56 }
57
58 1;