Ejemplo n.º 1
0
        /// <summary>
        ///     Validar Consulta ao Status do Serviço
        /// </summary>
        /// <param name="entity"></param>
        private void ValidarSchema(consReciNFe entity)
        {
            var caminhoSchema = _emisorEmissorServicoConfig.DiretorioSchemaXsd;

            if (!Directory.Exists(caminhoSchema))
            {
                throw new Exception("Diretório de Schemas não encontrado: \n" + caminhoSchema);
            }
            // Define o tipo de validação
            var cfg = new XmlReaderSettings {
                ValidationType = ValidationType.Schema
            };
            //Listar arquivos XSD e inclui-las na validação
            var list = ObterListaNomeSchemas().ToList();

            list.ForEach(n => { cfg.Schemas.Add(null, Path.Combine(caminhoSchema, n)); });
            cfg.ValidationEventHandler += ValidationEventHandler;
            var xml      = Utils.ObterStringXML(entity);
            var reader   = XmlReader.Create(new StringReader(xml), cfg);
            var document = new XmlDocument();

            document.Load(reader);

            //Valida xml
            document.Validate(ValidationEventHandler);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Obter dados
        /// </summary>
        /// <returns></returns>
        private consReciNFe ObterDados()
        {
            var enitty = new consReciNFe
            {
                nRec   = Convert.ToString(_numRecibo),
                tpAmb  = _emisorEmissorServicoConfig.Ambiente,
                versao = _versao.ObterVersaoServico()
            };

            return(enitty);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     Obter mensagem Soap em formato Xml
        ///     <para>Corpo da mensagem compativel com a especificação SOAP e requisitos Sefaz</para>
        /// </summary>
        /// <param name="urlWsdl">Endereço WSDL do serviço</param>
        /// <param name="entity"></param>
        /// <example></example>
        /// <returns></returns>
        protected virtual string ObterCorpoMensagemSoap(string urlWsdl, consReciNFe entity)
        {
            var xmlCorpo      = Utils.ObterStringXML(entity);
            var stringBuilder = new StringBuilder();

            stringBuilder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>");
            stringBuilder.Append(
                "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">");
            stringBuilder.Append("<soap:Body>");
            stringBuilder.Append("<nfeDadosMsg xmlns=\"" + urlWsdl + "\">" + xmlCorpo + "</nfeDadosMsg>");
            stringBuilder.Append("</soap:Body>");
            stringBuilder.Append("</soap:Envelope>");
            var msg = stringBuilder.ToString();

            return(msg);
        }
Ejemplo n.º 4
0
        /// <summary>
        ///     Recebe o retorno do processamento de uma ou mais NFe's pela SEFAZ
        /// </summary>
        /// <param name="recibo"></param>
        /// <returns>Retorna um objeto da classe RetornoNFeRetAutorizacao com com os dados do processamento do lote</returns>
        public RetornoNFeRetAutorizacao NFeRetAutorizacao(string recibo)
        {
            var versaoServico = Auxiliar.VersaoServicoParaString(ServicoNFe.NFeRetAutorizacao,
                                                                 _cFgServico.VersaoNFeRetAutorizacao);

            #region Cria o objeto wdsl para consulta

            var ws = CriarServico(ServicoNFe.NFeRetAutorizacao, TipoRecepcaoEvento.Nenhum);

            ws.nfeCabecMsg = new nfeCabecMsg
            {
                cUF         = _cFgServico.cUF,
                versaoDados = versaoServico
            };

            #endregion

            #region Cria o objeto consReciNFe

            var pedRecibo = new consReciNFe
            {
                versao = versaoServico,
                tpAmb  = _cFgServico.tpAmb,
                nRec   = recibo
            };

            #endregion

            #region Envia os dados e obtém a resposta

            var xmlRecibo   = pedRecibo.ObterXmlString();
            var dadosRecibo = new XmlDocument();
            dadosRecibo.LoadXml(xmlRecibo);

            SalvarArquivoXml(recibo + "-ped-rec.xml", xmlRecibo);

            var retorno          = ws.Execute(dadosRecibo);
            var retornoXmlString = retorno.OuterXml;
            var retRecibo        = new retConsReciNFe().CarregarDeXmlString(retornoXmlString);

            SalvarArquivoXml(recibo + "-pro-rec.xml", retornoXmlString);

            return(new RetornoNFeRetAutorizacao(pedRecibo.ObterXmlString(), retRecibo.ObterXmlString(), retornoXmlString, retRecibo));

            #endregion
        }
Ejemplo n.º 5
0
        /// <summary>
        ///     Salvar arquivo Xml
        /// </summary>
        private void SalvarPedido(consReciNFe entity)
        {
            if (!_emisorEmissorServicoConfig.SalvarArquivoRetorno)
            {
                return;
            }
            //SalvarArquivo
            if (string.IsNullOrWhiteSpace(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml))
            {
                throw new InvalidOperationException("Informe um diretório válido.");
            }
            var nomeArq = $"{_numRecibo}-ped-rec.xml";
            var caminho = Path.Combine(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml, "Recibos", "Enviados");
            var xml     = Utils.ObterStringXML(entity);

            Utils.EscreverArquivo(caminho, nomeArq, xml);
        }
Ejemplo n.º 6
0
 /// <summary>
 ///     Converte o objeto consReciNFe para uma string no formato XML
 /// </summary>
 /// <param name="pedRecibo"></param>
 /// <returns>Retorna uma string no formato XML com os dados do objeto consReciNFe</returns>
 public static string ObterXmlString(this consReciNFe pedRecibo)
 {
     return(FuncoesXml.ClasseParaXmlString(pedRecibo));
 }