예제 #1
0
        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);
        }
예제 #2
0
        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
                       }
            };
        }