X-Git-Url: http://wagnertech.de/git?p=kivitendo-erp.git;a=blobdiff_plain;f=SL%2FUSTVA.pm;fp=SL%2FUSTVA.pm;h=ee2d21f78252815877764987ca08a37feaaca98e;hp=a80372b282e179c36a511d809df1f90dd4720b05;hb=53593baa211863fbf66540cf1bcc36c8fb37257f;hpb=deb4d2dbb676d7d6f69dfe7815d6e0cb09bd4a44 diff --git a/SL/USTVA.pm b/SL/USTVA.pm index a80372b28..ee2d21f78 100644 --- a/SL/USTVA.pm +++ b/SL/USTVA.pm @@ -18,39 +18,58 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1335, USA. #====================================================================== # Utilities for ustva #===================================================================== package USTVA; +use Carp; +use Data::Dumper; use List::Util qw(first); +use SL::DB; use SL::DBUtils; +use SL::DB::Default; +use SL::DB::Finanzamt; +use SL::Locale::String qw(t8); use utf8; use strict; my @tax_office_information = ( - { 'id' => 8, 'name' => 'Baden-Württemberg', 'taxbird_nr' => '0', 'elster_format' => 'FF/BBB/UUUUP', }, - { 'id' => 9, 'name' => 'Bayern', 'taxbird_nr' => '1', 'elster_format' => 'FFF/BBB/UUUUP', }, - { 'id' => 11, 'name' => 'Berlin', 'taxbird_nr' => '2', 'elster_format' => 'FF/BBB/UUUUP', }, - { 'id' => 12, 'name' => 'Brandenburg', 'taxbird_nr' => '3', 'elster_format' => 'FFF/BBB/UUUUP', }, - { 'id' => 4, 'name' => 'Bremen', 'taxbird_nr' => '4', 'elster_format' => 'FF BBB UUUUP', }, - { 'id' => 2, 'name' => 'Hamburg', 'taxbird_nr' => '5', 'elster_format' => 'FF/BBB/UUUUP', }, - { 'id' => 6, 'name' => 'Hessen', 'taxbird_nr' => '6', 'elster_format' => '0FF BBB UUUUP', }, - { 'id' => 13, 'name' => 'Mecklenburg-Vorpommern', 'taxbird_nr' => '7', 'elster_format' => 'FFF/BBB/UUUUP', }, - { 'id' => 3, 'name' => 'Niedersachsen', 'taxbird_nr' => '8', 'elster_format' => 'FF/BBB/UUUUP', }, - { 'id' => 5, 'name' => 'Nordrhein-Westfalen', 'taxbird_nr' => '9', 'elster_format' => 'FFF/BBBB/UUUP', }, - { 'id' => 7, 'name' => 'Rheinland-Pfalz', 'taxbird_nr' => '10', 'elster_format' => 'FF/BBB/UUUU/P', }, - { 'id' => 10, 'name' => 'Saarland', 'taxbird_nr' => '11', 'elster_format' => 'FFF/BBB/UUUUP', }, - { 'id' => 14, 'name' => 'Sachsen', 'taxbird_nr' => '12', 'elster_format' => 'FFF/BBB/UUUUP', }, - { 'id' => 15, 'name' => 'Sachsen-Anhalt', 'taxbird_nr' => '13', 'elster_format' => 'FFF/BBB/UUUUP', }, - { 'id' => 1, 'name' => 'Schleswig-Holstein', 'taxbird_nr' => '14', 'elster_format' => 'FF BBB UUUUP', }, - { 'id' => 16, 'name' => 'Thüringen', 'taxbird_nr' => '15', 'elster_format' => 'FFF/BBB/UUUUP', }, + { 'id' => 8, 'name' => 'Baden-Württemberg', 'taxbird_nr' => '1', 'elster_format' => 'FFBBB/UUUUP', }, + { 'id' => 9, 'name' => 'Bayern', 'taxbird_nr' => '2', 'elster_format' => 'FFF/BBB/UUUUP', }, + { 'id' => 11, 'name' => 'Berlin', 'taxbird_nr' => '3', 'elster_format' => 'FF/BBB/UUUUP', }, + { 'id' => 12, 'name' => 'Brandenburg', 'taxbird_nr' => '4', 'elster_format' => 'FFF/BBB/UUUUP', }, + { 'id' => 4, 'name' => 'Bremen', 'taxbird_nr' => '5', 'elster_format' => 'FF BBB UUUUP', }, + { 'id' => 2, 'name' => 'Hamburg', 'taxbird_nr' => '6', 'elster_format' => 'FF/BBB/UUUUP', }, + { 'id' => 6, 'name' => 'Hessen', 'taxbird_nr' => '7', 'elster_format' => '0FF BBB UUUUP', }, + { 'id' => 13, 'name' => 'Mecklenburg-Vorpommern', 'taxbird_nr' => '8', 'elster_format' => 'FFF/BBB/UUUUP', }, + { 'id' => 3, 'name' => 'Niedersachsen', 'taxbird_nr' => '9', 'elster_format' => 'FF/BBB/UUUUP', }, + { 'id' => 5, 'name' => 'Nordrhein-Westfalen', 'taxbird_nr' => '10', 'elster_format' => 'FFF/BBBB/UUUP', }, + { 'id' => 7, 'name' => 'Rheinland-Pfalz', 'taxbird_nr' => '11', 'elster_format' => 'FF/BBB/UUUUP', }, + { 'id' => 10, 'name' => 'Saarland', 'taxbird_nr' => '12', 'elster_format' => 'FFF/BBB/UUUUP', }, + { 'id' => 14, 'name' => 'Sachsen', 'taxbird_nr' => '13', 'elster_format' => 'FFF/BBB/UUUUP', }, + { 'id' => 15, 'name' => 'Sachsen-Anhalt', 'taxbird_nr' => '14', 'elster_format' => 'FFF/BBB/UUUUP', }, + { 'id' => 1, 'name' => 'Schleswig-Holstein', 'taxbird_nr' => '15', 'elster_format' => 'FF BBB UUUUP', }, + { 'id' => 16, 'name' => 'Thüringen', 'taxbird_nr' => '16', 'elster_format' => 'FFF/BBB/UUUUP', }, ); + my @fiamt_config = qw(taxnumber fa_bufa_nr fa_dauerfrist fa_steuerberater_city fa_steuerberater_name + fa_steuerberater_street fa_steuerberater_tel fa_voranmeld); + + my @fiamt_finanzamt = qw( + fa_land_nr fa_bufa_nr fa_name fa_strasse + fa_plz fa_ort fa_telefon fa_fax + fa_plz_grosskunden fa_plz_postfach fa_postfach + fa_blz_1 fa_kontonummer_1 fa_bankbezeichnung_1 + fa_blz_2 fa_kontonummer_2 fa_bankbezeichnung_2 fa_oeffnungszeiten + fa_email fa_internet); + + sub new { my $type = shift; @@ -114,63 +133,25 @@ sub report_variables { $where_dcp |; - my $dbh = $form->dbconnect($myconfig); - my $sth = $dbh->prepare($query); - - $sth->execute() || $form->dberror($query); - my @positions; - while ( my $row_ref = $sth->fetchrow_arrayref() ) { - push @positions, @$row_ref; # Copy the array contents - } + SL::DB->client->with_transaction(sub { + my $dbh = SL::DB->client->dbh; + my $sth = $dbh->prepare($query); - $sth->finish; + $sth->execute() || $form->dberror($query); - $dbh->disconnect; + while ( my $row_ref = $sth->fetchrow_arrayref() ) { + push @positions, @$row_ref; # Copy the array contents + } - return @positions; + $sth->finish; + 1; + }) or do { die SL::DB->client->error }; + return @positions; } -sub create_steuernummer { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - - our ($elster_FFFF); - - my $part = $form->{part}; - my $patterncount = $form->{patterncount}; - my $delimiter = $form->{delimiter}; - my $elster_pattern = $form->{elster_pattern}; - - # rebuild steuernummer and elstersteuernummer - # es gibt eine gespeicherte steuernummer $form->{steuernummer} - # und die parts und delimiter - - my $h = 0; - my $i = 0; - - my $steuernummer_new = $part; - my $elstersteuernummer_new = $elster_FFFF; - $elstersteuernummer_new .= '0'; - - for ($h = 1; $h < $patterncount; $h++) { - $steuernummer_new .= qq|$delimiter|; - for ($i = 1; $i <= length($elster_pattern); $i++) { - $steuernummer_new .= $form->{"part_$h\_$i"}; - $elstersteuernummer_new .= $form->{"part_$h\_$i"}; - } - } - if ($form->{steuernummer} ne $steuernummer_new) { - $form->{steuernummer} = $steuernummer_new; - $form->{elstersteuernummer} = $elstersteuernummer_new; - $form->{steuernummer_new} = $steuernummer_new; - } - $main::lxdebug->leave_sub(); - return ($steuernummer_new, $elstersteuernummer_new); -} sub steuernummer_input { $main::lxdebug->enter_sub(); @@ -191,16 +172,27 @@ sub steuernummer_input { #Pattern description Elstersteuernummer #split the pattern - my $tax_office = first { $_->{name} eq $elster_land } @{ $self->{tax_office_information} }; + my $tax_office = first { $_->{id} eq $elster_land } @{ $self->{tax_office_information} }; my $elster_pattern = $tax_office->{elster_format}; + # $::lxdebug->message(LXDebug->DEBUG2, "stnr=".$stnr." elster_FFFF=".$elster_FFFF. + # " pattern=".$elster_pattern." land=".$elster_land); my @elster_pattern = split(' ', $elster_pattern); - my $delimiter = ' '; + my $delimiter1 = ' '; + my $delimiter2 = ' '; my $patterncount = @elster_pattern; if ($patterncount < 2) { @elster_pattern = (); @elster_pattern = split('/', $elster_pattern); - $delimiter = '/'; + $delimiter1 = '/'; + $delimiter2 = '/'; $patterncount = @elster_pattern; + if ($patterncount < 2) { + @elster_pattern = (); + @elster_pattern = split(' ', $elster_pattern); + $delimiter1 = ' '; + $delimiter2 = ' '; + $patterncount = @elster_pattern; + } } # no we have an array of patternparts and a delimiter @@ -208,6 +200,7 @@ sub steuernummer_input { $steuernummer_input .= qq||; my $part = ''; +# $::lxdebug->message(LXDebug->DEBUG2, "pattern0=".$elster_pattern[0]); SWITCH: { $elster_pattern[0] eq 'FFF' && do { $part = substr($elster_FFFF, 1, 4); @@ -219,6 +212,15 @@ SWITCH: { $steuernummer_input .= qq|$part|; last SWITCH; }; + $elster_pattern[0] eq 'FFBBB' && do { + $part = substr($elster_FFFF, 2, 4); + $steuernummer_input .= qq|$part|; + $delimiter1 = ''; + $patterncount++ ; + # Sonderfall BW + @elster_pattern = ('FF','BBB','UUUUP'); + last SWITCH; + }; $elster_pattern[0] eq 'FF' && do { $part = substr($elster_FFFF, 2, 4); $steuernummer_input .= qq|$part|; @@ -231,19 +233,22 @@ SWITCH: { } #now the rest of the Steuernummer ... - $steuernummer_input .= qq||; + $steuernummer_input .= qq||; $steuernummer_input .= qq|\n - + + |; my $k = 0; for (my $h = 1; $h < $patterncount; $h++) { + my $delimiter = ( $h==1?$delimiter1:$delimiter2); $steuernummer_input .= qq| $delimiter \n|; +# $::lxdebug->message(LXDebug->DEBUG2, "pattern[$h]=".$elster_pattern[$h]); for (my $i = 1; $i <= length($elster_pattern[$h]); $i++) { $steuernummer_input .= qq|