9d0894779af25b63d9f00719962bb973b9400c56
[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_template2("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
53   my $query = "SELECT coa FROM defaults";
54   my ($coa) = $dbh->selectrow_array($query);
55
56   return 1 if (grep({ $coa eq $_ } @valid_coas));
57
58   return update_defaults_set_coa("Germany-DATEV-SKR04EU")
59     if (look_for_accno("6595"));
60
61   return update_defaults_set_coa("Germany-DATEV-SKR03EU")
62     if (look_for_accno("2725"));
63
64   return update_defaults_set_coa("Austria")
65     if (look_for_accno("2701"));
66
67   return update_defaults_set_coa("France")
68     if (look_for_accno("131800"));
69
70   return update_defaults_set_coa("Swiss-German")
71     if (look_for_accno("21235"));
72
73   return update_defaults_set_coa($form->{"coa"})
74     if (($form->{"action2"} eq "set_coa") &&
75         grep({ $form->{"coa"} eq $_ } @valid_coas));
76
77   my @coas = map(+{ "name" => $_ }, @valid_coas);
78
79   print($form->parse_html_template2("dbupgrade/coa_guess",
80                                     { "COAS" => \@coas }));
81
82   return 2;
83 }
84
85 return update_guess_chart_of_accounts();