USTVA nur noch für SKR03/SKR04 Hotfix für 19% Buchungen im 16% Zeitraum
[kivitendo-erp.git] / SL / Controller / ODGeierlein.pm
1 package SL::Controller::ODGeierlein;
2
3 use strict;
4 use utf8;
5 use List::Util qw(first);
6
7 use parent qw(SL::Controller::Base);
8
9 use SL::USTVA;
10
11 use Rose::Object::MakeMethods::Generic;
12
13 #
14 # actions
15 #
16
17 sub action_send {
18   $::lxdebug->enter_sub();
19   my ($self) = @_;
20   my $err = '';
21
22   # Aufruf von get_config zum Einlesen der Daten aus Finanzamt und Defaults
23
24   my $ustva = USTVA->new();
25   $ustva->get_config();
26   $ustva->get_finanzamt();
27   $ustva->set_FromTo(\%$::form);
28   $::lxdebug->message($LXDebug::DEBUG2,"fromdate=".$::form->{fromdate}." todate=".$::form->{todate}." meth=".$::form->{method});
29
30   my $tax_office     = first { $_->{id} eq $::form->{fa_land_nr} } @{ $ustva->{tax_office_information} };
31
32   if ( !$::form->{co_zip} ) {
33     $::form->{co_zip} = $::form->{co_city};
34     $::form->{co_zip} =~ s/\D//g;
35     $::form->{co_city} =~ s/\d//g;
36     $::form->{co_city} =~ s/^\s//g;
37   }
38   $::form->{period}=~ s/^0//;
39
40   # Aufbau der Geierlein Parameter
41   my $params=
42     "name = "  .$::form->{company}."\nstrasse = ".$::form->{co_street}.
43     "\nplz = "    .$::form->{co_zip}."\nort = "  .$::form->{co_city}.
44     "\ntelefon = ".$::form->{co_tel}."\nemail = ".$::form->{co_email}.
45     "\nland = ".$tax_office->{taxbird_nr}."\nsteuernummer = ".$::form->{taxnumber}."\njahr = ".$::form->{year}.
46     "\nzeitraum = ".$::form->{period}."\n";
47
48   $::lxdebug->message($LXDebug::DEBUG2,"param1=".$params );
49
50   # USTVA Daten erzeugen
51   # benötigt $form->{fromdate}, $form->{todate} $form->{method}
52   $ustva->ustva(\%::myconfig, \%$::form);
53
54   my @category_cent = $ustva->report_variables({
55     myconfig    => \%::myconfig,
56     form        => $::form,
57     type        => '',
58     attribute   => 'position',
59     dec_places  => '2',
60   });
61
62   #push @category_cent, qw(Z43  Z45  Z53  Z54  Z62  Z65  Z67);
63
64   my @category_euro = $ustva->report_variables({
65     myconfig    => \%::myconfig,
66     form        => $::form,
67     type        => '',
68     attribute   => 'position',
69     dec_places  => '0',
70   });
71
72   # Numberformatting for Geierlein
73   my $temp_numberformat = $::myconfig{numberformat};
74   # Numberformat must be '1000,00' ?!
75   $::myconfig{numberformat} = '1000,00';
76   foreach my $number (@{ $::form->{category_cent} }) {
77     $::form->{$number} = ($::form->{$number} !=0) ? $::form->format_amount(\%::myconfig, $::form->{$number},'2',''):'';
78   }
79
80   foreach my $number (@{ $::form->{category_euro} }) {
81     $::form->{$number} = ($::form->{$number} !=0) ? $::form->format_amount(\%::myconfig, $::form->{$number},'0',''):'';
82   }
83   # Re-set Numberformat
84   $::myconfig{numberformat} = $temp_numberformat;
85
86   # Berichtigte Anmeldung
87   $params .= "kz10 = 1\n" if $::form->{FA_10};
88
89   # Belege (Verträge, Rechnungen, Erläuterungen usw.) werden gesondert eingereicht
90   $params .= "kz22 = 1\n" if $::form->{FA_22};
91
92   # Verrechnung des Erstattungsbetrags erwünscht / Erstattungsbetrag ist abgetreten
93   $params .= "kz29 = 1\n" if $::form->{FA_29};
94
95   # Die Einzugsermächtigung wird ausnahmsweise (z.B. wegen Verrechnungswünschen) für diesen Voranmeldungszeitraum widerrufen.
96   #  Ein ggf. verbleibender Restbetrag ist gesondert zu entrichten.
97   $params .= "kz26 = 1\n" if $::form->{FA_26};
98
99   my @unused_ids = qw(511 861 971 931 Z43 811 891 Z43 Z45 Z53 Z54 Z62 Z65 Z67 83);
100
101   for my $kennziffer (@{$::form->{category_cent}}, @{$::form->{category_euro}}) {
102     $::lxdebug->message($LXDebug::DEBUG2,"kennziffer ".$kennziffer."=".$::form->{$kennziffer});
103
104     next if first { $_ eq $kennziffer } @unused_ids;
105
106     if ($::form->{$kennziffer} != 0) {
107       $params .= "kz".$kennziffer." = ".$::form->{$kennziffer}."\n";
108     }
109   }
110
111   $::lxdebug->message($LXDebug::DEBUG2,"param2=".$params );
112
113
114   $self->js->flash($err?'error':'info',
115                    $err?$err:
116                    $::locale->text('USTVA Data sent to geierlein'));
117   $self->js->run('openGeierlein',$params) if !$err;
118   $::lxdebug->leave_sub();
119   $self->js->render;
120 }
121
122
123
124 #
125 # filters / helpers
126 #
127
128
129 1;