-
- my %lands = ( # Lx => taxbird # TODO: besser als array...
- 'Baden Würtemberg' => '0',
- 'Bayern' => '1',
- 'Berlin' => '2',
- 'Brandenburg' => '3',
- 'Bremen' => '4',
- 'Hamburg' => '5',
- 'Hessen' => '6',
- 'Mecklenburg Vorpommern' => '7',
- 'Niedersachsen' => '8',
- 'Nordrhein Westfalen' => '9',
- 'Rheinland Pfalz' => '10',
- 'Saarland' => '11',
- 'Sachsen' => '12',
- 'Sachsen Anhalt' => '13',
- 'Schleswig Holstein' => '14',
- 'Thüringen' => '15',
- );
-
- foreach my $land ( keys %lands ){
- $form->{taxbird_land_nr} = $lands{$land} if ($form->{elsterland} eq $land );
+ # Re-set Numberformat
+ $myconfig{numberformat} = $temp_numberformat;
+
+ # push Kennziffern to <%foreach Array fo easyer
+ # output in xml format. Thx to Moritz.
+ my %winston_id_for = (
+ # No Winston remap?!
+ );
+
+ foreach my $kennziffer (@category_cent, @category_euro) {
+
+ next if ( $kennziffer =~ m/Z\d\d/);
+ next if ( $form->{$kennziffer} == 0 );
+
+ if (defined $winston_id_for{$kennziffer} ) {
+ push(@{ $form->{id}}, $winston_id_for{$kennziffer});
+ } else {
+ push(@{ $form->{id}}, "Kz$kennziffer");
+ }
+ push(@{ $form->{amount}}, $form->{$kennziffer});
+ }
+
+ } elsif ( $form->{format} eq 'elstertaxbird' ) {
+
+ # Define serveral filenames
+ $form->{IN} = 'taxbird.txb';
+
+ $form->{attachment_filename} = "USTVA-" . $form->{period}
+ . sprintf("%02d", $form->{year} % 100) . ".txb";
+
+ $form->{attachment_filename} =~ s|.*/||;
+ $form->{tmpfile} = "$userspath/" . $form->{attachment_filename};
+
+ # TODO: set Output to UTF-8 or system Preference
+ #$form->{"iconv"} = Text::Iconv->new($myconfig{dbcharset}, "UTF-8");
+ #my $iconv = $self->{"iconv"};
+ #$iconv->convert($variable);
+ if ($form->{period} =~ /^[4]\d$/ ){
+ my %periods = ( # Lx => taxbird
+ '41' => '12',
+ '42' => '13',
+ '43' => '14',
+ '44' => '15',
+ );
+
+ foreach my $quarter ( keys %periods ) {
+ $form->{taxbird_period} = $periods{$quarter} if ( $form->{period} eq $quarter);
+ }
+ } elsif ($form->{period} =~ /^\d+$/ ) {
+ $form->{period} =~ s/^0//g;
+ my $period = $form->{period};
+ $period * 1;
+ $period--;
+ $form->{taxbird_period} = $period;
+ } else {
+ $form->header;
+ USTVA::error( $locale->text('Wrong Period' ));
+ ::end_of_request();
+ }
+
+ # heuristics for address splitting
+ # lx-office holds the entire address in a single field.
+ # taxbird expects it to be splitted into street, zipcode and city
+ if ($form->{co_street} =~ /\n/) {
+ my $new_co_street;
+ for (split /\n/, $form->{co_street}) {
+ if (/(\d{3,5})\s+(\w+)/) {
+ $form->{co_zip} = $1;
+ $form->{co_city} = $2;
+ } else {
+ $new_co_street .= $_;
+ }
+ }
+ $form->{co_street} = $new_co_street;
+ } else {
+ $form->{co_zip} = $form->{co_city};
+ $form->{co_zip} =~ s/\D//g;
+ $form->{co_city} =~ s/\d//g;
+ $form->{co_city} =~ s/^\s//g;