コード例 #1
0
        /// <summary>
        /// Beregner arbejdsløshedsdagpenge
        /// For at få udregningen pr måned sættes ugerArbejdsløs = 4, for et helt år sættes ugerArbejdsløs = 52 og hvis personen har været arbejdsløs i et halvt år beregnes det ved at sætte ugerArbejdsløs = 52/2.
        /// </summary>
        /// <param name="år">År der simuleres</param>
        /// <param name="akasse">Akasse medlemskab</param>
        /// <param name="dagpengeMåneder">Antal måneder personen allerede har modtaget dagpenge i</param>
        /// <param name="ugerBeskæftigetSomLønmodtager">Antal uger beskæftiget som lønmodtager inden for de sidste tre år</param>
        /// <param name="hf">Højst fuldførte uddannelse (DREAMs kategorier)</param>
        /// <param name="månederArbejdsløs">Antal uger personen skal have dagpenge i/er arbejdsløs i</param>
        /// <param name="alder">Personens alder</param>
        /// <param name="arbejdstimer">Arbejdstimer arbejdet, som dagpengesatsen skal nedsættes ift</param>
        /// <param name="deltidsforsikret">Sand hvis personen kun er deltidsforsikret</param>
        /// <param name="arbejdsindkomst">Indkomst, som dagpengesatsen skal nedsættes ift. Omregnes til arbejdstimer og anvendes kun hvis arbejdstimer ikke er angivet</param>
        /// <param name="månedslønFørArbejdsløshed">Seneste månedsløn</param>
        /// <returns>Arbejdsløshedsdagpenge pr år</returns>
        public static int Dagpenge(int alder, Boolean deltidsforsikret, int arbejdsindkomst, double arbejdstimer, int år, Boolean akasse, int ugerBeskæftigetSomLønmodtager, int månedslønFørArbejdsløshed, Education hf, int dagpengeMåneder = 0, int månederArbejdsløs = 1)
        {
            //Dagpenge til nyuddannede og værnepligtige rammes automatisk idet månedslønFørArbejdsløshed er meget lille

            //Krav: - Medlem af en a-kasse i mindst ét år. - Beskæftiget som lønmodtager i mindst 52 uger inden for de sidste tre år, hvis du er fuldtidsforsikret. - Beskæftiget som lønmodtager i mindst 34 uger inden for de sidste tre år, hvis du er deltidsforsikret.
            //Du har ret til arbejdsløshedsdagpenge i to år (104 uger) inden for en periode på tre år, hvis du opfylder betingelserne.
            if (!akasse || dagpengeMåneder > (104 / 4) || ugerBeskæftigetSomLønmodtager < 34 || (!deltidsforsikret && ugerBeskæftigetSomLønmodtager < 52))
            {
                return(0); //opfylder ikke krav for dagpenge
            }
            int dagpenge;

            if (alder < 25 && hf < Education.ErhFag && ugerBeskæftigetSomLønmodtager < (52 * 2) && dagpengeMåneder >= 26 / 4) //særlige regler for unge uden uddannelse efter 26. uge...
            {
                //hvis du er under 25 år, og du ikke har en dimittenduddannelse (en uddannelse over gymnasieniveau af mindst 1½ års varighed), og du ikke har arbejdet mindst 3.848 timer (to år på fuld tid) inden for de seneste tre år, så får du kun udbetalt 50 % af den maksimale dagpengesats (408 kroner per dag i 2014 tal) fra din 26. ledighedsuge til din 104. ledighedsuge.
                dagpenge = Convert.ToInt32(Satser.DpMaksimalSats() * 0.5); //fra 26. uge!!
            }
            else
            {
                //Sats (mindstesats er 82% af maksimalsats).
                dagpenge = Convert.ToInt32(Math.Max(0.82 * Satser.DpMaksimalSats(), Math.Min(Satser.DpMaksimalSats(), månedslønFørArbejdsløshed * 12 * 0.9))); //Du kan dog højst få 90 pct. af den løn, du tjente, før du blev arbejdsløs.
            }

            if (deltidsforsikret)
            {
                dagpenge *= 2 / 3; //check type-cast!
            }
            //reduktion ved supplerende dagpenge
            if (arbejdstimer == 0)
            {
                arbejdstimer = arbejdsindkomst / Satser.Timesats();            //omregn fra indkomst til timer
            }
            arbejdstimer *= 12 / 52d;                                          //omregnes fra timer pr måned til timer pr uge

            double reduktion = arbejdstimer > 30 ? 0 : 1 - arbejdstimer / 37d; //Aftrapning af ydelse ved supplerende dagpenge

            int    månederMedDagpenge = Math.Min(26 - dagpengeMåneder, månederArbejdsløs);
            double andelAfÅrligtBeløb = månederMedDagpenge / 12d; //der skal kun udbetales dagpenge i de uger, personen skal have dagpenge i....

            return(Convert.ToInt32(dagpenge * reduktion * andelAfÅrligtBeløb));

            //Ikke implementeret:
            //Særligt genoptjeningskrav (kravet samme for alle her)
            //Seniorjob?
        }