Beispiel #1
0
        public ActionResult _PanelRecibos()
        {
            ReciboView model = new ReciboView();

            model.moneda = new List <string>();
            model.moneda.Add("MXN");
            model.moneda.Add("USD");
            model.conceptos = new List <ReciboView.Concepto>();
            model.mes       = new List <string>();
            DateTime InicioMeses = DateTime.Now.AddMonths(-6);
            DateTime FinalMeses  = DateTime.Now.AddMonths(6);

            System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("es-MX");
            Usuarios usuario = db.Usuarios.Where(x => x.Usuario == User.Identity.Name).First();

            for (DateTime date = InicioMeses; date.Date <= FinalMeses.Date; date = date.AddMonths(1))
            {
                model.mes.Add(ci.TextInfo.ToTitleCase(date.ToString("MMMM", ci)) + " del " + date.ToString("yyyy", ci));
            }

            if (User.IsInRole("Admin"))
            {
                model.pac      = db.GetPAC(null, 0).ToList();
                model.clientes = db.GetClientes(null, true, 0).ToList();
            }
            else
            {
                model.pac      = db.GetPAC(null, 0).Where(x => x.UsuarioCreacion == usuario.Id).ToList();
                model.clientes = db.GetClientes(null, true, 0).Where(x => x.UsuarioCreacion == usuario.Id).ToList();
            }
            return(View(model));
        }
Beispiel #2
0
        public ActionResult Editar(string TempId)
        {
            ViewBag.Pais    = db.Pais.ToList();
            ViewBag.Ciudad  = db.Ciudad.ToList();
            ViewBag.Estados = db.Estados.ToList().Where(x => x.c_Pais == "MEX" && x.NombreEstado.Contains("Baja"));
            ViewBag.Bancos  = db.Bancos.ToList();
            Usuarios usuario = db.Usuarios.Where(x => x.Usuario == User.Identity.Name).First();

            if (usuario.Roles.Contains("Admin"))
            {
                ViewBag.PAC = db.GetPAC(null, 0);
            }
            else
            {
                Clientes clientes = db.Clientes.Where(x => x.IdUsuario == usuario.Id).First();
                ViewBag.PAC = db.GetPAC(null, 0).Where(x => x.Id == clientes.IdProveedor);
            }


            ViewBag.TipoAfiliacion = db.Catalogos.Where(x => x.Tipo != "Creditos" &&
                                                        x.Activo == true &&
                                                        x.FechaLimiteInicio <= DateTime.Now &&
                                                        x.FechaLimiteFinal >= DateTime.Now).ToList();
            Guid     Id      = Guid.Parse(TempId);
            Clientes cliente = db.GetClientes(Id, true, 1).First();

            return(PartialView("_Editar", cliente));
        }
        // GET: Nomina
        public ActionResult Index()
        {
            NominaView NominaView = new NominaView();

            NominaView.PAC              = db.GetPAC(null, 0).ToList();
            NominaView.RiesgoPuesto     = db.RiesgoPuesto.ToList();
            NominaView.Jornadas         = db.Jornadas.ToList();
            NominaView.Contratos        = db.Contratos.ToList();
            NominaView.Estados          = db.Estados.ToList();
            NominaView.PeriodicidadPago = db.PeriodicidadPago.ToList();
            NominaView.Deducciones      = db.Deducciones.ToList();
            NominaView.OtrosPagos       = db.OtrosPagos.ToList();
            NominaView.Horas            = db.Horas.ToList();

            /* GetPAC_Result PAC = db.GetPAC(Guid.Parse("9b13afbb-1455-483e-84d5-cf339dc7ff16"), 1).First();
             * var base64 = Convert.ToBase64String(PAC.Logo);
             * Tools.NumLetra n = new NumLetra();
             * var imgSrc = String.Format("data:image/gif;base64,{0}", base64);
             * PDF.CrearNomina(Server.MapPath("~/"), "ABG1512109U1", "AVENZO BUSINESS GROUP S de RL de CV", "", "﴾664﴿ 526‐65‐73",
             *   "6022641f‐e2bb‐42c4‐ab55‐2e55c682e6b8", "1000001200001456","","","","",
             *   "","","", imgSrc,"SARC9501HBCN01","10000111000",
             *   "1","","","",n.Convertir("25.2",true,"MXN"),
             *   "01","12334","601","25","25","25",
             *   "25","",new List<NominaPercepciones>(),new List<NominaDeduccion>());*/
            return(PartialView(NominaView));
        }
        public ActionResult _PanelOperaciones()
        {
            Usuarios usuario  = db.Usuarios.Where(x => x.Usuario == User.Identity.Name).First();
            Ingresos ingresos = new Ingresos();

            if (User.IsInRole("Admin"))
            {
                ingresos.Clientes = db.GetClientes(null, true, 0).ToList();
                //ingresos.Facturas = db.GetCFDI(null, 0).ToList();
                ingresos.ingresos    = db.GetMonitoreoIngreso(0, null).OrderByDescending(x => x.FechaCreacion).ToList();
                ingresos.Proveedores = db.GetPAC(null, 0).ToList();
                ingresos.Adeudos     = db.GetAdeudosInstalaciones(null, null, 0).ToList();
            }
            else
            {
                ingresos.Clientes = db.GetClientes(null, true, 0).Where(x => x.UsuarioCreacion == usuario.Id).ToList();
                //ingresos.Facturas = db.GetCFDI(null, 0).ToList();
                ingresos.ingresos    = db.GetMonitoreoIngreso(0, null).Where(x => x.UsuarioCreacion == usuario.Id).OrderByDescending(x => x.FechaCreacion).ToList();
                ingresos.Proveedores = db.GetPAC(null, 0).ToList();
                ingresos.Adeudos     = db.GetAdeudosInstalaciones(null, null, 0).ToList();
            }

            ViewBag.FormaPago = db.FormaDePago.ToList();
            return(PartialView(ingresos));
        }
