6edd14dc4e109f330a0dac83a81a8231bd18bb70
[kivitendo-erp.git] / sql / Pg-upgrade2 / globalprojectnumber_ap_ar_oe.pl
1 # @tag: globalprojectnumber_ap_ar_oe
2 # @description: Neue Spalte für eine globale Projektnummer in Einkaufs- und Verkaufsbelegen
3 # @depends: release_2_4_1
4
5 use strict;
6
7 # import vars from caller
8 our ($dbup_locale, $dbup_myconfig, $dbh);
9
10 die("This script cannot be run from the command line.") unless ($main::form);
11
12 sub mydberror {
13   my ($msg) = @_;
14   die($dbup_locale->text("Database update error:") .
15       "<br>$msg<br>" . $DBI::errstr);
16 }
17
18 sub do_query {
19   my ($query, $may_fail) = @_;
20
21   if (!$dbh->do($query)) {
22     mydberror($query) unless ($may_fail);
23     $dbh->rollback();
24     $dbh->begin_work();
25   }
26 }
27
28 sub do_update {
29   my @queries =
30     ("ALTER TABLE ap ADD COLUMN globalproject_id integer;",
31      "ALTER TABLE ap ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);",
32      "ALTER TABLE ar ADD COLUMN globalproject_id integer;",
33      "ALTER TABLE ar ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);",
34      "ALTER TABLE oe ADD COLUMN globalproject_id integer;",
35      "ALTER TABLE oe ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);");
36
37   do_query("ALTER TABLE project ADD PRIMARY KEY (id);", 1);
38   map({ do_query($_, 0); } @queries);
39
40   return 1;
41 }
42
43 return do_update();
44