608e44207a625aa2cc04a7e91e7588b2fd24c06a
[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 die("This script cannot be run from the command line.") unless ($main::form);
8
9 sub mydberror {
10   my ($msg) = @_;
11   die($dbup_locale->text("Database update error:") .
12       "<br>$msg<br>" . $DBI::errstr);
13 }
14
15 sub do_query {
16   my ($query, $may_fail) = @_;
17
18   if (!$dbh->do($query)) {
19     mydberror($query) unless ($may_fail);
20     $dbh->rollback();
21     $dbh->begin_work();
22   }
23 }
24
25 sub do_update {
26   my @queries =
27     ("ALTER TABLE ap ADD COLUMN globalproject_id integer;",
28      "ALTER TABLE ap ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);",
29      "ALTER TABLE ar ADD COLUMN globalproject_id integer;",
30      "ALTER TABLE ar ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);",
31      "ALTER TABLE oe ADD COLUMN globalproject_id integer;",
32      "ALTER TABLE oe ADD FOREIGN KEY (globalproject_id) REFERENCES project (id);");
33
34   do_query("ALTER TABLE project ADD PRIMARY KEY (id);", 1);
35   map({ do_query($_, 0); } @queries);
36
37   return 1;
38 }
39
40 return do_update();
41