Calcular salario mensual quitado por baja laboral en Java



//calcula lo que te quita de las bajas de ese mes, le pasas la fecha de inicio de la baja, la fecha de final y lo que debería cobrar ese mes el trabajador. Además hay una variable fechaTeclado, que es la fecha del día uno del mes a calcular
private static double CalcularBajas(Date inicioBaja, Date finBaja, double brutoMensual){
double salarioDiario = brutoMensual/30;
int diasInicioFin = calcularDiasAFecha(inicioBaja, finBaja);

if(inicioBaja.getMonth()==fechaTeclado.getMonth()){
int diasEntreFechas = calcularDiasAFecha(inicioBaja, ponerDiasFechaFinMes(fechaTeclado));
if(diasInicioFin<diasEntreFechas){
return dineroBaja(salarioDiario, diasInicioFin);
}else{
return dineroBaja(salarioDiario, diasEntreFechas);
}



}else if(fechaTeclado.after(inicioBaja) && finBaja==null ){
int diasPrimerMes = calcularDiasAFecha(inicioBaja, ponerDiasFechaFinMes(inicioBaja));

if(fechaTeclado.getMonth()-1==inicioBaja.getMonth()){
int diasSegundoMes = calcularDiasAFecha(fechaTeclado, ponerDiasFechaFinMes(fechaTeclado));
if(diasPrimerMes<3){
return (salarioDiario*(3-diasPrimerMes))/2+(18*salarioDiario)/4;
}else{
return (salarioDiario*(21-diasPrimerMes))/4;
}

}
}else if(fechaTeclado.after(inicioBaja) && fechaTeclado.before(finBaja)){
int diasPrimerMes = calcularDiasAFecha(inicioBaja, ponerDiasFechaFinMes(inicioBaja));

if(fechaTeclado.getMonth()-1==inicioBaja.getMonth()){
int diasSegundoMes = calcularDiasAFecha(fechaTeclado, ponerDiasFechaFinMes(fechaTeclado));
if(diasPrimerMes<3){
return (salarioDiario*(3-diasPrimerMes))/2+(18*salarioDiario)/4;
}else{
return (salarioDiario*(21-diasPrimerMes))/4;
}

}
}





return 0;

}

private static double dineroBaja(double salarioDiario, int diasEntreFechas) {
double dineroQuitadoPorBaja50 = 0;
double dineroQuitadoPorBaja25 = 0;
if(diasEntreFechas>0&&diasEntreFechas<=3){
//50 por ciento
dineroQuitadoPorBaja50 = (salarioDiario*diasEntreFechas)/2;
}else if (diasEntreFechas>3&&diasEntreFechas<21){
//50 y 25 por ciento
dineroQuitadoPorBaja50 = (salarioDiario*3)/2;
dineroQuitadoPorBaja25 = (salarioDiario*(diasEntreFechas-3))/4;
}else if(diasEntreFechas>20){
//50, 25 y 0 por ciento
dineroQuitadoPorBaja50 = (salarioDiario*3)/2;
dineroQuitadoPorBaja25 = (salarioDiario*(17))/4;
}

return dineroQuitadoPorBaja25+dineroQuitadoPorBaja50;
}



private static Date ponerDiasFechaFinMes(Date fecha){

     Calendar calendar = Calendar.getInstance();
     calendar.setTime(fecha); // Configuramos la fecha que se recibe
     //calendar.set(Calendar.DAY_OF_YEAR, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
     int dias = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
     Date aux = calendar.getTime();
     Date ret = new Date(aux.getYear(), aux.getMonth(), dias);
   
     return ret; // Devuelve el objeto Date con los nuevos días añadidos
}