Exemple #1
0
        public static empresa ValidarUsuarioSinSaldo(string rfc)
        {
            NtLinkEmpresa em      = new NtLinkEmpresa();
            empresa       empresa = em.GetByRfc(rfc);
            empresa       result;

            if (empresa == null)
            {
                TimbradoUtils.Logger.Info(rfc + " No encontrado");
                result = null;
            }
            else
            {
                if (empresa.Bloqueado)
                {
                    TimbradoUtils.Logger.Info(empresa.RFC + "-> Bloqueado");
                    throw new FaultException("El RFC del emisor se encuentra bloqueado, favor de ponerse en contacto con atención al cliente");
                }
                if (empresa.Baja)
                {
                    TimbradoUtils.Logger.Info(empresa.RFC + "-> Baja");
                    throw new FaultException("El RFC del emisor se encuentra dado de baja, favor de ponerse en contacto con atención a clientes");
                }
                NtLinkSistema nls     = new NtLinkSistema();
                Sistemas      sistema = nls.GetSistema((int)empresa.idSistema.Value);
                if (sistema.Bloqueado)
                {
                    TimbradoUtils.Logger.Info(sistema.Rfc + "-> Bloqueado");
                    throw new FaultException("El RFC del emisor se encuentra dado de baja, favor de ponerse en contacto con atención a clientes");
                }
                result = empresa;
            }
            return(result);
        }
        public string CancelaRetencion(string userName, string password, string uuid, string rfc)
        {
            string result;

            try
            {
                CertificadorApps.Logger.Debug(userName);
                MembershipUser x = NtLinkLogin.ValidateUser(userName, password);
                if (x == null)
                {
                    throw new FaultException("Nombre de usuario o contraseña incorrecta");
                }
                empresa empresa = NtLinkUsuarios.GetEmpresaByUserId(x.ProviderUserKey.ToString());
                if (empresa == null)
                {
                    throw new FaultException("300 - El usuario con el que se quiere conectar es inválido");
                }
                if (empresa.Bloqueado)
                {
                    CertificadorApps.Logger.Info(empresa.RFC + "-> Bloqueado");
                    throw new FaultException("El RFC del emisor se encuentra bloqueado, favor de ponerse en contacto con atención al cliente");
                }
                NtLinkSistema nls     = new NtLinkSistema();
                Sistemas      sistema = nls.GetSistema((int)empresa.idSistema.Value);
                if (sistema.Bloqueado)
                {
                    CertificadorApps.Logger.Info(sistema.Rfc + "-> Bloqueado");
                    throw new FaultException("El RFC del emisor se encuentra dado de baja, favor de ponerse en contacto con atención a clientes");
                }
                Cancelador cancelador = new Cancelador();
                string     respuesta  = null;
                string     acuse      = null;
                int        resultado  = cancelador.CancelarRet(uuid, rfc, ref respuesta, ref acuse);
                CertificadorApps.Logger.Info(acuse);
                if (resultado == 1201 || resultado == 1202)
                {
                    result = acuse;
                }
                else
                {
                    result = respuesta;
                }
            }
            catch (FaultException ex)
            {
                CertificadorApps.Logger.Error(ex);
                result = ex.Message;
            }
            catch (Exception ex2)
            {
                CertificadorApps.Logger.Error("Error al cancelar el comprobante:" + uuid, ex2);
                result = "Error al abrir el comprobante";
            }
            return(result);
        }
