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); }
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); } }
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); }
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); } }
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"); }
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); }
/// <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); }