예제 #1
0
        public bool ConsultaSituacaoAtualNFe(string caminhoNFe, string numRec, string serialCertificado = null)
        {
            Mensagem = "";

            try
            {
                NFe nfe = ManipularXML.Load <NFe>(caminhoNFe);

                if (!SetarWebService("NFe", Estados.ObterEstado(nfe.InfNFe.Ide.CUF), EnderecoWS.ObterAmbiemte(nfe.InfNFe.Ide.TpAmb), "NFeRetAutorizacao"))
                {
                    Erro = "Web Service não foi encontrado";
                    return(false);
                }

                if (!Certificado.BuscarCertificado(nroSerie: serialCertificado))
                {
                    Erro = Certificado.Erros;
                    return(false);
                }

                XmlDocument recNfe = ConsReciboNF(nfe, numRec).ToXmlDocument();

                using (Wsdl.NFe.Autorizacao.NFeRetAutorizacao4 ws = new Wsdl.NFe.Autorizacao.NFeRetAutorizacao4(WebServiceNFe.WebService, Certificado.X509Certificado, TimeOut))
                {
                    bool tentarNovamente;
                    bool resultado;
                    do
                    {
                        tentarNovamente = false;
                        XmlNode n = ws.Execute(recNfe);
                        if (n == null)
                        {
                            throw new Exception($"Falha no envio do arquivo de retorno (404 - Serviço não encontrado).\n\nWeb Service {WebServiceNFCe.WebService}");
                        }
                        else
                        {
                            resultado = RetornoConsultaRecibo(nfe, n.OuterXml.ToXmlClass <RetConsReciNFe>(), caminhoNFe, out tentarNovamente);

                            if (!tentarNovamente)
                            {
                                return(resultado);
                            }
                        }
                    } while (tentarNovamente);

                    return(resultado);
                }
            }
            catch (Exception ex)
            {
                Erro = $"ERRO NO PROCESSO DE CONSULTA ATUAL\n\n{ex.Message}";
                return(false);
            }
        }
예제 #2
0
        private ConsStatServ ConsStartusServ(EnderecoWS.Ambientes tpAmb, Estados.UF estado, string versao)
        {
            ConsStatServ consStatServ = new ConsStatServ()
            {
                Versao = versao,
                TpAmb  = EnderecoWS.ObterAmbiemte(tpAmb),
                CUF    = Estados.ObterEstado(estado),
                XServ  = "STATUS"
            };

            consStatServ.Salvar(ObterCaminhoArquivo($"Status{SufixoStatus}.xml"));

            return(consStatServ);
        }
예제 #3
0
        public bool EnviarNFCe(NFe nfce, string idLote, string serialCertificado = "")
        {
            NumRecibo = "";
            Mensagem  = "";

            try
            {
                if (!SetarWebService("NFCe", Estados.ObterEstado(nfce.InfNFe.Ide.CUF), EnderecoWS.ObterAmbiemte(nfce.InfNFe.Ide.TpAmb), "NFeAutorizacao"))
                {
                    Erro = "Web Service não foi encontrado";
                    return(false);
                }

                if (!GerarChaveNF(nfce))
                {
                    return(false);
                }

                if (!Certificado.BuscarCertificado(nroSerie: serialCertificado))
                {
                    Erro = Certificado.Erros;
                    return(false);
                }

                XmlDocument lote = CriarLoteEAssinar(nfce, idLote, true);

                if (!ValidarDocumentoFiscal(ObterCaminhoArquivo($"{nfce.InfNFe.Id.Substring(3)}{SufixoNFe}.xml")))
                {
                    return(false);
                }

                using (Wsdl.NFCe.Autorizacao.NFeAutorizacao4 ws = new Wsdl.NFCe.Autorizacao.NFeAutorizacao4(WebServiceNFCe.WebService, Certificado.X509Certificado, TimeOut))
                {
                    XmlNode n = ws.Execute(lote);

                    if (n == null)
                    {
                        throw new Exception($"Falha no envio do arquivo de retorno (404 - Serviço não encontrado).\n\nWeb Service {WebServiceNFCe.WebService}");
                    }
                    else
                    {
                        return(RetornoRecibo(n.OuterXml.ToXmlClass <RetEnviNFe>()));
                    }
                }
            }
            catch (Exception ex)
            {
                Erro = $"ERRO NO PROCESSO DE ENVIO\n\n{ex.Message}";
                return(false);
            }
        }