Example #1
0
        //usado calculo de nomina
        public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] factorIntegracion, DBContextAdapter dbContextSimple, DBContextAdapter dbContextMaster)
        {
            this.dbContextSimple = (DBContextSimple)dbContextSimple.context;
            this.dbContextMaster = (DBContextMaster)dbContextMaster.context;

            mensajeResultado = calcularVacacionesDevengadasEmpleados(razonesSociales, factorIntegracion, (DBContextSimple)dbContextSimple.context, (DBContextMaster)dbContextMaster.context, true);

            dbContextSimple = null;
            dbContextMaster = null;

            return(mensajeResultado);
        }
 public Mensaje buscaEmpleadoPTU(string claveRazonSocial, decimal idEmpleado, DBContextSimple dbContextSimple)
 {
     try
     {
         ptuEmpleado = (from ptuEm in dbContextSimple.Set <PtuEmpleados>()
                        where ptuEm.razonesSociales.clave == claveRazonSocial && ptuEm.empleados.id == idEmpleado
                        select ptuEm).SingleOrDefault();
         mensajeResultado.noError   = 0;
         mensajeResultado.resultado = ptuEmpleado;
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscaEmpleadoPTU()1_Error: ").Append(ex));
         mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
         mensajeResultado.error     = ex.GetBaseException().ToString();
         mensajeResultado.resultado = null;
         dbContextSimple.Database.CurrentTransaction.Rollback();
     }
     return(mensajeResultado);
 }
        public Mensaje buscarValoresPTU(String campo, string claveEmpleado, string claveRazonSocial, int ejercicio, DBContextSimple dbContextSimple)
        {
            inicializaVariableMensaje();
            Object resultado = null;

            try
            {
                StringBuilder query = new StringBuilder(0);
                if (string.Equals(campo, "PTUDIAS", StringComparison.OrdinalIgnoreCase))
                {
                    resultado = (from ptu in dbContextSimple.Set <PtuEmpleados>()
                                 where ptu.empleados.clave == claveEmpleado && ptu.razonesSociales.clave == claveRazonSocial && ptu.ejercicio == ejercicio
                                 select ptu.ptuDias).SingleOrDefault();
                }
                else if (string.Equals(campo, "PTUPERCEPCIONES", StringComparison.OrdinalIgnoreCase))
                {
                    resultado = (from ptu in dbContextSimple.Set <PtuEmpleados>()
                                 where ptu.empleados.clave == claveEmpleado && ptu.razonesSociales.clave == claveRazonSocial && ptu.ejercicio == ejercicio
                                 select ptu.ptuPercepciones).SingleOrDefault();
                }
                else if (string.Equals(campo, "PTUTOTAL", StringComparison.OrdinalIgnoreCase))
                {
                    resultado = (from ptu in dbContextSimple.Set <PtuEmpleados>()
                                 where ptu.empleados.clave == claveEmpleado && ptu.razonesSociales.clave == claveRazonSocial && ptu.ejercicio == ejercicio
                                 select ptu.ptuDias + ptu.ptuPercepciones).SingleOrDefault();
                }
                if (resultado == null)
                {
                    mensajeResultado.resultado = 0;
                }
                else
                {
                    mensajeResultado.resultado = resultado;
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscarValoresPTU()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
            }
            return(mensajeResultado);
        }
 public Mensaje buscaCalculoPTU(string claveRazonsocial, DateTime fechaInicio, DateTime fechaFin, DBContextSimple dbContextSimple)
 {
     inicializaVariableMensaje();
     isCalculoPTU = false;
     try
     {
         ptuDatosGenerales = (from ptu in dbContextSimple.Set <PtuDatosGenerales>()
                              where (fechaInicio >= ptu.fechaCalculo && fechaFin <= ptu.fechaCalculo) && ptu.razonesSociales.clave.Equals(claveRazonsocial)
                              select ptu).SingleOrDefault <PtuDatosGenerales>();
         if (ptuDatosGenerales != null)
         {
             DateTime fechaDeCalculo      = ptuDatosGenerales.fechaCalculo.GetValueOrDefault(),
                      fechaPeriodoInicial = fechaInicio,
                      fechaPeriodoFinal   = fechaFin;
             if ((DateTime.Compare(fechaDeCalculo, fechaPeriodoInicial) > 0 ||
                  DateTime.Compare(fechaDeCalculo, fechaPeriodoInicial) == 0) &&
                 (DateTime.Compare(fechaDeCalculo, fechaPeriodoFinal) < 0 ||
                  DateTime.Compare(fechaDeCalculo, fechaPeriodoFinal) == 0))
             {
                 isCalculoPTU = true;
             }
         }
         mensajeResultado.noError   = 0;
         mensajeResultado.resultado = ptuDatosGenerales;
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscaCalculoPTU()1_Error: ").Append(ex));
         mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
         mensajeResultado.error     = ex.GetBaseException().ToString();
         mensajeResultado.resultado = null;
         dbContextSimple.Database.CurrentTransaction.Rollback();
     }
     return(mensajeResultado);
 }
        private List <RegistroIncapacidad> obtenerIncapacidadesPorEnfermedad(DateTime fechaInicial, DateTime fechaFinal, string claveEmpleado, string razonSocial, DBContextSimple dbContextSimple)
        {
            List <RegistroIncapacidad> listRegistroIncapacidad = null;

            try
            {
                int ramoEnfermedadGeneral = (int)RamoSeguro.ENFERMEDAD_GENERAL;
                listRegistroIncapacidad = (from a in dbContextSimple.Set <RegistroIncapacidad>()
                                           where a.ramoSeguro == ramoEnfermedadGeneral && a.empleados.clave == claveEmpleado &&
                                           a.empleados.razonesSociales.clave == razonSocial && ((a.fechaInicial >= fechaInicial && a.fechaInicial <= fechaFinal) || (a.fechaFinal >= fechaInicial && a.fechaInicial <= fechaFinal))
                                           orderby a.fechaInicial
                                           select a).ToList();
                listRegistroIncapacidad = listRegistroIncapacidad == null ? new List <RegistroIncapacidad>() : listRegistroIncapacidad;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("obtenerIncapacidadesPorEnfermedad()1_Error: ").Append(ex));
                mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error   = ex.GetBaseException().ToString();
                listRegistroIncapacidad  = new List <RegistroIncapacidad>();
            }
            return(listRegistroIncapacidad);
        }
        private List <Asistencias> obtenerAsistencias(DateTime fechaInicial, DateTime fechaFinal, PeriodosNomina periodoNomina, DateTime?fechaBajaFiniq, string claveEmpleado, string claveRazonSocial,
                                                      string claveTipoNomina, string claveTipoCorrida, DateTime fechaRangoInicial, DateTime fechaRangoFinal, DBContextSimple dbContextSimple)
        {
            List <Asistencias> listAsistencias = null;

            try
            {
                if (periodoNomina == null)
                {
                    return(new List <Asistencias>());
                }
                if (fechaBajaFiniq != null)
                {
                    PeriodosNomina periodoNomTemp = (from p in dbContextSimple.Set <PeriodosNomina>()
                                                     where p.tipoNomina.clave == claveTipoNomina &&
                                                     p.tipoCorrida.clave == claveTipoCorrida &&
                                                     (fechaBajaFiniq >= p.fechaInicial && fechaBajaFiniq <= p.fechaFinal)
                                                     select p).SingleOrDefault();
                    if (periodoNomTemp == null)
                    {
                        fechaInicial = fechaRangoInicial;
                        fechaFinal   = fechaRangoFinal;
                    }
                    else
                    {
                        fechaInicial = periodoNomTemp.fechaInicial.GetValueOrDefault();
                        fechaFinal   = periodoNomTemp.fechaFinal.GetValueOrDefault();
                    }
                }
                listAsistencias = (from a in dbContextSimple.Set <Asistencias>()
                                   where a.empleados.clave == claveEmpleado && a.tipoNomina.clave == claveTipoNomina && a.razonesSociales.clave == claveRazonSocial &&
                                   a.periodosNomina.tipoCorrida.clave == claveTipoCorrida && (a.fecha >= fechaInicial && a.fecha <= fechaFinal)
                                   select a).ToList();
                listAsistencias = listAsistencias == null ? new List <Asistencias>() : listAsistencias;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("obtenerAsistencias()1_Error: ").Append(ex));
                mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error   = ex.GetBaseException().ToString();
                listAsistencias          = new List <Asistencias>();
            }
            return(listAsistencias);
        }
        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);
        }
        public Mensaje agregarVacacionesAuto(RazonesSociales razonSocial, PlazasPorEmpleadosMov plaEmp, PeriodosNomina periodoNomina, object[,] tablaFactorIntegracion, PagarPrimaVacionalyVacacionesAuto pagarVacaAuto, DBContextSimple dbContextSimple)
        {
            try
            {
                VacacionesDisfrutadas vacDis             = new VacacionesDisfrutadas();
                Mensaje vacDisgau                        = new Mensaje();
                VacacionesDisfrutadas    vacDisconId     = new VacacionesDisfrutadas();
                VacacionesDisfrutadasDAO vacaDisfrutadas = new VacacionesDisfrutadasDAO();
                VacacionesAplicacion     VacAplic        = new VacacionesAplicacion();
                VacacionesDevengadas     vacacionesDeven = null;
                DateTime fechaEmplado                    = new DateTime();

                if (vacDev.getDevengadaActual() == null || vacDev.getDevengadaActual().Count == 0)
                {
                    mensajeResultado = calcularVacacionesDevengadasEmpleados(razonSocial, tablaFactorIntegracion, dbContextSimple, null);
                    if (mensajeResultado.noError != 0)
                    {
                        return(mensajeResultado);
                    }
                }

                if (vacDev.getDevengadaActual().Count > 0)
                {
                    vacacionesDeven = vacDev.getDevengadaActual()[plaEmp.plazasPorEmpleado.empleados.clave];
                    DateTime calfecha       = new DateTime();
                    DateTime fechaActual    = DateTime.Now.Date;
                    DateTime calfechaActual = DateTime.Now;
                    if (vacacionesDeven != null)
                    {
                        vacacionAplicacionActual = new VacacionesAplicacion();
                        calfecha = plaEmp.plazasPorEmpleado.fechaPrestaciones.Value;
                        calfecha.AddYears(calfecha.Year + vacacionesDeven.ejercicio.Value);
                        fechaEmplado = calfecha.Date;
                        DateTime fechaPerIni   = periodoNomina.fechaInicial.Value.Date;
                        DateTime fechaPerFinal = periodoNomina.fechaFinal.Value.Date;
                        if (fechaEmplado.CompareTo(fechaPerIni) >= 0 && fechaEmplado.CompareTo(fechaPerFinal) <= 0)
                        {
                            if (pagarVacaAuto == PagarPrimaVacionalyVacacionesAuto.PRIMACACIONALALANIVERSARIO)
                            {
                                vacDis.empleados             = plaEmp.plazasPorEmpleado.empleados;
                                vacDis.diasPrimaDisfrutados  = vacacionesDeven.diasPrimaVaca;
                                vacDis.diasVacDisfrutados    = (0);
                                vacDis.ejercicioAplicacion   = calfechaActual.Year;
                                vacDis.pagarPrimaVacacional  = true;
                                vacDis.pagarVacaciones       = false;
                                vacDis.periodoAplicacion     = periodoNomina;
                                vacDis.periodoPago           = periodoNomina;
                                vacDis.razonesSociales       = razonSocial;
                                vacDis.registroInicial       = false;
                                vacDis.regresoVac            = calfechaActual;
                                vacDis.salidaVacac           = calfechaActual;
                                vacDis.statusVacaciones      = StatusVacaciones.PORCALCULAR;
                                vacDis.tipoNominaAplicacion  = periodoNomina.tipoNomina;
                                vacDis.tipoCorridaAplicacion = periodoNomina.tipoCorrida;
                                dbContextSimple.Set <VacacionesDisfrutadas>().Add(vacDis);
                                dbContextSimple.SaveChanges();

                                vacDisconId                    = vacDis;
                                VacAplic.diasPrima             = vacacionesDeven.diasPrimaVaca;
                                VacAplic.diasVac               = 0;
                                VacAplic.vacacionesDevengadas  = vacacionesDeven;
                                VacAplic.vacacionesDisfrutadas = vacDisconId;
                                dbContextSimple.Set <VacacionesAplicacion>().AddOrUpdate(VacAplic);
                                dbContextSimple.SaveChanges();
                                vacacionAplicacionActual = VacAplic;
                            }
                            else if (pagarVacaAuto == PagarPrimaVacionalyVacacionesAuto.PRIMACACIONALYVACACIONESALANIVERSARIO)
                            {
                                vacDis.empleados            = plaEmp.plazasPorEmpleado.empleados;
                                vacDis.diasPrimaDisfrutados = vacacionesDeven.diasPrimaVaca;
                                vacDis.diasVacDisfrutados   = vacacionesDeven.diasVacaciones;
                                vacDis.ejercicioAplicacion  = calfechaActual.Year;
                                vacDis.pagarPrimaVacacional = true;
                                vacDis.pagarVacaciones      = false;
                                vacDis.periodoAplicacion    = periodoNomina;
                                vacDis.periodoPago          = periodoNomina;
                                vacDis.razonesSociales      = razonSocial;
                                vacDis.registroInicial      = false;
                                vacDis.regresoVac           = calfechaActual;
                                vacDis.salidaVacac          = calfechaActual;
                                vacDis.statusVacaciones     = StatusVacaciones.PORCALCULAR;
                                vacDis.tipoNominaAplicacion = periodoNomina.tipoNomina;
                                dbContextSimple.Set <VacacionesDisfrutadas>().Add(vacDis);
                                dbContextSimple.SaveChanges();

                                vacDisconId                    = vacDis;
                                VacAplic.diasPrima             = vacacionesDeven.diasPrimaVaca;
                                VacAplic.diasVac               = vacacionesDeven.diasVacaciones;
                                VacAplic.vacacionesDevengadas  = vacacionesDeven;
                                VacAplic.vacacionesDisfrutadas = vacDisconId;
                                dbContextSimple.Set <VacacionesAplicacion>().AddOrUpdate(VacAplic);
                                dbContextSimple.SaveChanges();
                                vacacionAplicacionActual = VacAplic;
                            }
                        }
                    }
                }
                mensajeResultado.resultado = vacacionAplicacionActual;
                mensajeResultado.noError   = 0;
                mensajeResultado.error     = "";
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("agregarVacacionesAuto()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
                dbContextSimple.Database.CurrentTransaction.Rollback();
            }
            return(mensajeResultado);
        }
        private List <VacacionesAplicacion> obtenerVacaciones(PeriodosNomina periodo, PlazasPorEmpleadosMov plazasPorEmpleadosMovEjecutandose, DateTime?fechaBajaFiniq, string claveTipoNomina, string claveTipoCorrida, bool isCorridaVacaciones, DBContextSimple dbContextSimple)
        {
            List <VacacionesAplicacion> listVacacionesAplicacion = null;

            try
            {
                if (periodo == null)
                {
                    return(new List <VacacionesAplicacion>());
                }


                if (fechaBajaFiniq != null)
                {
                    PeriodosNomina periodosNominaTmp = null;
                    if (fechaBajaFiniq != null)
                    {
                        periodosNominaTmp = (from p in dbContextSimple.Set <PeriodosNomina>()
                                             where p.tipoNomina.clave == claveTipoNomina && p.tipoCorrida.clave == claveTipoCorrida &&
                                             (fechaBajaFiniq >= p.fechaInicial && fechaBajaFiniq <= p.fechaFinal)
                                             select p).SingleOrDefault();
                    }
                    decimal idPeriodo = periodo.id;
                    if (periodosNominaTmp != null)
                    {
                        idPeriodo = periodosNominaTmp.id;
                    }
                    listVacacionesAplicacion = (from va in dbContextSimple.Set <VacacionesAplicacion>()
                                                //join vd in dbContextSimple.Set<VacacionesDisfrutadas>() on va.vacacionesDisfrutadas.id equals vd.id
                                                //join em in dbContextSimple.Set<Empleados>() on vd.empleados.id equals em.id
                                                //join pa in dbContextSimple.Set<PeriodosNomina>() on vd.periodoAplicacion.id equals pa.id
                                                where va.vacacionesDisfrutadas.periodoAplicacion_ID == idPeriodo && va.vacacionesDisfrutadas.empleados_ID == plazasPorEmpleadosMovEjecutandose.plazasPorEmpleado.empleados.id
                                                select va).ToList();
                }
                else
                {
                    listVacacionesAplicacion = (from va in dbContextSimple.Set <VacacionesAplicacion>()
                                                join vd in dbContextSimple.Set <VacacionesDisfrutadas>() on va.vacacionesDisfrutadas.id equals vd.id
                                                join em in dbContextSimple.Set <Empleados>() on vd.empleados.id equals em.id
                                                join pa in dbContextSimple.Set <PeriodosNomina>() on vd.periodoAplicacion.id equals pa.id
                                                where em.id == plazasPorEmpleadosMovEjecutandose.plazasPorEmpleado.empleados.id &&
                                                (vd.fechaPago >= periodo.fechaInicial && vd.fechaPago <= periodo.fechaFinal)
                                                select va).ToList();
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("obtenerVacaciones()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
            }
            return(listVacacionesAplicacion);
        }
 public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] tablaFactorIntegracion, DBContextSimple dbContextSimple, DBContextMaster dbContextMaster)
 {
     mensajeResultado = vacDev.calcularVacacionesDevengadasEmpleados(razonesSociales, tablaFactorIntegracion, dbContextSimple, dbContextMaster, false);
     return(mensajeResultado);
 }
        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);
        }
        //List<PeriodosNomina>
        public Mensaje buscarPeriodosPorRangoMeses(int rangoDeMes, DateTime fechaPeriodoNomina, string claveTipoNomina, string claveTipoCorrida, DBContextSimple dbContextSimple)
        {
            inicializaVariableMensaje();
            List <PeriodosNomina> periodos = null;

            try
            {
                DateTime fechaRango = fechaPeriodoNomina;
                fechaRango.AddMonths(fechaPeriodoNomina.Month + rangoDeMes);
                int mesIni = -1, mesFin = -1;
                int yearPeriodo = fechaPeriodoNomina.Year;
                int mesPeriodo;
                int mesPeriodoRango;
                int mesEnero = -1;


                var query = from p in dbContextSimple.Set <PeriodosNomina>()
                            select new { p };

                if (mesIni == -1 & mesFin == -1)
                {
                    mesIni   = fechaPeriodoNomina.Month;
                    mesFin   = fechaRango.Month;
                    mesEnero = ENERO;
                }
                mesPeriodo      = mesIni;
                mesPeriodoRango = mesFin;
                if (fechaPeriodoNomina.Year > fechaRango.Year)
                {
                    query = from sub in query
                            where sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo && sub.p.acumularAMes.Value.Month <= mesPeriodo ||
                            (sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo - 1 && sub.p.acumularAMes.Value.Month == mesEnero && sub.p.acumularAMes.Value.Year == yearPeriodo) ||
                            (sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo - 1 && sub.p.acumularAMes.Value.Month >= mesPeriodoRango)
                            select sub;
                }
                else if (fechaPeriodoNomina.Year < fechaRango.Year)
                {
                    query = from sub in query
                            where sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo && sub.p.acumularAMes.Value.Month == mesPeriodo ||
                            (sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo && sub.p.acumularAMes.Value.Month == mesEnero && sub.p.acumularAMes.Value.Year == yearPeriodo + 1) ||
                            (sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo + 1 && sub.p.acumularAMes.Value.Month <= mesPeriodoRango && sub.p.acumularAMes.Value.Year == yearPeriodo + 2)
                            select sub;
                }
                else
                {
                    if (rangoDeMes < 0)
                    {
                        mesFin = fechaPeriodoNomina.Month;
                        mesIni = fechaRango.Month;
                    }
                    else
                    {
                        mesIni = fechaPeriodoNomina.Month;
                        mesFin = fechaRango.Month;
                    }
                    mesPeriodo      = mesIni;
                    mesPeriodoRango = mesFin;
                    if (fechaRango.Month == ENERO) //Mes Enero
                    {
                        mesPeriodo      = fechaPeriodoNomina.Month;
                        mesPeriodoRango = fechaRango.Month;
                        query           = from sub in query
                                          where sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo && (sub.p.acumularAMes.Value.Month <= mesPeriodo && sub.p.acumularAMes.Value.Year == yearPeriodo) ||
                                          (sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo - 1 && sub.p.acumularAMes.Value.Month == mesPeriodoRango && sub.p.acumularAMes.Value.Year == yearPeriodo)
                                          select sub;
                    }
                    else
                    {
                        query = from sub in query
                                where sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo && (sub.p.acumularAMes.Value.Month >= mesPeriodo && sub.p.acumularAMes.Value.Month <= mesPeriodoRango)
                                select sub;
                    }
                }
                periodos = (from sub in query select sub.p).ToList();
                mensajeResultado.noError   = 0;
                mensajeResultado.resultado = periodos;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscarPeriodosPorRangoMeses()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
            }
            return(mensajeResultado);
        }
        public Mensaje buscaPeriodoNominaActual(String claveTipoNomina, String claveTipoCorrida, decimal?idPeriodo, DateTime fechaActual, DBContextSimple dbContextSimple)
        {
            inicializaVariableMensaje();
            PeriodosNomina periodos = null;

            try {
                var query = from p in dbContextSimple.Set <PeriodosNomina>()
                            join t in dbContextSimple.Set <TipoNomina>() on p.tipoNomina.id equals t.id
                            join c in dbContextSimple.Set <TipoCorrida>() on p.tipoCorrida.id equals c.id
                            select new { p, t, c };
                if (idPeriodo == null)
                {
                    query = from sub in query
                            where (fechaActual >= sub.p.fechaInicial && fechaActual <= sub.p.fechaFinal) && sub.t.clave == claveTipoNomina && sub.c.clave == (claveTipoCorrida == null ? "PER" : claveTipoCorrida)
                            select sub;
                }
                else
                {
                    query = from sub in query
                            where sub.p.id == idPeriodo
                            select sub;
                }
                periodos = query.Select(p => p.p).Single();
                mensajeResultado.noError   = 0;
                mensajeResultado.error     = "";
                mensajeResultado.resultado = periodos;
            }
            catch (Exception ex) {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscaPeriodoNominaActual()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
            }
            return(mensajeResultado);
        }
