Esempio n. 1
0
        public ActionResult Service(Guid Id)
        {
            Empleados empleado = db.Empleados.Where(x => x.Id == Id).FirstOrDefault();

            NominaHistorial NominaHistorial = new Model.NominaHistorial();

            NominaHistorial = db.NominaHistorial.Where(x => x.Id == empleado.IdPlantilla).FirstOrDefault();
            NominaPercepciones NominaPercepciones = new NominaPercepciones();

            NominaPercepciones = db.NominaPercepciones.Where(x => x.Id == NominaHistorial.IdPercepciones).FirstOrDefault();
            List <NominaPercepcion> NominaPercepcion = new List <Model.NominaPercepcion>();

            NominaPercepcion = db.NominaPercepcion.Where(x => x.IdPercepciones == NominaPercepciones.Id).ToList();
            List <NominaHorasExtras> HorasExtras = new List <NominaHorasExtras>();

            foreach (var percepcion in NominaPercepcion)
            {
                foreach (var HoraExtra in db.NominaHorasExtras.Where(x => x.IdPercepcion == percepcion.Id))
                {
                    HorasExtras.Add(HoraExtra);
                }
            }
            List <NominaDeduccion> NominaDeduccion = new List <Model.NominaDeduccion>();

            NominaDeduccion = db.NominaDeduccion.Where(x => x.IdNominaHistorial == NominaHistorial.Id).ToList();
            List <NominaOtrosPago> NominaOtrosPago = new List <NominaOtrosPago>();

            NominaOtrosPago = db.NominaOtrosPago.Where(x => x.IdNominaHistorial == NominaHistorial.Id).ToList();
            List <NominaIncapacidad> NominaIncapacidad = new List <Model.NominaIncapacidad>();

            NominaIncapacidad = db.NominaIncapacidad.Where(x => x.IdNominaHistorial == NominaHistorial.Id).ToList();

            return(Json(new {
                Percepciones = NominaPercepcion.Select(x => new { x.Clave, x.Concepto, x.Id, x.IdPercepciones, x.ImporteExcento, x.ImporteGravado, x.PrecioOrtorgarse, x.Tipo, x.ValorMercado }),
                HorasExtras = HorasExtras.Select(x => new { x.Dias, x.FechaCreacion, x.HorasExtras, x.Id, x.IdPercepcion, x.ImportePagado, x.Tipos }),
                Deduccion = NominaDeduccion.Select(x => new { x.Clave, x.Concepto, x.Id, x.Importe, x.Tipo }),
                Incapacidad = NominaIncapacidad.Select(x => new { x.DiasIncapacidad, x.Id, x.Importe, x.Tipo }),
                OtrosPagos = NominaOtrosPago.Select(x => new { x.Año, x.Clave, x.Concepto, x.Id, x.Importe, x.RemanenteSalFav, x.SaldoAFavor, x.SubsidioCausado, x.Tipo })
            }, JsonRequestBehavior.AllowGet));
        }
