module HAX.Example where
import HAX.Bookkeeping
import HAX.Report
import Data.Ix
import HAX.Accounting
import HAX.Assets
import HAX.Common
import HAX.Germany
start = date 1 2014
example1 = World (start,date 12 2015) [facebookE, markZuck]
facebookE = Entity "FB" ["AV"] facebookAction facebookGmbH
facebookGmbH = GmbH facebook
facebook = Gewerbe { gwAngestellte = [markZuckNat]
, gwMonatlMietkosten = 9930
, gwWaegen = [car]
, gwTreibender = facebookGmbH
, gwHebesatz = 3.5
}
markZuck = Entity "Mark" ["Haus","Hausdarlehen","Cash" ] markZuckAction markZuckNat
markZuckNat = NatuerlichePerson{ pGeburt = date 12 1960
, kinderMitKindergeldImHaushalt = True
, landOderForstwirt = False
, pSplitting = False
, krankenUndPflegeOhneZuschuesse = True
, krankenUndPflegeOhneZuschuessePartner = Nothing
, kinderMitKindergeld = 2
, kinderFreibetragsVerdopplung = False
, pAuswaertigeKinderInBerufsausbildung = 1
, pWagen = car
, pBruttoGehaltMtl = 4000
, pLohnsteuerMtl = 1300
, pVersicherungsPflicht = False
, pGewerbe = Nothing
}
car = AutoMonatl { aKmPrivatOhneArbeitsfahrten = (45000 7300 2 * 33 * 250)/12
, aKmGeschaeftl = 7300/12
, aKmArbeitsstaette = 32
, aArbeitsTage = 250 / 12
, aFixKosten = 208
, aLeasing = 400
, aSpritKostenProKm = 8/100 * 1.4
, aListenPreis = 35600
, aFirmenWagen = Pauschal
}
markZuckAction = do
onceAt start $ do
tx $ BalancingTx "Anfangswerte"
privatVermoegen
[("Haus",240000)
,("FB",430000)
]
handle $ TransactionalAccount (IR verrechZins privatAusgaben)
(IR verrechZins sonstigeEinkuenfteAusKapitalvermoegen)
"FB" 12
when (not $ pVersicherungsPflicht markZuckNat) $ do
tx $ BalancingTx "Kranken- & Pflegeversicherung"
privatAusgaben
[(krankenundPflegeversicherungBasisbeitraege, 6184/12)
,(giroKonto, 632)
]
onceAt (date 12 2012) $ fromTo 449 "Erstattungsüberhaenge aus Kirchensteuer"
erstattungsUeberhaenge privatVermoegen
return ()
facebookAction = do
onceAt start $ do
tx $ BalancingTx "Anfangswerte"
"AV"
[("Mark",430000)
,(gewinnVerlustVortraege,409000)
]
handle $ TransactionalAccount (IR 0.082 schuldZinsen)
(IR 0.005 sonstigerUeberschuss)
giroKonto 12
handle $ TransactionalAccount (IR verrechZins schuldZinsen)
(IR verrechZins sonstigerUeberschuss)
"Mark" 12
tx $ BalancingTx "Ertrag"
sonstigerUeberschuss
[(giroKonto,
(2109789
+ 7036
+ 2993
1266300
390930
+ 48000
+ 3900
161250
162901
+ 119160
6924
5783
22940
+ 12240
44939
7755
27803
190
+ 450
508
)/12)
,("AV", negate
(1196
)/12)
]
handle $ Liquidity sonstigerUeberschuss giroKonto
[ 27184.58
, 64996.74
, 16134.78
, 11022.01
, 1467.94
, 4401.49
, 10538.55
, 7653.95
, 8071.67
, 20976.63
, 5815.15
, 167876.36
]
return ()
ir2 = 0.0242
verrechZins = 0.046