60b4631e78262ea42329aeb0f88356edbb061acd
[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", { "message" => $msg }));
15   return 2;
16 }
17
18 sub update_defaults_add_coa {
19   if ($dbh->do("ALTER TABLE defaults ADD COLUMN coa text")) {
20     $dbh->commit();
21   } else {
22     $dbh->rollback();
23   }
24   $dbh->begin_work();
25 }
26
27 sub update_defaults_set_coa {
28   my ($coa) = @_;
29
30   $dbh->do("UPDATE defaults SET coa = " . $dbh->quote($coa));
31
32   return 1;
33 }
34
35 sub look_for_accno {
36   my ($accno) = @_;
37
38   my ($result) =
39     $dbh->selectrow_array("SELECT COUNT(*) FROM chart WHERE accno = " .
40                           $dbh->quote($accno));
41
42   return $result;
43 }
44
45 sub update_guess_chart_of_accounts {
46   update_defaults_add_coa();
47
48   my $form = $main::form;
49
50   my @valid_coas = map({ s/^sql\///; s/-chart.sql//; $_; } <sql/*-chart.sql>);
51
52   my $query = "SELECT coa FROM defaults";
53   my ($coa) = $dbh->selectrow_array($query);
54
55   return 1 if (grep({ $coa eq $_ } @valid_coas));
56
57   return update_defaults_set_coa("Germany-DATEV-SKR04EU")
58     if (look_for_accno("6595"));
59
60   return update_defaults_set_coa("Germany-DATEV-SKR03EU")
61     if (look_for_accno("2725"));
62
63   return update_defaults_set_coa("Austria")
64     if (look_for_accno("2701"));
65
66   return update_defaults_set_coa("France")
67     if (look_for_accno("131800"));
68
69   return update_defaults_set_coa("Swiss-German")
70     if (look_for_accno("21235"));
71
72   return update_defaults_set_coa($form->{"coa"})
73     if (($form->{"action2"} eq "set_coa") &&
74         grep({ $form->{"coa"} eq $_ } @valid_coas));
75
76   my @coas = map(+{ "name" => $_ }, @valid_coas);
77
78   print($form->parse_html_template("dbupgrade/coa_guess", { "COAS" => \@coas }));
79
80   return 2;
81 }
82
83 return update_guess_chart_of_accounts();