public ActionResult Agregar(CompensacionViewModel model)
        {
            var compensacion = model.Compensacion;

            ModelState.Remove("Persona");
            var persona = _context.Personal.FirstOrDefault(p => p.Id == compensacion.PersonaId);

            if (compensacion.HorasCompensadas <= persona.HorasExtraAcumuladas)
            {
                if (compensacion.Id == 0)
                {
                    _context.Compensaciones.Add(compensacion);

                    var horasExtra = new HorasExtra()
                    {
                        PersonaId     = compensacion.PersonaId,
                        Fecha         = compensacion.Fecha,
                        Motivo        = "Compensación",
                        Aumenta       = false,
                        HorasCantidad = compensacion.HorasCompensadas
                    };
                    _context.HorasExtra.Add(horasExtra);
                }
                else
                {
                    var compensacionInDb = _context.Compensaciones.Single(p => p.Id == model.Compensacion.Id);
                    compensacionInDb.Fecha            = compensacion.Fecha;
                    compensacionInDb.HorasCompensadas = compensacion.HorasCompensadas;
                    compensacionInDb.PersonaId        = compensacion.PersonaId;

                    var horasExtraInDb = _context.HorasExtra.FirstOrDefault(p => p.Fecha == compensacion.Fecha && p.PersonaId == compensacion.Id);
                    if (horasExtraInDb != null)
                    {
                        horasExtraInDb.PersonaId     = compensacion.PersonaId;
                        horasExtraInDb.Fecha         = compensacion.Fecha;
                        horasExtraInDb.Motivo        = "Compensación";
                        horasExtraInDb.Aumenta       = false;
                        horasExtraInDb.HorasCantidad = compensacion.HorasCompensadas;
                    }
                }
                _context.SaveChanges();
                var compensaciones = _context.Compensaciones.Include(m => m.Persona).ToList();
                return(View("ListarCompensaciones", compensaciones));
            }

            var viewModel = new CompensacionViewModel()
            {
                Personas = _context.Personal.ToList()
            };

            ViewBag.Error = "Horas Extra Insuficientes";
            return(View("AgregarCompensacion", viewModel));
        }
예제 #2
0
        //[Route("Mantenimiento/Asistencia/Guardar")]
        public ActionResult Guardar(List <Asistencia> listaModel)
        {
            foreach (var asistencia in listaModel)
            {
                var asistenciaInDb = _context.Asistencias.Include(p => p.Persona).Include(m => m.Persona.Turno).Single(p => p.Id == asistencia.Id);
                asistenciaInDb.HoraLLegada           = asistencia.HoraLLegada;
                asistenciaInDb.HoraSalida            = asistencia.HoraSalida;
                _context.Entry(asistenciaInDb).State = EntityState.Modified;

                if (asistenciaInDb.HoraSalida != null)
                {
                    if (asistenciaInDb.HoraSalida > asistenciaInDb.Persona.Turno.HoraFin)
                    {
                        var existe          = _context.HorasExtra.FirstOrDefault(m => m.Fecha == asistenciaInDb.Fecha && m.PersonaId == asistenciaInDb.PersonaId);
                        var horasDiferencia = asistenciaInDb.HoraSalida - asistenciaInDb.Persona.Turno.HoraFin;

                        if (existe == null)
                        {
                            var horasExtra = new HorasExtra()
                            {
                                PersonaId     = asistenciaInDb.PersonaId,
                                Fecha         = asistenciaInDb.Fecha,
                                Motivo        = "Horas Extra",
                                Aumenta       = true,
                                HorasCantidad = horasDiferencia,
                            };
                            _context.HorasExtra.Add(horasExtra);
                        }
                        else
                        {
                            var horasExtra = _context.HorasExtra.SingleOrDefault(x => x.Id == existe.Id);
                            if (horasExtra != null)
                            {
                                horasExtra.HorasCantidad = horasDiferencia;
                            }
                        }
                    }
                }
            }
            _context.SaveChanges();

            return(RedirectToAction("TomarAsistencia"));
        }