Beispiel #5
0
        public ActionResult Editar(string TempId)
        {
            ViewBag.Pais    = db.Pais.ToList();
            ViewBag.Ciudad  = db.Ciudad.ToList();
            ViewBag.Estados = db.Estados.ToList().Where(x => x.c_Pais == "MEX" && x.NombreEstado.Contains("Baja"));
            ViewBag.Bancos  = db.Bancos.ToList();

            /*bool Cliente = db.Clientes.Where(x => x.IUsuario == User.Identity.Name).Any();
             * if (Cliente)
             *  ViewBag.PAC = db.GetPAC(null, 0).Where(x=>x.Id==db.Clientes_ALT.Where(yx=>yx.Usuario==User.Identity.Name).First().IdProveedor);
             * else*/
            ViewBag.PAC            = db.GetPAC(null, 0).ToList();
            ViewBag.TipoAfiliacion = db.Catalogos
                                     .Where(x => x.Tipo == "Paquete");
            Clientes cliente = db.GetClientes(Guid.Parse(TempId), true, 1).First();

            return(PartialView("_Editar", cliente));
        }
Beispiel #6
0
        public ActionResult Editar(Guid IdTemp)
        {
            EmpleadoView Empleado = new EmpleadoView();

            Empleado.Bancos          = db.Bancos.ToList();
            Empleado.Contratos       = db.Contratos.ToList();
            Empleado.Deducciones     = db.Deducciones.ToList();
            Empleado.Estados         = db.Estados.OrderBy(x => x.NombreEstado).ToList();
            Empleado.Empleado        = db.GetEmpleados(1, IdTemp).FirstOrDefault();
            Empleado.Horas           = db.Horas.ToList();
            Empleado.Incapacidad     = db.Incapacidades.ToList();
            Empleado.Jornadas        = db.Jornadas.ToList();
            Empleado.Nomina          = db.Nominas.ToList();
            Empleado.NominaHistorial = db.NominaHistorial.Where(x => x.Id == Empleado.Empleado.IdPlantilla).FirstOrDefault();
            if (Empleado.NominaHistorial != null)
            {
                Empleado.NominaPercepciones      = db.NominaPercepciones.Where(x => x.Id == Empleado.NominaHistorial.IdPercepciones).FirstOrDefault();
                Empleado.NominaPercepcion        = db.NominaPercepcion.Where(x => x.IdPercepciones == Empleado.NominaPercepciones.Id).ToList();
                Empleado.JubilacionPensionRetiro = db.NominaJubilacionPensionRetiro.Where(x => x.Id == Empleado.NominaPercepciones.IdJubilacionPensionRetiro).FirstOrDefault();
                Empleado.SeparacionIndemnizacion = db.NominaSeparacionIndemnizacion.Where(x => x.Id == Empleado.NominaPercepciones.IdSeparacionIndemnizacion).FirstOrDefault();
                List <NominaHorasExtras> NominaHorasExtras = db.NominaHorasExtras.ToList();
                Empleado.NominaHorasExtras = new List <Model.NominaHorasExtras>();
                foreach (var percepcion in Empleado.NominaPercepcion)
                {
                    foreach (var HorasExtras in NominaHorasExtras.Where(x => x.IdPercepcion == percepcion.Id))
                    {
                        Empleado.NominaHorasExtras.Add(HorasExtras);
                    }
                }
                Empleado.NominaDeducion    = db.NominaDeduccion.Where(x => x.IdNominaHistorial == Empleado.NominaHistorial.Id).ToList();
                Empleado.NominaIncapacidad = db.NominaIncapacidad.Where(x => x.IdNominaHistorial == Empleado.NominaHistorial.Id).ToList();
                Empleado.NominaOtroPago    = db.NominaOtrosPago.Where(x => x.IdNominaHistorial == Empleado.NominaHistorial.Id).ToList();
            }
            Empleado.OtrosPagos       = db.OtrosPagos.ToList();
            Empleado.PAC              = db.GetPAC(null, 0).ToList();
            Empleado.Percepciones     = db.Percepciones.ToList();
            Empleado.PeriodicidadPago = db.PeriodicidadPago.ToList();
            Empleado.Regimen          = db.Regimen.ToList();
            Empleado.RiesgoPuesto     = db.RiesgoPuesto.ToList();
            return(PartialView(Empleado));
        }
        public ActionResult Editar(Guid TempId)
        {
            CertificadosView view = new CertificadosView();

            view.PAC                   = db.GetPAC(TempId, 1).First();
            view.ClaveProdServ         = db.ClaveProdServ.ToList();
            view.ClaveProdServPorClase = db.GetClaveProdServClase(string.Empty, 0).ToList();
            ViewBag.Regimen            = db.RegimenFiscal.ToList();
            return(PartialView("_Editar", view));
        }
        public ActionResult SelecionDeFactura(Guid IdAdeudo)
        {
            Adeudos Adeudo = new Adeudos();

            Adeudo.adeudos  = db.GetAdeudosInstalaciones(IdAdeudo, null, 1).ToList();
            Adeudo.Clientes = db.GetClientes(Adeudo.adeudos.First().IdCliente, true, 1).ToList();
            Guid IdProveedor = (Guid)Adeudo.adeudos.First().IdProveedor;

            Adeudo.Proveedores = db.GetPAC(IdProveedor, 1).ToList();
            string R = Adeudo.Proveedores.First().RegimenFiscal.Trim();
            List <RegimenFiscal> Regimen = db.RegimenFiscal.Where(x => x.c_RegimenFiscal.Trim() == R).ToList();

            ViewBag.RegimenFiscal = Regimen.First().Descripcion;

            return(PartialView("_Confirmar", Adeudo));
        }
