减员赔偿金计算java

    最近整个大经济环境不好,导致互联网行业不景气,一大堆企业开始优化组织结构。
    大家最关心的是如果离开会得到哪些补偿,相关法律如下:
  劳动部《违反和解除劳动合同的经济补偿办法》的第五条规定:“经劳动合同当事人协商一致,由用人单位解除劳动合同的用人单位应根据劳动者在本单位工作年限,每满一年发给相当于1个月工资的经济补偿金,最多不超过12个月。工作时间不满1年的按1年的标准发给经济补偿金。”
    再根据《劳动合同法》第四十一条规定,有下列情形之一,需要裁减人员二十人以上或者裁减不足二十人但占企业职工总数百分之十以上的,用人单位提前三十日向工会或者全体职工说明情况,听取工会或者职工的意见后,裁减人员方案经向劳动行政部门报告,可以裁减人员:

  (一)依照企业破产法规定进行重整的;

  (二)生产经营发生严重困难的;

  (三)企业转产、重大技术革新或者经营方式调整,经变更劳动合同后,仍需裁减人员的;

  (四)其他因劳动合同订立时所依据的客观经济情况发生重大变化,致使劳动合同无法履行的。

  第四十六条有下列情形之一的,用人单位应当向劳动者支付经济补偿(四)用人单位依照本法第四十一条第一款规定解除劳动合同的;

  所以符合劳动合同法规定裁员的应该给予补偿。
第四十七条 经济补偿按劳动者在本单位工作的年限,每满一年支付一个月工资的标准向劳动者支付。六个月以上不满一年的,按一年计算;不满六个月的,向劳动者支付半个月工资的经济补偿。

  劳动者月工资高于用人单位所在直辖市、设区的市级人民政府公布的本地区上年度职工月平均工资三倍的,向其支付经济补偿的标准按职工月平均工资三倍的数额支付,向其支付经济补偿的年限最高不超过十二年。

  本条所称月工资是指劳动者在劳动合同解除或者终止前十二个月的平均工资。

  所谓的“工资”是指用人单位依据国家有关规定或者劳动合同的约定,以货币形式直接支付给本单位劳动者的劳动报酬,一般包括计时工资、计件工资、奖金(包括销售提成)、津贴和补贴、延长工作时间的工资报酬(加班工资)以及特殊情况下支付的工资等。“工资”是劳动者劳动收入的主要组成部分。但用人单位支付给劳动者个人的社会保险福利费用、劳动保护方面的费用等不在工资之列。

  简而言之,企业裁员的,应当向劳动者支付经济补偿金。《劳动合同法》规定,用人单位进行法定裁员,经济补偿金按劳动者在本单位工作的年限,每满一年支付一个月工资的标准向劳动者支付。六个月以上不满一年的,按一年计算;不满六个月,向劳动者支付半个月工资的经济补偿金。此处的“月工资”是指劳动者在劳动合同解除或者终止前十二个月的平均工资,且不低于当地月最低工资标准。

    未休完的年假按2倍工资算。
    大概写了一个赔偿金的计算程序,帮助大家计算一下可能得到的金额。
    根据各公司不同的政策可能会有出入,仅供大家参考。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * Created by zr on 2018/12/13.
 */
public class SalaryCalc {

    public  static void main(String args[]){

        //初始化入参
        Double salary = 26000.0;//薪资
        String entryDate ="2017-9-18";//入职日期
        Double rest = 105.0;//倒休(小时)
        Double holiday = 10.0;//年假 (天)

        try {
            //调用计算方法
            CalcSalary(salary,entryDate,rest,holiday);
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

    /**
     * 计算赔偿金
     * @param salary 工资
     * @param entryDate 入职日期
     * @param rest 倒休
     * @param holiday 年假
     * @throws ParseException
     */
    private static void CalcSalary (Double salary,String entryDate,Double rest,Double holiday) throws ParseException {

        Double workDayOfMonth = 21.75;//一個月中的有效工作日
        Double topSalary = 25401.0;//封顶薪资
        Double bottomSalary = 8467.0;//封底薪资

        Double settleSalary;//结算工资
        Double daySalary;//日工资

        Double workYearTime;//工作年限

        Double yearMoney;//N+1补偿款
        Double holidayMoney;//年假补偿款

        Double restMoney;//倒休补偿款
        Double totalMoney;//总补偿款

        workYearTime = getWorkTime(entryDate);

        //如果大于去年平均工资,按封顶算
        if(salary >= topSalary){
            settleSalary = topSalary;

        }else if(salary < bottomSalary) {
            settleSalary = bottomSalary;
        }else{
            settleSalary = salary;
        }
        System.out.println("最终结算工资 = " + settleSalary);

        //日工资 日工资计算方法:日工资=月工资收入÷21.75(用于有缺勤,工作未满一个月等情况下的工资计算)
        daySalary = settleSalary/workDayOfMonth;
        System.out.println("日工资 = " + daySalary);

        //N+1补偿款 = (N+1)*  N为在公司的年限,不到半年的按半年,超过半年的按一年
        yearMoney = (workYearTime + 1)*settleSalary;
        System.out.println("N+1补偿款 = " + yearMoney);
        //年假补偿款 职工累计工作已满1年不满10年的,年休假5天;已满10年不满20年的,年休假10天;已满20年的,年休假15天。
        holidayMoney = holiday*3*daySalary;
        System.out.println("年假补偿款 = " + holidayMoney);
        //倒休补偿款
        restMoney = rest/8*daySalary;
        System.out.println("倒休补偿款 = " + restMoney);
        //总补偿款
        totalMoney = yearMoney + holidayMoney + restMoney;
        System.out.println("总补偿款 = " + totalMoney);

    }

    /**
     * 根据入职日期获取工作年限
     * @param entryDate 入职日期
     * @return 判定的工作年限
     * @throws ParseException
     */
    private static Double getWorkTime(String entryDate) throws ParseException {
        Double workYearTime = 0.0;
        //工作年限计算
        Date nowTime=  new Date();
        //当前时间的年月日
        Calendar cal = Calendar.getInstance();
        cal.setTime(nowTime);
        int nowYear = cal.get(Calendar.YEAR);
        int nowMonth = cal.get(Calendar.MONTH);
        int nowDay = cal.get(Calendar.DAY_OF_MONTH);

        //开始工作时间的年月日
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date workTime= simpleDateFormat.parse(entryDate);
        cal.setTime(workTime);
        int workYear = cal.get(Calendar.YEAR);
        int workMonth = cal.get(Calendar.MONTH);
        int workDay = cal.get(Calendar.DAY_OF_MONTH);

        //得到工龄
        workYearTime = (double)nowYear - workYear; //得到年差
        if(nowMonth > workMonth){
            if ((nowMonth - workMonth)>6){
                workYearTime = workYearTime + 1;
            }else {
                workYearTime = workYearTime + 0.5;
            }

        }else if (nowMonth < workMonth){
            workYearTime = workYearTime - 1;//不到完整的一年,年差减一
            if ((12 - workMonth + nowMonth)>6){
                workYearTime = workYearTime + 1;
            }else {
                workYearTime = workYearTime + 0.5;
            }
        }
        System.out.println("工作年限(N) = " + workYearTime);
        return workYearTime;
    }



}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值