Example #14
0
        public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] factorIntegracion, DBContextSimple dbContextSimple, DBContextMaster dbContextMaestra, bool usaCommit)
        {
            Object[,] reglaFactor = factorIntegracion;
            bool usoBDMaestra = false;

            devengadaActual = new Dictionary <string, VacacionesDevengadas>();
            try
            {
                //inicializaVariableMensaje();
                //if (dbContextSimple == null)
                //{
                //    setSession(dbContext);
                //}
                //else
                //{
                //    setSession(dbContextSimple);
                //}

                // dbContextSimple.Database.BeginTransaction();
                ControlVacDeveng control = (from c in dbContextSimple.Set <ControlVacDeveng>()
                                            where c.razonesSociales.clave == razonesSociales.clave &&
                                            c.fecha == (from ct in dbContextSimple.Set <ControlVacDeveng>()
                                                        select new { ct.fecha }).Max(p => p.fecha)
                                            select c).SingleOrDefault();

                DateTime        fechaUltimDev;
                List <DateTime> diasPendientes = null;
                if (control == null)
                {
                    diasPendientes = new List <DateTime>();
                    diasPendientes.Add(DateTime.Now);
                }
                else
                {
                    fechaUltimDev  = Convert.ToDateTime(control.fecha);
                    diasPendientes = getDaysBetweenDates(fechaUltimDev, new DateTime());
                }
                int d = 0;
                ControlVacDeveng controlCalculadas = null;
                for (d = 0; d < diasPendientes.Count; d++)
                {
                    if (diasPendientes.Count > 0)
                    {
                        //Obtiene empleados que cumplen aniversario en la empresa al día
                        List <PlazasPorEmpleado> plazasEmpleados = null;
                        DateTime fechapen = diasPendientes[d];
                        plazasEmpleados = (from o in dbContextSimple.Set <PlazasPorEmpleadosMov>()
                                           where
                                           (from m in dbContextSimple.Set <PlazasPorEmpleadosMov>()
                                            where m.plazasPorEmpleado.razonesSociales.clave == razonesSociales.clave &&
                                            m.plazasPorEmpleado.fechaFinal >= fechapen &&
                                            o.plazasPorEmpleado.fechaPrestaciones.Value.Month == fechapen.Month &&
                                            o.plazasPorEmpleado.fechaPrestaciones.Value.Day == fechapen.Day
                                            group new { m.plazasPorEmpleado.empleados, m } by new
                        {
                            m.plazasPorEmpleado.empleados.clave
                        } into g
                                            select new
                        {
                            Column1 = g.Max(p => p.m.id)
                        }).Contains(new { Column1 = o.id })
                                           select o.plazasPorEmpleado).ToList();

                        plazasEmpleados = plazasEmpleados == null ? new List <PlazasPorEmpleado>() : plazasEmpleados;
                        if (plazasEmpleados.Count > 0)
                        {
                            if (reglaFactor == null)
                            {//Obtiene  los factores de integracion
                                usoBDMaestra = true;
                                //if (dbContextMaster == null)
                                //{
                                //    setSession(dbContext);
                                //}
                                //else
                                //{
                                //    setSession(dbContextMaster);
                                //}
                                List <TablaDatos> values;
                                values = (from o in dbContextMaster.Set <TablaDatos>()
                                          where o.tablaBase.clave == ClavesParametrosModulos.claveTipoTablaFactorIntegracion.ToString() &&
                                          o.id == (from t in dbContextMaster.Set <TablaDatos>()
                                                   where t.tablaBase.id == o.tablaBase.id
                                                   select new { t.id }).Max(p => p.id)
                                          select o).ToList();
                                values = values == null ? new List <TablaDatos>() : values;
                                if (values.Count > 0)
                                {
                                    byte[]    convert = ((TablaDatos)values[0]).fileXml;
                                    XDocument doc     = UtilidadesXML.convierteBytesToXML(convert);
                                    reglaFactor = UtilidadesXML.extraeValoresNodos(doc);
                                }
                            }
                            //Llenar tabla de Vacaciones Devengadas por día
                            VacacionesDevengadas vd = null;
                            if (usoBDMaestra)
                            {
                                if (dbContextSimple == null)
                                {
                                    setSession(dbContextSimple);
                                }
                                else
                                {
                                    getSession().Database.Connection.Close();
                                    setSession(dbContextSimple);
                                }
                            }
                            for (int i = 0; i < plazasEmpleados.Count; i++)
                            {
                                Double antiguedad = (Double)calcularAntiguedadExacta(Convert.ToDateTime(plazasEmpleados[i].fechaPrestaciones));
                                //Obtiene vacaciones devengadas por año a ese empleado
                                VacacionesDevengadas vaca = (from a in dbContextSimple.Set <VacacionesDevengadas>()
                                                             where a.empleados.id == plazasEmpleados[i].empleados.id &&
                                                             a.ejercicio == Convert.ToInt32(antiguedad)
                                                             select a).SingleOrDefault();
                                if (vaca == null)
                                {
                                    vd = new VacacionesDevengadas();
                                    vd.razonesSociales = plazasEmpleados[i].razonesSociales;
                                    vd.empleados       = plazasEmpleados[i].empleados;
                                    vd.ejercicio       = Convert.ToInt32(antiguedad);
                                    Object[] factorEmpleado = (Object[])obtieneFactorIntegracion(reglaFactor, Convert.ToInt32(antiguedad));
                                    Object[] salarioAniv    = (from sdi in dbContextSimple.Set <SalariosIntegrados>()
                                                               where sdi.empleados.id == plazasEmpleados[i].empleados.id &&
                                                               sdi.fecha <= plazasEmpleados[i].fechaPrestaciones
                                                               group sdi by new
                                    {
                                        sdi.salarioDiarioFijo
                                    } into g
                                                               select new
                                    {
                                        Column1 = g.Max(p => p.fecha),
                                        g.Key.salarioDiarioFijo
                                    }).ToArray();
                                    if (salarioAniv == null)
                                    {
                                        vd.salarioAniversario = 0.0;
                                    }
                                    else
                                    {
                                        vd.salarioAniversario = (double)salarioAniv[1];
                                    }
                                    vd.factorPrima     = Convert.ToDouble(factorEmpleado[4].ToString());
                                    vd.diasVacaciones  = Convert.ToInt32(factorEmpleado[3].ToString());
                                    vd.registroInicial = false;
                                    double primaVac = Convert.ToDouble(factorEmpleado[4].ToString()) / 100 * Convert.ToInt32(factorEmpleado[3].ToString());
                                    vd.diasPrimaVaca = primaVac;
                                    dbContextSimple.Set <VacacionesDevengadas>().Add(vd);
                                    devengadaActual.Add(plazasEmpleados[i].empleados.clave, vd);
                                }
                            }
                        }
                    }
                    controlCalculadas       = new ControlVacDeveng();
                    controlCalculadas.fecha = diasPendientes[d];
                    controlCalculadas.razonesSociales_ID = razonesSociales.id;

                    dbContextSimple.Set <ControlVacDeveng>().Add(controlCalculadas);
                    dbContextSimple.SaveChanges();
                }
                if (usaCommit)
                {
                    dbContextSimple.Database.CurrentTransaction.Commit();
                }
                mensajeResultado.resultado = true;
                mensajeResultado.noError   = 0;
                mensajeResultado.error     = "";
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("calcularVacacionesDevengadasEmpleados()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
                dbContextSimple.Database.CurrentTransaction.Rollback();
            }
            return(mensajeResultado);
        }
Example #15
0
 //usado calculo de nomina
 public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] factorIntegracion, DBContextSimple dbContextSimple, DBContextMaster dbContextMaestra)
 {
     return(calcularVacacionesDevengadasEmpleados(razonesSociales, factorIntegracion, dbContextSimple, dbContextMaestra, true));
 }