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