Esempio n. 2
0
        public ActionResult Editar(EmpleadoView empleado)
        {
            try {
                db.UpdateEmpleado(empleado.Empleado.Id, empleado.Empleado.NoEmpleado, empleado.Empleado.IdProveedor, empleado.Empleado.Nombre, empleado.Empleado.ApellidoMaterno,
                                  empleado.Empleado.ApellidoPaterno, empleado.Empleado.IdUsuario, empleado.Empleado.Email, empleado.Empleado.FechaNacimiento, empleado.Empleado.FechaInicioRelLaboral,
                                  empleado.Empleado.RFC, empleado.Empleado.CURP, empleado.Empleado.HuellaDactilar, empleado.Empleado.Foto, empleado.Empleado.INE, empleado.Empleado.NumeroSeguridadSocial,
                                  empleado.Empleado.Departamento, empleado.Empleado.Direccion, empleado.Empleado.Puesto, empleado.Empleado.RiesgoPuesto, empleado.Empleado.TipoContrato.Trim(), empleado.Empleado.TipoJornada,
                                  empleado.Empleado.SalarioDiario, empleado.Empleado.Banco, empleado.Empleado.CuentaBancaria, empleado.Empleado.ClaveEntFed, empleado.Empleado.GradoEstudios, empleado.Empleado.Telefono,
                                  empleado.Empleado.TelefonoEmergencia, empleado.Empleado.Firma, empleado.Empleado.TipoSangre, empleado.Empleado.CUIP, empleado.Empleado.NumeroDeLicencia, empleado.Empleado.NumeroDeAutorizacion,
                                  empleado.NominaHistorial.Id, true);
                NominaHistorial               NominaHistorial               = db.NominaHistorial.Where(x => x.Id == empleado.NominaHistorial.Id).FirstOrDefault();
                NominaPercepciones            NominaPercepciones            = db.NominaPercepciones.Where(x => x.Id == NominaHistorial.IdPercepciones).FirstOrDefault();
                NominaJubilacionPensionRetiro NominaJubilacionPensionRetiro = db.NominaJubilacionPensionRetiro.Where(x => x.Id == NominaPercepciones.IdJubilacionPensionRetiro).FirstOrDefault();
                NominaSeparacionIndemnizacion NominaSeparacionIndemnizacion = db.NominaSeparacionIndemnizacion.Where(x => x.Id == NominaPercepciones.IdJubilacionPensionRetiro).FirstOrDefault();
                List <NominaPercepcion>       NominaPercepcion              = db.NominaPercepcion.Where(x => x.IdPercepciones == NominaPercepciones.Id).ToList();
                List <NominaDeduccion>        NominaDeduccion               = db.NominaDeduccion.Where(x => x.IdNominaHistorial == NominaHistorial.Id).ToList();
                List <NominaIncapacidad>      NominaIncapacidad             = db.NominaIncapacidad.Where(x => x.IdNominaHistorial == NominaHistorial.Id).ToList();
                List <NominaOtrosPago>        NominaOtrosPagos              = db.NominaOtrosPago.Where(x => x.IdNominaHistorial == NominaHistorial.Id).ToList();
                Guid IdUsuario = db.Usuarios.Where(x => x.Usuario == User.Identity.Name).First().Id;
                if (empleado.JubilacionPensionRetiro == null)
                {
                    if (NominaJubilacionPensionRetiro != null)
                    {
                        //Delete Jubilacion Pension Retiro & Update NominaPercepciones
                        db.DeleteNominaJubilacionPensionRetiro(NominaJubilacionPensionRetiro.Id);
                        db.UpdateNominaPercepciones(NominaPercepciones.Id, NominaSeparacionIndemnizacion.Id, null);
                    }
                }
                else
                {
                    if (NominaJubilacionPensionRetiro != null)
                    {
                        //Update Jubilacion Pension Retirol
                        db.UpdateNominaJubilacionPensionRetiro(empleado.JubilacionPensionRetiro.Id, empleado.JubilacionPensionRetiro.TotalUnaExhibicion, empleado.JubilacionPensionRetiro.TotalParcialidad, empleado.JubilacionPensionRetiro.MontoDiario,
                                                               empleado.JubilacionPensionRetiro.IngresoAcumulable, empleado.JubilacionPensionRetiro.IngresoNoAcumulable);
                    }
                    else
                    {
                        //Insert Jubilacion Pension Retiro & Update NominaPercepciones
                        NominaPercepciones Percepciones = db.NominaPercepciones.Where(x => x.Id == NominaHistorial.IdPercepciones).FirstOrDefault();
                        db.InsertNominaJubilacionPensionRetiro(empleado.JubilacionPensionRetiro.Id, empleado.JubilacionPensionRetiro.TotalUnaExhibicion, empleado.JubilacionPensionRetiro.TotalParcialidad, empleado.JubilacionPensionRetiro.MontoDiario, empleado.JubilacionPensionRetiro.IngresoAcumulable, empleado.JubilacionPensionRetiro.IngresoNoAcumulable, DateTime.Now, IdUsuario);
                        db.UpdateNominaPercepciones(Percepciones.Id, Percepciones.IdSeparacionIndemnizacion, empleado.JubilacionPensionRetiro.Id);
                    }
                }
                if (empleado.SeparacionIndemnizacion == null)
                {
                    if (NominaSeparacionIndemnizacion != null)
                    {
                        //Delete SeparacionIndemnizacion & Update NominaPercepciones
                        NominaPercepciones Percepciones = db.NominaPercepciones.Where(x => x.Id == NominaHistorial.IdPercepciones).FirstOrDefault();
                        db.DeleteNominaSeparacionIndemnizacion(NominaSeparacionIndemnizacion.Id);
                        db.UpdateNominaPercepciones(Percepciones.Id, null, Percepciones.IdJubilacionPensionRetiro);
                    }
                }
                else
                {
                    if (NominaSeparacionIndemnizacion != null)
                    {
                        //Update SeparacionIndemnizacion
                        db.UpdateNominaSeparacionIndemnizacion(empleado.SeparacionIndemnizacion.Id, empleado.SeparacionIndemnizacion.TotalPagado, empleado.SeparacionIndemnizacion.NumAñosServicio,
                                                               empleado.SeparacionIndemnizacion.UltimoSueldoMensOrd, empleado.SeparacionIndemnizacion.IngresoAcumulable, empleado.SeparacionIndemnizacion.IngresoNoAcumulable);
                    }
                    else
                    {
                        //Insert SeparacionIndemnizacion & Update NominaPercepciones
                        db.InsertNominaSeparacionIndemnizacion(empleado.SeparacionIndemnizacion.Id, empleado.SeparacionIndemnizacion.TotalPagado, empleado.SeparacionIndemnizacion.NumAñosServicio,
                                                               empleado.SeparacionIndemnizacion.UltimoSueldoMensOrd, empleado.SeparacionIndemnizacion.IngresoAcumulable, empleado.SeparacionIndemnizacion.IngresoNoAcumulable, DateTime.Now, IdUsuario);
                        db.UpdateNominaPercepciones(NominaPercepciones.Id, empleado.SeparacionIndemnizacion.Id, NominaPercepciones.IdJubilacionPensionRetiro);
                    }
                }

                foreach (var percepcion in empleado.NominaPercepcion)
                {
                    if (NominaPercepcion.Where(x => x.Id == percepcion.Id).Any())
                    {
                        List <NominaHorasExtras> HorasExtras = db.NominaHorasExtras.Where(x => x.IdPercepcion == percepcion.Id).ToList();
                        foreach (var HoraExtra in empleado.NominaHorasExtras.Where(x => x.IdPercepcion == percepcion.Id))
                        {
                            if (HorasExtras.Where(x => x.Id == HoraExtra.Id).Any())
                            {
                                //Update NominaHorasExtras
                                db.UpdateNominaHorasExtras(HoraExtra.Id, HoraExtra.Dias, HoraExtra.Tipos, HoraExtra.HorasExtras, HoraExtra.ImportePagado);
                            }
                            else
                            {
                                //Insert NominaHorasExtras
                                db.InsertNominaHorasExtras(HoraExtra.Id, HoraExtra.IdPercepcion, HoraExtra.Dias, HoraExtra.Tipos, HoraExtra.HorasExtras, HoraExtra.ImportePagado, DateTime.Now, IdUsuario);
                            }
                        }
                        foreach (var HoraExtra in HorasExtras)
                        {
                            if (!empleado.NominaHorasExtras.Where(x => x.Id == HoraExtra.Id).Any())
                            {
                                //Delete Nomina HoraExtra
                                db.DeleteNominaHorasExtras(HoraExtra.Id);
                            }
                        }
                        //Update NominaPercepcion
                        db.UpdateNominaPercepcion(percepcion.Id, percepcion.Tipo, percepcion.Clave, percepcion.Concepto, percepcion.ImporteExcento, percepcion.ImporteGravado, percepcion.ValorMercado, percepcion.PrecioOrtorgarse);
                    }
                    else
                    {
                        //Inset NominaPercepcion
                        db.InsertNominaPercepcion(percepcion.Id, percepcion.IdPercepciones, percepcion.Tipo, percepcion.Clave, percepcion.Concepto, percepcion.ImporteExcento, percepcion.ImporteGravado, percepcion.ValorMercado, percepcion.PrecioOrtorgarse, DateTime.Now, IdUsuario);
                    }
                }
                foreach (var percepcion in NominaPercepcion)
                {
                    if (!empleado.NominaPercepcion.Where(x => x.Id == percepcion.Id).Any())
                    {
                        List <NominaHorasExtras> HorasExtras = db.NominaHorasExtras.Where(x => x.IdPercepcion == percepcion.Id).ToList();
                        foreach (var HoraExtra in HorasExtras)
                        {
                            //Delete NominaHorasExtras
                            db.DeleteNominaHorasExtras(HoraExtra.Id);
                        }
                        //Delete NominaPercecion
                        db.DeleteNominaPercepcion(percepcion.Id);
                    }
                }
                foreach (var deduccion in empleado.NominaDeducion)
                {
                    if (NominaDeduccion.Where(x => x.Id == deduccion.Id).Any())
                    {
                        //Update NominaDeduccion
                        db.UpdateNominaDeduccion(deduccion.Id, deduccion.Tipo, deduccion.Clave, deduccion.Concepto, deduccion.Importe);
                    }
                    else
                    {
                        //Insert Deduccion
                        db.InsertNominaDeduccion(deduccion.Id, NominaHistorial.Id, deduccion.Tipo, deduccion.Concepto, deduccion.Importe, IdUsuario, DateTime.Now);
                    }
                }
                foreach (var deduccion in NominaDeduccion)
                {
                    if (!empleado.NominaDeducion.Where(x => x.Id == deduccion.Id).Any())
                    {
                        //Delete deduccion
                        db.DeleteNominaDeduccion(deduccion.Id);
                    }
                }

                foreach (var incapacidad in empleado.NominaIncapacidad)
                {
                    if (NominaIncapacidad.Where(x => x.Id == incapacidad.Id).Any())
                    {
                        //Update NominaIncapacidad
                        db.UpdateNominaIncapacidad(incapacidad.Id, incapacidad.DiasIncapacidad, incapacidad.Tipo, incapacidad.Importe);
                    }
                    else
                    {
                        //Insert NominaIncapacidad
                        db.InsertNominaIncapacidad(incapacidad.Id, NominaHistorial.Id, incapacidad.Tipo, incapacidad.DiasIncapacidad, incapacidad.Importe, IdUsuario, DateTime.Now);
                    }
                }
                foreach (var incapacidad in NominaIncapacidad)
                {
                    if (!empleado.NominaIncapacidad.Where(x => x.Id == incapacidad.Id).Any())
                    {
                        //Delete NominaIncapacidad
                        db.DeleteNominaIncapacidad(incapacidad.Id);
                    }
                }

                foreach (var OtroPago in empleado.NominaOtroPago)
                {
                    if (NominaOtrosPagos.Where(x => x.Id == OtroPago.Id).Any())
                    {
                        //Update NominaOtrosPagos
                        db.UpdateNominaOtrosPago(OtroPago.Id, OtroPago.Tipo, OtroPago.Clave, OtroPago.Concepto, OtroPago.Importe, OtroPago.SubsidioCausado, OtroPago.SaldoAFavor, OtroPago.Año, OtroPago.RemanenteSalFav);
                    }
                    else
                    {
                        //Insert NominaOtrosPagos
                        db.InsertNominaOtrosPagos(OtroPago.Id, OtroPago.IdNominaHistorial, OtroPago.Tipo, OtroPago.Importe, OtroPago.Concepto, OtroPago.SubsidioCausado, OtroPago.SaldoAFavor, OtroPago.Año, OtroPago.RemanenteSalFav);
                    }
                }
                foreach (var OtroPago in NominaOtrosPagos)
                {
                    if (!empleado.NominaOtroPago.Where(x => x.Id == OtroPago.Id).Any())
                    {
                        //Delete NominaOtrosPagos
                        db.DeleteNominaOtrosPago(OtroPago.Id);
                    }
                }

                return(Json(new { error = false }, JsonRequestBehavior.AllowGet));
            } catch (Exception ex) {
                return(Json(new { error = ex.InnerException, Message = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 3
0
        public ActionResult Generar(Guid IdNominaHistorial, string FechaInicialPago, string FechaFinalPago)
        {
            NominaHistorial         nominaHistorial    = db.NominaHistorial.Where(x => x.Id == IdNominaHistorial).First();
            Empleados               Empleado           = db.GetEmpleados(1, nominaHistorial.IdEmpleado).First();
            GetPAC_Result           PAC                = db.GetPAC(nominaHistorial.IdProveedor, 1).First();
            List <NominaDeduccion>  NominaDeducciones  = db.NominaDeduccion.Where(x => x.IdNominaHistorial == IdNominaHistorial).ToList();
            NominaPercepciones      NominaPercepciones = db.NominaPercepciones.Where(x => x.Id == nominaHistorial.IdPercepciones).FirstOrDefault();
            List <NominaPercepcion> nominaPercepcion   = db.NominaPercepcion.Where(x => x.IdPercepciones == NominaPercepciones.Id).ToList();
            List <Model.CFDI>       CFDIs              = db.GetCFDI(null, 0).Where(x => x.IdProveedor == PAC.Id).ToList();

            int FolioFactura = 1;

            if (CFDIs.Count > 0)
            {
                FolioFactura = CFDIs.Max(x => x.Folio).Value + 1;
            }

            GeneraCFDI obj  = new GeneraCFDI();
            string     PATH = "~/Certificados/" + PAC.RFC;
            string     CER  = Server.MapPath(PATH + "/" + PAC.RFC + ".cer");
            string     KEY  = Server.MapPath(PATH + "/" + PAC.RFC + ".key");

            obj.agregarCertificado(CER);
            double SubTotal   = nominaPercepcion.Sum(x => x.ImporteGravado + x.ImporteExcento).Value + 68.29;
            double Descuento  = NominaDeducciones.Sum(x => x.Importe);
            double OtrosPagos = 0;
            double TotalImpuestosRetenidos = NominaDeducciones.Where(x => x.Tipo.Contains("002")).Sum(x => x.Importe);
            double TotalOtrasDeducciones   = NominaDeducciones.Where(x => !x.Tipo.Contains("002")).Sum(x => x.Importe);

            obj.agregarComprobante33("A", "" + FolioFactura, System.DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"), "99", "", SubTotal, Descuento, "MXN", "", SubTotal - Descuento, "N", "PUE", "22210", "");
            obj.agregarEmisor(PAC.RFC, PAC.Nombre, PAC.RegimenFiscal);
            TimeSpan Time = (nominaHistorial.FechaFinalPago - Empleado.FechaInicioRelLaboral.Value);
            DateTime A    = new DateTime();

            A = A + Time;

            int    Semanas                = Time.Days / 7;
            string Antiguedad             = "P" + Semanas + "W";
            int    DiasDeVacaciones       = CalcularDiasDeVacaciones(A);
            string SalarioDiarioIntegrado = ((double)(((365 + 15 + (DiasDeVacaciones * 0.25)) / 365) * Empleado.SalarioDiario)).ToString("f2");

            obj.agregarReceptor(Empleado.RFC, Empleado.Nombre + " " + Empleado.ApellidoPaterno + " " + Empleado.ApellidoMaterno, "", "", "P01");
            obj.agregarConcepto("84111505", "", 1, "ACT", "", "Pago de nómina", (nominaPercepcion.Sum(x => x.ImporteGravado).Value + 68.29), (nominaPercepcion.Sum(x => x.ImporteGravado).Value + 68.29), NominaDeducciones.Sum(x => x.Importe));
            //Nomina nominaHistorial.FechaInicialPago.ToString("yyyy-MM-dd")
            obj.agregarNomina12("1.2", "O", nominaHistorial.FechaPago.ToString("yyyy-MM-dd"), FechaInicialPago,
                                FechaFinalPago, nominaHistorial.NumeroDiasPagados.ToString(), (SubTotal - 68.29).ToString("f2"), Descuento.ToString("f2"), "68.29");
            obj.agregarNominaEmisor12(PAC.CURP, PAC.RegistroPatronal, PAC.RfcPatronOrigen);
            obj.agregarNominaReceptor12(Empleado.CURP, Empleado.NumeroSeguridadSocial, Empleado.FechaInicioRelLaboral.Value.ToString("yyyy-MM-dd"), Antiguedad,
                                        Empleado.TipoContrato, "No", Empleado.TipoJornada, "02", Empleado.NoEmpleado.ToString(),
                                        Empleado.Departamento, Empleado.Puesto, Empleado.RiesgoPuesto, nominaHistorial.PeriodicidadPago, Empleado.Banco, Empleado.CuentaBancaria,
                                        "0", SalarioDiarioIntegrado, Empleado.ClaveEntFed);

            double TotalPercepciones = nominaPercepcion.Sum(x => x.ImporteGravado + x.ImporteExcento).Value, TotalPercepcionesTemp = 0;

            obj.agregarNominaPercepciones12(nominaPercepcion.Sum(x => x.ImporteGravado + x.ImporteExcento).Value.ToString("f2"), "", "", nominaPercepcion.Sum(x => x.ImporteGravado).Value.ToString("f2"), nominaPercepcion.Sum(x => x.ImporteExcento).Value.ToString("f2"));
            foreach (var item in nominaPercepcion)
            {
                obj.agregarNominaPercepcionesPercepcion12(item.Tipo, item.Clave, item.Concepto, item.ImporteGravado.Value.ToString("f2"), item.ImporteExcento.Value.ToString("f2"));
                TotalPercepcionesTemp += item.ImporteGravado.Value + item.ImporteExcento.Value;
            }



            obj.agregarNominaOtrosPagosOtroPago12("002", "002", "Subsidio para el empleo (efectivamente entregado al trabajador).", "68.29");
            obj.agregarNominaOtrosPagosOtroPagoSubsidioAlEmpleo12("68.29");
            obj.agregarNominaDeducciones12(TotalOtrasDeducciones.ToString("f2"), TotalImpuestosRetenidos.ToString("f2"));
            foreach (var item in NominaDeducciones)
            {
                obj.agregarNominaDeduccionesDeduccion12(item.Tipo, item.Clave, item.Concepto, item.Importe.ToString("f2"));
            }

            obj.GeneraXML(KEY, PAC.ContrasenaLlave);
            string XML  = obj.Xml;

            //XML = XML.Replace("TotalOtrosPagos=\"0\"", "");
            XML = obj.Xml.Replace("Sello=\"\"", "Sello=\"" + obj.SelloEmisor + "\"");
            //XML = XML.Replace("TotalOtrosPagos=\"0\"", "");
            //obj.UUID;
            //obj.Serie;
            string NombreArchivo = Empleado.RFC + "_" + FolioFactura + "_" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + "_SinTimbrar";
            string File = Server.MapPath("~/Facturas/" + PAC.RFC + "/Nominas/" + NombreArchivo + ".xml");

            Tools.NumLetra NL = new Tools.NumLetra();
            System.IO.File.WriteAllText(File, XML);
            byte[] CFDI;
            obj.TimbrarCfdiArchivo(File, PAC.Usuario, PAC.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx", File.Replace(NombreArchivo + ".xml", ""), NombreArchivo.Replace("_SinTimbrar", ""), true);
            if (obj.MensajeError == "")
            {
                Guid IdUsuario = db.Usuarios.Where(x => x.Usuario == User.Identity.Name).FirstOrDefault().Id;
                System.IO.File.WriteAllText(File.Replace("_SinTimbrar", ""), obj.XmlTimbrado);
                CFDI = System.IO.File.ReadAllBytes(File.Replace("_SinTimbrar", ""));
                db.InsertCFDI(Guid.Parse(obj.UUID), "Nomina", FolioFactura, CFDI, "~\\Facturas\\" + PAC.RFC + "\\Nominas\\" + NombreArchivo.Replace("_SinTimbrar.xml", ""),
                              null, Empleado.Id, PAC.Id, false, DateTime.Now, IdUsuario);
                var base64 = "";
                //if (PAC.Logo != null)
                //  base64 = Convert.ToBase64String(PAC.);
                //else
                base64 = Convert.ToBase64String(System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Avenzo_Logo_Header.png")));
                var imgSrc = String.Format("data:image/gif;base64,{0}", base64);
                db.InsertCFDIPorOperacion(Guid.NewGuid(), IdNominaHistorial, null, Guid.Parse(obj.UUID));
                CultureInfo CI = CultureInfo.CreateSpecificCulture("es-MX");

                /*PDF.CrearNomina(Server.MapPath("/"), NombreArchivo, nominaHistorial.LugarExpedicion, PAC.RFC, PAC.Nombre, "", "", obj.UUID,
                 *  obj.NoCertificadoPac, obj.Folio, obj.Serie, obj.FechaEmision, Empleado.Nombre + " " + Empleado.ApellidoPaterno + " " + Empleado.ApellidoMaterno,
                 *  Empleado.Departamento, Empleado.RFC, Empleado.Puesto, imgSrc, Empleado.CURP, Empleado.NumeroSeguridadSocial,
                 *  nominaHistorial.NumeroDiasPagados.ToString(), nominaHistorial.FechaPago.ToString("yyyy-MM-dd"), nominaHistorial.FechaInicialPago.ToString("yyyy-MM-dd"), nominaHistorial.FechaFinalPago.ToString("yyyy-MM-dd"), NL.Convertir((SubTotal - Descuento).ToString("f2"), true, "MXN"),
                 *  "NA", Empleado.CuentaBancaria, PAC.RegimenFiscal,TotalImpuestosRetenidos.ToString("C2",CI), (SubTotal - Descuento).ToString("C2",CI),obj.SelloEmisor,
                 *  obj.SelloSat, obj.CadenaOriginal, NominaPercepciones, NominaDeducciones);*/
                return(Json(new { error = "none", Id = obj.UUID }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(new { error = "Error a Timbrar", Message = obj.MensajeError }, JsonRequestBehavior.AllowGet));
            }
        }
        private NominaPercepciones contruyeNominaListaPercepciones(List <CFDIReciboConcepto> listConceptos, List <CFDIReciboHrsExtras> listReciboHorasExtras)
        {
            NominaPercepciones percepciones = null;

            existeIncapacidades = false;
            listConceptos       = listConceptos == null ? new List <CFDIReciboConcepto>() : listConceptos;
            if (listConceptos.Count() > 0)
            {
                double ultSueldo = 0.0;
                percepciones = new NominaPercepciones();
                List <NominaPercepcionesPercepcion> listPercepciones = new List <NominaPercepcionesPercepcion>();
                int    i;
                bool   jubilacion = false, separacionIndeminizacion = false;
                Double totalExento = 0.0, totalGravable = 0.0, totalSueldo = 0.0, totalSeparacionIndeminizacion = 0.0, totalJubilacionPension = 0.0;
                ConceptosJubilacion conceptosJubilacion = ConceptosJubilacion.NINGUNA;
                for (i = 0; i < listConceptos.Count(); i++)
                {
                    totalExento   = totalExento + listConceptos[i].importeExento;
                    totalGravable = totalGravable + listConceptos[i].importeGravable;
                    if (string.Equals(listConceptos[i].claveSAT, "014", StringComparison.OrdinalIgnoreCase))
                    {
                        existeIncapacidades = true;
                    }
                    if (string.Equals(listConceptos[i].claveSAT, "001", StringComparison.OrdinalIgnoreCase))
                    {
                        existeIncapacidades = true;
                        ultSueldo           = listConceptos[i].importeExento + listConceptos[i].importeGravable;
                    }

                    if (string.Equals(listConceptos[i].claveSAT, "022", StringComparison.OrdinalIgnoreCase) | string.Equals(listConceptos[i].claveSAT, "023", StringComparison.OrdinalIgnoreCase)
                        | string.Equals(listConceptos[i].claveSAT, "025", StringComparison.OrdinalIgnoreCase))
                    {  /////SeparacionIndeminizacion
                        totalSeparacionIndeminizacion = totalSeparacionIndeminizacion + listConceptos[i].importeExento + listConceptos[i].importeGravable;
                        separacionIndeminizacion      = true;
                    }
                    else if (string.Equals(listConceptos[i].claveSAT, "039", StringComparison.OrdinalIgnoreCase) | string.Equals(listConceptos[i].claveSAT, "044", StringComparison.OrdinalIgnoreCase))
                    {  ///JubilacionPension
                        totalJubilacionPension = totalJubilacionPension + listConceptos[i].importeExento + listConceptos[i].importeGravable;
                        jubilacion             = true;
                        if (string.Equals(listConceptos[i].claveSAT, "039", StringComparison.OrdinalIgnoreCase))
                        {
                            conceptosJubilacion = ConceptosJubilacion.TOTAL;
                        }
                        else if (string.Equals(listConceptos[i].claveSAT, "044", StringComparison.OrdinalIgnoreCase))
                        {
                            conceptosJubilacion = ConceptosJubilacion.PARCIAL;
                        }
                    }
                    else
                    {
                        totalSueldo = totalSueldo + listConceptos[i].importeExento + listConceptos[i].importeGravable;
                    }
                    listPercepciones.Add(contruyeNominaPercepcion(listConceptos[i], listReciboHorasExtras));
                }
                percepciones.Percepcion = listPercepciones.ToArray();

                totalPercepciones         = totalExento + totalGravable;
                percepciones.TotalExento  = (UtileriasSat.castNumerosToBigDecimal(totalExento));
                percepciones.TotalGravado = (UtileriasSat.castNumerosToBigDecimal(totalGravable));
                percepciones.TotalSueldos = (UtileriasSat.castNumerosToBigDecimal(totalSueldo));


                if (jubilacion)
                {
                    percepciones.JubilacionPensionRetiro      = (createJubilacionRetiro(conceptosJubilacion, totalJubilacionPension, null, ultSueldo)); //pendiente
                    percepciones.TotalJubilacionPensionRetiro = (UtileriasSat.castNumerosToBigDecimal(totalJubilacionPension));
                }
                if (separacionIndeminizacion)
                {
                    percepciones.TotalSeparacionIndemnizacion = (UtileriasSat.castNumerosToBigDecimal(totalSeparacionIndeminizacion));
                    percepciones.SeparacionIndemnizacion      = (createSeparacionIndemnizacion(totalSeparacionIndeminizacion, ultSueldo, anioServicio));
                }
            }
            return(percepciones);
        }