コード例 #1
0
        public Mensaje cargarVariablesEmpleadoAsistencias(DateTime fechaInicial, DateTime fechaFinal, CalculoUnidades calculoUnidades, PeriodosNomina periodoNomina, DateTime?fechaBajaFiniq, bool?modificarDiasTrabajados, bool acumularAsis,
                                                          string claveEmpleado, string claveRazonSocial, string claveTipoNomina, string claveTipoCorrida, DateTime fechaRangoInicial, DateTime fechaRangoFinal, Dictionary <string, object> valoresConceptosEmpleados, DBContextSimple dbContextSimple)
        {
            try
            {
                inicializaVariableMensaje();
                pagarPrimero3Dias = 0;
                if (valoresConceptosEmpleados == null)
                {
                    valoresConceptosEmpleados = new Dictionary <string, object>();
                }
                double diasAusencias = 0, diasIncapacidadEnfermedad = 0,
                       diasIncapacidadAccidente = 0, diasIncapacidadMaternidad = 0, diasOtrasIncapacidad = 0,
                       festivo = 0, descanso = 0, laborados = 0;
                double hrsExtraDoble = 0.0, hrsExtraTriple = 0.0, retardos = 0.0, permisoSinSueldo = 0.0, permisoConSueldo = 0.0,
                       descansoLaborado = 0.0, festivoLaborado = 0.0, domingoLaborado = 0.0, diasRetardos = 0.0, diasFaltas = 0.0;

                List <Asistencias> listAsistencias = obtenerAsistencias(fechaInicial, fechaFinal, periodoNomina, fechaBajaFiniq, claveEmpleado, claveRazonSocial, claveTipoNomina, claveTipoCorrida,
                                                                        fechaRangoInicial, fechaRangoFinal, dbContextSimple);
                if (mensajeResultado.noError != 0)
                {
                    return(mensajeResultado);
                }
                List <Asistencias> listAsistenciaIncapacidadEnfermedad = new List <Asistencias>();
                int i;
                for (i = 0; i < listAsistencias.Count; i++)
                {
                    switch (Convert.ToInt16(listAsistencias[i].excepciones.clave))
                    {
                    case 0:
                        laborados++;
                        break;

                    case 1:
                        retardos += listAsistencias[i].cantidad.GetValueOrDefault();
                        diasRetardos++;
                        break;

                    case 2:
                        if (listAsistencias[i].cantidad == null)
                        {
                            diasFaltas++;
                        }
                        else if (listAsistencias[i].cantidad.GetValueOrDefault() == 0.50)
                        {
                            diasFaltas = diasFaltas + 0.5;
                        }
                        else
                        {
                            diasFaltas++;
                        }
                        break;

                    case 3:
                        diasAusencias++;
                        break;

                    case 4:
                        permisoConSueldo++;
                        break;

                    case 5:
                        permisoSinSueldo++;
                        break;

                    case 6:
                        listAsistenciaIncapacidadEnfermedad.Add(listAsistencias[i]);
                        diasIncapacidadEnfermedad++;
                        break;

                    case 7:
                        diasIncapacidadAccidente++;
                        break;

                    case 8:
                        diasIncapacidadMaternidad++;
                        break;

                    case 9:
                        diasOtrasIncapacidad++;
                        break;

                    case 10:
                        descansoLaborado = listAsistencias[i].cantidad.GetValueOrDefault();
                        break;

                    case 11:
                        if (listAsistencias[i].excepciones.tipoDatoExcepcion == TipoDatoExcepcion.SINDATO)
                        {
                            festivoLaborado++;
                        }
                        else
                        {
                            festivoLaborado = listAsistencias[i].cantidad.GetValueOrDefault();
                        }
                        break;

                    case 12:
                        domingoLaborado = listAsistencias[i].cantidad.GetValueOrDefault();
                        break;

                    case 13:      ///"Tiempo extra == 13" falta
                        break;

                    case 14:
                        hrsExtraDoble = listAsistencias[i].cantidad.GetValueOrDefault();
                        break;

                    case 15:
                        hrsExtraTriple = listAsistencias[i].cantidad.GetValueOrDefault();
                        break;

                    case 16:
                        descanso++;
                        break;

                    case 17:
                        festivo++;
                        break;
                    }
                }

                if (listAsistencias.Count == 0)
                {
                    if (fechaRangoInicial.CompareTo(fechaRangoFinal) == 0)
                    {
                        laborados = 1;
                    }
                    else
                    {
                        laborados = cantidadDiasEntreDosFechas(fechaRangoInicial, fechaRangoFinal) + 1;
                    }
                }
                if (!acumularAsis)
                {
                    if (modificarDiasTrabajados == null ? true : modificarDiasTrabajados.GetValueOrDefault())
                    {
                        if (valoresConceptosEmpleados.ContainsKey("Laborado".ToUpper()))
                        {
                            valoresConceptosEmpleados["Laborado".ToUpper()] = laborados;
                        }
                        else
                        {
                            valoresConceptosEmpleados.Add("Laborado".ToUpper(), laborados);
                        }
                    }
                    valoresConceptosEmpleados["HorasExtrasDobles".ToUpper()] = hrsExtraDoble;
                    //valoresConceptosEmpleados.Add("HorasExtrasDobles".ToUpper(), hrsExtraDoble);
                    valoresConceptosEmpleados["HorasExtrasTriples".ToUpper()] = hrsExtraTriple;
                }

                int diasAPagar     = 0;
                int diasApagarIMSS = 0;
                pagarPrimero3Dias = 0;
                if (listAsistenciaIncapacidadEnfermedad.Count > 0)
                {
                    listAsistenciaIncapacidadEnfermedad = (from list in listAsistenciaIncapacidadEnfermedad orderby list.fecha select list).ToList();

                    List <RegistroIncapacidad> listRegistroIncapacidad = obtenerIncapacidadesPorEnfermedad(listAsistenciaIncapacidadEnfermedad[0].fecha.GetValueOrDefault(), listAsistenciaIncapacidadEnfermedad[listAsistenciaIncapacidadEnfermedad.Count - 1].fecha.GetValueOrDefault(), claveEmpleado, claveRazonSocial, dbContextSimple);
                    if (mensajeResultado.noError != 0)
                    {
                        return(mensajeResultado);
                    }
                    for (i = 0; i < listRegistroIncapacidad.Count; i++)
                    {
                        if (listRegistroIncapacidad[i].pagarTresPrimeroDias)
                        {
                            int diasIncapacidadEnf = listRegistroIncapacidad[i].diasIncapacidad.GetValueOrDefault();
                            diasApagarIMSS = diasIncapacidadEnf;
                            if (diasIncapacidadEnf <= 3)
                            {
                                diasAPagar = diasIncapacidadEnf;
                            }
                            else
                            {
                                diasAPagar = 3;
                            }
                            DateTime fechaIncap = listRegistroIncapacidad[i].fechaInicial.GetValueOrDefault();

                            for (int dias = 0; dias < diasIncapacidadEnf; dias++)
                            {
                                if ((fechaIncap.CompareTo(periodoNomina.fechaInicial) > 0 || fechaIncap.CompareTo(periodoNomina.fechaInicial) == 0)
                                    & (fechaIncap.CompareTo(periodoNomina.fechaFinal) == 0 || fechaIncap.CompareTo(periodoNomina.fechaFinal) < 0))
                                {
                                    if (diasAPagar > 0)
                                    {
                                        pagarPrimero3Dias++;
                                    }
                                    diasAPagar--;
                                    diasApagarIMSS--;
                                }
                                else if (fechaIncap.CompareTo(periodoNomina.fechaInicial) < 0)
                                {
                                    diasAPagar--;
                                    diasApagarIMSS--;
                                }
                                else if (fechaIncap.CompareTo(periodoNomina.fechaFinal) > 0)
                                {
                                    break;
                                }
                                if (diasAPagar == 0 | pagarPrimero3Dias == 3)
                                {
                                    break;
                                }
                                fechaIncap.AddDays(fechaIncap.Day + 1);
                            }
                            //diasIncapacidadEnfermedad = diasIncapacidadEnfermedad > 3 ? diasIncapacidadEnfermedad - 3 : 0;
                            ///diasIncapacidadEnfermedad = diasIncapacidadEnfermedad - diasUsadosPagar;
                        }
                    }
                }

                if (acumularAsis)
                {
                    valoresConceptosEmpleados["DiasIncapacidadEmpleadoAcum".ToUpper()] = diasIncapacidadEnfermedad + diasIncapacidadAccidente + diasIncapacidadMaternidad + diasOtrasIncapacidad;
                    valoresConceptosEmpleados["FaltasAcum".ToUpper()]     = diasFaltas;
                    valoresConceptosEmpleados["AusentismoAcum".ToUpper()] = diasAusencias;
                }
                else
                {
                    valoresConceptosEmpleados["IncapacidadEnfermedad".ToUpper()]   = diasIncapacidadEnfermedad;
                    valoresConceptosEmpleados["IncapacidadAccidente".ToUpper()]    = diasIncapacidadAccidente;
                    valoresConceptosEmpleados["IncapacidadMaternidad".ToUpper()]   = diasIncapacidadMaternidad;
                    valoresConceptosEmpleados["OtrasIncapacidad".ToUpper()]        = diasOtrasIncapacidad;
                    valoresConceptosEmpleados["DiasIncapacidadEmpleado".ToUpper()] = diasIncapacidadEnfermedad + diasIncapacidadAccidente + diasIncapacidadMaternidad + diasOtrasIncapacidad;
                    valoresConceptosEmpleados["Faltas".ToUpper()] = diasFaltas;//Parametro 128 0 dias dias faltas
                    if (modificarDiasTrabajados == null ? true : !modificarDiasTrabajados.GetValueOrDefault())
                    {
                        valoresConceptosEmpleados["Ausentismo".ToUpper()] = diasAusencias;
                    }
                    valoresConceptosEmpleados["TExtrasDiaDescanso".ToUpper()]     = descansoLaborado;
                    valoresConceptosEmpleados["TExtrasDiaFestivo".ToUpper()]      = festivoLaborado;
                    valoresConceptosEmpleados["TExtrasDiaDomingo".ToUpper()]      = domingoLaborado;
                    valoresConceptosEmpleados["Retardos".ToUpper()]               = retardos;
                    valoresConceptosEmpleados["DiasRetardos".ToUpper()]           = diasRetardos;
                    valoresConceptosEmpleados["PermisoConSueldo".ToUpper()]       = permisoConSueldo;
                    valoresConceptosEmpleados["PermisoSinSueldo".ToUpper()]       = permisoSinSueldo;
                    valoresConceptosEmpleados["DiasFestivos".ToUpper()]           = festivo;
                    valoresConceptosEmpleados["DiasDescanso".ToUpper()]           = descanso;
                    valoresConceptosEmpleados["DiasIncapacidadEmpresa".ToUpper()] = pagarPrimero3Dias;
                    valoresConceptosEmpleados["DiasIncapacidadIMSS".ToUpper()]    = diasApagarIMSS;
                    if (calculoUnidades != null)
                    {
                        if (modificarDiasTrabajados == null ? true : modificarDiasTrabajados.GetValueOrDefault())
                        {
                            calculoUnidades.diasTrabajados = laborados;
                        }
                        calculoUnidades.hrsExtraDoble             = hrsExtraDoble;
                        calculoUnidades.hrsExtraTriple            = hrsExtraTriple;
                        calculoUnidades.diasIncapacidadEnfermedad = Convert.ToInt32(diasIncapacidadEnfermedad);
                        calculoUnidades.diasIncapacidadAccidente  = Convert.ToInt32(diasIncapacidadAccidente);
                        calculoUnidades.diasIncapacidadMaternidad = Convert.ToInt32(diasIncapacidadMaternidad);
                        calculoUnidades.diasOtrasIncapacidades    = Convert.ToInt32(diasOtrasIncapacidad);
                        calculoUnidades.diasFalta = diasFaltas;
                        if (modificarDiasTrabajados == null ? true : !modificarDiasTrabajados.GetValueOrDefault())
                        {
                            calculoUnidades.diasAusentismo = Convert.ToInt32(diasAusencias);
                        }
                        calculoUnidades.diasDescansoLaborado = descansoLaborado;
                        calculoUnidades.diasFestivoLaborado  = festivoLaborado;
                        calculoUnidades.diasDomingoLaborado  = domingoLaborado;
                        calculoUnidades.diasRetardo          = retardos;
                        calculoUnidades.diasPermisoConSueldo = permisoConSueldo;
                        calculoUnidades.diasPermisoSinSueldo = permisoSinSueldo;
                        calculoUnidades.diasFestivo          = Convert.ToInt32(festivo);
                        calculoUnidades.diasDescanso         = Convert.ToInt32(descanso);
                    }
                }
                mensajeResultado.noError   = 0;
                mensajeResultado.resultado = valoresConceptosEmpleados;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("cargarVariablesEmpleadoAsistencias()1_Error: ").Append(ex));
                mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error   = ex.GetBaseException().ToString();
            }
            return(mensajeResultado);
        }
