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