
tech.deepdreams.worker.services.deductionbasis.ContribSalaryv2024Impl Maven / Gradle / Ivy
package tech.deepdreams.worker.services.deductionbasis;
import static tech.deepdreams.worker.constants.ElementCode.*;
import static tech.deepdreams.worker.constants.LocalConstantCode.*;
import java.util.Arrays;
import java.util.Map;
import tech.deepdreams.worker.api.services.DeductionBasisService;
import tech.deepdreams.worker.api.enums.CountryCode;
public class ContribSalaryv2024Impl implements DeductionBasisService{
public Double calculate(Map params, Map advantagesInKind) {
Double base = params.entrySet().stream()
.filter(entry -> {
return Arrays.asList(NON_EXEMPTED_ITEMS).contains(entry.getKey()) || Arrays.asList(EXCEPTIONAL_INCOMES).contains(entry.getKey())
|| Arrays.asList(ADVANTAGES_IN_KIND).contains(entry.getKey()) ;
})
.mapToDouble(entry -> {
return Double.parseDouble(entry.getValue().toString()) ;
})
.sum() ;
return base + advantagesInKind.entrySet()
.stream()
.filter(entry -> {
return Arrays.asList(ADVANTAGES_IN_KIND).contains(entry.getKey()) ;
})
.mapToDouble(entry -> {
return switch(entry.getKey()) {
case CODE_ACCOMODATION :
yield 0.15*base ;
case CODE_ELECTRICITY :
yield 0.04*base ;
case CODE_WATER :
yield 0.02*base ;
case CODE_VEHICLE :
Double vehicles = Double.parseDouble(entry.getValue().toString()) ;
yield 0.1*vehicles*base ;
case CODE_DOMESTIC :
Double domestics = Double.parseDouble(entry.getValue().toString()) ;
yield 0.05*domestics*base ;
case CODE_FOOD :
yield 0.1*base ;
case CODE_PHONE :
yield 0.05*base ;
case CODE_FUEL :
yield 0.1*base ;
case CODE_CAREKEEPING :
yield 0.05*base ;
case CODE_INTERNET :
yield 0.05*base ;
default:
yield 0.0 ;
} ;
})
.sum() ;
}
public CountryCode country() {
return CountryCode.CMR ;
}
public String code() {
return CODE_CONTRIB_SALARY ;
}
public int version() {
return 2024 ;
}
private static final String[] NON_EXEMPTED_ITEMS = new String[] { CODE_BASE_SALARY, CODE_OVERTIME_BONUS,
CODE_SENIORITY_BONUS, CODE_SALARY_SUPPLEMENT, CODE_REPONSIBILITY_BONUS, CODE_FUNCTION_BONUS,
CODE_TECHNICAL_BONUS, CODE_TRANSPORT_ALLOWANCE, CODE_FUNCTION_BONUS, CODE_ATTENDANCE_BONUS,
CODE_PERFORMANCE_BONUS, CODE_PERFORMANCE2_BONUS, CODE_SUBJECTIVITY_BONUS, CODE_PACKAGING_BONUS,
CODE_PAID_HOLIDAY_BONUS, CODE_RECOVERY_BONUS, CODE_TRAINING_BONUS, CODE_HARDSHIP_BONUS,CODE_RISK_BONUS,
CODE_PRECARIOUSNESS_BOUNTY, CODE_PENALTY_BONUS, CODE_CLOTHING_BONUS, CODE_EXPATRIATION_BONUS } ;
private static final String[] EXCEPTIONAL_INCOMES = new String[] { CODE_13TH_MONTH_BONUS, CODE_YEAR_END_BONUS,
CODE_BALANCE_SHEET_BONUS} ;
private static final String[] ADVANTAGES_IN_KIND = new String[] { CODE_ACCOMODATION, CODE_WATER,
CODE_ELECTRICITY, CODE_VEHICLE, CODE_DOMESTIC, CODE_FOOD, CODE_PHONE, CODE_FUEL, CODE_CAREKEEPING, CODE_INTERNET } ;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy