Die Funktion Form::parse_html_template2() in Form::parse_html_template() umbenannt...
[kivitendo-erp.git] / sql / Pg-upgrade / Pg-upgrade-2.2.0.28-2.2.0.29.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 ($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 fix_skr03 {
19   my $query;
20
21   $query =
22     "UPDATE chart " .
23     "SET link = 'AP_amount:IC_cogs', pos_ustva = 91 " .
24     "WHERE accno = '3559'";
25   $dbh->do($query) || mydberror($query);
26
27   $dbh->commit();
28   $dbh->begin_work();
29 }
30
31 sub fix_skr04 {
32   my $query;
33
34   $query =
35     "UPDATE chart " .
36     "SET link = 'AP_amount:IC_cogs', pos_ustva = 91 " .
37     "WHERE accno = '5559'";
38   $dbh->do($query) || mydberror($query);
39
40   $dbh->commit();
41   $dbh->begin_work();
42 }
43
44 sub create_standard_buchungsgruppen_skr03 {
45   my $query;
46
47   $query = "SELECT COUNT(*) FROM buchungsgruppen " .
48     "WHERE description = 'Standard 16%'";
49   my ($count) = $dbh->selectrow_array($query);
50
51   if (!$count) {
52     $query =
53       "INSERT INTO buchungsgruppen " .
54       "(description, inventory_accno_id, " .
55       " income_accno_id_0, expense_accno_id_0, " .
56       " income_accno_id_1, expense_accno_id_1, " .
57       " income_accno_id_2, expense_accno_id_2, " .
58       " income_accno_id_3, expense_accno_id_3) " .
59       "VALUES " .
60       "('Standard 16%', " .
61       # 3980: Bestand Waren
62       " (SELECT id FROM chart WHERE accno = '3980'), " .
63       # 8400: Erlöse 16% USt.
64       # 3400: Wareneingang 16% Vorsteuer
65       " (SELECT id FROM chart WHERE accno = '8400'), " .
66       " (SELECT id FROM chart WHERE accno = '3400'), " .
67       # 8320: Erlöse aus im and.EG-Land steuerpfl.Lieferungen
68       # 3550: Steuerfreier innergem.Erwerb
69       " (SELECT id FROM chart WHERE accno = '8320'), " .
70       " (SELECT id FROM chart WHERE accno = '3550'), " .
71       # 8315: Erlös Inland stpfl.EG-Lieferung 16%
72       # 3425: Innergem.Erwerb 16% VorSt u. Ust
73       " (SELECT id FROM chart WHERE accno = '8315'), " .
74       " (SELECT id FROM chart WHERE accno = '3425'), " .
75       # 8120: Steuerfreie Umsätze §4Nr.1a UstG
76       # 3559: Steuerfreie Einfuhren
77       " (SELECT id FROM chart WHERE accno = '8120'), " .
78       " (SELECT id FROM chart WHERE accno = '3559'))";
79     $dbh->do($query) || mydberror($query);
80   }
81
82   $query = "SELECT COUNT(*) FROM buchungsgruppen " .
83     "WHERE description = 'Standard 7%'";
84   my ($count) = $dbh->selectrow_array($query);
85
86   if (!$count) {
87     $query =
88       "INSERT INTO buchungsgruppen " .
89       "(description, inventory_accno_id, " .
90       " income_accno_id_0, expense_accno_id_0, " .
91       " income_accno_id_1, expense_accno_id_1, " .
92       " income_accno_id_2, expense_accno_id_2, " .
93       " income_accno_id_3, expense_accno_id_3) " .
94       "VALUES " .
95       "('Standard 7%', " .
96       # 3980: Bestand Waren
97       " (SELECT id FROM chart WHERE accno = '3980'), " .
98       # 8300: Erlöse 7% USt.
99       # 3300: Wareneingang 7% Vorsteuer
100       " (SELECT id FROM chart WHERE accno = '8300'), " .
101       " (SELECT id FROM chart WHERE accno = '3300'), " .
102       # 8125: Steuerfrei innergem. Lieferungen §41bUStG
103       # 3550: Steuerfreier innergem.Erwerb
104       " (SELECT id FROM chart WHERE accno = '8125'), " .
105       " (SELECT id FROM chart WHERE accno = '3550'), " .
106       # 8310: Erlöse Inland stpfl. EG-Lieferung7%
107       # 3420: Innergemein.Erwerb 7% VorSt u. Ust
108       " (SELECT id FROM chart WHERE accno = '8310'), " .
109       " (SELECT id FROM chart WHERE accno = '3420'), " .
110       # 8120: Steuerfreie Umsätze §4Nr.1a UstG
111       # 3559: Steuerfreie Einfuhren
112       " (SELECT id FROM chart WHERE accno = '8120'), " .
113       " (SELECT id FROM chart WHERE accno = '3559'))";
114     $dbh->do($query) || mydberror($query);
115   }
116
117   return 1;
118 }
119
120 sub create_standard_buchungsgruppen_skr04 {
121   my $query;
122
123   $query = "SELECT COUNT(*) FROM buchungsgruppen " .
124     "WHERE description = 'Standard 16%'";
125   my ($count) = $dbh->selectrow_array($query);
126
127   if (!$count) {
128     $query =
129       "INSERT INTO buchungsgruppen " .
130       "(description, inventory_accno_id, " .
131       " income_accno_id_0, expense_accno_id_0, " .
132       " income_accno_id_1, expense_accno_id_1, " .
133       " income_accno_id_2, expense_accno_id_2, " .
134       " income_accno_id_3, expense_accno_id_3) " .
135       "VALUES " .
136       "('Standard 16%', " .
137       # 1140: Bestand Waren
138       " (SELECT id FROM chart WHERE accno = '1140'), " .
139       # 4400: Erlöse 16% USt.
140       # 5400: Wareneingang 16% Vorsteuer
141       " (SELECT id FROM chart WHERE accno = '4400'), " .
142       " (SELECT id FROM chart WHERE accno = '5400'), " .
143       # 4125: Steuerfrei innergem. Lieferungen §41bUStG
144       # 5550: Steuerfreier innergem.Erwerb
145       " (SELECT id FROM chart WHERE accno = '4125'), " .
146       " (SELECT id FROM chart WHERE accno = '5550'), " .
147       # 4315: Erlös Inland stpfl.EG-Lieferung 16%
148       # 5425: Innergem.Erwerb 16% VorSt u. Ust
149       " (SELECT id FROM chart WHERE accno = '4315'), " .
150       " (SELECT id FROM chart WHERE accno = '5425'), " .
151       # 4150: Sonstige steuerfreie Umsätze §42-7UStG
152       # 5559: Steuerfreie Einfuhren
153       " (SELECT id FROM chart WHERE accno = '4150'), " .
154       " (SELECT id FROM chart WHERE accno = '5559'))";
155     $dbh->do($query) || mydberror($query);
156   }
157
158   $query = "SELECT COUNT(*) FROM buchungsgruppen " .
159     "WHERE description = 'Standard 7%'";
160   my ($count) = $dbh->selectrow_array($query);
161
162   if (!$count) {
163     $query =
164       "INSERT INTO buchungsgruppen " .
165       "(description, inventory_accno_id, " .
166       " income_accno_id_0, expense_accno_id_0, " .
167       " income_accno_id_1, expense_accno_id_1, " .
168       " income_accno_id_2, expense_accno_id_2, " .
169       " income_accno_id_3, expense_accno_id_3) " .
170       "VALUES " .
171       "('Standard 7%', " .
172       # 1140: Bestand Waren
173       " (SELECT id FROM chart WHERE accno = '1140'), " .
174       # 4300: Erlöse 7%USt
175       # 5300: Wareneingang 7% Vorsteuer
176       " (SELECT id FROM chart WHERE accno = '4300'), " .
177       " (SELECT id FROM chart WHERE accno = '5300'), " .
178       # 4125: Steuerfrei innergem. Lieferungen §41bUStG
179       # 5550: Steuerfreier innergem.Erwerb
180       " (SELECT id FROM chart WHERE accno = '4125'), " .
181       " (SELECT id FROM chart WHERE accno = '5550'), " .
182       # 4310: Erlöse Inland stpfl. EG-Lieferung7%
183       # 5420: Innergemein.Erwerb 7% VorSt u. Ust
184       " (SELECT id FROM chart WHERE accno = '4310'), " .
185       " (SELECT id FROM chart WHERE accno = '5420'), " .
186       # 4150: Sonstige steuerfreie Umsätze §42-7UStG
187       # 5559; Steuerfreie Einfuhren
188       " (SELECT id FROM chart WHERE accno = '4150'), " .
189       " (SELECT id FROM chart WHERE accno = '5559'))";
190     $dbh->do($query) || mydberror($query);
191   }
192
193   return 1;
194 }
195
196 sub create_standard_buchungsgruppen {
197   my $form = $main::form;
198
199   my $query = "SELECT coa FROM defaults";
200   my ($coa) = $dbh->selectrow_array($query);
201
202   if ($coa eq "Germany-DATEV-SKR03EU") {
203     fix_skr03();
204     return create_standard_buchungsgruppen_skr03();
205
206   } elsif ($coa eq "Germany-DATEV-SKR04EU") {
207     fix_skr04();
208     return create_standard_buchungsgruppen_skr04();
209   }
210
211   print($form->parse_html_template("dbupgrade/std_buchungsgruppen_unknown_coa", { "coa" => $coa }));
212
213   return 1;
214 }
215
216 return create_standard_buchungsgruppen();