Beispiel #1
0
        // 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();
        }
Beispiel #4
0
        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());
        }