コード例 #2
0
        public Mensaje cargarVariablesEmpleadoVacaciones(CalculoUnidades calculoUnidades, PlazasPorEmpleadosMov plazasPorEmpleadosMovEjecutandose, bool acumularVac, PeriodosNomina periodoNomina,
                                                         DateTime?fechaBajaFiniq, string claveTipoNomina, string claveCorrida, Dictionary <string, object> valoresConceptosEmpleados, DBContextSimple dbContextSimple)
        {
            int    x;
            int    diasVacaciones      = 0;
            double diasPrimaVacacional = 0.0;

            try
            {
                bool corridaVacaciones = false;
                if (String.Equals(claveCorrida, "VAC", StringComparison.OrdinalIgnoreCase))
                {
                    corridaVacaciones = true;
                }
                List <VacacionesAplicacion> vacacionesAplicacion = obtenerVacaciones(periodoNomina, plazasPorEmpleadosMovEjecutandose, fechaBajaFiniq, claveTipoNomina, claveCorrida, corridaVacaciones, dbContextSimple);
                if (mensajeResultado.noError != 0)
                {
                    return(mensajeResultado);
                }
                if (vacacionAplicacionActual != null)
                {
                    //                vacacionesAplicacion.add(vacacionAplicacionActual);
                }
                vacacionesAplicacionStatus = vacacionesAplicacion;
                DateTime fechaSalidaVacaciones = new DateTime(), fechaRegresoVacaciones = new DateTime();
                fechaSalidaVacaciones.AddYears(1900);
                fechaRegresoVacaciones.AddYears(1900);
                TiposVacaciones tipoVacaciones = null;
                if (vacacionesAplicacion != null)
                {
                    for (x = 0; x < vacacionesAplicacion.Count; x++)
                    {
                        fechaSalidaVacaciones = vacacionesAplicacion[x].vacacionesDisfrutadas.salidaVacac.GetValueOrDefault();
                        if (vacacionesAplicacion[x].vacacionesDisfrutadas.regresoVac != null)
                        {
                            fechaRegresoVacaciones = vacacionesAplicacion[x].vacacionesDisfrutadas.regresoVac.GetValueOrDefault();
                        }
                        if (vacacionesAplicacion[x].diasVac == null)
                        {
                            vacacionesAplicacion[x].diasVac = 0;
                        }
                        diasVacaciones += vacacionesAplicacion[x].diasVac.GetValueOrDefault();
                        if (vacacionesAplicacion[x].diasPrima == null)
                        {
                            vacacionesAplicacion[x].diasPrima = 0.0;
                        }
                        diasPrimaVacacional += vacacionesAplicacion[x].diasPrima.GetValueOrDefault();
                        tipoVacaciones       = vacacionesAplicacion[x].vacacionesDisfrutadas.tiposVacaciones;
                        if (corridaVacaciones)
                        {
                            bool asigno = false;
                            if (vacacionesAplicacion[x].diasPrima > 0.0)
                            {
                                vacacionesAplicacion[x].vacacionesDisfrutadas.periodoPago = periodoNomina;
                                asigno = true;
                            }
                            if (vacacionesAplicacion[x].diasVac > 0)
                            {
                                vacacionesAplicacion[x].vacacionesDisfrutadas.periodoPago = periodoNomina;
                                asigno = true;
                            }
                            if (asigno)
                            {
                                dbContextSimple.Set <VacacionesDisfrutadas>().AddOrUpdate(vacacionesAplicacion[x].vacacionesDisfrutadas);
                            }
                        }
                        //                    fechaContador.setTime(fechaInicialVacaciones.getTime());
                        //                    while (!fechaContador.after(fechaRegresoVacaciones)) {
                        //                        if ((fechaContador.getTime().compareTo(fechaInicial) > 0 || fechaContador.getTime().compareTo(fechaInicial) == 0)
                        //                                & (fechaContador.getTime().compareTo(fechaFinal) == 0 || fechaContador.getTime().compareTo(fechaFinal) < 0)) {
                        //                            diasVacacionesDisfPeriodo += 1;
                        //                        }
                        //
                        //                        fechaContador.add(Calendar.DATE, 1);
                        //                    }
                    }
                }

                if (acumularVac)
                {
                    valoresConceptosEmpleados["diasVacacionesAcum".ToUpper()] = diasVacaciones;
                }
                else
                {
                    valoresConceptosEmpleados["fechaSalidaVacaciones".ToUpper()]  = fechaSalidaVacaciones;
                    valoresConceptosEmpleados["fechaRegresoVacaciones".ToUpper()] = fechaRegresoVacaciones;
                    ////////            valoresConceptosEmpleados.put("fechaInicialTrabajadas".toUpperCase(), (Date) fechaInicialTrabajadas.getTime());
                    ////////            valoresConceptosEmpleados.put("fechaFinalTrabajadas".toUpperCase(), (Date) fechaFinalTrabajadas.getTime());
                    ////////////            valoresConceptosEmpleados.put("diasVacacionesDisfrutadas".toUpperCase(), (Integer) diasVacacionesDisfrutadas);
                    ////////////            valoresConceptosEmpleados.put("diasVacacionesTrabajadas".toUpperCase(), (Integer) diasVacacionesTrabajadas);
                    ////////            valoresConceptosEmpleados.put("diasVacacionesDisfrutadas".toUpperCase(), (Integer) diasVacacionesDisfPeriodo);
                    ////////            valoresConceptosEmpleados.put("diasVacacionesTrabajadas".toUpperCase(), (Integer) diasVacacionesTrabPeriodo);
                    ////////////            valoresConceptosEmpleados.put("diasVacacionesDisfPeriodo".toUpperCase(), (Integer) diasVacacionesDisfPeriodo);
                    ////////////            valoresConceptosEmpleados.put("diasVacacionesTrabPeriodo".toUpperCase(), (Integer) diasVacacionesTrabPeriodo);

                    valoresConceptosEmpleados["diasVacaciones".ToUpper()] = Convert.ToDouble(diasVacaciones);
                    valoresConceptosEmpleados["diasPrima".ToUpper()]      = diasPrimaVacacional;
                    valoresConceptosEmpleados["tipoVacaciones".ToUpper()] = tipoVacaciones == null ? "" : tipoVacaciones.nombre;
                    if (calculoUnidades != null)
                    {
                        calculoUnidades.diasPrimaVacacional = diasPrimaVacacional;
                        calculoUnidades.diasVacaciones      = diasVacaciones;
                        calculoUnidades.tiposVacaciones     = tipoVacaciones;
                    }
                }
                mensajeResultado.noError   = 0;
                mensajeResultado.resultado = valoresConceptosEmpleados;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("cargarVariablesEmpleadoVacaciones()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
            }
            return(mensajeResultado);
        }