Exemple #1
0
        // GET: DeclaracionesJuradas/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DeclaracionJurada declaracionJurada = db.DeclaracionJurada.Find(id);

            if (declaracionJurada == null)
            {
                return(HttpNotFound());
            }
            return(View(declaracionJurada));
        }
Exemple #2
0
        // GET: DeclaracionesJuradas/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DeclaracionJurada declaracionJurada = db.DeclaracionJurada.Find(id);

            if (declaracionJurada == null)
            {
                return(HttpNotFound());
            }
            var claim     = ((ClaimsIdentity)User.Identity).FindFirst("IdEmpresa");
            int IdEmpresa = Convert.ToInt32(claim.Value);

            ViewBag.idEmpresa = new SelectList(db.Empresa.Where(x => x.IdEmpresa == IdEmpresa), "IdEmpresa", "Cuit", IdEmpresa);
            return(View(declaracionJurada));
        }
Exemple #3
0
        public ActionResult Edit([Bind(Include = "IdDeclaracionJurada,idEmpresa,mes,anio,fecha")] DeclaracionJurada declaracionJurada)
        {
            var claim     = ((ClaimsIdentity)User.Identity).FindFirst("IdEmpresa");
            int IdEmpresa = Convert.ToInt32(claim.Value);

            ViewBag.idEmpresa = new SelectList(db.Empresa.Where(x => x.IdEmpresa == IdEmpresa), "IdEmpresa", "Cuit", IdEmpresa);
            if (ModelState.IsValid)
            {
                if (db.DeclaracionJurada.Where(x => x.idEmpresa == declaracionJurada.idEmpresa &&
                                               x.mes == declaracionJurada.mes &&
                                               x.anio == declaracionJurada.anio &&
                                               x.IdDeclaracionJurada != declaracionJurada.IdDeclaracionJurada).FirstOrDefault() != null)
                {
                    ModelState.AddModelError("Mes", "ya existe una declaracion Jurada para este Mes y Año");
                    return(View(declaracionJurada));
                }
                db.Entry(declaracionJurada).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("EditMessage"));
            }
            return(View(declaracionJurada));
        }
Exemple #4
0
        public ActionResult Create([Bind(Include = "IdDeclaracionJurada,idEmpresa,mes,anio,fecha")] DeclaracionJurada declaracionJurada)
        {
            var claim     = ((ClaimsIdentity)User.Identity).FindFirst("IdEmpresa");
            int IdEmpresa = Convert.ToInt32(claim.Value);

            if (ModelState.IsValid)
            {
                if (db.DeclaracionJurada.Where(x => x.idEmpresa == declaracionJurada.idEmpresa &&
                                               x.mes == declaracionJurada.mes &&
                                               x.anio == declaracionJurada.anio).FirstOrDefault() != null)
                {
                    ViewBag.idEmpresa = new SelectList(db.Empresa.Where(x => x.IdEmpresa == IdEmpresa), "IdEmpresa", "Cuit", IdEmpresa);
                    ModelState.AddModelError("Mes", "ya existe una declaracion Jurada para este Mes y Año");
                    return(View(declaracionJurada));
                }
                declaracionJurada.fecha = DateTime.Now;
                db.DeclaracionJurada.Add(declaracionJurada);
                db.SaveChanges();
                return(RedirectToAction("CreateMessage", "DetallesDeclaracionJurada", new { idDeclaracionJurada = declaracionJurada.IdDeclaracionJurada }));
            }

            ViewBag.idEmpresa = new SelectList(db.Empresa.Where(x => x.IdEmpresa == IdEmpresa), "IdEmpresa", "Cuit", IdEmpresa);
            return(View(declaracionJurada));
        }
Exemple #5
0
        // GET: Empresas/BoletaAportes/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            BoletaAportes boletaAportes = db.BoletaAportes.Find(id);

            if (boletaAportes == null)
            {
                return(HttpNotFound());
            }

            DeclaracionJurada ddjj = db.DeclaracionJurada.Where(x => x.IdDeclaracionJurada == boletaAportes.IdDeclaracionJurada).FirstOrDefault();

            decimal mora = (boletaAportes.RecargoMora != null) ? (decimal)boletaAportes.RecargoMora : 0;

            boletaAportes.TotalDepositado = TruncateFunction(boletaAportes.Aportes + boletaAportes.AportesAfiliados + mora, 2);

            ViewBag.IdEmpresa = ddjj.idEmpresa;

            return(View(boletaAportes));
        }
