private TIMBRADO FacturarProductivo(string ArchivoXML, string UsuarioProfact, string Folio) { //Ubicación del servicio de pruebas //http://www.timbracfdipruebas.mx/ServicioIntegracionPruebas/Timbrado.asmx //Parámetro usuarioIntegrador //string usuarioIntegrador = "mvpNUXmQfK8="; //Parámetro comprobante a timbrar en base64 string comprobanteBase64 = Convert.ToBase64String(System.IO.File.ReadAllBytes(ArchivoXML)); ServiceReferenceProductivo.TimbradoSoapClient soapClient = new ServiceReferenceProductivo.TimbradoSoapClient(); ServiceReferenceProductivo.ArrayOfAnyType resultados = soapClient.TimbraCFDI(UsuarioProfact, comprobanteBase64, Folio); //Tipo de excepcion TIMBRADO tbr = new TIMBRADO() { TipoExcepcion = resultados[0].ToString(), //Numero de error NumeroError = resultados[1].ToString(), //Descripcion del resultado Descripcion = resultados[2].ToString(), //Xml timbrado Xml = resultados[3].ToString(), //Codigo bidimensional CodigoBidimensional = (byte[])(resultados[4]), //Cadena timbre CadenaTimbre = resultados[5].ToString() }; return(tbr); }
public TIMBRADO TimbrarVenta(List <VENTA> Ventas, int IdNotaDeVenta, string Consumidor, string FormaDePago, string MetodoDePago, string Rfc, string Nombre, string Calle, string NumeroExterior, string NumeroInterior, string Colonia, string Municipio, string Estado, string Pais, string CodigoPostal) { var conexion = new CONFIGURACIONES.CONEXION(); Dictionary <string, object> parametros = new Dictionary <string, object>(); parametros.Add("@CONSUMIDOR", Consumidor); DataTable datatable = conexion.EjecutarConsulta("ST_OBTIENE_FOLIO_DE_TIMBRADO", parametros); if (datatable != null && datatable.Rows.Count > 0) { var configuracion = datatable.AsEnumerable() .Select(x => new { FOLIO = x.Field <int>("FOLIO"), USUARIO_ECRIPTADO = x.Field <string>("USUARIO_ECRIPTADO"), COMENTARIOS = x.Field <string>("COMENTARIOS"), ID = x.Field <int>("ID"), ES_PRODUCTIVO = x.Field <bool>("ES_PRODUCTIVO") }).ToList(); if (configuracion[0].FOLIO == -1) { return new TIMBRADO() { CadenaTimbre = string.Empty, Descripcion = configuracion[0].COMENTARIOS, NumeroError = "0", TipoExcepcion = configuracion[0].COMENTARIOS, Xml = string.Empty } } ; string userprofact = DecryptString(configuracion[0].USUARIO_ECRIPTADO, "jorge"); string xml = CrearArchivoParaTimbrar(Ventas, IdNotaDeVenta, configuracion[0].FOLIO.ToString(), FormaDePago, MetodoDePago, Rfc, Nombre, Calle, NumeroExterior, NumeroInterior, Colonia, Municipio, Estado, Pais, CodigoPostal); var res = new TIMBRADO(); if (configuracion[0].ES_PRODUCTIVO) { res = FacturarProductivo(xml, userprofact, configuracion[0].FOLIO.ToString()); } else { res = Facturar(xml, userprofact, configuracion[0].FOLIO.ToString()); } if (res.NumeroError == "0") { System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); xmlDoc.LoadXml(res.Xml); parametros = new Dictionary <string, object>(); parametros.Add("@ID_TIMBRE_ASIGNADO", configuracion[0].ID); parametros.Add("@UID", xmlDoc.ChildNodes[1].ChildNodes[4].ChildNodes[0].Attributes["UUID"].Value); conexion.EjecutarConsulta("ST_REGISTRAR_TRIMBRE_CONSUMIDO", parametros); res.Folio = configuracion[0].FOLIO; res.RutaDeArchivo = xml; return(res); } else { return(res); } } else { return new TIMBRADO() { CadenaTimbre = string.Empty, Descripcion = "No se conectó al servicio de administración de timbres", NumeroError = "0", TipoExcepcion = "No se conectó al servicio de administración de timbres", Xml = string.Empty } }; }