Exemple #3
0
 public ClienteNtLink ObtenerDatosCliente(string userName, string password)
 {
     try
     {
         Logger.Debug(userName);
         var x = NtLinkLogin.ValidateUser(userName, password);
         if (x == null)
         {
             throw new FaultException("Nombre de usuario o contraseña incorrecta");
         }
         var           empresa = NtLinkUsuarios.GetEmpresaByUserId(x.ProviderUserKey.ToString());
         NtLinkSistema sis     = new NtLinkSistema();
         var           sistema = sis.GetSistema((int)empresa.idSistema.Value);
         if (sistema != null)
         {
             return(new ClienteNtLink
             {
                 Ciudad = sistema.Ciudad,
                 Colonia = sistema.Colonia,
                 Estado = sistema.Estado,
                 Contacto = sistema.Contacto,
                 Cp = sistema.Cp,
                 RazonSocial = sistema.RazonSocial,
                 Direccion = sistema.Direccion,
                 Email = sistema.Email,
                 Empresas = sistema.Empresas.HasValue ? sistema.Empresas.Value : 0,
                 FechaContrato = sistema.FechaContrato.HasValue ? sistema.FechaContrato.Value : DateTime.MinValue,
                 //Folios = sistema.Folios.HasValue ? sistema.Folios.Value : 0,
                 RegimenFiscal = sistema.RegimenFiscal,
                 Rfc = sistema.Rfc,
                 Sucursales = sistema.Sucursales.HasValue ? sistema.Sucursales.Value : 0,
                 Telefono = sistema.Telefono,
                 TimbresContratados = sistema.TimbresContratados.HasValue ? sistema.TimbresContratados.Value : 0,
                 Usuarios = sistema.Usuarios.HasValue ? sistema.Usuarios.Value : 0
             });
         }
         return(null);
     }
     catch (FaultException ee)
     {
         Logger.Warn(ee);
         throw;
     }
     catch (Exception ee)
     {
         Logger.Error(ee);
         if (ee.InnerException != null)
         {
             Logger.Error(ee.InnerException);
         }
         return(null);
     }
 }
Exemple #4
0
        public static empresa ValidarAplicacion(string hash, string rfc)
        {
            empresa result;

            if (hash == null)
            {
                result = null;
            }
            else if (hash != ConfigurationManager.AppSettings["HashFacturacion"])
            {
                result = null;
            }
            else
            {
                NtLinkEmpresa em      = new NtLinkEmpresa();
                empresa       empresa = em.GetByRfc(rfc);
                if (empresa == null)
                {
                    TimbradoUtils.Logger.Info(rfc + " No encontrado");
                    result = null;
                }
                else
                {
                    if (empresa.Bloqueado)
                    {
                        TimbradoUtils.Logger.Info(empresa.RFC + "-> Bloqueado");
                        throw new FaultException("El RFC del emisor se encuentra bloqueado, favor de ponerse en contacto con atención al cliente");
                    }
                    if (empresa.Baja)
                    {
                        TimbradoUtils.Logger.Info(empresa.RFC + "-> Baja");
                        throw new FaultException("El RFC del emisor se encuentra dado de baja, favor de ponerse en contacto con atención a clientes");
                    }
                    NtLinkSistema nls     = new NtLinkSistema();
                    Sistemas      sistema = nls.GetSistema((int)empresa.idSistema.Value);
                    if (sistema.Bloqueado)
                    {
                        TimbradoUtils.Logger.Info(sistema.Rfc + "-> Bloqueado");
                        throw new FaultException("El RFC del emisor se encuentra bloqueado, favor de ponerse en contacto con atención a clientes");
                    }
                    if ((sistema.TipoSistema != 3 || sistema.TipoSistema != 0) && sistema.SaldoTimbrado <= 0)
                    {
                        TimbradoUtils.Logger.Info("Saldo: " + sistema.SaldoTimbrado);
                        throw new FaultException("No cuentas con saldo suficiente para timbrar documentos, contacta a tu ejecutivo de ventas");
                    }
                    result = empresa;
                }
            }
            return(result);
        }