Exemple #6
0
        public List <Boleta> GetBoletas(int id)
        {
            List <Boleta> boletas   = new List <Boleta>();
            var           boletaAux = db.BoletaAportes.Where(x => x.IdBoleta == id).FirstOrDefault();

            if (boletaAux != null)
            {
                Boleta boletaNueva = new Boleta();
                boletaNueva.Banco = banco;

                idDeclaracion = boletaAux.IdDeclaracionJurada;
                DeclaracionJurada ddjj      = db.DeclaracionJurada.Where(x => x.IdDeclaracionJurada == idDeclaracion).FirstOrDefault();
                Empresa           empresa   = db.Empresa.Where(x => x.IdEmpresa == ddjj.idEmpresa).FirstOrDefault();
                Localidad         localidad = db.Localidad.Where(x => x.IdLocalidad == empresa.IdLocalidad).FirstOrDefault();

                boletaNueva.RazonSocial = empresa.RazonSocial;
                boletaNueva.Cuit        = empresa.Cuit;
                boletaNueva.Domicilio   = empresa.Calle + " " + empresa.Altura.ToString();
                boletaNueva.CodPostal   = localidad.CodPostal.ToString();
                boletaNueva.Localidad   = localidad.Nombre;

                string telefono = (empresa.TelefonoFijo != null) ? empresa.TelefonoFijo.ToString() : "";
                if (telefono == "")
                {
                    telefono = (empresa.TelefonoCelular != null) ? empresa.TelefonoCelular.ToString() : "";
                }
                boletaNueva.Telefono = (empresa.TelefonoFijo != null) ? empresa.TelefonoFijo.ToString() : "";

                boletaNueva.Mes  = ddjj.mes.ToString();
                boletaNueva.Anio = ddjj.anio.ToString();

                DateTime fechaVencimiento = boletaAux.FechaVencimiento;
                boletaNueva.FechaVencimiento = fechaVencimiento.ToShortDateString();
                boletaNueva.RecargoPorMora   = (boletaAux.RecargoMora == null) ? "0" : boletaAux.RecargoMora.ToString();

                boletaNueva.CantEmpleados = boletaAux.CantEmpleados.ToString();
                boletaNueva.TotalSueldos  = boletaAux.TotalSueldos.ToString();

                boletaNueva.Aportes = (Math.Truncate(((boletaAux.TotalSueldos / 100) * 2) * 100) / 100).ToString();

                boletaNueva.CantAfiliados         = boletaAux.CantAfiliados.ToString();
                boletaNueva.TotalSueldosAfiliados = boletaAux.TotalSueldosAfiliados.ToString();

                boletaNueva.AportesAfiliados = (Math.Truncate(((boletaAux.TotalSueldosAfiliados / 100) * 5) * 100) / 100).ToString();
                boletaNueva.Total            = (Convert.ToDouble(boletaNueva.UnPorcFamiliaresACargo) + Convert.ToDouble(boletaNueva.RecargoPorMora)).ToString();
                boletaNueva.TotalDepositado  = (Convert.ToDouble(boletaNueva.Aportes) + Convert.ToDouble(boletaNueva.AportesAfiliados) + Convert.ToDouble(boletaNueva.Total)).ToString();

                string totalDepositadoEntero  = boletaNueva.TotalDepositado.Split(new Char[] { ',', '.' })[0];
                string totalDepositadoDecimal = (boletaNueva.TotalDepositado.Split(new Char[] { ',', '.' }).Count() > 1) ? boletaNueva.TotalDepositado.Split(new Char[] { ',', '.' })[1] : "00";

                boletaNueva.CodBarra = boletaNueva.Banco + idDeclaracion.ToString().PadLeft(8, '0') + fechaVencimiento.DayOfYear.ToString().PadLeft(3, '0') + (fechaVencimiento.Year - 2000).ToString().PadLeft(2, '0') + boletaNueva.Anio.PadLeft(4, '0') + boletaNueva.Mes.PadLeft(2, '0') + totalDepositadoEntero.PadLeft(6, '0') + totalDepositadoDecimal.PadLeft(2, '0');

                int    nv     = 0;
                int    resto  = 0;
                int    resto1 = 0;
                string digi2;

                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(0, 1)) * 7);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(1, 1)) * 6);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(2, 1)) * 5);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(3, 1)) * 4);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(4, 1)) * 3);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(5, 1)) * 2);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(6, 1)) * 7);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(7, 1)) * 6);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(8, 1)) * 5);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(9, 1)) * 4);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(10, 1)) * 3);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(11, 1)) * 2);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(12, 1)) * 7);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(13, 1)) * 6);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(14, 1)) * 5);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(15, 1)) * 4);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(16, 1)) * 3);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(17, 1)) * 2);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(18, 1)) * 7);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(19, 1)) * 6);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(20, 1)) * 5);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(21, 1)) * 4);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(22, 1)) * 3);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(23, 1)) * 2);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(24, 1)) * 7);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(25, 1)) * 6);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(26, 1)) * 5);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(27, 1)) * 4);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(28, 1)) * 3);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(29, 1)) * 2);
                nv = nv + (int.Parse(boletaNueva.CodBarra.Substring(30, 1)) * 7);

                resto  = nv / 11;
                resto1 = 11 - (nv - (resto * 11));

                if (resto1 == 10)
                {
                    digi2 = "0";
                }
                else
                {
                    if (resto1 == 11)
                    {
                        digi2 = "1";
                    }
                    else
                    {
                        digi2 = resto1.ToString().Trim();
                    }
                }

                boletaNueva.CodBarra += digi2;
                boletaNueva.BarCode   = creabarcode(boletaNueva.CodBarra);


                switch (boletaNueva.Mes)
                {
                case "1":
                    boletaNueva.Mes = "Enero";
                    break;

                case "2":
                    boletaNueva.Mes = "Febrero";
                    break;

                case "3":
                    boletaNueva.Mes = "Marzo";
                    break;

                case "4":
                    boletaNueva.Mes = "Abril";
                    break;

                case "5":
                    boletaNueva.Mes = "Mayo";
                    break;

                case "6":
                    boletaNueva.Mes = "Junio y SAC";
                    break;

                case "7":
                    boletaNueva.Mes = "Julio";
                    break;

                case "8":
                    boletaNueva.Mes = "Agosto";
                    break;

                case "9":
                    boletaNueva.Mes = "Septiembre";
                    break;

                case "10":
                    boletaNueva.Mes = "Octubre";
                    break;

                case "11":
                    boletaNueva.Mes = "Noviembre";
                    break;

                case "12":
                    boletaNueva.Mes = "Diciembre y SAC";
                    break;

                default:
                    break;
                }
                boletas.Add(boletaNueva);

                //return boletas.ToList();
            }

            return(boletas.ToList());
        }
