Datenbankupgrade: In der Tabelle defaults wird jetzt auch der verwendete Kontenrahmen...
[kivitendo-erp.git] / sql / Pg-upgrade / Pg-upgrade-2.2.0.27-2.2.0.28.pl
1 #!/usr/bin/perl
2
3 die("This script cannot be run from the command line.") unless ($main::form);
4
5 sub mydberror {
6   my ($dbup_locale, $msg) = @_;
7   die($dbup_locale->text("Database update error:") .
8       "<br>$msg<br>" . $DBI::errstr);
9 }
10
11 sub myshowerror {
12   my ($msg) = @_;
13
14   print($main::form->parse_html_template("dbupgrade/units_error",
15                                          { "message" => $msg }));
16   return 2;
17 }
18
19 sub update_defaults_add_coa {
20   if ($dbh->do("ALTER TABLE defaults ADD COLUMN coa text")) {
21     $dbh->commit();
22   } else {
23     $dbh->rollback();
24   }
25   $dbh->begin_work();
26 }
27
28 sub update_defaults_set_coa {
29   my ($coa) = @_;
30
31   $dbh->do("UPDATE defaults SET coa = " . $dbh->quote($coa));
32
33   return 1;
34 }
35
36 sub look_for_accno {
37   my ($accno) = @_;
38
39   my ($result) =
40     $dbh->selectrow_array("SELECT COUNT(*) FROM chart WHERE accno = " .
41                           $dbh->quote($accno));
42
43   return $result;
44 }
45
46 sub update_guess_chart_of_accounts {
47   update_defaults_add_coa();
48
49   my $form = $main::form;
50
51   my @valid_coas = map({ s/^sql\///; s/-chart.sql//; $_; } <sql/*-chart.sql>);
52   $main::lxdebug->dump(0, "mufti", \@valid_coas);
53
54   my $query = "SELECT coa FROM defaults";
55   my ($coa) = $dbh->selectrow_array($query);
56
57   return 1 if (grep({ $coa eq $_ } @valid_coas));
58
59   return update_defaults_set_coa("Germany-DATEV-SKR04EU")
60     if (look_for_accno("0135"));
61
62   return update_defaults_set_coa("Germany-DATEV-SKR03EU")
63     if (look_for_accno("0027"));
64
65   return update_defaults_set_coa("Austria")
66     if (look_for_accno("0625"));
67
68   return update_defaults_set_coa("France")
69     if (look_for_accno("131800"));
70
71   return update_defaults_set_coa("Swiss-German")
72     if (look_for_accno("21235"));
73
74   return update_defaults_set_coa($form->{"coa"})
75     if (($form->{"action2"} eq "set_coa") &&
76         grep({ $form->{"coa"} eq $_ } @valid_coas));
77
78   my @coas = map(+{ "name" => $_ }, @valid_coas);
79
80   print($form->parse_html_template("dbupgrade/coa_guess",
81                                    { "COAS" => \@coas }));
82
83   return 2;
84 }
85
86 return update_guess_chart_of_accounts();