Exemple #5
0
 public List <EmpresaNtLink> ObtenerEmpresas(string userName, string password)
 {
     try
     {
         Logger.Debug(userName);
         var x = NtLinkLogin.ValidateUser(userName, password);
         if (x == null)
         {
             throw new FaultException("Nombre de usuario o contraseña incorrecta");
         }
         var           empresa = NtLinkUsuarios.GetEmpresaByUserId(x.ProviderUserKey.ToString());
         NtLinkSistema sis     = new NtLinkSistema();
         var           sistema = sis.GetSistema((int)empresa.idSistema.Value);
         var           nle     = new NtLinkEmpresa();
         var           lista   = nle.GetList("Administrador", empresa.IdEmpresa, sistema.IdSistema);
         if (lista != null)
         {
             return(lista.Select(p => new EmpresaNtLink()
             {
                 Ciudad = p.Ciudad,
                 Colonia = p.Colonia,
                 Estado = p.Estado,
                 Contacto = p.Contacto,
                 Cp = p.CP,
                 RazonSocial = p.RazonSocial,
                 Direccion = p.Direccion,
                 Email = p.Email,
                 RegimenFiscal = p.RegimenFiscal,
                 Rfc = p.RFC,
                 Telefono = p.Telefono,
                 //PassKey = p.PassKey
             }).ToList());
         }
         return(null);
     }
     catch (Exception ee)
     {
         Logger.Error(ee);
         if (ee.InnerException != null)
         {
             Logger.Error(ee.InnerException);
         }
         return(null);
     }
 }
Exemple #6
0
        private string ValidarUsuario(string RFCEmisor, MembershipUser x, ref empresa empres)
        {
            //----------------------------------------------------------

            if (!string.IsNullOrEmpty(RFCEmisor))
            {
                empres = NtLinkUsuarios.GetEmpresaByUserId(x.ProviderUserKey.ToString());
                empres = TimbradoUtils.ValidarUsuarioMultiple(empres);

                if (empres == null)
                {
                    return("Error al sellar el comprobante: en los datos de la empresa-usuario");
                }
                else
                {
                    if (empres.RFC.ToUpper() != RFCEmisor.ToUpper())
                    {
                        List <empresa> Lis = NtLinkSistema.ListaEmpresasPorSistema((long)empres.idSistema);
                        if (Lis.Exists(p => p.RFC.ToUpper() == RFCEmisor.ToUpper()))
                        {
                            var em = Lis.Where(p => p.RFC.ToUpper() == RFCEmisor.ToUpper()).FirstOrDefault();
                            empres = em;
                            empres = TimbradoUtils.ValidarUsuarioMultiple(empres);
                        }
                        else
                        {
                            return("Error: El RFC de la empresa no corresponde al usuario");
                        }
                    }
                }
            }
            else
            {
                return("Error: Los datos del emisor incompletos");
            }
            //---------------------------------------------


            return("OK");
        }
Exemple #7
0
        public static empresa ValidarUsuarioMultiple(empresa empresa)
        {
            empresa result;

            if (empresa == null)
            {
                TimbradoUtils.Logger.Info(empresa.RFC + " No encontrado");
                result = null;
            }
            else
            {
                if (empresa.Bloqueado)
                {
                    TimbradoUtils.Logger.Info(empresa.RFC + "-> Bloqueado");
                    throw new FaultException("El RFC del emisor se encuentra bloqueado, favor de ponerse en contacto con atención al cliente");
                }
                if (empresa.Baja)
                {
                    TimbradoUtils.Logger.Info(empresa.RFC + "-> Baja");
                    throw new FaultException("El RFC del emisor se encuentra dado de baja, favor de ponerse en contacto con atención a clientes");
                }
                NtLinkSistema nls     = new NtLinkSistema();
                Sistemas      sistema = nls.GetSistema((int)empresa.idSistema.Value);
                if (sistema.Bloqueado)
                {
                    TimbradoUtils.Logger.Info(sistema.Rfc + "-> Bloqueado");
                    throw new FaultException("El RFC del emisor se encuentra dado de baja, favor de ponerse en contacto con atención a clientes");
                }
                if ((sistema.TipoSistema == 1 || sistema.TipoSistema == 0) && sistema.SaldoTimbrado <= 0)
                {
                    TimbradoUtils.Logger.Info("Saldo: " + sistema.SaldoTimbrado);
                    throw new FaultException("No cuentas con saldo suficiente para timbrar documentos, contacta a tu ejecutivo de ventas");
                }
                result = empresa;
            }
            return(result);
        }