예제 #3
0
        //Usado como trigger para la animacion de fade-out del login
        private async void Window_Loaded(object sender, RoutedEventArgs e)
        {
            lgc = new LoginControl();
            _   = await lgc.verificarUsuario();

            anims[0].Begin();
            if (LoginControl.tipoUsuario == null)
            {
                Close();
            }

            anim = true;
            Mouse.OverrideCursor = Cursors.Wait;
            if (LoginControl.tipoUsuario == tiposUsuario[0])
            {
                empleados     = new Empleados();
                planillas     = new Planillas();
                sucursales    = new Sucursales();
                configuracion = new Configuracion();
                reportes      = new Reportes();
                activarTodos();
            }
            else if (LoginControl.tipoUsuario == tiposUsuario[1])
            {
                HorasExtra          = new HorasExtra();
                UsuariosDispositivo = new UsuariosDispositivo();
                ocultarTodos();
            }
            else if (LoginControl.tipoUsuario == tiposUsuario[2])
            {
                configuracion = new Configuracion();
                activarIT();
            }
            frPpal.IsEnabled     = true;
            Mouse.OverrideCursor = Cursors.Arrow;
        }
예제 #4
0
        /// <summary>
        /// Función que lee los nodos XML de un documento CFDI
        /// </summary>
        /// <param name="padre"></param>
        private void LeerNodos(XmlNode padre)
        {
            // Procesamos el nodo
            switch (padre.Prefix)
            {
            case "cfdi": {
                switch (padre.LocalName)
                {
                case "Comprobante":
                    cfdi           = new Comprobante();
                    cfdi.atributos = leerAtributos(padre);
                    break;

                case "Emisor":
                    cfdi.Emisor           = new Emisor();
                    cfdi.Emisor.atributos = leerAtributos(padre);
                    break;

                case "DomicilioFiscal":
                    cfdi.Emisor.DomicilioFiscal           = new DomicilioFiscal();
                    cfdi.Emisor.DomicilioFiscal.atributos = leerAtributos(padre);
                    break;

                case "ExpedidoEn":
                    cfdi.Emisor.ExpedidoEn           = new ExpedidoEn();
                    cfdi.Emisor.ExpedidoEn.atributos = leerAtributos(padre);
                    break;

                case "RegimenFiscal":
                    cfdi.Emisor.RegimenFiscal = padre.Attributes["Regimen"].Value;
                    break;

                case "Receptor":
                    cfdi.Receptor           = new Receptor();
                    cfdi.Receptor.atributos = leerAtributos(padre);
                    break;

                case "Domicilio":
                    cfdi.Receptor.Domicilio           = new Domicilio();
                    cfdi.Receptor.Domicilio.atributos = leerAtributos(padre);
                    break;

                case "Conceptos":
                    cfdi.Conceptos = new Conceptos();
                    break;

                case "Concepto":
                    Concepto concepto = new Concepto();
                    concepto.atributos = leerAtributos(padre);
                    cfdi.Conceptos.Agregar(concepto);
                    break;

                case "Impuestos":
                    cfdi.Impuestos           = new Impuestos();
                    cfdi.Impuestos.atributos = leerAtributos(padre);
                    break;

                case "Traslados":
                    cfdi.Impuestos.Traslados = new Traslados();
                    break;

                case "Traslado":
                    Traslado traslado = new Traslado();
                    traslado.atributos = leerAtributos(padre);
                    cfdi.Impuestos.Traslados.Agregar(traslado);
                    break;

                case "Retenciones":
                    cfdi.Impuestos.Retenciones = new Retenciones();
                    break;

                case "Retencion":
                    Retencion retencion = new Retencion();
                    retencion.atributos = leerAtributos(padre);
                    cfdi.Impuestos.Retenciones.Agregar(retencion);
                    break;
                }
                break;
            }

            case "tfd": {
                switch (padre.LocalName)
                {
                case "TimbreFiscalDigital":
                    TimbreFiscalDigital timbre = new TimbreFiscalDigital();
                    timbre.atributos = leerAtributos(padre);
                    cfdi.AgregarComplemento(timbre);
                    break;
                }
                break;
            }

            case "nomina": {
                switch (padre.LocalName)
                {
                case "Nomina":
                    Nomina nomina = new Nomina();
                    nomina.atributos = leerAtributos(padre);
                    cfdi.AgregarComplemento(nomina);
                    break;

                case "Percepciones":
                    Percepciones percepciones = new Percepciones();
                    percepciones.atributos = leerAtributos(padre);
                    nomina = cfdi.Complemento("nomina") as Nomina;
                    nomina.Percepciones = new Percepciones();
                    break;

                case "Percepcion":
                    Percepcion percepcion = new Percepcion();
                    percepcion.atributos = leerAtributos(padre);
                    nomina = cfdi.Complemento("nomina") as Nomina;
                    nomina.Percepciones.Agregar(percepcion);
                    break;

                case "Deducciones":
                    Deducciones deducciones = new Deducciones();
                    deducciones.atributos = leerAtributos(padre);
                    nomina             = cfdi.Complemento("nomina") as Nomina;
                    nomina.Deducciones = deducciones;
                    break;

                case "Deduccion":
                    Deduccion deduccion = new Deduccion();
                    deduccion.atributos = leerAtributos(padre);
                    nomina = cfdi.Complemento("nomina") as Nomina;
                    nomina.Deducciones.Agregar(deduccion);
                    break;

                case "Incapacidades":
                    nomina = cfdi.Complemento("nomina") as Nomina;
                    nomina.Incapacidades = new Incapacidades();
                    break;

                case "Incapacidad":
                    Incapacidad incapacidad = new Incapacidad();
                    incapacidad.atributos = leerAtributos(padre);
                    nomina = cfdi.Complemento("nomina") as Nomina;
                    nomina.Incapacidades.Agregar(incapacidad);
                    break;

                case "HorasExtras":
                    nomina             = cfdi.Complemento("nomina") as Nomina;
                    nomina.HorasExtras = new HorasExtras();
                    break;

                case "HorasExtra":
                    HorasExtra horasExtra = new HorasExtra();
                    horasExtra.atributos = leerAtributos(padre);
                    nomina = cfdi.Complemento("nomina") as Nomina;
                    nomina.HorasExtras.Agregar(horasExtra);
                    break;
                }
                break;
            }

            case "ecc": {
                switch (padre.LocalName)
                {
                case "EstadoDeCuentaCombustible":
                    EstadoDeCuentaCombustible edoCta = new EstadoDeCuentaCombustible();
                    edoCta.atributos = leerAtributos(padre);
                    cfdi.AgregarComplemento(edoCta);
                    break;

                case "Conceptos":
                    EstadoDeCuentaCombustible combustible = cfdi.Complemento("combustible") as EstadoDeCuentaCombustible;
                    combustible.conceptos = new ConceptosEstadoDeCuentaCombustibles();
                    break;

                case "ConceptoEstadoDeCuentaCombustible":
                    ConceptoEstadoDeCuenta concepto = new ConceptoEstadoDeCuenta();
                    concepto.atributos = leerAtributos(padre);
                    combustible        = cfdi.Complemento("combustible") as EstadoDeCuentaCombustible;
                    combustible.Agregar(concepto);
                    break;

                case "Traslados":
                    combustible = cfdi.Complemento("combustible") as EstadoDeCuentaCombustible;
                    combustible.conceptos[combustible.conceptos.Elementos - 1].traslados = new TrasladosConceptosEstadoDeCuentaCombustible();
                    break;

                case "Traslado":
                    TrasladoEstadoDeCuentaCombustible traslado = new TrasladoEstadoDeCuentaCombustible();
                    traslado.atributos = leerAtributos(padre);
                    combustible        = cfdi.Complemento("combustible") as EstadoDeCuentaCombustible;
                    combustible.conceptos[combustible.conceptos.Elementos - 1].AgregaTraslado(traslado);
                    break;
                }
                break;
            }

            case "implocal": {
                switch (padre.LocalName)
                {
                case "ImpuestosLocales":
                    ImpuestosLocales implocal = new ImpuestosLocales();
                    implocal.atributos = leerAtributos(padre);
                    cfdi.AgregarComplemento(implocal);
                    break;
                }
                break;
            }
            }

            // Procesamos los nodos hijos
            for (int i = 0; i < padre.ChildNodes.Count; i++)
            {
                if (padre.ChildNodes[i].NodeType == XmlNodeType.Element)
                {
                    LeerNodos(padre.ChildNodes[i]);
                }
            }
        }