-sub show_fa_daten {
- $lxdebug->enter_sub();
- my $readonly = $_;
- my $oeffnungszeiten = $form->{FA_Oeffnungszeiten};
- $oeffnungszeiten =~ s/\\\\n/\n/g;
- print qq| <br>
- <fieldset>
- <legend>
- <font size="+1">|
- . $locale->text('Finanzamt') . qq| $form->{FA_Name}</font>
- </legend>
- |;
-
- #print qq|\n<h4>$form->{FA_Ergaenzung_Name} </h4>
- # | if ( $form->{FA_Ergaenzung_Name} );
- print qq|
- <table width="100%" valign="top">
- <tr>
- <td valign="top">
- <br>
- <fieldset>
- <legend>
- <b>| . $locale->text('Address') . qq|</b>
- </legend>
-
- <table width="100%">
- <tr>
- <td>
- | . $locale->text('Finanzamt') . qq|
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <input name="FA_Name" size="40" title="FA_Name" value="$form->{FA_Name}" $readonly>
- <td>
- </tr>
- <tr>
- <td colspan="2">
- <input name="FA_Strasse" size="40" title="FA_Strasse" value="$form->{FA_Strasse}" $readonly>
- </td width="100%">
- </tr>
- <tr>
- <td width="116px">
- <input name="FA_PLZ" size="10" title="FA_PLZ" value="$form->{FA_PLZ}" $readonly>
- </td>
- <td>
- <input name="FA_Ort" size="20" title="FA_Ort" value="$form->{FA_Ort}" $readonly>
- </td>
- </tr>
- </table>
- </fieldset>
- <br>
- <fieldset>
- <legend>
- <b>| . $locale->text('Kontakt') . qq|</b>
- </legend>
- | . $locale->text('Telefon') . qq|<br>
- <input name="FA_Telefon" size="40" title="FA_Telefon" value="$form->{FA_Telefon}" $readonly>
- <br>
- <br>
- | . $locale->text('Fax') . qq|<br>
- <input name="FA_Fax" size="40" title="FA_Fax" value="$form->{FA_Fax}" $readonly>
- <br>
- <br>
- | . $locale->text('Internet') . qq|<br>
- <input name="FA_Email" size="40" title="FA_Email" value="$form->{FA_Email}" $readonly>
- <br>
- <br>
- <input name="FA_Internet" size="40" title="" title="FA_Internet" value="$form->{FA_Internet}" $readonly>
- <br>
- </fieldset>
- </td>
- <td valign="top">
- <br>
- <fieldset>
- <legend>
- <b>| . $locale->text('Öffnungszeiten') . qq|</b>
- </legend>
- <textarea name="FA_Oeffnungszeiten" rows="4" cols="40" $readonly>$oeffnungszeiten</textarea>
- </fieldset>
- <br>
- |;
- my $FA_1 =
- ( $form->{FA_BLZ_1} ne ''
- && $form->{FA_Kontonummer_1} ne ''
- && $form->{FA_Bankbezeichnung_1} ne '');
- my $FA_2 =
- ( $form->{FA_BLZ_2} ne ''
- && $form->{FA_Kontonummer_2} ne ''
- && $form->{FA_Bankbezeichnung_oertlich} ne '');
-
- if ($FA_1 && $FA_2) {
- print qq|
- <fieldset>
- <legend>
- <b>|
- . $locale->text('Bankverbindungen des Finanzamts') . qq|</b>
- <legend>
- <table>
- <tr>
- <td>
- | . $locale->text('Kreditinstitut') . qq|
- <br>
- <input name="FA_Bankbezeichnung_1" size="30" value="$form->{FA_Bankbezeichnung_1}" $readonly>
- <br>
- <br>
- | . $locale->text('Kontonummer') . qq|
- <br>
- <input name="FA_Kontonummer_1" size="15" value="$form->{FA_Kontonummer_1}" $readonly>
- <br>
- <br>
- | . $locale->text('Bankleitzahl') . qq|
- <br>
- <input name="FA_BLZ_1" size="15" value="$form->{FA_BLZ_1}" $readonly>
- </td>
- <td>
- | . $locale->text('Kreditinstitut') . qq|
- <br>
- <input name="FA_Bankbezeichnung_oertlich" size="30" value="$form->{FA_Bankbezeichnung_oertlich}" $readonly>
- <br>
- <br>
- | . $locale->text('Kontonummer') . qq|
- <br>
- <input name="FA_Kontonummer_2" size="15" value="$form->{FA_Kontonummer_2}" $readonly>
- <br>
- <br>
- | . $locale->text('Bankleitzahl') . qq|
- <br>
- <input name="FA_BLZ_2" size="15" value="$form->{FA_BLZ_2}" $readonly>
- </td>
- </tr>
- </table>
- </fieldset>
- |;
- } elsif ($FA_1) {
- print qq|
- <fieldset>
- <legend>
- <b>|
- . $locale->text('Bankverbindung des Finanzamts') . qq|</b>
- <legend>
- | . $locale->text('Kontonummer') . qq|
- <br>
- <input name="FA_Kontonummer_1" size="30" value="$form->{FA_Kontonummer_1}" $readonly>
- <br>
- <br>
- | . $locale->text('Bankleitzahl (BLZ)') . qq|
- <br>
- <input name="FA_BLZ_1" size="15" value="$form->{FA_BLZ_1}" $readonly>
- <br>
- <br>
- | . $locale->text('Kreditinstitut') . qq|
- <br>
- <input name="FA_Bankbezeichnung_1" size="15" value="$form->{FA_Bankbezeichnung_1}" $readonly>
- <br>
- </fieldset>
- |;
- } else {
- print qq|
- <fieldset>
- <legend>
- <b>|
- . $locale->text('Bankverbindung des Finanzamts') . qq|</b>
- <legend>
- | . $locale->text('Kontonummer') . qq|
- <br>
- <input name="FA_Kontonummer_2" size="30" value="$form->{FA_Kontonummer_2}" $readonly>
- <br>
- <br>
- | . $locale->text('Bankleitzahl (BLZ)') . qq|
- <br>
- <input name="FA_BLZ_2" size="15" value="$form->{FA_BLZ_2}" $readonly>
- <br>
- <br>
- | . $locale->text('Kreditinstitut') . qq|
- <br>
- <input name="FA_Bankbezeichnung_oertlich" size="15" value="$form->{FA_Bankbezeichnung_oertlich}" $readonly>
- </fieldset>
- |;
- }
- print qq|
- </td>
- </tr>
- </table>
- </fieldset>
- |;
- $lxdebug->leave_sub();
-}
-
-sub create_winston {
- $lxdebug->enter_sub();
- &get_config($userspath, 'finanzamt.ini');
-
- # There is no generic Linux GNU/GPL solution out for using ELSTER.
- # In lack of availability linux users may use windows pendants. I choose
- # WINSTON, because it's free of coast, it has an API and its tested under
- # Linux using WINE.
- # The author of WINSTON developed some c-code to realize ELSTER under
- # WINDOWS and Linux (http://www.felfri.de/fa_xml/). Next year (2005) I start to
- # develop a server side solution for LX-Office ELSTER under Linux and
- # WINDOWS based on this c-code.
- #
- # You need to download WINSTON from http://www.felfri.de/winston/
- # There (http://www.felfri.de/winston/download.htm) you'll find instructions
- # about WINSTON under Linux WINE
- # More infos about Winstons API: http://www.felfri.de/winston/schnittstellen.htm
- my $azr = '';
- my $file = ''; # Filename for Winstonfile
- $file .= 'U'; # 1. char 'U' = USTVA
-
-SWITCH:
- { # 2. and 3. char 01-12= Month 41-44= Quarter (azr:Abrechnungszeitraum)
- $form->{duetyp} eq "01" && do {
- $azr = "01";
- last SWITCH;
- };
- $form->{duetyp} eq "02" && do {
- $azr = "02";
- last SWITCH;
- };
- $form->{duetyp} eq "03" && do {
- $azr = "03";
- last SWITCH;
- };
- $form->{duetyp} eq "04" && do {
- $azr = "04";
- last SWITCH;
- };
- $form->{duetyp} eq "05" && do {
- $azr = "05";
- last SWITCH;
- };
- $form->{duetyp} eq "06" && do {
- $azr = "06";
- last SWITCH;
- };
- $form->{duetyp} eq "07" && do {
- $azr = "07";
- last SWITCH;
- };
- $form->{duetyp} eq "08" && do {
- $azr = "08";
- last SWITCH;
- };
- $form->{duetyp} eq "09" && do {
- $azr = "09";
- last SWITCH;
- };
- $form->{duetyp} eq "10" && do {
- $azr = "10";
- last SWITCH;
- };
- $form->{duetyp} eq "11" && do {
- $azr = "11";
- last SWITCH;
- };
- $form->{duetyp} eq "12" && do {
- $azr = "12";
- last SWITCH;
- };
- $form->{duetyp} eq "A" && do {
- $azr = "41";
- last SWITCH;
- };
- $form->{duetyp} eq "B" && do {
- $azr = "42";
- last SWITCH;
- };
- $form->{duetyp} eq "C" && do {
- $azr = "43";
- last SWITCH;
- };
- $form->{duetyp} eq "D" && do {
- $azr = "44";
- last SWITCH;
- };
- do {
- $form->error(
- "Ungültiger Anmeldezeitraum.\n
- Sie können für ELSTER nur einen monatlichen oder
- quartalsweisen Anmeldezeitraum auswählen."
- );
- };
- }
-
- $file .= $azr;
-
- #4. and 5. char = year modulo 100
- $file .= sprintf("%02d", $form->{year} % 100);
-
- #6. to 18. char = Elstersteuernummer
- #Beispiel: Steuernummer in Bayern
- #111/222/33334 ergibt für UStVA Jan 2004: U01049111022233334
-
- $file .= $form->{elsterFFFF};
- $file .= $form->{elstersteuernummer};
-
- #file suffix
-
- $file .= '.xml';
- $form->{elsterfile} = $file;
-
- #Calculations
-
- my $k51 =
- sprintf("%d", $form->parse_amount(\%myconfig, $form->{"51"}))
- ; # Umsätze zu 16% USt
- my $k86 =
- sprintf("%d", $form->parse_amount(\%myconfig, $form->{"86"}))
- ; # Umsätze zu 7% USt
- my $k97 =
- sprintf("%d", $form->parse_amount(\%myconfig, $form->{"97"}))
- ; # 16% Steuerpflichtige innergemeinsachftliche Erwerbe
- my $k93 =
- sprintf("%d", $form->parse_amount(\%myconfig, $form->{"93"}))
- ; # 16% Steuerpflichtige innergemeinsachftliche Erwerbe
- my $k94 =
- sprintf("%d", $form->parse_amount(\%myconfig, $form->{"94"}))
- ; # neuer Fahrzeuge von Lieferern
- my $k66 =
- $form->parse_amount(\%myconfig, $form->{"66"}) *
- 100; # Vorsteuer 7% plus 16%
- my $k83 =
- $form->parse_amount(\%myconfig, $form->{"83"}) * 100 ; # Endbetrag
- my $k96 = $form->parse_amount(\%myconfig, $form->{"96"}) * 100; #
- #
- # Now build the xml content
- #
-
- $form->{elster} = qq|<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!-- Diese Datei ist mit Lx-Office $form->{version} generiert -->
-<WinstonAusgang>
- <Formular Typ="UST"></Formular>
- <Ordnungsnummer>$form->{elsterFFFF}$form->{elstersteuernummer}</Ordnungsnummer>
- <AnmeldeJahr>$form->{year}</AnmeldeJahr>
- <AnmeldeZeitraum>$azr</AnmeldeZeitraum>
- |;
-
- $form->{elster} .= qq|<Kennzahl Nr="51">$k51</Kennzahl>\n| if ($k51 ne '0');
- $form->{elster} .= qq|<Kennzahl Nr="86">$k86</Kennzahl>\n| if ($k86 ne '0');
- $form->{elster} .= qq|<Kennzahl Nr="97">$k97</Kennzahl>\n| if ($k97 ne '0');
- $form->{elster} .= qq|<Kennzahl Nr="93">$k93</Kennzahl>\n| if ($k93 ne '0');
- $form->{elster} .= qq|<Kennzahl Nr="94">$k94</Kennzahl>\n| if ($k94 ne '0');
- $form->{elster} .= qq|<Kennzahl Nr="96">$k96</Kennzahl>\n| if ($k96 ne '0');
- $form->{elster} .= qq|<Kennzahl Nr="66">$k66</Kennzahl>\n| if ($k66 ne '0');
- $form->{elster} .= qq|<Kennzahl Nr="83">$k83</Kennzahl>\n| if ($k83 ne '0');
- $form->{elster} .= qq|\n</WinstonAusgang>\n\n|;
-
- #$form->header;
- #print qq|$form->{elsterfile}|;
- #print qq|$form->{elster}|;
- $SIG{INT} = 'IGNORE';
-
- &save_winston;
- $lxdebug->leave_sub();
-}
-
-sub save_winston {
- $lxdebug->enter_sub();
- my $elster = $form->{elster};
- my $elsterfile = $form->{elsterfile};
- open(OUT, ">-") or $form->error("STDOUT : $!");
- print OUT qq|Content-Type: application/file;
-Content-Disposition: attachment; filename="$elsterfile"\n\n|;
- print OUT $elster;
- close(OUT);
- $lxdebug->leave_sub();
-}