/* int Uddannelseshjælp(Education ig) * { * if (ig == Education.IkkeUnderUddannelse) * return Kontanthjælp(); * else * return SU(); * }*/ /// <summary> /// Beregner folkepensionsudbetaling /// </summary> /// <param name="år"></param> /// <param name="alder"></param> /// <param name="årIDK"></param> /// <param name="arbejdsindtægt">Arbejdsindtægt ved personligt arbejde. Det vil sige, at pensionsindtægter, renteindtægter og en eventuel ægtefælles indtægter ikke medgår i beregningen. Det gør folkepensionen og ATP heller ikke. Honorarer og mødediæter anses for indtægt ved personligt arbejde.</param> /// <param name="danskIndfødsret"></param> /// <returns></returns> public static int Folkepension(int år, int alder, int årIDK, CivilstandPensionist civilstand, int arbejdsindtægt, int samletIndtægt, int samleverIndkomst = 0, Boolean samleverPensionist = false, Boolean danskIndfødsret = true) { int født = år - alder; int folkepensionsalder; if (født < 1954) { folkepensionsalder = 65; } else if (født < 1955) { folkepensionsalder = 66; } else { folkepensionsalder = 67; } //krav: if (alder < folkepensionsalder || !danskIndfødsret) //dansk bopæl tages for givet { return(0); } int folkepension; int grundbeløb = Satser.fpGrundbeløb(); int pensionstillæg; if (civilstand == CivilstandPensionist.Enlig || civilstand == CivilstandPensionist.ReeltEnlig) { int fradragsbeløb = Satser.fpFradragvTillægEnlig(); pensionstillæg = Satser.fpPensionstillægEnlige(); //før evt nedsættelse int fradrag = Math.Max(0, Math.Min(arbejdsindtægt, Satser.fpFradragvArbejde())) + fradragsbeløb; double reduktionsgrad = civilstand == CivilstandPensionist.Enlig ? 0.32 : 0.309; int nedsættelse = Convert.ToInt32(Math.Max(0, (samletIndtægt - fradrag) * reduktionsgrad)); //Der foretages fratræk med 30,9% af din indtægt der overstiger [fradrag] kroner pr. år. pensionstillæg = Math.Max(0, pensionstillæg - nedsættelse); } else { //samlevende og gifte int fradragsbeløb = Satser.fpFradragvTillægPar(); pensionstillæg = Satser.fpPensionstillægPar(); int samleverIndkomstIndgåriBeregning; if (samleverPensionist) { samleverIndkomstIndgåriBeregning = samleverIndkomst; } else { //hvis ægtefælle ikke er pensionist gives et fradrag if (samleverIndkomst > Satser.fpFradragSamlever()) //For en pensionist, der er gift/samlevende med en person, der ikke modtager social pension, ... { samleverIndkomstIndgåriBeregning = Satser.fpFradragSamlever() / 2; //...fradrages halvdelen af ægtefællens/samleverens indtægter op til 201.100 kr. samleverIndkomstIndgåriBeregning += (samleverIndkomst - Satser.fpFradragSamlever()); // Indtægt derover indgår fuldt ud i beregningen. } else { samleverIndkomstIndgåriBeregning = samleverIndkomst / 2; } } int fradrag = Math.Max(0, Math.Min(arbejdsindtægt, Satser.fpFradragvArbejde())) + fradragsbeløb; int beregningsgrundlag = Math.Max(0, (samletIndtægt + samleverIndkomstIndgåriBeregning - fradrag)); double reduktionsgrad = samleverPensionist ? 0.16 : 0.32; int nedsættelse = Convert.ToInt32(beregningsgrundlag * reduktionsgrad); pensionstillæg = Math.Max(0, pensionstillæg - nedsættelse); } int fpFradragvGrundbeløb = Satser.fpFradragvGrundbeløb(); if (arbejdsindtægt > fpFradragvGrundbeløb) { int nedsættelse = Convert.ToInt32(0.3 * Convert.ToDouble(arbejdsindtægt - fpFradragvGrundbeløb)); //...af grundbeløb, hvis arbejdsindtægt > [291.200] grundbeløb -= nedsættelse; } folkepension = grundbeløb + pensionstillæg; double brøkpension = Math.Max(1, årIDK / 40); //evt. brøkpension return(Convert.ToInt32(folkepension * brøkpension) / 12); //Ikke implementeret: //Opsat pension //Helbredstillæg //Supplerende pensionsydelse //Personlige tillæg }