X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=sql%2FPg-upgrade2%2FSKR04-3804-addition.pl;h=9b4434ec07fc4d96763996eb45982967d10f88d8;hb=577042c61c5e1fffb8747079b4f9826e51532ee8;hp=56136d004b52d541b31020be5d1df9a991228071;hpb=4b937d1a3839d8235a650172a59998c1b7126e22;p=kivitendo-erp.git diff --git a/sql/Pg-upgrade2/SKR04-3804-addition.pl b/sql/Pg-upgrade2/SKR04-3804-addition.pl index 56136d004..9b4434ec0 100644 --- a/sql/Pg-upgrade2/SKR04-3804-addition.pl +++ b/sql/Pg-upgrade2/SKR04-3804-addition.pl @@ -1,78 +1,56 @@ # @tag: SKR04-3804-addition # @description: Konto 3804 zu SKR04 hinzufügen: Umsatzsteuer 19% für Steuerschlüssel 13 (Umsatzsteuer aus EG-Erwerb) # @depends: -# @charset: UTF-8 +package SL::DBUpgrade2::SKR04_3804_addition; +use utf8; use strict; -die("This script cannot be run from the command line.") unless ($main::form); - -sub mydberror { - my ($msg) = @_; - die($dbup_locale->text("Database update error:") . "
$msg
" . $DBI::errstr); -} - -sub do_query { - my ($query, $may_fail) = @_; - - if (!$dbh->do($query)) { - mydberror($query) unless ($may_fail); - $dbh->rollback(); - $dbh->begin_work(); - } -} +use parent qw(SL::DBUpgrade2::Base); - -sub do_update { +sub run { + my ($self) = @_; # 1. Überprüfen ob Kontenrahmen SKR04 ist, wenn nicht alles überspringen - my ($kontenrahmen) = $dbh->selectrow_array("select coa from defaults"); - - unless ( $kontenrahmen eq 'Germany-DATEV-SKR04EU' ) { - print "Kontenrahmen ist nicht SKR04, überspringen
"; + if (!$self->check_coa('Germany-DATEV-SKR04EU')) { +# print qq|Nichts zu tun in diesem Kontenrahmen.|; return 1; - }; + } # Mandant hat SKR04, erst prüfen wir, ob in der Vergangenheit Buchungen mit # taxkey 13 erfolgt sind (Fall "EU ohne USt. ID), diese sind wahrscheinlich # mit der falschen MwSt (16%) gebucht worden, wenn dies nicht manuell # geändert worden ist - my ($anzahl_buchungen) = $dbh->selectrow_array("select count (*) from acc_trans where taxkey=13 and transdate >= '2007-01-01';"); + my ($anzahl_buchungen) = $self->dbh->selectrow_array("select count (*) from acc_trans where taxkey=13 and transdate >= '2007-01-01';"); if ( $anzahl_buchungen > 0 ) { - if ($main::form->{bookings_exist} ) { + if ($::form->{bookings_exist} ) { # Benutzer hat Meldung bestätigt print "Buchungen nach dem 01.01.2007 existierten, Upgrade überspringen"; - return 1; - } else { - # Meldung anzeigen und auf Rückgabe warten - print_past_booking_warning(); - return 2; - }; - } else { # es gibt keine Buchungen mit taxkey 13 nach 01.01.2007 - - # prüfen ob Konto 3804 schon existiert - my ($konto_existiert) = $dbh->selectrow_array("select count (*) from chart where accno = '3804'"); - if ( $konto_existiert ) { - # 3804 existiert, wir gehen davon aus, daß der Benutzer das Konto schon selber angelegt hat und - # ordnungsgemäß benutzt - - if ($main::form->{account_exists} ) { - # Benutzer hat Meldung bestätigt - print "Konto existiert, Upgrade überspringen\n"; - return 1; - } else { - # Meldung anzeigen und auf Rückgabe warten - print_3804_already_exists(); - return 2; - }; - } else { + return 1; + } + + # Meldung anzeigen und auf Rückgabe warten + print_past_booking_warning(); + return 2; + } + + # es gibt keine Buchungen mit taxkey 13 nach 01.01.2007 + + # prüfen ob Konto 3804 schon existiert + my ($konto_existiert) = $self->dbh->selectrow_array("select count (*) from chart where accno = '3804'"); + if ( $konto_existiert ) { + # 3804 existiert, wir gehen davon aus, daß der Benutzer das Konto schon selber angelegt hat und + # ordnungsgemäß benutzt + + return 1; + } # noch keine Buchungen mit taxkey 13 und Konto 3804 existiert noch nicht, # also legen wir es an und machen noch die nötigen Einstellungen in tax und # taxkeys - my $insert_chart = <prepare($insert_chart) || mydberror($insert_chart); + $self->db_query($insert_chart); + my $konto_anlegen = $self->dbh->prepare($insert_chart) || $self->db_error($insert_chart); - # 13-1 (16%) korrigieren: - my $edit_taxkey_13 = qq|UPDATE tax SET taxdescription = 'Steuerpflichtige EG-Lieferung zum vollen Steuersatz', rate = '0.16', chart_id = (select id FROM chart where accno = '3803'), taxnumber = 3803 WHERE taxkey = '13'|; - do_query($edit_taxkey_13); + # 13-1 (16%) korrigieren: + my $edit_taxkey_13 = qq|UPDATE tax SET taxdescription = 'Steuerpflichtige EG-Lieferung zum vollen Steuersatz', rate = '0.16', chart_id = (select id FROM chart where accno = '3803'), taxnumber = 3803 WHERE taxkey = '13'|; + $self->db_query($edit_taxkey_13); - # Sicherstellen, daß 3803 die richtige Bezeichnung hat - my $update_3803 = qq|update chart set description = 'Umsatzsteuer aus EG-Erwerb 16%' where accno = '3803'|; - do_query($update_3803); + # Sicherstellen, daß 3803 die richtige Bezeichnung hat + my $update_3803 = qq|update chart set description = 'Umsatzsteuer aus EG-Erwerb 16%' where accno = '3803'|; + $self->db_query($update_3803); - # Zweiter Eintrag für taxkey 13 in key: 19% - my $insert_taxkey_13_2 = qq|INSERT INTO tax ( taxkey, taxdescription, rate, chart_id, taxnumber ) VALUES ('13', 'Steuerpflichtige EG-Lieferung zum vollen Steuersatz', '0.19', (select id from chart where accno = '3804'), '3804')|; + # Zweiter Eintrag für taxkey 13 in key: 19% + my $insert_taxkey_13_2 = qq|INSERT INTO tax ( taxkey, taxdescription, rate, chart_id, taxnumber ) VALUES ('13', 'Steuerpflichtige EG-Lieferung zum vollen Steuersatz', '0.19', (select id from chart where accno = '3804'), '3804')|; - do_query($insert_taxkey_13_2); + $self->db_query($insert_taxkey_13_2); - # alle Konten finden, bei denen 3803 das Steuerautomatikkonto ist, - # und dort den zweiten Eintrag ab 1.1.2007 für 19% einstellen - my $sth_query = $dbh->prepare(qq|select c.id from chart c join taxkeys t on (c.id = t.chart_id) where tax_id = (select id from tax where taxnumber = '3803')|); - my $sth_insert = $dbh->prepare(qq|INSERT INTO taxkeys ( taxkey_id, chart_id, tax_id, pos_ustva, startdate ) - VALUES (13, ?, (select id from tax where taxkey = 13 and rate = '0.19'), - (select pos_ustva from taxkeys where tax_id = (select id from tax where taxnumber = '3803') and pos_ustva > 0 limit 1), - '01.01.2007')|); - $sth_query->execute(); - - while (my $ref = $sth_query->fetchrow_hashref()) { - $sth_insert->execute($ref->{id}); - } - $sth_query->finish(); - $sth_insert->finish(); + # alle Konten finden, bei denen 3803 das Steuerautomatikkonto ist, + # und dort den zweiten Eintrag ab 1.1.2007 für 19% einstellen + my $sth_query = $self->dbh->prepare(qq|select c.id from chart c join taxkeys t on (c.id = t.chart_id) where tax_id = (select id from tax where taxnumber = '3803')|); + my $sth_insert = $self->dbh->prepare(< 0 LIMIT 1), + '01.01.2007' ) +SQL + $sth_query->execute; - }; # end code update - }; # end check if 3804 exists + while (my $ref = $sth_query->fetchrow_hashref) { + $sth_insert->execute($ref->{id}); + } + $sth_query->finish; + $sth_insert->finish; -}; # end do_update + return 1; +} # end run sub print_past_booking_warning { - print $main::form->parse_html_template("dbupgrade/SKR04_3804_update"); -}; + print $::form->parse_html_template("dbupgrade/SKR04_3804_update"); +} + sub print_3804_already_exists { - print $main::form->parse_html_template("dbupgrade/SKR04_3804_already_exists"); -}; + print $::form->parse_html_template("dbupgrade/SKR04_3804_already_exists"); +} -return do_update(); +1;