Exemple #7
0
        //[ValidateAntiForgeryToken]
        public ActionResult ImprimirBoletasPagadas(string BoletasPagadas = "null")
        {
            int[] IdsBoletasAportesPagadas;
            List <BoletaAportes> BoletasAportesPagadas = new List <BoletaAportes>();

            if (!string.IsNullOrEmpty(BoletasPagadas))
            {
                string llave = BoletasPagadas.Substring(0, 1);
                if (llave == "[")
                {
                    IdsBoletasAportesPagadas      = System.Web.Helpers.Json.Decode <int[]>(BoletasPagadas);
                    ViewBag.BoletasAportesPagadas = IdsBoletasAportesPagadas;
                    BoletasAportesPagadas         = db.BoletaAportes.Where(x => IdsBoletasAportesPagadas.Contains(x.IdBoleta)).ToList();
                }
                else
                {
                    IdsBoletasAportesPagadas = new int[1] {
                        System.Web.Helpers.Json.Decode <int>(BoletasPagadas)
                    };
                    ViewBag.BoletasAportesPagadas = IdsBoletasAportesPagadas;
                    BoletasAportesPagadas         = db.BoletaAportes.Where(x => IdsBoletasAportesPagadas.Contains(x.IdBoleta)).ToList();
                }
            }

            decimal totalGlobal = 0;


            foreach (var boleta in BoletasAportesPagadas)
            {
                decimal total2 = (boleta.TotalSueldos / 100) * 2;
                decimal total5 = (boleta.TotalSueldosAfiliados / 100) * 5;

                if (boleta.BoletaPagada == false)
                {
                    boleta.BoletaPagada = true;
                    boleta.FechaPago    = DateTime.Today;
                    decimal mora = (boleta.RecargoMora != null) ? (decimal)boleta.RecargoMora : 0;
                    boleta.TotalPagado = TruncateFunction(total2 + total5 + mora, 2);
                    db.SaveChanges();
                }
            }


            List <VmBoletaAportes> boletasDeAportes = new List <VmBoletaAportes>();

            foreach (var boleta in BoletasAportesPagadas)
            {
                DeclaracionJurada declaracion = db.DeclaracionJurada.Find(boleta.IdDeclaracionJurada);

                var     detalles = db.DetalleDeclaracionJurada.Where(x => x.IdDeclaracionJurada == declaracion.IdDeclaracionJurada).ToList();
                decimal total2 = 0;
                decimal total5 = 0;
                decimal sueldos2 = 0, sueldos5 = 0;

                foreach (var detalle in detalles)
                {
                    sueldos2 += detalle.Sueldo;
                    var afiliado = db.Afiliado.Where(x => x.IdEmpleadoEmpresa == detalle.IdEmpleadoEmpresa).FirstOrDefault();
                    if (afiliado != null)
                    {
                        if (afiliado.FechaAlta.Year < declaracion.anio)
                        {
                            if (afiliado.FechaBaja == null || afiliado.FechaBaja.Value.Year > declaracion.anio || (afiliado.FechaBaja.Value.Year == declaracion.anio && afiliado.FechaBaja.Value.Month >= declaracion.mes))
                            {
                                sueldos5 += detalle.SueldoBase.Value;
                            }
                        }
                        else if (afiliado.FechaAlta.Year == declaracion.anio && afiliado.FechaAlta.Month <= declaracion.mes)
                        {
                            if (afiliado.FechaBaja == null || afiliado.FechaBaja.Value.Year > declaracion.anio || (afiliado.FechaBaja.Value.Year == declaracion.anio && afiliado.FechaBaja.Value.Month >= declaracion.mes))
                            {
                                sueldos5 += detalle.SueldoBase.Value;
                            }
                        }
                    }
                }

                total2 = TruncateFunction((sueldos2 / 100) * 2, 2);

                total5 = TruncateFunction((sueldos5 / 100) * 5, 2);

                decimal mora = (boleta.RecargoMora != null) ? (decimal)boleta.RecargoMora : 0;

                boleta.TotalDepositado = TruncateFunction(total2 + total5 + mora, 2);

                totalGlobal += boleta.TotalPagado;
                boletasDeAportes.Add(new VmBoletaAportes()
                {
                    IdDeclaracionJurada = boleta.IdDeclaracionJurada.ToString(),
                    RazonSocial         = boleta.DeclaracionJurada.Empresa.RazonSocial.ToString(),
                    Cuit                   = boleta.DeclaracionJurada.Empresa.Cuit.ToString(),
                    Mes                    = boleta.MesBoleta.ToString(),
                    Anio                   = boleta.AnioBoleta.ToString(),
                    CantEmpleados          = detalles.Count().ToString(),
                    TotalSueldos           = sueldos2.ToString(),
                    DosPorc                = total2.ToString(),
                    CantAfiliados          = detalles.Where(x => x.EmpleadoEmpresa.EsAfiliado).Count().ToString(),
                    TotalSueldosAfiliados  = sueldos5.ToString(),
                    CincoPorc              = total5.ToString(),
                    CantFamiliaresACargo   = "",
                    UnPorcFamiliaresACargo = "",
                    RecargoPorMora         = boleta.RecargoMora.ToString(),
                    TotalDepositado        = boleta.TotalPagado.ToString(),
                    FechaPago              = boleta.FechaPago.ToString()
                });
            }

            ViewBag.TotalGlobal = totalGlobal;
            return(new ViewAsPdf(boletasDeAportes)
            {
                FileName = "Boletas-Aportes-Pagadas.pdf",
                PageOrientation = Rotativa.Options.Orientation.Landscape
            });
        }
