Revision c1d8418b
Von Udo Spallek vor mehr als 17 Jahren hinzugefügt
SL/USTVA.pm | ||
---|---|---|
25 | 25 |
|
26 | 26 |
package USTVA; |
27 | 27 |
|
28 |
sub report_variables { |
|
29 |
# Get all positions for taxreport out of the database |
|
30 |
# Needs Databaseupdate Pg-upgrade2/USTVA_abstraction.pl |
|
31 |
|
|
32 |
return unless defined wantarray; |
|
33 |
|
|
34 |
my ( $self, |
|
35 |
$arg_ref) = @_; |
|
36 |
|
|
37 |
my $myconfig = $arg_ref->{myconfig}; |
|
38 |
my $form = $arg_ref->{form}; |
|
39 |
my $type = $arg_ref->{type}; # 'paied' || 'received' || '' |
|
40 |
my $attribute = $arg_ref->{attribute}; # |
|
41 |
my $dec_places = (defined $arg_ref->{dec_places}) ? $arg_ref->{dec_places}:undef; |
|
42 |
|
|
43 |
my $where_type = "AND tax.report_headings.type = '$type'" if ( $type ); |
|
44 |
my $where_dcp = "AND tax.report_variables.dec_places = '$dec_places'" if ( defined $dec_places ); |
|
45 |
|
|
46 |
my $query = qq| |
|
47 |
SELECT $attribute |
|
48 |
FROM tax.report_variables |
|
49 |
LEFT JOIN tax.report_headings |
|
50 |
ON (tax.report_variables.heading_id = tax.report_headings.id) |
|
51 |
WHERE 1=1 |
|
52 |
$where_type |
|
53 |
$where_dcp |
|
54 |
|; |
|
55 |
|
|
56 |
$main::lxdebug->message(LXDebug::QUERY, "\$query= \n $query\n"); |
|
57 |
|
|
58 |
my $dbh = $form->dbconnect($myconfig); |
|
59 |
my $sth = $dbh->prepare($query); |
|
60 |
|
|
61 |
$sth->execute() || $form->dberror($query); |
|
62 |
|
|
63 |
my @positions; |
|
64 |
|
|
65 |
while ( my $row_ref = $sth->fetchrow_arrayref() ) { |
|
66 |
push @positions, @$row_ref; # Copy the array contents |
|
67 |
} |
|
68 |
|
|
69 |
$sth->finish; |
|
70 |
|
|
71 |
$dbh->disconnect; |
|
72 |
|
|
73 |
return @positions; |
|
74 |
|
|
75 |
} |
|
76 |
|
|
28 | 77 |
sub create_steuernummer { |
29 | 78 |
$main::lxdebug->enter_sub(); |
30 | 79 |
|
... | ... | |
40 | 89 |
my $h = 0; |
41 | 90 |
my $i = 0; |
42 | 91 |
|
43 |
$steuernummer_new = $part; |
|
44 |
$elstersteuernummer_new = $elster_FFFF; |
|
92 |
$steuernummer_new = $part;
|
|
93 |
$elstersteuernummer_new = $elster_FFFF;
|
|
45 | 94 |
$elstersteuernummer_new .= '0'; |
46 | 95 |
|
47 | 96 |
for ($h = 1; $h < $patterncount; $h++) { |
... | ... | |
572 | 621 |
|
573 | 622 |
my $last_period = 0; |
574 | 623 |
my $category = "pos_ustva"; |
575 |
my @category_cent = qw( |
|
576 |
511 861 36 80 971 931 98 96 53 74 |
|
577 |
85 65 66 61 62 67 63 64 59 69 |
|
578 |
39 83 811 891 Z43 Z45 Z53 Z62 Z65 Z67 |
|
579 |
); |
|
580 | 624 |
|
581 |
my @category_euro = qw( |
|
582 |
41 44 49 43 48 51 |
|
583 |
86 35 77 76 91 97 |
|
584 |
93 95 94 42 60 45 |
|
585 |
52 73 84 81 89 |
|
586 |
); |
|
625 |
my @category_cent = USTVA->report_variables({ |
|
626 |
myconfig => $myconfig, |
|
627 |
form => $form, |
|
628 |
type => '', |
|
629 |
attribute => 'position', |
|
630 |
dec_places => '2', |
|
631 |
}); |
|
632 |
|
|
633 |
push @category_cent, qw(83 Z43 Z45 Z53 Z62 Z65 Z67); |
|
634 |
|
|
635 |
my @category_euro = USTVA->report_variables({ |
|
636 |
myconfig => $myconfig, |
|
637 |
form => $form, |
|
638 |
type => '', |
|
639 |
attribute => 'position', |
|
640 |
dec_places => '0', |
|
641 |
}); |
|
642 |
|
|
643 |
push @category_euro, USTVA->report_variables({ |
|
644 |
myconfig => $myconfig, |
|
645 |
form => $form, |
|
646 |
type => '', |
|
647 |
attribute => 'position', |
|
648 |
dec_places => '0', |
|
649 |
}); |
|
587 | 650 |
|
588 | 651 |
$form->{decimalplaces} *= 1; |
589 | 652 |
|
... | ... | |
593 | 656 |
foreach $item (@category_euro) { |
594 | 657 |
$form->{"$item"} = 0; |
595 | 658 |
} |
659 |
my $coa_name = coa_get($dbh); |
|
660 |
$form->{coa} = $coa_name; |
|
661 |
|
|
662 |
# Controlvariable for templates |
|
663 |
$form->{"$coa_name"} = '1'; |
|
596 | 664 |
|
597 |
$form->{coa} = coa_get($dbh); |
|
598 |
$main::lxdebug->message(LXDebug::DEBUG2, "COA: $form->{coa}"); |
|
665 |
$main::lxdebug->message(LXDebug::DEBUG2, "COA: '$form->{coa}', \$form->{$coa_name} = 1"); |
|
599 | 666 |
|
600 | 667 |
&get_accounts_ustva($dbh, $last_period, $form->{fromdate}, $form->{todate}, |
601 | 668 |
$form, $category); |
... | ... | |
843 | 910 |
LEFT JOIN taxkeys tk ON ( |
844 | 911 |
tk.id = ( |
845 | 912 |
SELECT id FROM taxkeys |
846 |
WHERE chart_id=ac.chart_id |
|
913 |
WHERE 1=1 |
|
914 |
AND chart_id=ac.chart_id |
|
847 | 915 |
AND taxkey_id = ac.taxkey |
848 | 916 |
AND startdate <= COALESCE(AP.transdate) |
849 | 917 |
ORDER BY startdate DESC LIMIT 1 |
bin/mozilla/ustva.pl | ||
---|---|---|
754 | 754 |
# Outputformat specific customisation's |
755 | 755 |
# |
756 | 756 |
|
757 |
my @category_cent = qw( |
|
758 |
511 861 36 80 971 931 98 96 53 74 |
|
759 |
85 65 66 61 62 67 63 64 59 69 |
|
760 |
39 83 811 891 Z43 Z45 Z53 Z62 Z65 Z67 |
|
761 |
|
|
762 |
); |
|
763 |
|
|
764 |
my @category_euro = qw( |
|
765 |
41 44 49 43 48 51 86 35 77 76 91 89 |
|
766 |
97 93 95 94 42 60 45 52 73 84 81 |
|
767 |
); |
|
757 |
my @category_cent = USTVA->report_variables({ |
|
758 |
myconfig => \%myconfig, |
|
759 |
form => $form, |
|
760 |
type => '', |
|
761 |
attribute => 'position', |
|
762 |
dec_places => '2', |
|
763 |
}); |
|
768 | 764 |
|
765 |
push @category_cent, qw(83 Z43 Z45 Z53 Z62 Z65 Z67); |
|
766 |
|
|
767 |
my @category_euro = USTVA->report_variables({ |
|
768 |
myconfig => \%myconfig, |
|
769 |
form => $form, |
|
770 |
type => '', |
|
771 |
attribute => 'position', |
|
772 |
dec_places => '0', |
|
773 |
}); |
|
774 |
|
|
769 | 775 |
$form->{id} = []; |
770 | 776 |
$form->{amount} = []; |
771 | 777 |
|
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 |
|
Auch abrufbar als: Unified diff
Verlagern der USTVA Kennziffern auf einen zentralen Datenbankeintrag.
Dies verhindert Probleme, dass manche Kennziffern in einzelnen Ausgabemedien nicht erscheinen, in anderen jedoch schon.
Auch bietet die Verlagerung auf die Datenbank - in einem späteren Schritt - die Abstraktion von Steuerreports auf verschiedene internationale Gegebenheiten.
Zur Vereinfachung habe ich das Schema tax.* eingefuehrt, in dem perspektivisch alle Steuerreport relevanten Tabellen einzug halten koennen.