Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision c1d8418b

Von Udo Spallek vor mehr als 17 Jahren hinzugefügt

  • ID c1d8418b5244d224298431369c69ea971a69f3c2
  • Vorgänger 322b14b7
  • Nachfolger 1c72997a

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.

Unterschiede anzeigen:

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