kivitendo/sql/Pg-upgrade2/SKR04-3804-addition.pl @ 7b1da9c3
52f442ea | Geoffrey Richardson | # @tag: SKR04-3804-addition
|
||
# @description: Konto 3804 zu SKR04 hinzufügen: Umsatzsteuer 19% für Steuerschlüssel 13 (Umsatzsteuer aus EG-Erwerb)
|
||||
# @depends:
|
||||
347f2cff | Moritz Bunkus | package SL::DBUpgrade2::SKR04_3804_addition;
|
||
52f442ea | Geoffrey Richardson | |||
4d0aa32f | Moritz Bunkus | use utf8;
|
||
52f442ea | Geoffrey Richardson | use strict;
|
||
347f2cff | Moritz Bunkus | use parent qw(SL::DBUpgrade2::Base);
|
||
52f442ea | Geoffrey Richardson | |||
347f2cff | Moritz Bunkus | sub run {
|
||
my ($self) = @_;
|
||||
52f442ea | Geoffrey Richardson | |||
# 1. Überprüfen ob Kontenrahmen SKR04 ist, wenn nicht alles überspringen
|
||||
7a59817e | Moritz Bunkus | if (!$self->check_coa('Germany-DATEV-SKR04EU')) {
|
||
02201b07 | Sven Schöling | # print qq|Nichts zu tun in diesem Kontenrahmen.|;
|
||
52f442ea | Geoffrey Richardson | return 1;
|
||
7a59817e | Moritz Bunkus | }
|
||
52f442ea | Geoffrey Richardson | |||
# 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
|
||||
347f2cff | Moritz Bunkus | my ($anzahl_buchungen) = $self->dbh->selectrow_array("select count (*) from acc_trans where taxkey=13 and transdate >= '2007-01-01';");
|
||
52f442ea | Geoffrey Richardson | if ( $anzahl_buchungen > 0 ) {
|
||
347f2cff | Moritz Bunkus | if ($::form->{bookings_exist} ) {
|
||
52f442ea | Geoffrey Richardson | # Benutzer hat Meldung bestätigt
|
||
4b937d1a | Sven Donath | print "Buchungen nach dem 01.01.2007 existierten, Upgrade überspringen";
|
||
347f2cff | Moritz Bunkus | 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
|
||||
c03e5a9a | Sven Schöling | return 1;
|
||
347f2cff | Moritz Bunkus | }
|
||
52f442ea | Geoffrey Richardson | |||
# 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
|
||||
347f2cff | Moritz Bunkus | my $insert_chart = <<SQL;
|
||
52f442ea | Geoffrey Richardson | INSERT INTO chart (
|
||
accno, description,
|
||||
charttype, category, link,
|
||||
taxkey_id, pos_eur
|
||||
)
|
||||
SELECT
|
||||
'3804','Umsatzsteuer aus EG-Erwerb 19%',
|
||||
'A','I','AR_tax:IC_taxpart:IC_taxservice',
|
||||
0, (select pos_eur from chart where accno = '3803')
|
||||
WHERE EXISTS ( -- update only for SKR04, aber eigentlich schon überprüft
|
||||
SELECT coa FROM defaults
|
||||
WHERE defaults.coa='Germany-DATEV-SKR04EU'
|
||||
);
|
||||
SQL
|
||||
347f2cff | Moritz Bunkus | $self->db_query($insert_chart);
|
||
52f442ea | Geoffrey Richardson | |||
347f2cff | Moritz Bunkus | my $konto_anlegen = $self->dbh->prepare($insert_chart) || $self->db_error($insert_chart);
|
||
52f442ea | Geoffrey Richardson | |||
347f2cff | Moritz Bunkus | # 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);
|
||||
52f442ea | Geoffrey Richardson | |||
347f2cff | Moritz Bunkus | # 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);
|
||||
52f442ea | Geoffrey Richardson | |||
347f2cff | Moritz Bunkus | # 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')|;
|
||||
52f442ea | Geoffrey Richardson | |||
347f2cff | Moritz Bunkus | $self->db_query($insert_taxkey_13_2);
|
||
52f442ea | Geoffrey Richardson | |||
347f2cff | Moritz Bunkus | # 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(<<SQL);
|
||||
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' )
|
||||
SQL
|
||||
$sth_query->execute;
|
||||
52f442ea | Geoffrey Richardson | |||
347f2cff | Moritz Bunkus | while (my $ref = $sth_query->fetchrow_hashref) {
|
||
$sth_insert->execute($ref->{id});
|
||||
}
|
||||
$sth_query->finish;
|
||||
$sth_insert->finish;
|
||||
52f442ea | Geoffrey Richardson | |||
a4665ffc | Moritz Bunkus | return 1;
|
||
347f2cff | Moritz Bunkus | } # end run
|
||
52f442ea | Geoffrey Richardson | |||
sub print_past_booking_warning {
|
||||
347f2cff | Moritz Bunkus | print $::form->parse_html_template("dbupgrade/SKR04_3804_update");
|
||
}
|
||||
52f442ea | Geoffrey Richardson | sub print_3804_already_exists {
|
||
347f2cff | Moritz Bunkus | print $::form->parse_html_template("dbupgrade/SKR04_3804_already_exists");
|
||
}
|
||||
52f442ea | Geoffrey Richardson | |||
347f2cff | Moritz Bunkus | 1;
|