X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FUSTVA.pm;h=6daa0130118c8b055a04d66e6c345c490a2f59e9;hb=fee5532a132c44dcfc1743393cba00c8e3397176;hp=148bf4f46d38f023a805f92ac04d75500776f7cd;hpb=f6c60e9467658c089790836395281ed5729e5305;p=kivitendo-erp.git diff --git a/SL/USTVA.pm b/SL/USTVA.pm index 148bf4f46..6daa01301 100644 --- a/SL/USTVA.pm +++ b/SL/USTVA.pm @@ -1,5 +1,5 @@ #===================================================================== -# Lx-Office ERP +# kivitendo ERP # Copyright (c) 2004 by Udo Spallek, Aachen # # Author: Udo Spallek @@ -25,26 +25,74 @@ package USTVA; +use List::Util qw(first); + use SL::DBUtils; +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', }, + ); + +sub new { + my $type = shift; + + my $self = {}; + + bless $self, $type; + + $self->_init(@_); + + return $self; +} + +sub _init { + my $self = shift; + + $self->{tax_office_information} = []; + + foreach (@tax_office_information) { + my $entry = \%{ $_ }; + $entry->{name} = $::locale->{iconv_utf8}->convert($entry->{name}); + push @{ $self->{tax_office_information} }, $entry; + } +} + sub get_coa { - + my ( $self, $form, $myconfig) = @_; - + my $query = q{ SELECT coa FROM defaults }; - + my $dbh = $form->dbconnect($myconfig); my $sth = $dbh->prepare($query); $sth->execute() || $form->dberror($query); - my ($coa) = selectrow_query($form, $dbh, $query); - + my ($coa) = selectrow_query($form, $dbh, $query); + $sth->finish; $dbh->disconnect; - + $form->{coa} = $coa; $form->{"COA_$coa"} = '1'; - $form->{COA_Germany} = '1' if ( $coa eq 'Germany-DATEV-SKR03EU' or $coa eq 'Germany-DATEV-SKR04EU'); + $form->{COA_Germany} = '1' if ($coa =~ m/^germany/i); return; } @@ -53,57 +101,61 @@ sub get_coa { sub report_variables { # Get all positions for taxreport out of the database # Needs Databaseupdate Pg-upgrade2/USTVA_abstraction.pl - + return unless defined wantarray; - + my ( $self, $arg_ref) = @_; - + my $myconfig = $arg_ref->{myconfig}; my $form = $arg_ref->{form}; my $type = $arg_ref->{type}; # 'paied' || 'received' || '' - my $attribute = $arg_ref->{attribute}; # + my $attribute = $arg_ref->{attribute}; # my $dec_places = (defined $arg_ref->{dec_places}) ? $arg_ref->{dec_places}:undef; - my $where_type = "AND tax.report_headings.type = '$type'" if ( $type ); - my $where_dcp = "AND tax.report_variables.dec_places = '$dec_places'" if ( defined $dec_places ); + my $where_type = $type ? "AND tax.report_headings.type = '$type'" : ''; + my $where_dcp = defined $dec_places ? "AND tax.report_variables.dec_places = '$dec_places'" : ''; my $query = qq| SELECT $attribute - FROM tax.report_variables - LEFT JOIN tax.report_headings + FROM tax.report_variables + LEFT JOIN tax.report_headings ON (tax.report_variables.heading_id = tax.report_headings.id) - WHERE 1=1 + WHERE 1=1 $where_type - $where_dcp + $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 } - + $sth->finish; - + $dbh->disconnect; - + return @positions; - + } sub create_steuernummer { $main::lxdebug->enter_sub(); - $part = $form->{part}; - $patterncount = $form->{patterncount}; - $delimiter = $form->{delimiter}; - $elster_pattern = $form->{elster_pattern}; + 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} @@ -112,9 +164,9 @@ sub create_steuernummer { my $h = 0; my $i = 0; - $steuernummer_new = $part; - $elstersteuernummer_new = $elster_FFFF; - $elstersteuernummer_new .= '0'; + my $steuernummer_new = $part; + my $elstersteuernummer_new = $elster_FFFF; + $elstersteuernummer_new .= '0'; for ($h = 1; $h < $patterncount; $h++) { $steuernummer_new .= qq|$delimiter|; @@ -136,9 +188,10 @@ sub steuernummer_input { $main::lxdebug->enter_sub(); my ($self, $elsterland, $elsterFFFF, $steuernummer) = @_; + our ($elster_FFFF, $elster_land); my $steuernummer_input = ''; - + $elster_land = $elsterland; $elster_FFFF = $elsterFFFF; $steuernummer = '0000000000' if ($steuernummer eq ''); @@ -148,27 +201,10 @@ sub steuernummer_input { $stnr =~ s/\D+//g; #Pattern description Elstersteuernummer - my %elster_STNRformat = ( - 'Mecklenburg Vorpommern' => 'FFF/BBB/UUUUP', # '/' 3 - 'Hessen' => '0FF BBB UUUUP', # ' ' 3 - 'Nordrhein Westfalen' => 'FFF/BBBB/UUUP', # '/' 3 - 'Schleswig Holstein' => 'FF BBB UUUUP', # ' ' 2 - 'Berlin' => 'FF/BBB/UUUUP', # '/' 3 - 'Thüringen' => 'FFF/BBB/UUUUP', # '/' 3 - 'Sachsen' => 'FFF/BBB/UUUUP', # '/' 3 - 'Hamburg' => 'FF/BBB/UUUUP', # '/' 3 - 'Baden Würtemberg' => 'FF/BBB/UUUUP', # '/' 2 - 'Sachsen Anhalt' => 'FFF/BBB/UUUUP', # '/' 3 - 'Saarland' => 'FFF/BBB/UUUUP', # '/' 3 - 'Bremen' => 'FF BBB UUUUP', # ' ' 3 - 'Bayern' => 'FFF/BBB/UUUUP', # '/' 3 - 'Rheinland Pfalz' => 'FF/BBB/UUUU/P', # '/' 4 - 'Niedersachsen' => 'FF/BBB/UUUUP', # '/' 3 - 'Brandenburg' => 'FFF/BBB/UUUUP', # '/' 3 - ); #split the pattern - my $elster_pattern = $elster_STNRformat{$elster_land}; + my $tax_office = first { $_->{name} eq $elster_land } @{ $self->{tax_office_information} }; + my $elster_pattern = $tax_office->{elster_format}; my @elster_pattern = split(' ', $elster_pattern); my $delimiter = ' '; my $patterncount = @elster_pattern; @@ -236,9 +272,9 @@ SWITCH: { $steuernummer_input .= qq|\n|; } } - + $main::lxdebug->leave_sub(); - + return $steuernummer_input; } @@ -247,25 +283,19 @@ sub fa_auswahl { # use SL::Form; - # Referenz wird übergeben, hash of hash wird nicht - # in neues Hash kopiert, sondern direkt über die Referenz verändert - # Prototyp für diese Konstruktion + # Referenz wird übergeben, hash of hash wird nicht + # in neues Hash kopiert, sondern direkt über die Referenz verändert + # Prototyp für diese Konstruktion my ($self, $land, $elsterFFFF, $elster_init) = @_; - + my $terminal = ''; my $FFFF = $elsterFFFF; my $ffff = ''; my $checked = ''; $checked = 'checked' if ($elsterFFFF eq '' and $land eq ''); + my %elster_land_fa; - #if ($ENV{HTTP_USER_AGENT} =~ /(mozilla|opera|w3m)/i){ - #$terminal='mozilla'; - #} elsif ($ENV{HTTP_USER_AGENT} =~ /(links|lynx)/i){ - #$terminal = 'lynx'; - #} - - #if ( $terminal eq 'mozilla' or $terminal eq 'js' ) { my $fa_auswahl = qq|