/**
* @file Innehåller modulen {@link socialBidrag}
* @version 1.0
* @author Hanif Bali
*/
(function(){
/**
* Socialbidrags (försörjningstöd) kalkylator
*
* @constructor
* @implements {Module}
* @alias socialBidrag
* @param {houseHold} houseHold
* @param {tax} tax
* @param {barnBidrag} barnBidrag
* @param {studieBidrag} studieBidrag
* @param {bostadsBidrag} bostadsBidrag
*/
function socialBidrag(houseHold, tax, barnBidrag, studieBidrag, bostadsBidrag) {
/**
* Räknar ut hushållets utgiftsnorm enligt Socialstyrelsen
*
* @returns {Number} utgiftsnorm
*/
this.commonOutcome = function () {
switch (houseHold.numberOfPersons()) {
case 0:
return 0;
case 1:
return 930;
break;
case 2:
return 1040;
break;
case 3:
return 1310;
break;
case 4:
return 1490;
break;
case 5:
return 1710;
break;
case 6:
return 1950;
break;
case 7:
return 2120;
break;
default :
var houseHoldExtra = 2120;
var rest = houseHold.numberOfPersons() - 7;
for (var a = 0; a < rest; a++) {
houseHoldExtra = houseHoldExtra + 170;
}
return houseHoldExtra;
break;
}
};
/**
* Hämtar riksnormen för hushållet
*
* @returns {Number}
*/
this.getRiksnorm = function () {
if (!houseHold.numberOfPersons()) {
return 0;
}
var sum = 0;
for (var a = 0; a < houseHold.getKids().length; a++) {
switch (houseHold.getKids()[a].age) {
case 0:
sum += 1740;
break;
case 1:
case 2:
sum += 1980;
break;
case 3:
sum += 1730;
break;
case 4:
case 5:
case 6:
sum += 1980;
break;
case 7:
case 8:
case 9:
case 10:
sum += 2410;
break;
case 11:
case 12:
case 13:
case 14:
sum += 2840;
break;
case 15:
case 16:
case 17:
case 18:
sum += 3250;
break;
case 19:
case 20:
sum += 3280;
}
}
sum += this.commonOutcome(houseHold);
// Vuxna
if (houseHold.getGrownups().length == 1) {
sum += 2950;
} else if (houseHold.getGrownups().length > 1) {
var grownupCount = houseHold.getGrownups().length;
sum += 5320;
grownupCount = grownupCount - 2;
for (var a = 0; a < grownupCount; a++) {
sum += 2950;
}
}
return sum;
};
/**
* Räknar ut hur mycket försörjningstöd hela hushållet har rätt till.
* @returns {Number}
*/
this.totalCalc = function () {
var income = (houseHold.totalCalc() + tax.totalCalc());
// Jobbstimulans
if (houseHold.getPersons()[0].getData("langtidsSoc")) {
income = income * 0.75;
}
var totalIncome = income + bostadsBidrag.totalCalc() + studieBidrag.totalCalc() + barnBidrag.totalCalc();
var socialBidrag = (this.getRiksnorm() + houseHold.getHouse().getRent()) - (totalIncome);
socialBidrag = Math.max(0, socialBidrag);
return Math.round(socialBidrag);
}
}
marginalCalc.addModule("socialBidrag", socialBidrag, 200);
marginalCalc.scriptLoader.loadComplete("socialbidrag");
})();