Beispiel #9
0
 public ActionResult Registrar()
 {
     if (!HttpContext.User.Identity.IsAuthenticated)
     {
         ViewBag.Pais           = db.Pais.ToList();
         ViewBag.Ciudad         = db.Ciudad.ToList();
         ViewBag.Estado         = db.Estados.ToList().Where(x => x.c_Pais == "MEX" && x.NombreEstado.Contains("Baja"));
         ViewBag.Bancos         = db.Bancos.ToList();
         ViewBag.PAC            = db.GetPAC(null, 0);
         ViewBag.Usuarios       = db.Usuarios.ToList();
         ViewBag.TipoAfiliacion = db.Catalogos
                                  .Where(x => x.Nombre == "Paquete");
         List <Clientes>  clientes  = db.Clientes.Where(x => x.Email != null && !x.Email.Contains("n/a") && x.Email != string.Empty).ToList();
         List <Empleados> empleados = db.Empleados.Where(x => x.Email != null && !x.Email.Contains("n/a") && x.Email != string.Empty).ToList();
         ViewBag.Email1 = clientes;
         ViewBag.Email  = empleados;
         return(View());
     }
     else
     {
         return(Redirect("/"));
     }
 }
        public ActionResult Facturar(Guid IdFactura)
        {
            try
            {
                List <CFDIPorOperacion> CFDIs = db.CFDIPorOperacion.Where(x => x.IdAdeudosInstalaciones == IdFactura).ToList();
                bool isExist = false;
                foreach (var CFDI in CFDIs)
                {
                    if (db.CFDI.Where(x => x.Id == CFDI.IdCFDI).FirstOrDefault().Cancelado == false)
                    {
                        isExist = true;
                    }
                }
                if (!isExist)
                {
                    List <AdeudosInstalaciones> Adeudos = ListaAdeudos(IdFactura);
                    RVCFDI33.GeneraCFDI         objCfdi = new RVCFDI33.GeneraCFDI();
                    bool   pagado    = true;
                    double Total     = 0;
                    Guid   IdCliente = new Guid();
                    byte[] Logo;
                    string Moneda = "MXN", FormaDePago = "01", TipoCambio = "1", MetodoDePago = "PUE", UsoCFDI = "G03";
                    foreach (var adeudo in Adeudos)
                    {
                        if (adeudo.Pagado == false)
                        {
                            pagado = false;
                        }
                        List <MonitoreoIngresos> Operaciones = db.GetMonitoreoIngreso(0, null).Where(x => x.IdAdeudo == adeudo.Id).OrderBy(x => x.FechaCreacion).ToList();
                        foreach (var Operacion in Operaciones)
                        {
                            double total = (double)(Operacion.Cargos + (Operacion.CargosUSD * Operacion.TipoCambio));
                            Moneda = Operacion.Moneda.Trim();

                            var TC = Operacion.TipoCambio;
                            TipoCambio = TC.Value == 0 || TC == null ? "" : TC.Value.ToString("f2");
                        }
                        FormaDePago  = Operaciones.First().FormaDePago;
                        MetodoDePago = Operaciones.First().MetodoDePago;
                        UsoCFDI      = Operaciones.First().UsoCFDI;
                        Total        = Total + adeudo.Total;
                        IdCliente    = (Guid)adeudo.IdCliente;
                    }
                    if (pagado == true)
                    {
                        GetPAC_Result PAC       = db.GetPAC(Adeudos.First().IdProveedor, 1).First();
                        int           Folio     = 1;
                        var           TempFolio = db.CFDI.Where(x => x.IdProveedor == PAC.Id).Max(x => x.Folio);
                        if (TempFolio != null)
                        {
                            Folio = db.CFDI.Where(x => x.IdProveedor == PAC.Id).Max(x => x.Folio).Value + 1;
                        }
                        string Path        = Server.MapPath("~/"),
                               Certificado = Server.MapPath("~/Certificados/" + PAC.RFC + "/" + PAC.RFC + ".cer"),
                               Llave       = Server.MapPath("~/Certificados/" + PAC.RFC + "/" + PAC.RFC + ".key"),
                               Factura     = Path + "Facturas\\" + PAC.RFC + "\\Facturas";
                        Clientes Clientes  = db.Clientes.Where(x => x.IdCliente == IdCliente).First();
                        Logo = null;
                        if (Logo == null)
                        {
                            Logo = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Avenzo_Logo_Header.png"));
                        }
                        objCfdi.agregarCertificado(Certificado);
                        objCfdi.agregarComprobante33("B", Folio.ToString(), DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"), FormaDePago, "", Total / 1.16, 0, Moneda, TipoCambio == "1.00"?"1":TipoCambio, Total, "I", MetodoDePago, "22210", "");
                        objCfdi.agregarEmisor(PAC.RFC.Trim(), PAC.Nombre, PAC.RegimenFiscal.Trim());
                        objCfdi.agregarReceptor(Clientes.RFC, Clientes.Nombres + " " + Clientes.ApellidoPaterno + " " + Clientes.ApellidoMaterno.TrimEnd(), "", "", UsoCFDI);
                        string ConceptoPDF = "", CantidadPDF = "", ValorUnitarioPDF = "", ImportePDF = "", UnidadPDF = "";
                        foreach (var adeudo in Adeudos)
                        {
                            string ClaveProServ = adeudo.ClaveProdServ, NoIdentificacion = "1", ClaveUnidad = adeudo.Unidad, Concepto = adeudo.Concepto;
                            double Cantidad = (double)adeudo.Cantidad, ValorUnitario = (adeudo.Total / 1.16) / Cantidad, Importe = adeudo.Total / 1.16;
                            objCfdi.agregarConcepto(ClaveProServ, NoIdentificacion, Cantidad, ClaveUnidad, "Elemento", Concepto, ValorUnitario, Importe, 0.00);
                            ConceptoPDF      += Concepto + "\n";
                            CantidadPDF      += Cantidad.ToString("f2") + "\n";
                            ValorUnitarioPDF += (ValorUnitario).ToString("f2") + "\n";
                            ImportePDF       += Importe.ToString("f2") + "\n";
                            UnidadPDF        += ClaveUnidad + "\n";
                            objCfdi.agregarImpuestoConceptoTraslado(adeudo.Total / 1.16, "002", "Tasa", 0.160000, adeudo.Total - (adeudo.Total / 1.16));
                        }
                        objCfdi.agregarImpuestos(0, Total - (Total / 1.16));
                        objCfdi.agregarTraslado("002", "Tasa", 0.160000, Total - (Total / 1.16));
                        objCfdi.GeneraXML(Llave, PAC.ContrasenaLlave);
                        string Xml    = objCfdi.Xml.Replace("Sello=\"\"", "Sello=\"" + objCfdi.SelloEmisor + "\"");
                        string Nombre = PAC.RFC + "_" + Folio + "_" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Year;
                        System.IO.File.WriteAllText(Factura + "\\" + Nombre + "_SinTimbrar.xml", Xml);
                        //XmlDocument myXmlDocument = new XmlDocument();
                        objCfdi.TimbrarCfdiArchivo(Factura + "\\" + Nombre + "_SinTimbrar.xml", PAC.Usuario, PAC.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx", Factura, Nombre, true);
                        if (objCfdi.MensajeError == "")
                        {
                            GuardarInformacion(objCfdi, Clientes, Adeudos, PAC, Factura, Nombre, Folio, Moneda,
                                               Logo, Total, FormaDePago, MetodoDePago, CantidadPDF, ConceptoPDF, ValorUnitarioPDF, ImportePDF, UnidadPDF);
                            return(Json(new { error = "none", IdFactura = objCfdi.UUID }, JsonRequestBehavior.AllowGet));
                        }
                        else
                        {
                            return(Json(new { error = "Error Al faturar", Message = objCfdi.MensajeError }, JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        return(Json(new { error = "No estan Pagado Todos Los Conceptos" }, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    return(Json(new { error = "" }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception Ex)
            {
                return(Json(new { error = Ex.InnerException, Message = Ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
Beispiel #11
0
        public ActionResult Index()
        {
            List <GetPAC_Result> pacs = db.GetPAC(null, 0).ToList();

            return(View(pacs));
        }
Beispiel #12
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));
            }
        }