Exemple #8
0
        /// <summary>
        /// Timbra un comprobante
        /// </summary>
        /// <param name="comprobante">Documento para validar y timbrar</param>
        /// <returns>Una cadena con el timbre fiscal digital (TFD)</returns>
        public string TimbraCfdi(string comprobante, string userName, string password, string LLave, string aplicacion)
        {
            string result2;

            try
            {
                if (string.IsNullOrEmpty(userName))
                {
                    return("Nombre de usuario o contraseña incorrecta");
                }
                CertificadorService.Logger.Debug(userName);
                if (aplicacion == "CON")
                {
                    var Licencia = ValidarLicencia(LLave);
                    if (Licencia == false)
                    {
                        return("Licencia no valida");
                    }
                }
                MembershipUser x = NtLinkLogin.ValidateUser(userName, password);
                if (x == null)
                {
                    throw new FaultException("Nombre de usuario o contraseña incorrecta");
                }


                XElement element = XElement.Load(new StringReader(comprobante));
                ServicioLocal.Business.Comprobante comp = this.DesSerializar(element);
                empresa empres = new empresa();
                if (comp.Emisor != null && comp.Emisor.Rfc != null)
                {
                    string vemp = ValidarUsuario(comp.Emisor.Rfc, x, ref empres);
                    if (vemp != "OK")
                    {
                        return(vemp);
                    }
                }
                else
                {
                    return("Error: Los datos del emisor incompletos");
                }
                //-------------------------

                if (comprobante.Contains("<ieeh:IngresosHidrocarburos"))
                {
                    string erroIH = "";
                    IngresosHidrocarburos       I  = this.DesSerializarIH(element, ref erroIH);
                    ValidarIngresoHidrocarburos VI = new ValidarIngresoHidrocarburos();
                    erroIH = VI.ProcesarIngresoHidrocarburos(I, comp.Version, comp.TipoDeComprobante, comp.Total);
                    if (erroIH != "0")
                    {
                        result2 = erroIH;
                        return(result2);
                    }
                }
                if (comprobante.Contains("<gceh:GastosHidrocarburos"))
                {
                    string erroGH = "";
                    GastosHidrocarburos        I2  = this.DesSerializarGH(element, ref erroGH);
                    ValidarGastosHidrocarburos VI2 = new ValidarGastosHidrocarburos();
                    erroGH = VI2.ProcesarGastosHidrocarburos(I2, comp.Version, comp.TipoDeComprobante);
                    if (erroGH != "0")
                    {
                        result2 = erroGH;
                        return(result2);
                    }
                }
                ImpuestosLocales IL = null;
                if (comprobante.Contains("<implocal:ImpuestosLocales"))
                {
                    IL = this.DesSerializarImpuestosLocales(element);
                }
                bool pago10 = comprobante.Contains("pago10:Pagos");
                if (comp.TipoDeComprobante == "P" && !pago10)
                {
                    result2 = "CFDI no contiene el complemento PAGO";
                    return(result2);
                }
                if (pago10)
                {
                    ServicioLocal.Business.Pagoo.Comprobante pagoDatos = this.DesSerializarP(element);
                    ServicioLocal.Business.Complemento.Pagos pagoss    = this.DesSerializarPagos(element);
                    ValidarPago VP         = new ValidarPago();
                    string      ErrorPagos = VP.ProcesarPago(comp, pagoss, pagoDatos);
                    if (ErrorPagos != "0")
                    {
                        result2 = ErrorPagos;
                        return(result2);
                    }
                }
                bool          ComerExt    = comprobante.Contains("cce11:ComercioExterior");
                ValidarCFDI33 valida      = new ValidarCFDI33();
                string        errorCFDI33 = valida.ProcesarCFDI33(comp, comprobante, pago10, ComerExt, IL);
                if (errorCFDI33 != "0")
                {
                    CertificadorService.Logger.Error("Error al abrir el comprobante: " + errorCFDI33);
                    return(errorCFDI33);
                }
                bool          nomin12 = comprobante.Contains("nomina12:Nomina");
                List <Nomina> nom     = new List <Nomina>();
                if (nomin12)
                {
                    string erroresNom = null;
                    var    nomx       = this.DesSerializarNomina12(element, ref erroresNom);
                    nom.Add(nomx);
                    if (erroresNom != null)
                    {
                        result2 = erroresNom;
                        return(result2);
                    }
                }

                NtLinkSistema       nls           = new NtLinkSistema();
                string              result        = null;
                TimbreFiscalDigital timbre        = null;
                string              acuseSat      = "";
                string              hash          = null;
                string              erroresNomina = "0";
                if (ComerExt && erroresNomina == "0")
                {
                    string erroresComer           = null;
                    ValidarComercioExterior val   = new ValidarComercioExterior();
                    ComercioExterior        Comer = this.DesSerializarComercioExterior(element, ref erroresComer);
                    if (erroresComer != null)
                    {
                        result2 = erroresComer;
                        return(result2);
                    }
                    erroresNomina = val.ProcesarComercioExterior(Comer, comp);
                }
                if (nomin12 && erroresNomina == "0")
                {
                    erroresNomina = this.val.ProcesarNomina(nom, comp);
                    if (erroresNomina != "0")
                    {
                        return(erroresNomina);
                    }
                }

                Dictionary <int, string> dict = this.val.ProcesarCadena(comp.Emisor.Rfc, comprobante, ref result, ref timbre, ref acuseSat, ref hash);
                if (timbre != null && timbre.SelloSAT != null && dict.Count == 0)
                {
                    SerializadorTimbres sert = new SerializadorTimbres();
                    if (ConfigurationManager.AppSettings["Pruebas"] == "true")
                    {
                        timbre.SelloSAT = "Inválido, Ambiente de pruebas";
                    }
                    string res          = sert.GetTimbreXml(timbre);
                    string cfdiTimbrado = result;
                    if (ConfigurationManager.AppSettings["EnvioSat"] == "false")
                    {
                        if (!TimbradoUtils.GuardaFactura(comp.Fecha, comp.Emisor.Rfc, comp.Receptor.Rfc, timbre.UUID, cfdiTimbrado, hash, empres, true, false))
                        {
                            throw new Exception("Error al abrir el comprobante");
                        }
                    }
                    result2 = res;
                }
                else
                {
                    if (timbre != null && timbre.SelloSAT == null && dict.Count == 0)
                    {
                        XElement el          = XElement.Parse(result);
                        XElement complemento = el.Elements(Constantes.CFDVersionNamespace + "Complemento").FirstOrDefault <XElement>();
                        if (complemento != null)
                        {
                            XElement t = complemento.Elements(Constantes.CFDTimbreFiscalVersionNamespace + "TimbreFiscalDigital").FirstOrDefault <XElement>();
                            if (t != null)
                            {
                                SidetecStringWriter sw = new SidetecStringWriter(Encoding.UTF8);
                                t.Save(sw, SaveOptions.DisableFormatting);
                                result2 = sw.ToString();
                                return(result2);
                            }
                        }
                    }
                    if (dict.Count > 0)
                    {
                        StringBuilder res2 = new StringBuilder();
                        foreach (KeyValuePair <int, string> d in dict)
                        {
                            res2.AppendLine(d.Key.ToString() + " - " + d.Value.ToString());
                        }
                        result2 = res2.ToString();
                    }
                    else
                    {
                        CertificadorService.Logger.Error("Error al abrir el comprobante: " + comprobante);
                        result2 = "Error al abrir el comprobante";
                    }
                }
            }
            catch (Exception ex)
            {
                CertificadorService.Logger.Error(ex);
                result2 = "Error al abrir el comprobante: " + ex.Message;
            }
            return(result2);
        }