X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FUSTVA.pm;h=ee2d21f78252815877764987ca08a37feaaca98e;hb=577042c61c5e1fffb8747079b4f9826e51532ee8;hp=378f48e88cc7133c62cfa6dd93e9e217350d6d57;hpb=cff0e9be7e6925c22dab7cb0b52ab9e23af0d56a;p=kivitendo-erp.git
diff --git a/SL/USTVA.pm b/SL/USTVA.pm
index 378f48e88..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;
@@ -77,19 +96,9 @@ sub _init {
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);
-
- $sth->finish;
- $dbh->disconnect;
+ my ( $self, $form ) = @_;
+ my $coa = $::instance_conf->get_coa;
$form->{coa} = $coa;
$form->{"COA_$coa"} = '1';
$form->{COA_Germany} = '1' if ($coa =~ m/^germany/i);
@@ -124,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);
+
+ while ( my $row_ref = $sth->fetchrow_arrayref() ) {
+ push @positions, @$row_ref; # Copy the array contents
+ }
- $dbh->disconnect;
+ $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();
@@ -201,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
@@ -218,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);
@@ -229,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|;
@@ -241,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|