Пример #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);
        }
Пример #2
0
        public Boolean existeTablaDBContextMaster(String tabla)
        {
            bool                            existeTabla     = false;
            DBContextMaster                 dbContextSimple = new DBContextMaster();
            IObjectContextAdapter           adapter         = dbContextSimple as IObjectContextAdapter;
            ObjectContext                   objectContext   = adapter.ObjectContext;
            ReadOnlyCollection <EntityType> allTypes        = objectContext.MetadataWorkspace.GetItems <EntityType>(DataSpace.CSpace);

            foreach (EntityType item in allTypes)
            {
                if (tabla.Equals(item.Name))
                {
                    existeTabla = true;
                    break;
                }
            }
            return(existeTabla);
        }
 public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] tablaFactorIntegracion, DBContextSimple dbContextSimple, DBContextMaster dbContextMaster)
 {
     mensajeResultado = vacDev.calcularVacacionesDevengadasEmpleados(razonesSociales, tablaFactorIntegracion, dbContextSimple, dbContextMaster, false);
     return(mensajeResultado);
 }
Пример #4
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);
        }
Пример #5
0
 //usado calculo de nomina
 public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] factorIntegracion, DBContextSimple dbContextSimple, DBContextMaster dbContextMaestra)
 {
     return(calcularVacacionesDevengadasEmpleados(razonesSociales, factorIntegracion, dbContextSimple, dbContextMaestra, true));
 }