Revision 2567740e
Von Jan Büren vor mehr als 4 Jahren hinzugefügt
SL/USTVA.pm | ||
---|---|---|
|
||
# Germany
|
||
|
||
if ( $form->{coa} eq 'Germany-DATEV-SKR03EU' or $form->{coa} eq 'Germany-DATEV-SKR04EU'){
|
||
if ( $form->{coa} eq 'Germany-DATEV-SKR03EU' or $form->{coa} eq 'Germany-DATEV-SKR04EU') {
|
||
|
||
# 16%/19% Umstellung
|
||
# Umordnen der Kennziffern
|
||
... | ... | |
SUM( ac.amount *
|
||
-- Bezahlt / Rechnungssumme
|
||
(
|
||
SELECT SUM(acc.amount), t.rate
|
||
SELECT SUM(acc.amount), t.rate, c.accno
|
||
FROM acc_trans acc
|
||
INNER JOIN chart c ON (acc.chart_id = c.id
|
||
AND c.link like '%AR_paid%')
|
||
... | ... | |
)
|
||
WHERE
|
||
$acc_trans_where
|
||
GROUP BY tk.pos_ustva, t.rate
|
||
GROUP BY tk.pos_ustva, t.rate, c.accno
|
||
|;
|
||
|
||
} elsif ($form->{accounting_method} eq 'accrual') {
|
||
... | ... | |
-- Alle Einnahmen AR und pos_ustva erfassen
|
||
SELECT
|
||
- sum(ac.amount) AS amount,
|
||
tk.pos_ustva, t.rate
|
||
tk.pos_ustva, t.rate, c.accno
|
||
FROM acc_trans ac
|
||
JOIN chart c ON (c.id = ac.chart_id)
|
||
JOIN ar ON (ar.id = ac.trans_id)
|
||
... | ... | |
$dpt_join
|
||
WHERE 1 = 1
|
||
$where
|
||
GROUP BY tk.pos_ustva, t.rate
|
||
GROUP BY tk.pos_ustva, t.rate, c.accno
|
||
|;
|
||
|
||
} else {
|
||
... | ... | |
|
||
SELECT
|
||
sum(ac.amount) AS amount,
|
||
tk.pos_ustva, t.rate
|
||
tk.pos_ustva, t.rate, c.accno
|
||
FROM acc_trans ac
|
||
JOIN ap ON (ap.id = ac.trans_id )
|
||
JOIN chart c ON (c.id = ac.chart_id)
|
||
... | ... | |
WHERE
|
||
1=1
|
||
$where
|
||
GROUP BY tk.pos_ustva, t.rate
|
||
GROUP BY tk.pos_ustva, t.rate, c.accno
|
||
|
||
UNION -- Einnahmen direkter gl Buchungen erfassen
|
||
|
||
SELECT sum
|
||
( - ac.amount) AS amount,
|
||
tk.pos_ustva, t.rate
|
||
tk.pos_ustva, t.rate, c.accno
|
||
FROM acc_trans ac
|
||
JOIN chart c ON (c.id = ac.chart_id)
|
||
JOIN gl a ON (a.id = ac.trans_id)
|
||
... | ... | |
$dpt_join
|
||
WHERE 1 = 1
|
||
$where
|
||
GROUP BY tk.pos_ustva, t.rate
|
||
GROUP BY tk.pos_ustva, t.rate, c.accno
|
||
|
||
|
||
UNION -- Ausgaben direkter gl Buchungen erfassen
|
||
|
||
SELECT sum
|
||
(ac.amount) AS amount,
|
||
tk.pos_ustva, t.rate
|
||
tk.pos_ustva, t.rate, c.accno
|
||
FROM acc_trans ac
|
||
JOIN chart c ON (c.id = ac.chart_id)
|
||
JOIN gl a ON (a.id = ac.trans_id)
|
||
... | ... | |
$dpt_join
|
||
WHERE 1 = 1
|
||
$where
|
||
GROUP BY tk.pos_ustva, t.rate
|
||
GROUP BY tk.pos_ustva, t.rate, c.accno
|
||
|
||
|;
|
||
|
||
... | ... | |
my $sth = $dbh->prepare($query);
|
||
|
||
$sth->execute || $form->dberror($query);
|
||
|
||
# ugly, but we need to use static accnos
|
||
my $accno_five = 3803; # SKR04
|
||
my $accno_sixteen = 3805; # SKR04
|
||
if ($form->{coa} eq 'Germany-DATEV-SKR03EU') {
|
||
$accno_five = 1773;
|
||
$accno_sixteen = 1775;
|
||
}
|
||
while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
|
||
next unless $ref->{$category};
|
||
$ref->{amount} *= -1;
|
||
$form->{ $ref->{$category} } += $ref->{amount};
|
||
|
||
# umsatzsteuer 16% temp
|
||
if ($ref->{rate} == 0.16 && $ref->{pos_ustva} ne '66') {
|
||
if ($ref->{pos_ustva} eq '35') {
|
||
# umsatzsteuer 16% pos 35
|
||
if ($ref->{pos_ustva} eq '35') {
|
||
if ($ref->{rate} == 0.16) {
|
||
$form->{"pos_ustva_81b_kivi"} += $ref->{amount};
|
||
} elsif ($ref->{pos_ustva} eq '36') {
|
||
$form->{"pos_ustva_811b_kivi"} += $ref->{amount};
|
||
} else { die "Kein pos_ustva Eintrag!" . Dumper($ref); }
|
||
}
|
||
# umsatzsteuer 5% temp
|
||
if ($ref->{rate} == 0.05 && $ref->{pos_ustva} ne '66') {
|
||
if ($ref->{pos_ustva} eq '35') {
|
||
} elsif ($ref->{rate} == 0.05) {
|
||
$form->{"pos_ustva_86b_kivi"} += $ref->{amount};
|
||
} elsif ($ref->{pos_ustva} eq '36') {
|
||
} else {die ("No valid tax rate for pos 35"); }
|
||
}
|
||
if ($ref->{pos_ustva} eq '36') {
|
||
if ($ref->{accno} eq $accno_sixteen) {
|
||
$form->{"pos_ustva_811b_kivi"} += $ref->{amount};
|
||
} elsif ($ref->{accno} eq $accno_five) {
|
||
$form->{"pos_ustva_861b_kivi"} += $ref->{amount};
|
||
} else { die "Kein pos_ustva Eintrag!" . Dumper($ref); }
|
||
} else { die "No valid accno for pos 36"; }
|
||
}
|
||
# umsatzsteuer 5% temp
|
||
#if ($ref->{rate} == 0.05 && $ref->{pos_ustva} ne '66') {
|
||
# if ($ref->{pos_ustva} eq '35') {
|
||
# $form->{"pos_ustva_86b_kivi"} += $ref->{amount};
|
||
# } elsif ($ref->{pos_ustva} eq '36') {
|
||
# $form->{"pos_ustva_861b_kivi"} += $ref->{amount};
|
||
# } else { die "Kein pos_ustva Eintrag!" . Dumper($ref); }
|
||
#}
|
||
|
||
}
|
||
|
Auch abrufbar als: Unified diff
USTVA temp MwSt Konten anzeigen