Loeschen von Drafts flexibler.
[kivitendo-erp.git] / bin / mozilla / ustva.pl
index daecb8d..6814926 100644 (file)
@@ -535,7 +535,12 @@ sub generate_ustva {
 
   # init some form vars
   my @anmeldungszeitraum =
-    qw('0401' '0402' '0403' '0404' '0405' '0405' '0406' '0407' '0408' '0409' '0410' '0411' '0412' '0441' '0442' '0443' '0444');
+    qw('0401' '0402' '0403' 
+       '0404' '0405' '0406' 
+       '0407' '0408' '0409' 
+       '0410' '0411' '0412' 
+       '0441' '0442' '0443' '0444');
+
   foreach my $item (@anmeldungszeitraum) {
     $form->{$item} = "";
   }
@@ -662,7 +667,8 @@ sub generate_ustva {
       };
     }
 
-
+  # Kontrollvariable für die Templates 
+  $form->{'year2007'} = ($form->{year} >= 2007 ) ? "1":"0";
 
 
   # Get the USTVA
@@ -738,12 +744,20 @@ sub generate_ustva {
   # Outputformat specific customisation's
   #
 
-  my @category_cent = qw(511 861 36 80 971 931 98 96 53 74
-    85 65 66 61 62 67 63 64 59 69 39 83
-    Z43 Z45 Z53 Z62 Z65 Z67);
+  my @category_cent = qw(
+    511 861 36   80   971  931  98   96   53   74
+    85  65  66   61   62   67   63   64   59   69 
+    39  83  811  891  Z43  Z45  Z53  Z62  Z65  Z67
+    
+  );
 
-  my @category_euro = qw(41 44 49 43 48 51 86 35 77 76 91 97 93
-    95 94 42 60 45 52 73 84);
+  my @category_euro = qw(
+    41 44 49 43 48 51 86 35 77 76 91 89
+    97 93 95 94 42 60 45 52 73 84 81 
+  );
+  
+  $form->{id} = [];
+  $form->{amount} = [];
 
   if ( $form->{format} eq 'pdf' or $form->{format} eq 'postscript') {
 
@@ -825,10 +839,31 @@ sub generate_ustva {
     # Re-set Numberformat
     $myconfig{numberformat} = $temp_numberformat;
 
-  }
 
-  elsif ( $form->{format} eq 'elstertaxbird' ) {
+    # 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}}, "$kennziffer"); 
+      }
+      push(@{ $form->{amount}}, $form->{$kennziffer});
+    }    
+
+
+  } elsif ( $form->{format} eq 'elstertaxbird' ) {
 
+    # Define serveral filenames
     $form->{IN} = 'taxbird.txb';
 
     $form->{attachment_filename} = "USTVA-" . $form->{period} 
@@ -836,6 +871,10 @@ sub generate_ustva {
     
     $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',
@@ -847,62 +886,6 @@ sub generate_ustva {
       foreach my $quarter ( keys %periods ) {
         $form->{taxbird_period} = $periods{$quarter} if ( $form->{period} eq $quarter);
       }
-      
-      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 );
-      }
-      
-
-      
-      $form->{co_zip} = $form->{co_city};
-      $form->{co_zip} =~ s/\D//g;
-      $form->{co_city} =~ s/\d//g;
-      $form->{co_city} =~ s/^\s//g;
-      
-      ($form->{co_phone_prefix}, $form->{co_phone}) = split("-", $form->{tel});
-      $form->{co_phone_prefix} =~ s/\s//g;
-      $form->{co_phone} =~ s/\s//g;
-      
-       $form->{taxbird_steuernummer} = $form->{steuernummer};
-#      $form->{taxbird_steuernummer} =~ s/\D//g;
-      $form->{taxbird_steuernummer} =~ s/\///; # ersten Querstrich ersetzen
-      
-      # Numberformatting for Taxbird
-
-      my $temp_numberformat = $myconfig{numberformat};
-      # Numberformat must be '1000.00' for Taxbird ?!
-
-      $myconfig{numberformat} = '1000.00';
-
-      foreach my $number (@category_cent) {
-        $form->{$number} = ( $form->{$number} !=0 ) ? $form->format_amount(\%myconfig, $form->{$number}, '2', '') : '';
-      }
-      
-      foreach my $number (@category_euro) {
-        $form->{$number} = ( $form->{$number} !=0 ) ? $form->format_amount(\%myconfig, $form->{$number}, '0', '') : '';
-      }
-      # Re-set Numberformat
-      $myconfig{numberformat} = $temp_numberformat;
-      
     } elsif ($form->{period} =~ /^\d+$/ ) {
       $form->{period} =~ s/^0//g;
       my $period = $form->{period};
@@ -915,6 +898,87 @@ sub generate_ustva {
       exit(0);
     }
     
+    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 );
+    }
+    
+    $form->{co_zip} = $form->{co_city};
+    $form->{co_zip} =~ s/\D//g;
+    $form->{co_city} =~ s/\d//g;
+    $form->{co_city} =~ s/^\s//g;
+    
+    ($form->{co_phone_prefix}, $form->{co_phone}) = split("-", $form->{tel});
+    $form->{co_phone_prefix} =~ s/\s//g;
+    $form->{co_phone} =~ s/\s//g;
+    
+     $form->{taxbird_steuernummer} = $form->{steuernummer};
+    #      $form->{taxbird_steuernummer} =~ s/\D//g;
+    $form->{taxbird_steuernummer} =~ s/\///; # ersten Querstrich ersetzen
+    
+    # Numberformatting for Taxbird
+    my $temp_numberformat = $myconfig{numberformat};
+    # Numberformat must be '1000,00' for Taxbird ?!
+    $myconfig{numberformat} = '1000,00';
+    foreach my $number (@category_cent) {
+      $form->{$number} = ( $form->{$number} !=0 ) ? $form->format_amount(\%myconfig, $form->{$number}, '2', '') : '';
+    }
+    
+    foreach my $number (@category_euro) {
+      $form->{$number} = ( $form->{$number} !=0 ) ? $form->format_amount(\%myconfig, $form->{$number}, '0', '') : '';
+    }
+    # Re-set Numberformat
+    $myconfig{numberformat} = $temp_numberformat;
+    
+    # push Kennziffern to <%foreach Array fo easyer
+    # output in xml format. Thx to Moritz.
+    my %taxbird_id_for = (
+         
+        '511'  =>  'Kz51-calc',
+        '861'  =>  'Kz86-calc',
+        '971'  =>  'Kz97-calc',
+        '931'  =>  'Kz93-calc',
+        '811'  =>  'Kz81-calc',
+        '891'  =>  'Kz89-calc',
+        'Z45'  =>  'uebertrag',
+        'Z53'  =>  'ust-sum',
+        'Z62'  =>  'ust-minus-vost',
+        'Z65'  =>  'ust-sum+69',
+        'Z67'  =>  'ust-vz',
+    );
+          
+    
+    for my $kennziffer (@category_cent, @category_euro) {
+
+      next if ($kennziffer eq 'Z43');
+
+      if ($form->{$kennziffer} != 0){
+        if (defined $taxbird_id_for{$kennziffer}) {
+          push(@{ $form->{id}}, $taxbird_id_for{$kennziffer});
+        } else {
+          push(@{ $form->{id}}, "Kz$kennziffer"); 
+        }
+        push(@{ $form->{amount}}, $form->{$kennziffer});
+      }
+    }    
+    
   } elsif ( $form->{format} eq '' ){ # No format error.
     $form->header;
     USTVA::error( $locale->text('Application Error. No Format given' ) . "!");
@@ -926,6 +990,7 @@ sub generate_ustva {
     exit(0);
   }
 
+  
   if ( $form->{period} eq '13' and $form->{format} ne 'html') {
     $form->header;
     USTVA::info(
@@ -1252,11 +1317,12 @@ sub save {
   $form->{FA_Internet} =~ s/^http:\/\///;
   $form->{FA_Internet} = 'http://' . $form->{FA_Internet};
 
-  my @config = qw(elster elsterland elstersteuernummer steuernummer
-    elsteramt elsterFFFF 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
+  my @config = qw(
+    elster              elsterland            elstersteuernummer  steuernummer
+    elsteramt           elsterFFFF            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_oertlich FA_Oeffnungszeiten
     FA_Email FA_Internet FA_voranmeld method FA_steuerberater_name
     FA_steuerberater_street FA_steuerberater_city FA_steuerberater_tel