hax-0.0.2: src/HAX/Example.hs
{-# LANGUAGE
NoMonomorphismRestriction
, OverloadedStrings
#-}
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 -- Some town in Germany
}
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 $ FixedPayment 600 start start 1 "SdE" "Cash" "Miete"
-- -- -- balanceInterest $ IAccount ent LineOfCredit ir
-- handle $ Loan 100000 (Annuity $ (0.11378694062058245-ir2)/12)
-- "Cash" "Hausdarlehen" (IR ir2 "SdE") (date 1 2014) 1
handle $ TransactionalAccount (IR verrechZins privatAusgaben)
(IR verrechZins sonstigeEinkuenfteAusKapitalvermoegen)
"FB" 12
-- -- -- transferAll "clearing the shit" Cash Trash
-- fromTo 10 "mntl. Entnahme" "FB" "Cash"
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
-- fromTo 10 "mntl. Entnahme" "Kasse" "MarkZuck"
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 -- "Umsatz"
+ 7036 -- verrechnung Sachbezüge
+ 2993 -- sonstige Erträge
-1266300 -- "Wareneinsatz"
- 390930 -- Lohn
+ 48000 -- Lohn MarkZuck (wird im Gewerbe behandelt)
+ 3900 -- Lohn + Abgaben Putzfrau
- 161250 -- LohnAbgaben
- 162901 -- Raumkosten
+ 119160 -- miete (wird im Gewerbe behandelt)
- 6924 -- Versicheurngen
- 5783 -- Reparaturen
- 22940 -- KFz
+ 12240 -- KFz + Sprit MarkZuck (wird im Gewerbe behandelt)
- 44939 -- Werbekosten & Reise
- 7755 -- Warenabgabe
- 27803 -- Verschiedene betriebliche Kosten
- 190 -- sonstige Verluste
+ 450 -- Kst Aufzinsung
- 508 -- KFz Steuer
-- - 8400 -- Zinsen
-- + 17018 -- Zinsen MarkZuck
)/12)
,("AV", negate
(1196 -- Abschreibungen
)/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