Verlagern der USTVA Kennziffern auf einen zentralen Datenbankeintrag.
[kivitendo-erp.git] / sql / Pg-upgrade2 / USTVA_abstraction.pl
1 # @tag: USTVA_abstraction
2 # @description: Abstraktion der USTVA Report Daten. Dies vereinfacht die Integration von Steuerberichten anderer Nationen in Lx-Office.
3 # @depends: release_2_4_2
4
5 # Abstraktionlayer between general Taxreports and USTVA
6 # Most of the data and structures are not used yet, but maybe in future, 
7 # if there are other international customizings are requested...
8
9 ###################
10
11 die("This script cannot be run from the command line.") unless ($main::form);
12
13 sub do_query {
14   my ($query, $may_fail) = @_;
15
16   if (!$dbh->do($query)) {
17     mydberror($query) unless ($may_fail);
18     $dbh->rollback();
19     $dbh->begin_work();
20   }
21 }
22
23
24 sub create_tables {
25
26   # Watch out, SCHEMAs are new in Lx!
27   my @queries = ( # Watch out, it's a normal array!
28       q{ CREATE SCHEMA tax;
29       },
30       q{ CREATE TABLE tax.report_categorys (
31            id              integer NOT NULL PRIMARY KEY,
32            description     text,
33            subdescription  text
34          );
35       },              
36       q{ CREATE TABLE tax.report_headings (
37            id              integer NOT NULL PRIMARY KEY,
38            category_id     integer NOT NULL REFERENCES tax.report_categorys(id),
39            type            text,
40            description     text,
41            subdescription  text
42          );
43       },
44       q{ CREATE TABLE tax.report_variables (
45            id            integer NOT NULL PRIMARY KEY,
46            position      text NOT NULL,
47            heading_id    integer REFERENCES tax.report_headings(id),
48            description   text,
49            taxbase       text,
50            dec_places    text,
51            valid_from    date
52          );
53       },
54   );
55
56   do_query("DROP SCHEMA tax CASCADE;", 1);
57   map({ do_query($_, 0); } @queries);
58   
59   return 1;
60   
61 }
62
63 sub do_copy {
64
65   my @copy_statements = (
66     "COPY tax.report_categorys FROM STDIN WITH DELIMITER ';'",
67     "COPY tax.report_headings FROM STDIN WITH DELIMITER ';'", 
68     "COPY tax.report_variables FROM STDIN WITH DELIMITER ';'",
69   );
70
71   my @copy_data = (
72     [ "0;;",
73       "1;Lieferungen und sonstige Leistungen;(einschließlich unentgeltlicher Wertabgaben)",
74       "2;Innergemeinschaftliche Erwerbe;",
75       "3;Ergänzende Angaben zu Umsätzen;",
76       "99;Summe;",
77     ],
78     ["0;0;;;",
79      "1;1;received;Steuerfreie Umsätze mit Vorsteuerabzug;",
80      "2;1;recieved;Steuerfreie Umsätze ohne Vorsteuerabzug;",
81      "3;1;recieved;Steuerpflichtige Umsätze;(Lieferungen und sonstige Leistungen einschl. unentgeltlicher Wertabgaben)",
82      "4;2;recieved;Steuerfreie innergemeinschaftliche Erwerbe;",
83      "5;2;recieved;Steuerpflichtige innergemeinschaftliche Erwerbe;",
84      "6;3;recieved;Umsätze, für die als Leistungsempfänger die Steuer nach § 13b Abs. 2 UStG geschuldet wird;",
85      "66;3;recieved;;",
86      "7;3;paied;Abziehbare Vorsteuerbeträge;",
87      "8;3;paied;Andere Steuerbeträge;",
88      "99;99;;Summe;",
89     ],
90     ["0;keine;0;< < < keine UStVa Position > > >;;;19700101",
91      "1;41;1;Innergemeinschaftliche Lieferungen (§ 4 Nr. 1 Buchst. b UStG) an Abnehmer mit USt-IdNr.;0;0;19700101",
92      "2;44;1;neuer Fahrzeuge an Abnehmer ohne USt-IdNr.;0;0;19700101",
93      "3;49;1;neuer Fahrzeuge außerhalb eines Unternehmens (§ 2a UStG);0;0;19700101",
94      "4;43;1;Weitere steuerfreie Umsätze mit Vorsteuerabzug;0;0;19700101",
95      "5;48;2;Umsätze nach § 4 Nr. 8 bis 28 UStG;0;0;19700101",
96      "6;51;3;zum Steuersatz von 16 %;0;0;19700101",
97      "7;511;3;;6;2;19700101",
98      "8;81;3;zum Steuersatz von 19 %;0;0;19700101",
99      "9;811;3;;8;2;19700101",
100      "10;86;3;zum Steuersatz von 7 %;0;0;19700101",
101      "11;861;3;;10;2;19700101",
102      "12;35;3;Umsätze, die anderen Steuersätzen unterliegen;0;0;19700101",
103      "13;36;3;;12;2;19700101",
104      "14;77;3;Lieferungen in das übrige Gemeinschaftsgebiet an Abnehmer mit USt-IdNr.;0;0;19700101",
105      "15;76;3;Umsätze, für die eine Steuer nach § 24 UStG zu entrichten ist;0;0;19700101",
106      "16;80;3;;15;2;19700101",
107      "17;91;4;Erwerbe nach § 4b UStG;0;0;19700101",
108      "18;97;5;zum Steuersatz von 16 %;0;0;19700101",
109      "19;971;5;;18;2;19700101",
110      "20;89;5;zum Steuersatz von 19 %;0;0;19700101",
111      "21;891;5;;20;2;19700101",
112      "22;93;5;zum Steuersatz von 7 %;0;0;19700101",
113      "23;931;5;;22;2;19700101",
114      "24;95;5;zu anderen Steuersätzen;0;0;19700101",
115      "25;98;5;;24;2;19700101",
116      "26;94;5;neuer Fahrzeuge von Lieferern ohne USt-IdNr. zum allgemeinen Steuersatz;0;0;19700101",
117      "27;96;5;;26;2;19700101",
118      "28;42;66;Lieferungen des ersten Abnehmers bei innergemeinschaftlichen Dreiecksgeschäften (§ 25b Abs. 2 UStG);0;0;19700101",
119      "29;60;66;Steuerpflichtige Umsätze im Sinne des § 13b Abs. 1 Satz 1 Nr. 1 bis 5 UStG, für die der Leistungsempfänger die Steuer schuldet;0;0;19700101",
120      "30;45;66;Nicht steuerbare Umsätze (Leistungsort nicht im Inland);0;0;19700101",
121      "31;52;6;Leistungen eines im Ausland ansässigen Unternehmers (§ 13b Abs. 1 Satz 1 Nr. 1 und 5 UStG);0;0;19700101",
122      "32;53;6;;31;2;19700101",
123      "33;73;6;Lieferungen sicherungsübereigneter Gegenstände und Umsätze, die unter das GrEStG fallen (§ 13b Abs. 1 Satz 1 Nr. 2 und 3 UStG);0;0;19700101",
124      "34;74;6;;33;2;19700101",
125      "35;84;6;Bauleistungen eines im Inland ansässigen Unternehmers (§ 13b Abs. 1 Satz 1 Nr. 4 UStG);0;0;19700101",
126      "36;85;6;;35;2;19700101",
127      "37;65;6;Steuer infolge Wechsels der Besteuerungsform sowie Nachsteuer auf versteuerte Anzahlungen u. ä. wegen Steuersatzänderung;;2;19700101",
128      "38;66;7;Vorsteuerbeträge aus Rechnungen von anderen Unternehmern (§ 15 Abs. 1 Satz 1 Nr. 1 UStG), aus Leistungen im Sinne des § 13a Abs. 1 Nr. 6 UStG (§ 15 Abs. 1 Satz 1 Nr. 5 UStG) und aus innergemeinschaftlichen Dreiecksgeschäften (§ 25b Abs. 5 UStG);;2;19700101",
129      "39;61;7;Vorsteuerbeträge aus dem innergemeinschaftlichen Erwerb von Gegenständen (§ 15 Abs. 1 Satz 1 Nr. 3 UStG);;2;19700101",
130      "40;62;7;Entrichtete Einfuhrumsatzsteuer (§ 15 Abs. 1 Satz 1 Nr. 2 UStG);;2;19700101",
131      "41;67;7;Vorsteuerbeträge aus Leistungen im Sinne des § 13b Abs. 1 UStG (§ 15 Abs. 1 Satz 1 Nr. 4 UStG);;2;19700101",
132      "42;63;7;Vorsteuerbeträge, die nach allgemeinen Durchschnittssätzen berechnet sind (§§ 23 und 23a UStG);;2;19700101",
133      "43;64;7;Berichtigung des Vorsteuerabzugs (§ 15a UStG);;2;19700101",
134      "44;59;7;Vorsteuerabzug für innergemeinschaftliche Lieferungen neuer Fahrzeuge außerhalb eines Unternehmens (§ 2a UStG) sowie von Kleinunternehmern im Sinne des § 19 Abs. 1 UStG (§ 15 Abs. 4a UStG);;2;19700101",
135      "45;69;8;in Rechnungen unrichtig oder unberechtigt ausgewiesene Steuerbeträge (§ 14c UStG) sowie Steuerbeträge, die nach § 4 Nr. 4a Satz 1 Buchst. a Satz 2, § 6a Abs. 4 Satz 2, § 17 Abs. 1 Satz 6 oder § 25b Abs. 2 UStG geschuldet werden;;2;19700101",
136      "46;39;8;Anrechnung (Abzug) der festgesetzten Sondervorauszahlung für Dauerfristverlängerung (nur auszufüllen in der letzten Voranmeldung des Besteuerungszeitraums, in der Regel Dezember);;2;19700101",
137   ],
138   );
139
140   for my $statement ( 0 .. $#copy_statements ) {
141
142     do_query($copy_statements[$statement], 0);
143     
144     for my $copy_line ( 1 .. $#{$copy_data[$statement]} ) {
145       #print $copy_data[$statement][$copy_line] . "<br />"
146       $dbh->pg_putline($copy_data[$statement][$copy_line] . "\n");
147     }
148     $dbh->pg_endcopy;
149   }
150   return 1;
151 }
152
153
154 return create_tables() && do_copy();
155