// GET: /NominaCFDI/Create public ActionResult Create() { IMSSController controllerIMSS = new IMSSController(); ISRController controllerISR = new ISRController(); var RFCPatron = db.Users.FirstOrDefault(y => y.UserName == User.Identity.Name).RFC; // referenncia del RFC del usuario logueado //obtenemos la zona del salario minimo List <Empleado> empleadosFiltrados = db.Empleadoes.Where(x => x.RFCPatron == RFCPatron).ToList(); int Periodo = controllerIMSS.getPeriodo(RFCPatron); // obtenemos las incapacidades List <TipoIncapacidad> incapacidadesFiltradas = db.TipoIncapacidads.ToList(); // datos que mandamos por el ViewBag ViewBag.Incapacidades = incapacidadesFiltradas.Select(r => new SelectListItem { Text = r.Descripcion, Value = r.Clave.ToString() }).ToList(); ViewBag.TARMP = controllerISR.getTARMP(RFCPatron).OrderBy(x => x.LimiteInferior); ViewBag.TARSP = controllerISR.getTARSP(RFCPatron).OrderBy(x => x.LimiteInferior); ViewBag.ZonaSalarioMin = controllerIMSS.getZona(RFCPatron).Monto; ViewBag.TablaTs = db.TablaTs.Where(x => x.Periodo == Periodo).ToList(); ViewBag.TOPESC = controllerIMSS.getTopesdeVecesdeSalarioXSalarioMinimo(RFCPatron); ViewBag.empleados = empleadosFiltrados.Select(r => new SelectListItem { Text = r.Nombre, Value = r.Codigo.ToString() }).ToList(); return(View()); }
public ActionResult CreateNomina(int? id) { IMSSController controllerIMSS = new IMSSController(); ISRController controllerISR = new ISRController(); var RFCPatron = db.Users.FirstOrDefault(y => y.UserName == User.Identity.Name).RFC; // referenncia del RFC del usuario logueado //obtenemos la zona del salario minimo List<Empleado> empleadosFiltrados = db.Empleadoes.Where(x => x.RFCPatron == RFCPatron).ToList(); int Periodo = controllerIMSS.getPeriodo(RFCPatron); // obtenemos las incapacidades List<TipoIncapacidad> incapacidadesFiltradas = db.TipoIncapacidads.ToList(); // revisamos cual es el siguiente periodo int siguientePeriodo = 1; NominaPeriodos PeriodoNomina = new NominaPeriodos(); // valisamos si es que tenemos que recuperar informaciión de un periodo anterior bool nuevoPeriodo = true; // creamos la variable de los empleados seleccionados porque no sabemos si nos lo vamos a traer todos o nomas los de la nomina en cuestin List<NominaCFDI> nominasTimradas = new List<NominaCFDI>(); List<Empleado> empleadosSeleccionados = new List<Empleado>(); if (id != null) { // aqui es de que tenemos que jalar la información del periodo especificado int periodoEntero = id ?? default(int); // validamos si el periodo existe: if (db.NominaPeriodos.Count(x => x.RFCPatron == RFCPatron && x.NominaPeriodoId ==periodoEntero)>0) { // aqui tenemos los empleados que participaron solo en este periodo List<NominaCFDI> empleadosTimbrados = db.Nominas.Where(x => x.NominaPeriodo == periodoEntero).ToList(); List<int> empleadosID = new List<int>(); foreach (NominaCFDI empleadotimbrado in empleadosTimbrados) // Loop through List with foreach { empleadosID.Add(empleadotimbrado.User); } int[] empleadosIDArray = empleadosID.ToArray(); empleadosSeleccionados = db.Empleadoes.Where(x => x.RFCPatron == RFCPatron && empleadosIDArray.Contains(x.Codigo)).ToList(); nuevoPeriodo = false; // ahora nos traemos el perido PeriodoNomina = db.NominaPeriodos.FirstOrDefault(x => x.NominaPeriodoId == periodoEntero); // ahora nos traemos las nominas nominasTimradas = db.Nominas.Where(x => x.NominaPeriodo == periodoEntero).ToList(); } } if (nuevoPeriodo) { empleadosSeleccionados = db.Empleadoes.Where(x => x.RFCPatron == RFCPatron).ToList(); PeriodoNomina.TipoPeriodo = 1; PeriodoNomina.Status = NominaPeriodos.StatusPeriodo.sinTimbrar; if (db.NominaPeriodos.Count(x => x.RFCPatron == RFCPatron) >= 1) { // aqui es de que tenemos mas de un periodo creado // ahora vemos si tenemos el ultimo periodo abierto List<NominaPeriodos> periodosNominas = db.NominaPeriodos.Where(x => x.RFCPatron == RFCPatron).ToList(); PeriodoNomina = periodosNominas.Last(); if (PeriodoNomina.Status == NominaPeriodos.StatusPeriodo.timbrado) { siguientePeriodo = periodosNominas.Last().NumeroPeriodo + 1; PeriodoNomina = new NominaPeriodos(); } else { siguientePeriodo = PeriodoNomina.NumeroPeriodo; } } } // datos que mandamos por el ViewBag ViewBag.SiguientePeriodo = siguientePeriodo; ViewBag.PeriodoNomina = PeriodoNomina; ViewBag.FormasdePago = db.FormadePagoes.OrderBy(x => x.Indice).ToList(); ViewBag.FormasdePago = db.FormadePagoes.OrderBy(x => x.Indice).ToList(); ViewBag.TipoPeriodos = db.TipoPeriodoes.OrderBy(x => x.Indice).ToList(); ViewBag.empleados = empleadosSeleccionados; ViewBag.Incapacidades = incapacidadesFiltradas.Select(r => new SelectListItem { Text = r.Descripcion, Value = r.Clave.ToString() }).ToList(); ViewBag.TARMP = controllerISR.getTARMP(RFCPatron).OrderBy(x => x.LimiteInferior); ViewBag.TARSP = controllerISR.getTARSP(RFCPatron).OrderBy(x => x.LimiteInferior); ViewBag.ZonaSalarioMin = controllerIMSS.getZona(RFCPatron).Monto; ViewBag.TablaTs = db.TablaTs.Where(x => x.Periodo == Periodo).ToList(); ViewBag.TOPESC = controllerIMSS.getTopesdeVecesdeSalarioXSalarioMinimo(RFCPatron); ViewBag.empleadosFiltrados = empleadosFiltrados.Select(r => new SelectListItem { Text = r.Nombre, Value = r.Codigo.ToString() }).ToList(); ViewBag.nominasTimradas = nominasTimradas; return View(); }
// GET: /NominaCFDI/Create public ActionResult Create() { IMSSController controllerIMSS = new IMSSController(); ISRController controllerISR = new ISRController(); var RFCPatron = db.Users.FirstOrDefault(y => y.UserName == User.Identity.Name).RFC; // referenncia del RFC del usuario logueado //obtenemos la zona del salario minimo List<Empleado> empleadosFiltrados = db.Empleadoes.Where(x => x.RFCPatron == RFCPatron).ToList(); int Periodo = controllerIMSS.getPeriodo(RFCPatron); // obtenemos las incapacidades List<TipoIncapacidad> incapacidadesFiltradas = db.TipoIncapacidads.ToList(); // datos que mandamos por el ViewBag ViewBag.Incapacidades = incapacidadesFiltradas.Select(r => new SelectListItem { Text = r.Descripcion, Value = r.Clave.ToString() }).ToList(); ViewBag.TARMP = controllerISR.getTARMP(RFCPatron).OrderBy(x => x.LimiteInferior); ViewBag.TARSP = controllerISR.getTARSP(RFCPatron).OrderBy(x => x.LimiteInferior); ViewBag.ZonaSalarioMin = controllerIMSS.getZona(RFCPatron).Monto; ViewBag.TablaTs = db.TablaTs.Where(x => x.Periodo == Periodo).ToList(); ViewBag.TOPESC = controllerIMSS.getTopesdeVecesdeSalarioXSalarioMinimo(RFCPatron); ViewBag.empleados = empleadosFiltrados.Select(r => new SelectListItem { Text = r.Nombre, Value = r.Codigo.ToString() }).ToList(); return View(); }
public ActionResult CreateNomina(int?id) { IMSSController controllerIMSS = new IMSSController(); ISRController controllerISR = new ISRController(); var RFCPatron = db.Users.FirstOrDefault(y => y.UserName == User.Identity.Name).RFC; // referenncia del RFC del usuario logueado //obtenemos la zona del salario minimo List <Empleado> empleadosFiltrados = db.Empleadoes.Where(x => x.RFCPatron == RFCPatron).ToList(); int Periodo = controllerIMSS.getPeriodo(RFCPatron); // obtenemos las incapacidades List <TipoIncapacidad> incapacidadesFiltradas = db.TipoIncapacidads.ToList(); // revisamos cual es el siguiente periodo int siguientePeriodo = 1; NominaPeriodos PeriodoNomina = new NominaPeriodos(); // valisamos si es que tenemos que recuperar informaciión de un periodo anterior bool nuevoPeriodo = true; // creamos la variable de los empleados seleccionados porque no sabemos si nos lo vamos a traer todos o nomas los de la nomina en cuestin List <NominaCFDI> nominasTimradas = new List <NominaCFDI>(); List <Empleado> empleadosSeleccionados = new List <Empleado>(); if (id != null) { // aqui es de que tenemos que jalar la información del periodo especificado int periodoEntero = id ?? default(int); // validamos si el periodo existe: if (db.NominaPeriodos.Count(x => x.RFCPatron == RFCPatron && x.NominaPeriodoId == periodoEntero) > 0) { // aqui tenemos los empleados que participaron solo en este periodo List <NominaCFDI> empleadosTimbrados = db.Nominas.Where(x => x.NominaPeriodo == periodoEntero).ToList(); List <int> empleadosID = new List <int>(); foreach (NominaCFDI empleadotimbrado in empleadosTimbrados) // Loop through List with foreach { empleadosID.Add(empleadotimbrado.User); } int[] empleadosIDArray = empleadosID.ToArray(); empleadosSeleccionados = db.Empleadoes.Where(x => x.RFCPatron == RFCPatron && empleadosIDArray.Contains(x.Codigo)).ToList(); nuevoPeriodo = false; // ahora nos traemos el perido PeriodoNomina = db.NominaPeriodos.FirstOrDefault(x => x.NominaPeriodoId == periodoEntero); // ahora nos traemos las nominas nominasTimradas = db.Nominas.Where(x => x.NominaPeriodo == periodoEntero).ToList(); } } if (nuevoPeriodo) { empleadosSeleccionados = db.Empleadoes.Where(x => x.RFCPatron == RFCPatron).ToList(); PeriodoNomina.TipoPeriodo = 1; PeriodoNomina.Status = NominaPeriodos.StatusPeriodo.sinTimbrar; if (db.NominaPeriodos.Count(x => x.RFCPatron == RFCPatron) >= 1) { // aqui es de que tenemos mas de un periodo creado // ahora vemos si tenemos el ultimo periodo abierto List <NominaPeriodos> periodosNominas = db.NominaPeriodos.Where(x => x.RFCPatron == RFCPatron).ToList(); PeriodoNomina = periodosNominas.Last(); if (PeriodoNomina.Status == NominaPeriodos.StatusPeriodo.timbrado) { siguientePeriodo = periodosNominas.Last().NumeroPeriodo + 1; PeriodoNomina = new NominaPeriodos(); } else { siguientePeriodo = PeriodoNomina.NumeroPeriodo; } } } // datos que mandamos por el ViewBag ViewBag.SiguientePeriodo = siguientePeriodo; ViewBag.PeriodoNomina = PeriodoNomina; ViewBag.FormasdePago = db.FormadePagoes.OrderBy(x => x.Indice).ToList(); ViewBag.FormasdePago = db.FormadePagoes.OrderBy(x => x.Indice).ToList(); ViewBag.TipoPeriodos = db.TipoPeriodoes.OrderBy(x => x.Indice).ToList(); ViewBag.empleados = empleadosSeleccionados; ViewBag.Incapacidades = incapacidadesFiltradas.Select(r => new SelectListItem { Text = r.Descripcion, Value = r.Clave.ToString() }).ToList(); ViewBag.TARMP = controllerISR.getTARMP(RFCPatron).OrderBy(x => x.LimiteInferior); ViewBag.TARSP = controllerISR.getTARSP(RFCPatron).OrderBy(x => x.LimiteInferior); ViewBag.ZonaSalarioMin = controllerIMSS.getZona(RFCPatron).Monto; ViewBag.TablaTs = db.TablaTs.Where(x => x.Periodo == Periodo).ToList(); ViewBag.TOPESC = controllerIMSS.getTopesdeVecesdeSalarioXSalarioMinimo(RFCPatron); ViewBag.empleadosFiltrados = empleadosFiltrados.Select(r => new SelectListItem { Text = r.Nombre, Value = r.Codigo.ToString() }).ToList(); ViewBag.nominasTimradas = nominasTimradas; return(View()); }