Exemple #8
0
        // GET: Administrador/Listados/DetailsBoletaAportes/5
        public ActionResult DetailsBoletaAportes(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BoletaAportes boletaAportes = db.BoletaAportes.Find(id);

            if (boletaAportes == null)
            {
                return(HttpNotFound());
            }

            DeclaracionJurada ddjj = db.DeclaracionJurada.Where(x => x.IdDeclaracionJurada == boletaAportes.IdDeclaracionJurada).FirstOrDefault();

            var empleados = db.DetalleDeclaracionJurada.Where(x => x.IdDeclaracionJurada == ddjj.IdDeclaracionJurada).ToList();

            int     count2 = 0, count5 = 0;
            decimal sueldos2 = 0, sueldos5 = 0;

            foreach (var empleado in empleados)
            {
                sueldos2 += empleado.Sueldo;
                count2++;
                var afiliado = db.Afiliado.Where(x => x.IdEmpleadoEmpresa == empleado.IdEmpleadoEmpresa).FirstOrDefault();
                if (afiliado != null)
                {
                    if (afiliado.FechaAlta.Year < ddjj.anio)
                    {
                        if (afiliado.FechaBaja == null || afiliado.FechaBaja.Value.Year > ddjj.anio || (afiliado.FechaBaja.Value.Year == ddjj.anio && afiliado.FechaBaja.Value.Month >= ddjj.mes))
                        {
                            //if (empleado.idJornadaLaboral == 1 || empleado.idJornadaLaboral == 2)
                            //{
                            //if (empleado.SueldoBase > 0)
                            //{
                            sueldos5 += empleado.SueldoBase.Value;
                            //}
                            //else
                            //{
                            //    sueldos5 += empleado.Sueldo;
                            //}
                            //}
                            //else
                            //{
                            //    sueldos5 += empleado.Sueldo;
                            //}
                            count5++;
                        }
                    }
                    else if (afiliado.FechaAlta.Year == ddjj.anio && afiliado.FechaAlta.Month <= ddjj.mes)
                    {
                        if (afiliado.FechaBaja == null || afiliado.FechaBaja.Value.Year > ddjj.anio || (afiliado.FechaBaja.Value.Year == ddjj.anio && afiliado.FechaBaja.Value.Month >= ddjj.mes))
                        {
                            //if (empleado.idJornadaLaboral == 1 || empleado.idJornadaLaboral == 2)
                            //{
                            //if (empleado.SueldoBase > 0)
                            //{
                            sueldos5 += empleado.SueldoBase.Value;
                            //}
                            //else
                            //{
                            //    sueldos5 += empleado.Sueldo;
                            //}
                            //}
                            //else
                            //{
                            //    sueldos5 += empleado.Sueldo;
                            //}
                            count5++;
                        }
                    }
                }
            }

            boletaAportes.TotalSueldos = TruncateFunction(sueldos2, 2);

            boletaAportes.TotalSueldosAfiliados = TruncateFunction(sueldos5, 2);

            decimal total2 = (sueldos2 / 100) * 2;
            decimal total5 = (sueldos5 / 100) * 5;

            decimal mora = (boletaAportes.RecargoMora != null) ? (decimal)boletaAportes.RecargoMora : 0;

            //(Math.Truncate(((sueldos / 100) * 5) * 100) / 100).ToString();
            boletaAportes.TotalDepositado2 = TruncateFunction(total2, 2);                 //Math.Truncate((total2 * 100) / (decimal)100);// Math.Truncate(total2);
            boletaAportes.TotalDepositado5 = TruncateFunction(total5, 2);                 //Math.Truncate((total5 * 100) / 100);// Math.Truncate(total5);
            boletaAportes.TotalDepositado  = TruncateFunction(total2 + total5 + mora, 2); //Math.Truncate(((total2 + total5 + mora) * 100) / 100); //Math.Truncate(total2 + total5 + mora);

            return(View(boletaAportes));
        }
