Überflüssige Debugmeldung
[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->{upgrade_action} eq 'filter_parts') {
17     return $self->filter_parts($self);
18   }
19
20   if ( $::form->{'continued'} ) {
21     my $update_query;
22     foreach my $i (1 .. $::form->{rowcount}) {
23       $update_query = qq|UPDATE parts SET partnumber = '| . $::form->{"partnumber_$i"} . qq|' WHERE id = | . $::form->{"partid_$i"};
24       $self->db_query($update_query);
25     }
26     $self->dbh->commit();
27   }
28
29   my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id, obsolete
30                    FROM parts pa
31                    WHERE (SELECT COUNT(*)
32                           FROM parts p
33                           WHERE p.partnumber=pa.partnumber)
34                           > 1
35                    ORDER BY partnumber;|;
36
37   $::form->{PARTS} = [ selectall_hashref_query($::form, $self->dbh, $query) ];
38
39   if ( scalar @{ $::form->{PARTS} } > 0 ) {
40     &print_error_message;
41     return 2;
42   }
43
44   $query = qq|ALTER TABLE parts ADD UNIQUE (partnumber)|;
45   $self->db_query($query);
46
47   $query = qq|ALTER TABLE defaults ADD assemblynumber TEXT|;
48   $self->db_query($query);
49   return 1;
50 } # end run
51
52 sub print_error_message {
53   print $::form->parse_html_template("dbupgrade/erzeugnisnummern");
54 }
55
56 sub filter_parts {
57   my $self = shift;
58
59   my $where = 'TRUE';
60   my @values;
61
62   if ( $::form->{filter_partnumber} ) {
63     $where .= ' AND partnumber ILIKE ?';
64     push(@values, $::form->like( $::form->{filter_partnumber} ));
65   }
66
67   if ($::form->{filter_description}) {
68     $where .= ' AND description ILIKE ?';
69     push(@values, $::form->like($::form->{filter_description}));
70   }
71
72   if ($::form->{filter_notes}) {
73     $where .= ' AND notes ILIKE ?';
74     push(@values, $::form->like($::form->{filter_notes}));
75   }
76
77   if ($::form->{filter_ean}) {
78     $where .= ' AND ean ILIKE ?';
79     push(@values, $::form->like($::form->{filter_ean}));
80   }
81
82   if ($::form->{filter_type} eq 'assembly') {
83     $where .= ' AND assembly';
84   }
85
86   if ($::form->{filter_type} eq 'service') {
87     $where .= ' AND inventory_accno_id IS NULL AND NOT assembly';
88   }
89
90   if ($::form->{filter_type} eq 'part') {
91     $where .= ' AND inventory_accno_id IS NOT NULL';
92     $where .= ' AND NOT assembly';
93   }
94
95   if ($::form->{filter_obsolete} eq 'obsolete') {
96     $where .= ' AND obsolete';
97   }
98
99   if ($::form->{filter_obsolete} eq 'valid') {
100     $where .= ' AND NOT obsolete';
101   }
102
103   my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id, obsolete
104                  FROM parts
105                  WHERE $where
106                  ORDER BY partnumber|;
107
108   $::form->{ALL_PARTS} = [ selectall_hashref_query($::form, $self->dbh, $query, @values) ];
109
110   print $::form->parse_html_template("dbupgrade/show_partlist");
111   return 2;
112 }
113
114 1;