module HAX.Germany.GmbH where
import HAX.Accounting
import HAX.Bookkeeping
import HAX.Common
import HAX.Germany.Subjekte
import HAX.Germany.Gewerbe
instance Body GmbH where
nominalAccounts _ = gewerbeAccounts ++ verlustVortragsKonten ++
[ verdeckteGewinnausschuettungen
, verdeckteEinlagen
, giroKonto
, gewinnVerlustVortraege
]
bodyMonthly action = do
runGewerbe gewerbeMonatlich =<< readBody gGewerbe
action
atYearEnd $ do
kst <- koerperschaftSteuer
closingTx [ verdeckteGewinnausschuettungen
, verdeckteEinlagen
, jahresErgebnis
]
$ BalancingTx "GmbH KSt und Abschluss"
gewinnVerlustVortraege
[(giroKonto, kst)]
instance Gewerbetreibender GmbH where
gwStFreibetrag _ = 0
gewerbeGewinn = jahresErgebnis'
+ haben verdeckteGewinnausschuettungen
soll verdeckteEinlagen
verdeckteGewinnausschuettungen = "vGA"
verdeckteEinlagen = "vElg"
gewinnVerlustVortraege = "GVV"
koerperschaftSteuer :: AccountingRW GmbH Amount
koerperschaftSteuer = do
gewinn <- gwGewinn <$> (runGewerbe gewerbeSteuer =<< readBody gGewerbe )
kst <- fixed $ singleResult "KoerperschaftSteuer + Soli" $
0.15 * (1+solidaritaetsFaktor) * nachVerlustAbzug "KSt" gewinn
return kst