Exemple #9
0
        public ActionResult UploadFile(HttpPostedFileBase file, int mes, int anio)
        {
            var claim         = ((ClaimsIdentity)User.Identity).FindFirst("IdEmpresa");
            int IdEmpresa     = Convert.ToInt32(claim.Value);
            int errorRenglon  = 1;
            int idDeclaracion = 0;

            try
            {
                if (file != null && file.ContentLength > 0)
                {
                    DeclaracionJurada ddjj = db.DeclaracionJurada.Where(x => x.idEmpresa == IdEmpresa &&
                                                                        x.mes == mes &&
                                                                        x.anio == anio).FirstOrDefault();
                    if (ddjj == null)
                    {
                        ddjj           = new DeclaracionJurada();
                        ddjj.anio      = anio;
                        ddjj.mes       = mes;
                        ddjj.idEmpresa = IdEmpresa;
                        ddjj.fecha     = DateTime.Now;
                        db.DeclaracionJurada.Add(ddjj);
                        db.SaveChanges();
                        idDeclaracion = ddjj.IdDeclaracionJurada;
                        bool          error = false;
                        List <string> rows  = new List <string>();
                        List <DetalleDeclaracionJurada> detallesDeclaracionJurada = new List <DetalleDeclaracionJurada>();
                        StreamReader fileContent = new StreamReader(file.InputStream);
                        do
                        {
                            rows.Add(fileContent.ReadLine());
                        }while (!fileContent.EndOfStream);
                        foreach (var row in rows)
                        {
                            string[] detalles = row.Split(';');
                            if (detalles.Length == 4)
                            {
                                DetalleDeclaracionJurada detalle = new DetalleDeclaracionJurada();
                                detalle.IdDeclaracionJurada = idDeclaracion;
                                EmpleadoEmpresa empEmp = new EmpleadoEmpresa();
                                string          cuil   = detalles[0];
                                Empleado        emp    = (from oEmpleado in db.Empleado
                                                          join oEmpEmp in db.EmpleadoEmpresa on oEmpleado.IdEmpleado equals oEmpEmp.idEmpleado
                                                          where oEmpEmp.idEmpresa == IdEmpresa &&
                                                          //oEmpEmp.FechaBaja == null &&
                                                          oEmpleado.Cuil == cuil
                                                          select oEmpleado).FirstOrDefault();

                                if (emp != null)
                                {
                                    empEmp = db.EmpleadoEmpresa.Where(x => x.idEmpleado == emp.IdEmpleado && x.idEmpresa == IdEmpresa
                                                                      & (x.FechaAlta.Year < ddjj.anio || (x.FechaAlta.Year == ddjj.anio && x.FechaAlta.Month <= ddjj.mes)))
                                             .FirstOrDefault();
                                    if (emp == null || empEmp == null)
                                    {
                                        ViewBag.Message = "Error al importar los Empleados!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon + Environment.NewLine + "Empleado no Encontrado!!";
                                        error           = true;
                                        break;
                                    }
                                    if (empEmp.FechaBaja != null && empEmp.FechaBaja.Value.Year < ddjj.anio)
                                    {
                                        ViewBag.Message = "Error al importar los Empleados!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon + Environment.NewLine + "Empleado esta de baja!!";
                                        error           = true;
                                        break;
                                    }
                                    else if (empEmp.FechaBaja != null && empEmp.FechaBaja.Value.Year == ddjj.anio && empEmp.FechaBaja.Value.Month < ddjj.mes)
                                    {
                                        ViewBag.Message = "Error al importar los Empleados!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon + Environment.NewLine + "Empleado esta de baja!!";
                                        error           = true;
                                        break;
                                    }
                                }
                                else
                                {
                                    ViewBag.Message = "Error al importar los Empleados!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon + Environment.NewLine + "Empleado no Encontrado!!";
                                    error           = true;
                                    break;
                                }
                                detalle.IdEmpleadoEmpresa = empEmp.idEmpleadoEmpresa;
                                detalle.idCategoria       = empEmp.IdCategoria;
                                detalle.idJornadaLaboral  = empEmp.IdJornada;
                                if (int.TryParse(detalles[1], out int idliquidacion))
                                {
                                    detalle.IdLiquidacionProporcional = int.Parse(detalles[1]);
                                }
                                else
                                {
                                    error = true; break;
                                }
                                decimal sueldo = 0;
                                if (decimal.TryParse(detalles[2], out sueldo))
                                {
                                    if (comprobarSueldoBasico(empEmp.idEmpleadoEmpresa, detalle.IdDeclaracionJurada, decimal.Parse(detalles[2])))
                                    {
                                        detalle.Sueldo = decimal.Parse(detalles[2]);
                                    }
                                    else
                                    {
                                        if (detalle.IdLiquidacionProporcional != 1)
                                        {
                                            detalle.Sueldo = decimal.Parse(detalles[2]);
                                        }
                                        else
                                        {
                                            ViewBag.Message = "Error al importar los Empleados!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon + Environment.NewLine + "Sueldo 2% Menor al minimo, corrija el sueldo y vuelva a intentar!!";
                                            error           = true;
                                            break;
                                        }
                                    }
                                }
                                else
                                {
                                    ViewBag.Message = "Error al importar los Empleados!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon + Environment.NewLine + "Sueldo 2% no Valido!!";
                                    error           = true;
                                    break;
                                }
                                decimal sueldoBase = 0;
                                if (decimal.TryParse(detalles[3], out sueldoBase))
                                {
                                    detalle.SueldoBase = decimal.Parse(detalles[3]);
                                }
                                detallesDeclaracionJurada.Add(detalle);
                            }
                            else
                            {
                                error = true;
                            }
                            errorRenglon++;
                        }
                        if (error == false)
                        {
                            //db.DeclaracionJurada.Add(ddjj);
                            //db.SaveChanges();
                            foreach (DetalleDeclaracionJurada detalle in detallesDeclaracionJurada)
                            {
                                detalle.IdDeclaracionJurada = ddjj.IdDeclaracionJurada;
                                db.DetalleDeclaracionJurada.Add(detalle);
                                db.SaveChanges();

                                var liquidacionProporcional = db.LiquidacionProporcionalEmpleado.Where(x => x.IdDetalleDeclaracionJurada == detalle.IdDetalleDeclaracionJurada).FirstOrDefault();
                                if (detalle.IdLiquidacionProporcional != null && detalle.IdLiquidacionProporcional != 1)
                                {
                                    if (liquidacionProporcional != null)
                                    {
                                        if (liquidacionProporcional.IdLiquidacionProporcional != detalle.IdLiquidacionProporcional)
                                        {
                                            liquidacionProporcional.IdLiquidacionProporcional = (int)detalle.IdLiquidacionProporcional;
                                        }
                                    }
                                    else
                                    {
                                        db.LiquidacionProporcionalEmpleado.Add(new LiquidacionProporcionalEmpleado()
                                        {
                                            IdLiquidacionProporcional  = (int)detalle.IdLiquidacionProporcional,
                                            IdDetalleDeclaracionJurada = detalle.IdDetalleDeclaracionJurada
                                        });
                                    }
                                }
                                else
                                {
                                    if (liquidacionProporcional != null)
                                    {
                                        db.LiquidacionProporcionalEmpleado.Remove(liquidacionProporcional);
                                    }
                                }
                            }
                            db.SaveChanges();

                            ViewBag.Message = "Empleados Importados Correctamente!!";
                            return(View());
                        }
                        else
                        {
                            //ViewBag.Message = (!string.IsNullOrEmpty(ViewBag.Message)) ? ViewBag.Message + "Error al importar la Declaracion Jurada!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon : "Error al importar la Declaracion Jurada!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon;
                            //ViewBag.Message = "Error al importar los Empleados!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon;
                            RollBackDeclaracion(idDeclaracion);
                            return(View());
                        }
                    }
                    else
                    {
                        ViewBag.Message = "Ya existe una declaracion Jurada para la fecha Seleccionada!!";
                        RollBackDeclaracion(idDeclaracion);
                        return(View());
                    }
                }
                else
                {
                    ViewBag.Message = "Error, Archivo vacio o no valido!!";
                    RollBackDeclaracion(idDeclaracion);
                    return(View());
                }
            }
            catch (Exception e)
            {
                RollBackDeclaracion(idDeclaracion);
                ViewBag.Message = (!string.IsNullOrEmpty(ViewBag.Message)) ? ViewBag.Message + "Error al importar la Declaracion Jurada!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon : "Error al importar la Declaracion Jurada!!" + Environment.NewLine + "Error en el renglon Nro: " + errorRenglon;
                return(View());
            }
        }