{-# 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